Skip to content

Releases: OCamlPro/liquidity

Version 2.0

23 Jun 14:13
6472808
Compare
Choose a tag to compare

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 instruction Chain.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

23 Jun 14:19
Compare
Choose a tag to compare

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

08 Mar 13:09
Compare
Choose a tag to compare

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

05 Oct 13:42
Compare
Choose a tag to compare

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

11 Jul 09:51
Compare
Choose a tag to compare

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

23 Jan 14:29
Compare
Choose a tag to compare

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 and nat are not comparable
  • bool is comparable
  • Division on type tez

Version 0.13

30 Nov 11:05
Compare
Choose a tag to compare

NEW FEATURES

  • match%nat construct for int -> 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

16 Oct 15:01
Compare
Choose a tag to compare

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