Skip to content

v0.5: Classes

Compare
Choose a tag to compare
@MikePopoloski MikePopoloski released this 26 Oct 15:26
· 2551 commits to master since this release

Highlights

This release contains full elaboration support for classes, including generic classes, virtual classes, and interface classes.

Language Support

  • Added full support for classes and all related features
  • Added support for bitstream casting (thanks to @thingkingland )
  • Added support for streaming operator expressions (thanks to @thingkingland )
  • The parser now enforces language rules about which kinds of members are allowed in certain scopes
  • Added support for elaboration system tasks ($warning, $error, etc)
  • Added support for the $cast system task
  • Added support for chandles
  • Added support for events and event trigger statements
  • Added support for the wait_order statement
  • Finished remaining string and string-literal expressions and conversions

General Features

  • Added -Wunused-def (off by default) which warns about unused module/interface/program definitions
  • Added -Wno-top which warns if no top-level modules are found in a design
  • Added -Wtask-ignored for system tasks that get skipped during constant evaluation
  • Added -Wunsized-concat which warns for unsized integers used in concatenations
  • Added a --top option which can be used to manually specify the top-level modules in a design
  • The slang driver now reports the discovered top-level modules when elaborating unless --quiet is passed

Fixes

  • slang will no longer try to automatically instantiate unused modules that have interface ports
  • Cleaned up type checking that is performed in uninstantiated modules
  • Fixed the build to work for macOS (thanks to @thingkingland )
  • Fixed corner cases for assignment of unpacked arrays (thanks to @thingkingland )
  • Fixed a bug that prevented empty port connections from working correctly
  • Fixed a bug that prevented empty parameter assignments from working correctly
  • Fixed bugs related to constant evaluation involving mixed signedness of expressions (thanks to @thingkingland )
  • Fixed constant evaluation of shift operators with negative or unknown amounts (thanks to @thingkingland )
  • Fixed detection of whether statements are in a loop when those statements are in a nested level of block hierarchy
  • Fixed a preprocessor bug related to macro concatenation