Changelog of @hackage/morley 0.7.0

Unreleased

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