# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added ### Changed - Keyword `indexed` is now optional for word typed (`bool`, `int`, `address`, ...) event arguments. - State variable pretty printing now produce `'a, 'b, ...` instead of `'1, '2, ...`. - ACI is restructured and improved: - `state` and `event` types (if present) now appear at the top level. - Namespaces and remote interfaces are no longer ignored. - All type definitions are included in the interface rendering. - API functions are renamed, new functions are `contract_interface` and `render_aci_json`. ### Removed ## [3.0.0] - 2019-05-21 ### Added - `stateful` annotations are now properly enforced. Functions must be marked stateful in order to update the state or spend tokens. - Primitives `Contract.creator`, `Address.is_contract`, `Address.is_oracle`, `Oracle.check` and `Oracle.check_query` has been added to Sophia. - A byte array type `bytes(N)` has been added to generalize `hash (== bytes(32))` and `signature (== bytes(64))` and allow for byte arrays of arbitrary fixed length. - `Crypto.ecverify_secp256k1` has been added. ### Changed - Address literals (+ Oracle, Oracle query and remote contracts) have been changed from `#` to address as `ak_`, oracle `ok_`, oracle query `oq_` and remote contract `ct_`. - The compilation and typechecking of `letfun` (e.g. `let m(f, xs) = map(f, xs)`) was not working properly and has been fixed. ### Removed - `let rec` has been removed from the language, it has never worked. - The standalone CLI compiler is served in the repo `aeternity/aesophia_cli` and has been completely removed from `aesophia`. ## [2.1.0] - 2019-04-11 ### Added - Stubs (not yet wired up) for compilation to FATE - Add functions specific for Calldata decoding - Support for `Auth.tx_hash`, not available in AEVM until Fortuna release ### Changed - Improvements to the ACI generator ## [2.0.0] - 2019-03-11 ### Added - Add `Crypto.ecverify` to the compiler. - Add `Crypto.sha3`, `Crypto.blake2`, `Crypto.sha256`, `String.blake2` and `String.sha256` to the compiler. - Add the `bits` type for working with bit fields in Sophia. - Add Namespaces to Sophia in order to simplify using library contracts, etc. - Add a missig type check on the `init` function - detects programmer errors earlier. - Add the ACI (Aeternity Contract Interface) generator. ### Changed - Use native bit shift operations in builtin functions, reducing gas cost. - Improve type checking of `record` fields - generates more understandable error messages. - Improved, more coherent, error messages. - Simplify calldata creation - instead of passing a compiled contract, simply pass a (stubbed) contract string. [Unreleased]: https://github.com/aeternity/aesophia/compare/v3.0.0...HEAD [3.0.0]: https://github.com/aeternity/aesophia/compare/v2.1.0...v3.0.0 [2.1.0]: https://github.com/aeternity/aesophia/compare/v2.0.0...v2.1.0 [2.0.0]: https://github.com/aeternity/aesophia/tag/v2.0.0