Published November 12, 2026 | Version v20

Spade 0.21.0

Authors/Creators

  • 1. Linköping University

Description

Added

  • #1113 Support const generics inside struct and enum definitions
  • #1140 Added named parameter support inside parenthesized argument lists (...)
  • #1148 Added const type { ... } to create inline const generics that can be used as values
  • #1152 Added gen match { ... } blocks
  • #1162 then_some method on bool
  • #1174 Added << and >> to const generics
  • #1184 Implementations for Type Aliases
  • #1194 Add memory language construct to build memories
  • #1204 Added std::undef::unused() to the standard library and prelude,
    a function that returns an unconnected inverted signal (equivalent to port().1,
    but signals the design intent more clearly).
  • #1235 Added Result type to stdlib
  • #718 Allowed { ... } instead of $(...) for named argument lists

Fixed

  • #1143 Made arrays render in the correct order in Surfer and test benches (their contents were reversed)
  • #1150 Fix some rare panics in typeinference when constraints are resolved at the wrong time
  • #1151 Fixed a bug where certain malformed items cause an ICE
  • #1159 Fixed a bug where match expressions could miss si integer values
  • #1163 Fixed an error message where uint would erroneously be printed as int
  • #1191 Fixed ICE when defining pipeline method with no arguments besides self (no clock)
  • #1195 Fixed parsing error when using named stages in pipeline lambdas
  • #1226 Fix duplicate equation panic in test benches
  • #712 Fixed generic substitution bug inside copy views.
  • #712 Preluded core::marker::Copy that was accidentally left behind.
  • #717 Fixed spurious linearity error when using as on inv values
  • #717 tri is now actually !Data

Changed

  • #1139 Made . correctly traverse through inv inside copy views
  • #1140 Deprecated $(...) named argument list syntax
  • #1141 inv wires now can appear inside enum variants.
  • #1173 Deprecated >>> in favor of >>
  • #1175 Improved set ergonomics by expanding it to work on inv wires inside arrays and tuples
  • #1187 Updated cocotb to 2.1. If you use fancy cocotb features, this may cause breaking changes
  • #1194 Deprecated std::mem::clocked_memory and associated elements
  • #1213 Disallow consuming linear resources inside conditionals
  • #1223 Allowed match expressions returning zero-sized values
  • #1236 Register definitions inside pipelines may be written without an explicit clock signal (it will use the pipeline's clock signal)
  • #1243 Deprecated std::mem::dp_bram in favor of std::mem::simple_dual_port_ram
  • #1243 Deprecated std::mem::read_read_port
  • #1243 Removed address width parameter from std::mem::fifo and enforced a power-of-two number of elements
  • #712 Now copy views carry with them the data of inv wires.
  • #712 Changed the signature of inv T::inspect to inspect(&self) -> &T.
  • #715 Allowed inv values to be returned by if/else and match blocks to be connected from the outside (all arms receive the same value)
  • #716 Made inv values interact gracefully with pattern matching.

Files

spade-v0.21.0.zip

Files (3.0 MB)

Name Size
md5:e18ef2db46ac212f598d411b963f2538
3.0 MB Preview Download

Additional details

Software

Repository URL
https://codeberg.org/spade-lang/spade
Programming language
Rust
Development Status
Active