Skip to content

v0.11.0

Choose a tag to compare

@celox-bot celox-bot released this 14 Oct 22:46
cb3db58

0.11.0 (2026-10-14)

What's Changed

  • chore(deps): update napi-rs and emnapi compatibility by @renovate[bot] in #1005
  • fix(ts-gen): emit type-checkable declarations for multi-module files and nested blocks by @tignear in #1010
  • chore(deps): update rust toolchain to dbc715a by @renovate[bot] in #1011
  • feat(sv): support a synthesizable SystemVerilog subset by @tignear in #1009
  • ci: type-check test files and playground by @tignear in #1012
  • chore(deps): update rust toolchain to v1.99.0 by @renovate[bot] in #1014
  • fix(sv): share tie-off constants across instance array elements; mark single-element arrays as indexed by @tignear in #1017
  • feat(test-suite): describe Veryl suite cases as scripts and verify them as SV testbenches by @tignear in #1015
  • fix(api): return Veryl syntax errors instead of panicking by @tignear in #1019
  • fix(sv): point unsupported diagnostics at their tracking issues by @tignear in #1020
  • fix(playground): drop non-public evalComb from 4-state example by @tignear in #1024
  • docs: match CLAUDE.md project fields to the GitHub project by @tignear in #1028
  • fix(ts): evaluate pending combinational logic in fourState() by @tignear in #1025
  • fix(veryl): classify unsupported diagnostics and implement the missing lowerings by @tignear in #1018
  • feat(test-suite): rename to celox-test-suite and verify the SystemVerilog tests with Verilator and Icarus by @tignear in #1029
  • feat(api): checkpoint and restore simulation state by @tignear in #1023
  • feat(lydite): import hwverify as the Lydite refinement checker by @tignear in #1031
  • chore(deps): update rust crate parol to v5.0.2 by @renovate[bot] in #1035
  • chore(deps): update rust crate parol_runtime to v5.0.2 by @renovate[bot] in #1036
  • fix(deps): update rust crate scnr2 to v0.5.3 by @renovate[bot] in #1038
  • chore(deps): update dependency @vscode/test-electron to v3 by @renovate[bot] in #1039
  • fix(deps): update dependency vscode-languageclient to v10 by @renovate[bot] in #1041
  • fix(lydite): identify suite cases by their script text by @tignear in #1043
  • chore(deps): update dependency ubuntu to v26 by @renovate[bot] in #1040
  • feat(sv): lower procedural SystemVerilog and complete Veryl-emitted SV support by @tignear in #1045
  • ci: run Rust tests with nextest and optimize dev dependencies by @tignear in #1047
  • chore(deps): update pnpm to v12.8.0 by @renovate[bot] in #1049
  • chore(deps): update rust toolchain to e600293 by @renovate[bot] in #1051
  • fix(veryl): update veryl crates to v0.22.0 by @renovate[bot] in #1054
  • chore(deps): update pnpm to v12.8.1 by @renovate[bot] in #1056
  • chore(deps): update rust crate libc to v0.2.190 by @renovate[bot] in #1057
  • fix(deps): update rust crate wasm-encoder to 0.261 by @renovate[bot] in #1059
  • fix(veryl): keep unfolded constant values and recompute constant case targets by @tignear in #1052
  • test(sv-suite): convert the remaining SystemVerilog tests to scripts by @tignear in #1037
  • fix(sv): keep the signedness of elements of signed named types by @tignear in #1044
  • chore(deps): update rust crate insta to v1.49.0 by @renovate[bot] in #1065
  • fix: ignore out-of-range dynamic writes and read X on every lowering path by @tignear in #1050
  • feat(simulator): add multi-threaded lane-partitioned simulation by @tignear in #1033
  • feat(sv): check system function calls against a catalog where they are converted by @tignear in #1069
  • fix(sv): lower runtime indices into multidimensional packed arrays by @tignear in #1046
  • chore(deps): update rust toolchain to b962e5d by @renovate[bot] in #1071
  • ci(bench): measure multi-threaded Celox in the Heliodor suite by @tignear in #1072
  • refactor(sir): classify instruction effects in one place by @tignear in #1074
  • build(nix): provide Z3 in the development environment by @tignear in #1076
  • chore(deps): update dependency lefthook to v2.1.15 by @renovate[bot] in #1078
  • chore(deps): update pnpm to v12.8.2 by @renovate[bot] in #1087
  • fix(sv): record comb path bit boundaries so disjoint feedback is not a loop by @tignear in #1081
  • feat(sv): call DPI-C imports from always_ff on every backend by @tignear in #1080
  • fix(sv): evaluate && right operands for unknown left operands and bound constant evaluation by @tignear in #1082
  • chore(deps): update rust toolchain to 8afee9f by @renovate[bot] in #1096
  • feat(test-suite): add incremental verification and daily full CI by @tignear in #1094
  • chore(deps): update vitest monorepo to v5.0.3 by @renovate[bot] in #1099
  • fix(veryl): lower interface members captured by modport-imported functions by @tignear in #1090
  • fix(veryl): reject generic interface ports instead of failing on unknown connections by @tignear in #1091
  • test(veryl): broaden interface coverage in the shared suite by @tignear in #1093
  • chore(deps): update dependency @biomejs/biome to v2.5.15 by @renovate[bot] in #1100
  • fix(sir): keep identity-alias homes consistent for lane-partitioned kernels by @tignear in #1098
  • perf(native): save only live registers across extern calls and share extern ABI lowering by @tignear in #1103
  • ci: report full CI failures and gate release merge groups on external suites by @tignear in #1105
  • fix(sv): nested default patterns, int parameter sign, loop bound width, and $size dimensions by @tignear in #1083
  • fix(sv): widen branchless mux arms and reject incompatible unpacked arrays by @tignear in #1084
  • test: record why each SystemVerilog arm is ignored and drop stale ignores by @tignear in #1085
  • perf(sv-analyzer): share scope metadata and reuse parsed sources by @tignear in #1107
  • chore(deps): update updatecli/updatecli-action action to v3.9.0 by @renovate[bot] in #1114
  • chore(deps): update rust toolchain to f91010a by @renovate[bot] in #1113
  • chore(deps): update dependency vite to v8.3.2 by @renovate[bot] in #1117
  • feat(sv): elaborate interfaces by flattening them into modules by @tignear in #1108
  • chore(deps): update napi-rs and emnapi compatibility by @renovate[bot] in #1116
  • ci: run the sv-tests elaboration tests against the SystemVerilog frontend by @tignear in #1119
  • ci: validate each change once instead of three times by @tignear in #1109
  • chore(deps): update dependency lefthook to v2.1.16 by @renovate[bot] in #1129
  • chore(deps): update dependency @types/node to v25.9.9 by @renovate[bot] in #1130
  • chore(deps): update dependency @napi-rs/cli to v3.10.6 by @renovate[bot] in #1126
  • perf(sv-analyzer): reuse scope types for bits and size queries by @tignear in #1112
  • feat(runtime)!: compile delayed processes into resumable kernels by @tignear in #1127
  • feat(sv): support variable declaration initializers by @tignear in #1124
  • fix(deps): update rust crate syn to v3 by @renovate[bot] in #1042
  • feat(sv)!: run-time loop events and calls in select indices by @tignear in #1128
  • fix(sv): keep run-time inner bit selects inside their unpacked element by @tignear in #1133
  • chore(deps): update rust toolchain to 4ca2963 by @renovate[bot] in #1137
  • chore(deps): update napi-rs and emnapi compatibility by @renovate[bot] in #1139
  • ci(lydite): do not rerun the gates after merging into master by @tignear in #1141
  • fix(sv): count writes through called subroutines as process drivers by @tignear in #1135
  • ci(bench): move measurements to daily runs by @tignear in #1142
  • test(sv): run sv-tests simulation tests and check their assertions by @tignear in #1136
  • chore(test-suite): keep run metadata out of retained reports by @tignear in #1140
  • perf(sv-analyzer): reuse parameter environments and scope snapshots by @tignear in #1144
  • feat(sv): run initial blocks as process kernels from time zero by @tignear in #1138
  • fix(sv): reject package variables and nets by @tignear in #1148
  • refactor(sv-analyzer): collect declarations from modules and packages alike by @tignear in #1149
  • fix(sv): evaluate select indices at their self-determined width by @tignear in #1134
  • ci: run only the Rust tests a pull request can affect by @tignear in #1147
  • fix(sv): size display arguments as IEEE 1800-2023 specifies by @tignear in #1143
  • fix(veryl): format display arguments as Veryl's simulator does by @tignear in #1145
  • ci: run CodSpeed daily and report regressions by @tignear in #1155
  • feat(sv)!: resolve packages as scopes instead of inlining them by @tignear in #1151
  • feat(sv): implement $countbits system function by @tignear in #1153
  • chore(deps): update pnpm to v12.9.0 by @renovate[bot] in #1162
  • perf(test-suite): reuse local verification and stabilize proof identities by @tignear in #1156
  • perf(sv-analyzer): eliminate quadratic generate-scope work by @tignear in #1150
  • test: fix the Veryl reference adapter's resets and refresh Veryl exclusions by @tignear in #1152
  • perf(sv-analyzer): reuse parameter prefix and range environments by @tignear in #1166
  • fix(runtime): return errors and fatal events without panicking by @tignear in #1154
  • fix(sim): preserve sign bits in partial-word arithmetic shifts by @tignear in #1164
  • perf(sv-analyzer): look up constant-folding types on demand by @tignear in #1168
  • feat(sv)!: share package variables between modules by @tignear in #1167
  • fix(sv): handle system function and readmem edge cases by @tignear in #1157
  • chore(deps): update rust toolchain to e90fafa by @renovate[bot] in #1172
  • perf(sv-analyzer): avoid repeated four-state environment copies by @tignear in #1170
  • fix(sv): preserve declared dimensions in array queries by @tignear in #1169
  • perf(sv-analyzer): retain resolved parameter literals by @tignear in #1174
  • fix(test-suite): split retained verification reports by group by @tignear in #1177
  • feat(sv): support package export declarations by @tignear in #1178
  • fix(sv): give static procedural locals a static lifetime by @tignear in #1179
  • feat(sv): resolve compilation-unit declarations as the $unit scope by @tignear in #1180
  • perf(sv-analyzer): borrow constant function environments by @tignear in #1175
  • perf(sv-analyzer): avoid cloning scalar call contexts by @tignear in #1182
  • feat(sv): support $isunbounded parameter queries by @tignear in #1176
  • chore(deps): update pnpm to v12.9.1 by @renovate[bot] in #1195
  • chore(deps): update rust crate toml to v1.1.7 by @renovate[bot] in #1196
  • perf(sv-analyzer): materialize referenced parameter values by @tignear in #1193
  • perf(native): place state and lane code in access order by @tignear in #1197
  • ci(bench): keep one benchmark series per runner CPU model by @tignear in #1199
  • fix(native): never match a Perm row to the reserved state-base register by @tignear in #1200
  • feat(sv)!: accept constant part-selects as array indices by @tignear in #1201
  • chore(deps): update rust toolchain to c1cfa7a by @renovate[bot] in #1203
  • perf(sir): publish lane FF next state directly when no later unit needs it by @tignear in #1205
  • feat(sv): implement $timeunit and $timeprecision by @tignear in #1183
  • fix(sv): scope imports in generate blocks to their block by @tignear in #1184
  • fix(sv): let loop genvars shadow outer parameters by @tignear in #1207
  • perf(sv-analyzer): skip RTL-only literals during subroutine discovery by @tignear in #1209
  • fix(sv)!: preserve nested array index selections by @tignear in #1198
  • feat(sv): implement $printtimescale by @tignear in #1210
  • feat(frontend): support bidirectional SV and Veryl interfaces by @tignear in #1204
  • feat(simulator): coincident clock edges, DSE-safe signal resolution and a Rica benchmark by @tignear in #1212
  • fix(sv): preserve unpacked dimensions across scopes by @tignear in #1171
  • fix(deps): update rust crate object to 0.40 by @renovate[bot] in #1225
  • feat(sv)!: support packed unions, scoped locals and named calls by @tignear in #1211
  • fix(vcd): retain external signals across waveform restarts by @tignear in #1227
  • fix(js): bound scalar accesses to simulation memory by @tignear in #1228
  • chore(deps): update rust crate toml to v1.1.8 by @renovate[bot] in #1229
  • fix(native): normalize unknown wildcard comparison results by @tignear in #1230
  • fix(sv): preserve eager Veryl assertion message effects by @tignear in #1231
  • fix(sv): retain parameter part-selects in constant initializers by @tignear in #1214
  • fix(js): dispose factory handles when construction fails by @tignear in #1232
  • fix(api): truncate scalar writes to the signal width by @tignear in #1240
  • chore(deps): update dependency lefthook to v2.1.17 by @renovate[bot] in #1244
  • chore(deps): update napi-rs and emnapi compatibility by @renovate[bot] in #1234
  • fix(simulation): preserve aliased and cascaded clock edges by @tignear in #1243
  • chore(deps): update rust toolchain to 404b7a5 by @renovate[bot] in #1246
  • chore(deps): update dependency @napi-rs/cli to v3.10.7 by @renovate[bot] in #1247
  • fix(sv): consume time arguments and format packed strings by @tignear in #1241
  • fix(api)!: preserve HDL output as bytes by @tignear in #1245
  • fix(vite): refresh generated data when project configuration changes by @tignear in #1233
  • fix(sv): treat unknown casex selector bits as wildcards by @tignear in #1238
  • fix(deps): update rust crate syn to v3.0.7 by @renovate[bot] in #1253
  • chore(deps): update dependency vite to v8.3.3 by @renovate[bot] in #1254
  • chore(deps): update pnpm to v12.10.0 by @renovate[bot] in #1255
  • fix(docs): keep CPU legends outside benchmark plots by @tignear in #1256
  • chore(deps): update rust toolchain to 3100cf6 by @renovate[bot] in #1257
  • chore(deps): update dependency @napi-rs/cli to v3.10.8 by @renovate[bot] in #1258
  • chore(deps): update rust crate parol to v5.0.3 by @renovate[bot] in #1261
  • fix(ci): restore scheduled Heliodor benchmark measurements by @tignear in #1263
  • fix(simulation): preserve clock periods and monotonic time by @tignear in #1235
  • fix(sv): mask unresolved imports and preserve parameter short circuits by @tignear in #1251
  • fix(sv): extend nested operands before evaluating expressions by @tignear in #1236
  • fix(slt): preserve concatenated constants during inlining by @tignear in #1264
  • feat(debug): visualize parallel scheduler decisions and waits by @tignear in #1259
  • perf(scheduler): publish cross-lane results at finer task boundaries by @tignear in #1260
  • chore(deps): update rust crate serde_json to v1.0.152 by @renovate[bot] in #1265
  • chore(deps): update pnpm to v12.10.1 by @renovate[bot] in #1267
  • fix(sv): honor display field alignment and zero padding by @tignear in #1266
  • chore(deps): update rust crate proptest to v1.12.0 by @renovate[bot] in #1268
  • fix(vite): track source and project changes in module graphs by @tignear in #1237
  • fix(ci): gate merges on ARM64 backend checks by @tignear in #1269
  • feat(visualizer): compare scheduler estimates and focus task dependencies by @tignear in #1270
  • fix(runtime): align simulation storage and lane boundaries to 256 bytes by @tignear in #1271
  • fix(vite): remove orphan declarations after startup generation by @tignear in #1239
  • chore(deps): update rust toolchain to 8111d2b by @renovate[bot] in #1275
  • perf(parallel): track dependencies by bit and loop large sparse commits by @tignear in #1277
  • chore(deps): update rust crate serde_json to v1.0.153 by @renovate[bot] in #1278
  • chore(deps): update rust crate serde_json to v1.0.154 by @renovate[bot] in #1279
  • fix(release): update lydite lockfile versions in release PRs by @tignear in #1281
  • fix(deps): update rust crate syn to v3.0.8 by @renovate[bot] in #1280

Full Changelog: v0.10.1...v0.11.0