Changelog for morley-1.19.2
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 OptimizationStage
instance.
- More utilities for writing rules are now exported from
- !1352
Clean-up Buildable ExecutorOp implementation
- Add
Buildable
instances forOriginationOperation
,TransferOperation
,SetDelegateOperation
,EmitOperation
; - Rewrite
Buildable ExecutorOp
to delegate to these new instances.
- Add
- !1357
Better tests for
PACK
- Fix an issue when untyping
CREATE_CONTRACT
instruction -- morley would always useReadable
representation for its contents; - Fix an issue in typechecking
CREATE_CONTRACT
instruction -- morleySELF
insideCREATE_CONTRACT
inside lambdas was rejected.
- Fix an issue when untyping
- !1349
Improve morley compilation time
Forbid*
constraints are no longer carried as superclasses ofComparable
. Match oncomparableImplies
to bring those into scope. In case of impossible patterns, emptycase
withcheckComparability
should 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
FromExp
instances to make pattern-matches (more) total and reduce redundancy - Make
FromExp
exceptions more structured - Other minor refactoring
- !1342
Replace fmt with prettyprinter
- Introduce overlappable
Buildable
instance for anythingRenderDoc
to avoid proliferation of trivial instances - Deprecate
buildRenderDoc
andbuildRenderDocExtended
- Replace unnecessary
RenderDoc
instances withBuildable
(this refers to various error types) printDoc
,printDocB
,printDocS
deprecated in favor ofprintRenderDoc
- Redundant
forceSingleLine
parameter torenderType
removed - Obsolete
Prettier
newtype deprecated - Improve
NotWellTyped
error 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
UnsafeViewsSet
toViewsSet
, 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 code
would be deoptimized intoDIP (n - 1) { SWAP; code }
- While at it,
DUP; DUG (m + 1); DROP
is 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 DROP
are rejected (as per reference), butDIP FAIL
are allowed (asFAIL
is 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*Presence
functions intocheckTPresence
- Unified all
*Absense
(sic) andcheck*Presence
intotAbsence
andtPresence
- Unified all
Contains*
type families, plusIsComparable
intoContainsT
- All now-redundant synonyms are deprecated
- Deprecate
HasNo*
andProper*BetterErrors
in favor ofForbid*
and*Scope
respectively. - Simplify
WithDeMorganScope
- Avoid unnecessary singleton traversals using
checkTPresence
, remove where possible, use de Morgan laws otherwise. - Improve
Forbid*
error messages - Improve
*Scope
error 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
prettyprinter
fromwl-pprint-text
- Introduced
Morley.Michelson.Printer.Compat
as a thin compatibility layer
- Switched to
- !1336
Improve non-recursive
deriveRPC
errors- Print human-readable error messages when required
HasRPCRepr
instances are missing in non-recursive mode (i.e.droRecursive=False
)
- Print human-readable error messages when required
- !1340
Remove deprecated types and functions
haskellRepStripFieldPrefix
Morley.Michelson.Typed.Contract.mapEntriesOrdered
Morley.Michelson.Untyped.Contract.mapContractCode
linearizeRightCombValuePair
expandList
(|-)
MockableConstraint
andunsafeProvideConstraint
failUnlessEvi
failWhenEvi
ConcatListOfTypesAssociativity
andlistOfTypesConcatAssociativityAxiom
1.19.1
- !1325
Add
AND
,NOT
,OR
,XOR
,LSL
andLSR
operations support onbytes
- !1326
Add support for bytes to nat and int conversions
- Support
NAT
andBYTES
instructions, and the new operands toINT
instruction.
- Support
- !1331
Support implicit account tickets
- New
emulate transfer-ticket
CLI command - Add
CheckScope
instance for constraint pairs
- New
- !1330
Support ticket balance queries in morley-client and Cleveland.
- Add
HasCLReader
instance forTy
.
- Add
- !1328
Kill support for TORUs, minimal sr1 address support, tz4 address support
txr1
addresses andtx_rollup_l2_address
are no longer parsable;sr1
addresses can be parsed and typechecked, but sending transfers tosr1
is not yet supported in the Morley runtime;- Full support for
tz4
addresses.
- !1322
Various optimizer improvements
- Reapply optimizer stages until fixpoint (up to a configurable maximum of iterations);
- Rework optimizer ruleset architecture;
- Drop
Meta
andWithLoc
during optimization; - Apply
dipDrop2swapDrop
in a separate stage; - More complete optimization for
DROPN
,PAIRN
,UNPAIRN
,DIPN
and nestedDIP
s; - Optimize
DIG 1
andDUG 1
toSWAP
; - Optimize
NOT; IF a b
toIF b a
; - The last one requires carrying
SingI
constraint 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
, andexpandList
are deprecated
- !1313
Generalize
ceContracts
to a function- Allows performing arbitrary actions to fetch contracts
ContractEnv
is now parametrized by the interpreter monad- As a side effect, interpreter monad needs to be a newtype now
- !1315
Slightly generalize
L1AddressKind
type 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
metaWrapper
toContractEnv
which build a wrapper attachingMeta
andWithLoc
along the way. This wrapper the is used when it meets loop instruction. - !1305
Add a recommendation to morley's
README.md
for the user to include theextra-deps
if 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 -> Text
modifying field names. - Require
TypeHasFieldNamingStrategy
constraint in the default implementation oftypeDocHaskellRep
. Apply the strategy as appropriate. - See also the corresponding
lorentz
changelog.
- Move all casing manipulation to
- !1280
Export everything from internal modules
- That includes
Morley.Micheline.Binary.Internal
andMorley.Util.Interpolate.Internal
.
- That includes
- !1264
Add view calling to morley runtime and CLI (plus some chores)
- Add
HasCLReader ViewName
instance - Refactor
Morley.Michelson.Runtime
interface to reduce the number of arguments functions take in favor of records and/orNamed
arguments. - Refactor
Morley.Michelson.Interpret
, replacingInterpretResult
/ContractReturn
system withResultStateLogs
and a hierarchy of synonyms built on top. See this commit description for more information. - As a chore, add
Default
instance forNamed
parameters, so thatdef
can be used in place ofNamed.defaults
.
- Add
1.19.0
- !1273
Add LAMBDA_REC and Lambda_rec support
- Typed instructions
AnnLAMBDA
and newly introducedAnnLAMBDA_REC
do not carryVLam
any more, instead they carryRemFail
directly. - New data type
LambdaCode'
introduced, with two constructors, for plain and recursive lambdas, respecively. VLam
now containsLambdaCode'
instead ofRemFail
.- New function
mkVLamRec
for constructing recursive lambda values introduced.
- Typed instructions
- !1278
Deprecate
OPEN_CHEST
, related types and values - !1281
Use the new binaries names,
octez-client
andoctez-node
- !1270
Add lima protocol TICKET instruction, rename old one to TICKET_DEPRECATED
- The
TICKET
instruction was renamed toTICKET_DEPRECATED
- A new
TICKET
instruction was added which no longer allows zero amount tickets. It now returnsSome Ticket
andNone
in 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
FailUnlessEqual
instead.
- Use
- !1193
Use
nest
fromText.PrettyPrint.Leijen
in instructions rendering instead ofMorley.Michelson.Printer.Util.spaces
- !1265
Add parser for ConstrainedAddress
parseConstrainedAddress
- Better address parser error reporting
- Added
FromJSON
instance forConstrainedAddress
- !1248
Add
HasAnnotation
deriving toderiveRPC
- New datatype
Morley.AsRPC.DeriveRPCOptions
- New helper
Morley.AsRPC.deriveRPCWithOptions
deriveRPCWithStrategy
,deriveManyRPC
,deriveManyRPCWithStrategy
are deprecated in favor ofderiveRPCWithOptions
deriveRPC
now behaves asderiveManyRPC
, and additionally tries to deriveHasAnnotation
. It will error out ifHasAnnotation
is not in scope.
- New datatype
- !1258
Support implicit delegation in interpreter
- Reworked delegate tracking in morley interpreter.
- Added
unImplicitAddress :: ImplicitAddress -> KeyHash
utility toMorley.Tezos.Address
.
- !1188
Straighten out detSecretKey's behavior
- Add
Morley.Tezos.Crypto.KeyType
enum type encoding secret/public key type. - Refactor
HashTag
to useKeyType
. detSecretKey
now 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
SomeAddressOrAlias
to 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 kind
to accept theimplicit:
andcontract:
prefixes. - Replaced the
morley transfer --to-implicit
and--to-contract
options with a single--to
option.
- 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:
TcInstrHandler
toTcInstr
;typeCheckOpImpl
totypeCheckExpandedOp
;TCError
toTcError
andTCTypeError
toTcTypeError
;SomeInstr
toSomeTcInstr
;
- Some functions/types (
TCError
,typeCheck*
) now have primed ('
) versions that are generalized overExpandedOp
. Those functions now accept the typechecker forExpandedOp
.
- Renames:
- !1240
Add
MichelsonExt
toMichelsonFailed
to allow extensible failure. - !1206
Add
tupleFromRec
- !1243
Add
run_code
emulation to MorleyMorley.Michelson.Runtime
now providesrunCode
function, mimicing the functionality of RPCrun_code
endpoint
- !1241
Add classified typed instruction machinery
- See
Morley.Michelson.Typed.ClassifiedInstr
haddocks for more information.
- See
- !1242
Add
Constrained
utility existential- New utility module
Morley.Util.Constrained
introduced, defining an existentialConstrained
, similar toSome
fromsome
, but capturing additional constraints on the GADT argument ConstrainedAddress
reimplemented in terms ofConstrained
MkConstrainedAddress
kept as a pattern synonym, but deprecated- Types and pattern synonyms from
Morley.Michelson.Typed.Existential
reimplemented 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 t
constraint toWellTyped
requirement 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
HandleImplicitDefaultEp
to signal how to handle implicit default entrypoint. - Change
mkEntrypointsMap
to acceptHandleImplicitDefaultEp
as its first argument. The old behaviour corresponds to calling it withWithoutImplicitDefaultEp
. - Change
flattenEntrypoints
to acceptHandleImplicitDefaultEp
, similar tomkEntrypointsMap
.
- Add a new enum type
- !1195
Improve
Forbid
constraints to carry type equality evidence - !1222
Change the constraints on
instrCase
inMorley.Michelson.Typed.Haskell.Instr.Sum
and oninstrConstruct
,instrConstructStack
, andinstrDeconstruct
inMorley.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
LazyTake
to improve type inference for various functions. - Rearrange
ConstraintDIG'
andConstraintDUG'
to reveal a bidirectional functional dependency. - Remove the
KnownList inp
constraint fromConstraintDig'
.
- Use
- !1215
Output values associated with operations in
emulate transfer
etc - !1198
Add equalities to
ConstraintDIPN'
to offer more fundeps.
1.18.0
- !1212
Implement
EMIT
and other Kathmandu changes- Update michelson primitives for the new protocol
- Add support for parsing/typechecking/serializing
EMIT
instruction - Support
EMIT
on the emulator
- !1202
Make error messages less confusing when types are ambiguous.
- Use
FailUnless
and similar rather thanIf
to reduce the prevalence of confusing type errors. - Remove
TypeErrorUnless
in favor ofFailUnless
.
- Use
- !1207
Rename our custom
SingI1
toSingIOne
to 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.gsImplicitAddressAliases
toBimap ImplicitAlias Address
- Changed the type of
GState.gsContractAddressAliases
toBimap ContractAlias Address
- Deleted
GSAddImplicitAddressAlias
- Added
- !1177 Distinguish implicit/contract aliases and addresses on the type level
- !1190
Remove some
SingI
constraints from someWithDeMorganScope
instances. - !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
IsoValue
constraint toWellTypedToT
,HasNoOpToT
,HasNoBigMapToT
,KnownIsoT
. - Added
typeCheckValueRunCodeCompat
to simulate the typechecking behavior of the tezos RPC'srun_code
endpoint. - Changed the return type of
typeCheckValue
fromTypeCheckInstr
toTypeCheckResult
. - 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
TypeCheckPack
typechecker mode - Do not throw
error
in the typechecker - Set typecheck mode in
typeCheckValue
(don't acceptSELF
inside a pushedlambda
) - Hotfix: Give
IsNotInView
inTypeCheckTest
mode (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_TIME
typed and untyped instructions. MIN_BLOCK_TIME
accepts any number of any annotations, introduceAnyAnn
type for arbitrary annotations.- Remove unused
SomeAnn
andSomeTag
. - Add
ceMinBlockTime
toContractEnv
andeeMinBlockTime
toExecutorEnv
. - Add a corresponding CLI option.
- Add
- !1166
Support transaction rollup jakarta changes.
- Refactor address hash parsing/printing.
HashKind
datakind introduced;KeyHash
andContractHash
are replaced byHash (a :: HashKind)
,KeyHashTag
replaced byHashTag (a :: HashKind)
;KeyHash
,KeyHashTag
andContractHash
compatibility type synonyms introduced,formatKeyHash
,mformatKeyHash
,parseKeyHash
,parseKeyHashRaw
,keyHashLengthBytes
are renamed toformatHash
,mformatHash
,parseHash
,hashLengthBytes
, respectively,contractHashLengthBytes
,formatContractHash
,parseContractHash
are removed (use generichashLengthBytes
,formatHash
andparseHash
)- Use
Hash HashContract
instead ofContractHash
pattern/constructor.
- Add typechecking support for
tx_rollup_l2_address
Michelson type.TxRollupL2Address
type introduced, isomorphic totx_rollup_l2_address
.HashBLS
hash kind introduced;KeyHashL2
convenience type synonym introduced.
- Add parsing/printing for
tz4
addresses. - Add typechecking support and parsing/printing for
txr1
addresses.TransactionRollupAddress
data constructor forAddress
is introduced;HashKindTxRollup
hash kind andTxRollupHash
type 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_UPDATE
instruction. - Reject contracts with the
sapling_transaction_deprecated
type. - Support deserializing the
SAPLING_EMPTY_STATE
,SAPLING_VERIFY_UPDATE
,OPEN_CHEST
instructions. - Fix bug in the deserialization of the
sapling_transaction
type.
- Update the type of the
- !1158
Refactor (out) annotation checking support
- Ignore annotations in the morley typechecker
- All typed instructions have
AnnINSTR
constructor, accepting a list of annotations, and a pattern synonymINSTR
that ignores annotations. InstrWithVarAnns
,InstrWithNotes
,InstrWithVarNotes
pseudo-constructors removed.(::&+)
pattern synonym removedAnnConvergeError
,converge
,convergeAnns
,convergeDestrAnns
,deriveSpecialVN
,deriveSpecialFNs
,deriveVN
,deriveNsOr
,deriveNsOption
,convergeHSTEl
,convergeHST
,hstToTs
,matchHST1
,onTypeCheckInstrAnnErr
,matchTypes
,WithAnn
pattern,orAnn
,unifyAnn
,unifyPairFieldAnn
,convergeVarAnns
,ifAnnUnified
,convAnn
,starNotesStkEl
,matchTypes
removed.SomeAnns
andinstrAnns
utility 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. ContractCode
is now a newtype wrapper instead of type synonym; this is required to avoid accidentally pasting contract code in views.- New "smart" constructors
mkContractCode
andmkVLam
which conjureIsNotInView
constraint (mkLam
is 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
,transfer
commands in Morley CLI. - !1153 Remove 'OpSize' modules.
- !1139
Various small improvements.
- Export
eqInstrExt
. - Add
ConcreteMeta
pattern 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
ExecutorError
constructor,EEEmptyImplicitContract
.
- !1131
Make
dfsTraverseValue
parameterized byDfsSettings
- !1130 Fix deriveRPCWithStrategy on data with type variables
1.16.4
- !1135
Use
DeriveLift
instead ofth-lift
deriving. - !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 LetEnv
due to redundant constraint. - !1092
Add quasiquoter for
Notes t
- !1094
Deprecate morley language extensions
- Morley language extensions now require
--deprecated-morley-extensions
flag 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
MAP
instruction 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 Nat
constraint warning - !1099
Update utils for
Instr
type further.CtorEffectsApp
is now applied to the leaves in theInstr
tree.
- !1083 Add typechecking and better errors for sapling
- !965
Add fixed-size lists to Morley
- Add
Morley.Util.SizedList
introducing Peano-based fixed-size homogenous lists. - Use
SizedList
forgenesisAddressN
. - Use
SizedList
to 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
arg
andargF
- Deprecate
N
,M
,SomeArg
,NoArg
patterns due to potential for abuse (usearg
orargF
with view patterns instead) - Do not re-export
Name
data constructor (usefromLabel
with a type annotation/application instead)
- Re-export
- !1089
Enhance and rename mutez quasiquote
- Remove
mtzQ
quasiquoter - Add
tz
quasiquoter; 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
runCode
to ClevelandMorley.Michelson.Runtime
:- Don't assign IDs to bigmaps that already have one.
- Allow overriding a contract's balance during a
transfer
.
- Added
MaybeRPC
andreplaceBigMapIds
.
- !1075
Handle oddly-sized integral types with the
int-cast
facilities- Redefine
Mutez
,TLTime
as newtype wrappers forWord63
,Word62
types respectively. - Implement
toTLTime
conversion function usingfromIntegralNoOverflow
. - Delegate
mkMutez
,toMutez
,mkTLTime
conversion functions to convenient and safefromIntegral
andfromIntegralNoOverflow
. - Implement safe
mtzQ
quasiquoter for creatingMutez
values.
- Redefine
- !1071
Add
HasRPCRepr
typeclass - !1068
Update some utils for
Instr
type.dfsInstr
itself got deprecated in favor of other variations of this function.CtorEffectsApp
setting indfsInstr
-like functions now works differently. Instead of specifying complex combining function as the secondceaApplyEffects
field, 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
unsafeFName
constructors/converters that are used as counter-parts of safe functions and replaced withunsafe . fName
:unsafeMkMText
unsafeMkPos
unsafeParseEpAddress
unsafeMkMutez
unsafeMkAnnotation
unsafeMkViewName
unsafeFromMichelsonBytes
unsafeParseAddressRaw
unsafeBuildEpName
unsafeMkSomeParamType
unsafeParseKeyHash
unsafeParseEpAddressRaw
unsafeMkTLTime
unsafeParseAddress
unsafeParseContractHash
unsafeMkChainId
- Refactor
mkPos
andmkChainId
to returnEither
instead ofMaybe
.
- Remove the following
- !1063
Remove redundant
SingI
constraints - !1060
Add
Morley.AsRPC
module for mapping types to their Tezos RPC representations - !978
Make it difficult to misuse 'Show'
- Use
Buildable
andpretty
preferrentially. - Add
Buildable
instances to that effect forArithError
,StackSize
,CtorEffectsApp
,ContractBlock
, - Avoid using
(+||)
and(||+)
. - Use
Debug.show
where we can't usepretty
for some reason.
- Use
- !1057
Fix
Show
,RenderDoc
,Builder
instances ofAnnotation t
,AnnotationSet
,Notes t
,InstrAbstract op
- !997
Check necessity in initial
cast
automatically 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
. TestEquality
instance added forMorley.Util.Peano.SingNat
.Morley.Util.PeanoNatural
exports two new utility functions,eqPeanoNat
andsingPeanoNat
.Morley.Util.Type
exports a new utility function,knownListFromSingI
- Rules added:
- !1013
Add
WellTyped
to complex scope constraints- Make
WellTyped
constraint a part of complex constraints, namelyParameterScope
,StorageScope
,ConstantScope
,PackedValScope
,UnpackedValScope
.
- Make
- !987
Make parser's separators between values and instructions mandatory
- Add
spaces
parser 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
try
tosymbol1
- Add
- !1037
Add synonyms for
SomeConstrainedValue
- Reimplement
SomeConstant
,SomeValue
,SomeStorage
viaSomeConstrainedValue
.
- Reimplement
- !1035 Better type errors on invalid int casts
1.16.2
- !1045
- Add optics:
Ixed
andAt
instances forValue t
andBigMap k v
.isoValue
.- prisms for
Expression
. - lenses for
MichelinePrimAp
.
- Add
SomeAnnotatedValue
andAnnotatedValue
. - Add
Lift
instance forExpression
.
- Add optics:
- !1040
Add missing
FromExpression
conversionsChest
andChestKey
cases were missing inFromExpression
conversions.
1.16.1
- !1016
- Add support for on-chain views.
- The old
VIEW
macro 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.Internal
and exposed from there. - Added binary encoding primitives for nonnegative integers
buildNatural
andgetNatural
. - Added timelock puzzle algorithms to
Morley.Tezos.Crypto.Timelock
- Added support for
chest
andchest_key
types. Those are represented byTChest
andTChestKey
in Haskell. - Added support for
OPEN_CHEST
instruction - Added
create_chest
command 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_DELEGATE
previously 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.StringInterpolation
module tomorley
. - Note this changes the syntax of slices in
md
quasiquoter. Before we could use expressions#{expression}
, now we can only use variable names#{name}
.
- Adds
- !909
- Add new patterns to
Morley.Util.Named
allowing to pattern-match more easily on named variables - Replaced import of
Named
package 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
source
argument optional inreadValue
,readContract
and similar functions. - Rename
ImportContractError
andImportValueError
types toContractReadError
andValueReadError
respectively. Their constructors (starting fromICE
andVCE
are updated accordingly).
- Make
- !971
Fix exponential backtracking when parsing Michelson tuple values
- New helpers in "Morley.Michelson.Parser.Helpers":
sepBy1
andsome'
, which are versions of Megaparsec'ssepBy1
andsome
returning aNonEmpty
instead of[]
. - Removed
mparens
from "Morley.Michelson.Parser.Helpers": it happens to be unused now, and can be pretty dangerous. - Removed
typeWithParen
from "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
RenderDoc
instance for typedValue
s without operations - Some places that were using
Buildable Value
instance changed to usebuildRenderDoc
to preserveHasNoOp
constraint (where it makes sense, i.e. outside of otherBuildable
instances) - New
Buildable
instance for typedValue
s, closely mirroring the behaviour of the old one, but able to print opreations viaBuildable Operation
instance. - Use
Fmt.pretty
instead ofshow
inPRINT
implementation - Use
Buildable Operation
pretty-printer for Michelson failure reports (i.e. inBuildable MichelsonFailed
instance, used forFAILWITH
)
- New
- !943
- Place modules below a top-level
Morley
name.
- Place modules below a top-level
- !918
- Add
pairMisc
rule which handlesPAIR :# CDR
andPAIR :# CAR
to Optimizer - Add
justDoubleDrops
rule optimizingi :# DROP
wherei :: a : b : s -> c : s
to Optimizer - Make
optimize
function 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 InstrCallStack
instance - New
ceInstrCallStack :: InstrCallStack
field inContractEnv
- New
MichelsonFailureWithStack
type which is a product ofMichelsonFailed
andInstrCallStack
, with aBuidlable
instance - Changed interpreter error type from
MichelsonFailed
toMichelsonFailureWithStack
- New
- !945
- Bump Stackage LTS version from 17.9 to 18.10.
- !908
- Remove
NFData
instance forRec
and requirevinyl
≥ 0.13.1.
- Remove
- !881
- Rename
PrintedValScope
toUntypedValScope
with related types and functions.
- Rename
1.15.1
- !908
- Remove
NFData
constrains fromInstr
constructors
- Remove
- !879
- Add Buildable and RenderDoc instances for
Instr inp out
type. - Instances are based on transforming
Instr inp out
to list ofExpandedOp
and 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
MorleyLogs
in interpreter monad to a dedicatedWriterT
layer.
- Move
- !878
- Fixed behavior of
packValue
to match thetezos-client hash data
behavior. - Pair conversion in
instance ToExpression Untyped.Value
always producesExpressionPrim
insteadExpressionSeq
. Optimization of right-combed pairs moved toMichelson.Typed.Convert
and 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
PAIRN
instruction.
- Removed conversion from variable anotations to field anontations in
- !856
- Removed
Typeable
constrains from singletons generated byT
. - Added the
Util.Sing
module with functions that allow equality comparison usingSDecide
.
- Removed
- !858
- Added
SomeStorage
type. - Modified
runContract
to returnSomeStorage
.
- Added
- !833
- Fixed
ContainsBigMap
andContainsNestedBigMaps
instances forTContract
. - Added
Data
instance toBigMap
andBigMapId
. - Added
requireEqT
,castM
andgcastM
toUtil.Typeable
.
- Fixed
- !859
- Added
BigMapId
type. - Added ID to
VBigMap
andBigMap
. - 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
dfsModifyValue
anddfsFoldValue
todfsMapValue
anddfsFoldMapValue
. - Added
dfsTraverseValue
anddfsFoldMapValueM
.
- 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
SingI
andKnownPeano
constraints by introducting thePeanoNatural
data type. - The similar updates for
SingT
. Removed theSingI
constraints in the constructors ofSingT
- Removed the
- !855
- Fix custom error arguments comparison in nettest by converting them
to
Value t
before 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:EEIllTypedParameter
andEEUnexpectedParameterType
.
- 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
,importValue
and 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
Fn
meta-instruction to support Morley's typed stack function in typed form. - Added
STACKTYPE
as a typedExtInstr
.
- Added
- !822
- Add new
edo
instruction:UNPAIR
. - Rename
UNPAIR
macro toUNPAPAIR
. - Expand
UNPAPAIR
macros toUNPAIR
instructions. - The
Seq
constructor 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
repl
command: consume the entire input when parsing an instruction. - Fix bug in the handling of special annotations for
CAR
/CDR
. - Fix bug in parsing of
PAIR
instructions 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
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