morley-0.7.0: CHANGES.md
Unreleased
==========
<!-- Append new entries here -->
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