Changelog for morley-1.20.0
1.20.0
- !1364 Update to LTS-21.4 (GHC 9.4.5)
- !1358
Make missing
Genericerrors more readable - !1356
Optimize
SizedListMonadinstance- Avoid unnecessary traversals
- Make
SizedListlazy in both head and tail
- !1367
Replace
HaveCommonTypeCtorclass with a type family - !1368 Remove deprecated types and functions
1.19.2
- !1365
Split optimizer module
- More utilities for writing rules are now exported from
Morley.Michelson.Optimizer.Utils; - Fixed a bug with missing pattern in the
Buildable OptimizationStageinstance.
- More utilities for writing rules are now exported from
- !1352
Clean-up Buildable ExecutorOp implementation
- Add
Buildableinstances forOriginationOperation,TransferOperation,SetDelegateOperation,EmitOperation; - Rewrite
Buildable ExecutorOpto delegate to these new instances.
- Add
- !1357
Better tests for
PACK- Fix an issue when untyping
CREATE_CONTRACTinstruction -- morley would always useReadablerepresentation for its contents; - Fix an issue in typechecking
CREATE_CONTRACTinstruction -- morleySELFinsideCREATE_CONTRACTinside lambdas was rejected.
- Fix an issue when untyping
- !1349
Improve morley compilation time
Forbid*constraints are no longer carried as superclasses ofComparable. Match oncomparableImpliesto bring those into scope. In case of impossible patterns, emptycasewithcheckComparabilityshould do the trick.
- !1351
Fix and improve
Buildable MichelsonFailureWithStack - !1346
Use proper datatype for Micheline primitives, refactor some FromExp instances
- Replace a list of strings with a proper datatype for Micheline primitives
- Refactor
FromExpinstances to make pattern-matches (more) total and reduce redundancy - Make
FromExpexceptions more structured - Other minor refactoring
- !1342
Replace fmt with prettyprinter
- Introduce overlappable
Buildableinstance for anythingRenderDocto avoid proliferation of trivial instances - Deprecate
buildRenderDocandbuildRenderDocExtended - Replace unnecessary
RenderDocinstances withBuildable(this refers to various error types) printDoc,printDocB,printDocSdeprecated in favor ofprintRenderDoc- Redundant
forceSingleLineparameter torenderTyperemoved - Obsolete
Prettiernewtype deprecated - Improve
NotWellTypederror formatting - Improve formatting for
Buildable ExecutorOp
- Introduce overlappable
- !1347
Better errors for missing contract fields
- Improve efficiency when constructing untyped contract from list of contract blocks
- Rename
UnsafeViewsSettoViewsSet, as there's nothing inherently unsafe about this constructor any more (old name is left as a pattern synonym, but deprecated)
- !1343
Fix optimizer dipSwapDrop regression
- Fixed a bug where
DIP n codewould be deoptimized intoDIP (n - 1) { SWAP; code } - While at it,
DUP; DUG (m + 1); DROPis now optimized toDUG m
- Fixed a bug where
- !1344 Typecheck recursive lambda values
- !1323
Trace called contracts on error
- Trace operations in the Morley emulator
- !1310
Various parser fixes
- Make parser stricter wrt braces around code blocks. Now things like
DIP DROPare rejected (as per reference), butDIP FAILare allowed (asFAILis a macro) - Properly handle braced code blocks in typechecker's verbose error messages
- Use optimized untyped contract representation in
toExpression - Fix macro expansion rules to match reference; add macro expansion tests against reference
- Make parser stricter wrt braces around code blocks. Now things like
- !1341
Refactor scope constraints
- Unified all
check*Presencefunctions intocheckTPresence - Unified all
*Absense(sic) andcheck*PresenceintotAbsenceandtPresence - Unified all
Contains*type families, plusIsComparableintoContainsT - All now-redundant synonyms are deprecated
- Deprecate
HasNo*andProper*BetterErrorsin favor ofForbid*and*Scoperespectively. - Simplify
WithDeMorganScope - Avoid unnecessary singleton traversals using
checkTPresence, remove where possible, use de Morgan laws otherwise. - Improve
Forbid*error messages - Improve
*Scopeerror messages with the suggestion to add the corresponding scope constraint - Improve error messages on stuck type families with
Forbid*and*Scope - Drop redundant uses of
(:-)implication inAsRPC, use constraints explicitly
- Unified all
- !1293 Add extensible metadata field to StkEl
- !1335
Include morley CLI commands with morley-client
- Moved morley CLI parser and REPL to library under
Morley.App
- Moved morley CLI parser and REPL to library under
- !1333
Improve typechecker error rendering
- Switched to
prettyprinterfromwl-pprint-text - Introduced
Morley.Michelson.Printer.Compatas a thin compatibility layer
- Switched to
- !1336
Improve non-recursive
deriveRPCerrors- Print human-readable error messages when required
HasRPCReprinstances are missing in non-recursive mode (i.e.droRecursive=False)
- Print human-readable error messages when required
- !1340
Remove deprecated types and functions
haskellRepStripFieldPrefixMorley.Michelson.Typed.Contract.mapEntriesOrderedMorley.Michelson.Untyped.Contract.mapContractCodelinearizeRightCombValuePairexpandList(|-)MockableConstraintandunsafeProvideConstraintfailUnlessEvifailWhenEviConcatListOfTypesAssociativityandlistOfTypesConcatAssociativityAxiom
1.19.1
- !1325
Add
AND,NOT,OR,XOR,LSLandLSRoperations support onbytes - !1326
Add support for bytes to nat and int conversions
- Support
NATandBYTESinstructions, and the new operands toINTinstruction.
- Support
- !1331
Support implicit account tickets
- New
emulate transfer-ticketCLI command - Add
CheckScopeinstance for constraint pairs
- New
- !1330
Support ticket balance queries in morley-client and Cleveland.
- Add
HasCLReaderinstance forTy.
- Add
- !1328
Kill support for TORUs, minimal sr1 address support, tz4 address support
txr1addresses andtx_rollup_l2_addressare no longer parsable;sr1addresses can be parsed and typechecked, but sending transfers tosr1is not yet supported in the Morley runtime;- Full support for
tz4addresses.
- !1322
Various optimizer improvements
- Reapply optimizer stages until fixpoint (up to a configurable maximum of iterations);
- Rework optimizer ruleset architecture;
- Drop
MetaandWithLocduring optimization; - Apply
dipDrop2swapDropin a separate stage; - More complete optimization for
DROPN,PAIRN,UNPAIRN,DIPNand nestedDIPs; - Optimize
DIG 1andDUG 1toSWAP; - Optimize
NOT; IF a btoIF b a; - The last one requires carrying
SingIconstraint on the argument ofNOT, so do that.
- !1298
Handle view ordering properly
- Also deprecates some unused functions and cleans up macro expansion code
- Specifically, typed
mapEntriesOrdered;mapContractCode, andexpandListare deprecated
- !1313
Generalize
ceContractsto a function- Allows performing arbitrary actions to fetch contracts
ContractEnvis now parametrized by the interpreter monad- As a side effect, interpreter monad needs to be a newtype now
- !1315
Slightly generalize
L1AddressKindtype synonym - !1295
Replace FrameInstr with a function
- Also:
- Move instruction constraints to
Morley.Michelson.Typed.Instr.Constraints; - Add utilities for stubbing proofs;
- Deprecate unused and unsafe things:
(|-),failUnlessEvi,failWhenEvi,unsafeProvideConstraint,listOfTypesConcatAssociativityAxiom; - General cleanup.
- !1312 Add WellTyped constraint to sampleTypedValue
- !1311 Add missing HasCLReader instances for address types
- !1309 Don't render untyped pairs as sequences
- !1308
Improve contract rendering
- If the type fits into the column width, print it in one line.
- If it doesn't, print arguments on separate lines with indent 2.
- For types with very short prefix before arguments, render the first argument on the current line, and align all the rest with the first.
- Apply the same basic rules to instructions and on-chain views.
- !1182
Add
metaWrappertoContractEnvwhich build a wrapper attachingMetaandWithLocalong the way. This wrapper the is used when it meets loop instruction. - !1305
Add a recommendation to morley's
README.mdfor the user to include theextra-depsif they have difficulty buildingmorley. - !1299 Fix recursive deriveRPC for Address, Lorentz Hash and other types with phantom arguments.
- !1239
Give Seq a fixity declaration
- The same as
:#, i.e.infixr 8.
- The same as
- !1235
Make it easier to have consistent field naming between HasAnnotation and TypeHasDoc
- Move all casing manipulation to
Morley.Util.Text. - Use new casing manipulation functions everywhere.
- Introduce
TypeHasFieldNamingStrategy-- a typeclass with a catchall overlappable instance, which defines the strategy to use. Strategy being a functionText -> Textmodifying field names. - Require
TypeHasFieldNamingStrategyconstraint in the default implementation oftypeDocHaskellRep. Apply the strategy as appropriate. - See also the corresponding
lorentzchangelog.
- Move all casing manipulation to
- !1280
Export everything from internal modules
- That includes
Morley.Micheline.Binary.InternalandMorley.Util.Interpolate.Internal.
- That includes
- !1264
Add view calling to morley runtime and CLI (plus some chores)
- Add
HasCLReader ViewNameinstance - Refactor
Morley.Michelson.Runtimeinterface to reduce the number of arguments functions take in favor of records and/orNamedarguments. - Refactor
Morley.Michelson.Interpret, replacingInterpretResult/ContractReturnsystem withResultStateLogsand a hierarchy of synonyms built on top. See this commit description for more information. - As a chore, add
Defaultinstance forNamedparameters, so thatdefcan be used in place ofNamed.defaults.
- Add
1.19.0
- !1273
Add LAMBDA_REC and Lambda_rec support
- Typed instructions
AnnLAMBDAand newly introducedAnnLAMBDA_RECdo not carryVLamany more, instead they carryRemFaildirectly. - New data type
LambdaCode'introduced, with two constructors, for plain and recursive lambdas, respecively. VLamnow containsLambdaCode'instead ofRemFail.- New function
mkVLamRecfor constructing recursive lambda values introduced.
- Typed instructions
- !1278
Deprecate
OPEN_CHEST, related types and values - !1281
Use the new binaries names,
octez-clientandoctez-node - !1270
Add lima protocol TICKET instruction, rename old one to TICKET_DEPRECATED
- The
TICKETinstruction was renamed toTICKET_DEPRECATED - A new
TICKETinstruction was added which no longer allows zero amount tickets. It now returnsSome TicketandNonein case of zero amount supplied.
- The
- !1288
Fix toExpression in nested right pair combs with variable annotations
- Conversion to Micheline would lose variable annotations on nested right pair combs. This issue has been fixed.
- !1271
Deprecate
AssertTypesEqual- Use
FailUnlessEqualinstead.
- Use
- !1193
Use
nestfromText.PrettyPrint.Leijenin instructions rendering instead ofMorley.Michelson.Printer.Util.spaces - !1265
Add parser for ConstrainedAddress
parseConstrainedAddress- Better address parser error reporting
- Added
FromJSONinstance forConstrainedAddress
- !1248
Add
HasAnnotationderiving toderiveRPC- New datatype
Morley.AsRPC.DeriveRPCOptions - New helper
Morley.AsRPC.deriveRPCWithOptions deriveRPCWithStrategy,deriveManyRPC,deriveManyRPCWithStrategyare deprecated in favor ofderiveRPCWithOptionsderiveRPCnow behaves asderiveManyRPC, and additionally tries to deriveHasAnnotation. It will error out ifHasAnnotationis not in scope.
- New datatype
- !1258
Support implicit delegation in interpreter
- Reworked delegate tracking in morley interpreter.
- Added
unImplicitAddress :: ImplicitAddress -> KeyHashutility toMorley.Tezos.Address.
- !1188
Straighten out detSecretKey's behavior
- Add
Morley.Tezos.Crypto.KeyTypeenum type encoding secret/public key type. - Refactor
HashTagto useKeyType. detSecretKeynow chooses key type based on the seed, not seed length.- Add
detSecretKey'allowing to choose what key type to use.
- Add
- !1230
Fix secp256k1 signatures
- Roughly half of all secp256k1 created by Morley were rejected by network due to an implementation mismatch. This has been fixed.
- !1260
Refactor
SomeAddressOrAlias- Changed the definition of
SomeAddressOrAliasto be able to parse address/aliases of a contract, implicit account, or both. A prefix ofimplicit:orcontract:can be used to disambiguate. - Changed the parser of
AddressOrAlias kindto accept theimplicit:andcontract:prefixes. - Replaced the
morley transfer --to-implicitand--to-contractoptions with a single--tooption.
- Changed the definition of
- !1255
Simplify some machinery using instances from
some - !1138
Generalize typechecking to work with arbitrary instruction wrapper instead of
ExpandedOp.- Renames:
TcInstrHandlertoTcInstr;typeCheckOpImpltotypeCheckExpandedOp;TCErrortoTcErrorandTCTypeErrortoTcTypeError;SomeInstrtoSomeTcInstr;
- Some functions/types (
TCError,typeCheck*) now have primed (') versions that are generalized overExpandedOp. Those functions now accept the typechecker forExpandedOp.
- Renames:
- !1240
Add
MichelsonExttoMichelsonFailedto allow extensible failure. - !1206
Add
tupleFromRec - !1243
Add
run_codeemulation to MorleyMorley.Michelson.Runtimenow providesrunCodefunction, mimicing the functionality of RPCrun_codeendpoint
- !1241
Add classified typed instruction machinery
- See
Morley.Michelson.Typed.ClassifiedInstrhaddocks for more information.
- See
- !1242
Add
Constrainedutility existential- New utility module
Morley.Util.Constrainedintroduced, defining an existentialConstrained, similar toSomefromsome, but capturing additional constraints on the GADT argument ConstrainedAddressreimplemented in terms ofConstrainedMkConstrainedAddresskept as a pattern synonym, but deprecated- Types and pattern synonyms from
Morley.Michelson.Typed.Existentialreimplemented in terms ofConstrained
- New utility module
- !1245
Remove Guard from Morley.Util.Type
- See #865 for an alternative
- !1237 Track delegate registration in interpreter
- !1178
Add
HasNoNestedBigMaps tconstraint toWellTypedrequirement forContract t.- This is indirectly enforced by the network, but was missing. Useful to avoid redundant checks.
- !1228
Handle implicit default entrypoint in
mkEntrypointsMap- Add a new enum type
HandleImplicitDefaultEpto signal how to handle implicit default entrypoint. - Change
mkEntrypointsMapto acceptHandleImplicitDefaultEpas its first argument. The old behaviour corresponds to calling it withWithoutImplicitDefaultEp. - Change
flattenEntrypointsto acceptHandleImplicitDefaultEp, similar tomkEntrypointsMap.
- Add a new enum type
- !1195
Improve
Forbidconstraints to carry type equality evidence - !1222
Change the constraints on
instrCaseinMorley.Michelson.Typed.Haskell.Instr.Sumand oninstrConstruct,instrConstructStack, andinstrDeconstructinMorley.Michelson.Typed.Haskell.Instr.Product. Code using these functions in surprisingly polymorphic ways may need minor adjustments. Applications of these functions should now be faster to typecheck and also faster to run. - !1216
Add
LazyTake, a "lazier" version ofTake- Use
LazyTaketo improve type inference for various functions. - Rearrange
ConstraintDIG'andConstraintDUG'to reveal a bidirectional functional dependency. - Remove the
KnownList inpconstraint fromConstraintDig'.
- Use
- !1215
Output values associated with operations in
emulate transferetc - !1198
Add equalities to
ConstraintDIPN'to offer more fundeps.
1.18.0
- !1212
Implement
EMITand other Kathmandu changes- Update michelson primitives for the new protocol
- Add support for parsing/typechecking/serializing
EMITinstruction - Support
EMITon the emulator
- !1202
Make error messages less confusing when types are ambiguous.
- Use
FailUnlessand similar rather thanIfto reduce the prevalence of confusing type errors. - Remove
TypeErrorUnlessin favor ofFailUnless.
- Use
- !1207
Rename our custom
SingI1toSingIOneto avoid confusion withsingletons, remove its method, and reduce it to just one polymorphic instance. - !1203
Remove
Morley.Util.Type.reifyTypeEquality - !1185 Refactor typechecker monad
- !1192
Refactor aliases storage in Cleveland
- Added
Morley.Util.Bimap.Bimap - Changed the type of
GState.gsImplicitAddressAliasestoBimap ImplicitAlias Address - Changed the type of
GState.gsContractAddressAliasestoBimap ContractAlias Address
- Deleted
GSAddImplicitAddressAlias
- Added
- !1177 Distinguish implicit/contract aliases and addresses on the type level
- !1190
Remove some
SingIconstraints from someWithDeMorganScopeinstances. - !1186
Make
ITER{FAILWITH;}typecheck - !1176 Render Michelson values on multiple lines
- !1168
Support a mix of RPC and non-RPC representations in
runCode- Deleted
WellTypedIsoValue - Added
IsoValueconstraint toWellTypedToT,HasNoOpToT,HasNoBigMapToT,KnownIsoT. - Added
typeCheckValueRunCodeCompatto simulate the typechecking behavior of the tezos RPC'srun_codeendpoint. - Changed the return type of
typeCheckValuefromTypeCheckInstrtoTypeCheckResult. - Delete
runTypeCheckInstrIsolated - Restrict the type of
runTypeCheckIsolated - Delete
MaybeRPC
- Deleted
- !1137
Support a delimiting but otherwise empty escape
\&inMorley.Util.Interpolate - !1175 Use tagged decoder for Address
1.17.0
- !1173
Typechecker fixes
- Remove unused
TypeCheckPacktypechecker mode - Do not throw
errorin the typechecker - Set typecheck mode in
typeCheckValue(don't acceptSELFinside a pushedlambda) - Hotfix: Give
IsNotInViewinTypeCheckTestmode (fix morley repl confusingly complaining about views)
- Remove unused
- !1123 Remove deprecated exports
- !1161
Remove support for
AliasHint - !1169
Support MIN_BLOCK_TIME instruction
- Add
MIN_BLOCK_TIMEtyped and untyped instructions. MIN_BLOCK_TIMEaccepts any number of any annotations, introduceAnyAnntype for arbitrary annotations.- Remove unused
SomeAnnandSomeTag. - Add
ceMinBlockTimetoContractEnvandeeMinBlockTimetoExecutorEnv. - Add a corresponding CLI option.
- Add
- !1166
Support transaction rollup jakarta changes.
- Refactor address hash parsing/printing.
HashKinddatakind introduced;KeyHashandContractHashare replaced byHash (a :: HashKind),KeyHashTagreplaced byHashTag (a :: HashKind);KeyHash,KeyHashTagandContractHashcompatibility type synonyms introduced,formatKeyHash,mformatKeyHash,parseKeyHash,parseKeyHashRaw,keyHashLengthBytesare renamed toformatHash,mformatHash,parseHash,hashLengthBytes, respectively,contractHashLengthBytes,formatContractHash,parseContractHashare removed (use generichashLengthBytes,formatHashandparseHash)- Use
Hash HashContractinstead ofContractHashpattern/constructor.
- Add typechecking support for
tx_rollup_l2_addressMichelson type.TxRollupL2Addresstype introduced, isomorphic totx_rollup_l2_address.HashBLShash kind introduced;KeyHashL2convenience type synonym introduced.
- Add parsing/printing for
tz4addresses. - Add typechecking support and parsing/printing for
txr1addresses.TransactionRollupAddressdata constructor forAddressis introduced;HashKindTxRolluphash kind andTxRollupHashtype synonym introduced.
- NB: emulator support for transaction rollups is not yet implemented.
- Refactor address hash parsing/printing.
- !1167
Adjust to sapling changes in jakarta
- Update the type of the
SAPLING_VERIFY_UPDATEinstruction. - Reject contracts with the
sapling_transaction_deprecatedtype. - Support deserializing the
SAPLING_EMPTY_STATE,SAPLING_VERIFY_UPDATE,OPEN_CHESTinstructions. - Fix bug in the deserialization of the
sapling_transactiontype.
- Update the type of the
- !1158
Refactor (out) annotation checking support
- Ignore annotations in the morley typechecker
- All typed instructions have
AnnINSTRconstructor, accepting a list of annotations, and a pattern synonymINSTRthat ignores annotations. InstrWithVarAnns,InstrWithNotes,InstrWithVarNotespseudo-constructors removed.(::&+)pattern synonym removedAnnConvergeError,converge,convergeAnns,convergeDestrAnns,deriveSpecialVN,deriveSpecialFNs,deriveVN,deriveNsOr,deriveNsOption,convergeHSTEl,convergeHST,hstToTs,matchHST1,onTypeCheckInstrAnnErr,matchTypes,WithAnnpattern,orAnn,unifyAnn,unifyPairFieldAnn,convergeVarAnns,ifAnnUnified,convAnn,starNotesStkEl,matchTypesremoved.SomeAnnsandinstrAnnsutility functions to extract annotations of an instruction added.- Optimizations will now strip annotations.
- !1160 Forbid parameter prefix root annotations
- !1163
Prohibit some operations in views
- New class
IsNotInView, which is conjured into existence where appropriate. ContractCodeis now a newtype wrapper instead of type synonym; this is required to avoid accidentally pasting contract code in views.- New "smart" constructors
mkContractCodeandmkVLamwhich conjureIsNotInViewconstraint (mkLamis needed because operations forbidden in views are allowed in lambdas inside views)
- New class
- !1088
Add options to specify convenient human-readable contract names for
originate,transfercommands in Morley CLI. - !1153 Remove 'OpSize' modules.
- !1139
Various small improvements.
- Export
eqInstrExt. - Add
ConcreteMetapattern synonym.
- Export
- !1114 Update to ghc-9.0.2
- !1108 Remove support for the deprecated morley extensions
- !1148 Fix deriveRPC's call to customGeneric' so that field ordering is maintained
- !1141
Forbid transfers from empty sender on emulator
- This brings the emulator into closer correspondence with the network
- New
ExecutorErrorconstructor,EEEmptyImplicitContract.
- !1131
Make
dfsTraverseValueparameterized byDfsSettings - !1130 Fix deriveRPCWithStrategy on data with type variables
1.16.4
- !1135
Use
DeriveLiftinstead ofth-liftderiving. - !1017 Resolve some TODOs and link TODOs without issue id to the corresponding gitlab tickets.
- !1082 Fix/drop/comment noncanonical Show instances
- !1115 Add better error messages when typechecking sapling values.
1.16.3
- !1113
Remove uses of
Parser LetEnvdue to redundant constraint. - !1092
Add quasiquoter for
Notes t - !1094
Deprecate morley language extensions
- Morley language extensions now require
--deprecated-morley-extensionsflag to parse. - AST constructors corresponding to the Morley language extensions are deprecated
- Functions for parsing Michelson with Morley extensions are added and marked as deprecated:
parseContractExt,parseExpandContractExt,readAndParseContractExt,prepareContractExt.
- Morley language extensions now require
- !1100
Support
MAPinstruction over option type- Add
instance SingI1 'TOption - Add
instance MapOp ('TOption e)
- Add
- !1084 Switch to the new mutez subtraction operation
- !1107
Fix redundant
SDecide Natconstraint warning - !1099
Update utils for
Instrtype further.CtorEffectsAppis now applied to the leaves in theInstrtree.
- !1083 Add typechecking and better errors for sapling
- !965
Add fixed-size lists to Morley
- Add
Morley.Util.SizedListintroducing Peano-based fixed-size homogenous lists. - Use
SizedListforgenesisAddressN. - Use
SizedListto simplifyMorley.Util.Interpolate. - Add instance
ToBigMap (SizedList' n (k, v)) - Add
Morley.Michelson.Parser.Helpers.count, a fixed-size list version ofText.Megaparsec.count.
- Add
- !1042
Amend Morley.Util.Named
- Re-export
argandargF - Deprecate
N,M,SomeArg,NoArgpatterns due to potential for abuse (useargorargFwith view patterns instead) - Do not re-export
Namedata constructor (usefromLabelwith a type annotation/application instead)
- Re-export
- !1089
Enhance and rename mutez quasiquote
- Remove
mtzQquasiquoter - Add
tzquasiquoter; units are XTZ by default, but can be changed with a suffix; use[tz|123u|],[tz|123μ]or[tz|123 micro|]for mutez.
- Remove
- !1095 Put run, transfer and originate commands under emulate parent command
- !1072
Add
runCodeto ClevelandMorley.Michelson.Runtime:- Don't assign IDs to bigmaps that already have one.
- Allow overriding a contract's balance during a
transfer.
- Added
MaybeRPCandreplaceBigMapIds.
- !1075
Handle oddly-sized integral types with the
int-castfacilities- Redefine
Mutez,TLTimeas newtype wrappers forWord63,Word62types respectively. - Implement
toTLTimeconversion function usingfromIntegralNoOverflow. - Delegate
mkMutez,toMutez,mkTLTimeconversion functions to convenient and safefromIntegralandfromIntegralNoOverflow. - Implement safe
mtzQquasiquoter for creatingMutezvalues.
- Redefine
- !1071
Add
HasRPCReprtypeclass - !1068
Update some utils for
Instrtype.dfsInstritself got deprecated in favor of other variations of this function.CtorEffectsAppsetting indfsInstr-like functions now works differently. Instead of specifying complex combining function as the secondceaApplyEffectsfield, now you should specify how to transform the monadic action (and the field is now calledceaPostStep). Please create an issue if this change does not work for you.- Added
isMichelsonInstr. - Now exporing
analyzeInstrFailure.
- !1076 Fix escaping in haddock for Morley.Util.Interpolate
- !1025
Reduce the number of unsafe functions at the call site
- Remove the following
unsafeFNameconstructors/converters that are used as counter-parts of safe functions and replaced withunsafe . fName:unsafeMkMTextunsafeMkPosunsafeParseEpAddressunsafeMkMutezunsafeMkAnnotationunsafeMkViewNameunsafeFromMichelsonBytesunsafeParseAddressRawunsafeBuildEpNameunsafeMkSomeParamTypeunsafeParseKeyHashunsafeParseEpAddressRawunsafeMkTLTimeunsafeParseAddressunsafeParseContractHashunsafeMkChainId
- Refactor
mkPosandmkChainIdto returnEitherinstead ofMaybe.
- Remove the following
- !1063
Remove redundant
SingIconstraints - !1060
Add
Morley.AsRPCmodule for mapping types to their Tezos RPC representations - !978
Make it difficult to misuse 'Show'
- Use
Buildableandprettypreferrentially. - Add
Buildableinstances to that effect forArithError,StackSize,CtorEffectsApp,ContractBlock, - Avoid using
(+||)and(||+). - Use
Debug.showwhere we can't useprettyfor some reason.
- Use
- !1057
Fix
Show,RenderDoc,Builderinstances ofAnnotation t,AnnotationSet,Notes t,InstrAbstract op - !997
Check necessity in initial
castautomatically in Lorentz contracts - !1043 Extract actual + expected pattern into a datatype and show diff in type mismatch
- !1055
Add more optimization rules
- Rules added:
DUP 1 -> DUP,IF x x -> x,DIP n { } -> Nop,DIG n ; DUG n -> Nop. TestEqualityinstance added forMorley.Util.Peano.SingNat.Morley.Util.PeanoNaturalexports two new utility functions,eqPeanoNatandsingPeanoNat.Morley.Util.Typeexports a new utility function,knownListFromSingI
- Rules added:
- !1013
Add
WellTypedto complex scope constraints- Make
WellTypedconstraint a part of complex constraints, namelyParameterScope,StorageScope,ConstantScope,PackedValScope,UnpackedValScope.
- Make
- !987
Make parser's separators between values and instructions mandatory
- Add
spacesparser which doesn't accept zero white spaces - Change
ops', that parses sequence of operations, to accept absence of;separator after code in bracketsa; {b; c; ...} d - Add backtracking with
trytosymbol1
- Add
- !1037
Add synonyms for
SomeConstrainedValue- Reimplement
SomeConstant,SomeValue,SomeStorageviaSomeConstrainedValue.
- Reimplement
- !1035 Better type errors on invalid int casts
1.16.2
- !1045
- Add optics:
IxedandAtinstances forValue tandBigMap k v.isoValue.- prisms for
Expression. - lenses for
MichelinePrimAp.
- Add
SomeAnnotatedValueandAnnotatedValue. - Add
Liftinstance forExpression.
- Add optics:
- !1040
Add missing
FromExpressionconversionsChestandChestKeycases were missing inFromExpressionconversions.
1.16.1
- !1016
- Add support for on-chain views.
- The old
VIEWmacro for A1 (aka TZIP-4) views support was renamed toVIEW_(A1/TZIP-4).
- !1010
Add timelock puzzle support.
- Binary encoding primitives moved to
Morley.Micheline.Binary.Internaland exposed from there. - Added binary encoding primitives for nonnegative integers
buildNaturalandgetNatural. - Added timelock puzzle algorithms to
Morley.Tezos.Crypto.Timelock - Added support for
chestandchest_keytypes. Those are represented byTChestandTChestKeyin Haskell. - Added support for
OPEN_CHESTinstruction - Added
create_chestcommand to Morley CLI to create a timelocked chest from user-supplied parameters. This isn't necessarily cryptographically safe (it was neither written nor audited by security experts), and is primarily intended for testing purposes.
- Binary encoding primitives moved to
1.16.0
- !1011
Support working with delegates in the morley interpreter
SET_DELEGATEpreviously was a no-op. Now it emits an operation, which is then interpreted to set a field in the contract state.
- !989
Switch from interpolate to home-grown string interpolation module
- Adds
Morley.Util.StringInterpolationmodule tomorley. - Note this changes the syntax of slices in
mdquasiquoter. Before we could use expressions#{expression}, now we can only use variable names#{name}.
- Adds
- !909
- Add new patterns to
Morley.Util.Namedallowing to pattern-match more easily on named variables - Replaced import of
Namedpackage withMorley.Util.Named
- Add new patterns to
- !995
Allow users to save meta instructions in the typed representation.
- New typed instruction:
Meta, which takes some existential value that can be matched and tested withcast.
- New typed instruction:
- !851
- Make
sourceargument optional inreadValue,readContractand similar functions. - Rename
ImportContractErrorandImportValueErrortypes toContractReadErrorandValueReadErrorrespectively. Their constructors (starting fromICEandVCEare updated accordingly).
- Make
- !971
Fix exponential backtracking when parsing Michelson tuple values
- New helpers in "Morley.Michelson.Parser.Helpers":
sepBy1andsome', which are versions of Megaparsec'ssepBy1andsomereturning aNonEmptyinstead of[]. - Removed
mparensfrom "Morley.Michelson.Parser.Helpers": it happens to be unused now, and can be pretty dangerous. - Removed
typeWithParenfrom "Morley.Michelson.Parser.Type", since it was completely equivalent to justtype_, but its performance was slightly worse.
- New helpers in "Morley.Michelson.Parser.Helpers":
- !941
Use pretty-printer in PRINT instruction
- New
RenderDocinstance for typedValues without operations - Some places that were using
Buildable Valueinstance changed to usebuildRenderDocto preserveHasNoOpconstraint (where it makes sense, i.e. outside of otherBuildableinstances) - New
Buildableinstance for typedValues, closely mirroring the behaviour of the old one, but able to print opreations viaBuildable Operationinstance. - Use
Fmt.prettyinstead ofshowinPRINTimplementation - Use
Buildable Operationpretty-printer for Michelson failure reports (i.e. inBuildable MichelsonFailedinstance, used forFAILWITH)
- New
- !943
- Place modules below a top-level
Morleyname.
- Place modules below a top-level
- !918
- Add
pairMiscrule which handlesPAIR :# CDRandPAIR :# CARto Optimizer - Add
justDoubleDropsrule optimizingi :# DROPwherei :: a : b : s -> c : sto Optimizer - Make
optimizefunction several-staged: flatten the sequence to right-combed firstly, then apply default rules and finally performadjacentDrops - Update documentation of Optimizer
- Add
- !937
Attach source code location to interpreter error messages
- New
Buildable InstrCallStackinstance - New
ceInstrCallStack :: InstrCallStackfield inContractEnv - New
MichelsonFailureWithStacktype which is a product ofMichelsonFailedandInstrCallStack, with aBuidlableinstance - Changed interpreter error type from
MichelsonFailedtoMichelsonFailureWithStack
- New
- !945
- Bump Stackage LTS version from 17.9 to 18.10.
- !908
- Remove
NFDatainstance forRecand requirevinyl≥ 0.13.1.
- Remove
- !881
- Rename
PrintedValScopetoUntypedValScopewith related types and functions.
- Rename
1.15.1
- !908
- Remove
NFDataconstrains fromInstrconstructors
- Remove
- !879
- Add Buildable and RenderDoc instances for
Instr inp outtype. - Instances are based on transforming
Instr inp outto list ofExpandedOpand using its instance
- Add Buildable and RenderDoc instances for
- !900
- Added clarification that "OCaml reference client" is
tezos-client.
- Added clarification that "OCaml reference client" is
1.15.0
- !896
- Move
MorleyLogsin interpreter monad to a dedicatedWriterTlayer.
- Move
- !878
- Fixed behavior of
packValueto match thetezos-client hash databehavior. - Pair conversion in
instance ToExpression Untyped.Valuealways producesExpressionPriminsteadExpressionSeq. Optimization of right-combed pairs moved toMichelson.Typed.Convertand depends onUntypingOptions.
- Fixed behavior of
- !880
- Fixed loss of type annotations in serialization of right-combed pairs.
- !795
- Changed typecheck exception messages.
- Changed Buildable instances for several datatypes to be based on RenderDoc instances.
- Changed the regexp in scripts/regenerate-gold-files-for-verbose-typechecking.sh so it does not ommit extra space in .gold files on MacOS.
- !863
- Removed conversion from variable anotations to field anontations in
PAIRNinstruction.
- Removed conversion from variable anotations to field anontations in
- !856
- Removed
Typeableconstrains from singletons generated byT. - Added the
Util.Singmodule with functions that allow equality comparison usingSDecide.
- Removed
- !858
- Added
SomeStoragetype. - Modified
runContractto returnSomeStorage.
- Added
- !833
- Fixed
ContainsBigMapandContainsNestedBigMapsinstances forTContract. - Added
Datainstance toBigMapandBigMapId. - Added
requireEqT,castMandgcastMtoUtil.Typeable.
- Fixed
- !859
- Added
BigMapIdtype. - Added ID to
VBigMapandBigMap. - Updated interpreter to assign a unique big_map ID to each big_map, and
keep track of how many big_maps have been created with a
BigMapCounter. - Deleted
dfsValue. - Renamed
dfsModifyValueanddfsFoldValuetodfsMapValueanddfsFoldMapValue. - Added
dfsTraverseValueanddfsFoldMapValueM.
- Added
- !840
- Changed behaviour of deserializer: it fails if the expression contains more annotations than expected instead of ignoring them.
- Changed behaviour of serializer: it uses list notation for all pair values, not just for right-combed ones.
- !816
- Removed the
SingIandKnownPeanoconstraints by introducting thePeanoNaturaldata type. - The similar updates for
SingT. Removed theSingIconstraints in the constructors ofSingT
- Removed the
- !855
- Fix custom error arguments comparison in nettest by converting them
to
Value tbefore checking for equality.
- Fix custom error arguments comparison in nettest by converting them
to
- !830
- Added the contract's address to some of the
ExecutorError'constructors:EEIllTypedParameterandEEUnexpectedParameterType.
- Added the contract's address to some of the
- !820
- Moved functions for contract importing (like
importContract) from cleveland. - Added functions for values importing (
readValue,importValueand others).
- Moved functions for contract importing (like
- !832
- Add tickets feature.
- Add dupable restriction to
DUP-like instructions.
- !838
- All unsafe functions and data constructors now contain "unsafe" word
at prefix position. E.g
UnsafeUParam,unsafeParseKeyHash.
- All unsafe functions and data constructors now contain "unsafe" word
at prefix position. E.g
- !828
- Fix bug in serialization of instructions with variable annotations:
EMPTY_SET,EMPTY_MAP,PUSH,LAMBDA,CAST,CONTRACT.
- Fix bug in serialization of instructions with variable annotations:
- !770
- Added
Fnmeta-instruction to support Morley's typed stack function in typed form. - Added
STACKTYPEas a typedExtInstr.
- Added
- !822
- Add new
edoinstruction:UNPAIR. - Rename
UNPAIRmacro toUNPAPAIR. - Expand
UNPAPAIRmacros toUNPAIRinstructions. - The
Seqconstructor can now be used as a right-associative operator. - Optimize
DUP; CAR; DIP { CDR }toUNPAIR - Optimize
DUP; CDR; DIP { CAR }toUNPAIR; SWAP
- Add new
- !825
- Fix bug in morley executable's
replcommand: consume the entire input when parsing an instruction. - Fix bug in the handling of special annotations for
CAR/CDR. - Fix bug in parsing of
PAIRinstructions with exactly 1 field ann. - Preserve
CAR/CDR's original annotations when converting them back to michelson/binary/json.
- Fix bug in morley executable's
1.14.0
- !799
- Fix product type instances of 1-nary constructors and empty types (they could produce compilation error before).
- !814
- Renamed
TypefromMichelson.Untyped.TypewithTy. - Added the usage of
Prelude.Typeinstead ofData.Kind.Type, as a resultKind.Typewas replaced with justType.
- Renamed
- !733
- Added special annotations handling for
LEFTandRIGHTinstructions.
- Added special annotations handling for
- !787
- Added support for
CAR kandCDR kmacros.
- Added support for
- !747
- Fix
ligoLayoutnot working for alphabetically unordered sum types.
- Fix
- !798
- Added helper functions for recent Peano utility types.
- !815
- Added
IsListandBuildableinstances toBigMap.
- Added
1.13.0
- !796
- Generalized
InstrWithNotesto handle instructions that put more than one value at the top of the stack. - Added support for
GET_AND_UPDATEinstructions.
- Generalized
- !774
- Added support for
BLS12-381crypto primitives.
- Added support for
- !776
- Added support for
DUP ninstruction.
- Added support for
- !755
Restricted
FAILWITHonly to packable values, exceptCONTRACTs - !781
- Replaced mixins and dependency on
basewithbase-noprelude. - Added doctest examples and enabled
doctesttests inmorley:lib.
- Replaced mixins and dependency on
- !764
- Added support for
nevertype.
- Added support for
- !750
!769
!786
!791
- Added support for
PAIR n,UNPAIR n,GET nandUPDATE ninstructions.
- Added support for
- !778
- Added support for
VOTING_POWERandTOTAL_VOTING_POWERinstructions.
- Added support for
- !767
Made
unit,key,signature,chain_id,option,ortypes comparable in preparation foredoswitch.
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