State of the Languages

Thank you for following the latest in Tezos smart contract language development. We have fresh updates on all your favorite languages.

Let us know if you have:

  • feedback or suggestions
  • a language you would like to add

Recent development

Albert

No recent updates.

For more information about the Albert language, see the Albert website. Albert development happens on its public Gitlab repository.

Archetype

The Archetype team has released Archetype 1.0

You can find the full announcement here.

LIGO

The LIGO team:

  • added code injection to the compiler, which allows the user to insert Michelson code in the middle of a LIGO contract. This is useful when you want to use specific code, such as optimized Michelson.
  • completed a prototype certified compiler, from a language similar to a subset of LIGO’s intermediate “MiniC” language, to a subset of Michelson. This is believed to be the first comparable proved theorem for a compiler targeting Michelson. There is much work left, but after this compiler is extended to target most of Michelson and optimized in some ways, it could be extracted from Coq and used inside LIGO.
  • completed a toy compiler from Michelson to native via LLVM, capitalizing on a robust optimizer and backend to achieve a 100x speedup. It eliminates overhead caused by Ocaml, and permits optimized memory layouts, allocation sinking, etc.
    This could in theory make Tezos much faster if the compiler were completed and adopted, and could allow running Michelson code standalone native, or even baremetal, without the blockchain. This would create the possibility to use the security and safety infrastructure of the blockchain tools to produce extremely secure code for use in many ordinary applications, and to run on a microcontroller, or in an OS kernel.

Michelson

No recent updates.

SmartPy

The SmartPy team has been busy working on a new release.

A big step: many improvements to the SmartPy.io editor and explorer in the next few days.

Adding a new page called Wallet; this page will help keep track of

  • originated contracts
  • contracts of interest
  • keys (public, private, with a Ledger Hardware Wallet, from a faucet, etc.)
  • view transactions
  • send transactions, etc.

The language has seen many improvements as well; an important step has been, under the hood, to use slightly more functional structures. They remain exposed as usual through the same regular Python syntax, but this shift helps in two directions: some contracts may directly benefit from this but it also helps greatly for the SmartPy decompiler (not yet ready for a real preview but getting closer).

The team also played with alternative compilation techniques to reduce the gas used in transactions. This is noticeable for bigger contracts.

Last but not least, they made improvements to important templates such as FA1.2 and FA2.

Further details will be available in the post associated with the new release.

SCaml

Latest stable version: 1.2.0 pre7

The SCaml team brushed up SCaml compiler while waiting for the new Tezos protocol candidate version 007 proposal. The latest stable SCaml version, 1.2.0 pre7 is publicly available:

1.2.0 pre7 has the following changes compared to 1.1.0:

  • New optimization loop using K-normal form
  • SCaml.ppx, SCaml compiler embedded in OCaml pre-processor
  • Lots of bug fixes

SCaml.ppx

SCaml.ppx is a big step towards the goal of SCaml: a seamless Tezos smart contract programming environment within OCaml ecosystem. With SCaml.ppx, contracts now can be built within Dune, de facto standard build system of OCaml!

In brief:

SCaml’s standalone compiler scamlc is not easily usable within Dune. Dune is not a generic build system but highly specialized for OCaml: it does not know how to use scamlc . SCaml.ppx works around this difficulty by embedding SCaml compiler in an OCaml pre-processor. SCaml modules are compiled by OCaml compiler + SCaml.ppx to OCaml object files embedding SCaml intermediate representation. Linking these OCaml object files produces an executable to emit the final Michelson program. This is roundabout but is the most reasonable solution to integrate SCaml in Dune to our knowledge.

Next SCaml release 1.2.0 supports Protocol 007

The SCaml team is waiting for the official proposal of a new Tezos protocol version 007. Once announced, they will implement and release SCaml version 1.2.0 in few days.


Thank you for reading, and check back soon for our next update!

Eowyn on behalf of the LIGOlang team

1 Like