-
Notifications
You must be signed in to change notification settings - Fork 33
/
CHANGES
332 lines (279 loc) · 10.2 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
2.0 2020/06/23
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
1.057 2020/01/14
BUG FIXES
* Fix scoping bug in inlining
* Don't use _ as a variable name when decompiling
1.056 2020/01/08
BUG FIXES
* Fix conflicts in internal names with multiple contracts
1.055 2019/11/28
NEW FEATURES
* Estimate fees and storage (burn) in Client
IMPROVEMENTS
* Updated documentation
1.053 2019/10/08
NEW FEATURES
* Fee code (only Dune Network)
* Decompilation of Michelson fee code
IMPROVEMENTS
* Switch to Dune Network backend
* Remove unecessary type annotation in decompiled Liquidity
1.044 2019/09/02
IMPROVEMENTS
* Generate contracts whose parameter is compatible with upcoming version of
Michelson
1.042 2019/07/19
IMPROVEMENTS
* Client update wrt. Tezos protocol
BUG FIXES
* Decompilation of failing branches
* Restriction on timestamp operations
1.041 2019/07/09
NEW FEATURES
* Allow lambdas in constants
1.04 2019/05/24
NEW FEATURES
* GPL license
IMPROVEMENTS
* Client update wrt. Tezos protocol
BUG FIXES
* Occur check with physiscal equality (in inlining phase)
1.03 2019/04/03
NEW FEATURES
* Uncurrying of totally applied functions
IMPROVEMENTS
* Bytes.pack is polymorphic
* Better simplifications
* Better error reporting
* Inlining of closures and constants
* Better name/strucuture recovery when decompiling
BUG FIXES
* 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)
1.02 2019/04/02
IMPROVEMENTS
* Debug information with --verbose
BUG FIXES
* Fix issue in monomophisation
* Normalize types wrt current namesapce (#197)
* Fix issue with module and contract aliases
1.0 2019-03-08
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
IMPROVEMENTS
* Lambdas in constants
* Better type inference when overloading
BUG FIXES
* Fix bad computation of free variables in Contract.create
0.53 2019-02-13
IMPROVEMENTS
* Parse ReasonML expressions
* Option `--call-arg` to print arguments for tezos clients
* More peephole optimizations
0.52 2019-02-11
NEW FEATURES
* ReasonML syntax
0.51 2019-02-09
NEW FEATURES
* Parameterized type definitions
IMPROVEMENTS
* Tezos as submodule
BUG FIXES
* Bring back support for string amounts, keys, etc.
0.5 2019-01-21
NEW FEATURES
* Type inference
* Polymorphic values and polymorphic inference
IMPROVEMENTS
* Allow unit patterns `()`
* Client command `--pack`
BUG FIXES
* Fix printing Michelson list and set constants
0.405 2018-12-06
IMPROVEMENTS
* Examples of documentation are in the test suite
(This way, the documentation is always up to date.)
* Namespacing for externals
BUG FIXES
* Fix Travis ubuntu reop
* Fix parsing of Tezos node json errors
* Remove unsupported Set.map, Set.map_fold
0.404 2018-11-21
NEW FEATURES
* External custom instructions
IMPROVEMENTS
* Support type annotations in expressions
* Support for digestif 0.7
* Warning for failing code
BUG FIXES
* Bring --no-annot option back
* Forbid Contract.self in non-inlined functions
* Prevent redefinition of Map, Set constructors
* Workaround Micheline pretty-printing bug
0.402 2018-10-17
NEW FEATURES
* 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
* 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
* Documentation
* Fix deployment issue with big maps
* Fix json output of constants
* Forbid source, sender in initializer
0.37 2018-10-05
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
0.32 2018-07-11
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 <addr> : 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
0.14 2018-01-23
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
0.13 2017-11-30
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
0.11 2017-10-16
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
0.1 2017-10-05
Initial release