Skip to content

0.18

Compare
Choose a tag to compare
@Alasdair Alasdair released this 05 Aug 14:42
· 94 commits to sail2 since this release

CHANGES:

This release mostly incorporates many small improvements and fixes
to Sail 0.17.1.

Module System

This release introduces a simple module system. See the section of
the manual for details.

Type level if-then-else

If expressions are now permitted in types, so one can write types such
as

bits(if XLEN == 32 then 15 else 57)

this doesn't add any additional expressiveness, as one could
previously introduce additional type variables and constrain them in
such a way to guarantee the same thing, but being able to use
if-then-else directly is usually more clear.

Improved kind inference

Previously, type synonyms would require annotation with kinds (types
of types), for example:

union option('a : Type) = { Some : 'a, None : unit }

type xlen : Int = 64

Now, type variable kinds are inferred in most places, so the above
could be written as:

union option('a) = { Some : 'a, None : unit }

type xlen = 64

There are still some places where explicit kinds are necessary, such
as for scattered type definitions or abstract types.

Documentation backend

The Sail documentation backend can now produce hyperlinked and syntax
highlighted source code output with the --html option. The
Asciidoctor plugin can now hyperlink between definitions included in
the documentation, and otherwise link into a hyperlinked version of
the source.