CHANGELOG.md 18 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Note: Version 0 of Semantic Versioning is handled differently from version 1 and above. The minor version will be incremented upon a breaking change and the patch version will be incremented for features.

[Unreleased]

Features

  • cli: Adds a [registry] section in the Anchor toml (#570).
  • cli: Adds the anchor login command (#570).
  • cli: Adds the anchor publish command (#570).
  • cli: Adds a root level anchor_version field to the Anchor.toml for specifying the cli version to build with for verifiable build (#570).
  • lang: Dynamically fetch rent sysvar for when using init (#587).
  • Breaking

    • cli: [clusters.<network>] Anchor.toml section has been renamed to [programs.<network>] (#570).
    • cli: [workspace] member and exclude arrays must now be filepaths relative to the workpsace root (#570).

    [0.12.0] - 2021-08-03

    Features

    • cli: Add keys members / exclude in config programs section (#546).
    • cli: Allow program address configuration for test command through clusters.localnet (#554).
    • lang: IDLs are now parsed from the entire crate (#517).
    • spl: Dex permissioned markets proxy (#519, #543).

    Breaking Changes

    • ts: Use hex by default for decoding Instruction (#547).
    • lang: CpiAccount::reload mutates the existing struct instead of returning a new one (#526).
    • cli: Anchor.toml now requires an explicit [scripts] test command (#550).

    [0.11.1] - 2021-07-09

    Features

    • lang: Adds require macro for specifying assertions that return error codes on failure (#483).
    • lang: Allow one to specify arbitrary programs as the owner when creating PDA (#483).
    • lang: A new bump keyword is added to the accounts constraints, which is used to add an optional bump seed to the end of a seeds array. When used in conjunction with both init and seeds, then the program executes find_program_address to assert that the given bump is the canonical bump (#483).

    Fixes

    • lang: Preserve all instruction data for fallback functions (#483).
    • ts: Event listener not firing when creating associated accounts (#356).

    [0.11.0] - 2021-07-03

    Features

    • lang: Add fallback functions (#457).
    • lang: Add feature flag for using the old state account discriminator. This is a temporary flag for those with programs built prior to v0.7.0 but want to use the latest Anchor version. Expect this to be removed in a future version (#446).
    • lang: Add generic support to Accounts (#496).

    Breaking Changes

    • cli: Remove .spec suffix on TypeScript tests files (#441).
    • lang: Remove belongs_to constraint (#459).

    [0.10.0] - 2021-06-27

    Features

    • lang: Add #[account(address = <expr>)] constraint for asserting the address of an account (#400).
    • lang: Add #[account(init, token = <mint-target>, authority = <token-owner-target>...)] constraint for initializing SPL token accounts as program derived addresses for the program. Can be used when initialized via seeds or associated (#400).
    • lang: Add associated_seeds! macro for generating signer seeds for CPIs signed by an #[account(associated = <target>)] account (#400).
    • cli: Add [scripts] section to the Anchor.toml for specifying workspace scripts that can be run via anchor run <script> (#400).
    • cli: [clusters.<network>] table entries can now also use { address = <base58-str>, idl = <filepath-str> } to specify workspace programs (#400).

    Breaking Changes

    • cli: Remove --yarn flag in favor of using npx (#432).

    [0.9.0] - 2021-06-15

    Features

    • lang: Instruction data is now available to accounts constraints (#386).
    • lang: Initialize program derived addresses with accounts constraints (#386).

    Breaking Changes

    • lang: Event field names in IDLs are now mixed case. (#379).
    • lang: Accounts trait now accepts an additional &[u8] parameter (#386).

    [0.8.0] - 2021-06-10

    Features

    • cli: Add --program-name option for build command to build a single program at a time (#362).
    • cli, client: Parse custom cluster urls from str (#369).
    • cli, client, lang: Update solana toolchain to v1.7.1 (#368).
    • ts: Instruction decoding and formatting (#372).
    • lang: Add #[account(close = <destination>)] constraint for closing accounts and sending the rent exemption lamports to a specified destination account (#371).

    Fixes

    • lang: Allows one to use remaining_accounts with CpiContext by implementing the ToAccountMetas trait on CpiContext (#351).

    Breaking

    • lang, ts: Framework defined error codes are introduced, reserving error codes 0-300 for Anchor, and 300 and up for user defined error codes (#354).

    [0.7.0] - 2021-05-31

    Features

    • cli: Add global options for override Anchor.toml values (#313).
    • spl: Add SetAuthority instruction (#307).
    • spl: Add init and close open orders instructions (#245).
    • lang: constraint = <expression> added as a replacement for (the now deprecated) string literal constraints (#341).
    • lang: Span information is now preserved, providing informative compiler error messages (#341).
    • ts: Address metadata is now optional for anchor.workspace clients (#310).

    Breaking Changes

    • ts: Retrieving deserialized accounts from the <program>.account.<my-account> and <program>.state namespaces now require explicitly invoking the fetch API. For example, program.account.myAccount(<adddress>) and program.state() is now program.account.myAccount.fetch(<address>) and program.state.fetch() (#322).
    • lang: #[account(associated)] now requires init to be provided to create an associated account. If not provided, then the address will be assumed to exist, and a constraint will be added to ensure the correctness of the address (#318).
    • lang, ts: Change account discriminator pre-image of the #[state] account discriminator to be namespaced by "state:" (#320).
    • lang, ts: Change domain delimiters for the pre-image of the instruciton sighash to be a single colon : to be consistent with accounts (#321).
    • lang: Associated constraints no longer automatically implement mut (#341).
    • lang: Associated space constraints must now be literal integers instead of literal strings (#341).

    [0.6.0] - 2021-05-23

    Features

    • ts: Add program.simulate namespace (#266).
    • ts: Introduce Address type, allowing one to use Base 58 encoded strings in public APIs (#304).
    • ts: Replace deprecated web3.Account with web3.Signer in public APIs (#296).
    • ts: Generated anchor.workspace clients can now be customized per network with [cluster.<slug>] in the Anchor.toml (#308).
    • cli: Add yarn flag to test command (#267).
    • cli: Add --skip-build flag to test command (301).
    • cli: Add anchor shell command to spawn a node shell populated with an Anchor.toml based environment (#303).

    Breaking Changes

    • cli: The Anchor.toml's wallet and cluster settings must now be under the [provider] table (#305).
    • ts: Event coder decode API changed to decode strings directly instead of buffers (#292).
    • ts: Event coder encode API removed (#292).

    [0.5.0] - 2021-05-07

    Features

    • client: Adds support for state instructions (#248).
    • lang: Add anchor-debug feature flag for logging (#253).
    • ts: Add support for u16 (#255).

    Breaking Changes

    • client: Renames RequestBuilder::new to RequestBuilder::from (#248).
    • lang: Renames the generated instruction::state::Ctor struct to instruction::state::New (#248).

    [0.4.5] - 2021-04-29

    • spl: Add serum DEX CPI client (#224).

    [0.4.4] - 2021-04-18

    Features

    • lang: Allows one to specify multiple with targets when creating associated acconts (#197).
    • lang, ts: Add array support (#202).
    • lang: Zero copy deserialization for accounts (#202, #206).
    • lang, spl, cli, client: Upgrade solana toolchain to 1.6.6 (#210).

    [0.4.3] - 2021-04-13

    Features

    • lang: CPI clients for program state instructions (#43).
    • lang: Add #[account(owner = <program>)] constraint (#178).
    • lang, cli, ts: Add #[account(associated = <target>)] and #[associated] attributes for creating associated program accounts within programs. The TypeScript package can fetch these accounts with a new <program>.account.<account-name>.associated (and associatedAddress) method (#186).

    Fixes

    • lang: Unused #[account]s are now parsed into the IDL correctly (#177).

    [0.4.2] - 2021-04-10

    Features

    • cli: Fund Anchor.toml configured wallet when testing (#164).
    • spl: Add initialize_account instruction for spl tokens (#166).

    [0.4.1] - 2021-04-06

    • cli: Version verifiable docker builder (#145).

    [0.4.0] - 2021-04-04

    Features

    • cli: Specify test files to run (#118).
    • lang: Allow overriding the #[state] account's size (#121).
    • lang, client, ts: Add event emission and subscriptions (#89).
    • lang/account: Allow namespacing account discriminators (#128).
    • cli: TypeScript migrations (#132).
    • lang: Add #[account(executable)] attribute (#140).

    Breaking Changes

    • client: Replace url str with Cluster struct when constructing clients (#89).
    • lang: Changes the account discriminator of IdlAccount to be namespaced by "internal" (#128).
    • lang, spl, cli: Upgrade solana toolchain to 1.6.3, a major version upgrade even though only the minor version is incremented. This allows for the removal of -#![feature(proc_macro_hygiene)]. (#139).

    [0.3.0] - 2021-03-12

    Features

    • ts: Allow preloading instructions for state rpc transactions (cf9c84).
    • ts: Export sighash coder function (734c75).
    • cli: Specify programs to embed into local validator genesis via Anchor.toml while testing (b3803a).
    • cli: Allow skipping the creation of a local validator when testing against localnet (#93).
    • cli: Adds support for tests with Typescript (#94).
    • cli: Deterministic and verifiable builds (#100).
    • cli, lang: Add write buffers for IDL upgrades (#107).

    Breaking Changes

    • lang: Removes IdlInstruction::Clear (#107).

    Fixes

    • cli: Propagates mocha test exit status on error (79b791).

    [0.2.1] - 2021-02-11

    Features

    • cli: Embed workspace programs into local validator genesis when testing (733ec3).
    • cli: Stream program logs to .anchor/program-logs directory when testing (ce5ca7).
    • spl: Add shared memory api (d92cb1).
    • lang/attribute/access-control: Allow specifying multiple modifier functions (845df6).
    • lang/syn: Allow state structs that don't have a ctor or impl block (just trait implementations) (a78000).
    • ts: Add instruction method to state namespace (627c27).
    • lang/syn, ts: Add support for u128 and i128 (#83).

    [0.2.0] - 2021-02-08

    Features

    • lang: Adds the ability to create and use CPI program interfaces (#66).

    Breaking Changes

    • lang, client, ts: Migrate from rust enum based method dispatch to a variant of sighash (#64).

    [0.1.0] - 2021-01-31

    Initial release.

    Includes

    • lang: anchor-lang crate providing a Rust eDSL for Solana.
    • lang/attribute/access-control: Internal attribute macro for function modifiers.
    • lang/attribute/account: Internal attribute macro for defining Anchor accounts.
    • lang/attribute/error: Internal attribute macro for defining Anchor program errors.
    • lang/attribute/program: Internal attribute macro for defining an Anchor program.
    • lang/attribute/state: Internal attribute macro for defining an Anchor program state struct.
    • lang/derive/accounts: Internal derive macro for defining deserialized account structs.
    • lang/syn: Internal crate for parsing the Anchor eDSL, generating code, and an IDL.
    • spl: anchor-spl crate providing CPI clients for Anchor programs.
    • client: anchor-client crate providing Rust clients for Anchor programs.
    • ts: @project-serum/anchor package for generating TypeScript clients.
    • cli: Command line interface for managing Anchor programs.