Skip to content

Releases: jasmin-lang/jasmin

Jasmin 2022.04.0

06 May 16:54
Compare
Choose a tag to compare

This is the second stable release of Jasmin. It capitalizes on more than two years of active development, so it contains a lot of new features, including breaking ones. Please beware of these breaking changes if you want to upgrade from an older version.

Here is a list of the most salient new features. Please take a look at the changelog for a more detailed and exhaustive list.

  • Jasmin features proper internal functions, called subroutines, that are neither inline or export. Breaking change: using fn alone in a function declaration declares a subroutine, not an inline function anymore.
  • Two storage modifiers, reg ptr and stack ptr, were introduced to store the address of an array in a register and on the stack, respectively. The main use of reg ptr arrays is to pass stack arrays as arguments to subroutines, since they do not accept stack arrays as arguments directly.
  • Global immutable arrays are now supported. A global array must be initialized at the same time it is declared.
  • It is now possible to manipulate slices of arrays, called sub-arrays. The concrete syntax is a[pos:len] to specify the slice of array a starting at index pos and of length len. pos and len must be compile-time constants.
  • It is now possible to attach annotations to functions and instructions, using #[annotation] or #[annotation=value]. The compiler takes into account the ones that it knows about, and ignores the others.
  • Including a Jasmin file in another one is now a native feature of Jasmin. The concrete syntax is require "file.jazz" or from ident require "file.jazz" for more complex use cases.
  • Boolean flags and some combinations thereof can now be referred to by their names, improving readability.
  • Variable declarations don't have to be at the start of the function body anymore, they can now appear anywhere in the body.
  • The compiler includes a type-checker for cryptographic constant time that infers security types for functions, based on the security annotations given by the user. This is an alternative to using the constant time extraction to EasyCrypt. The type-checker should be easier to use in most cases.

If you are not interested in the Coq part of Jasmin, you can download the archive jasmin-compiler-v2022.04.0.tar.bz2 below which contains only OCaml code. See the installation instructions for more details.

Jasmin 21.0

24 Mar 17:14
Compare
Choose a tag to compare

This is the first stable release of Jasmin.