anchor/CHANGELOG.md

12 KiB

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]

[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.