Changelog for lorentz-0.15.1
0.15.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
- Allow tickets as parameter to
ImplicitAddress
inToTAddress
;
- Allow tickets as parameter to
- !1328
Kill support for TORUs, minimal sr1 address support, tz4 address support
- Module
Lorentz.Txr1Call
removed.
- Module
- !1314 Preserve docs after failWith
- !1289
Simplify/fix ReferencedByName
dupL
anddupLNamed
could under some specific circumstances crash at runtime due to not-always-valid unsafe coercions. The unsafe coercions have been removed.
- !1235
Make it easier to have consistent field naming between HasAnnotation and
TypeHasDoc
- Require newly introduced
TypeHasFieldNamingStrategy
constraint in the default implementationannOptions
. Apply the strategy as appropriate. - Add an optional field to
typeDoc
which allows specifying the strategy. - See also the corresponding
morley
changelog.
- Require newly introduced
0.15.0
- !1273
Add LAMBDA_REC and Lambda_rec support
framed
instruction moved toLorentz.Instr.Framed
(re-exported fromLorentz.Instr
).IsoValue
andHasAnnotation
instances for(:->)
are replaced with type-errored ones, as Lorentz code is no longer isomorphic to lambdas.TypeHasDoc
instance for(:->)
removed.WrappedLambda
is now a sum datatype.unWrappedLambda
removed, as recursive lambdas can't be unwrapped like that.- All lambda-related instances moved to
Lorentz.Lambda
. lambdaRec
instruction introduced.mkLambdaRec
helper for constructing recursive lambda values introduced.
- !1278 Deprecate timelock-related functions
- !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
- !1267 Added Lorentz.ADT doctests examples / tests
- !1271
Miscellaneous chores
- Add Buildable instances for
ZippedStackRepr
andZSNil
. - Export
DupT
andDipT
classes fromLorentz.Referenced
.
- Add Buildable instances for
- !1252 Better errors on stuck GetEntrypointArgCustom
- !1233 Rename Lorentz.Rebinded to Lorentz.Rebound
- !1242
Use
Constrained
utility existential - !1180 Implement lmap for more types, and change signature of the typeclass to be more pure.
- !1178
Add
HasNoNestedBigMaps t
constraint where required.- These constraint were missing on TZIP-16 views, but effectively it is
required by the network for callbacks. This is a consequence of adding this
constraint to
Contract t
in Morley.
- These constraint were missing on TZIP-16 views, but effectively it is
required by the network for callbacks. This is a consequence of adding this
constraint to
- !1222
Change the constraints on
constructStack
anddeconstruct
inLorentz.ADT
, and ondocumentEntrypoints
inLorentz.Entrypoints.Doc
. Code using them in surprisingly polymorphic ways may need minor adjustments. Applications of these functions should now be faster to typecheck and also faster to run. - !1216
Remove
KnownList
constraints fromeuclidExtendedNormalization
andreduceRationalHelper
inLorentz.CustomArith.RationalArith
. - !1198
Implement
dipT
usingdipN
for performance. This change also allowsdipT
to be used without an explicit type argument when enough is known about the passed stack action. Do the same fordupT
, usingdupN
.
0.14.1
- !1214 Add emit instructions
- !1202 Make type errors less confusing when types are ambiguous
- !1177 Distinguish implicit/contract aliases and addresses on the type level
- !1136
Add
idiv
andimod
macros to Lorentz. - !1181
Add a few missing instances
CanCastTo
instances forZippedStackRepr
andWrappedLambda
,Generic
andMapLorentzInstr
instances forWrappedLambda
,HasAnnotation
instances forZippedStackRepr
.
0.14.0
- !1123 Remove deprecated exports
- !1169
Support MIN_BLOCK_TIME instruction
- Add the corresponding Lorentz
minBlockTime
instruction.
- Add the corresponding Lorentz
- !1158
Refactor (out) annotation checking support
iWithVarAnnotations
removed.- Initial cast in lorentz contracts is redundant since annotations are ignored, hence it is removed.
- Hence,
coDisableInitialCast
andcoDisableInitialCastL
are removed.
- !1163
Prohibit some operations in views
ContractCode
is now a newtype wrapper instead of type synonym; this is required to avoid accidentally pasting contract code in views.- Lorentz lambdas are now newtype-wrapped with
WrappedLambda
, for the same reason. Lambda
is a type synonym forWrappedLambda
with singleton input and output stacks.- The old
Lambda
synonym (which was a sequence of instructions with singleton i/o stacks) is renamed toFn
. - New "smart" constructors,
mkContractCode
andmkLambda
, which conjure the required constraints.
- !1153 Remove 'OpSize' module.
- !1114 Update to ghc-9.0.2
- !1108 Remove support for the deprecated morley extensions
- !1007
Add
Rational
datatype in Lorentz and arithmetic operations with it- Move all custom arithmetics in Lorentz the a separate module
- !1146
Optimize
lmap
forMaybe
. - !1111
Add
errorDocArg
, deprecateerrorDoc
- Added
errorDocArg
, a quasi-quoter replacingerrorDoc
. The main difference iserrorDocArg
allows optionally specifying the error argument type. - Since
errorDocArg
subsumeserrorDoc
, the latter is deprecated.
- Added
0.13.4
- !1078
Option to flatten EpdRecursive entrypoints in autodoc
- New entrypoint kind
FlattenedEntrypointsKindHiding
, which flattens entrypoints in autodoc and allows hiding specific constructors. For other intents it's the same asPlainEntrypointsKind
. - Convenience synonym
FlattenedEntrypointsKind
for cases where no hiding is necessary. - New convenience functions
entryCaseFlattened
andentryCaseFlattenedHiding
. - Deprecate redundant
constructDEpArg
, usemkDEntrypointArgSimple
instead.
- New entrypoint kind
- !1104
Use clearer notation for (-$)
- Introduce new data types
ZippedStackRepr a b = a ::: b
andZSNil = ZSNil
, isomorphic to '(a, b)' and '()' respectively, to represent a zipped stack.
- Introduce new data types
- !1082 Fix/drop/comment noncanonical Show instances
- !841 Make entrypoints derivation work with void-like entrypoint arguments.
0.13.3
- !1100
Support
map
instruction overMaybe
(a.k.a.option
)- Add
instance MapOpHs (Maybe e)
- Add
- !1084 Switch to the new mutez subtraction operation
- !1101
Export
sopSetField
andsopGetField
fromLorentz.StoreClass
- !1089
Enhance and rename mutez quasiquote
- Export
tz
quasiquoter fromLorentz.Value
andLorentz
.
- Export
- !1071
Add
HasRPCRepr
typeclass- Move
AsRPC
type instances from theLorentz.AsRPC
module to the modules of their respective types.
- Move
- !901
Weaken constraints of
getField
getField
and similar methods now requireDupable
on the copied field andHasDupableGetters
(defaults toDupable
) on the datatype.
- !1060
Add
Lorentz.AsRPC
module containing instances forMorley.AsRPC
type family - !978
Make it difficult to misuse 'Show'
- Use
Buildable
andpretty
preferrentially. - Avoid using
(+||)
and(||+)
. - Use
Debug.show
when definingShow
instances.
- Use
- !1062
Move
senderIsNotAdmin
Lorenz error tomorley-ledgers
repo - !997
Check necessity in initial
cast
automatically in Lorentz contracts - !1043 Extract actual + expected pattern into a datatype and show diff in type mismatch
- !1037
Add synonyms for
SomeConstrainedValue
- Reimplement
SomeConstant
,SomeValue
,SomeStorage
viaSomeConstrainedValue
. - Add
SomePackedVal = SomeConstrainedValue PackedValScope
.
- Reimplement
- !1049
Delete unnecessary
HasStorage
constraintsLorentz.Contract
no longer requiresParameterDeclaresEntrypoints
orHasAnnotation st
.- Added
NiceStorageFull
constraint for whenHasAnnotation st
is actually needed.
0.13.2
- !1041
createContract
now returnsTAddress
, notAddress
0.13.1
- !1016
- Add support for on-chain views.
Contract
,TAddress
and similar types has gained a new type argument designating the views set exposed by the contract. By default, set it to()
.- The old A1 (aka TZIP-4) views -
View
type and related methods - were renamed via adding a_
suffix:View_
,mkView_
,wrapView_
, e.t.c.
- !1010
Add timelock puzzle support.
- Add Lorentz instruction
openChest
. - Add
OpenChest
type, isomorphic toEither ByteString Bool
- Add Lorentz types
ChestT
,OpenChestT
, abstracting working with any type representable asByteString
(defined inLorentz.Bytes
). - Add
openChestT
Lorentz instruction for working withChestT
(defined inLorentz.Bytes
)
- Add Lorentz instruction
0.13.0
- !915
- Add Fixedpoint arithmetics to lorentz
- Add additional
NFixed
datatype for natural fixedpoint values - Add typeclasses for rounding and casting fixedpoint values
- Change behavior of lorentz arithmetic operations - now type of the result is specified by user.
- Add
ArithOpHs
instance forEDiv
instruction
- !989
Switch from interpolate to home-grown string interpolation module
- Note this changes the syntax of slices in
md
quasiquoter. Before we could use expressions#{expression}
, now we can only use variable names#{name}
.
- Note this changes the syntax of slices in
- !909
- Update all instances of
Named
functions with patterns fromMorley.Util.Named
- Update all instances of
- !1000
Modify the
cloneX
macro to only usedup
s. - !937
Attach source code location to interpreter error messages
- Changed morley interpreter error type from
MichelsonFailed
toMichelsonFailureWithStack
- Changed morley interpreter error type from
- !945
- Bump Stackage LTS version from 17.9 to 18.10.
- !835
- Added
Lorentz.Tickets
module with tickets arithmetics and common helpers. - Added
Impossible
error. - Added
transferTokensE
andpairE
. - Moved
NonZero
toLorentz.Macro
. - Updated
Wrappable
:- Make separate
Wrappable
andUnwrappable
typeclasses. - Old
Unwrappable
type family renamed toUnwrappabled
. - Weaked permissions to perform some actions for some types.
May now require
unsafeCoerceWrap
instead ofcoerceWrap
.
- Make separate
- Added
- !922 Replace lSignEd22519 with generic lSign
- !881
- Rename
PrintedValScope
toUntypedValScope
with related types and functions.
- Rename
0.12.1
- !879
- Add
Buildable
andRenderDoc
instances for(:->)
operator - Instances are based on transforming operator to
Instr
type and using its instances
- Add
0.12.0
-
StoreHasField
instance definition is no more necessary for simple ADT storage types.
-
- Reorganized
Contract
type and related stuff. - Added methods for reading
Contract
from file.
Migration guide (sufficient unless you worked on framework internals):
- In case you needed to use non-default contract compilation options, use
mkContractWith
now.
For more details, see documentation of
Lorentz.Run
. - Reorganized
-
- Add tickets feature.
- Add dupable restriction to
dup
-like instructions and some high-level helpers. Seedup
's documentation for notes on how to live in this brand new world. - Make
parseNoEnv
,readValue
and other similar functions acceptMichelsonSource
instead ofFilePath
.
-
- All unsafe functions and data constructors now contain "unsafe" word
at prefix position. E.g
UnsafeMText
,unsafeMkAnnotation
.
- All unsafe functions and data constructors now contain "unsafe" word
at prefix position. E.g
-
- Added
Lorentz.Expr
module with primitives for convenient expressions evaluation.- Added
listE
to construct an expression list from a list of expressions.
- Added
if ... then ... else
now is polymorphic in the first argument.- Boolean expressions now can appear as condition for
if
.
- Boolean expressions now can appear as condition for
- Added
0.11.0
-
- Added the usage of
Prelude.Type
instead ofData.Kind.Type
, as a resultKind.Type
was replaced with justType
.
- Added the usage of
-
-
Generalize
st*
methods for working with storage. Now it is possible to access nested fields and submaps likestToField (#a :-| #b)
. This should not require any changes unless you keep you own generic helpers over those methods. -
Existing
StoreHasSubmap (Big?)Map anyName k v
instance is replaced with two:StoreHasSubmap (Big?)Map Self k v
StoreHasSubmap store name k v
that delegates toStoreHasField
.
Migration guide:
- If you have
StoreHasSubmap
instances for specific storage and name implemented viastoreSubmapOpsDeeper
, remove them and make sure you have a similarStoreHasField
instance implemented viastoreFieldOpsADT
. - If you have storage which is directly a map, use
this
instead of label to access the map. - If you have an instance for a complex storage which is not represented as simple ADT,
turn this instance into overlappable one. Make sure that
name
type parameter is of concrete type to avoid "overlapping instances" error. - The pattern when a datatype transparently provides access to its inner fields via an
overlapping instance - may not work smoothly and produce "overlapping instances" error.
To mitigate this do one of the following:
- Specify the kind of
name
type parameter in your overlapping instance to be concrete (i.e.Symbol
). - Use the new functionality to access the nested field by a fully qualified name.
- Specify the kind of
-
-
- Add some instances to
BigMap
andTAddress
types.
- Add some instances to
-
- Added new Edo macros:
CAR k
andCDR k
ascarN
andcdrN
.
- Added new Edo macros:
-
- Added back the
UnaryArithOpHs Abs Integer
instance that was removed by accident.
- Added back the
-
- Add
NiceParameterFull
andNiceStorage
constraints to LorentzContract
constructor. - Moved
coDisableInitialCast
toCompilationOptions
datatype.
- Add
0.10.0
- !774
- Added support for
BLS12-381
crypto primitives (types, instructions, arithmetics). - Now it is possible to use
int
instruction for newtypes overNatural
.
- Added support for
- !786
- !791
- Add new Edo instructions:
pairGet
andpairUpdate
.
- Add new Edo instructions:
- !755
Restricted
FAILWITH
only to packable values, exceptCONTRACT
s - !759
- Add
UnitErrorArg
andNoErrorArg
to be used withErrorArg
instance.UnitErrorArg
is preferred to()
NoErrorArg
allows failing with just a string instead of apair string unit
.
- Add
- !764
- Added
Never
type, deprecatedEmpty
type.
- Added
0.9.1
- !781
- Replaced mixins and dependency on
base
withbase-noprelude
.
- Replaced mixins and dependency on
- !751
- Add new Edo instruction:
LEVEL
.
- Add new Edo instruction:
- !741
- Add new Edo instructions:
SHA3
andKECCAK
.
- Add new Edo instructions:
0.9.0
- !731
Added
GenericStrategy
-ies for compatibility with LIGO. - !712 Add lenses for Lorentz contract config.
- !684
- Simplify working with autodoc in contracts (breaking change).
finalizeParamCallingDoc
is now applied automatically when lorentz'Contract
is used, no need to call it manually.
0.8.0
- !671
- Add
TypeHasDoc
instances forTAddress
andFutureContract
. - Add a generic
instance DocItem (DEntrypoint ep)
. In case of getting overlapping instances, you have to implementEntrypointKindHasDoc
instead. - Some error messages in doc tests are improved.
- Some bugfixes for anchors.
- Cases with contract logic residing outside of entrypoints are now better handled.
- Add
- !665
Improve
StorageContains
to work for polymorphic case (when field is marked withIdentity
). - !679
Add
dupLNamed
. - !672
- Add
Packed
,TSignature
andHash
types. pack
andunpack
now work withPacked
instead ofByteString
(for the sake of better type-safety). Either usePacked
type, orpackRaw
/unpackRaw
instructions.checkSignature
now works withPacked
andTSignature
.blake2b
and other hashing instructions now work withHash
.- If necessary, coersions can be used to switch between the mentioned types and raw
ByteString
.
- Add
- !667
- Modify representation of extended lambdas (arbitrary code used as lambdas is now packed into right-hand combs, not left-hand ones).
- Add
applicate
macro.
- !630
Use
:
in all library instructions instead of&
. - !652
Update the
ContractRegistry
to be able to not require contract name for all its commands when there is only one contract. - !640
Change
StoreSubmapOps
to contain no optional methods.
0.7.1
0.7.0
- !629
All
UStore
modules has been moved to the morley-upgradeable repository. Now you have to include that repository to your build and importLorentz.UStore
. - !610
Remove
Lorentz.TestScenario
. - !585
Add
HasAnnotation
instance forChainId
.
0.6.2
- !589
Add
annOptions
method inHasAnnotation
which can be used to customize the generated annotations of a type.- Add helper functions to use with
annOptions
.
- Add helper functions to use with
- !591
Add
dupTop2
.
0.6.1
- !533
Add
entrypointDoc
,typeDoc
, anderrorDoc
quasiquotes which help generating typeclass instances.
0.6.0
- !558
Added a new
wrapOne
to wrap a value in a constructor with a single field, because it has the advantage of having an input stack that does not depend on a type family. - !528
The generated documentation now contains a sample value of each entrypoint.
- Allow modification of sample value via
mkDEntrypointExample
.
- Allow modification of sample value via
- !493
Add support for root entrypoint.
- A contract can now specify whether or not the root annotation should be generated and which name it should use.
self
andcontract
instructions are able to call the root entrypoint.
0.5.0
- !530
Field annotation are now generated for sum-type in
parameter
andstorage
.- It also ensures that it will not generate field annotations that would introduce extra entrypoints.
- !371
Make
view_
argument accept 2 arguments rather than a pair. - !486
Add
customGeneric
to deriveGeneric
instances with a custom tree structure and, consequently,IsoValue
instances with such a structure. - !483 Add a way to generate field annotations for entrypoint parameter.
- !470
Move
Lorentz.Test
and Hedgehog generators to a new package:cleveland
. - !357
Remove deprecated
Lorentz.Store
module and deprecated custom error functionality.
0.4.0
- !449
- Improve
Lorentz.Test.Integrational
interface. - Remove
IntegrationalValidator
,SuccessValidator
,validate
,composeValidators
,composeValidatorsList
,expectAnySuccess
. - Add
unexpectedInterpreterError
,attempt
,catchExpectedError
. - Change type of
expect*
/tExpect*
/lExpect*
functions. They now returnIntegrationalScenario
instead ofSuccessValidator
/Bool
. - Rename
ValidationError
toTestError
- Replace
TestError
'sUnexpectedExecutorError
constructor withInterpreterError
andUnexpectedInterpreterError
.
- Improve
- !432
Add
whenNone
to Lorentz. - !398
Add
StoreHasEntrypoint
class to conveniently use entrypoints as lambdas stored intobig_map
(s) to make use of lazy evaluation. - !409
- Add hedgehog support
- !303
- Functions for working with
UStore
from Haskell world (e.g.fillUStore
) now have a different constraint. UStore
templates are now documented and thus may require instance of the respective typeclass.
- Functions for working with
0.3.0
- !417 Change the license to MIT.
- !360
- Add
compileLorentzWithOptions
function that accepts optional Michelson optimizer configuration and string transformer function. ChangedcompileLorentz
to call the optimizer with the default configuration. - Add
Lorentz.Contract
data type as a wrapper forLorentz.ContractCode
andLorentz.CompilationOptions
. Require that all contracts are wrapped in this data type.
- Add
- !354
- Add
constructStack
function that constructs a datatype from fields on the stack. - Add
deconstruct
function that deconstructs a datatype to its fields on the stack.
- Add
- !358
Removed deprecated
STEPS_TO_QUOTA
instruction. - !337
Added
comment
,commentAroundFun
andcommentAroundStmt
to generate comments in Michelson code.
0.2.0
- !346
Added
docStorage
andcontractGeneralDefault
. - !306
Deprecated
mapMigrationCode
in favor ofMapLorentzInstr
. - !326
Updated contract registry (
Lorentz.ContractRegistry
):- Now it can print initial storage apart from contract and documentation.
- Some extra fields were added to
ContractInfo
. - Logic is captured in the
runContractRegistry
function. - If you don't specify output file, we will use a file with name constructed from contract name. Pass
-
if you wantstdout
.
- !245 Added
HasTypeAnn
instance forFutureContract arg
. - !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'
- !267
- Retain type annotations in entrypoints derivation.
- Remove overlappable
HasTypeAnn
instance defined for nearly each type. Adddefault
getTypeAnn
method definition instead and manually defineHasTypeAnn
instance for each type instead (trivially). When you create a new data type withIsoValue
instance, you usually have to deriveHasTypeAnn
as well.
0.1.0
Initial release extracted from the morley package.