This is a major new release with the following changes:

Download: nvc-1.9.0.tar.gz

This release is signed with my PGP key ID 74319F1A: nvc-1.9.0.tar.gz.sig

  • Code generation has been rewritten to enable faster elaboration and “just-in-time” compilation in the future.
  • Now compatible with LLVM 16.
  • Implemented the VHDL-2019 call path reporting API.
  • The elsif VHDL-2019 conditional analysis directive now works correctly (#604).
  • The 'transaction implicit signal no longer incurs a delta-cycle delay.
  • x'ascending now reports the correct result if x has unconstrained array type and null range.
  • The predefined "=" operator on record types now always uses the predefined equality comparison for fields even in the presence of a user-defined "=" operator.
  • It is no longer necessary on Windows to link VHPI plugins at elaboration time with NVC_FOREIGN_OBJ. Use the --load option to load the plugin at run time as on other operating systems.
  • The experimental --jit elaboration option defers native code generation until run time. This can dramatically reduce total test time for short-running simulations.
  • Statements like wait for X where X is negative but not a constant now produce an error at run time (#633).
  • NVC is now supported by VUnit.
  • Implicit signal attributes like 'transaction are now considered static signal names (#640).
  • Added support for fine-grained coverage collection via --coverage-spec elaboration option (from @Blebowski).
  • The ABI for passing unconstrained arrays to foreign subprograms changed slightly, see the manual for details.
  • Implemented new file I/O operations from VHDL-2019.
  • Added analysis option --define to set user-defined conditional analysis identifiers (from @Blebowski).
  • Optional support for using ZSTD to compress library files if libzstd-dev is installed.
  • ISO-8859-1 extended characters are now handled properly in identifiers and when printing to the terminal.
  • The new configure option --disable-default-paths disables the default library search paths (#652).
  • Subtype indications used as case range choices no longer crash during analysis (#655).
  • The default standard version was changed to VHDL-2002 and will likely change again to -2008 in a future release. Users are recommended to use the --std= option to specify an explicit standard revision to avoid any compatibility issues.
  • Fixed a crash when elaborating a port map which contains a subtype of a record (#662).
  • Implemented VHDL-2019 syntax relaxations for empty records and trailing semicolon in interface lists (from @bpadalino).
  • A Bash auto-completion script is now installed by default. Run configure with --without-bash-completion to disable this.

Special thank you to @bpadalino, @tmeissner, @Blebowski, and @amb5l for sponsoring me!