453 stable releases
new 2.3.1 | Mar 6, 2025 |
---|---|
2.2.1 | Feb 12, 2025 |
2.1.7 | Dec 23, 2024 |
2.1.4 | Nov 27, 2024 |
0.12.3 | Mar 28, 2019 |
#714 in Magic Beans
203,089 downloads per month
Used in 618 crates
(150 directly)
7KB
116 lines
solana-sdk
Rust SDK for the Solana blockchain, used by on-chain programs and the Agave validator.
Building
1. Install rustc, cargo and rustfmt.
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
rustup component add rustfmt
2. Download the source code.
git clone https://github.com/anza-xyz/solana-sdk.git
cd solana-sdk
When building the master branch, please make sure you are using the version
specified in the repo's rust-toolchain.toml
by running:
rustup show
This command will download the toolchain if it is missing in the system.
3. Test.
cargo test
For Agave Developers
Patching a local solana-sdk repository
If your change to Agave also entails changes to the SDK, you will need to patch your Agave repo to use a local checkout of solana-sdk crates.
To patch all of the crates in this repo for Agave, just run:
./scripts/patch-crates-no-header.sh <AGAVE_PATH> <SOLANA_SDK_PATH>
Publishing a crate from this repository
Unlike Agave, the solana-sdk crates are versioned independently, and published as needed.
If you need to publish a crate, you can use the "Publish Crate" GitHub Action.
Simply type in the path to the crate directory you want to release, ie.
program-entrypoint
, along with the kind of release, either patch
, minor
,
major
, or a specific version string.
The publish job will run checks, bump the crate version, commit and tag the bump, publish the crate to crates.io, and finally create GitHub Release with a simple changelog of all commits to the crate since the previous release.
Testing
Certain tests, such as rustfmt
and clippy
, require the nightly rustc
configured on the repository. To easily install it, use the ./cargo
helper
script in the root of the repository:
./cargo nightly tree
Basic testing
Run the test suite:
cargo test
Alternatively, there is a helper script:
./scripts/test-stable.sh
Formatting
Format code for rustfmt check:
./cargo nightly fmt --all
The check can be run with a helper script:
./scripts/check-fmt.sh
Clippy / Linting
To check the clippy lints:
./scripts/check-clippy.sh
Benchmarking
Run the benchmarks:
./scripts/test-bench.sh
Code coverage
To generate code coverage statistics:
./scripts/test-coverage.sh
$ open target/cov/lcov-local/index.html
Code coverage requires llvm-tools-preview
for the configured nightly
toolchain. To install the component, run the command output by the script if it
fails to find the component:
rustup component add llvm-tools-preview --toolchain=<NIGHTLY_TOOLCHAIN>
lib.rs
:
The logger
module configures env_logger
Dependencies
~3–11MB
~104K SLoC