Changelog for morley-1.14.0
Unreleased
1.14.0
- !799
- Fix product type instances of 1-nary constructors and empty types (they could produce compilation error before).
- !814
- Renamed
Type
fromMichelson.Untyped.Type
withTy
. - Added the usage of
Prelude.Type
instead ofData.Kind.Type
, as a resultKind.Type
was replaced with justType
.
- Renamed
- !733
- Added special annotations handling for
LEFT
andRIGHT
instructions.
- Added special annotations handling for
- !787
- Added support for
CAR k
andCDR k
macros.
- Added support for
- !747
- Fix
ligoLayout
not working for alphabetically unordered sum types.
- Fix
- !798
- Added helper functions for recent Peano utility types.
- !815
- Added
IsList
andBuildable
instances toBigMap
.
- Added
1.13.0
- !796
- Generalized
InstrWithNotes
to handle instructions that put more than one value at the top of the stack. - Added support for
GET_AND_UPDATE
instructions.
- Generalized
- !774
- Added support for
BLS12-381
crypto primitives.
- Added support for
- !776
- Added support for
DUP n
instruction.
- Added support for
- !755
Restricted
FAILWITH
only to packable values, exceptCONTRACT
s - !781
- Replaced mixins and dependency on
base
withbase-noprelude
. - Added doctest examples and enabled
doctest
tests inmorley:lib
.
- Replaced mixins and dependency on
- !764
- Added support for
never
type.
- Added support for
- !750
!769
!786
!791
- Added support for
PAIR n
,UNPAIR n
,GET n
andUPDATE n
instructions.
- Added support for
- !778
- Added support for
VOTING_POWER
andTOTAL_VOTING_POWER
instructions.
- Added support for
- !767
Made
unit
,key
,signature
,chain_id
,option
,or
types comparable in preparation foredo
switch.
1.12.0
- !751
- Added support for
LEVEL
instruction. - Added --level parameter to
morley
executable
- Added support for
- !753
!754
edo
changes:- Ability to parse right-combed types (e.g.
pair int nat string
) from all 3 formats (binary, micheline, michelson) - Ability to parse right-combed values (e.g.
Pair 1 2 "a"
) from all 3 formats (binary, micheline, michelson)
- Ability to parse right-combed types (e.g.
- !742
Allowed parsing single field annotations for
LEFT
andRIGHT
instructions. - !744
- Added
reifyDataType
andderiveFullType
toUtil.CustomGeneric
. - Added
lookupTypeNameOrFail
toUtil.TH
.
- Added
- !741
- Added support for
SHA3
andKECCAK
instructions.
- Added support for
1.11.1
- !740
Fixed
morley print
to correctly renderPUSH
instructions that previously caused contracts to be misaligned and rejected bytezos-client
.
1.11.0
- !731
- Added opportunity to reorder fields in
GenericStrategy
. - Added
GenericStrategy
-ies for compatibility with LIGO.
- Added opportunity to reorder fields in
- !724
Fixed
UNPACK
to accept pairs of comparable types. - !712
- In optimizer, by default lambdas are now also handled.
- Field names in optimizer config are changed (prefix added).
- !726
Added
Data
andPlated
instances toMorley.Micheline.Expression
. - !723
- Splitted
class ContainsDoc
intoContainsDoc
andContainsUpdateableDoc
; - Allow avoiding explicit
DName
call (nowdocGroup "Title"
works).
- Splitted
- !684 Simplify working with autodoc in contracts. (follow the deprecation warnings in case this hits you).
1.10.0
- !692
The
ToJSON
instance for MichelineExpression
now produces more compact JSON values, by omitting the"annots"
and"args"
fields when these lists are empty. - !673
- Removed
TextException
. Migration guide: useStringException
orthrowString
fromsafe-exceptions
. - Removed
displayUncaughtException
. Migration guide: useuncaught-exception
library. - Added
Util.Main
module, consider using it in yourMain.hs
.
- Removed
- !657
Make
namedParser
handle complex-worded options neatly. - !678
Added
FromExpression
instances forMichelson.Untyped.Type
,Michelson.Typed.T
, andMichelson.Typed.Instr
. - !607
Removed
parse
from the executable. - !659
Remove
Michelson.Interpret.MichelsonAmbigousEpRef
exception constructor. - !664
Added
Tezos.Crypto.Sign
. - !638
Added
Morley.Micheline.Json.TezosMutez
. - !638
Added
Tezos.Core.prettyTez
.
1.9
- !653
Michelson.OpSize
module is moved toMichelson.Untyped.OpSize
.- Added primitives for evaluating
OpSize
in typed Michelson. - Added
instance Buildable OpSize
.
- !633
Added
Tezos.Core.timestampToUTCTime
.
1.8.1
- !613
Added
HasCLReader
instances forWord16
andString
.
1.8.0
- !610
Remove
Arbitrary
instances and everything else that depends onQuickCheck
. - !616
Make
RootAnn
a mere type alias ofFieldAnn
. - !615
Make
mkEntrypointsMap
acceptParameterType
instead ofType
. - !567
Add
DConversionInfo
that describes Haskell <-> Michelson conversion mechanism. - !585
Add
Exception
instance forParseChainIdError
. - !598
Fix bug: correct processing of
EDIV
of negativeInteger
andNatural
. - !574
Implement a verbose switch for
morley typecheck
. It allows to print a stack type after every well-typed instruction, even if a contract as a whole is ill-typed.
1.7.1
- !549
Add
instance Buildable TezosInt64
.
1.7.0
- !565
Remove useless error entities from
Michelson.Interpret
. - !563 Fix handling of Natural numbers.
- !554 Fix 'SELF' instruction packing.
- !548
- The interpreter now takes a typed contract and storage value for origination operations.
- Use binary serialization to compute operation hashes and addresses.
- Add
typeCheckContractAndStorage
toMichelson.TypeCheck
- Remove
withGlobalOperation
fromMichelson.Runtime
- Remove
EEIllTypedContract
andEEIllTypedStorage
constructors fromExecutorError'
1.6.0
- !323
Add
parseSecretKey
which allows parsing all types ofSecretKey
. - !537
Permit
SELF %default
instruction. - !522 Allow calling the interpreter with a typed transfer parameter and avoid unnecessary typechecking.
- !495
Add source location to typed
Instr
AST. - !521 Document generater can now generate table of contents.
1.5.0
- !509
Implement missing parts of
secp256k1
andP256
.checkSignature
now works correctly with all signature formats.
- !511
Add
zeroMutez
andoneMutez
for safe initial values. - !500
Add ability to parse optimized formats of
signature
,contract
,key
, andkey_hash
. - !486
Add
Util.CustomGeneric
to deriveGeneric
instances with a custom tree structure. - !466 Add sub-command 'repl' to Morley executable which starts an REPL that can execute Morley instructions.
- !492
TypeHasDoc
instance fornewtype
now has its field remove by default without having to usehaskellRepNoFields
.- Add
haskellAddNewtypeField
function to add field name fornewtype
if desired.
- !487
Fix typechecking error message pointing to the whole
map unit nat
as not comprable.- It now only points to
unit
type as not comparable.
- It now only points to
- !457
- Allow using the same position when defining
DocItem
. - When two
DocItem
s have the same position, they will be sorted alphabetically by their names.
- Allow using the same position when defining
- !480
Arithmetic instructions (ADD, MUL, EDIV, LSL, ...) now take annotations into account.
- Results from the instructions are also properly annotated.
- !470
Move
Michelson.Doc.Test
,Michelson.Test
and Hedgehog generators to a new package:cleveland
. - !453
Order of top-level entries in contract are now preserved.
PACK
/UNPACK
now serialize contracts according their top-level entries order.- Pretty printer now display contracts according to their given top-level entries order.
- !445
Remove unnecessary
TcOriginatedContracts
usages and splittypeCheckTopLevelValue
totypeCheckParameter
(the only case whereTcOriginatedContracts
is useful) andtypeCheckStorage
.
1.4.0
-
!446 Include source locations and let-binding stacks into typecheck errors.
-
- Improve
Michelson.Test.Integrational
interface. - Remove
IntegrationalValidator
,SuccessValidator
,validate
,composeValidators
,composeValidatorsList
,expectAnySuccess
. - Add
unexpectedInterpreterError
,attempt
,catchExpectedError
. - Change type of
expect*
/tExpect*
functions. They now returnIntegrationalScenario
instead ofSuccessValidator
/Bool
. - Rename
ValidationError
toTestError
- Replace
TestError
'sUnexpectedExecutorError
constructor withInterpreterError
andUnexpectedInterpreterError
.
- Improve
-
!441 Remove
tezos-bake-monitor-lib dependency
, and define value to json conversion using binary round trip locally instead. -
!448 Remove
base-noprelude
dependency and use mixins to hidePrelude
instead. -
!367 Values and instructions now carry some extra constraints in order to avoid construction of illegally typed values from within Haskell.
WellTyped
now also requiresTypeable
andSingI
constraints. -
- Add hedgehog support
-
- Fixed parsing bug: support semicolons after block comments.
-
!424 Changed contract address computation logic in the interpreter to match the reference implementation a bit more closely by including a global counter and an origination index (nonce) to contract's hash. Specifically, now the same contract may be originated several times, leading to different addresses, just like in Tezos.
1.3.0
- !417 Change the license to MIT.
- !386
- Add a way to describe constructors and fields of ADTs in Markdown documentation.
- Require that all contracts include documentation for the storage type.
- !396 Fixed
typed
Notes
to permit pair annotations for container keys. - !359 Renamed
'FullContract' to 'Contract', removed the prefix
f
from its record fields and removed "Full" from the names of the functions:convertFullContract
,printTypedFullContract
andmapFullContractCode
. - !354
- Fix bug: add
ChainId
toIsPrimitiveValue
type family. - Add
GInstrDeconstruct
type class and related functions which serve to deconstruct datatype into its fields on the stack. - Add
gInstrConstructStack
toGInstrConstruct
type class that serves to construct a datatype from its fields on the stack. - Add
GFieldNames
type family returning list ofSymbol
s: the names of direct fields of datatype.
- Fix bug: add
1.2.0
- !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
Remove deprecated
STEPS_TO_QUOTA
instruction. - !368
- Update JSON encoding of types.
- Rename fields of the untyped
Contract'
.
- !286 Morley supports field annotations for parameter root now.
- !344
Fixed a bug in
Michelson.Analyzer
and addedlinearizeLeftDeep
.
1.1.0
- !337 Added an extension for Michelson comment to typed and untyped contract representation.
- !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
andbuildInstrDocWithGitRev
to API to add a git revision to contract docs from the executable.
- Add
- !121
BALANCE
instruction now returns the balance with funds from incoming transaction. - !294
- Added
Paths_*
modules toautogen-modules
in cabal files. Removed-O0
- from default GHC options. Please set
ghc-options
in yourstack.yaml
orcabal.project.local
.
- Added
- !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
andMorley.CLI
modules. - !268
Test functions which import typed contract now return
FullContract
instead ofContract
, thus preserving parameter and storage annotations. In case you don't need this behaviour, usefcCode
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.
- Fix
- !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 (fromLorentz.*
toMichelson.*
or vice versa).
0.7.0
- !237
The
option (nat %foo)
is now accepted syntax. The%foo
is ignored. - !241
Derive
Show
instance forVoid_
. - !238
NoExplicitDefaultEntrypoint
is now GHC-understandable constraint, for previous behaviour with nice error message useForbidExplicitDefaultEntrypoint
.CanHaveEntrypoints
is made stricter, now it returns true only for Michelson sum types. If that's a problem for you, consider usingShouldHaveEntrypoints
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 ofconsumer
contract may require explicit type annotation to specify parameter type. If you passed a reference to the originated contract toView
constructor, consider usingmkView
instead or applyingcallingDefTAddress
to the reference. - Generally it is encouraged to use
TAddress
instead ofAddress
where it is used to refer to a contract. fromContractAddr
renamed tofromContractRef
.Default
instances for{Some,}EntrypointCall
are removed, use one of explicit versions:epcPrimitive
,epcCallRootUnsafe
.- Reworked
FutureContract
type.
- Integrational tests now carry
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
.
- Add entrypoint argument to methods in testing eDSL. Preserve the existing type of
- !208
Resolve an ambiguity within integrational and unit interpreters
by renaming interpreter in
Michelson.Runtime
toexecutor
. - !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 oldcoerce_
- this variant provides the least safety).
- !180
Type arguments of
coerceWrap
andcoerceUnwrap
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 thecontract
type, partial support for entrypoints. Some instructions have been removed/deprecated. - Many updates of helper data types for upgradeable contracts:
UParam
andUStore
. - 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
andstorage
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
andUNPACK
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