Releases: OCamlPro/liquidity
Releases · OCamlPro/liquidity
Version 2.0
NEW FEATURES
- Support for Babylon+
- Only write entry points' type parameter in signatures [BREAKING CHANGE]
- Multiple entry points (compiler/client)
- Lifting of restictions on big maps
- New instruction
Big_map.create
- Big map constants
- Use new Michelson instructions
DIP n
,DROP n
- Compile DUP n with DIP+DIG instead of DU.UP macro to avoid bubbling expansion to
DIP { DUP; SWAP }
- Deprecate
Current.gas
- Type
chain_id
and instructionChain.id : unit -> chain_id
- Remove contract instances, and use contract handles instead [BREAKING CHANGE]
- Allow polymorphic variants (so as to not have to declare type)
- Allow capitalized entry point names with syntax
let%entry `Entry = fun param -> fun storage -> body
- New instruction
Contract.address
returns address without entry point handle [BREAKING CHANGE] - Previous behaviour can be accessed with
Contract.untype
- Addresses can have an entry point handle with syntax
KT1LLcCCB9Fr1hrkGzfdiJ9u3ZajbdckBFrF%entry_name
IMPROVEMENTS
- Better simplifications (for sequences) and inlining
- Decompilation of Michelson entry points with arbitrary names
- Modular client in separate executable
liquidity-client
- Documenation
Version 1.057
NEW FEATURES
- Estimate fees and storage (burn) in Client
- Fee code (only Dune Network)
- Decompilation of Michelson fee code
- Allow lambdas in constants
- GPL license
- Uncurrying of totally applied functions
IMPROVEMENTS
- Updated documentation
- Switch to Dune Network backend
- Remove unecessary type annotation in decompiled Liquidity
- Generate contracts whose parameter is compatible with upcoming version of Michelson
- Client update wrt. Tezos protocol
- Bytes.pack is polymorphic
- Better simplifications
- Better error reporting
- Inlining of closures and constants
- Better name/strucuture recovery when decompiling
- Debug information with --verbose
BUG FIXES
- Fix scoping bug in inlining
- Don't use _ as a variable name when decompiling
- Fix conflicts in internal names with multiple contracts
- Decompilation of failing branches
- Restriction on timestamp operations
- Occur check with physiscal equality (in inlining phase)
- Monomorphisation global values/variables
- Dependencies when using sub-contract as main (#201)
- Fix issue in decompilation of sub-contracts
- Fix namespace for first class contract types (#202)
- Fix issue in monomophisation
- Normalize types wrt current namesapce (#197)
- Fix issue with module and contract aliases
Version 1.01
NEW FEATURES
- Revamped module system for function exports
(This allows to write reusable libraries.) - Private functions/values with
[@private]
- Disable inlining per function with
[@noinline]
- Modules and contract aliases
- ReasonML syntax
- Parameterized type definitions
- Type inference
- Polymorphic values and polymorphic inference
- External custom instructions
- Multiple entry points
- Encoding of types with Michelson annotations
- Decompilation of records, enumerations and operations
- New syntaxes for contract calls
- Labelled arguments for some built-in functions
- Contract signatures
- Instruction
Loop.left
- Compilation of tail-recursive functions
- Compile multiple contracts in separate files
- Option
--main
to compile a specific contract
IMPROVEMENTS
- Lambdas in constants
- Better type inference when overloading
- Parse ReasonML expressions
- Option
--call-arg
to print arguments for tezos clients - More peephole optimizations
- Tezos as submodule
- Allow unit patterns
()
- Client command
--pack
- Examples of documentation are in the test suite
(This way, the documentation is always up to date.) - Namespacing for externals
- Support type annotations in expressions
- Support for digestif 0.7
- Warning for failing code
- Better compilation of wildcard pattern matching
- Syntax
C.at addr
for(Contact.at addr : C.instance option)
- Better locations reporting
- Syntactic sugar
val%entry : param -> _
in signatures - Allow empty (non-toplevel) contracts
- Patterns in entry point arguments
- Better decompilation
BUG FIXES
- Fix bad computation of free variables in Contract.create
- Bring back support for string amounts, keys, etc.
- Fix printing Michelson list and set constants
- Fix Travis ubuntu reop
- Fix parsing of Tezos node json errors
- Remove unsupported Set.map, Set.map_fold
- Bring --no-annot option back
- Forbid Contract.self in non-inlined functions
- Prevent redefinition of Map, Set constructors
- Workaround Micheline pretty-printing bug
- Documentation
- Fix deployment issue with big maps
- Fix json output of constants
- Forbid source, sender in initializer
Version 0.37
NEW FEATURES
- Compatibility with Tezos's Mainnet/Zeronet/Alphanet
- Support bytes constants for key, key_hash, address, contract and signature
- Attribute
[@@inlining]
to force inlining when not dangerous - Command
--init-storage
(Pierre Michard) - Command
--inject
to inject signed operation
IMPROVEMENTS
- Client: Show failing calls and deployments
- Inline bodies of lambdas
- Sphinx documentation
- Easier build with
make build-deps
- More optimizations on Michelson code
BUG FIXES
- Fix issue with printing of signatures
- Missing decompilation for
LSL
,LSR
- Fix inlining bug in decompilation
- Code elimination after
FAILWITH
in code generation - Fix erroneous pretty-printing of tez values
- Forbid source, sender in initializer
Version 0.32
NEW FEATURES
- Compatibility with Tezos's Betanet
- New calling convention, Contract.transfer returns an operations
which has to be returned - Current.failwith : 'a -> 'b, instead of fail
- Type bytes, and 0xab... bytes constants
- Bytes.pack, Bytes.unpack
- Type address
- Contract and address constants (KT1..., tz...)
- Type big_map, and constants BigMap [...], and BigMap.find,
BigMap.add, BigMap.remove, BigMap.update - New compilation of Map/Set/List.map
- New instruction Map/Set/List.map_fold
- Current.self renamed to Contract.self
- New functions Crypto.blake2b/sha256/sha512 instead of Crypto.hash
- Current.sender
- Remove Contract.manager
- (Contract.at : p contract option)
IMPROVEMENTS
- Better locations reporting
- Show runtime failures source locations
- Light type inferrence in specific places
- Unary negation on int and tez
- Somewhat better error messages
- Compile with OCaml 4.06.1
- Better decompilation naming heuristic
BUG FIXES
- Fix issue with decompiling multiple nested failing branches
- Fix issue with decompilation of ITER
- Fix some incorrect peephole optimizations
- Reject maps and sets with non comparable keys
Version 0.14
NEW FEATURES
- Support for decompilation of
ITER
- New instructions
Map.iter
,Set.iter
,List.iter
- Storage initializer
- Run Liquidity contracts on Tezos node directly (
--run
) - Deploy Liquidity contracts on Tezos node directly (
--deploy
) - Call Liquidity contracts on Tezos node directly (
--call
) - Retrieve Tezos contract storage in Liquidity syntax (
--get-storage
)
IMPROVEMENTS
- Define type abbreviations when decompiling
- Support timestamp date with Z timezone
- Encode reduce with closures using
ITER
- Constant of type signature start with backquote and are hex encoded
- Ready for javascript compilation
BUG FIXES
int
andnat
are not comparablebool
is comparable- Division on type
tez
Version 0.13
NEW FEATURES
match%nat
construct forint -> nat
coercion- abs is now
int -> int
- Command line options
--parse-only
,--type-only
- Command line options
--single-line
,--compact
to output
Michelson on a single line - Support
&&
,||
Boolean connectors - Support
Map.add
,Map.remove
,Set.add
,Set.remove
- Lambda types are now written as
t1 -> t2
instead of
(t1, t2) lambda
- Constant amounts written as litterals:
1.00tz
- Constant keys and key_hashes as litterals:
edpk...
tz1...
- Timestamps as litterals in ISO-8601 format
IMPROVEMENTS
- Split typechecking and encoding phases
- Allow transfers in conditions (for if-then-else and match)
- Encode to constants when possible
- Better error messages
- Accept any name for result of
Contract.call
- Recover variable names when decompiling
BUG FIXES
- Fix bug in encoding of closures
- Fix bug in compilation of branches with transfers
Version 0.11
NEW FEATURES
- Compilation of Liquidity contracts to OCaml bytecode
- Deconstruct tuples in let, fun and pattern matching
- Support
_
for pattern - OCaml syntax for return type of contract's entry point
- Support for type
key_hash
IMPROVEMENTS
- Allow compilation without Tezos
- Better error messages
- Error location in Michelson source when decompiling
- Declare type storage when decompiling
- More efficient encoding of closures