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_idand 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.addressreturns 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
--mainto compile a specific contract
IMPROVEMENTS
- Lambdas in constants
- Better type inference when overloading
- Parse ReasonML expressions
- Option
--call-argto 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 addrfor(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
--injectto 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
FAILWITHin 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
intandnatare not comparableboolis comparable- Division on type
tez
Version 0.13
NEW FEATURES
match%natconstruct forint -> natcoercion- abs is now
int -> int - Command line options
--parse-only,--type-only - Command line options
--single-line,--compactto 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 -> t2instead 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