v0.5: Classes
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