NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4806 most downloaded on crates.io
Anchor Derive macro for serialization and deserialization
Last release 2 days ago
06 Oct 2026
Release timing varies
gaps range from 9 days to 6 months
Nearly every release is documented
notes for 17 of 17 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
22 releases · first in 2023
One column per quarter.
Check out the release notes from Anchor website or GitHub .
The v1.2.1 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
Check out the release notes from Anchor website or GitHub .
The v1.2.0 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
--arch and --tools-version flags to select the SBPF architecture and platform-tools version used by anchor build. (#4684).anchor build (#3827).Clone and Debug for generated types in declare_program! (#4723).create_native_mint and initialize_non_transferable_mint helpers (#3512).reallocate and withdraw_excess_lamports helpers (#3516).token_metadata_remove_key to support removing keys from token metadata extension (#3717).AccountLoader::new_unchecked for constructing an AccountLoader without performing owner or discriminator checks (#4162).token constraints (#4698).Anchor.toml fields (#4749).security.json template on anchor init (skip with --no-security-metadata) and upload it on-chain through program-metadata with anchor deploy --security-metadata / anchor program deploy --security-metadata (#4177).anchor-spl failing to build with only the metadata feature (#4742).is_signer in generated client and CPI account metas, enabling PDA signer usage (#3322).bytemuck serialization detection to avoid false positives from unrelated derives (#4215).declare_program! generated account-module re-exports (#4568).declare_program! to prevent foreign-IDL name collisions with Anchor prelude items (#4776).LazyAccount after a CPI (#4784).AccountInfo to read lamports in init_if_needed codegen (#4675).AccountLoader<T>::exit against zero-copy buffer truncation and bail with AccountDidNotDeserialize instead of rewriting the discriminator over an undersized buffer (#4633).Context creation (#4363).error! calls in require macros so they don't depend on global prelude imports (#4639).declare_program! (#4652).group_pointer_update (#4324).cpi_guard_enable/disable functions (#4465).realloc constraint when shrinking (#4642).anyhow (#4640).declare_program! (#4667).#[derive(Accounts)] for composite fields using segmented paths.std hygiene inside macros (#4700).parse_logs_response when logs continue after a top-level instruction returns, e.g. the runtime's trailing "Log truncated" marker (#4967).Check out the release notes from Anchor website or GitHub .
The v1.1.2 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
anchor-* crates to reduce breakage (#4726).Check out the release notes from Anchor website or GitHub .
The v1.1.1 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
verifiedBuild using the OtterSec registry (verify.osec.io), replacing the defunct apr.dev API (#4522).decodeIdlAccountRaw (#4375).--stdout flag to the expand command (#4400).edition and rust-version to template (#4048)program_id verification to CPI return values (#4411).cargo metadata so custom target locations (e.g. CARGO_TARGET_DIR, workspace-level overrides) work across build, test, deploy and IDL paths (#3817).Clone, Debug, Copy, and Default on generated client / CPI account structs and instruction args where the field types allow it (#4085).Anchor.toml and run them via anchor test --script <name> / anchor run <name> (#3999).fetch-historical support to recover historical IDLs with the Anchor CLI (#3992).anchor init refuses to create a new Anchor workspace inside an existing Cargo workspace to avoid broken nested layouts (#4576).r as an alias to the run command (#4643).anchor build when a program keypair and declare_id! do not match (#4705).Return::get() validates the source program (#4624).max_len arguments more strictly during space derivation (#4707).cross-fetch dependency (#4671).anchor-lang Minimum Supported Rust Version to 1.89 (#4638).anchor-syn from syn 1.x to syn 2.0, allowing use of modern Rust syntax (#4523).InvalidProgramId when Migration::exit cannot persist migrated state because To::owner() does not match program_id (#4706).parse_logs_response when a program-emitted log line ends with invoke [1] (#4461).--skip-seed-phrase-validation in keygen recover (#4417).sha256.hash() returning corrupted output by using hex encoding (#4404).max_len attribute (#3879).cargo_toml to allow parsing resolver = "3" (#4515).BorshInstructionCoder.encode to reject typo'd or missing fields instead of silently ignoring them (#4560).camelCase conversion with Rust heck for digit-letter identifiers so generated client names match Rust identifiers (#4571).event-cpi instruction is unreachable with custom discriminators (#4614).engines.node to >= 20.18 (#4647).Check out the release notes from Anchor website or GitHub .
The v1.0.3 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
anchor-* crates to reduce breakage (#4726).Check out the release notes from Anchor website or GitHub .
The v1.0.2 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
solana-program with solana-hash (#4468).CrateContext (#4325).localnet to 127.0.0.1 by default to fix a panic in solana-test-validator version 3.1.10 (#4397).init and a runtime seeds expression (#4495).The 1.0.1 patch release is here. This release fixes an issue with handling user-provided Borsh attributes in serialization.
The 1.0.1 patch release is here. This release fixes an issue with handling user-provided Borsh attributes in serialization.
For a list of notable changes with their associated PRs, see the CHANGELOG.
The first stable major release is here. This version ships several new features and improvements.
The first stable major release is here. This version ships several new features and improvements.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
Migration<'info, From, To> account type for schema migrations between account types (#4060).check_program_id_mismatch in build time to check if the program ID in the source code matches the program ID in the keypair file (#4018). This check will be skipped during anchor test.declare_program! (#4118).dist/cjs/idl imports to import directly from @anchor-lang/core (#3948).declare_program! support with just anchor_client and not anchor_lang (#4157).Owners from prelude (#4189).anchor test and anchor localnet commands (#4106).Lazy (#4237).init_if_needed accounts in duplicate mutable account checks (#4239).FnMut for events closure (#4024).common::close accept references (#4178).--allow-localnet option for IDL commands; fix panic when run outside a workspace (#4252).AccountInfo usage in Accounts macro with a compile-time warning (#3854).anchor init to use the multiple program template by default (#3958).hooks section to Anchor.toml for {pre,post}-{build,test,deploy} lifecycle hooks (#3862).Program type allowing Program<'info> for executable-only validation (#3878).litesvm test template and made it the default option on anchor init (#4316)--install-agent-skills to automatically install Solana agent skills during anchor init (#4307)avm list --pre-release, avm update --pre-release and avm install latest-pre-release). (#4335)avm self-update command and passive version check warning for out of date avm (#4338)Lazy bound on generics (#4240).declare_program! (#4113).declare_program! messing up IDL errors generation (#4126).address constraint not resolving constants that have numbers in their identifiers (#4144).declare_program! (#4158).local_file method not found for proc_macro2::Span error (#4187).Account, LazyAccount, InterfaceAccount, Migration) (#4202).serde_json optional (#4296).declare_program! instruction parser with optional accounts (#4180).borsh derives (#4205).InterfaceAccount (#4139).offset = ... in IDL generation for custom errors (#4040).solana-program (#4166).#[instruction(..)] args (#4000).i128/u128 deserialization (#3938).parsers module of declare_program! during on-chain (Solana) builds (#4109).lazy-account (#4319)anchor symlink in .avm/bin (4343)arch options (#4295).dup constraint (#3946).idl init and idl upgrade commands (#4130).utils module of declare_program! to parsers (#4151).interface-instructions feature and the #[interface] attribute (#4156).login command (#4182).@coral-xyz/anchor to @anchor-lang/core (#4141).solana CLI; native implementations provided for balance, airdrop, address, deploy, and other commands (#4099).#[error_code] definitions in a single program (#4300).[registry] section from Anchor.toml (#4299).errors and ProgramError of declare_program! (#4347).solana-account-decoder crate export (#4373).lang, cli, client: Updated solana dependencies to the latest compatible versions. Bumping CI and docker builds to use Solana CLI version 3.1.10
lazy-account (#4319)anchor symlink in .avm/bin (4343)avm: Added flags and version labels to explicitly handle pre-releases (avm list --pre-release, avm update --pre-release and avm install latest-pre-rel
avm list --pre-release, avm update --pre-release and avm install latest-pre-release). (#4335)avm self-update command and passive version check warning for out of date avm (#4338)lang: Deprecate AccountInfo usage in Accounts macro with a compile-time warning (#3854).
Migration<'info, From, To> account type for schema migrations between account types (#4060).check_program_id_mismatch in build time to check if the program ID in the source code matches the program ID in the keypair file (#4018). This check will be skipped during anchor test.declare_program! (#4118).dist/cjs/idl imports to import directly from @anchor-lang/core (#3948).declare_program! support with just anchor_client and not anchor_lang (#4157).Owners from prelude (#4189).anchor test and anchor localnet commands (#4106).Lazy (#4237).init_if_needed accounts in duplicate mutable account checks (#4239).FnMut for events closure (#4024).common::close accept references (#4178).--allow-localnet option for IDL commands; fix panic when run outside a workspace (#4252).AccountInfo usage in Accounts macro with a compile-time warning (#3854).anchor init to use the multiple program template by default (#3958).hooks section to Anchor.toml for {pre,post}-{build,test,deploy} lifecycle hooks (#3862).Program type allowing Program<'info> for executable-only validation (#3878).litesvm test template and made it the default option on anchor init (#4316)--install-agent-skills to automatically install Solana agent skills during anchor init (#4307)Lazy bound on generics (#4240).declare_program! (#4113).declare_program! messing up IDL errors generation (#4126).address constraint not resolving constants that have numbers in their identifiers (#4144).declare_program! (#4158).local_file method not found for proc_macro2::Span error (#4187).Account, LazyAccount, InterfaceAccount, Migration) (#4202).serde_json optional (#4296).declare_program! instruction parser with optional accounts (#4180).borsh derives (#4205).InterfaceAccount (#4139).offset = ... in IDL generation for custom errors (#4040).solana-program (#4166).#[instruction(..)] args (#4000).i128/u128 deserialization (#3938).parsers module of declare_program! during on-chain (Solana) builds (#4109).arch options (#4295).dup constraint (#3946).idl init and idl upgrade commands (#4130).utils module of declare_program! to parsers (#4151).interface-instructions feature and the #[interface] attribute (#4156).login command (#4182).@coral-xyz/anchor to @anchor-lang/anchor (#4141).solana CLI; native implementations provided for balance, airdrop, address, deploy, and other commands (#4099).#[error_code] definitions in a single program (#4300).[registry] section from Anchor.toml (#4299).Nothing published for this version
Nothing published for this version
Check out the release notes from Anchor website or GitHub .
The v0.32.2 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
lang: Fix deprecation warnings on alloc and add solana-program to prelude (#3975).
cli: Fix using deprecated commitment recent in migration scripts (#3725).
#[error] attribute to declare_program! (#3757).anchor verify to use solana-verify under the hood, adding automatic installation via AVM, local path support, and future-proof argument passing (#3768).solana-program crate with smaller crates (#3819).anchor deploy to upload the IDL to the cluster by default unless --no-idl is passed (#3863).solana-invoke instead of solana_cpi::invoke (#3900).solana-client from anchor-client and cli (#3877).~0.4 and remove redundant solana-program dev-dependency from generated template (#3790).node to 20.18.0 LTS (#3687).recent in migration scripts (#3725).provider.cluster in keys sync command (#3761).realloc, store_current_index and clippy warnings (#3819).anchor on PATH via $CARGO_HOME/bin symlink (#3835).anchor verify to use solana-verify under the hood, adding automatic installation via AVM, local path support, and future-proof argument passing (#3768).anchor publish command (#3795).Check out the release notes from Anchor website or GitHub .
The v0.31.2 release is here.
Check out the release notes from Anchor website or GitHub.
For a list of notable changes with their associated PRs, see the CHANGELOG.
This release uses a new docker image found at solanafoundation/anchor for the anchor verify command. New images will be pushed to this organization in
This release uses a new docker image found at solanafoundation/anchor for the anchor verify command. New images will be pushed to this organization in the future.
Releases for anchor will also be published under the solanafoundation Github organization from now on.
backpackapp/build Docker image with solanafoundation/anchor (#3619).Provider require publicKey instead of wallet in accounts resolver (#3613)proc-macro2 usage for latest nightly (#3663)lang: Deprecate #[interface] attribute (#3195).
solana_account_decoder dep public in anchor client (#3455).options.blockhash to Provider.sendAndConfirm (#3070).commitment parameter to Program.addEventListener (#3052).cargo args to IDL generation when building program or IDL (#3059).idl-build feature (#3061).Discriminator trait from prelude (#3075).Account utility type to get accounts from bytes (#3091).declare_program! (#3103).ThreadSafeSigner trait public (#3107).dispatch function to support dynamic discriminators (#3104).try_entry function (#3109).withdraw_withheld_tokens_from_accounts instruction (#3128).wallet property to the Provider interface (#3130).anchor-spl/idl-build is missing (#3133).internal_rpc method for mock feature (#3135).#[instruction] attribute proc-macro to override default instruction discriminators (#3137).#[account] (#3144).discriminator argument to #[account] attribute (#3149).discriminator argument to #[event] attribute (#3152).--no-idl option to the test command (#3175).burn_checked, mint_to_checked and approve_checked instructions (#3186).agave-install when solana_version is >= 1.18.19 (#3185).IdlBuilder (#3188).clean command also remove the .anchor directory (#3192).#[interface] attribute (#3195).LazyAccount (#3194).use command (#3230).solana-program dependency (#3250).idl-build feature exists when using the idl build command (#3273).idl build command (#3275).idl build command (#3283).--program-id option to idl convert command (#3309).declare_program! (#3311).install and list commands (#3326).package-manager flag in init command to set package manager field in Anchor.toml (#3328).zero constraint (#3365).--max-retries option to the deploy command (#3354).anchor-debug feature (#3511).align repr support in declare-program! (#3056).getrandom dependency (#3072).InitSpace support unnamed & unit structs (#3084).owner constraint with Boxed accounts (#3087).--no-idl option is passed (#3093).#[account] struct has generics (#3148).--locked argument using Rust v1.80 due to time crate issue (#3143).crypto-hash dependency (#3171).view method (#3177).arrayref dependency (#3201).address constraint with non-const expressions (#3216).Program (#3228).init constraints to reduce the stack usage of try_accounts (#2939).cfg attribute above the instructions (#2339).ANCHOR_LOG on failure and improve build error message (#3284).declare_program! (#3287).declare_program! (#3290).engines.node to >= 17 (#3301).rustc 1.79.0 when installing versions older than v0.31 (#3315).shell command failing due to outdated program initialization (#3351).cpi feature instructions not accounting for discriminator overrides (#3376).verify (#3398).zero accounts to be unique (#3409).zero accounts against init accounts (#3422).provider.cluster (#3428).workspace (#3450).declare_program! (#3458).program::seed resolution (#3474).derives and reprs to type alias definitions in declare_program! (#3504).std::process::exit usage (#3544).Pubkey constants with seeds::program (#3559).declare_program! (#3567).seeds::program (#3570).data as an instruction parameter name in declare_program! (#3574).anchor.workspace templates (#3581).upgrade command (#3345).bpf target support in hash feature (#3078).tokio support to RequestBuilder with async feature (#3057).EventData trait (#3083).async_rpc method (#3053).Discriminator trait impl when using the zero constraint (#3118).DISCRIMINATOR_SIZE constant (#3120).#[account] attribute arguments no longer parses identifiers as namespaces (#3140).token_program_id to program_id (#3076).discriminator method from Discriminator trait (#3163).node to 20.16.0 LTS (#3179).Program constructor's idl parameter type to any (#3181).borsh 0.9 support (#3199).typescript to 5.5.4 and remove the generic parameters of SimulateResponse (#3221).StateCoder(#3224).warp_slot (#3235).EventIndex (#3244).dex feature (#3257).typescript version of templates to v5 (#3480).snake-case dependency (#3507).mpl-token-metadata version requirement to 5 (#3356).idl: Allow overriding the idl build toolchain with the RUSTUP_TOOLCHAIN environment variable (#2941).
RUSTUP_TOOLCHAIN environment variable (#2941).AVM_HOME environment variable (#2917).avm list when GitHub API rate limits are reached (#2962)--no-install option to the init command (#2945).TryFromIntError for Error to be able to propagate integer conversion errors (#2950).upgrade command (#2998).spl-associated-token-account crate (#2999).declare_program! (#2997).idl convert command (#3009).idl type command (#3017).anchor_lang::pubkey macro for declaring Pubkey const values (#3021).anchor-syn dependency (#3030).const of program ID to declare_id! and declare_program! (#3019).pubkey! macro in prelude (#3026).maxSupportedTransactionVersion in AnchorProvider.send*() methods (#2922).anchor init (#2929).Cargo.lock of the project when generating idls for external types (#2946).declare_program! (#2959).declare_program! (#2965).Vec<u8> type with declare_program! (#2966).ProgramError::ArithmeticOverflow not found error (#2975).declare_program! (#2967).declare_program! (#2977).unexpected_cfgs build warning (#2992).declare_program! (#2994).rust-version from crate manifests (#3000).address constraint with field expressions (#3034).bytemuckunsafe account serialization with declare_program! (#3037).@babel/traverse to 7.24.1 (#2919).ts: Remove anchor-deprecated-state feature (#2717).
See the Anchor 0.30 release notes for a high-level overview of how to update.
init and new (#2698).deploy (#2705).solana program deploy command with anchor deploy (#2709).InstructionData::write_to implementation (#2733).#[interface(..)] attribute for instruction discriminator overrides (#2728)..interface(..) method for instruction discriminator overrides (#2728).anchor-lang and CLI version compatibility (#2753).idl close accepts optional --idl-address parameter (#2760).workspace.members and workspace.exclude. (#2785).--test-template option for init command (#2805).anchor test is able to run multiple commands (#2799).@coral-xyz/anchor package and CLI version compatibility (#2813).reprs (#2824).accountsPartial method to keep the old accounts method behavior (#2824).opts parameter of AnchorProvider constructor optional (#2843).--no-idl flag to the build command (#2847).prepend option to MethodBuilder preInstructions method (#2863).declare_program! macro (#2857).deactivate_feature flag to solana-test-validator config in Anchor.toml (#2872).docs field for constants (#2887).Event utility type to get events from bytes (#2897).Lamports trait operations (#2907).declare_program! (#2894).new_from_array method to Hash (#2682).resolver = "2") (#2676).provider.wallet in Anchor.toml (#2696).anchor_version override (#2704).shmem feature enabled (#2722).localhost to 127.0.0.1, NodeJS 17 IP resolution changes for IPv6 (#2725).try_to_vec usage while setting the return data in order to reduce heap memory usage (#2744)migrate command not working without global ts-node installation (#2767).parse_logs_response to prevent panics when more than 1 outer instruction exists in logs (#2856).stdsimd feature compilation error from ahash when installing the CLI using newer Rust versions (#2867).solana-program dependency (#2900).TokenAccount and Mint Copy (#2904).cargo build-sbf the default build command (#2694).overflow-checks flag (#2716).anchor-deprecated-state feature (#2717).CLOSED_ACCOUNT_DISCRIMINATOR (#2726).Option<u8> rather than u8 (#2730).shared-memory program (#2747).associated, account.associated and account.associatedAddress methods (#2749).idl upgrade command closes the IDL buffer account (#2760).--jest option from the init command (#2805).idl-build feature in program Cargo.toml (#2824).seeds feature to resolution and make it enabled by default (#2824).idl parse command (#2824).idl-parse and seeds features (#2824).accounts method to no longer accept resolvable accounts (#2824).Program instances use camelCase for everything (#2824).programId parameter of the Program constructor (#2864).anchor-syn crate to the new IDL crate (#2882).#[non_exhaustive] to IDL enums (#2890).anchor-idl to anchor-lang-idl (#2908).See the Anchor 0.29 release notes for a high-level overview of how to update.
See the Anchor 0.29 release notes for a high-level overview of how to update.
AccountInfo (#2656).get_lamports, add_lamports and sub_lamports methods for all account types (#2552).DynSigner to simplify use of Client<C> where <C: Clone + Deref<Target = impl Signer>> with Solana clap CLI utils that loads Signer as Box<dyn Signer> (#2550).anchor build still uses parsing method to generate IDLs, use anchor idl build to generate IDLs with the build method (#2011)..anchorversion file to facilitate switching between different versions of the anchor-cli (#2553).anchor.workspace.myProgram, anchor.workspace.MyProgram... (#2579).mpl-token-metadata crate (#2583).TokenRecordAccount for pNFTs (#2597).Box the inner enums of anchor_lang::error::Error to optimize anchor_lang::Result (#2600).Program.addEventListener method (#2627).IdlBuild trait to implement IDL support for custom types (#2629).idl-build feature. IDL build method will not work without enabling this feature when using anchor-spl (#2629).test.upgradeable, test.genesis.upgradeable setting in Anchor.toml to support testing upgradeable programs (#2642).1.17.0, 1.16 remains supported (#2645).anchor-cli installation from commit (#2659).toolchain property in Anchor.toml to override Anchor and Solana versions (#2649).assert (#2535).const in the InitSpace macro (#2555).1.14 (#2572).anchor build --no-docs adding docs to the IDL (#2575).associated_token::token_program constraint (#2603).anchor account command panicking outside of workspace (#2620).idl feature has been replaced with idl-build, idl-parse and idl-types features (#2011).parse method now returns Result<Idl> instead of Result<Option<Idl>> (#2582).mpl-token-metadata dependency to use the client SDK instead of the program crate (#2632).base64-js dependency (#2635).IdlTypeDefinitionTy enum has a new variant Alias (#2637).1.14 is no longer supported, minimum required Solana version is 1.16.0 (#2645).anchor_version and solana_version property in Anchor.toml that was being used in verifiable builds are moved inside toolchain. They are now being used for all commands in the workspace, not just verifiable builds (#2649).Your coding agent can read these notes before it upgrades. Set up the MCP server →