Go to file
dependabot[bot] 858e6c3592
build(deps-dev): bump @typescript-eslint/parser in /token/js (#1998)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.28.0 to 4.28.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.28.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-30 08:12:46 +00:00
.github ci: Split out test-bpf into separate workflows for each program (#1893) 2021-06-11 22:35:00 +02:00
.travis Switch to Github Actions for CI (#768) 2020-11-01 18:42:51 +08:00
associated-token-account/program Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
binary-oracle-pair Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
ci Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
docs stake-pool: Wait to apply new fee (#1922) 2021-06-15 23:40:14 +00:00
examples Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
feature-proposal Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
governance Governance: Change timestamps and time periods to UnixTimestamp (#1984) 2021-06-29 23:03:09 +01:00
libraries/math Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
memo Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
name-service Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
record/program Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
shared-memory Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
stake-pool stake-pool: Add helper scripts for setting up a pool (#1994) 2021-06-29 23:11:08 +02:00
themis Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
token build(deps-dev): bump @typescript-eslint/parser in /token/js (#1998) 2021-06-30 08:12:46 +00:00
token-lending build(deps-dev): bump @typescript-eslint/parser in /token-lending/js (#1990) 2021-06-29 10:05:12 +00:00
token-swap build(deps): bump @solana/web3.js in /token-swap/js (#1991) 2021-06-29 10:16:49 +00:00
utils Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00
.gitignore Governance program API design 2021-05-17 12:01:20 +01:00
.mergify.yml CI: Add status-failure and status-pending check to be sure that all steps are run (#1966) 2021-06-25 21:02:24 +02:00
.travis.yml Simplify github action with scripts (#769) 2020-11-04 10:50:07 +08:00
Cargo.lock stake-pool: Update version for crate publish (#1967) 2021-06-25 21:34:48 +00:00
Cargo.toml lending: Command Line Interface (#1676) 2021-06-23 16:04:43 -05:00
LICENSE Update contributors (#42) 2020-06-17 14:12:46 -07:00
README.md bumped version of cli-tools 2021-03-26 11:12:47 -07:00
cbindgen.sh Move c header generation out of build.rs 2020-08-27 23:32:07 -07:00
coverage.sh Fix coverage on macOS 2020-12-14 12:07:16 -08:00
patch.crates-io.sh Add more solana crates to patch scripts 2021-03-26 20:17:44 -07:00
update-solana-dependencies.sh Update all solana dependencies to 1.7.3, fix issues (#1958) 2021-06-25 00:39:08 +02:00

README.md

Build status

Solana Program Library

The Solana Program Library (SPL) is a collection of on-chain programs targeting the Sealevel parallel runtime. These programs are tested against Solana's implementation of Sealevel, solana-runtime, and deployed to its mainnet. As others implement Sealevel, we will graciously accept patches to ensure the programs here are portable across all implementations.

Full documentation is available at https://spl.solana.com

Development

Environment Setup

  1. Install the latest Rust stable from https://rustup.rs/
  2. Install Solana v1.6.1 or later from https://docs.solana.com/cli/install-solana-cli-tools
  3. Install the libudev development package for your distribution (libudev-dev on Debian-derived distros, libudev-devel on Redhat-derived).

Build

The normal cargo build is available for building programs against your host machine:

$ cargo build

To build a specific program, such as SPL Token, for the Solana BPF target:

$ cd token/program
$ cargo build-bpf

Test

Unit tests contained within all projects can be run with:

$ cargo test      # <-- runs host-based tests
$ cargo test-bpf  # <-- runs BPF program tests

To run a specific program's tests, such as SPL Token:

$ cd token/program
$ cargo test      # <-- runs host-based tests
$ cargo test-bpf  # <-- runs BPF program tests

Integration testing may be performed via the per-project .js bindings. See the token program's js project for an example.

Clippy

$ cargo clippy

Coverage

$ ./coverage.sh  # Please help! Coverage build currently fails on MacOS due to an XCode `grcov` mismatch...

Release Process

SPL programs are currently tagged and released manually. Each program is versioned independently of the others, with all new development occurring on master. Once a program is tested and deemed ready for release:

Bump Version

  • Increment the version number in the program's Cargo.toml
  • Generate a new program ID and replace in <program>/program-id.md and <program>/src/lib.rs
  • Run cargo build-bpf <program> to update relevant C bindings. (Note the location of the generated spl_<program>.so for attaching to the Github release.)
  • Open a PR with these version changes and merge after passing CI.

Create Github tag

Program tags are of the form <program>-vX.Y.Z. Create the new tag at the version-bump commit and push to the solana-program-library repository, eg:

$ git tag token-v1.0.0 b24bfe7
$ git push upstream --tags

Publish Github release

  • Go to GitHub Releases UI
  • Click "Draft new release", and enter the new tag in the "Tag version" box.
  • Title the release "SPL vX.Y.Z", complete the description, and attach the spl_<program>.so binary
  • Click "Publish release"

Publish to Crates.io

Navigate to the program directory and run cargo package to test the build. Then run cargo publish.