Go to file
dependabot[bot] 2cf409c80a
build(deps): bump @solana/web3.js in /token-swap/js (#1141)
Bumps [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) from 0.90.2 to 0.90.4.
- [Release notes](https://github.com/solana-labs/solana-web3.js/releases)
- [Commits](https://github.com/solana-labs/solana-web3.js/compare/v0.90.2...v0.90.4)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-28 09:14:13 +08:00
.github Pin honggfuzz to 0.5.52 (#1072) 2021-01-14 23:07:07 +01:00
.travis
associated-token-account/program Remove stray .so 2021-01-19 21:27:50 +00:00
ci swap: Add rounding correction for deposit / withdraw (#1061) 2021-01-15 18:17:27 +01:00
docs Fix doc typos (#1137) 2021-01-27 00:36:09 -07:00
examples
feature-proposal
memo
shared-memory
stake-pool Stake pool: test coverage for most of the program errors (#1134) 2021-01-27 23:35:25 +01:00
themis Stake pool: adding pool balance confirmation (Redo of #960) (#1116) 2021-01-21 14:48:46 +01:00
token build(deps-dev): bump rollup from 2.37.1 to 2.38.0 in /token/js (#1122) 2021-01-26 11:34:17 +00:00
token-lending build(deps-dev): bump rollup from 2.37.1 to 2.38.0 in /token-lending/js (#1123) 2021-01-26 10:47:59 +00:00
token-swap build(deps): bump @solana/web3.js in /token-swap/js (#1141) 2021-01-28 09:14:13 +08:00
utils Token: Remove program-v3 2021-01-26 00:23:07 +00:00
.gitignore Add *.so to ignore 2021-01-19 21:27:50 +00:00
.mergify.yml
.travis.yml
Cargo.lock Token: Remove program-v3 2021-01-26 00:23:07 +00:00
Cargo.toml Token: Remove program-v3 2021-01-26 00:23:07 +00:00
LICENSE
README.md
cbindgen.sh
coverage.sh
patch.crates-io.sh
update-solana-dependencies.sh

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.4.7 or later from https://docs.solana.com/cli/install-solana-cli-tools

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 <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. (Currently, programs with generated C bindings fail the final step of verification due to the location of the generated file. Once you are certain the crate is ready, run cargo publish --no-verify to bypass this error.)