Language for high-assurance and high-speed cryptography
This is a minor release of Jasmin. Here is a brief description of a few of the changes it features.
Programmers no longer need to prove that memory accesses and (direct) array accesses are properly aligned. Jasmin programs have a well-defined semantics even if unaligned accesses occur.
The checker for Constant-Time security is now available as a separate jazzct
tool. It also ensures that division and modulo operators may only be used with public arguments.
To better understand register-allocation issues, the new command-line option -pliveness
displays the program annotated with liveness information.
The compiler now warns when some variable declarations are not used or shadow any earlier declaration.
Namespaces allow reusing names: two things may have the same name, as long as they belong to different namespaces. This feature can also be abused to reuse implementations, but it is not advised to do so.
Many smaller fixes and additions have also been incorporated in this minor release. Relevant details can be found through the CHANGELOG.
This is a minor release of Jasmin,featuring:
int
type.Find out more details in the CHANGELOG.
This is a minor release of Jasmin,featuring:
Find out more details in the CHANGELOG.
This is a major release of Jasmin. It contains a few noteworthy changes:
call
and ret
instructions;As usual, it also brings in various fixes and improvements, such as bit rotation operators and automatic slicing of the input program.
More details can be found in the CHANGELOG.
This is a minor release of Jasmin. It features a few fixes (e.g., to the semantics of a few x86
instructions) and additions (e.g., x86
instructions for carry-less multiplications). Moreover, it provides improved compatibility with the future major release of the Jasmin compiler (e.g., shift amounts can be explicitly truncated to the word size).
More details can be found in the CHANGELOG.
This is a minor release of Jasmin. It brings in the support of new x86 instructions, of new compound assignments (modulo and division), and, most importantly, many fixes, especially to the safety checker.
(Jasmin 2022.09.2 fixes an oversight in Jasmin 2022.09.1's AUTHORS file.)
More details can be found in the CHANGELOG.
This is the third stable release of Jasmin. It contains the following major improvements:
#randombytes
to fill an array with “random” data;-call-conv {windows|linux}
;else if
blocks for readability;It also brings in other new features, as well as new contributors, many fixes, and various improvements.
More details can be found in the CHANGELOG.
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.
fn
alone in a function declaration declares a subroutine, not an inline function anymore.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.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.#[annotation]
or #[annotation=value]
. The compiler takes into account the ones that it knows about, and ignores the others.require "file.jazz"
or from ident require "file.jazz"
for more complex use 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.
This is the first stable release of Jasmin.