Repository navigation
v0.11.0
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