Readers, thank you for your excellent feedback on our last report. We hope you enjoy this week’s insights into Tezos smart contract language development.
Let us know if you have:
- feedback
- suggestions
- a language you would like to add
Recent development
Albert
The Albert team recently submitted an academic article to the 2020 edition of the Trusted Smart Contract Workshop. It provides, among other things,
- an overview of the current state of Albert
- details on how Albert compiles to Michelson
- an example smart contract written in Albert
For more detail you can peruse their academic article here:
Albert, an intermediate smart-contract language for the Tezos blockchain
LIGO
The LIGO team has been working on a diverse set of improvements. They:
-
changed the calling conventions in CameLIGO and ReasonLIGO to make them more similar to OCaml/Reason. In particular, the following equivalences now hold, as one would expect:
fun x y -> z
~=
fun x -> fun y -> z
(* when f is not a built-in operator: *)
f x y
~=
(f x) y
-
fixed a bug which prevented using failwith in both branches of a conditional.
let main ((b, _) : bool * unit) =
if b
then failwith "b is true"
else failwith "b is false"
-
improved many unhelpful “not a X” type errors, along with errors related to typing built-in operators (e.g. “wrong types”, “bad X”.)
-
added a record update operation to all syntaxes, e.g. {r with b = 2048; c = 42} in CameLIGO.
-
added support for Tezos key and signature literals as type-annotated base58 strings. For example ("edpk..." : key).
-
added syntax for ‘attributes’ to all syntaxes, including an “inline” hint which will encourage the compiler to inline a particular definition, even if it is used more than once.
SmartPy
The SmartPy team shipped its first open source release this week!
Now they are back to working on SmartPy core current projects:
- the testing framework
- Michelson static analysis / decompilation.
Thank you for reading. Check back soon for more updates!
Eowyn on behalf of the LIGOlang team