Unreleased ========== 1.2.0 ===== * [!343](https://gitlab.com/morley-framework/morley/-/merge_requests/343) + Make pairs comparable and available to use as map keys and in sets. + CT type has been integrated into T. + A `WellTyped` type class has been added to ensure that a type represented by T is valid as per Michelson's rules. * [!358](https://gitlab.com/morley-framework/morley/-/merge_requests/358) Remove deprecated `STEPS_TO_QUOTA` instruction. * [!368](https://gitlab.com/morley-framework/morley/-/merge_requests/368) + Update JSON encoding of types. + Rename fields of the untyped `Contract'`. * [!286](https://gitlab.com/morley-framework/morley/-/merge_requests/286) Morley supports field annotations for parameter root now. * [!344](https://gitlab.com/morley-framework/morley/-/merge_requests/344) Fixed a bug in `Michelson.Analyzer` and added `linearizeLeftDeep`. 1.1.0 ===== * [!337](https://gitlab.com/morley-framework/morley/-/merge_requests/337) Added an extension for Michelson comment to typed and untyped contract representation. * [!306](https://gitlab.com/morley-framework/morley/-/merge_requests/306) Added PAIR/UNPAIR rule to optimizer. * [!314](https://gitlab.com/morley-framework/morley/-/merge_requests/314) Fixed a bug in the implementation of `MAP` operation: it did not preserve modifications to stack. * [!261](https://gitlab.com/morley-framework/morley/merge_requests/261) Slightly modified interpreter API. * [!313](https://gitlab.com/morley-framework/morley/-/merge_requests/313) Made `typeCheckValue` polymorphic in desired type, instead of using existential wrappers. * [!310](https://gitlab.com/morley-framework/morley/merge_requests/232) + Add `DGeneralInfoSection` documentation section with git revision and potentially other info. + Add `buildLorentzDocWithGitRev` and `buildInstrDocWithGitRev` to API to add a git revision to contract docs from the executable. * [!121](https://gitlab.com/morley-framework/morley/merge_requests/302) `BALANCE` instruction now returns the balance with funds from incoming transaction. * [!294](https://gitlab.com/morley-framework/morley/-/merge_requests/294) + Added `Paths_*` modules to `autogen-modules` in cabal files. Removed `-O0` + from default GHC options. Please set `ghc-options` in your `stack.yaml` or `cabal.project.local`. * [!271](https://gitlab.com/morley-framework/morley/merge_requests/271) Renamed 'Contract' to 'ContractCode', and appended "Code" to the names of two functions: 'convertContract' and 'printTypedContract' * [!278](https://gitlab.com/morley-framework/morley/merge_requests/278) Added some utilities for command line option parsing, see `Util.CLI` and `Morley.CLI` modules. * [!268](https://gitlab.com/morley-framework/morley/merge_requests/268) Test functions which import typed contract now return `FullContract` instead of `Contract`, thus preserving parameter and storage annotations. In case you don't need this behaviour, use `fcCode` for conversion. Test functions which import Lorentz contracts have been removed because they cannot be implemented sanely, and Lorentz is assumed to be used to generate code, do not use it for work with textual Michelson contracts. * [!212](https://gitlab.com/morley-framework/morley/merge_requests/212) + Fix `AND` instruction return type. + Add `DUP n` macro support. + Fix `LAMBDA` instruction printer. * [!265](https://gitlab.com/morley-framework/morley/merge_requests/265) The semicolons between instructions are now optional. 1.0.0 ===== * [!215](https://gitlab.com/morley-framework/morley/merge_requests/215) Major change: all Lorentz functionality was moved into `lorentz` package. A small portion of testing library code was moved around (from `Lorentz.*` to `Michelson.*` or vice versa). 0.7.0 ===== * [!237](https://gitlab.com/morley-framework/morley/merge_requests/237) The `option (nat %foo)` is now accepted syntax. The `%foo` is ignored. * [!241](https://gitlab.com/morley-framework/morley/merge_requests/241) Derive `Show` instance for `Void_`. * [!238](https://gitlab.com/morley-framework/morley/merge_requests/238) + `NoExplicitDefaultEntryPoint` is now GHC-understandable constraint, for previous behaviour with nice error message use `ForbidExplicitDefaultEntryPoint`. + `CanHaveEntryPoints` is made stricter, now it returns true only for Michelson sum types. If that's a problem for you, consider using `ShouldHaveEntryPoints` wrapper. + Added pseudo `Empty` type. * [!219](https://gitlab.com/morley-framework/morley/merge_requests/219) Various entrypoints-related updates. + Integrational tests now carry `TAddress` as a reference to contract. Make sure that parameters of the originated contracts are clear; e.g. origination of `consumer` contract may require explicit type annotation to specify parameter type. If you passed a reference to the originated contract to `View` constructor, consider using `mkView` instead or applying `callingDefTAddress` to the reference. + Generally it is encouraged to use `TAddress` instead of `Address` where it is used to refer to a contract. + `fromContractAddr` renamed to `fromContractRef`. + `Default` instances for `{Some,}EntryPointCall` are removed, use one of explicit versions: `epcPrimitive`, `epcCallRootUnsafe`. + Reworked `FutureContract` type. 0.6.0 ===== * [!127](https://gitlab.com/morley-framework/morley/merge_requests/127) Limit annotations' allowed characters * [!184](https://gitlab.com/morley-framework/morley/merge_requests/184) Fix `LAMBDA` instruction type converter bug * [!173](https://gitlab.com/morley-framework/morley/merge_requests/173) [!197](https://gitlab.com/morley-framework/morley/merge_requests/197) Add support for lightweight entrypoints in Lorentz, as well as in the interpreter runner and morley executable. Support entrypoint references in `SELF` instruction. Minor refactorings related to entrypoints. * [!201](https://gitlab.com/morley-framework/morley/merge_requests/201) + Add entrypoint argument to methods in testing eDSL. Preserve the existing type of `lCall` and deprecate it. + Deprecate `Lorentz.TestScenario`. * [!208](https://gitlab.com/morley-framework/morley/merge_requests/208) Resolve an ambiguity within integrational and unit interpreters by renaming interpreter in `Michelson.Runtime` to `executor`. * [!180](https://gitlab.com/morley-framework/morley/merge_requests/180) Remove `coerce_` in favor of more safe variants. Migration guide: pick one of the functions from 'Lorentz.Coercions' module. In most cases you need one of the following ones: * `checkedCoerce_` * `coerceWrap` / `coerceUnwrap` * `forcedCoerce_` (aka old `coerce_` - this variant provides the least safety). * [!180](https://gitlab.com/morley-framework/morley/merge_requests/180) Type arguments of `coerceWrap` and `coerceUnwrap` are flipped. This change concerns you if you used type application on these functions. 0.5.0 ===== * Require `morley-prelude` to be ≥ 0.3.0 to make Hackage happy. * [!156](https://gitlab.com/morley-framework/morley/merge_requests/156) Consider annotations in PACK and UNPACK. 0.4.0 ===== * Implemented most of Babylon changes: new instructions, elimination of `big_map` restructions, new restrictions for the `contract` type, partial support for entrypoints. Some instructions have been removed/deprecated. * Many updates of helper data types for upgradeable contracts: `UParam` and `UStore`. * Michelson printer can produce pretty output, not just one line. * Added utilities for contract processing and analysis: optimizer, string transformer, errors transformer, analyzer. * Added `tasty` helpers to the testing engine. * Added annotations to typed representation and Lorentz. * Added automatic documentation generator. * Modified standard errors in Lorentz: now they are based on `CustomError`. * Added unpacking from readable representation. * Removed `parameter` and `storage` aliases, they were not very useful and complicated the code. * Extended cryptographic types and `Address` to work with other curves (tz2 and tz3 addresses). * Made it nearly impossible to generate dead code (which is illegal in Michelson) using Lorentz. * Various bug fixes. 0.3.0.1 ======= * Update maintainer. 0.3.0 ===== * [TM-68](https://issues.serokell.io/issue/TM-68) Lorentz DSL which allows one to write contracts directly in Haskell. May be moved to a separate package later. * [TM-132](https://issues.serokell.io/issue/TM-132) Names for contracts in integrational tests. * [TM-35](https://issues.serokell.io/issue/TM-35) `PACK` and `UNPACK` instructions. * [TM-27](https://issues.serokell.io/issue/TM-27) Proper handling of `FAILWITH`. * [TM-44](https://issues.serokell.io/issue/TM-44) [TM-124](https://issues.serokell.io/issue/TM-124) Reorganization of modules. * Bug fixes. 0.2.0.1 ======= * Update documentation and metadata. 0.2.0 ===== Initial release. * Typechecker and interpreter for Michelson. * Morley extensions: - syntax sugar - let-blocks - inline assertions * EDSL for unit testing and integrational testing