LIGO Changelog
next
Run this release with Docker:
docker run ligolang/ligo:next
Added :
[#1996] Implement ligodep for CameLIGO (!3272 by heitor.toledo)
Details :
Introduced module to find all references to external modules in the
Ast_core.program
.chore: Update LIGO to protocol Quebec (!3269 by rinderkn)
Details :
Upgrade to Quebec protocol.
[#1991] Build System: Support
import
declarations in Ast_typed (!3252 by krendelhoff)Details :
No details provided for this change. Please visit the MR to learn more
[#1995] Build System:
ligodep
for JsLIGO (!3249 by krendelhoff)Details :
No details provided for this change. Please visit the MR to learn more
[#1990] Build system: Persistent env (!3248 by krendelhoff)
Details :
No details provided for this change. Please visit the MR to learn more
feat: compile Mini C expressions to LLTZ expressions (!3221 by alistair.obrien)
Details :
feat: compile Mini C expressions to LLTZ expressions
1.7.0
Run this release with Docker:
docker run ligolang/ligo:1.7.0
Added :
tree sitter foreign function interface (!3238 by leo.unoki)
Details :
Add tree-sitter and tree-sitter-typescript libraries
[#2187] Support
import
decls up to Ast_core (!3227 by krendelhoff)Details :
No details provided for this change. Please visit the MR to learn more
[JsLIGO] Allow parenthesised type expressions as summands of sum types ("discriminated union") (!3194 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Union types (!3192 by alistair.obrien)
Details :
feat(lang): Improves support for discriminant unions by adding union types.
A union type describes a value that can be one of several types. We use the vertical bar (
|
) to separate the types. For instance,int | string
is the type of a value that can be either anint
or astring
.const a = { a: 1 } as { a: int } | { b: bool };Common Fields
When working with a union type of records, we can only access members common to all types in the union.
type Car = {driver: string;fuel: nat;}type Bike = {driver: string;hasTrainingWheels: bool;}const getDriver = (vehicle: Car | Bike): string => vehicle.driver;If a value has the type
Car | Bike
, we can only accessdriver
because it is the only member common to both types. We cannot accessfuel
orhasTrainingWheels
without additional type checks, as accessingfuel
on aBike
would result in a runtime error.Discriminant Unions
A common pattern for using union types is to include a single field with a singleton type to distinguish between the types. This allows the type checker to infer the specific type in a conditional statement.
type IntValue = { typ: "INT"; x: int };type StrValue = { typ: "STR"; s: string };type Value = IntValue | StrValue;All types in the
Value
union have a common fieldtyp
. Sincetyp
is a singleton type, we can compare its value to determine the specific type being used. Here’s how to use a switch statement to narrow down the type:const valueToInt = (val: Value): int => {switch (val.typ) {case "INT":return val.x;case "STR":return int(String.length(val.s));}return -1;}In this example,
typ
helps to discriminate between theIntValue
andStrValue
types, allowing us to safely access their specific fields.[#2183] Add LSP runtime analytics (!3176 by heitor.toledo)
Details :
The language server can now collect analytics such as the number of restarts, execution time of methods, and number of crashes. Analytics are sent only if the user has agreed to let LIGO collect analytics.
Crashes should be a bit better handled too.
Constant disambiguate (!3168 by theeduardorfs)
Details :
No details provided for this change. Please visit the MR to learn more
[#2183] Implement LSP initialize analytics (!3165 by heitor.toledo)
Details :
Added analytics to the initialization of the language server (only if the user has agreed to let LIGO collect them).
Small improvement and a fix to the front-end (!3162 by rinderkn)
Details :
Preprocessing directives are not allowed between declarations inside a structure.
feat: add nix derivation and shell for LIGO (!3161 by alistair.obrien)
Details :
feat: add nix derivation and shell for LIGO
feat(lsp): add support for selection range (!3160 by alistair.obrien)
Details :
feat(lsp): add support for selection range
feat: remove
environment
library and deprecate--protocol
flag (!3146 by alistair.obrien)Details :
Deprecate the
--protocol
flag.ligo compile contract unit.mligo --protocol parisbWarning: the flag `-p` (aliases: `--protocol`) is deprecated and will be ignored{ parameter unit ;storage unit ;code { DROP ; UNIT ; NIL operation ; PAIR } }
Fixed :
fix(interpreter): allow performing operations on tickets in tests (!3237 by alistair.obrien)
Details :
fix(interpreter): allow performing operations on tickets in tests
For instance, the following demonstrates the use of
create_ticket
andread_ticket
, which previously resulted in an error.let () =let ticket = Tezos.create_ticket "Hi" 10n inlet (ticketer, _, _, _) = Tezos.read_ticket ticket inTest.log ticketer[#2173] Fix inlay hints for functions (!3214 by krendelhoff)
Details :
Inlay hints are shown correctly for all combinations of parameter type annotations and return type.
[#2171] Hide ghost idents with appropriate comment (!3206 by krendelhoff)
Details :
Ghost identifiers in inlay hints are replaced with appropriate comment.
[#1683] Handle case user tries to include directory (!3202 by krendelhoff)
Details :
Attempt to include a directory is highlighted as an error with proper message.
[#2181] Handle more cases for record completions (!3181 by krendelhoff)
Details :
Makes completions work for polymorphic record types.
[#2185] Do not check for pattern anomalies on type mismatch with error recovery (!3179 by heitor.toledo)
Details :
If typer error recovery is enabled (on for the language server), and the user writes code where there is a mismatch between a scrutinee's type and a pattern's type, it will probably lead to a crash. For example, in the following code:
type t = Unitlet Unit = ()let () =match () with| Unit -> ()The scrutinee (
Unit : t
) and the pattern (() : unit
) have mismatched types (t
is not the same asunit
), leading to a crash.With the changes from this changelog, this crash should no longer occur.
[#2184] Forbid empty modules in the parser (!3177 by heitor.toledo)
Details :
Fixed "Failure tl" crash in the compiler and language server when writing an empty module in CameLIGO.
fix(aggregation): on includes, don't include the module environment (!3157 by alistair.obrien)
Details :
fix(aggregation): on includes, don't include the module environment
Remove need for parentheses in object updates (!3154 by alan.marko)
Details :
Fixed a bug requiring extra parentheses when doing object update.
[#2611] Avoid inlay hints for signature items (!3153 by krendelhoff)
Details :
Fixed inlay hints being displayed in signatures and interfaces even in the presence of annotations.
[#2069] Distinguish between tez and mutez at CST level (!3125 by alan.marko)
Details :
Support added for distinguishing tez and mutez in LIGO pretty printer.
Performance :
[#2143] Optimize aggregation pass (!3180 by DK318)
Details :
Improved performance for LSP and compilation pipeline.
The LSP should now take less time between keystrokes.
This is done by optimizing aggregation pass.
[#2143] Strip references pass and collect them in checking (!3170 by DK318)
Details :
Improved performance for LSP.
The LSP should now take less time between keystrokes.
This is done by stripping the references pass and moving their collection to the type checker.
[#2143] Optimize following passes in LSP (!3166 by DK318)
Details :
Improved performance for LSP and compilation pipeline.
The LSP should now take less time between keystrokes.
This is done by optimizing
self_ast_typed
andself_mini_c
passes.
1.6.0
Run this release with Docker:
docker run ligolang/ligo:1.6.0
Breaking :
feat: upgrade to ParisB (!3142 by alistair.obrien)
Details :
feat: upgrade protocol to 019-PtParisB
Added :
Disambiguate array tuples from lists using typing information (!3138 by theeduardorfs)
Details :
Support typed-based disambiguation for lists and tuples, in JSLigo.
const a : unit = [];const b : list<int> = [1, 2];const c : [int, int, int] = [1, 2, 3];
Fixed :
[fix] Analytics id files management (!3147 by Laucans)
Details :
No details provided for this change. Please visit the MR to learn more
Fix
Text.Next.Account.new
(!3136 by xavierm02)Details :
No details provided for this change. Please visit the MR to learn more
Performance :
[#2143] Run aggregation pass only once in following passes (!3137 by DK318)
Details :
The LSP should now take less time between keystrokes.
This is done by running aggregation pass only once per doc processing.
[#2143] Improve the performance for inline mangled modules pass (!3133 by heitor.toledo)
Details :
Small performance boost for the LSP. The time between keystrokes will decrease.
[#2143] Move generated variables replacement into checking (!3129 by DK318)
Details :
The LSP should now take less time between keystrokes.
This is done by moving generated type variables replacements into checking pass.
1.5.0
Run this release with Docker:
docker run ligolang/ligo:1.5.0
Breaking :
perf: fix polynomial decoding induced by
#import
s (!3112 by alistair.obrien)Details :
perf!: fix polynomial decoding induced by
#import
s
Added :
Stdlib: introducing
Tezos.Next
module andAssert
(!3121 by er433)Details :
New factorization on certain components of the stdlib have been introduced: A new version of
Tezos
module/namespace, which is accessible asTezos.Next
.Grouped commands dealing with assertions inAssert
module/namespace.Grouped commands dealing with binary tuples inTuple2
(includingcurry
/uncurry
). (see the documentation on each module/namespace of the API for further information)Warning messages signaling to use these new variants have been added to the old functions.
[#2098] Implement inlay hints for inferred types (!3104 by DK318)
Details :
Add a support for inlay hints in LSP. Now you can see type annotation hints in your code.
Made singleton types inhabitable, and subtypes of the type of the value (!3103 by xavierm02)
Details :
No details provided for this change. Please visit the MR to learn more
Allowing expressions {...}.x (!3102 by rinderkn)
Details :
The parser now accepts immediate projection of record expressions, e.g. "{x=1}.x".
Draft: [#1751] Implement typer error recovery (!3098 by heitor.toledo)
Details :
The type-checker now supports error recovery, which the LSP turns on. This allows for more diagnostics to be reported, for more variables to have resolved types, and due to some technicalities, also improves the performance.
Adding top-level definition of type 'a big_set. (!3096 by rinderkn)
Details :
It is now possible to use
'a big_set
instead of'a Big_set.t
.Testing framework: add primitive for timelock verification (!3087 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[#2084] Add attribute for TZIP-16 compatibility (!3086 by Martoon)
Details :
Added
tzip16_compatible
attribute for indicating that the given storage value is expected to satisfy TZIP-16 metadata rules.This attribute does nothing on itself at the moment, but some IDEs may provide additional verification.
Example (CameLIGO):
type storage ={data : int;metadata : (string, bytes) big_map}[@tzip16_compatible]let storage_sample : storage ={data = 5;metadata =Big_map.literal[("",[%bytes"https://ipfs.io/ipfs/QmSBc8QuynU7bArUGtjwCRhZUbJyZQArrczKnqM7hZPtfV"])]}Example (JsLIGO):
type storage = { data: int; metadata: big_map<string, bytes> }@tzip16_compatibleconst storage_sample: storage = {data: 5,metadata: Big_map.literal(list([["",(bytes`https://ipfs.io/ipfs/QmSBc8QuynU7bArUGtjwCRhZUbJyZQArrczKnqM7hZPtfV`)]]))}
Fixed :
[Chore] Prevent crash in typer error recovery (!3124 by heitor.toledo)
Details :
The LSP should now be a bit more resilient against crashes, and better log exceptions.
Stdlib: remove usage of
include
(!3122 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Fix: use
CONCAT
instead of fold + uncurry concat (!3119 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Performance :
Draft: [#2143] Optimizations in references and nanopasses (!3120 by DK318)
Details :
Improved performance for LSP and compilation pipeline.
The LSP should now take less time between keystrokes.
This is done by reducing the number of tree traversals in nanopasses compilation stage.
[#2143] Reuse the normalization table LSP-wide (!3118 by heitor.toledo)
Details :
The LSP should now take less time between keystrokes.
This is done by creating a table for file canonicalization, which accounted for a huge time spent by the LSP.
[#2143] New, faster algorithm for scopes completion, and caching for path normalization (!3117 by heitor.toledo)
Details :
The LSP should now have faster times between keystrokes.
This happens because the LSP would previously calculate all scopes for all points between keystrokes for use in completions. Now, it will do so lazily, only when document symbols or completions for scopes are requested. Moreover, a new algorithm was implemented, that should be much faster.
Also, the LSP would try to normalize paths in a loop for all definitions in case a document symbol or inlay hints request was received. It will now cache those to avoid normalizing paths that were previously normalized, giving a performance boost.
optimize aggregation (!3100 by lesenechal.remi)
Details :
Performance improvement on module inclusion
1.4.0
Run this release with Docker:
docker run ligolang/ligo:1.4.0
Added :
Stdlib: add extra functions in
Test.Next
(!3085 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Stdlib: add
deprecated
messages onTest
(forTest.Next
) (!3082 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[#1965] Show polymorphic types in LSP + replace generated type variables (!3079 by DK318)
Details :
Show polymorphic values in hovers instead of raw ones. For example, in this code
type 'a t = { x : 'a; y : string }let x : int t = { x = 42; y = "42" }on
x
hover you'll seeint t
instead of{ x : int; y : string }
.Added syntax for typed object expressions. (!3076 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
ligo compile
command now infer compilation target in some cases (!3075 by lesenechal.remi)Details :
ligo compile contract
now infers the compilation target when the top-level is not a contract and defines only one contract module. In this case, the module becomes the compilation target (to avoid usage of-m
).This following contract
(* myfile.mligo *)module Single = struct[@entry] let main () () : operation list * unit = [],()endcan now be compiler using
ligo compile contract myfile.mligo
Deprecation attribute: unique identifiers and module support (!3073 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
preprocessor define option (!3070 by lesenechal.remi)
Details :
You can now pass a list of defines to LIGO preprocessor using flag -D.
(* myfile.mligo *)#if FOO[@entry] let toto () () : operation list * unit = failwith "lol"#endifligo compile contract myfile.mligo -D FOO
[#2130] Add disc union fields to scopes (!3066 by DK318)
Details :
Support disc union fields in LSP. Now you can see hovers on these fields and use "go to definition" capability.
Rewrite of the standard library (!3064 by rinderkn)
Details :
Added a module Big_set (lazily accessed sets, based on Big_map)Documentation for CameLIGO and JsLIGO.Introduced local
type t
aliases in modulesSet
,List
,Map
etc.Renamed the type parameters for maximum readability.Added, when meaningful, functionsof_list
that can take a list expression that may not be a literal.Deprecated some functions and added equivalent ones with a better name (e.g,List.head
andList.head_opt
). Added either a functionsize
orlength
so all modules have both.Same forsub
andslice
whenever meaningful.Added functionsempty
in all modules.Simplified implementations, made them uniform (order of constructors in pattern maching, for example), tried to avoid relying on built-ins.The module Option was messy.Draft: [#2101] Find all references project-wise (!3060 by heitor.toledo)
Details :
"Find All References"/"Go to References" and "Rename" will now look for all references from the project root (closest directory with
ligo.json
looking from the current path and parents). Previously, those references would only be found in files that had been previously opened.Draft: [#1676] Add missing items to scopes (!3042 by DK318)
Details :
Support function type parameters.Add support for constructors and record fields into LSP. Now you can see their types on hover and use other capabilities like "go to definition".
[#2120] Implement autocompletion for CLI (!3031 by DK318)
Details :
Added CLI autocompletion script. All the instructions are available in README.md
Fixed :
big set literal fix (!3083 by lesenechal.remi)
Details :
fix a bug where Big_set literals where not typing
Internal: use bigger params. in
memo_rec
(!3081 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Added escaping with pretty-printing tokens (including strings). (!3078 by rinderkn)
Details :
Strings are now properly escaped upon formatting.
[#2148] Fix comparison for regions (!3074 by heitor.toledo)
Details :
Fixed comparison for regions not being well formed, which could cause crashes in the LSP.
Fix "Not en entrypoint" errors pointing to the wrong entrypoint (!3072 by xavierm02)
Details :
If an entrypoint signature was wrong, the diagnostic was on the first entrypoint. Now it's fixed and target the wrong one.
[#2101] Fix
list_directory
skipping directories (!3067 by heitor.toledo)Details :
Fixed the LSP sometimes skipping some directories while looking for completions and references.
Fix
ligo install
the first time a package is installed (!3065 by melwyn95)Details :
When a package was installed for the first time. Compiler was not able to resolve it without a second ligo install. Now packages are resolved after the first installation.
[Chore] Fix project file creation (!3062 by heitor.toledo)
Details :
When the language server asks the user to create a project file, it would create an empty
ligo.json
file. It now initializes the file with a minimal skeleton so the file is usable.[#2132] Fix record field completions for modules (!3056 by DK318)
Details :
Fix the next bugs in completions after the dot symbol for modules: Lack of items in aliases.Extra items Now completion items are more accurate for modules.
oxford flag update (!3054 by lesenechal.remi)
Details :
Fix the protocol flag description to target Oxford2
[#2131] Handle capability modes when declaring capabilities (!3049 by heitor.toledo)
Details :
The LSP server will now correctly declare its list of supported server capabilities in the presence of all capabilities, only semantic tokens, or no semantic tokens flags.
[#1922] Suggest restarting when LIGO path is changed (!3041 by Martoon)
Details :
When changing LIGO path in settings, a suggestion will pop up to restart VSCode.
[#2113] Update diagnostics as soon
max diagnostics
setting changes (!3038 by Martoon)Details :
Diagnostics will be updated automatically after changing
Max Number of Problems
config option.
Performance :
Backend: add a new opt. for simplyfing
GET_AND_UPDATE ; DROP
toUPDATE
(!3092 by er433)Details :
No details provided for this change. Please visit the MR to learn more
1.3.0
Run this release with Docker:
docker run ligolang/ligo:1.3.0
Added :
Time-lock support (!3035 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[#1647] Implement document highlight request (!3034 by Martoon)
Details :
Added highlighting of all encounters of the variable/type/module under the cursor.
Protocol: update to support v19.0-ligo (Oxford 2) (!3030 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[#1650] Implement document symbol (!3029 by heitor.toledo)
Details :
Added support for document symbols in the language server.
Stdlib: introduce
Test.Next
(!3028 by er433)Details :
This MR introduces
Test.Next
, a submodule toTest
that is a re-organization, and that could be used to replaceTest
.For now, we avoid using
include
, as there are some performance issues related to it.[#2056] Handle module and top-level includes (!3021 by heitor.toledo)
Details :
include
s are now handled for CameLIGO for modules and at the top-level in the language server.Distribute ligo arm64 unix binary attached to release (!3019 by Laucans)
Details :
No details provided for this change. Please visit the MR to learn more
[#2056] Better signature items support (!2981 by heitor.toledo)
Details :
Made various improvements to signatures and interfaces in the language server:
Changed "go to definition" to try to find the signatures/interfaces that define some module element.Implemented "go to implementations" to try to find the modules/namespaces that implement some signature item.Also added support to look for implementations from signature names themselves.Implemented "go to declaration" to point to where a variable was originally defined (mimics the original "go to definition" behavior before this patch).Fixed hovers to properly distinguish between modules/namespaces and signatures/interfaces.Fixed "find references" (and "rename") to include signature items.[VSCode/Vim/Emacs extensions] Fixed syntax highlighting for signatures and interfaces.
[#1642] Implement semantic tokens (!2722 by heitor.toledo)
Details :
Added support for semantic tokens for all three dialects in the LIGO Language Server.
Fixed :
Fix: use memoization for
refresh_env
in aggregation (!3036 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[#1964] Preserve module path in orig_var (!3027 by heitor.toledo)
Details :
Preserve a type's module location in hover. So if there is
M.t
, it will be displayed as such rather than justt
.[#2080] Improve completions for modules (!3026 by DK318)
Details :
Improved completions for modules. Now they behave like completions for types and values.Mangled module names are stripped from completions.
[#1957] Fix go to type definition for inferred records (!3025 by heitor.toledo)
Details :
Fixes go to type definition pointing to a record expression's body rather than the actual type definition when there is no type annotation in the LSP.
[#2110] Fix the inferred type for complex patterns in the LSP (!3024 by heitor.toledo)
Details :
Fixed a problem where the LSP would display the wrong types for complex patterns. For example, previously,
let a, b = 1, "hello"
would show botha
andb
as having typeint * string
. Now, it will correctly displaya : int
andb : string
.[#1811] Preserve more info for types decompilation in JsLIGO (!3023 by DK318)
Details :
Fixed a bug with wrong hovers for named functions and discriminated union types in JsLIGO.
Performance :
[#1985] Optimize scope completions (!3033 by DK318)
Details :
Improve performance for scope completions. Now they're working significantly faster.
[#2122] Improve performance for file completions (!3032 by DK318)
Details :
Improved performance for file completions. Now we list files only on demand.
1.2.0
Run this release with Docker:
docker run ligolang/ligo:1.2.0
Added :
[JsLIGO] Extended interface entries so parametric types are valid type expressions. (!2999 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Enable multiple decorators of statements not separated by semicolons (!2997 by rinderkn)
Details :
More optional semicolons between statements.
Fixed some optional semicolons. Added making attributes from @comment. (!2996 by rinderkn)
Details :
More optional semicolons.
[JsLIGO] For-of loops with patterns instead of a variable ranging over the collection. (!2994 by rinderkn)
Details :
We can now write
for ([key, value] of map) { ... }
.Draft: [#2094] Translate
Ast_typed
into TypeScript for docs generation (!2993 by DK318)Details :
Added a
ligo doc
command which will generate documentation for your project. At this moment only JsLIGO is supported and it requirestypedoc
to be installed.Related MR
[#2094] Add documentation to LSP hovers (!2991 by Sorokin-Anton)
Details :
Now we show documentation comments (like
(** *)
in CameLIGO and/** */
in JsLIGO) in LSP hovers[#2091] Show completions for files in imports (!2980 by DK318)
Details :
Added completions for files. Now if you press
Ctrl
+Space
invscode
inside quotes in the#import
/#include
directive then you'll see files that you can import.[#1740] Add extended comparator functions to the
Test
module + show errors on wrong test primitive usages (!2972 by DK318)Details :
Added extended comparators to the
Test
module. They could be used to compare values that couldn't be compared via regular=
(e.g. lists and big maps).Handle wrong test primitives usage in the LSP. Now you can see an error at the beginning of your file.
Draft: Reworking parametric types in CameLIGO and JsLIGO (concrete syntax, CST, pretty-printing) (!2968 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
[#1675] Add module signatures on hover (!2953 by DK318)
Details :
Added signatures for modules on hovering. They're displayed like:
module Bytes : sigval concats : bytes list -> bytesval pack : a -> bytesval unpack : bytes -> a optionval length : bytes -> natval concat : bytes -> bytes -> bytesval sub : nat -> nat -> bytes -> bytesendPrint module signature (!2924 by lesenechal.remi)
Details :
A new command
ligo print signature
to print module signature.[#2021] Allow user to choose faster implementations for LSP completions (!2827 by Sorokin-Anton)
Details :
Added new faster implementations for the LSP completion request. If LIGO LSP stuck while computing completions, you can choose other implementations in the VSCode extension settings.
Fixed :
Fix: handle tick
'
in CameLIGO'sT_ForAll
(!3006 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[#2087] Fix false negative for dynamic entrypoints (!3004 by DK318)
Details :
Fix false negative errors for dynamic entry points (
Cannot unify ...
). Now dynamic entry points are typed correctly in the LSP.[Chore] Remove ghost_ident from hover (!3000 by XJIE6)
Details :
Unresolved
appears instead of ghost tokens on hover requestFix: interpreter case for loops (!2983 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: make monomorphisation descent into E_raw_code for %michelson (!2982 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Print attribute values between quotes in CameLIGO + remove blank line after comments (!2978 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: dynamic entries in top-level module and stdlib (!2976 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
#1689 Filter errors related to tokens generated by error recovery (!2971 by XJIE6)
Details :
The LSP now filters false-negative errors about ghost identifiers.
Draft: [#1962] Fix broken links to library files (!2967 by DK318)
Details :
Fixed a bug with broken document links to library files. Now if you
ctrl+click
them it'll show you the correct file.Module name mangling for #import (!2965 by rinderkn)
Details :
The internal name mangling for imported modules was incomplete and non-injective.
[#1748] Fix mangled module names on hovering (!2961 by DK318)
Details :
Fixed mangled module names on imports hovering. Now you can see the correct file paths like:
module K = "../A.mligo"Fix changelog generation (!2959 by Laucans)
Details :
No details provided for this change. Please visit the MR to learn more
1.1.0
Run this release with Docker:
docker run ligolang/ligo:1.1.0
Added :
Interfaces and module types: implement
extends
/include
(!2936 by er433)Details :
Here is an example showing
include
inmodule type
:module type FA0 = sigtype t[@entry] val transfer : unit -> t -> operation list * tendmodule type FA0EXT = siginclude FA0[@entry] val transfer2 : unit -> t -> operation list * tendmodule FA0Impl : FA0 = structtype t = unit[@entry] let transfer (_ : unit) (_ : t) : operation list * t = ([], ())endmodule FA0EXTImpl : FA0EXT = structinclude FA0Impl[@entry] let transfer2 (_ : unit) (_ : t) : operation list * t = ([], ())endHere is an example showing JsLIGO's new features:
interface FABase {type t;};interface FA0 extends FABase {@entry const transfer : (_u : unit, s : t) => [list<operation>, t];};interface FA0Ext extends FA0 {@entry const other1 : (_u : unit, s : t) => [list<operation>, t];};interface FA1 extends FABase {@entry const other2 : (_u : unit, s : t) => [list<operation>, t];};namespace Impl implements FA0Ext, FA1 {type t = int;@entry const transfer = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@entry const other1 = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@entry const other2 = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];};interface FAAll extends FA0Ext, FA1 {@entry const other3 : (_u : unit, s : t) => [list<operation>, t];@view const v1 : (_u : unit, s : t) => t;};namespace ImplAll implements FAAll {type t = int;@entry const transfer = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@entry const other1 = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@entry const other2 = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@entry const other3 = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@view const v1 = (_u : unit, s : t) : t => s;/* foo, other4 and v2 are not in FAAll, but still added, because filteringis not enabled */export const foo = (s : t) : t => s;@entry const other4 = (_u : unit, s : t) : [list<operation>, t] => [list([]), s];@view const v2 = (_u : unit, s : t) : t => s;}const test = do {let orig = Test.originate(contract_of(ImplAll), ImplAll.foo(42), 0tez);let p : parameter_of ImplAll = Other4();Test.transfer_exn(orig.addr, p, 1mutez);}Draft: [#2076] Support entrypoint and view related errors in LSP (!2927 by Sorokin-Anton)
Details :
LSP server now displays errors related to invalid entrypoints/views
Internal: add new
@deprecated
attribute to CameLIGO (!2926 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Draft: [#1762] Implement dumping CST in the compiler (!2620 by DK318)
Details :
Adds a
ligo info dump-cst
command which is useful for the debugger. It prints contracts CST in JSON format (supported only for CameLIGO and JsLIGO).
Fixed :
[fix] Ensure BLST_PORTABLE is 'y' during build on CI (!2952 by Laucans)
Details :
Fix
old processor can raise an illegal hardware instruction
which can be raised with old processors. Avoid Tezos submodule emit ADX instructions.Error handling: use passes errors instead of failwith in 04-nanopasses' trivial (!2949 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
List-declarations: fix
--only-ep
for non-generated@entry
marked (!2947 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[#2056] Add basic support for sig items in scopes (!2946 by heitor.toledo)
Details :
Resolved some false negative errors in the LSP regarding interfaces and signatures and added some very basic support for them. Support for code navigation will come later.
Package management: fixes wrong error message when package is not found (!2939 by prometheansacrifice)
Details :
When a package cannot be found on the registry, error message now says "Package cannot be found", instead of the earlier "Unable to access registry..."
Suppress opt_cond Michelson optimization for debugging (!2935 by tomjack)
Details :
Disable
opt_cond
Michelson optimization when debugging.Fixes link-dev version parsing (!2931 by shubham-kumar)
Details :
Fixes #2077 by adding an additional check on the input string when parsing the nodes in the lockfile. This check of input string looks for the default node which is why the install part is breaking. In future the default node would be removed. So this is a fix to manage the temporary pattern of lockfile which was adopted to carry the same pattern of lockfile as esy.
Replace protocol list with Oxford (!2921 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[#1741] Add project root support (!2830 by XJIE6)
Details :
ligo lsp
now looks forligo.json
to determine the project root. If not present, the language server will request the user to create one when opening a new file.
1.0.0
Run this release with Docker:
docker run ligolang/ligo:1.0.0
Breaking :
stdlib: Cleanup of Test module (!2893 by lesenechal.remi)
Details :
standard library: Refactoring of the
Test
moduleReplace _esy directory with _ligo directory in package management alpha (!2883 by shubham-kumar)
Details :
Replace
_esy/ligo/installation.json
to_ligo/ligo/installation.json
Remove PascaLIGO (except parser) from compiler and tools (!2880 by Sorokin-Anton)
Details :
Remove the
--deprecated
flag that allowed users to work with PascaLIGO contracts. To compile a PascaLIGO contract you can use LIGO 0.73.0 with the--deprecated
flag or an older LIGO version.Upgrade syntax for JsLIGO decorators (!2873 by rinderkn)
Details :
Decorators in JsLIGO now follow the official format
@foo
and@foo("bar")
.Deprecate uncurried entrypoints and views (!2818 by alistair.obrien)
Details :
Deprecate uncurried entrypoints and views
Internal: make
import
in JsLIGO exported (!2815 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Deprecate CLI entry declaration (!2814 by lesenechal.remi)
Details :
Deprecation: entry-points can no longer be declared through the CLI. One must one the entry annotation in the source
New design for code generation and contract typing/kinding (!2810 by lesenechal.remi)
Details :
Deprecate
main
contracts. Single entry-point contract will now require a[@entry]
/@entry
annotation[Deprecation] View declaration through CLI (!2805 by lesenechal.remi)
Details :
Deprecation: views can no longer be declared through the CLI. One must one the view annotation in the source
File import: make
export
mandatory to export values/types/namespaces when importing modules from other files (!2796 by er433)Details :
When importing a file with
#import
, every definition was imported, even those not marked withexport
explicitly in JsLIGO, e.g. in previous versions we had:$ ligo compile expression jsligo y --init-file modules_export_importer.jsligo42$ cat modules_export_imported.jsligotype t = int;const x : t = 42;$ cat modules_export_importer.jsligo#import "modules_export_imported.jsligo" "M"const y : M.t = M.x;After this change,
export
is needed in JsLIGO to effectively export a declaration:$ ligo compile expression jsligo y --init-file modules_export_importer.jsligoFile "modules_export_importer.jsligo", line 3, characters 10-13:2 |3 | const y : M.t = M.x;Type "t" not found.The same applies for CameLIGO: after this change, declarations marked with
@private
are not exported.Jsligo: adopt TypeScript behavior on
_
variable [PLEASE DO NOT MERGE BEFORE 1.0] (!2674 by lesenechal.remi)Details :
Breaking change: if multiple
_
variable are bound in the same scope, it will result in an error (duplicate block-scoped variable) just as in TypeScript[JsLIGO] Refactoring of the CST and grammar (!2661 by rinderkn)
Details :
New pattern matching in JsLIGO
It follows a variant of tc39 proposal pattern matching.
E.g.
match (action) {when(Add(n)): n;when(Sub(n)): -n;}Draft: Default to @layout:comb everywhere (!1816 by tomjack)
Details :
Made @layout:comb the default layout for all variants, records, and tuple (
[a, b, ...]
/a * b * ...
) types.This is a BREAKING CHANGE!
If your contract needs to interoperate with existing contracts, contracts compiled with previous LIGO versions or other compilers, or existing standards or off-chain tools/clients/indexers/etc, you MUST verify this interop still works after this change. Testing with
ligo test
or by compiling a fresh set of contracts is generally not sufficient! You must test against the actual contracts as they are deployed or will be deployed.For more info, see the FAQ pages on how to deal with this change and why this happened.
Added :
deprecate --package-management-alpha flag (!2909 by shubham-kumar)
Details :
Package management backend no longer uses esy by default. Using esy is now opt-in and requires
--legacy-package-management
optionJsLIGO: added
_
as a parameter in function types. (!2891 by rinderkn)Details :
We allow
_
as a parameter name in JsLIGO's function types.[JsLIGO] Allow _ as an expression (!2890 by rinderkn)
Details :
Underscore is now accepted everywhere a variable is accepted.
CLI: Forgot password command (!2875 by prometheansacrifice)
Details :
Adds a CLI command for ligo registry users to reset their password.
ligo registry forgot-passwordFor security reasons, existing users would need a valid session token already since we dont have their emails. The CLI would ask them for their email to send the password reset link. If they don't have a valid session token, they'll have to reach out to support.
New users dont need this, since we start asking their emails when they create an account with us.
Code injection: new code injection for directly using
CREATE_CONTRACT
+of_file
(!2860 by er433)Details :
A new code injection is available for calling
CREATE_CONTRACT
of a.tz
file.In CameLIGO,
[%create_contract_of_file "file.tz"]
will be expanded to a function of typekey_hash option -> tez -> 's -> operation * address
. It can be used as follows:[@entry]let main (u : unit) (_ : unit) : operation list * unit =let op, _addr = [%create_contract_of_file "./interpreter_tests/contract_under_test/compiled.tz"] None 1tez u in[op], ()In JsLIGO,
(create_contract_of_file
file.tz)
will be expanded to a function of type<s>(k: option<key_hash>, t: tez, s:storage) => [operation, address]
. It can be used as follows:@entryconst main = (u : unit, _ : unit) : [list<operation>, unit] => {let [op, _addr] = (create_contract_of_file `./interpreter_tests/contract_under_test/compiled.tz`)(None(), 1tez, u);return [list([op]), []]}Notice that the parameter passed for storage must have a type that compiles to the type expected as storage of the contract in the
.tz
file. In case of a mismatch, a type error will be present when typing the resulting Michelson contract. In the examples above, the contract's storage type isunit
, and the argument passed as storage to the function (u
) has that type.Some minor improvements on the refactoring of JsLIGO (!2853 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Prompt user for email in case they lose their password (!2840 by prometheansacrifice)
Details :
add-user
now prompts for email so that users can reset their passwords.Draft: Dynamic entries V3 (!2831 by lesenechal.remi)
Details :
Dynamic entrypoints helpers in LIGO
[#1994] Display TZIP-16 storage checks in the LSP (!2820 by heitor.toledo)
Details :
Warnings related to a contract's storage should now be displayed by the language server for TZIP-16 compliance. These warnings are only visible if there is a top-level definition called
storage
with an appropriate storage type.In addition, more diagnostics will be shown, such as ones for unused variables.
Package management: use ligo.json instead of package.json or esy.json (!2817 by prometheansacrifice)
Details :
Users can now use a
ligo.json
file to manage dependencies instead ofpackage.json
Existing projects withesy.json
orpackage.json
will be prompted to rename their manifests.ligo
will automatically generate new lock files under the directoryligo.esy.lock
. Users can check this folder into their version controll system for reproducibility.Compilation: add
--function-body
to expression compilation (!2811 by er433)Details :
Add a new flag --function-body to CLI
compile expression
command to compile function bodies (useful for compiling views)Remove Esy usage for package management in install.ml with the following... (!2785 by shubham-kumar)
Details :
Removing esy from ligo package management - phase 1. This encompasses installing and updating packages from package.json. While trying to maintain compatibility with the current pre-processor (hence
_esy
andesy.lock
still remains the names of the directories forindex.json
andinstallation.json
) This doesn't include ad-hoc addition of packages to a ligo project usingligo install <pkg-name>
To use the new package manager use
--package-management-alpha
flag
Fixed :
Make view non-removed even if not exported (!2912 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
CLI: Package management: Adds ligo install package-name (!2904 by prometheansacrifice)
Details :
Alpha package management feature parity: Users can now specify package name via CLI
ligo install package-name --package-management-alphaSignatures: preserve them in
ast-typed
(!2900 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Compile parameter: alternative handling of single
@entry
contracts (!2898 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Interfaces: fix extra entries error (!2897 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
ligo dry-run bug fix (!2876 by lesenechal.remi)
Details :
Bug fix:
ligo dry-run
was not working on a single module-contract file[#2024] Fix promoted folding range tests (!2866 by heitor.toledo)
Details :
Fixed an issue with folding ranges using an incorrect range for JsLIGO variant types with a leading vertical bar.
More tweaks to JsLIGO (!2859 by rinderkn)
Details :
[JsLIGO] Documented
do { ... }
expression (in pattern matching).[JsLIGO] Fixed pretty-printing of constant constructors.[JsLIGO] Fixed spacing after pretty-printing ofcontract_of
.JsLIGO: fix
function
type ascr. (!2852 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[CameLIGO] Signature annotations in module declarations were not pretty-printed. (!2826 by rinderkn)
Details :
Fixed the formatting (a.k.a. pretty-printing) of signatures in module declarations.
0.73.0
Run this release with Docker:
docker run ligolang/ligo:0.73.0
Added :
Update to 018-Proxford (!2833 by ulrikstrid)
Details :
Upgrade LIGO to use the oxford protocol
CLI: adds unpublish command to remove a package from registry (!2794 by prometheansacrifice)
Details :
Group
publish
,login
andadd-user
commands under aligo registry
subcommand.Addligo registry unpublish
command to remove a package or a specific version of it from the registry Summary[--package-name Name] . of the package on which publish/unpublish isexecuted[--package-version Version]. of the package on which publish/unpublish isexecutedTo unpublish a package, run
ligo registry unpublish --package-name <name> --package-version <version>
from anywhere on the CLI (not necessarily from within a project)Examples,
ligo registry unpublish --package-name foo --package-version 1.0.0--package-version
is optional, omitting which the entire package is unpublished.
0.72.0
Run this release with Docker:
docker run ligolang/ligo:0.72.0
Added :
new checking rules on contextual expressions (!2795 by lesenechal.remi)
Details :
Improve typechecker inference across contextual expressions (e.g.
let .. in
,type .. in
,module .. in
)
Fixed :
Internal: add missing case
E_let_mut_in
for contextual expressions checking (!2809 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[JsLIGO] Fixed pretty-printing of line comments (!2803 by rinderkn)
Details :
[JsLIGO] Fixed pretty-printing of line comments within conditionals.
0.71.1
Run this release with Docker:
docker run ligolang/ligo:0.71.1
Added :
CameLIGO: Add
mut
ability ,for
loops, andwhile
loops (!2254 by alistair.obrien)Details :
Add mutable variables, the assignment operator,
for
loops, andwhile
loops to CameLIGO.let do_something g n =let mut x = 1 infor j = 1 to n dowhile x < 10 dox := g i j x;doneend;x
Fixed :
Get back esy from Docker image (!2797 by prometheansacrifice)
Details :
Fixes the docker image which was missing esy
[Chore] Fix updating the newest version of LIGO (!2790 by heitor.toledo)
Details :
Bump version to 0.0.20230804 to follow LIGO's version and make the extension recognize this LIGO version.
Mutation: complete
E_application
decompilation case for multisig (!2789 by er433)Details :
No details provided for this change. Please visit the MR to learn more
0.71.0
Run this release with Docker:
docker run ligolang/ligo:0.71.0
Added :
Added --no-layout and --no-regions to ParserMain.exe (!2783 by rinderkn)
Details :
I added --no-layout and --no-regions to ParserMain.exe
Metadata TZIP-16: add warning on metadata URI/JSON when compiling storage (Michelson) (!2718 by er433)
Details :
New checks for metadata TZIP-16 are included.
Fixed :
Monomorphisation: add commutation with
let
(!2763 by er433)Details :
No details provided for this change. Please visit the MR to learn more
0.70.1
Run this release with Docker:
docker run ligolang/ligo:0.70.1
Fixed :
Preserve bound vars in match compiler (using lets) (!2756 by tomjack)
Details :
Debugger: preserve bound variables in pattern matching.
fix module open in module_open_restriction (!2723 by lesenechal.remi)
Details :
Fix a bug where nested namespace module type application were rejected
0.70.0
Run this release with Docker:
docker run ligolang/ligo:0.70.0
Added :
CLI: add
--skip-generated
inlist-declarations
sub-command (!2747 by er433)Details :
A new flag for
info list-declarations
allows to prevent printing the generated$main
entrypoint:$ cat b.jsligotype storage = int;type ret = [list<operation>, storage];@entryconst increment = (delta: int, store: storage): ret => [list([]), store + delta];@entryconst decrement = (delta: int, store: storage): ret => [list([]), store - delta];@entryconst reset = (_: unit, _: storage): ret => [list([]), 0];$ ligo info list-declaration --display-format dev --only-ep --skip-generated b.jsligob.jsligo declarations:resetdecrementincrementNew sub-command:
compile view
for off-chain view compilation (!2737 by er433)Details :
The new sub-command
compile view
allows to compile views directly. This can be useful for compiling off-chain views to be used in metadata:$ cat off_view.mligolet main (p : int) (s : int) : operation list * int = [], p + slet v (p : string) (s : int) : int = String.length p + s$ ligo compile view off_view.mligo v --michelson-format json{"parameter":{"prim":"string"},"returnType":{"prim":"int"},"code":[{"prim":"UNPAIR"},{"prim":"SIZE"},{"prim":"ADD"}]}CameLIGO: add modules inclusion directive (!2629 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed :
Fixed pretty-printing of JsLIGO annotations (attributes) when they have no arguments. (!2748 by rinderkn)
Details :
Predefined, constant JsLIGO annotations, like
@entry
, are now formatted outside of a line comment.[Chore] Dialect config bugfix (!2741 by XJIE6)
Details :
No details provided for this change. Please visit the MR to learn more
[JsLIGO] Bug fix: The Attributes self-pass used Make instead of MakeDefault,... (!2733 by rinderkn)
Details :
Fixed bug in the lexing of JsLIGO: the CLI was incorrectly read and could lead to a runtime error.
[Chore] Menhir version upgrade (!2706 by XJIE6)
Details :
No details provided for this change. Please visit the MR to learn more
list-declaration also lists entries with attributes (!2635 by lesenechal.remi)
Details :
list-declaration
command also print entries (declaration with attributeentry
) when used with--only-ep
0.69.0
Run this release with Docker:
docker run ligolang/ligo:0.69.0
Breaking :
[Chore] Remove
ligo daemon
(!2690 by heitor.toledo)Details :
Removed the
ligo daemon
command. It was previously used by the old language server to create a persistent LIGO process, but it is hacky and offered no performance improvements, so we delete it.JsLIGO: enforce
export
keyword (!2684 by er433)Details :
In JsLIGO, the
export
keyword was not enforced, thus effectively exporting all declarations in namespace.With this change, the
export
becomes mandatory to export from namespaces (and top-level.jsligo
when imported from another file).
Added :
Implicit casting: booleans (!2704 by er433)
Details :
When checking an expression for a boolean, certain values are "casted" implicitly:
n : nat
is true iff0 < n``n : int
is true iff0 <> n``n : tez
is true iff0 < n``s : string
is true iff"" < s``b : bytes
is true iffempty-bytes < b``xs : 'a list
is true iffxs = []``xs : 'a set
is true iff0 < Set.cardinal xs``m : ('a, 'b) map
is true iff0 < Map.size m
Now values of types such asnat
,int
,tez
,string
,bytes
, lists, maps and sets can be used in conditions, and are casted automatically tobool
:const f = (s : list<int>) => {let _s = s;let k = 0;while (_s && k < 3) {_s = Option.unopt(List.tail_opt(_s));k++;};return k;};[#1698][#1674] Make LSP hovers prettier (!2465 by Sorokin-Anton)
Details :
Improve the LSP hovers
Fixed :
Fixed transpilation of "True", "False" and "Unit". (!2717 by rinderkn)
Details :
Fixed transpilation from PascaLIGO to JsLIGO of predefined data constructors "True", "False" and "Unit" as values (patterns remain unchanged).
[JsLIGO][Formatter] Force hardline after each field of a compound structure, so a possible line comment does not absorb the next component (!2714 by rinderkn)
Details :
Fixed a bug in pretty-printing JsLIGO record fields followed by line comments.
Fixing source positions in bytes (!2711 by rinderkn)
Details :
Fixed source position counting for tokens.
[Chore] Fix pretty printing of CameLIGO parametric types (!2710 by heitor.toledo)
Details :
Code using parametric types in CameLIGO would be formatted invalidly. For example, given this:
let id (type t) : t -> t = fun x -> xAfter formatting, it would produce invalid code, like so:
let id(typet) : t -> t = fun x -> xThis has now been fixed.
Resolve "Functional record update is broken for nested records" (!2707 by lesenechal.remi & melwyn95)
Details :
The change fixes a bug in record update
Example
type level1 = {foo : int;bar : int;buz : int;}type level2 = {l1 : level1;fiz : int;}type level3 = {l2 : level2;buz : int;}let update (s , n: level3 * int) : level3 ={ s withbuz = n;l2.fiz = n;l2.l1.foo = n;l2.l1.bar = n;}let test () : level3 =let s : level3 = {buz = 0;l2 = {fiz = 0;l1 = {foo = 0;bar = 0;buz = 0;}}} inlet s1 = update (s, 5) inlet () = assert (s1.buz = 5) inlet () = assert (s1.l2.fiz = 5) inlet () = assert (s1.l2.l1.bar = 5) inlet () = assert (s1.l2.l1.foo = 5) ins1Before (0.68.0)
$ ligo.68 run interpret 'test ()' --init-file update.mligofailed with: "failed assertion"After
$ ligo run interpret 'test ()' --init-file update.mligorecord[buz -> 5 ,l2 -> record[fiz -> 5 , l1 -> record[bar -> 5 , buz -> 0 , foo -> 5]]][Chore] Fix bug with wrong
to_point
to_byte
conversion (!2699 by XJIE6)Details :
No details provided for this change. Please visit the MR to learn more
[Chore] Fix document links on Linux (!2698 by Sorokin-Anton)
Details :
Fixed a regression where document links were not appearing for Linux.
[#1950] Fix completion stack overflow with shadowed module (!2697 by heitor.toledo)
Details :
Fix a stack overflow with a module alias shadowing a module during a completion. For example, in this:
namespace X {const x = 1};import X = X;const y = X.Trying to complete
X.
would cause a failure.Fixing transpilation PascaLIGO to JsLIGO (!2693 by rinderkn)
Details :
Transpilation from PascaLIGO to JsLIGO was fixed. Pretty-printing of JsLIGO was fixed.
0.68.0
Run this release with Docker:
docker run ligolang/ligo:0.68.0
Added :
Contract Metadata - Check storage metadata type (!2628 by nicolas.van.phan)
Details :
For a contract with TZIP-16 non-compliant metadata, such as the following :
// metadata with incorrect formattype storage = {data : int,metadata : nat, // Should be big_map<string, bytes>};type param = int;type ret = [list<operation>, storage];// Dummy entrypointconst main = (_p : param, s : storage) : ret =>[list([]), s];The compiler will now throw a warning on
ligo compile contract
andligo compile storage
.The warning is suppressible using the
--no-metadata-check
flag.Before
> ligo compile contract 'example.jsligo'{ parameter int ;storage (pair (int %data) (nat %metadata)) ;code { CDR ; NIL operation ; PAIR } }After
> ligo compile contract 'example.jsligo' --no-colorFile "example.jsligo", line 4, characters 13-16:3 | data : int,4 | metadata : nat, // Should be big_map<string, bytes>5 | };:Warning: If the following metadata is meant to be TZIP-16 compliant,then it should be a 'big_map' from 'string' to 'bytes'.Hint: The corresponding type should be :big_map<string, bytes>You can disable this warning with the '--no-metadata-check' flag.{ parameter int ;storage (pair (int %data) (nat %metadata)) ;code { CDR ; NIL operation ; PAIR } }> ligo compile contract --no-metadata-check 'example.jsligo'{ parameter int ;storage (pair (int %data) (nat %metadata)) ;code { CDR ; NIL operation ; PAIR } }Support
[%of_file]
and string code injection in[%michelson]
(!2556 by er433)Details :
No details provided for this change. Please visit the MR to learn more
[#1651] Implement completion (!2527 by heitor.toledo)
Details :
Added support for completion in the LIGO Language Server. Supported completions include:
Variable, module, and type names.Record fields.Module fields.Keywords and operators.
Fixed :
regression: cameligo type puning (!2688 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Fix (nanopass
LET_SYNTAX
): use location from rhs instead of global one (!2652 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Fixed pretty-printing of for-loops (extra semicolon). (!2651 by rinderkn)
Details :
Fixed pretty-printing of for-loops in JsLIGO.
[Hotfix] Fix regression in the compilation process (!2650 by melwyn95)
Details :
Fixed a bug related to compiling functions
Draft: [#1920] Prevent diags from other files to be shown (!2646 by heitor.toledo)
Details :
Fixed an issue causing diagnostics from other files to be incorrectly shown in the current file.
[#1744] Fix document link on Windows (!2640 by Sorokin-Anton)
Details :
Fixed LSP "document link" feature on Windows
CameLIGO: add support for module access in type application (!2639 by melwyn95)
Details :
Type application for parametric types inside modules is fixed in this MR
Example
module Foo = structtype 'a t = Bar of 'atype ('a, 'b) s = 'a tendtype ('a, 'b) baz = ('a, 'b) Foo.slet test1 : int Foo.t = Bar 42let test2 : (int, string) baz = test1Result
$ ligo run test x.mligoEverything at the top-level was executed.- test1 exited with value Bar (42).- test2 exited with value Bar (42).Fix Testing Framework in the JSOO build (!2470 by prometheansacrifice)
Details :
Fixes testing framework in
ligo.js
Performance :
Perf: Implement a new algorithm for pattern matching compilation to reduce code size (!2655 by melwyn95)
Details :
We implement a new algorithm for the pattern-matching compiler which reduces the size of generated code in some cases.
In some cases we observed upto 80% reduction in generated code.
Example
type t = A | Btype p = (t * t * t * t)let main (p : p) (_ : int) : operation list * int =[], (match p withA,A,A,A -> 1| B,B,B,B -> 1| _,A,A,A -> 2| _,B,B,B -> 2| _,_,A,A -> 3| _,_,B,B -> 3| _,_,_,A -> 4| _,_,_,B -> 4)Before
$ ligo.67 info measure-contract x.mligo3920 bytesAfter
$ ligo info measure-contract x.mligo468 bytes
0.67.1
Run this release with Docker:
docker run ligolang/ligo:0.67.1
0.67.0
Run this release with Docker:
docker run ligolang/ligo:0.67.0
Breaking :
[JsLIGO] Support for a set of TS decorators (!2619 by rinderkn)
Details :
[JsLIGO] TypeScript decorators can now be used in stead of predefined attributes. Documentation to follow in another MR.
Added :
JsLIGO: simple interfaces for namespace contracts (!2631 by er433)
Details :
There's a new
interface
keyword for defining interfaces to be used in contracts (as namespaces):interface ID {type storage;type ret = [list<operation>, storage];@entry const increment : (k: int, s: storage) => ret;@entry const decrement : (k: int, s: storage) => ret;@entry const reset : (_u: unit, s: storage) => ret;};namespace IncDec implements ID {type storage = int;type ret = [list<operation>, storage];@entryconst increment = (delta : int, store : storage) : ret =>[list([]), store + delta];@entryconst decrement = (delta : int, store : storage) : ret =>[list([]), store - delta];@entryconst reset = (_ : unit, _ : storage) : ret =>[list([]), 0];};Using
implements
, when defining a namespace, we can check that the namespace (contract) implements the interface. Type declarations in interfaces can be left without definition (e.g.storage
above), and the implementation can choose the concrete instance for the type.Move to Nairobi (!2608 by prometheansacrifice)
Details :
Upgrade LIGO to use the Nairobi protocol
CameLIGO: simple interfaces support (!2605 by er433)
Details :
In CameLIGO we introduce
module type
for describing simple contracts:module type I = sig(* `storage` is a type we don't know at this point *)type storage(* `result` is a type declaration *)type result = operation list * storage(* we can declare values to be entries *)[@entry] val foo : int -> storage -> result(* or just values *)val initial_storage : storageendWe can attach a signature to a module in a module declaration:
module C : I = structtype storage = inttype result = operation list * storage[@entry] let foo (x : int) (y : storage) : result = [], x + ylet initial_storage : storage = 42end
Fixed :
JsLIGO: allow final uppercase in module path for types (!2634 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Printing trailing comments (attached to EOF) (!2623 by rinderkn)
Details :
Bug fix: Comments ending a contract are now pretty-printed (formatted by the editor).
Fix bug in pattern matching compiler (!2618 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
0.66.0
Run this release with Docker:
docker run ligolang/ligo:0.66.0
Breaking :
Clean up: remove support for
mutate cst
(!2607 by er433)Details :
Removed
mutate cst
sub-command (which was already previously disabled). Please use AST mutation from the testing framework.
Added :
Preserving of placement of line comments preceded by a token (CameLIGO and JsLIGO) (!2611 by rinderkn)
Details :
Line comments on the same line as a token are printed where they should be.
[JsLIGO] Add
for( ... ; ... ; ... ) { ... }
loop (!2601 by melwyn95)Details :
JsLIGO now supports
for
loopsExample
const getChar = (s: string, idx: nat): string => String.sub(idx, 1 as nat, s)const isPalindrome = (s: string): bool => {let length = String.length(s);let isP = true;for (let i = 0, j = length - 1 ; i <= j ; i++, j--) {isP = isP && getChar(s, abs(i)) == getChar(s, abs(j))}return isP;}const testPalindrome = (() => {Test.assert(isPalindrome("abba"));Test.assert(isPalindrome("ababa"));Test.assert(!isPalindrome("abcd"));Test.assert(!isPalindrome("abcde"));})();Result
$ ligo run test x.jsligoEverything at the top-level was executed.- testPalindrome exited with value ().Comment-preserving pretty-printing (!2596 by rinderkn)
Details :
Comment-preservation when formatting CameLIGO and JsLIGO.
CameLIGO: support for
let mut
, assignment and iteration (!2591 by er433)Details :
Add mutable variables, the assignment operator,
for
loops, andwhile
loops to CameLIGO.let do_something g n =let mut x = 1 infor j = 1 upto n dowhile x < 10 dox := g i j x;doneend;x[JsLIGO]: Add increment & decrement operators (
++
&--
) (!2587 by melwyn95)Details :
This MR adds to increment & decrement operators (
++
&&--
) to JsLIGO.For example
const testIncDec = (() => {let inc = 0;// Prefix increment operatorassert(++inc == 1);// Postfix increment operatorassert(inc++ == 1);assert(inc == 2);let dec = 10;// Prefix decrement operatorassert(--dec == 9);// Postfix decrement operatorassert(dec-- == 9);assert(dec == 8);})();Result
$ ligo run test x.jsligoEverything at the top-level was executed.- testIncDec exited with value ().
Fixed :
JsLIGO: allow uppercase type parameters (!2614 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Draft: [JsLIGO] Removal of automatic insertion of vertical bars in type expressions (!2613 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework:
Rejected
return type (!2609 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Preserving comment type (block or line) by pretty-printing. (!2606 by rinderkn)
Details :
With the last release of LIGO, the pretty-printers of CameLIGO and JsLIGO transformed all comments into block comments. This is a mistake, as block comments can be nested.
Performance :
Internal: replace environment for signature and do separate typing (!2577 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
0.65.0
Run this release with Docker:
docker run ligolang/ligo:0.65.0
Added :
Add
--library
CLI option to commands (!2579 by melwyn95)Details :
The
--library
CLI option is now supported in all relevant LIGO commandsInternal: move environment with types to stdlib (!2551 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed :
Testing framework: set gas_limit to maximum for all operations (!2568 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
[#1741] Set --project-root in files (!2557 by heitor.toledo)
Details :
When trying to import packages downloaded from the LIGO registry, the LSP would show that the file was not found. This behavior has been fixed.
Currently, the project root is set as the directory of the currently opened file. This will be resolved in a later issue.
0.64.3
Run this release with Docker:
docker run ligolang/ligo:0.64.3
Added :
JsLIGO: list concatenation helper (!2560 by er433)
Details :
Introduce a new way of doing list concatenation in JsLIGO:
const xs = list([1, 2, 3]);const ys = list([4, 5]);const zs = list([...xs, ...ys]);Mumbai protocol: fix Windows and Macos CI (!2535 by prometheansacrifice)
Details :
Fix windows & macos builds. Now LIGO with the tezos protocol Mumbai is available on Windows & MacOS
Fixed :
Fix CLI option
-e
forcompile parameter
&compile storage
(!2570 by melwyn95)Details :
The CLI option
-e
for passing entrypoint has been fixedligo compile parameter
&ligo compile storage
Example
let main (_ : unit) (_ : unit) : operation list * unit = [], ()let ep2 (_ : string) (s : int) : operation list * int = [], sBefore
$ ligo.64 compile parameter x.mligo '"Hello"' -e ep2Invalid command line argument.The provided parameter does not have the correct type for the given entrypoint.File "x.mligo", line 1, characters 0-63:1 | let main (_ : unit) (_ : unit) : operation list * unit = [], ()2 |Invalid type(s).Expected: "unit", but got: "string".$ ligo.64 compile storage x.mligo '1' -e ep2Invalid command line argument.The provided storage does not have the correct type for the contract.File "x.mligo", line 1, characters 0-63:1 | let main (_ : unit) (_ : unit) : operation list * unit = [], ()2 |Invalid type(s).Expected: "unit", but got: "int".After
$ ligo compile parameter x.mligo '"Hello"' -e ep2"Hello"$ _build/install/default/bin/ligo compile storage x.mligo '1' -e ep21[#1755] Fix Polymorphism errors look strange in LSP (!2559 by melwyn95)
Details :
Fixes the difference in error messages between CLI & LSP dianostics. Now the type error messages will be consistent across CLI & LSP.
Performance :
Minify debugger JSON (!2295 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
0.64.2
Run this release with Docker:
docker run ligolang/ligo:0.64.2
Breaking :
Rework transpilation syntax CLI options (!2501 by nicolas.van.phan)
Details :
Before
> ligo transpile contract input.ligoError parsing command line:missing anonymous argument: SYNTAXFor usage information, runligo transpile contract -help> ligo transpile contract --from-syntax pascaligo input.ligo --to-syntax jsligoError parsing command line:unknown flag --from-syntaxFor usage information, runligo transpile contract -helpligo transpile contract input.ligo -o output.jsligoError parsing command line:missing anonymous argument: SYNTAXFor usage information, runligo transpile contract -helpAfter
> ligo transpile contract input.ligoTranspilation target syntax is not specified.Please provide it using the --to-syntax optionor by specifying an output file with the -o option> ligo transpile contract --from-syntax pascaligo input.ligo --to-syntax jsligo# 1 "input.ligo"# 1 "input.ligo"type storage = int;type parameter = | ["Increment", int] | ["Decrement", int] | ["Reset"];...const main =(action: parameter, store: storage): @return =>[list([]) as list<operation>, match(action, { Increment: n => add(store, n), Decrement: n => sub(store, n), Reset: () => 0})];> ligo transpile contract input.ligo -o output.jsligoDeprecate katmandu (!2500 by lesenechal.remi)
Details :
deprecation of protocol Kathmandu
Entrypoints
parameter_of
: new keyword for obtaining contract's (from module) parameter (!2476 by er433)Details :
A new keyword is introduced:
parameter_of
. It can be used to obtain the type of a contract (from a module/namespace):namespace C {type storage = int;// @entryconst increment = (action: int, store: storage) : [list <operation>, storage] => [list([]), store + action];// @entryconst decrement = (action: int, store: storage) : [list <operation>, storage] => [list([]), store - action];};const test_increment = (() => {let initial_storage = 42;let [taddr, _, _] = Test.originate_module(contract_of(C), initial_storage, 0 as tez);let contr : contract<parameter_of C> = Test.to_contract(taddr);let p : parameter_of C = Increment(1);let _ = Test.transfer_to_contract_exn(contr, p, 1 as mutez);return assert(Test.get_storage(taddr) == initial_storage + 1);}) ();As in the case of
contract_of
, nowparameter_of
becomes reserved. To still useparameter_of
as an identifier,@
can be prepended.
Added :
Underline red snippet output in no-color mode (!2547 by nicolas.van.phan)
Details :
For the following piece of code, with a string that has nothing to do here :
let main {| I should be underlined inerror message with no-color andI am a long message spreadingon 4 lines |} blah-blahBefore
> ligo compile contract --no-color contract.mligoFile "contract.mligo", line 2, character 9 to line 5, character 15:1 |2 | let main {| I should be underlined in3 | error message with no-color and4 | I am a long message spreading5 | on 4 lines |} blah-blahIll-formed value declaration.At this point, one of the following is expected:* parameters as irrefutable patterns, e.g. variables, if defining afunction;* the assignment symbol '=' followed by an expression;* a type annotation starting with a colon ':';* a comma ',' followed by another tuple component, if defining atuple.After
> ligo compile contract --no-color contract.mligoFile "contract.mligo", line 2, character 9 to line 5, character 15:1 |2 | let main {| I should be underlined in^^^^^^^^^^^^^^^^^^^^^^^^^^^^3 | error message with no-color and^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^4 | I am a long message spreading^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^5 | on 4 lines |} blah-blah^^^^^^^^^^^^^^^Ill-formed value declaration.At this point, one of the following is expected:* parameters as irrefutable patterns, e.g. variables, if defining afunction;* the assignment symbol '=' followed by an expression;* a type annotation starting with a colon ':';* a comma ',' followed by another tuple component, if defining atuple.Add
Proxy_ticket
to std_lib (!2528 by melwyn95)Details :
The new
Proxy_ticket
module available in the LIGO std_lib provides a way to test contrast with ticketsFor example
If we want to originate a contract with ticket values as its initial storage, we can do
type storage = (bytes ticket) optiontype unforged_storage = (bytes unforged_ticket) optionlet main (() : unit) (s : storage) : operation list * storage =[] , (match s with| Some ticket ->let (_ , t) = Tezos.read_ticket ticket inSome t| None -> None)let test_originate_contract =let mk_storage = fun (t : bytes ticket) -> Some t inlet ticket_info = (0x0202, 15n) inlet addr = Test.Proxy_ticket.originate ticket_info mk_storage main inlet storage : michelson_program = Test.get_storage_of_address addr inlet unforged_storage = (Test.decompile storage : unforged_storage) in(* the ticket 'unforged_storage' can be manipulated freely without caring about ticket linearity *)match unforged_storage with| Some { ticketer=_ ; value ; amount } ->let () = Test.log ("unforged_ticket", unforged_storage) inlet () = assert (value = ticket_info.0) inlet () = assert (amount = ticket_info.1) in()| None -> failwith "impossible"Result
$ ligo run test x.mligo("unforged_ticket" , Some ({amount = 15n ; ticketer = KT1GAXjgbyNsXRj4trR23YRzQdLQV3uA2oXG ; value = 0x0202}))Everything at the top-level was executed.- test_originate_contract exited with value ().Testing framework: add support for mutation of modules (!2526 by er433)
Details :
New primitives for doing mutation testing on module/namespace contracts in
Test
:let originate_module_and_mutate : (contract: module_contract<'p, 's>, init: 's, balance: tez, (tester: (originated_address: typed_address<'p, 's>, code: michelson_contract, size: int) => 'b)) => option<['b, mutation]>let originate_module_and_mutate_all : (contract: module_contract<'p, 's>, init: 's, balance: tez, (tester: (originated_address: typed_address<'p, 's>, code: michelson_contract, size: int) => 'b)) => list<['b, mutation]>Example in JsLIGO
#import "./contract_under_test/module_adder.mligo" "Adder"const _tester = (a : typed_address<parameter_of Adder, int>, _ : michelson_contract, _ : int) : unit => {let c : contract<parameter_of Adder> = Test.to_contract(a);/* Test 1 */let _ = Test.transfer_to_contract_exn(c, Add(0), (0 as tez));Test.assert(Test.get_storage(a) == 0);/* Test 2 */let _ = Test.transfer_to_contract_exn(c, Add(1), (0 as tez));Test.assert(Test.get_storage(a) == 1);};const test = (() : unit => {let l = Test.originate_module_and_mutate_all(contract_of(Adder), 0, (0 as tez), _tester);Test.log(l);})();Example in CameLIGO
#import "./contract_under_test/module_adder.mligo" "Adder"let _tester (a : (Adder parameter_of, int) typed_address) (_ : michelson_contract) (_ : int) : unit =let c : (Adder parameter_of) contract = Test.to_contract a in(* Test 1 *)let _ = Test.transfer_to_contract_exn c (Add 0) 0tez inlet () = assert (Test.get_storage a = 0) in()let test =Test.originate_module_and_mutate_all (contract_of Adder) 0 0tez _testerLigo analytics collection (!2506 by Laucans)
Details :
Why
Deprecation of Pascaligo has been done following the result of a google form.
After deprecation, community disagree. Looks like the community who answer to form is not representative to the one who use the compiler. We want to have a better understanding of our users for the future.
For this we will bring analytics into ligo which gonna be passive collection of feedback from our user.
Agreement
Interactive
Because privacy is important for us, datas are anonymized. If you don't want to collect data you can deny. Still possible to change your mind by using
ligo analytics accept
orligo analytics deny
Agreement answer will be stored in ~/.ligo/term_acceptance.Docker, non-interactive
In docker analytics is activated by default. It's possible to use the environment variable LIGO_SKIP_ANALYTICS or the flag
--skip-analytics
describe belowUsing the CLI
A new flag
--skip-analytics
has been introduced on every command to skip analytics collection once.Through environment variable
If the environment variable LIGO_SKIP_ANALYTICS is set, it'll skip analytics
How datas are anonymized
To identify your project, unique ID is generated and stored in
.ligo/repository_id
. Commit and push this file will help us to understand our users.To identify you as user, a file is generated in
~/.ligo/user_id
. If you are using ligo in docker. user_id will not be generated and replaced bydocker
in our data.If you denied analytics, these file still generated
CI
If ligo is used through scripts or CI analytics will not be collected.
If your CI use docker, Use the new image ligo_ci to avoid metrics to be collected.
Analytics example
Example of data collected : When user use compile command. We collect the id of the user, the id of the project, the version of ligo used, the syntax and protocol used and also the size of the project which has been compiled. When user use ligo init. We collect the id of the user, the id of the project, the version of ligo used, the syntax and protocol used and also the template used to generate project
Upgrade to protocol Mumbai (!2505 by melwyn95)
Details :
Upgrade LIGO to use the Mumbai protocol
Additions
Add support for bitwise operators on
bytes
Add support forbyest-nat
&bytes-int
conversionThe protocol supports working withtxr1
&scr1
addressesDeprecation
The type
tx_rollup_l2_address
has been disabled in the Mumbai protocolExample
[@entry] let main (_ : unit) (_ : bytes) : operation list * bytes =let b = bytes 123n in[], b land 0xfffflet test =let (taddr, _, _) = Test.originate main 0xffff 0tez inlet contr = Test.to_contract taddr inlet _ = Test.transfer_to_contract_exn contr () 1mutez inassert (Test.get_storage taddr = 0xffff land bytes 123n)Compilation
$ ligo compile contract x.mligo{ parameter unit ;storage bytes ;code { DROP ;PUSH nat 123 ;BYTES ;PUSH bytes 0xffff ;AND ;NIL operation ;PAIR } }Tests
$ ligo run test x.mligoEverything at the top-level was executed.- test exited with value ().[#1658] Support configuration: part 2 (!2503 by heitor.toledo)
Details :
The LIGO Language Server now supports a few new changes and fixes related to configuration, notably:
It's now possible to disable specific features from the Visual Studio Code extension. Check the README for more details.Fixed an exception that would be thrown when using the language server with Emacs related to decoding
null
from the configuration.The language server now respectsDeprecated
from the Visual Studio Code configuration and emits a warning when opening a PascaLIGO file if that is not set.Configuration changes may now be done dynamically. Previously, a language server restart would be required for changes to take effect.[#1655] LSP: Implement range formatting for toplevel statements (!2502 by Sorokin-Anton)
Details :
Added range formatting to LSP. It can be used to format all toplevel declarations in a given range.
Transpilation from PascaLIGO to JsLIGO (!2497 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Enable attributes after keyword "export" for declarations (!2489 by rinderkn)
Details :
Attributes are now allowed after the keyword "export" on declarations.
Disable declaration-shadowing warning on transpiled JsLIGO contracts (!2460 by nicolas.van.phan)
Details :
For a JsLIGO contracts with re-declared variables, like the following, with
x
re-declared :const x = 42;const x = 33;const main = ([_action, store] : [int, int]) : [list <operation>, int] => {return [(list([]) as list <operation>), // No operationsstore]};Compilation will throw the following error :
> ligo compile contract 'transpile_warn_shadowing.jsligo'File "transpile_warn_shadowing.jsligo", line 2, characters 10-12:11 | const x = 42;12 | const x = 33;13 |Cannot redeclare block-scoped variable.Compilation using the
--transpiled
flag will disable the warning.Before
> ligo compile contract 'transpile_warn_shadowing.jsligo' --transpiledError parsing command line:unknown flag --transpiledFor usage information, runligo compile contract -helpAfter
> ligo compile contract 'transpile_warn_shadowing.jsligo' --transpiled{ parameter int ; storage int ; code { CDR ; NIL operation ; PAIR } }Emit
E_inline_michelson
directly from%michelson
(!2238 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Fixed :
[#1701] Fix searching of references in other files (!2548 by heitor.toledo)
Details :
Fixed a bug where references would not be found sometimes in included/imported files. For example, suppose we have two contracts:
included.mligo
:let x = 1includer/includer.mligo
:#include "../included.mligo"let y = xThen opening
includer/includer.mligo
and looking for references ofx
would only find it in this file unlessincluded.mligo
has been opened previously. It will now find it in both.Note that this fix does not allow "back-includes" yet; looking for
x
inincluded.mligo
will find it inincluder/includer.mligo
if and only if that file has been previously opened as well.Resolve "Typo in warning message" (!2544 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Draft: [#1694] Disallow looking for defs from stdlib in rename/definition/type (!2543 by heitor.toledo)
Details :
The LSP previously allowed the users to try to see the definition of things defined in the stdlib. However, the stdlib is not available on the user's computer, so there is nothing to show.
To make things worse, the user could try to rename stdlib definitions and the LSP would try (but only rename local usages, not the definition).
For now, these operations are disallowed.
Bug: mixing
export
with attributes (!2540 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Bugfix: jsligo match (!2530 by lesenechal.remi)
Details :
Fix a bug in jsligo matching
Testing framework: internal management of views (!2524 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
unification: don't emit sub blocks in test clauses (!2523 by lesenechal.remi)
Details :
fix a bug where controlflow within if clauses was rejected
Testing framework: add support for untranspilation of bls12_381_g1/g2/fr (!2516 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Inline true, false, and unit (!2514 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Fix debugger environment edge case (!2509 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: add proper error message for
Tezos.call_view
with non-literal string as name (!2508 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Fix some debugger issues with source_type propagation (!2507 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: improve support for view uncurried functions (!2499 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
CLI: enable
dry-run
to use @entry (!2496 by er433)Details :
Additional fix: dry-run sub-command has been fixed to work with
@entry
in top-level.Add support for attributes before
namespace
in jsligo parser (!2487 by melwyn95)Details :
For a jsligo file
// @fooexport namespace D {export type titi = int;};// @foonamespace E {export type titi = int;export const toto = 42};/* @no_mutation */ exportconst toto: D.titi = E.toto;Before
$ ligo.62 print cst y.jsligoFile "y.jsligo", line 2, characters 7-16:1 | // @foo2 | export namespace D {3 | export type titi = int;Ill-formed export declaration.At this point, a value or type declaration is expected.After
$ ligo print cst y.jsligo<ast>├ Directive (y.jsligo:1:0-14)├ PP_Linemarker (1, "y.jsligo", None)├ SExport (y.jsligo:2:0-4:1)├ SNamespace (y.jsligo:2:7-4:1)├ <namespace> (y.jsligo:2:7-16)├ <attributes>| └ <attribute>| └ private...[#1715] Various improvements to the JsLIGO pretty printer (!2483 by heitor.toledo)
Details :
Improve the JsLIGO pretty-printer to have a more sensible output. For example suppose a code like this:
namespace C {export type bar = int;export type foo = [bar, bar];};Previously, the user might see something like this:
namespace C{export type bar = int;export type foo =[bar,bar]};Now, it will be much more sensible (like the original code).
Resolve "Ligo 0.59.0+ breaks MR 2048 (Make [@annot:] mean no annotation)." (!2475 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Performance :
Performance: changes in build paths and typer's application (!2512 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Nanopasses (!2425 by lesenechal.remi)
Details :
frontend: syntax unification and nanopasses (replacing old abstraction)
0.63.2
Run this release with Docker:
docker run ligolang/ligo:0.63.2
0.63.0
Run this release with Docker:
docker run ligolang/ligo:0.63.0
Breaking :
deprecation of mutate_ast (!2455 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Added :
Stdlib: filter_map function for Set (!2463 by er433)
Details :
New function in module
Set
:val filter_map : ('a -> b option) -> 'a set -> 'b set
.Add CLi option for PascaLIGO to JsLIGO syntax-level transpilation (!2453 by nicolas.van.phan)
Details :
No details provided for this change. Please visit the MR to learn more
Stdlib: list updating functions (!2451 by er433)
Details :
New functions in stdlib's
List
module:val filter_map : ('a -> 'b option) -> 'a list -> 'b list``val update : ('a -> 'a option) -> 'a list -> 'a list``val update_with : ('a -> 'a option) -> 'a -> 'a list -> 'a list
Transpilation: add ad-hoc typers for map/big_map operations (!2431 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed :
[#1718][JsLIGO]: Fix automatic semicolon insertion for if-else statements (!2472 by melwyn95)
Details :
For a JsLIGO file like
export const foo = (b: bool) => {if (b)return 42elsereturn 21}Before
$ ligo.62 compile expression jsligo foo --init-file y.jsligoFile "y.jsligo", line 2, characters 9-8:1 | export const foo = (b: bool) => {2 | if (b)3 | return 42Ill-formed conditional statement.At this point, the statement executed when the condition is true isexpected.After
$ ligo compile expression jsligo foo --init-file y.jsligo{ IF { PUSH int 42 } { PUSH int 21 } }Errors: improve comparable error by showing the context type (!2454 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: better error managing when entrypoint is not annotated (!2452 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed a transpilation error (!2440 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
0.62.0
Run this release with Docker:
docker run ligolang/ligo:0.62.0
Breaking :
Attribute for entries (!2379 by er433)
Details :
New attribute
@entry
allows to define entries for a module/namespace, or from the top-level of a file.For example, the file
contract.jsligo
type storage = int;// @entryconst increment = (action: int, store: storage) : [list <operation>, storage] => [list([]), store + action];// @entryconst decrement = (action: int, store: storage) : [list <operation>, storage] => [list([]), store - action];// @entryconst reset = (_u: unit, _store: storage) : [list<operation>, storage] => [list([]), 0];can be compiled directly:
$ ligo compile contract contract.jsligo{ parameter (or (or (int %decrement) (int %increment)) (unit %reset)) ;storage int ;code { UNPAIR ;IF_LEFT { IF_LEFT { SWAP ; SUB } { ADD } } { DROP 2 ; PUSH int 0 } ;NIL operation ;PAIR } }Moreover, when using the testing framework, a
contract_of
keyword can be used to originate a module as a contract with the help of the new functionTest.originate_module
:$ cat src/test/contracts/interpreter_tests/test_originate_module.jsligonamespace C {type storage = int;// @entryconst increment = (action: int, store: storage) : [list <operation>, storage] => [list([]), store + action];// @entryconst decrement = (action: int, store: storage) : [list <operation>, storage] => [list([]), store - action];};const test_increment = (() => {let initial_storage = 42;let [taddr, _, _] = Test.originate_module(contract_of(C), initial_storage, 0 as tez);let contr = Test.to_contract(taddr);let _ = Test.transfer_to_contract_exn(contr, (Increment (1)), 1 as mutez);return assert(Test.get_storage(taddr) == initial_storage + 1);}) ();$ ligo run test src/test/contracts/interpreter_tests/test_originate_module.jsligoEverything at the top-level was executed.- test_increment exited with value ().Breaking changes
Notice that this feature is breaking as
contract_of
becomes a keyword, rending invalid contracts that use this name as a variable. In this case, the fix is simple, and just amounts to change the name of the variable, or use@contract_of
:$ cat contract.jsligo// @entryconst increment = (action: int, store: int) : [list <operation>, int] => [list([]), store + action];const contract_of = 42;$ ligo compile contract contract.jsligoFile "contract.jsligo", line 4, characters 6-17:3 |4 | const contract_of = 42;Ill-formed value declaration.At this point, a pattern is expected, e.g. a variable.After modifying
contract.jsligo
with@contract_of
:$ cat contract.jsligo// @entryconst increment = (action: int, store: int) : [list <operation>, int] => [list([]), store + action];const @contract_of = 42;$ ligo compile contract contract.jsligo{ parameter int ;storage int ;code { UNPAIR ; ADD ; NIL operation ; PAIR } }This MR also modifies the parameters for the sub-command
evaluate-call
(-e
is not used anymore to signal the function to compile).
Added :
Ligo is distributed through AUR for Arch linux (!2410 by Laucans)
Details :
You can now install ligo through AUR
git clone https://aur.archlinux.org/ligo-bin.gitcd ligo-binmakepkg -sior
yay -S ligo-bin[#1658] Support getting configuration from VSCode (!2406 by heitor.toledo)
Details :
Add support for decoding "maximum number of problems" and "verbosity" from the VS Code configuration.
[#1655] Fix and enable LSP formatting (!2404 by Sorokin-Anton)
Details :
Added support for document formatting request to
ligo lsp
.CLI: new
-m
parameter for module selection (!2386 by er433)Details :
A new argument is available when compiling a contract:
-m
, which allows to select a module path where the entrypoint (and views) is located.Example file
increment.jsligo
type storage = int;type parameter =["Increment", int]| ["Decrement", int]| ["Reset"];type ret = [list<operation>, storage];const add = (store : storage, delta : int) : storage => store + delta;const sub = (store : storage, delta : int) : storage => store - delta;namespace C {const main = (action : parameter, store : storage) : ret => {return [list([]) as list<operation>,match (action, {Increment:(n: int) => add (store, n),Decrement:(n: int) => sub (store, n),Reset :() => 0})]};}Compilation using
-m
$ ligo compile contract increment.jsligo -m C{ parameter (or (or (int %decrement) (int %increment)) (unit %reset)) ;storage int ;code { UNPAIR ;IF_LEFT { IF_LEFT { SWAP ; SUB } { ADD } } { DROP 2 ; PUSH int 0 } ;NIL operation ;PAIR } }
Fixed :
Fix bugs in
ligo publish
(!2423 by melwyn95)Details :
For a LIGO package with name
@ligo/fa
Before
$ ligo.61 publish --dry-run==> Reading manifest... Done==> Validating manifest file... Done==> Finding project root... Done==> Packing tarball... An internal error ocurred. Please, contact the developers.(Sys_error "/tmp/@ligo/fa675f7d1.0.1: No such file or directory").After
$ ligo publish --dry-run==> Reading manifest... Done==> Validating manifest file... Done==> Finding project root... Done==> Packing tarball... Donepublishing: @ligo/fa@1.0.1=== Tarball Details ===name: @ligo/faversion: 1.0.1filename: @ligo/fa-1.0.1.tgzpackage size: 36.4 kBunpacked size: 249.5 kBshasum: a1755ccfecb90d06440aef9d0808ec1499fc22f4integrity: sha512-c986ef7bc12cd[...]9b6f8c626f8fba7total files: 49Use js_of_ocaml's --enable=effects flag to fix stackoverflows (!2417 by prometheansacrifice)
Details :
Fixes stackoverflows during Lexing in the browser
Adds a js_of_ocaml setup with Dune and a PoC IDE to demo the bundle (!2381 by prometheansacrifice)
Details :
No details provided for this change. Please visit the MR to learn more
Make linearity checking apply inside modules (!2314 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Internal :
Prepare transpilation of PascaLIGO to JsLIGO (!2333 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
0.61.0
Run this release with Docker:
docker run ligolang/ligo:0.61.0
Breaking :
[JsLIGO] Update syntax for generic functions (!2315 by melwyn95)
Details :
In JsLIGO, the syntax for defining generic functions was misleading.
This MR fixes this issue by adding the syntatic contruct to bind type variables in function expressions.
Before
const concat : <T>(xs : list<T>, ys : list<T>) => list<T> = (xs : list<T>, ys : list<T>) : list<T> => {let f = ([x, ys] : [T, list<T>]) : list<T> => list([x, ...ys]);return List.fold_right(f, xs, ys)}Before the type variables were bound in the LHS type annotation in the type expression.
After
const concat = <T>(xs : list<T>, ys : list<T>) : list<T> => {let f = ([x, ys] : [T, list<T>]) : list<T> => list([x, ...ys]);return List.fold_right(f, xs, ys)}After this change type variables can be bound in function expression like above.
Deprecation of PascaLIGO (!2271 by rinderkn)
Details :
Deprecation of PascaLIGO.
JsLIGO: abstractor generate curried definitions (!2241 by er433)
Details :
Previously, multiparameter functions in JsLIGO were compiled to a function taking a tuple of parameters.
After this MR, multiparameter functions in JsLIGO are compiled to curried functions.
Contracts do still require taking a tuple
(parameter, storage)
(as in Michelson). However, LIGO will transform curried contracts to its uncurried form when usingcompile contract
. The same is true for views, taking still tuples(argument, storage)
, but curried views will be uncurried automatically as well.New functions are introduced at top-level:
val curry : ('a -> 'b -> 'c) -> ('a * 'b -> 'c)``val uncurry : ('a * 'b -> 'c) -> 'a -> 'b -> 'c
For testing,Test.originate
will take an curried contract of the formparameter -> storage -> operation list * storage
. The old (uncurried) alternative is still available asTest.originate_uncurried
.
Added :
[Chore] Add a changelog documenting the initial write of the LSP (!2393 by heitor.toledo)
Details :
Add a new subcommand (
ligo lsp
) whose purpose is to allow LSP clients (Visual Studio Code, Emacs, Vim, etc) to communicate with the new LIGO Language Server, which is being rewritten in OCaml. This command is not meant to be launched manually by users, but rather by editors. The rewrite was officially made in !2303.The initial release supports diagnostics (errors only), go to definition, hover, rename (only in open files), references (only in open files), and type definition.
As the rewrite is new, it does not yet support feature parity with the old language server, and bugs are to be expected.
Other LSP features (hover, folding range, document link, warnings for diagnostics, prepare rename) have since been implemented in other merge requests.
Official support for the Vim, Emacs, and Visual Studio Code plugins will come soon, as well as the VS Code plugin release on the Marketplace and OpenVSX.
[#1648] Implement folding range for the LSP (!2371 by heitor.toledo)
Details :
Folding ranges allow the language server client to collapse or expand regions of code. Although some clients like Visual Studio Code can try to automatically deduce ranges based on regions, others like Emacs or Vim might not, so we implement the folding range requests from LSP in
ligo lsp
.[#1653] Implement document link request, add
get_cst
function (!2358 by Sorokin-Anton)Details :
Added support for
document link
request toligo lsp
Extend JsLIGO nested update syntax (!2331 by nicolas.van.phan)
Details :
For a contract with nested record update using the new syntaxes, like below.
type storage = int;type parameter = int;const main = (_action: parameter, store: storage) : [ list<operation> , storage ] => {let r = { x : { y : [ 1 , 2 , { z : "World" , z1 : 7 } , 3] } };r["x"].y[2]["z"] = "Hello";return [list([]), store]};Before
> ligo compile contract 'test.jsligo'File "test.jsligo", line 6, characters 2-28:5 | let r = { x : { y : [ 1 , 2 , { z : "World" , z1 : 7 } , 3] } };6 | r["x"].y[2]["z"] = "Hello";7 | return [list([]), store]Not supported assignment.After
> ligo compile contract 'test.jsligo'{ parameter int ; storage int ; code { CDR ; NIL operation ; PAIR } }[#1645]Hover upgrade (!2326 by XJIE6)
Details :
Improves behavior of LSP requests in case of modules. Adds syntax highlighting to
hover
request. Adds support forhover
over modules[#1652] Implement prepare rename request (!2317 by heitor.toledo)
Details :
Implements the prepare rename request from the LSP specification. It checks the validity of a rename so that users won't get a prompt for renaming lexemes such as a keyword (like
let
) or a built-in identifier (likeint
).Draft: Enable shorter JsLIGO syntax for nested record updates (!2309 by nicolas.van.phan)
Details :
For a contract with the new syntax for record update
type storage = int;type parameter = int;type user = {id : int,name : string};const user1 : user = {id : 24,name : "User1",};const main = (_action: parameter, store: storage) : [ list<operation> , storage ] => {let p = user1;p.id = 42; // Record field updatereturn [list([]), store]};Before
> ligo compile contract 'contract.jsligo'File "contract.jsligo", line 17, characters 2-11:16 | let p = user1;17 | p.id = 42; // Record field update18 | return [Not supported assignment.After
> ligo compile contract 'contract.jsligo'{ parameter int ; storage int ; code { CDR ; NIL operation ; PAIR } }Stdlib: add
is_none
,is_some
,value
andvalue_exn
in moduleOption
(!2300 by er433)Details :
New functions available in module
Option
:val is_none : 'a option -> bool
: returns a boolean signaling if the value isNone
.val is_some : 'a option -> bool
: returns a boolean signaling if the value is aSome
.val value : 'a -> 'a option -> 'a
: returns the value if the second argument is wrapped in theSome
constructor, or returns the first argument if it isNone
.val value_exn : 'e -> 'a option -> 'a
: returns the value if the second argument is wrapped in theSome
constructor, or fails with the first value if it isNone
.Example
type foobar = option <int>;const s : foobar = Some (42);const n : foobar = None ();const f = (m : foobar) : int => {if (Option.is_none(m)) {return Option.value(1, m);} else {if (Option.is_some(m)) {return Option.value_exn("won't happen", m);} else {return -1;}}}const j = f(s);const k = f(n);j
evaluates to42
, whilek
evaluates to1
.Small syntactic fixes to JsLIGO grammar to get closer to TS (!2272 by rinderkn)
Details :
Semicolons can now be used in describing objects (records), as well as commas. Discriminated unions can now have a leading vertical bar.
For a contract like
type planetType =| { kind: "Tellurian" }| { kind: "Gaseous" }| { kind: "Other" };type planet = {name: string;planetType: planetType;lord: option<address>;};const main = (p: planet, _: int): [list<operation>, int] => {let state = 0;let planetType = p.planetType;switch(planetType.kind) {case "Tellurian":state += 1;breakcase "Gaseous":state -= 2;breakcase "Other":state = 0;break}return [list([]), state]}Before
$ ligo.59 compile contract y.jsligoFile "y.jsligo", line 2, characters 4-5:1 | type planetType =2 | | { kind: "Tellurian" }3 | | { kind: "Gaseous" }Ill-formed variant of a sum type.At this point, one of the following is expected:* attributes for the variant;* an opening bracket '[' followed by a data constructor as a string.After
$ ligo compile contract y.jsligo{ parameter(pair (pair (option %lord address) (string %name))(or %planetType (or (unit %gaseous) (unit %other)) (unit %tellurian))) ;storage int ;code { CAR ;PUSH int 0 ;SWAP ;CDR ;IF_LEFT{ IF_LEFT { DROP ; PUSH int 2 ; SWAP ; SUB } { DROP 2 ; PUSH int 0 } }{ DROP ; PUSH int 1 ; ADD } ;NIL operation ;PAIR } }Support for compiling non-tail recursive functions (!2232 by er433)
Details :
Now non-tail-recursive functions can be compiled. E.g.
$ cat lambdarec.mligolet rec fib (n : int) : int =if n <= 1 then1elsefib (n - 1) + fib (n - 2)let rec cat (type a) (xs : a list) (ys : a list) : a list =match xs with| [] -> ys| (x :: xs) -> x :: (cat xs ys)$ ligo compile expression cameligo "cat [fib 1; fib 2; fib 3] [fib 4; fib 5; fib 6; fib 7]" --init-file lambdarec.mligo{ 1 ; 2 ; 3 ; 5 ; 8 ; 13 ; 21 }
Fixed :
[#1683] Handle
Is a directory
error (!2377 by XJIE6)Details :
No details provided for this change. Please visit the MR to learn more
Fix condition for disabling colors in CLI output (!2361 by nicolas.van.phan)
Details :
Using flag --no-color in CI can be ignored if variable TERM is not set. Here a fix to make --no-color flag valid even if TERM is not defined.
Fix: unused variables pass not taking into account
E_mod_in
(!2342 by melwyn95)Details :
For a contract like
let fst (x, _) = xlet snd (_, x) = xlet main (_ : unit * nat ticket) : operation list * nat ticket =let n = 10n inmodule B = structlet ticket = Option.unopt (Tezos.create_ticket n n)let y = ticket, ticketend in[], Option.unopt (Tezos.join_tickets (fst B.y, snd B.y))Before
ligo.60 compile contract y.mligoFile "y.mligo", line 6, characters 6-7:5 | let main (_ : unit * nat ticket) : operation list * nat ticket =6 | let n = 10n in7 | module B = struct:Warning: unused variable "n".Hint: replace it by "_n" to prevent this warning.Error(s) occurred while type checking the contract:Ill typed contract:...After
$ _build/install/default/bin/ligo compile contract y.mligoFile "y.mligo", line 8, characters 8-14:7 | module B = struct8 | let ticket = Option.unopt (Tezos.create_ticket n n)9 | let y = ticket, ticket:Warning: variable "ticket" cannot be used more than once.File "y.mligo", line 9, characters 4-26:8 | let ticket = Option.unopt (Tezos.create_ticket n n)9 | let y = ticket, ticket10 | end in:Warning: variable "B.y" cannot be used more than once.Error(s) occurred while type checking the contract:Ill typed contract:...Refactor
Layout
andRow
to use rose trees (!2341 by lesenechal.remi)Details :
Fix problem regarding unification of layout in record/sum types.
[CameLIGO] Fix type variable binding in expressions (!2330 by melwyn95)
Details :
For a cameligo file like
let foo (type a) : a list -> a list =let id = fun (type b) (xs : b list) : b list -> xs infun (xs : a list) : a list -> id xslet main (_ : unit * int list) : operation list * int list =[], foo [1 ; 2 ; 3]Before
$ ligo.60 compile contract x.mligoFile "x.mligo", line 2, characters 31-32:1 | let foo (type a) : a list -> a list =2 | let id = fun (type b) (xs : b list) : b list -> xs in3 | fun (xs : a list) : a list -> id xsType "b" not found.After
$ ligo compile contract x.mligo{ parameter unit ;storage (list int) ;code { DROP ;NIL int ;PUSH int 3 ;CONS ;PUSH int 2 ;CONS ;PUSH int 1 ;CONS ;NIL operation ;PAIR } }[#1666] Extract warnings from scopes (!2329 by heitor.toledo)
Details :
For the LIGO LSP, only errors were being displayed and warnings were skipped. Users will now be able to see warnings as well as errors.
Fix: JsLigo attributes not propagated in the pipeline (!2304 by melwyn95)
Details :
For a contract like
type action_t =// @layout:comb| ["A"]| ["B", int]| ["C", [int, int]];type storage_t =// @layout comb{x: int,y: int,z: int};type return_t = [list<operation>, storage_t];const main = (action: action_t, _: storage_t): return_t =>[list([]),match(action, {A: () => ({ x: 10, y: 10, z: 10 }),B: (_) => ({ x: 20, y: 20, z: 20 }),C: (_) => ({ x: 20, y: 20, z: 20 })})];Before
$ ligo.60 compile contract y.jsligo{ parameter (or (or (unit %a) (int %b)) (pair %c int int)) ;storage (pair (pair (int %x) (int %y)) (int %z)) ;code { CAR ;IF_LEFT{ IF_LEFT{ DROP ; PUSH int 10 ; PUSH int 10 ; PUSH int 10 }{ DROP ; PUSH int 20 ; PUSH int 20 ; PUSH int 20 } }{ DROP ; PUSH int 20 ; PUSH int 20 ; PUSH int 20 } ;PAIR ;PAIR ;NIL operation ;PAIR } }After
$ ligo compile contract y.jsligo{ parameter (or (unit %a) (or (int %b) (pair %c int int))) ;storage (pair (int %x) (int %y) (int %z)) ;code { CAR ;IF_LEFT{ DROP ; PUSH int 10 ; PUSH int 10 ; PUSH int 10 }{ IF_LEFT{ DROP ; PUSH int 20 ; PUSH int 20 ; PUSH int 20 }{ DROP ; PUSH int 20 ; PUSH int 20 ; PUSH int 20 } } ;PAIR 3 ;NIL operation ;PAIR } }JsLIGO: add support for module access in type application (!2299 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
fixing
ligo info list-declarations
(!2297 by lesenechal.remi)Details :
Fixing
ligo info list-declarations
for JsLIGO entrypointsCameLIGO: use
params
field when abstracting local types (!2289 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: make
run test --display-format json
output the same JSON asTest.to_json
(!2287 by er433)Details :
The output given by
run test --display-format json
is an array containing the name of the test entrypoint, followed by its value as a JSON (same format asTest.to_json
, see API reference for further documentation on it). E.g.$ cat display_format_json.mligolet test_x =let x = 42 inx + 23let test_y ="hello"$ ligo run test display_format_json.mligo --display-format json[[ "test_x", [ "constant", [ "int", "65" ] ] ],[ "test_y", [ "constant", [ "string", "hello" ] ] ]]Fix: Missing definitions from imported modules in
get-scope
(!2253 by melwyn95)Details :
For ligo files with
#import
ed modues#import "y.mligo" "X"let z = X.x.aBefore
$ ligo.59 info get-scope x_test.mligo --format dev --with-typesScopes:[ X#0 ] File "x_test.mligo", line 3, characters 8-13Variable definitions:(z#1 -> z)Range: File "x_test.mligo", line 3, characters 4-5Body Range: File "x_test.mligo", line 3, characters 8-13Content: |unresolved|references: []Type definitions:Module definitions:(X#0 -> X)Range: File "x_test.mligo", line 1, characters 7-8Body Range: File "x_test.mligo", line 1, characters 11-36Content: Alias: Mangled_module_y____mligoreferences: File "x_test.mligo", line 3, characters 8-9After
$ ligo info get-scope x_test.mligo --format dev --no-stdlib --with-typesScopes:[ X#4 Mangled_module_y____mligo#3 x#2 y#1 x#0 ] File "x_test.mligo", line 3, characters 8-13[ x#0 ] File "y.mligo", line 3, characters 8-9[ y#1 x#0 ] File "y.mligo", line 4, characters 14-15[ y#1 x#0 ] File "y.mligo", line 4, characters 22-24Variable definitions:(z#5 -> z)Range: File "x_test.mligo", line 3, characters 4-5Body Range: File "x_test.mligo", line 3, characters 8-13Content: |resolved: int|references: []Type definitions:Module definitions:(Mangled_module_y____mligo#3 -> Mangled_module_y____mligo)Range:Body Range:Content: Members: Variable definitions:(x#2 -> x)Range: File "y.mligo", line 4, characters 4-5Body Range: File "y.mligo", line 4, characters 8-25Content: |resolved: x|references: File "x_test.mligo", line 3, characters 8-13(y#1 -> y)Range: File "y.mligo", line 3, characters 4-5Body Range: File "y.mligo", line 3, characters 8-9Content: |resolved: int|references: File "y.mligo", line 4, characters 14-15Type definitions:(x#0 -> x)Range: File "y.mligo", line 1, characters 5-6Body Range: File "y.mligo", line 1, characters 9-33Content: : |record[a -> int , b -> string]|references: []Module definitions:references: File "x_test.mligo", line 1, characters 11-36(X#4 -> X)Range: File "x_test.mligo", line 1, characters 7-8Body Range: File "x_test.mligo", line 1, characters 11-36Content: Alias: Mangled_module_y____mligo#3references: File "x_test.mligo", line 3, characters 8-9
0.60.0
Run this release with Docker:
docker run ligolang/ligo:0.60.0
Breaking :
Remove remainder of ReasonLIGO (except debugger) (!2244 by SanderSpies)
Details :
Remove remainder of ReasonLIGO from compiler, editor tooling, website, fuzzer, LSP, etc. But not the debugger.
improve Jsligo proper return handling (!2229 by SanderSpies)
Details :
Improve the return handling in JsLIGO
Added :
CameLIGO: Add
mut
ability ,for
loops, andwhile
loops (!2254 by alistair.obrien)Details :
Add mutable variables, the assignment operator,
for
loops, andwhile
loops to CameLIGO.let do_something g n =let mut x = 1 infor j = 1 to n dowhile x < 10 dox := g i j x;doneend;xRelax view restrictions under arrow types (!2252 by tomjack)
Details :
Allow forbidden types in views when they occur under lambda/arrow types.
add publication to AUR into release process (!2251 by Laucans)
Details :
Ligo can be installed on archlinux through the Arch linux User repository. The artifact name is ligo-bin (https://aur.archlinux.org/packages/ligo-bin)
ligo init
templates & libraries from LIGO registry (!2249 by melwyn95)Details :
New Feature
$ ligo init library --template @ligo/bigarrayFolder created: @ligo_bigarray$ tree ..└── @ligo_bigarray├── LICENSE├── Makefile├── README.md├── examples│ ├── main.mligo│ └── package.json├── lib│ └── bigarray.mligo├── package.json└── test└── bigarray.test.mligo4 directories, 8 filesBefore
$ ligo.59 init contract --template nft-factory-cameligoError: Unrecognized templateHint: Use the option --template "TEMPLATE_NAME"Please select a template from the following list:- NFT-factory-cameligo- NFT-factory-jsligo- advisor-cameligo...After
$ ligo init contract --template nft-factory-cameligoCloning into 'nft-factory-cameligo'...remote: Enumerating objects: 166, done.remote: Counting objects: 100% (17/17), done.remote: Compressing objects: 100% (15/15), done.remote: Total 166 (delta 2), reused 7 (delta 2), pack-reused 149Receiving objects: 100% (166/166), 216.51 KiB | 6.98 MiB/s, done.Resolving deltas: 100% (63/63), done.Folder created: nft-factory-cameligoError checking for closure capturing big maps/operation/contract (!2231 by er433)
Details :
Before fix
$ ligo compile expression cameligo "fun (x : operation) -> fun (y : int) -> x"Error(s) occurred while checking the contract:At (unshown) location 16, operation type forbidden in parameter, storage and constantsAfter fix
$ ligo compile expression cameligo "fun (x : operation) -> fun (y : int) -> x"Invalid capturing, term captures the type operation.Hint: Uncurry or use tuples instead of high-order functions.Implement
String.concats
andBytes.concats
in stdlib (!2228 by er433)Details :
New functions have been implemented for concatenating lists of strings and bytes:
String.concats : string list -> string``Bytes.concats : bytes list -> bytes
Fixed :
Resolve "Wrong references in
ligo info get-scope
" (!2261 by melwyn95)Details :
For a ligo program like
let x = 42let f x = 0let g = xBefore
$ ligo.59 info get-scope x.mligo --format dev --with-typesScopes:[ ] File "x.mligo", line 1, characters 8-10[ x#1 ] File "x.mligo", line 2, characters 10-11[ f#2 x#0 ] File "x.mligo", line 3, characters 8-9Variable definitions:(f#2 -> f)Range: File "x.mligo", line 2, characters 4-5Body Range: File "x.mligo", line 2, characters 6-7Content: |resolved: ∀ gen#563 : * . gen#563 -> int|references: [](g#3 -> g)Range: File "x.mligo", line 3, characters 4-5Body Range: File "x.mligo", line 3, characters 8-9Content: |resolved: int|references: [](x#0 -> x)Range: File "x.mligo", line 1, characters 4-5Body Range: File "x.mligo", line 1, characters 8-10Content: |resolved: int|references: [] <---- The reference of top-level binding is not updated(x#1 -> x)Range: File "x.mligo", line 2, characters 6-7Body Range: File "x.mligo", line 2, characters 10-11Content: |resolved: gen#563|references: File "x.mligo", line 3, characters 8-9 <---- The reference of local binding is updated :(Type definitions:Module definitions:After
$ ligo info get-scope x.mligo --with-types --format devScopes:[ ] File "x.mligo", line 1, characters 8-10[ x#1 ] File "x.mligo", line 2, characters 10-11[ f#2 x#0 ] File "x.mligo", line 3, characters 8-9Variable definitions:(f#2 -> f)Range: File "x.mligo", line 2, characters 4-5Body Range: File "x.mligo", line 2, characters 6-7Content: |resolved: ∀ gen#563 : * . gen#563 -> int|references: [](g#3 -> g)Range: File "x.mligo", line 3, characters 4-5Body Range: File "x.mligo", line 3, characters 8-9Content: |resolved: int|references: [](x#0 -> x)Range: File "x.mligo", line 1, characters 4-5Body Range: File "x.mligo", line 1, characters 8-10Content: |resolved: int|references: File "x.mligo", line 3, characters 8-9 <---- The reference of level binding is updated correctly(x#1 -> x)Range: File "x.mligo", line 2, characters 6-7Body Range: File "x.mligo", line 2, characters 10-11Content: |resolved: gen#563|references: []Type definitions:Module definitions:🐛 Fix: Layout Unification (!2259 by alistair.obrien)
Details :
🐛 fix: layout unification.
Add missing cases/fix wrong cases in tail recursiveness check (!2256 by er433)
Details :
Example file
$ cat error_no_tail_recursive_function2.mligolet rec foo (xs : int list) : int =let rec loop (xs : int list) : int =loop (foo xs :: xs)inloop xsBefore fix
$ ligo compile expression cameligo foo --init-file error_no_tail_recursive_function2.mligoAn internal error ocurred. Please, contact the developers.Corner case: foo not found in env.After fix
$ ligo compile expression cameligo foo --init-file error_no_tail_recursive_function2.mligoFile "error_no_tail_recursive_function2.mligo", line 3, characters 10-13:2 | let rec loop (xs : int list) : int =3 | loop (foo xs :: xs)4 | inRecursive call not in tail position.The value of a recursive call must be immediately returned by the defined function.Improve error message when compiling functions which capture meta-LIGO types (!2220 by er433)
Details :
Example file
$ cat test_capture_meta_type.mligotype t = { x : int ; y : (unit, unit) typed_address }let main ((_, _) : unit * unit) : operation list * unit = [], ()let ta, _, _ =Test.originate main () 0tezlet v = { x = 42 ; y = ta }let w = v.xlet f = fun (_ : unit) -> v.xlet g = fun (_ : unit) -> f ()let test = Test.eval gBefore fix
$ ligo run test test_capture_meta_type.mligoFile "test_capture_meta_type.mligo", line 16, characters 11-22:15 |16 | let test = Test.eval gCannot decompile value KT1KAUcMCQs7Q4mxLzoUZVH9yCCLETERrDtj of type typed_address (unit ,unit)After fix
$ ligo run test test_capture_meta_type.mligoFile "test_capture_meta_type.mligo", line 12, characters 26-27:11 |12 | let f = fun (_ : unit) -> v.x13 |Invalid usage of a Test type: typed_address (unit ,unit) in record[x -> int , y -> typed_address (unit , unit)] cannot be translated to Michelson.
0.59.0
Run this release with Docker:
docker run ligolang/ligo:0.59.0
Breaking :
Remove ReasonLIGO tests and remove ReasonLIGO from CLI. (!2234 by SanderSpies)
Details :
Remove ReasonLIGO tests and remove ReasonLIGO from CLI.
Remove ReasonLIGO documentation. (!2225 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Added :
Extended the syntax of attributes (!2222 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
0.58.0
Run this release with Docker:
docker run ligolang/ligo:0.58.0
Breaking :
Set
current
protocol to Lima (!2223 by er433)Details :
By default, Lima protocol is used as current. This affects compilation of certain primitives (such as
Tezos.create_ticket
and contracts usingchest
, see changelog for Lima protocol introduction for more information).Kathmandu can still be used passing the flag
--protocol kathmandu
.
Added :
[Package Management] Resolve
main
file when only the package name is provided in#import
/#include
(!2224 by melwyn95)Details :
For a file like
#import "@ligo/bigarray" "BA"let test = BA.concat [1 ; 2 ; 3] [4 ; 5 ; 6]Before change
$ ligo.55 run test main.mligoFile "main.mligo", line 1, characters 0-29:1 | #import "@ligo/bigarray" "BA"2 |File "@ligo/bigarray" not found.After change
$ ligo run test main.mligoEverything at the top-level was executed.- test exited with value [1 ; 2 ; 3 ; 4 ; 5 ; 6].[PyLIGO] Standalone preprocessor, lexer and parser (!2210 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Build ligo on Macos(intel), Linux and Windows and bundle into NPM tarball (!2200 by prometheansacrifice)
Details :
Users can now install LIGO via NPM.
npm i -g ligolang
will install the Ligo compiler on Windows, Linux and MacOS (intel). https://www.npmjs.com/package/ligolang Also adds a GUI installer for Windows. Can be downloaded from hereCLI: add a
run test-expr
to run expressions in test framework without need of a file (!2195 by er433)Details :
New sub-command can evaluate expressions directly in the testing framework:
$ ligo run test-expr cameligo "Test.log 42"42Everything at the top-level was executed.- eval exited with value ().Miscellaneous improvements for ligo-debugger-vscode (!2114 by tomjack)
Details :
Miscellaneous improvements for ligo-debugger-vscode
Fixed :
Testing framework: issue with long tuples in matching (!2227 by er433)
Details :
Example file
$ cat tuple_long.mligotype big_tuple = int * int * int * int * int * int * int * int * int * int * int * intlet br : big_tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)let f (x : big_tuple) =match x with| (x0, _x1, _x2, _x3, _x4, _x5, _x61, _x7, _x8, _x9, _x45, _x111) -> x0let test = Test.assert (f br = 0)Before fix
$ ligo run test tuple_long.mligoFile "tuple_long.mligo", line 9, characters 24-28:8 |9 | let test = Test.assert (f br = 0)No pattern matchedAfter fix
$ ligo run test tuple_long.mligoEverything at the top-level was executed.- test exited with value ().🐛 Fix: Type Variable Shadowing Error (!2221 by alistair.obrien)
Details :
Fixed type variable shadowing issues.
Fix
unresolved
types inget-scope
(!2219 by melwyn95)Details :
For a file like
type user = {is_admin : bool,};const alice : user = {is_admin : true,};const alice_admin : bool = alice.iBefore fix
$ ligo.57 info get-scope y.jsligo --format dev --with-types...Variable definitions:(alice#1 -> alice)...Content: |unresolved|...(alice_admin#2 -> alice_admin)...Content: |unresolved|......After fix
$ ligo info get-scope y.jsligo --format dev --with-types...Variable definitions:(alice#1 -> alice)...Content: |core: user|...(alice_admin#2 -> alice_admin)...Content: |core: bool|......Add
--project-root
for missing commands (!2212 by melwyn95)Details :
Before:
$ ligo info list-declarations src/test/projects/include_include/main.mligoFile "src/test/projects/include_include/main.mligo", line 1, characters 0-41:1 | #import "include-include/index.mligo" "M"2 | #include "include-include/index.mligo"File "include-include/index.mligo" not found.After
$ ligo info list-declarations src/test/projects/include_include/main.mligo --project-root src/test/projects/include_include/src/test/projects/include_include/main.mligo declarations:mainhelloJsLIGO: improve semicolon handling for #1511 (!2209 by SanderSpies)
Details :
Improve semicolon insertion after rbrace '}'.
Resolve "Internal error:
ligo compile storage
" (!2205 by er433)Details :
Example file
$ cat annotated_storage_and_parameter.mligotype storage = (int, int) maptype parameter = int listlet main ((_p, s) : parameter * storage) : operation list * storage =([], s)Before fix
$ ligo compile storage annotated_storage_and_parameter.mligo "Map.empty"File "src/passes/14-spilling/compiler.ml", line 180, characters 36-43corner case: For all type uncaughtSorry, we don't have a proper error message for this error. Please report this use case so we can improve on this.After fix
$ ligo compile storage annotated_storage_and_parameter.mligo "Map.empty"{}Improve monomorphisation error message (!2204 by er433)
Details :
Example file
$ cat annotate_arrow.mligolet f (_:unit) (_:nat option) = NoneAfter fix
$ ligo compile expression cameligo "f" --init-file annotate_arrow.mligoFile "annotate_arrow.mligo", line 1, characters 0-36:1 | let f (_:unit) (_:nat option) = NoneCannot monomorphise the expression.The inferred type was "unit -> ∀ a . option (nat) -> option (a)".Hint: Try adding additional annotations.Fix missing semicolon before comments in jsligo (!2158 by melwyn95)
Details :
Improves the semi-colon insertion for jsligo
Example file
const test1 = 1/* Hello */// There/* Hello */// Againconst test2 = 2Before Fix
$ ligo.57 run test y.jsligoFile "y.jsligo", line 6, characters 0-5:5 | // Again6 | const test2 = 2Ill-formed top-level statement.At this point, if the statement is complete, one of the following isexpected:* a semicolon ';' followed by another statement;* a semicolon ';' followed by the end of file;* the end of the file.After Fix
$ ligo run test y.jsligoEverything at the top-level was executed.- test1 exited with value 1.- test2 exited with value 2.
0.57.0
Run this release with Docker:
docker run ligolang/ligo:0.57.0
Added :
Deliver beta for native Windows installation (!2198 by prometheansacrifice)
Details :
The documentation to install ligo on windows is available here : https://ligolang.org/docs/next/intro/installation?lang=jsligo.
You can install it through NPM or through windows installer.
[Package Management] Improvements to
ligo publish
(!2080 by melwyn95)Details :
Adds Support
--dry-run
flag toligo publish
Better CLI report forligo publish
Add validation before publishing packagesAdd support for.ligoignore
file & Improve support for.ligorc
file change in CLI report:$ ligo publish --ligorc-path ./.ligorc==> Reading manifest... Done==> Validating manifest file... Done==> Finding project root... Done==> Packing tarball... Donepublishing: ligo-list-helpers@1.0.0=== Tarball Details ===name: ligo-list-helpersversion: 1.0.0filename: ligo-list-helpers-1.0.0.tgzpackage size: 895 Bunpacked size: 1.1 kBshasum: 37737db2f58b572f560bd2c45b38e6d01277395dintegrity: sha512-a904c5af793e6[...]fc0efee74cfbb26total files: 6==> Checking auth token... Done==> Uploading package... DonePackage successfully published
Fixed :
Fix
scopes
for local types (!2197 by melwyn95)Details :
function local_type (var u : unit) : int is {type toto is int;function foo (const b : toto) : toto is b} with titiIn the above example the local type
toto
was missing in the scopes for body offoo
andtiti
Update the templates list for
ligo init
& Imporve the error message (!2194 by melwyn95)Details :
New templates via ligo init & Improved error messages for invalid template
Before:
$ ligo init contractTemplate unrecognized please select one of the following list :NFT-factory-cameligoNFT-factory-jsligoadvisor-cameligodao-cameligodao-jsligomultisig-cameligomultisig-jsligopermit-cameligorandomness-cameligorandomness-jsligoshifumi-cameligoshifumi-jsligoAfter:
$ ligo init contractError: Unrecognized templateHint: Use the option --template "TEMPLATE_NAME"Please select a template from the following list:- NFT-factory-cameligo- NFT-factory-jsligo- advisor-cameligo- advisor-jsligo- dao-cameligo- dao-jsligo- multisig-cameligo- multisig-jsligo- permit-cameligo- permit-jsligo- predictive-market-cameligo- predictive-market-jsligo- randomness-cameligo- randomness-jsligo- shifumi-cameligo- shifumi-jsligoFix
ligo login
when user is logged in and tries to login again with a different user (!2193 by melwyn95)Details :
Before:
$ ligo.55 loginUsername: user1Password: ************you are authenticated as 'user1'$ ligo.55 loginUsername: user2Password: ***************{"error": "username is already registered"}After:
$ ligo loginUsername: user1Password: ************you are authenticated as 'user1'$ ligo loginUsername: user2Password: ***************you are authenticated as 'user2'Fix compilation for negative integers (!2192 by melwyn95)
Details :
Improves the Michelson compilation for negative integers, removes the unnecessary
NEG
instruction in the case of negative integersBefore:
$ ligo.55 compile expression cameligo ' -100' --without-run{ PUSH int 100 ; NEG }After
$ ligo compile expression cameligo ' -100' --without-run{ PUSH int -100 }Internal: remove cons_types from ppx (!2191 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Location Improvements (!2190 by alistair.obrien)
Details :
Location tracking improvements within the compiler
Testing framework: fix sorting on decompilation/compilation of maps/sets (!2188 by er433)
Details :
Example file
$ cat test_compare_setmap.mligolet test_address_set =let s : address set = Set.empty inlet s = Set.add ("tz1KeYsjjSCLEELMuiq1oXzVZmuJrZ15W4mv" : address) s inlet s = Set.add ("tz1TDZG4vFoA2xutZMYauUnS4HVucnAGQSpZ" : address) s inlet s : address set = Test.decompile (Test.eval s) inTest.eval sBefore
$ ligo run test test_compare_setmap.mligoError(s) occurred while parsing the Michelson input:At (unshown) location 0, value{ "tz1TDZG4vFoA2xutZMYauUnS4HVucnAGQSpZ" ;"tz1KeYsjjSCLEELMuiq1oXzVZmuJrZ15W4mv" } is invalid for type set address.Values in a set literal must be in strictly ascending order, but they were unordered in literal:{ "tz1TDZG4vFoA2xutZMYauUnS4HVucnAGQSpZ" ;"tz1KeYsjjSCLEELMuiq1oXzVZmuJrZ15W4mv" }After
$ ligo run test test_compare_setmap.mligoEverything at the top-level was executed.- test_address_set exited with value { "tz1KeYsjjSCLEELMuiq1oXzVZmuJrZ15W4mv" ;"tz1TDZG4vFoA2xutZMYauUnS4HVucnAGQSpZ" }.Fix: Top-level recursive functions for cameligo (!2186 by melwyn95)
Details :
Fixes top-level recursive functions of the form
let rec x = fun y -> ...
Fix: check allowed chars in entrypoints (!2182 by er433)
Details :
Example file
$ cat emit_bad_tag.mligolet main (_,_ : unit * string ) : operation list * string =[Tezos.emit "%hello world" 12], "bye"Before
$ ligo compile contract emit_bad_tag.mligoAn internal error ocurred. Please, contact the developers.Michelson_v1_printer.unparse.After
$ ligo compile contract emit_bad_tag.mligoFile "emit_bad_tag.mligo", line 2, characters 3-31:1 | let main (_,_ : unit * string ) : operation list * string =2 | [Tezos.emit "%hello world" 12], "bye"Invalid entrypoint "%hello world". One of the following patterns is expected:* "%bar" is expected for entrypoint "Bar"* "%default" when no entrypoint is used.Valid characters in annotation: ('a' .. 'z' | 'A' .. 'Z' | '_' | '.' | '%' | '@' | '0' .. '9').Resolve "Internal error: tried to substitute for mutated var" (!2180 by er433)
Details :
Example file
$ cat test_imm.ligotype storage is int;type return is list (operation) * storagefunction reset (var s : storage) : storage is {s := 0;} with (s);function main (const _action : unit; const s : storage) : return is((nil : list (operation)), reset(s));const test_orig = {const (_typed_address, _, _) = Test.originate(main, 42, 0tez);} with (Unit)Before
$ ligo run test test_imm.ligoAn internal error ocurred. Please, contact the developers.internal error, please report this as a bug: tried to substitute for mutated var File "src/passes/15-self_mini_c/subst.ml", line 317, characters 105-112.After
$ ligo run test test_imm.ligoEverything at the top-level was executed.- test_orig exited with value ().testing framework: fixing decompile_value (!2173 by lesenechal.remi)
Details :
Fix a bug where functional value couldn't be decompiled in the testing framework
Testing framework: make
Run
usedecompile_value
(typed) (!2166 by er433)Details :
Example file
$ cat test_record.ligotype internal_storage is [@layout:comb] record [value : int;]type storage is record [internal_storage : internal_storage;]const initial_storage: storage = record [internal_storage = record [value = 0;];];const test_reproducing = {Test.log(Test.eval(initial_storage));} with ("OK")Before
$ ligo run test test_record.ligoError(s) occurred while parsing the Michelson input:At (unshown) location 0, value (Pair 0) is invalid for type int.At (unshown) location 0, unexpected primitive, only an int can be used here.After
$ ligo run test test_record.ligo0Everything at the top-level was executed.- test_reproducing exited with value "OK".Add support for patterns in top-level declarations (!2038 by lesenechal.remi & melwyn95)
Details :
Fix a bug where top-level let destructuring were causing code to be executed multiple time, as in:
let (a,a) =let () = Test.log "hello" in(1,2)Fix a bug where type parameters were not found (https://gitlab.com/ligolang/ligo/-/issues/1482)
proxy_tickets
code has been changed (see https://ligolang.org/docs/advanced/testing/#transfers-and-originations-with-tickets)
0.56.0
Run this release with Docker:
docker run ligolang/ligo:0.56.0
Added :
Goodbye
gen
👋 (!2153 by alistair.obrien)Details :
Improve pretty-printing of types in errors by removing occurrences of
gen#...
variables.Testing framework: add
Test.get_time
to discover current time (!2138 by er433)Details :
New function in
Test
module:val get_time : unit -> timestampIt returns the current timestamp in the context of tests (similar to
Tezos.get_now
in contracts).Testing framework: extend comparison (!2123 by er433)
Details :
The comparison functions (
<
,<=
, etc.) now can work with variant types.Example
Given the file
test_compare.mligo
:type c = [@layout:comb] | B of int | A of stringtype cl = c listlet test_cmp_list = Test.assert ([A "hello" ; A "bye"] > [A "hello" ; B 42])Before this change
$ ligo run test test_compare.mligoFile "test_compare.mligo", line 4, characters 33-75:3 |4 | let test_cmp_list = Test.assert ([A "hello" ; A "bye"] > [A "hello" ; B 42])"Not comparable"After this change
$ ligo run test test_compare.mligoEverything at the top-level was executed.- test_cmp_list exited with value ().Diff of types in typer error messages (!2116 by nicolas.van.phan)
Details :
Feature description
The typer error message
Cannot unify X with Y
is now augmented with a diff betweenX
andY
when those are tuples.For example, here is a before/after of the error message for the following code :
let x : int * nat * int * nat * int * nat = 42 , 4n , 42 , 24n , 42 , 24nlet y : int * tez * string * nat * int * address * int * tez * nat = xBefore
Invalid type(s)Cannot unify ( int * nat * int * nat * int * nat ) with ( int * tez * string * nat * int * address * int * tez * nat ).After
Invalid type(s)Cannot unify ( int * nat * int * nat * int * nat ) with ( int * tez * string * nat * int * address * int * tez * nat ).Difference between the types:int+ tez+ stringnatint- nat+ addressint+ teznat
Fixed :
Add support for
chain_id
literal in Testing Framework (!2157 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Fix: replace
build_info
with protocol version forligo version
(!2151 by er433)fix byte extract (!2150 by lesenechal.remi)
Details :
fix a bug where bytes literals extraction was not working happening in JsLIGO
Testing framework: fix mutation in Michelson inlines (!2147 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: Send
dependencies
&devDependencies
while publishing a package (!2145 by melwyn95)Details :
Fixes bug in publising packages which have
dependencies
&devDependencies
.Fix location for error message for PascaLIGO (!2144 by melwyn95)
Details :
Before change
$ ligo.55 compile contract x.ligoInvalid type(s)Cannot unify int with ( list (operation) * int ).After change
$ ligo compile contract x.mligoFile "x.ligo", line 3, characters 71-72:2 |3 | function updateAdmin(const _new_admin: address; var s: int): return is s4 |Invalid type(s)Cannot unify int with ( list (operation) * int ).Monomorphisation: add a better error message (!2142 by er433)
Details :
Before change
$ cat monomorphisation_fail.mligolet f (_ : unit) s = ([], s)let main ((p, s) : unit * unit) : operation list * unit = f p s$ ligo compile contract monomorphisation_fail.mligoInternal error: Monomorphisation: cannot resolve non-variables with instantiationsAfter change
$ cat monomorphisation_fail.mligolet f (_ : unit) s = ([], s)let main ((p, s) : unit * unit) : operation list * unit = f p s$ ligo compile contract monomorphisation_fail.mligoFile "monomorphisation_fail.mligo", line 3, characters 58-63:2 |3 | let main ((p, s) : unit * unit = f p sCannot monomorphise the expression.Fix: Package resolution from Docker containers (!2137 by melwyn95)
Details :
Fixes package resolution for LIGO when used via Docker container.
Add check for non-comparable types under
set
andticket
(!2136 by er433)Details :
Before change
$ ligo compile contract not_comparable.mligoError(s) occurred while type checking the contract:At (unshown) location 2, ill formed type:1: { parameter (set (set int)) ;2: storage unit ;3: code { CDR ; NIL operation ; PAIR } }At line 1 characters 17 to 25,comparable type expected.Type set int is not comparable.After change
$ ligo compile contract not_comparable.mligoFile "not_comparable.mligo", line 1, characters 21-28:1 | let main ((_u, s) : (int set) set * unit) : operation list * unit = ([] : operation list), sThe set constructor needs a comparable type argument, but it was given a non-comparable one.Bugfix : Resolving module aliasing for nested modules (!2129 by pewulfman)
Details :
Performance :
Internal: in
tezos-ligo
, lazifysapling_storage.ml
'sdefault_root
(!2162 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Optimizations on mutable variables (!2099 by lesenechal.remi)
Details :
Apply michelson optimizations on mutable variables
0.55.0
Run this release with Docker:
docker run ligolang/ligo:0.55.0
Breaking :
Protocol update: Lima (!2094 by er433)
Details :
Updated to Lima protocol for Michelson type-checking and testing framework. Main breaking changes are:
- Deprecation of
chest
andTezos.open_chest
. - Change in
Tezos.create_ticket
to prevent the creation of zero valued tickets. Support for Jakarta has been removed. By default, we compile to Kathmandu. Type-checking for contracts use Kathmandu/Lima depending on--protocol
passed, but for the rest of commands, protocol Lima is used (particularly, testing framework).
Example of
Tezos.create_ticket
changeUsage for protocol Kathmandu:
let ticket : ticket<string> = Tezos.create_ticket("one", 10 as nat);Usage for protocol Lima:
let ticket : ticket<string> = Option.unopt(Tezos.create_ticket("one", 10 as nat));- Deprecation of
Fixed :
Fix: Detect cycles in
#include
paths and give proper error message (!2128 by melwyn95)Details :
Before:
$ ligo.54 print preprocessed x.mligoAn internal error ocurred. Please, contact the developers.("Stack overflow").After
$ ligo print preprocessed x.mligoFile "x.mligo", line 1, characters 9-18:1 | #include "y.mligo"2 |Error: Dependency cycle between:-> "x.mligo"-> "y.mligo"Fix
#include
for jsligo due to missing case in ASI (!2122 by melwyn95)Details :
Fixes bug in
#includ
ing jsligo files when semicolon is missing the last declaration of included fileBefore:
$ ligo.54 run test b.jsligoAn internal error ocurred. Please, contact the developers.("Simple_utils__Region.Different_files("b.jsligo", "a.jsligo")").After:
$ ligo run test b.jsligoEverything at the top-level was executed.- test exited with value ().fixing E_for_each ctxt threading (!2121 by lesenechal.remi)
Details :
Fix a bug where the typing of one for-loop could invalidate the typing of the next one
Testing framework: subtraction of timestamps (!2120 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
SLICE
instruction in testing framework's interpreter (!2107 by er433)Details :
No details provided for this change. Please visit the MR to learn more
NOT
instruction in testing framework's interpreter (!2106 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Layout Unification (!2070 by alistair.obrien)
Details :
Add layout unification to LIGO's type checker, which fixes existing flaws in the propagation of layout annotations.
0.54.1
Run this release with Docker:
docker run ligolang/ligo:0.54.1
Fixed :
[JsLIGO] Attributes can now occur before keyword "export". (!2102 by rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
fixing timestamp decompilation (!2100 by lesenechal.remi)
Details :
fixed decompilation of timestamp in LIGO test
Do check removal of emit/entrypoint for expressions (!2098 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Use projections instead of matching in uncurried stdlib (!2097 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
0.54.0
Run this release with Docker:
docker run ligolang/ligo:0.54.0
Breaking :
Make [@annot:] mean no annot (!2048 by tomjack)
Details :
An empty annot attribute (
[@annot:]
) on record fields and variant cases now means that there will be no annot at all. Previously, it was ignored, and the field/case name would be used as usual.
Added :
Testing framework: add option to remove default printing (!2075 by er433)
Details :
Testing framework: allow disabling of default printing.
By default, LIGO's testing framework will print the values prefixed with
test
. Now it is possible to disable this output by usingTest.unset_print_values : unit -> unit
. It can be turned on again usingTest.set_print_values : unit -> unit
. The values prefixed withtest
will be printed or not at the end of execution, depending on which of these commands was executed last.
Fixed :
Fixed the tokenisation of linemarkers (!2092 by rinderkn)
Details :
Fixed the tokenisation of linemarkers
[Package Management]: Fix bug in dependency resolution in ModRes (!2088 by melwyn95)
Details :
Fixes bug in resolution of external packages
Load stdlib modules in list-declarations (!2071 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Internal :
Clean up: Record pattern Containers (!2074 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Update tezos-ligo to v15.0-rc1 (!2072 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Frontend Pruning (!2067 by alistair.obrien)
Details :
Remove dead passes and code from the frontend
Michelson embedding with support of types and annotations (!2066 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: compile values directly (!2053 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Ligo daemon: output
x00
null char on stdout & stderr (!2049 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Fix bug in JSON printer for errors (!1916 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
0.53.0
Run this release with Docker:
docker run ligolang/ligo:0.53.0
Added :
Cameligo punning (!2057 by SanderSpies)
Details :
CameLIGO: add punning support for records.
Testing framework: add
assert
alternatives in theTest
module (!2054 by er433)Details :
New asserting primitives in the
Test
moduleTesting framework: add support for
chain_id
values (!2033 by er433)Details :
Added support for
chain_id
in the testing framework, now it can runTezos.get_chain_id ()
successfully.Escaped identifiers example (!2028 by SanderSpies)
Details :
Add an example of escaped identifiers.
Fixed :
Remove calling preprocessor with
ligo print pretty
. (!2059 by rinderkn)Details :
No details provided for this change. Please visit the MR to learn more
Fix linearity check for patterns (!2056 by melwyn95)
Details :
Fix the check to detect duplicate bindinds in a pattern
Assignment chaining (!2046 by SanderSpies)
Details :
Fix for JsLIGO assignment chaining when tuples are used (see also: #1462)
Revert InfraBot change for
tezos-ligo
version (!2032 by alistair.obrien)Details :
No details provided for this change. Please visit the MR to learn more
Mutable Let (!2001 by alistair.obrien)
Details :
Fix/improve LIGO's implementation of mutable features
Changed :
Pattern Inference (!2040 by alistair.obrien)
Details :
Add pattern inference
CLI: upload more meta data points to registry: main and repository (!2024 by prometheansacrifice)
Details :
No details provided for this change. Please visit the MR to learn more
Jsligo improve semicolon insertion (!2016 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Internal :
Refactor: fix type of Pattern.t (!2063 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Upgrade Core to v0.15.0 (!2061 by ulrikstrid)
Details :
Updated Core to the latest release
Punning left over (!2060 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor: move pattern matching compilation to ast-aggregated (!2052 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: Pass ES6FUN token also when a syntax error occurs in the PreParser (!2051 by SanderSpies)
Details :
JsLIGO: Pass ES6FUN token also when a syntax error occurs in the PreParser
Reintroduce operators for testing framework (!2047 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
add make install (!2042 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor: record patterns now hold labels & patterns in a map (!2041 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Refactoring of the front-end (last iteration) (!2031 by rinderkn)
Details :
Fixed some bugs with the preprocessor and lexer.
0.52.0
Run this release with Docker:
docker run ligolang/ligo:0.52.0
Added :
Jsligo unreachable code (!2017 by SanderSpies)
Details :
Give a warning when there's unreachable code in JsLIGO.
JsLIGO: add ternary support . (!1993 by SanderSpies)
Details :
- JsLIGO: add ternary support
Adds a package wrapped in esy (!1974 by ulrikstrid)
Details :
nix improvements
Add package that provides
ligo
with withesy
. Usage:nix run gitlab:ligolang/ligo#withEsy -- install
Jsligo discriminatory union (!1973 by SanderSpies)
Details :
JsLIGO: Add support for discriminatory unions.
Add raw bytes literal from string (!1852 by tomjack & er433)
Details :
Raw bytes representation from string
Raw bytes can be expressed directly from a string using
[%bytes "..."]
. E.g.,[%bytes "foo"]
represents bytes0x666f6f
.
Fixed :
fix: contract not compiling in presence of meta-ligo terms (!2010 by lesenechal.remi)
Details :
- fix a regression where contract could not compile in presence of meta-ligo expressions (automatically remove such expressions)
Testing framework: fixing decompilation of event payloads (!2005 by lesenechal.remi)
Details :
Testing framework: fixing decompilation of event payloads
Testing framework: untranspilable ticket in bigmap update (!1996 by lesenechal.remi & er433)
Details :
- Testing framework: fix a bug where a ticket in a big_map was not transpilable
Allow return in switch case. (!1995 by SanderSpies)
Details :
Return in switch case now works properly.
bugfix/module attribute deletion in aggregation (!1978 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Changed :
Improve JsLIGO docs (!2026 by SanderSpies)
Details :
Reduce number of type annotations in JsLIGO examples in the documentation.
Match list no annotation (!2014 by SanderSpies)
Details :
Remove the need for type annotations when using the match function over lists.
Jsligo destructure function params (!2011 by SanderSpies)
Details :
JsLIGO: Tuple destructuring in parameters.
JsLIGO Object destructuring in parameters (!2002 by SanderSpies)
Details :
Add support to destructure objects in function parameters.
JsLIGO: improve
if .. else
handling + allow "_" as arrow function argument. (!1991 by SanderSpies)Details :
Semicolon before else now allowed. Underscore is now allowed as arrow function argument.
Internal :
Expect tests: cleanup (!2021 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Jsligo support
Foo.bar<int>
syntax (!2018 by SanderSpies)Details :
No details provided for this change. Please visit the MR to learn more
Keep
(context, expression)
inAst_aggregated
for test purging (!2015 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Import module syntax (!2009 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Remove unused
C_ASSERT_INFERRED
(!2007 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Add
.ocamlformat
Configurations (!2003 by alistair.obrien)Details :
Add
.ocamlformat
configs to the compilerJsLIGO: allow more in ternary expression (!1997 by SanderSpies)
Details :
- JsLIGO: allow more in ternary expression
Jsligo single arg (!1992 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add int64 support (!1829 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Remove reserved names pass (!1712 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
0.51.0
Run this release with Docker:
docker run ligolang/ligo:0.51.0
Added :
Stdlib: add ignore (!1967 by er433)
Details :
New
ignore
in stdlibA new function
ignore : type a . a -> unit
allows to ignore values.Add
List.find_opt
to LIGO's Standard Library (!1953 by alistair.obrien)Details :
Added
List.find_opt
to LIGO's standard libraryadd brew formula into ligo monorepo (!1950 by Laucans)
Details :
Add ligo installation through brew package manager. By using
brew tap ligolang/ligo https://gitlab.com/ligolang/ligo.gitbrew install ligolang/ligo/ligoYou can also install one of the three last version by targeting the version after "@" :
brew install ligolang/ligo/ligo@0.49.0Jsligo for-loops on maps (!1949 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Execute ligo through NIX (!1937 by Laucans)
Details :
Run
nix run gitlab:ligolang/ligo
to execute the last release of ligo binary through nix (arch x86_64-linux)Draft: New implementation of get-scope with support for modules (!1935 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add support for mutation in
Test.originate_from_file
functions (!1904 by er433)Details :
New functions for testing framework
There are new functions for doing mutation testing directly from files, that originate a mutated version of the contract and then gives control to the passed function that can do the test:
Test.originate_from_file_and_mutate : string -> string -> string list -> michelson_program -> tez -> (address * michelson_contract * int -> b) -> (b * mutation) option
Test.originate_from_file_and_mutate_all : string -> string -> string list -> michelson_program -> tez -> (address * michelson_contract * int -> b) -> (b * mutation) list
Add a subcommand
ligo daemon
to be used only by tools like LSP server (!1882 by lesenechal.remi)Details :
- add a daemon for ligo
Fixed :
Fix: remove forced annotation in CameLIGO's abstractor (!1981 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix path issue in testing framwork for jsligo tests (!1980 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
[Testing Framwork] Fix relative path resolution for contracts (!1979 by melwyn95)
Details :
Fixes path resolution if a relative path is provided to
Test.originate_from_file
&Test.compile_contract_from_file
&Test.read_contract_from_file
regression layout (!1976 by lesenechal.remi)
Details :
Fix regression in layout unification
Fix tuple parameters passed to constant functions e.g.
Tezos.call_view
(!1972 by er433 & melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Jsligo preparser comma (!1971 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix JsLIGO preparser issue with colons. (!1966 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Monomorphisation: forall eta expand in monomorphisation (!1964 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Bugfix : nested for loop doesn't catch assignation effect correctly (!1963 by pewulfman)
Details :
Fixing bug with nested for loops in Pascaligo
Fix the emission of recursive functions in JsLIGO tree abstractor (!1960 by alistair.obrien)
Details :
Fix the emission of recursive functions in JsLIGO tree abstractor
Testing framework: perf. fix; compute error_type only when needed (!1954 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix view compilation for the case when a view uses another view (!1951 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
[Fix] Website responsive issue (!1948 by JulesGuesnon)
Details :
Some blocks were cropped on small devices, so I fixed the responsive
Bug Fix: Function Application in Bidirectional Type Checking (!1945 by alistair.obrien)
Details :
Bug fix for function application in bidirectional type checking
Changed :
Update Documentation Removing Unnecessary Annotations (!1969 by alistair.obrien)
Details :
Update documentation removing unnecessary annotations
JsLIGO Remove Parser Requirement for Mandatory Parameter Annotations (!1961 by alistair.obrien)
Details :
Remove requirement that JsLIGO function parameters must be annotated
Bidirectional type checking for LIGO (!1905 by alistair.obrien)
Details :
Re-implement LIGO's type checker using bidirectional type checking.
Performance :
Remi/bidir lib optim (!1970 by lesenechal.remi)
Details :
Improve performance of compilation and typechecking
Internal :
Add interface for Ligo_prim/Binder.ml (!1956 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO ES6FUN token (!1955 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: reuse layout from spilling pass (!1952 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Move special constants to stdlib (!1947 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Split Declaration module in ligo prim + Add ppx for fold and map (!1944 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Stdlib: move
C_..._LITERAL
in (!1942 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: small internal clean-up (!1939 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Remove C_OPTION_MAP from pseudomodules treatement (!1933 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor change common. (!1925 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
0.50.0
Run this release with Docker:
docker run ligolang/ligo:0.50.0
Added :
Draft: Adding support for the reverse application operator |> (!1875 by rinderkn)
Details :
Added support for the reverse application operator |>
Fixed :
Update type for
SAPLING_VERIFY_UPDATE
after Jakarta (!1930 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Better error mesage for incorrect contract type (!1929 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix
ligo publish
for big files (!1921 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Internal :
Add
@thunk
for forcing AST-level substitution (!1928 by er433)Details :
No details provided for this change. Please visit the MR to learn more
REPL: move from linenoise to lambda-term (!1922 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Implement Subst for ast-aggregated (!1900 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
CLI: add
no-stdlib
flag (!1790 by er433)Details :
No details provided for this change. Please visit the MR to learn more
0.49.0
Run this release with Docker:
docker run ligolang/ligo:0.49.0
Added :
List decl improv (!1915 by lesenechal.remi)
Details :
ligo info list-declarations
now fail in case of a type errorligo info list-declarations
now accepts a flag--only-ep
to only display declarations typed as an entrypoint (parameter * storage -> operation list * storage
)
Fixed :
Mutation testing: reduplication for mutation saving (!1914 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Perf: view fix (!1896 by lesenechal.remi)
Details :
- Performance: optimized compilation time for contracts
[Package Management] Fix: package tar-ball having absolute paths (!1893 by melwyn95)
Details :
Fix
ligo publish
in the case where--project-root
is inferred
Performance :
[FIX] Improve the speed of compilation of views (!1903 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Internal :
Testing framework: implement mutation testing on top of try-catch (!1913 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add internal function for try-with (!1912 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Ligo Login: lookup env when not tty (!1908 by prometheansacrifice)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: simplify re-construction of environment (!1907 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Monomorphisation: generate always different instances (!1888 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
0.48.1
Run this release with Docker:
docker run ligolang/ligo:0.48.1
Added :
Add manpages for login, add-user & publish (!1899 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed :
Fix
#import
module not found (!1906 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
0.48.0
Run this release with Docker:
docker run ligolang/ligo:0.48.0
Added :
update to kathmandu (2/2 : EMIT) (!1889 by lesenechal.remi)
Details :
- Support for Kathmandu EMIT primitives (see https://tezos.gitlab.io/alpha/event.html)
[Testing Framwork] Add relative path resolution to Test.originate_from_file (!1879 by melwyn95)
Details :
Test.originate_from_file
can now resolve paths relative to test fileTesting framework: add support for C_CONTRACT and similar (!1876 by er433)
Details :
Testing framework: support for
Tezos.get_entrypoint_opt
,Tezos.get_contract_opt
and variants.[Package Management] Integrate ligo registry in CLI & Impl
ligo publish
,ligo login
&ligo add-users
in CLI (!1863 by melwyn95)Details :
Adds support for the new LIGO registry with the following commands
publish [--registry URL] [--ligorc-path PATH] [--project-root PATH]
publish the LIGO package declared in package.jsonadd-user [--registry URL] [--ligorc-path PATH]
create a new user for the LIGO package registrylogin [--registry URL] [--ligorc-path PATH]
login to the LIGO package registry
Testing framework : Documentation on ticket testing + support for decompilation of tickets to unforged tickets (!1725 by lesenechal.remi)
Details :
- [Testing framework] support for decompilation for
ticket
s intounforged_ticket
s - [Testing framework] documentation about ticket testing
- [Testing framework] support for decompilation for
Fixed :
Testing framework: Add support for decompiling key as bytes (!1891 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Draft: Mac Installation Instructions and Fixes (!1883 by alistair.obrien)
Details :
- Added additional instructions for installing and building LIGO on MacOS.
- Additionaly fixed reliance on
$PATH
forjsonschema
inget_scope_tests
by prefixing command withpython3 -m
.
Re-introduce self_typing (!1880 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: scope of #import (!1873 by pewulfman)
Details :
The scope of
#import
directive has been fixed so that the imported module is created in-place instead of at the beginning of the file. (i.e won't be shadowed anymore by a module declared before the import)Aggregation: remove from the scope the variables locally bound (!1871 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Handle Big_map.get_and_update in test interpreter (!1870 by melwyn95)
Details :
Handle Big_map.get_and_update in testing framework
Change handling of capitalization in
Tezos.get_entrypoint_opt
(!1864 by er433)Details :
Tezos.get_entrypoint_opt
does not error anymore on the usage of a capitalized entrypoint.
Changed :
Tezos upd v14 (!1884 by lesenechal.remi)
Details :
- LIGO now depends on tezos v14
Try to infer
--project-root
when using ligo commands (!1859 by melwyn95)Details :
Infer
--project-root
when using ligo commandsNow LIGO will try to infer
--project-root
by looking at parent directories, This will make LIGO CLI commands less verbose (when using external packages from npm).If you need/want to specify the root directory of your project you can as always use the
--project-root
flag.
Deprecated :
Remove thunked constants (!1877 by er433)
Details :
Deprecated:
Tezos.amount
,Tezos.balance
,Tezos.now
,Tezos.sender
,Tezos.source
,Tezos.level
,Tezos.self_address
,Tezos.chain_id
,Tezos.total_voting_power
Prepare Deprecate of Reasonligo (!1849 by pewulfman)
Details :
As ReasonLigo doesn't seem to have any advantages over Cameligo and JSligo and it seems that it is not used much. We decided to remove the support of the syntax, in order to focus our effort on other parts of the compiler. We have added a warning that we will leave for a few versions and remove ReasonLigo then.
Internal :
Package management: Adds package author to metadata during publish (!1878 by prometheansacrifice)
Details :
Here replace this sentence and put what you want to share with ligo users through changelog. Markdown formatted (#### for title). If you don't want to describe the feature remove keyword "Description details:"
Typer: keep type abstraction after checking (!1872 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Draft: Decompile & pretty print patterns in error message (!1814 by melwyn95)
Details :
Better error messages for pattern matching anomalies
0.47.0
Run this release with Docker:
docker run ligolang/ligo:0.47.0
Added :
CLI Scaffolding feature (!1858 by Laucans)
Details :
Initialize a new Ligo project from chosen template
This feature allow user to easily setup a new ligo project (Library or Contract) from template by adding new command-set into CLI.
Requirements
Feature use
git
so git cli have to be available.Commands
ligo init -help
ligo init contract --template-list
= print available template list to generate contractligo init contract <PROJECT> --template XXX
= initialize folder with contract template XXXligo init library --template-list
= print available template list to generate libraryligo init library <PROJECT> --template XXX
= initialize folder with library template XXXAdditional details
- Every template are cloned from github ligolang org.
Add option --experimental-disable-optimizations-for-debugging (!1800 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed :
Fix aggregation bug in loop (!1850 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Cleanup Agregation : replace dirty ref map with proper functional handling (!1845 by pewulfman)
Details :
fix a potential bug in the backend
Draft: view compilation clean-up (!1833 by lesenechal.remi)
Details :
- Fixing potential bug related to view declaration shadowing
Fix handling of @scoped/packages in ModRes (!1818 by melwyn95)
Details :
Fix handling for scoped npm packages
Performance :
Optimize {PAIR n; UNPAIR n} and {UNPAIR n; PAIR n} (!1846 by tomjack)
Details :
Optimize {PAIR n; UNPAIR n} and {UNPAIR n; PAIR n} to {}
Internal :
Remove access_path in E_assign (!1851 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Remove Bool from type list (!1808 by er433 & melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
0.46.1
Run this release with Docker:
docker run ligolang/ligo:0.46.1
Fixed :
fixing wild failwith (!1843 by lesenechal.remi)
Details :
Fix a potential crash during the generation of type errors
0.46.0
Run this release with Docker:
docker run ligolang/ligo:0.46.0
Added :
Testing framework: separate
Test.log
into printing and string conversion (!1809 by er433)Details :
New functions:
Test.print
,Test.println
,Test.eprint
,Test.to_string
,Test.nl
andTest.chr
These new functions provide more fine-grained printing.
val Test.print : string -> unit
: prints an string to stdout.val Test.println : string -> unit
: prints an string to stdout, adding a newline at the end.val Test.eprint : string -> unit
: prints an string to stderr.val Test.to_string : 'a -> string
: turns a value of a given type into astring
(internally using the same conversion asTest.log
)val Test.nl : string
: a string containing only a newline.Test.chr : nat -> string option
: turns a nat in the range [0, 255] to an string consisting of only the corresponding char.Testing framework: improvement on random generation and module PBT (!1799 by er433)
Details :
A new module
Test.PBT
This new module is introduced to do simple property-based testing. It's composed of:
val gen : 'a gen
: gives a generator for type'a
(must be annotated).val gen_small : 'a gen
: : gives a small generator for type'a
(must be annotated).val make_test : 'a gen -> ('a -> bool) -> 'a pbt_test
: creates a test from a generator and a property.val run : 'a pbt_test -> nat -> 'a pbt_result
: runs a test for a given number of tries. The introduced types are:type 'a gen
: represents a generator for a type.type 'a pbt_test
: represents a test for a type.type 'a pbt_result = Success | Fail of 'a
: represents the result of running a test.
Fixed :
Testing framework: fix generator for nat/tez (!1830 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix abstractors for nested builtin submodules (!1820 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fixing the scanning of escaped characters in strings (!1817 by rinderkn)
Details :
Until now escaped characters in strings were not properly scanned.
For instance, now the following constants
let _one = String.length """let _two = String.length ""let _three = String.length ""are accepted and evaluate in 1.
Error if polymorphism is present after monomorphisation (!1804 by melwyn95)
Details :
Improve error message if polymorphism cannot be resolved
Changed :
Pattern Matching: anomaly detection (!1794 by melwyn95)
Details :
Improve pattern matching anomaly (missing case / redundant case) error messages.
For missing cases:
type p = Four | Five | Sixtype t = One of { a : int ; b : p } | Two | Threelet s (x : t) =match x withOne { a ; b = Six } -> ()| Two -> ()| Three -> ()Error:
File "../../test/contracts/negative//pattern_matching_anomalies/missing_cases/c_r_c.mligo", line 5, character 2 to line 8, character 29:4 | let s (x : t) =5 | match x with6 | One { a ; b = Six } -> ()7 | | Two -> ()8 | | Three -> ()Error : this pattern-matching is not exhaustive.Here are examples of cases that are not matched:- One({ a = _ ; b = Five })- One({ a = _ ; b = Four })For redundant case:
type t = One of int | Two of nat | Threelet s (x : t) =match x withOne a -> ()| Two c -> ()| Three -> ()| _ -> ()Error:
File "../../test/contracts/negative//pattern_matching_anomalies/redundant_case/c1_c2_c3_w.mligo", line 8, characters 4-5:7 | | Three -> ()8 | | _ -> ()Error : this match case is unused
Deprecated :
Ithaca deprecation (!1825 by lesenechal.remi)
Details :
Deprecation of
--protocol ithaca
Internal :
Improvement on Trace module (!1834 by pewulfman)
Details :
The compiler is now able to report all errors corresponding to the same step of compilation at the same time
Clean checking : add abstraction to avoid futur conflict and remove etection of polymorphic var (!1831 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Clean up var module (!1826 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
mono file stdlib (!1815 by lesenechal.remi)
Details :
rework of the standard library (might slightly improve compiler/tooling performances)
Change
%external
replacement (!1792 by er433)Details :
No details provided for this change. Please visit the MR to learn more
0.45.0
Run this release with Docker:
docker run ligolang/ligo:0.45.0
Breaking :
Testing framework: expose functions for contract compilation and origination (!1772 by er433)
Details :
New
Test
type and functionstype michelson_contract
: representing Michelson contracts.Test.compile_contract_from_file : string -> string -> string list -> michelson_contract
Test.compile_contract : ('param * 'storage -> operation list * 'storage) -> michelson_contract
Test.read_contract_from_file : string -> michelson_contract
Test.originate_contract : michelson_contract -> michelson_program -> tez -> address
Test.size : michelson_contract -> int
Breaking changes in
Test
types, now they returnmichelson_contract
instead ofmichelson_program
:Test.originate_from_file : string -> string -> string list -> michelson_program -> tez -> address * michelson_contract int
Test.originate : ('param * 'storage -> operation list * 'storage) -> 'storage -> tez -> (('param, 'storage) typed_address * michelson_contract * int)
Most usages ignore this result, but might break some tests in case they are too annotated.
failwith now accepts arbitrary type as input (!1748 by lesenechal.remi)
Details :
The
failwith
primitive now accepts arbitrary type as input.breaking changes
failwith
is now typed asforall a b . a -> b
, instead of applying an ad-hoc rule givingunit
as a default return type. In general, this will require more type annotations, as in:let toplevel_failwith = failwith "I am failing" (* will not type anymore *)let toplevel_failwith : unit = failwith "I am failing"let f = fun (_ : unit) -> failwith (x + x + String.length y) (* will not type anymore *)let f = fun (_ : unit) : unit -> failwith (x + x + String.length y)Closes #193
Remove deprecated constants (!1711 by er433)
Details :
Deprecated constants
In previous versions of LIGO, warnings were emitted for deprecated constants (e.g.
balance
,sender
, etc.). We finally remove those constants. Please consult API documentation in ligolang.org to find a new constant that can replace the old one in your contract.
Added :
Testing framework: add missing
Test.drop_context
(!1787 by er433)Details :
New
Test
function:drop_context
A new
val Test.drop_context : unit -> unit
in the testing framework is introduced. It allows to drop contexts from the context stack.Testing framework: add signing operation (!1783 by er433)
Details :
New function
Test.sign
A new function
val sign : string -> bytes -> signature
was added to sign data (represented asbytes
) using a key (represented as astring
).Testing framework: support getting secret key from bootstrap accounts (!1782 by er433)
Details :
New
Test
function:get_bootstrap_account
The new function
val get_bootstrap_account : nat -> address * key * string
inTest
retrieves the nth bootstrap account. Differently tonth_bootstrap_account
, it also recovers thekey
and the secret key (represented as astring
, similar toTest.new_account
).Testing framework: Better control of time (!1776 by lesenechal.remi)
Details :
testing framework: new function
Test.reset_at
(similar toTest.reset
) which takes a timestamp and initialize the genesis block with a given timestampinjectable cli expression (!1769 by lesenechal.remi)
Details :
you can now pass an expression to
ligo run test
using command line option--arg
, this value will be accessible through variablecli_arg
Ligo native multi-platform (!1768 by prometheansacrifice)
Details :
Use esy to build binary for :
- Windows
- Mac intel
- Mac m1
Multiplat builds with esy (!1764 by Laucans)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: implement other baking policies (!1746 by er433)
Details :
New
Test.set_baker_policy
There is a new
Test.set_baker_policy : test_baker_policy -> unit
that allows to set different baker policies as available in the testing helpers provided by the protocol. The typetest_baker_policy
is defined as the sum type:type test_baker_policy =| By_round of int| By_account of address| Excluding of address listIn particular,
Test.set_baker addr
is equivalent toTest.set_baker_policy (By_account addr)
.[jsligo] function parameter destructuring, and let destructuring improvement (!1720 by lesenechal.remi)
Details :
- JSLIGO patterns in function parameters are now compiled to pattern matching, which improves the generated code in general
- JSLIGO "let-destructuring" will now work on objects (record type) and arrays (tuple type) as in:
let destruct_tuple = (x : [ int , [int , nat] ]) : nat => {let [a,[b,c]] = x ;c};let destruct_record = (x : { a : int , b : string }) : int => {let { a , b } = x ; (* Note: nested pattern in record are not yet available *)a};Moving to jarkarta (!1709 by lesenechal.remi)
Details :
upgrade to jakarta:
- jakarta changes are available (please use option
--protocol jakarta
)
- jakarta changes are available (please use option
Testing framework: add support for context saving/restoring (!1695 by er433)
Details :
New operations
Test.save_context
andTest.restore_context
Test.save_context : unit -> unit
: takes current testing framework context and saves it, pushing it into a stack of contexts.Test.restore_context : unit -> unit
: pops a testing framework context from the stack of contexts, and sets it up as the new current context. In case the stack was empty, the current context is kept.
Global constants support in compile expression and additional support in parameter/storage (!1693 by er433)
Details :
The sub-command
compile expression
now supports--constant
and--file-constants
for using global constants.Testing framework: add support for loading files with global constants (!1681 by er433)
Details :
Testing framework: add support for loading files with global constants
A new function
Test.register_file_constants
is introduced. It takes a string (file path) and returns a list of strings corresponding to the hashes of the registered constants.The file format is the same as the used in
--file-constants
for sub-commandcompile contract
.Add support for constants and file-constants in compile-parameter and compile-storage (!1677 by er433)
Details :
Add support for global constants in
compile storage
andcompile parameter
Add deprecation warning for constants marked as deprecated (!1623 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: new Test.register_constant and Test.constant_to_michelson_program to work with global constants (!1617 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[Ithaca] Command line option
--protocol ithaca
now allow users to use Ithaca specifics (!1582 by er433 & melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: Dropping support for
Test.set_now
LIGO 0.38.0 onwards. (!1582 by er433 & melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
[Ithaca] Support for Option.map - MAP instruction on
option
type. (!1582 by er433 & melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
[Ithaca] Subtraction operator emmits
SUB_MUTEZ
instruction when subtracting value of typetez
. (!1582 by er433 & melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Global constants: add compile constant sub-command (!1608 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Global constants: register global constants for compile-contract (!1603 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Website: Add Changelog link in header website & webide (!1602 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
testing framework: change 'test_exec_error' type. It now has a special case for unsuficient balances, and case Other will return the tezos_client error (as a string) (!1576 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Docs: Update docs about Set.literal (!1572 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add instructions to register delegate and add baker accounts (!1547 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add voting_power & total_voting_power to test interpreter (!1542 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Update docs about adding alias for ligo on Linux/MacOS & Windows. (!1541 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add functions to register/generate (sk, pk) pairs for implicit addresses (!1539 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add support for Tezos.implicit_account (!1533 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Adding
Tezos.voting_power
andTezos.total_voting_power
(!1531 by Rémi Lesénéchal)Details :
No details provided for this change. Please visit the MR to learn more
Experimental support for source environment (bound variable) info with --michelson-comments env (!1521 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Support curried recursive functions (!1516 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: Test.transfer_* returns gas consumption (!1509 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Remove unused decls. (including potential
Test.
usages) when compiling parameter/storage (!1500 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add Test.decompile primitive (!1493 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add literals/negation for bls12_381_g1/g2/fr (!1479 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Added Tezos.constant for protocol Hangzhou (!1438 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add asserts in interpreter (!1463 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add support for Bytes.sub (!1462 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Webide: add examples for JsLIGO and re-enable increment examples for other languages (!1457 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Docs for ligo package management (!1436 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add Test.random for generating values using QCheck (!1244 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add support for package management to ligo using esy package manager (!1394 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Test framework: add pack/unpack using Michelson interpreter (!1429 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix typo in entrypoints-contracts.md (!1298 by @mweichert)
Details :
No details provided for this change. Please visit the MR to learn more
Generate syntax highlighting for PascaLIGO (!1418 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Generate ReasonLIGO syntax highlighting for VIM, Emacs, VS Code (!1415 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Generate VSCode syntax highlighting for CameLIGO (!1414 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Generate CameLIGO Syntax Highlighting from definition in OCaml - Emacs + VIM (!1210 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: update run so it runs in current tezos_context and port tzip12 tests to testing framework (!1409 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Docs for Bytes (!1389 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Experimental: propagate source locations to Michelson with
--michelson-comments location
(!1251 by tomjack)Details :
No details provided for this change. Please visit the MR to learn more
Docs for switch statement - jsligo (!1358 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Tree abstraction for switch statements - jsligo (!1358 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
[Hangzhou] Testing framework: expose functions 'create_chest_and_chest_key' and 'create_chest_key' from Tezos crypto library (timelock) as 'Test.create_chest' and 'Test.create_chest_key' respectively (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
[Hangzhou] Testing framework: Test.originate_from_file now takes an additional list of top-level declaration for views (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
[Hangzhou] Command line option '--protocol hangzhou' now allow users to use hangzhou specifics (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: new primitive 'Test.cast_address' to cast an address to a typed_adress (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
[Hangzhou] support for on-chain views. Command line option '--views' and top-level declaration '[@view]' annotation (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
[Hangzhou] support for timelock. Types: chest; chest_key; chest_opening_result. Primitives: Tezos.open_chest (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Docs: simple polymorphism (!1361 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Simple polymorphism: add support for simple polymorphism in the type-checking pass (!1294 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: Add support for assignment operators: += /= *= -= %= (!1348 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add comparator for bigmaps (!1340 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Docs: new features on mutation (!1323 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
testing framework: adding timestamp arithmetic in LIGO interpreter (!1322 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Add missing API functions to interpreter [List.fold_right, List.fold_left, List.head_opt, List.tail_opt, Set.fold_desc, Set.update, Map.get_and_update] (!1319 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add steps bound (for timeout) (!1308 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Documentation of Preprocessor and LexerLib libraries. (!1306 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add attribute to mark non-mutable declarations (!1303 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add support for modules (!1280 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO error messages (!1272 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Sub-command compile-expression: add option for disabling running of compiled code (!1252 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add support for re-generating files from mutation (!1214 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Added attributes on lambdas. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Front-end: Parameteric type expressions, polymorphic type and value definitions. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
The typechecking now understand parametric types (!1179 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Contract pass: check entrypoint syntax in C_CONTRACT_ENTRYPOINT(_OPT) (!1223 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: a call trace is kept for giving context on failure (!1209 by er4333)
Details :
No details provided for this change. Please visit the MR to learn more
Add commands for mutating CST/AST, and primitives formutation in testing framework (!1156 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add bitwise operators for CameLIGO & ReasonLIGO (!1205 by Melwyn Saldanha)
Details :
No details provided for this change. Please visit the MR to learn more
Add support for NEVER instruction as Tezos.never (!1194 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
New pass enforcing: consts cannot be assigned to, vars cannot be captured. (!1132 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Added syntactic support for tuples without parentheses at the top-level of patterns in pattern matchings. (!1168 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Add warning message when layout attribute is present on a constructor for a sum (issue #1104) (!1163 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add more documentation on LIGO testing framework (!1128 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Pass for repeated usage of ticket values (!1065 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Compiler now emits Edo GET k and UPDATE k when [@layout:comb] is used with records (!1102 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
added variable references support (get-scope) (!1101 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Add type inference to the compiler (!1026 by @ligo.suzanne.soy, @pewulfman, @lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
LIGO Test Framework documentation (!1092 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Support for deep pattern, record pattern, wildcard ("_") pattern and unit pattern in matching expressions (!934 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Allow identifiers with underscore and wildcard name (!1078 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add description and documentation for each sub command (!1028 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add support for JsLIGO (!896 by @SanderSpies, @rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Explain sequences in ReasonLIGO and CameLIGO (!1062 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add werror flag to mark warnings as errors (!1060 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add repl (!1001 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add a REPL based on linenoise (!1001 by Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
The Emacs ligo-mode is now released on MELPA (!1008 by sanityinc)
Details :
No details provided for this change. Please visit the MR to learn more
Some optimizations for Edo, including DUP n (!1017 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
[@layout:comb] record destructuring is now compiled to UNPAIR n (!1030 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
add set update primitive (!1021 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
prototype typer: separated typeclass deduce_and_clean to its own heuristic; trimmed down the Compat modules (!981 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
prototype typer: heuristic to inline the definition of type variables used in type classes (!981 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed potential bug: use multiset in typeclasses_constraining; added indexer for typeclasses using a variable as an unbound var; sketched out heuristic which inlines variabes in typeclasses (!981 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Add chain_id literals (!953 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Uncurry functions only used in full applications (!922 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Few fixes in tickets untranspilation (!929 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Added doc for Edo things (tickets/sapling) (!929 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
tuple destructuring are now transformed into nested pattern matches (!909 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
linear pattern matching (tuple/record) (!909 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
EDO primitives (use --protocol edo and --disable-michelson-typechecking) (!909 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
prototype typer: added a separate constraint checking routine which will be executed after type inference (!910 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Add two new function:
- List.head_opt
- List.tail_opt
which returns none if the list is empty and respectively hd and tl if the list is CONS (hd,tl) (!887 by Pierre-Emmanuel Wulfman)
Details :
Details :
Details :
Details :
Details :
Details :
Details :
Details :
Details :
Details :
Details :
Details :
Fixed :
Testing framework: keep order on bigmap receipts (!1811 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Docker image: make ligo executable for non-root users (!1810 by tomjack)
Details :
Docker image: ligo now executable by non-root users inside container (e.g. when running docker with
-u $(id -u):$(id -g)
.)Custom JSON output for types
bool
andoption
(!1805 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Compile parameter and storage types individually in views (!1798 by er433 & melwyn95 & nicolas.van.phan)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: make
Test.cast_address
record type information (!1797 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Replace
operations
foroperation
in error message (!1796 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Fix:
Test.transfer_to_contract
use entrypoint (!1795 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Fix record pattern matching when fields are not in the same order in all patterns (!1778 by melwyn95)
Details :
Fix record pattern matching when fields are not in the same order in all patterns
jsligo: let bindings nested in a module would not be silently morphed into constants (!1765 by lesenechal.remi)
Details :
fix a bug where top-level let declaration within a Jsligo Namespace wouldn't compile
Testing framework: add inline attribute (!1761 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
fix: --protocol jakarta emits
SUB
for mutez subtraction (!1755 by melwyn95)Details :
--protocol jakarta
now emitsSUB_MUTEZ
for subtractionmutez
values
pattern matching: some "inference" (!1753 by lesenechal.remi)
Details :
- improvement of pattern matching type-checking
Stdlib: Add
thunk
attribute to Big_map.empty (!1747 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Bugfix, export let is not cast silently (!1744 by pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Improve running time after perfing (!1743 by lesenechal.remi)
Details :
- Testing framework: fix a potential bug where the current context wasn't used to evaluate Michelson code
Update Hashlock and ID examples for the webide (!1739 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
fixing lib cache (!1735 by lesenechal.remi)
Details :
- Fix a potential bug in standards libraries caching
Restricted strings to 7-bit ASCII, as in Michelson. (!1731 by rinderkn)
Details :
Description details: Restricted strings to 7-bit ASCII, as in Michelson.
[jsligo] Fix nested polymorphic functions (!1727 by melwyn95)
Details :
Fixed handling for nested generic functions in JsLIGO
const id : <P>(x : P) => P = (x : P) => {const id_1 : <Q>(y : Q) => Q = (y : Q) => {let id_2 : <R>(z : R) => R = (z : R) => {let z = z;return z;};let y = y;return id_2(y);}return id_1(x);};Typer context - Replace lists by maps (!1722 by nicolas.van.phan)
Details :
do not raise corner_case in pattern matching compression (!1716 by lesenechal.remi)
Details :
fix detection of missing constructors in pattern matching
Fix recursive functions when fun_name shadowed (!1714 by melwyn95)
Details :
Fixes bug in tail-call recursion check
Fix: REPL support for stdlib (!1713 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix Tezos.call_view with impure (!1708 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix
option
handling in michelson_to_value (!1699 by melwyn95)Details :
- Fix bug in test interpreter related handling of option values
- Improve typing of records when type annotation is not provided
fixing a bug in pattern_matching.ml substitution (!1698 by lesenechal.remi)
Details :
Fix a bug related to recursive function definitions in pattern matching
Testing framework: fix subtraction of timestamps (!1697 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: move Tezos.create_contract check of free variables to aggregated (!1691 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix recursive functions with multiple parameters (!1688 by er433)
Details :
Recursive functions with multiple parameters were handled incorrectly in the testing framework. This change fixes the situation.
Fix and docs about Test.random (!1687 by er433)
Details :
Inference for Test.random fixed.
Fix for naming issue when compiling more than 10 views (#1388) (!1685 by er433)
Details :
Fixed naming issue when compiling more than 10 views (#1388).
Fix: protocol_version check in predefined.ml (!1664 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Typer : Better locations (!1660 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Add pretty-printing of type parameters in CameLIGO. (!1653 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed the pretty-printing of punned record fields in ReasonLIGO (issue 1344). (!1656 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fix typing rule of Test.mutation_test_all (!1655 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Added pretty-printing of type parameters to CameLIGO. (!1653 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fix a bug where views would be declared as module accesses (!1652 by Rémi Lesénéchal & Melwyn Saldanha)
Details :
No details provided for this change. Please visit the MR to learn more
Better error when accessing a parametric type through a module (!1589 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix in typing for Tezos.get_contract_with_error (!1645 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Enable the check for reserved names again. It was removed unintentionally in the previous version (!1632 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: Raise error if typed_address is passes to Bytes.pack (!1612 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Website: Fix og image aspect ratio (!1614 by prometheansacrifice)
Details :
No details provided for this change. Please visit the MR to learn more
Disallow raw code which is not a function in testing framework (!1613 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Website: Use png for page metadata (!1611 by prometheansacrifice)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: typo in message when compiling constant (!1609 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: Using REPL without the syntax argument (!1607 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Support old case syntax + mention as deprecated (!1606 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Compile only top-level views (!1598 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Website: Fix logo in docusaurus config (!1595 by prometheansacrifice)
Details :
No details provided for this change. Please visit the MR to learn more
Fix broken Tutorials link in web-ide page (!1596 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: type instantiation bug when reusing same var. (!1587 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix unnecessary warning emitted from muchused check (!1579 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Rename recursive function calls when doing monomorphisation (!1577 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed conversion of byte tokens to lexemes. (!1570 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed pretty printing of constant constructors in type expressions. (!1569 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix decompilation of chest and chest_key values: Test.get_storage will not perform correctly on those types (!1568 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Ligo test: fixing a bug where chest and chest_key values were not compiled correctly to michelson (their type were bytes instead of chest/chest_key) (!1564 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Enabled attributes on type declarations. (!1562 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fix locations for pattern matching - jsligo (!1560 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: make type-checking run over aggregated program (!1559 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix loop on embedded Michelson (#1356) (!1549 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Missing check for recursion function type (!1548 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
[PascaLIGO] Fixed how qualified names are parsed. (!1356 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
fixed typo in PausableToken.ligo (!1540 by Preetham Gujjula)
Details :
No details provided for this change. Please visit the MR to learn more
Aggregation: fix type when accessing a record inside a module accessing (!1524 by Rémi Lesenechal & Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
Fix packages not getting installed via docker (!1510 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: keep no_mutation in environment reconstruction (!1503 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fixing a bug where a contract compilation would fail because of views compilation with an obscure error message (!1496 by Rémi Lesénéchal ; Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
Test.run: add missing type-checking conditions (!1493 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
testing framework: fix sets comparison (!1488 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed regression in standalone preprocessor, lexers and parsers introduced when porting the code base from Stdlib to Core. (!1484 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Add cases for decompilation of bls12_381_g1/g2/fr (!1481 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix CLI flag --library not splitting by comma (!1472 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix REASONLIGO LEFTOVER (!1445 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix --lib and adding it for 'print preprocess' (!1460 by melwyn95 & Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
fixing the "ad-hoc polymorphism" for pseudo-modules Map (working on maps and big maps) (!1452 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix compile storage & compile parameter (apply module morphing) (!1448 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix type error for sapling_state inside a record (!1443 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
ReasonLIGO: Improve handling of recursive arrows functions. (!1442 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix webide by adding correct file extension to temp files (!1440 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: simple polymorphism wrong interaction with module accessing (!1427 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: simple polymorphism; remember instances in lambda case (!1423 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix 'ligo interpret' when working with polymorphic types (!1421 by Exequiel Rivas & Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: add case of GET_AND_UPDATE for Hangzhou (!1390 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix order of receipt processing for big_maps (!1375 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix wrong env. reconstruction on mod. deps. (!1374 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: support E_raw_code for functions (!1370 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix issue where writing multiple ifs could lead to disappearing code (!1369 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix ReasonLIGO inline tuple function argument (!1367 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Make JsLIGO export handling similar to JavaScript (!1354 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix record destructuring error reporting (!1362 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
fix a bug where _ patterns where not compiled to fresh variables (!1359 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
fix a bug where a wrongly typed pattern was getting through the typechecker (!1285 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix List.fold_left in test interpreter (!1338 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix external modules bug in test interpreter (!1338 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix preprocessor not returning the #import path from #include (!1335 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: internal replace of compare function (!1334 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
fix typing error related to Test.to_contract primitive (!1318 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
improves error locations on arguments in JsLigo (!1315 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: disallow variables with the same name in the same block to align with JS/TS (!1296 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Removed syntax of tupls without parentheses as parameters. (!1299 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Extended syntax to support 'let x (type a) : 'a = x' etc. (!1299 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: improve floating block scope handling (!1296 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
ReasonLIGO: support functions without arguments (!1292 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed bug in preprocessing #import (!1282 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Add support for chained assignment (!1281 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix bitwise operators in interpreter (!1276 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: Test.originate now supports recursive functions (!1273 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: testing framework checks if current source is an implicit contract (!1267 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: add support for tuple assignment (!1262 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: C_POLYMORPHIC_ADD resolution to C_CONCAT/C_ADD in JsLIGO (!1256 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: failure in REPL's exception handling (!1246 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: check that Bytes.unpack's annotated type is an option (!1245 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
true/false in pattern matching are now forbidden (use True and False instead) (!1179 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: annotations are no long uncapitalized (!1241 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: remove unused declarations before compiling (!1239 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[PascaLIGO/CameLIGO] Rewrite of the parse error messages. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
[PascaLIGO] Fixed pretty-printing. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: top-level underscore "definition" breaks testing framework (!1238 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix overriding of variables on environment reconstruction (!1226 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Trim warnings to not cause accidental error output. (!1222 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix editor extension page (!1219 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix #1240: use annotations when checking Tezos.self (!1217 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Transpiler: add parenthesis around typed pattern when decompiling CameLIGO (!1204 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Improve JsLIGO handling of attributes (!1199 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Properly support tuple accessors when using '+' operator. (!1197 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fixes #1232 by make self_ast_imperative's map work with Declaration_module (!1195 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix type-checker bug when using let-destructuring with a unit pattern (!1193 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Suspend tail recursion analysis in E_module_accessor (!1192 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
fix a bug where Test.get_storage was not usable within a Test.compile_expression_subst (!1182 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed typo's in tutorial and cheat sheet (!1177 by @nicolas.van.phan)
Details :
No details provided for this change. Please visit the MR to learn more
Improve messages for var/const pass. (!1174 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Move decompilation of assign to self pass. Prepare pipeline for language specific decompilation (!1172 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
fix a bug in ligo test framework where Test.transfer was returning unit in case of success (!1164 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Restore earlier fix for lowercase switch cases (!1161 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
REPL: fix evaluation of JsLIGO expressions and add test cases (!1142 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix inversion in missmatch errors (!1160 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Bugfix 2n/2 (!1158 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Fix issue with JsLIGO sequences (!1150 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Constructors without arguments are abstracted to constructor taking unit pattern (!1148 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
fix dry-run rejecting Tezos.self (!1133 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix JsLIGO identifiers to include _ (!1104 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix failure for TWild (_ for types) (!1103 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix order in which things are evaluated in evaluate-value (!1087 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix failure when applying a type var. not expecting arguments (!1110 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix support for lowcase verbatim strings in JsLIGO (important for test framework support) (!1120 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Add JsLIGO to Edo features documentation (!1116 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix JsLIGO sapling types (!1116 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
fix bug occuring when overriding option type (!1082 by Rémi lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Changed colour of background and foreground for hovered items in contact page, fixes #215 (!1059 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
fixing nested record update bug by normalizing Edo combs decompilation (!1047 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Tezos.self_address is now allowed in lambdas (!1035 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Curried functions again work correctly with commands like interpret and compile-storage (!1038 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Fix handling of true/false constructors in switch expressions. (!987 by Sander Spies)
Details :
No details provided for this change. Please visit the MR to learn more
Added parsing of constant constructors as function arguments. (!951 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
use letters instead of numbers for type variables in debug trace (!918 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed small bug in grouped_by_variable (use a multiset instead of a set, so that double-add and removal don't remove both copies (!915 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
ReasonLIGO: Allow if without else in more places. (!935 by Sander Spies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix assert in type_and_subst (!915 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Fix bug with let_in annotations in recursive functions (!905 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
the CLI print-* commands now print proper JSON when --format=json, also removed the sugar field from the core representation (!892 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix package path finding in ModRes + support package paths in REPL & Test interpreter (!1605 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Unprotected Sys.getenv (!839 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Fix broken Nix build on MacOS (!852 by Alexander Bantyev)
Details :
No details provided for this change. Please visit the MR to learn more
Documentation of Pascaligo: change deprecated bytes_unpack to Bytes.unpack. (!820 by Sander Spies)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed 2 bugs in changelog generator (a shell variable wasn't exported but was used in a subprocess; the evaluation time of some nix expressions seem to have changed so we're invoking a shell command instead of having the nix expression evaluated before its inputs are ready) (!853 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
fixed a but in new michelson layout annotation (!833 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
add the --init-file option to compile-expresssion command (!828 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Fix error messages snippet printing (!824 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Fix broken build after removal of generated code (!807 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Fix wrong error message due to wrong merge (!803 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Redeploy website on release to update the changelog (!804 by balsoft)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed error message when lexing an odd-lengthed byte sequence. (!786 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Add locations to the constant typers for all the primitives (!773 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
dune runtest in nix-shell (!741 by balsoft)
Details :
No details provided for this change. Please visit the MR to learn more
Self_tokens: add semi-colon before export and namespace (!1580 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Changed :
Authorising () in function declarations and function calls. (!1760 by rinderkn)
Details :
Declarations
function f () : t is b
and callsf ()
are now valid.Testing framework: make
Test.to_entrypoint
remove the starting '%' (!1750 by er433)Details :
By default,
Test.to_entrypoint
expected string argument not to begin with%
. From now on, the starting '%' (if present) is removed.Better michelson typing error (!1700 by lesenechal.remi)
Details :
contract failing to typecheck against protocol N while user did not use
--protocol N
will now only generate a warningPolymorphic types in jsligo and reasonligo (!1675 by pewulfman)
Details :
Here put what you want to share with ligo users through changelog.
Replace polymorphism syntax to have explicit polymorphic type "declaration"
Lifting redundant constructor restrictions (!1662 by lesenechal.remi)
Details :
Lifting restrictions on redundant constructors
It is now possible to declare variant types sharing the same constructors as in:
type t1 =| Foo of int| Bar of stringtype t2 =| Foo of int| Baz of natEmit n-ary pair types
pair a b c...
for comb records (!1372 by tomjack)Details :
No details provided for this change. Please visit the MR to learn more
Improve optimisation of some rare examples involving tuple/record destructuring (!1520 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Transpiler: change decompilation of (some) operators (!1508 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix typo in record access and record update error (!1467 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Deprecated CLI is now removed. --infer flag has been dropped (!1461 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
update to ocaml 4.12.1 (!1346 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
BuidSystem is now independent from the compiler (!1368 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
CLI: add a wrapper message for failures (!1350 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
updating tezos dependencies to Granada (010-PtGRANAD) (!1301 by Ulrik Strid)
Details :
No details provided for this change. Please visit the MR to learn more
Add assert_with_error funciton family (!1300 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Remove JsLIGO new keyword (!1293 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Update to Florence 9.7 (!1275 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Modify Cli (!1271 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Improved ReasonLIGO syntax highlighting (!1208 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: Don't require 'return' before 'failwith' (!1198 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Changes in the testing framework: Test.originate, Test.transfer(_exn), Test.to_contract, Test.to_entrypoint, Test.get_storage, Test.get_balance, Test.eval, initial support for big_maps (!1169 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Updating Taco-shop tutorial (all syntaxes, ligo test framework usage) (!1152 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Improve JsLIGO lexer error messages (!1159 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Adds a hint remembering users that warnings can be prevented using underscores (!1154 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
vendors/ligo-utils/simple-utils/x_list.ml: added code quality marker, some syntax nits (!1151 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
src/test/test_helpers.ml: added code quality marker, added helper for get_program, use it in other test files (!1138 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Prevent inappropriate optimisation of %Michelson lambdas (!965 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
ligo michelson backend now uses the "protocol--008-PtEdoTez-" (!926 by Rémi Lesénéchal, Tom Jack)
Details :
No details provided for this change. Please visit the MR to learn more
Upgrade tezos backend (for dry-run, compile-expression..) to Edo (!926 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Add missing location to parser error messages in JSON (!840 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Use virtual ES6FUN token for ReasonLIGO to allow for more accurate error messages. (!876 by Sander Spies)
Details :
No details provided for this change. Please visit the MR to learn more
Change in compilation of record updates (!848 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Port stacking pass to Coq (!848 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Type constant are now loaded into the type environment, they become variables until the typed AST (!849 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Error messages improved. Now shows a code snippet and error message footer removed. (!813 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
In the typer which is not currently in use, added a boolean flag on constraints indicating whether they might be necessary for correctness (!814 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
In the typer which is not currently in use, constraint removal is now handled by normalizers (!801 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Added dependency on json2yaml and jq in nix-shell (!800 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
In the typer which is not currently in use, heuristics can now request the justified removal of some of the constraints (!801 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Removed dependencies on the Tezos protocol from compiler stages and passes. (!783 by Tom Jack)
Details :
No details provided for this change. Please visit the MR to learn more
Improve non-parser error messages (!738 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: More reasons for better negative tests ? (!1576 by lesenechal.remi)
Details :
The type of
Test.test_exec_failure
has changed: a new constructorBalance_too_low
is added to assert that a contract pushed an operation but did not have enough fund.
Deprecated :
Deprecate message for thunked constants in stdlib (!1758 by er433)
Details :
Soon to be deprecated:
Tezos.amount
,Tezos.balance
,Tezos.now
,Tezos.sender
,Tezos.source
,Tezos.level
,Tezos.self_address
,Tezos.chain_id
,Tezos.total_voting_power
.These should be replaced by their "thunked" counterpart, which are prefixed with
get_
. E.g.Tezos.balance : unit -> tez
.Deprecates Test.compile_expression Test.compile_expression_subst Test.mutate_expression Test.mutate_count (!1253 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the [MR to learn more](https://gitlab.com/ligolang/ligo/-/merge_requests/1253)Deprecated evaluate-value (now evaluate-expr) and run-function (now evaluate-call) (!1131 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Removed :
Remove temp hack for PascaLIGO (!1788 by SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
testing framework: deprecates bootstrapped accounts support due to a problem in one of our tezos dependency, this feature will be enabled again in further updates (!1301 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Removed preprocessing directives #region and #endregion. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Remove unused warning message for rec. definitions (!1111 by @er433)
Details :
No details provided for this change. Please visit the MR to learn more
Dropped support for pre-Edo protocols (!1025 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Dropped support for pre-Edo protocols (carthage, dalphanet) (!1025 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Performance :
Compilation: dramatically reduce compilation time when using views (!1501 by Rémi Lesénéchal ; Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
Revert 1446 (!1499 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Emit
PAIR k
for comb record construction (!1371 by tomjack)Details :
No details provided for this change. Please visit the MR to learn more
Self mini_c optimizations: apply a single inline per round (!1446 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Performance: separate environments for "dummy" and "test" (!1410 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Profiling and fixes: initialize dummy_environment only when needed (!1402 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Optimized compilation of modules (!1297 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
improve performance of get-scope --with-types option by re-using the type environment instead of building a partial program (!1286 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Added compile-time optimization of comb record destructuring and uncurrying (!1102 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Optimization: push DROP into failing conditionals (!820 by Tom)
Details :
No details provided for this change. Please visit the MR to learn more
Internal :
Remove
E_type_in
in typed and aggregated (!1779 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add contract passes to contract in ast-aggregated (!1773 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: separate compilation from origination (!1766 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Make Tezos.constant be a custom operator again (!1757 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Remove C_LIST_HEAD_OPT / C_LIST_TAIL_OPT (!1756 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Monomorphisation: add
E_assign
andE_lambda
cases (!1752 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Remove operations in testlib that can be implemented in terms of others (!1745 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Using crunch to load library at compile-time (!1741 by lesenechal.remi)
Details :
Using crunch to load standard libraries at compile-time
Remove auxiliar internal type
map_or_big_map
(!1728 by er433)Details :
No details provided for this change. Please visit the MR to learn more
Hashing for types (ast-typed) (!1726 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Separate typing & pattern matching compilation (!1723 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Push C_POLYMORPHIC_ADD/SUB selection towards the end of the pipeline (!1721 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add test parameter for print ast-typed/ast-aggregated (!1719 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Remove test_exec_error/result (!1717 by er433)
Details :
New type
test_exec_error_balance_too_low
A new type
test_exec_error_balance_too_low
has been added to testing framework. It represents the data returned byBalance_too_low
case intest_exec_error
.Remove operations that can be replaced in stdlib (!1715 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Prepare contracts for deprecation of constants (!1705 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Represent
option
asT_sum
(!1696 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Upgrade
tezos-ligo
submodule to v12.2 (!1679 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Fix zarith package conflict and add macstadium partnership (!1678 by Laucans)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor loop and assignation (!1674 by pewulfman)
Details :
Here put what you want to share with ligo users through changelog. Markdown formatted (#### for title).
Redesign the handling of imperative construct such as loop and assignation to fix bugs and improve performances
Value environment: standard library using
%external
(!1673 by er433)Details :
Breaking changes
- Less lenient on the usage of
Map
andBig_map
functions (e.g.Map.update
will only work onmap
s and not onbig_map
s as before)
- Less lenient on the usage of
use substitution for evaluation of type applications (!1671 by lesenechal.remi)
Details :
No details provided for this change. Please visit the MR to learn more
Rewrite Coq pass: de Bruijn compiler with Michelson "strengthening" (!1666 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Update internal state of the typer (!1659 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Generate textmate file to allow integrationwith linuist (!1610 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: replace V.to_name_exn for V.pp in muchused (!1654 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Factored out a new syntactic category in the CST and beyond: module expressions. This will ease future developments on modules (!1589 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Change fail case when abstracting constants/built-in modules (!1648 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Remove T_abstraction from ast_aggregated (!1641 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Docs: generate markdown manpages (!1640 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: clean-up interpreter's values internal comparator (!1628 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor: compiler options (!1557 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Change constant typers to use LIGO types representation (!1544 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor: Move type syntax to a common place (!1567 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Update LIGO logo on website & webide. (!1552 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix for-of & while loops - jsligo. (!1534 by Pierre-Emmanuel Wulfman & Melwyn)
Details :
No details provided for this change. Please visit the MR to learn more
Improve representation of polymorphic function using big lambda (!1511 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Automated process for changelog generation and refactoring of the changelog structure (!1644 by Laucans)
Details :
No details provided for this change. Please visit the MR to learn more
Update docs about LIGO gitpod environment (!1526 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Tests for ModuleResolutions (!1523 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Remove generation of intermediary variable (!1513 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Change opam lock file usage and add dependencies (!1519 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Comments and examples for some of the Coq files (!1406 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
PPX: add ppx-woo to stages 2, 3, 4, 5 and 6 (!1489 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
rework Var Modules (!1494 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Move ES6FUN token insertion to a pre-parser (!1465 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Files cleaning (!1486 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add and fix primitives (Crypto.*, Set.remove, Option.unopt/Option.unopt_with_error, Tezos.pairing_check) (!1468 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
REPL: re-write internal state (!1431 by Rémi Lesenechal & Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: interpreter re-written at ast_aggregated (!1431 by Rémi Lesenechal & Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
New stage: ast_aggregated (!1431 by Rémi Lesenechal & Exequiel Rivas)
Details :
No details provided for this change. Please visit the MR to learn more
Build: remove -O3 from dune file (!1456 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Print the order in which dependencies are built (!1347 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Work around dune/coq bug (delete generated .ml) (!1451 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Binaries: default build without ADX instructions (!1450 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Re-do some reverted module inlining changes (!1444 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Update tezos-ligo submodule to latest Hangzhou release (!1439 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Transpilation: expected cases update (!1435 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
PPX: use ppx_construct in main_errors (!1432 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Test case: add a test case for module env. (!1412 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Bump menhir version (!1419 by Andre Popovitch)
Details :
No details provided for this change. Please visit the MR to learn more
PPX: add ppx_poly_constructor for errors (!1417 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
PPX: generate constant''s tag, print and yojson (!1196 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Tezos dep.: vendored version now points to a custom repo (!1410 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Implement token wrapper to pass attributes (!1395 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Ppx: apply ppx_map in combinators (!1398 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Update sed to fix Fmt not found (tezos-stdlib) (!1397 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: re-enable test for bigmap_set (!1375 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: keep attributes in let initializer (!1342 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Use Topological Sort to solve the build dependency graph (!1341 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Add a script that checks for duplicate filenames (!1345 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Fix test file names e.g. a.mligo & A.mligo causes issues (!1339 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Removed uses of vendor .opam in CI (!1327 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add support for missing ops. on tez (!1330 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: add missing cases for iteration in JsLIGO (C_FOLD) (!1328 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO decompilation: quick fix for decompilation of expressions (!1326 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Add all dependencies to opam.ligo (including dependencies required by vendored dependencies) (!1317 by Andre Popovitch)
Details :
No details provided for this change. Please visit the MR to learn more
Use Dune for vendoring instead of Opam (!1312 by Andre Popovitch)
Details :
No details provided for this change. Please visit the MR to learn more
Generate manpages for new-cli & rename
ligo print preprocess
toligo print preprocessed
(!1304 by melwyn95)Details :
No details provided for this change. Please visit the MR to learn more
Change remove_unused of self_ast_typed to search for free variables in module experssions & free module variables in expressions (!1295 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor: use Combinators.equal_value to compare record, list, set & map in interpreter (!1291 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Tests: remove unused warnings (!1290 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Nested value comparison in interpreter for list, set & map (!1274 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: improve environment reconstruction (module support) (!1289 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: keep a local store for bigmaps (!1285 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Improve error message when type of contract can't be inferred (!1268 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Use opam 2.1 in CI (!1278 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Ast-typed pass: transform unused rec. to lambda (!1254 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: fix for constant declaration, it does not need to evaluate anymore (!1269 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Docs: fix type signatures & examples for list, set & map (!1257 by melwyn95)
Details :
No details provided for this change. Please visit the MR to learn more
Testing framework: use ppx to check which operations correspond to it (!1258 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Fix: get_fv in self-ast-tyed/sef-ast-imperative (!1248 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
[CameLIGO/ReasonLIGO/JsLIGO] Removed predefined constructors true and false. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
[PascaLIGO] Removed predefined constructors Unit, True and False. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
[PascaLIGO/CameLIGO/ReasonLIGO] Removed CST node TWild (standing for _). (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Refactoring of the parsers, CSTs and printers. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
JsLIGO: Fixed dangling else in the parser. Fixeds attributes on pattern variables and declarations. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Changed all Token.mll into Token.ml (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
All syntaxes: Removed predefined constructors Some and None. (!1179 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Handling errors with exception (!1234 by pierre-emmanuel)
Details :
No details provided for this change. Please visit the MR to learn more
Handling warnings as effect (!1224 by pierre-emmanuel)
Details :
No details provided for this change. Please visit the MR to learn more
Clean up error handling in testing framework (!1218 by er433)
Details :
No details provided for this change. Please visit the MR to learn more
Rename Comments module to AttachComments (!1178 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
X_options maintenance (!1155 by @SanderSpies)
Details :
No details provided for this change. Please visit the MR to learn more
Removed ppx_let dependency, replaced by OCaml built-in let-operators (!1147 by Rémi Lesénéchal and galfour)
Details :
No details provided for this change. Please visit the MR to learn more
Improved review/refactor script (look for code quality marker, ignore tools/webide, show some info about why a file is at this position in the queue) (!1136 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Script which shows a queue of files that need refactoring (!1105 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Preparation work for merging type_value and type_expression (!1109 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
rename inferance → inference (!1108 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Clean up comments in the tests from debugging the typer (!1106 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
More testing ability in the documentation (!1093 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
Add lexical units (!919 by @rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Support for tuples without parentheses as last expressions in sequences. (!1064 by @rinderkn)
Details :
No details provided for this change. Please visit the MR to learn more
Fix typing of For_each with any type (!1033 by @pewulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Uncurry before inlining (!1056 by @tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Refactor & generalize Michelson peephole framework (!966 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Use
opam lock
to lock dependencies (!957 by tomjack)Details :
No details provided for this change. Please visit the MR to learn more
Progress on modular interface for heuristics and abstraction over type_variable, renamed modules, moved files (!972 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Refactoring of the front-end. (!751 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed the CST printers. (!916 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Improve transpilation and speed up transpilation tests (!927 by Sander Spies)
Details :
No details provided for this change. Please visit the MR to learn more
Remove vendored protocols -- fake origination & bake for proto env setup (!921 by tomjack)
Details :
No details provided for this change. Please visit the MR to learn more
Addded pretty-printers to the API of indexer plug-ins; added test for addition of constraints and merging of type variables for the by_constraint_identifier indexer and other indexers. (!914 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
prototype typer: split DB index tests into separate files, added test skeleton for cycle_detection_topological_sort (!910 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Disable failing tests for typer not currently in use when it is in use (except the one being worked on) (!839 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Fixed build issue with dune b inside a nix-shell (thanks Sander for providing the fix) (!839 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
scripts/add-changelog-entry.sh now runs a nested nix-shell if jq or json2yaml aren't installed in the outer nix shell (!839 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
boolean constant to force use of the typer which is not currently in use in the tests (!839 by Suzanne Soy)
Details :
No details provided for this change. Please visit the MR to learn more
Add module_access expression and type_expression (!871 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Compile a multiple file contract (!867 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Solve warnings during compilation (!871 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Create polymorphic function and use them in asts and passes to factorize code and simplify maintenance (!770 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Add a build system that type file in order to resolve dependency (!854 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Refactoring of front-end (making libraries, removing exceptions from interfaces, factoring and removing code etc.) (!751 by Christian Rinderknecht)
Details :
No details provided for this change. Please visit the MR to learn more
Move the preprocessor away from the parser (!851 by Pierre-Emmanuel Wulfman)
Details :
No details provided for this change. Please visit the MR to learn more
Created the CST and AST nodes for module expressions. (!1589 by Christian Rinderknecht & Remi Lesenechal)
Details :
No details provided for this change. Please visit the MR to learn more
Tree sitter grammar for jsligo (!1581 by melwyn95)
Details :
Tree sitter grammar for jsligo
Michelson optimization: factor out common last actions in conditionals (!1532 by er433)
Details :
A new optimization has been added in contract compilation. By default, it will not use type information (for better compilation performance), but it can be enabled using
--enable-michelson-typed-opt
.
Other :
merge language server changes in tooling into dev (!1630 by Heitor Toledo Lassarote de Paula)
Details :
No details provided for this change. Please visit the MR to learn more
merge language server changes in tooling into dev (!1588 by Heitor Toledo Lassarote de Paula)
Details :
No details provided for this change. Please visit the MR to learn more
merge language server changes in tooling into dev (!1555 by Heitor Toledo Lassarote de Paula)
Details :
No details provided for this change. Please visit the MR to learn more
merge language server changes in tooling into dev (!1497 by Preetham Gujjula)
Details :
No details provided for this change. Please visit the MR to learn more
website: improve the download ligo page (!1382 by Rémi Lesénéchal)
Details :
No details provided for this change. Please visit the MR to learn more
For older version, please visit https://gitlab.com/ligolang/ligo/-/releasessla