Skip to content

v0.1.1

Latest
Compare
Choose a tag to compare
@VonTum VonTum released this 06 Nov 16:58
· 18 commits to master since this release

Second Major release of the SUS Compiler

This release contains mostly technical improvements, and work towards the future of SUS.

The main events in this release are:

Standard Library is Shipped with the compiler now

That means you no longer need to provide core.sus and util.sus yourself, as they are shipped with the compiler and stored in $HOME/.sus/VERSION

Templates now use the #(SIZE: 3, T: type int[3]) syntax instead of ::<3; int[3]>

The motivation for mandatory named template arguments is that in Hardware Design, modules often have many parameters, often just ints. And MyModule::<32, 5, 2048, 3> is just not very readable
Example use:

module BitSerialRow #(int SIZE, int[SIZE] WEIGHTS) {
    interface BitSerialRow : bool[SIZE] bits'0 -> int row_total
    //...
}
for int Y in 0..HEIGHT {
    BitSerialRow #(SIZE: WIDTH, WEIGHTS: MATRIX[Y]) row
    //...
}

Many internal technical changes, majorly the switch to Hindley-Milner type checking.

This switch is not yet complete, as Concrete Typechecking still needs the HM treatment, this is the plan for the next release, which will also include type and latency inferernce.

See CHANGELOG.md for more detail