Changelog for morley-1.12.0
Unreleased
1.12.0
- !751
- Added support for
LEVELinstruction. - Added --level parameter to
morleyexecutable
- Added support for
- !753
!754
edochanges:- 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
LEFTandRIGHTinstructions. - !744
- Added
reifyDataTypeandderiveFullTypetoUtil.CustomGeneric. - Added
lookupTypeNameOrFailtoUtil.TH.
- Added
- !741
- Added support for
SHA3andKECCAKinstructions.
- Added support for
1.11.1
- !740
Fixed
morley printto correctly renderPUSHinstructions 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
UNPACKto 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
DataandPlatedinstances toMorley.Micheline.Expression. - !723
- Splitted
class ContainsDocintoContainsDocandContainsUpdateableDoc; - Allow avoiding explicit
DNamecall (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
ToJSONinstance for MichelineExpressionnow produces more compact JSON values, by omitting the"annots"and"args"fields when these lists are empty. - !673
- Removed
TextException. Migration guide: useStringExceptionorthrowStringfromsafe-exceptions. - Removed
displayUncaughtException. Migration guide: useuncaught-exceptionlibrary. - Added
Util.Mainmodule, consider using it in yourMain.hs.
- Removed
- !657
Make
namedParserhandle complex-worded options neatly. - !678
Added
FromExpressioninstances forMichelson.Untyped.Type,Michelson.Typed.T, andMichelson.Typed.Instr. - !607
Removed
parsefrom the executable. - !659
Remove
Michelson.Interpret.MichelsonAmbigousEpRefexception constructor. - !664
Added
Tezos.Crypto.Sign. - !638
Added
Morley.Micheline.Json.TezosMutez. - !638
Added
Tezos.Core.prettyTez.
1.9
- !653
Michelson.OpSizemodule is moved toMichelson.Untyped.OpSize.- Added primitives for evaluating
OpSizein typed Michelson. - Added
instance Buildable OpSize.
- !633
Added
Tezos.Core.timestampToUTCTime.
1.8.1
- !613
Added
HasCLReaderinstances forWord16andString.
1.8.0
- !610
Remove
Arbitraryinstances and everything else that depends onQuickCheck. - !616
Make
RootAnna mere type alias ofFieldAnn. - !615
Make
mkEntrypointsMapacceptParameterTypeinstead ofType. - !567
Add
DConversionInfothat describes Haskell <-> Michelson conversion mechanism. - !585
Add
Exceptioninstance forParseChainIdError. - !598
Fix bug: correct processing of
EDIVof negativeIntegerandNatural. - !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
typeCheckContractAndStoragetoMichelson.TypeCheck - Remove
withGlobalOperationfromMichelson.Runtime - Remove
EEIllTypedContractandEEIllTypedStorageconstructors fromExecutorError'
1.6.0
- !323
Add
parseSecretKeywhich allows parsing all types ofSecretKey. - !537
Permit
SELF %defaultinstruction. - !522 Allow calling the interpreter with a typed transfer parameter and avoid unnecessary typechecking.
- !495
Add source location to typed
InstrAST. - !521 Document generater can now generate table of contents.
1.5.0
- !509
Implement missing parts of
secp256k1andP256.checkSignaturenow works correctly with all signature formats.
- !511
Add
zeroMutezandoneMutezfor safe initial values. - !500
Add ability to parse optimized formats of
signature,contract,key, andkey_hash. - !486
Add
Util.CustomGenericto deriveGenericinstances with a custom tree structure. - !466 Add sub-command 'repl' to Morley executable which starts an REPL that can execute Morley instructions.
- !492
TypeHasDocinstance fornewtypenow has its field remove by default without having to usehaskellRepNoFields.- Add
haskellAddNewtypeFieldfunction to add field name fornewtypeif desired.
- !487
Fix typechecking error message pointing to the whole
map unit natas not comprable.- It now only points to
unittype as not comparable.
- It now only points to
- !457
- Allow using the same position when defining
DocItem. - When two
DocItems 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.Testand Hedgehog generators to a new package:cleveland. - !453
Order of top-level entries in contract are now preserved.
PACK/UNPACKnow serialize contracts according their top-level entries order.- Pretty printer now display contracts according to their given top-level entries order.
- !445
Remove unnecessary
TcOriginatedContractsusages and splittypeCheckTopLevelValuetotypeCheckParameter(the only case whereTcOriginatedContractsis useful) andtypeCheckStorage.
1.4.0
-
!446 Include source locations and let-binding stacks into typecheck errors.
-
- Improve
Michelson.Test.Integrationalinterface. - Remove
IntegrationalValidator,SuccessValidator,validate,composeValidators,composeValidatorsList,expectAnySuccess. - Add
unexpectedInterpreterError,attempt,catchExpectedError. - Change type of
expect*/tExpect*functions. They now returnIntegrationalScenarioinstead ofSuccessValidator/Bool. - Rename
ValidationErrortoTestError - Replace
TestError'sUnexpectedExecutorErrorconstructor withInterpreterErrorandUnexpectedInterpreterError.
- Improve
-
!441 Remove
tezos-bake-monitor-lib dependency, and define value to json conversion using binary round trip locally instead. -
!448 Remove
base-nopreludedependency and use mixins to hidePreludeinstead. -
!367 Values and instructions now carry some extra constraints in order to avoid construction of illegally typed values from within Haskell.
WellTypednow also requiresTypeableandSingIconstraints. -
- 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
Notesto permit pair annotations for container keys. - !359 Renamed
'FullContract' to 'Contract', removed the prefix
ffrom its record fields and removed "Full" from the names of the functions:convertFullContract,printTypedFullContractandmapFullContractCode. - !354
- Fix bug: add
ChainIdtoIsPrimitiveValuetype family. - Add
GInstrDeconstructtype class and related functions which serve to deconstruct datatype into its fields on the stack. - Add
gInstrConstructStacktoGInstrConstructtype class that serves to construct a datatype from its fields on the stack. - Add
GFieldNamestype family returning list ofSymbols: 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
WellTypedtype class has been added to ensure that a type represented by T is valid as per Michelson's rules.
- !358
Remove deprecated
STEPS_TO_QUOTAinstruction. - !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.Analyzerand 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
MAPoperation: it did not preserve modifications to stack. - !261 Slightly modified interpreter API.
- !313
Made
typeCheckValuepolymorphic in desired type, instead of using existential wrappers. - !310
- Add
DGeneralInfoSectiondocumentation section with git revision and potentially other info. - Add
buildLorentzDocWithGitRevandbuildInstrDocWithGitRevto API to add a git revision to contract docs from the executable.
- Add
- !121
BALANCEinstruction now returns the balance with funds from incoming transaction. - !294
- Added
Paths_*modules toautogen-modulesin cabal files. Removed-O0 - from default GHC options. Please set
ghc-optionsin yourstack.yamlorcabal.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.CLIandMorley.CLImodules. - !268
Test functions which import typed contract now return
FullContractinstead ofContract, thus preserving parameter and storage annotations. In case you don't need this behaviour, usefcCodefor 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
ANDinstruction return type. - Add
DUP nmacro support. - Fix
LAMBDAinstruction printer.
- Fix
- !265 The semicolons between instructions are now optional.
1.0.0
- !215
Major change: all Lorentz functionality was moved into
lorentzpackage. 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%foois ignored. - !241
Derive
Showinstance forVoid_. - !238
NoExplicitDefaultEntrypointis now GHC-understandable constraint, for previous behaviour with nice error message useForbidExplicitDefaultEntrypoint.CanHaveEntrypointsis made stricter, now it returns true only for Michelson sum types. If that's a problem for you, consider usingShouldHaveEntrypointswrapper.- Added pseudo
Emptytype.
- !219
Various entrypoints-related updates.
- Integrational tests now carry
TAddressas a reference to contract. Make sure that parameters of the originated contracts are clear; e.g. origination ofconsumercontract may require explicit type annotation to specify parameter type. If you passed a reference to the originated contract toViewconstructor, consider usingmkViewinstead or applyingcallingDefTAddressto the reference. - Generally it is encouraged to use
TAddressinstead ofAddresswhere it is used to refer to a contract. fromContractAddrrenamed tofromContractRef.Defaultinstances for{Some,}EntrypointCallare removed, use one of explicit versions:epcPrimitive,epcCallRootUnsafe.- Reworked
FutureContracttype.
- Integrational tests now carry
0.6.0
- !127 Limit annotations' allowed characters
- !184
Fix
LAMBDAinstruction 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
SELFinstruction. Minor refactorings related to entrypoints. - !201
- Add entrypoint argument to methods in testing eDSL. Preserve the existing type of
lCalland 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.Runtimetoexecutor. - !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/coerceUnwrapforcedCoerce_(aka oldcoerce_- this variant provides the least safety).
- !180
Type arguments of
coerceWrapandcoerceUnwrapare flipped. This change concerns you if you used type application on these functions.
0.5.0
- Require
morley-preludeto 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_maprestructions, new restrictions for thecontracttype, partial support for entrypoints. Some instructions have been removed/deprecated. - Many updates of helper data types for upgradeable contracts:
UParamandUStore. - Michelson printer can produce pretty output, not just one line.
- Added utilities for contract processing and analysis: optimizer, string transformer, errors transformer, analyzer.
- Added
tastyhelpers 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
parameterandstoragealiases, they were not very useful and complicated the code. - Extended cryptographic types and
Addressto 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
PACKandUNPACKinstructions. - 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