Changelog of @hackage/morley 1.1.0

Unreleased

1.1.0

  • !306 Added PAIR/UNPAIR rule to optimizer.
  • !314 Fixed a bug in the implementation of MAP operation: it did not preserve modifications to stack.
  • !261 Slightly modified interpreter API.
  • !313 Made typeCheckValue polymorphic in desired type, instead of using existential wrappers.
  • !310
    • 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 BALANCE instruction now returns the balance with funds from incoming transaction.
  • !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 Renamed 'Contract' to 'ContractCode', and appended "Code" to the names of two functions: 'convertContract' and 'printTypedContract'
  • !278 Added some utilities for command line option parsing, see Util.CLI and Morley.CLI modules.
  • !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
    • Fix AND instruction return type.
    • Add DUP n macro support.
    • Fix LAMBDA instruction printer.
  • !265 The semicolons between instructions are now optional.

1.0.0

  • !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 The option (nat %foo) is now accepted syntax. The %foo is ignored.
  • !241 Derive Show instance for Void_.
  • !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 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 Limit annotations' allowed characters
  • !184 Fix LAMBDA instruction type converter bug
  • !173 !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
    • Add entrypoint argument to methods in testing eDSL. Preserve the existing type of lCall and deprecate it.
    • Deprecate Lorentz.TestScenario.
  • !208 Resolve an ambiguity within integrational and unit interpreters by renaming interpreter in Michelson.Runtime to executor.
  • !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 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 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 Lorentz DSL which allows one to write contracts directly in Haskell. May be moved to a separate package later.
  • TM-132 Names for contracts in integrational tests.
  • TM-35 PACK and UNPACK instructions.
  • TM-27 Proper handling of FAILWITH.
  • TM-44 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