Skip to content

v0.20.3

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Aug 06:33
633a884

What's Changed

New Features πŸŽ‰

Other Changes

  • Fix compatibility check between modports by @taichi-ishitani in #2946
  • New symbol table based on scope tree by @dalance in #2885
  • fix(simulator): mask unary-minus carry out of bit width in wide JIT ops by @dalance in #2948
  • fix(simulator): clip bit-select assign RHS to the selected field window by @dalance in #2949
  • Fix false positive of mismatch_assignment warning by @taichi-ishitani in #2947
  • fix(simulator): fix cranelift JIT out-of-bounds and scalar-deref wide-value reads by @dalance in #2950
  • fix(simulator): fold constant-zero concat repeats into one shift to bound JIT frame by @dalance in #2956
  • feat(synthesizer): make SRAM inference thresholds configurable via Veryl.toml by @dalance in #2957
  • Skip IR conversion of module body for instances in generic modules by @taichi-ishitani in #2958
  • fix(synthesizer): reject oversized flip-flop arrays to avoid OOM by @dalance in #2959
  • fix: unkind mismatch_type message for modport port by @ranaumarnadeem in #2951
  • feat(parser): adopt parol max parsing depth and drop analyzer depth limits by @dalance in #2930
  • docs(parser): trim MAX_PARSING_DEPTH comment by @dalance in #2960
  • ci: replace sccache/R2 with native rust-cache in regression workflow by @dalance in #2961
  • ci: remove obsolete sccache cache-worker by @dalance in #2962
  • ci: run heliodor Linux boot test in a parallel job to shorten the critical path by @dalance in #2963
  • ci: cache workspace crates in build-veryl to test warm reuse by @dalance in #2964
  • ci: cache compilation with sccache for build matrix and build-veryl by @dalance in #2967
  • ci: cache codspeed benchmark builds with sccache by @dalance in #2970
  • fix(simulator): size cond-hoist temp with 4-state mask section by @dalance in #2973
  • fix(analyzer): emit mismatch_type for non-FactorType proto generic default by @mvanhorn in #2975
  • ci: suppress sccache summary annotations and tidy cache comments by @dalance in #2976
  • fix(metadata): update git dependencies correctly with the gitoxide backend by @dalance in #2977
  • simulator: predict AOT-C mux/if conditions unlikely (default on) by @dalance in #2979
  • chore: prune stale and redundant comments by @dalance in #2980
  • fix(formatter): stop vertically aligning function-call statements by @dalance in #2983
  • chore: add Open Collective to FUNDING.yml by @dalance in #2987
  • fix(analyzer): report infinite_recursion instead of crashing on recur… by @ranaumarnadeem in #2971
  • fix(clippy): satisfy question_mark and for_kv_map lints for Rust 1.97 by @dalance in #2989
  • ci(codspeed): build the simulator benchmark with release-verylup to avoid the fat-LTO OOM by @dalance in #2990
  • fix(analyzer): drop statically-dead if branches via short-circuit eval by @dalance in #2992
  • fix(sim): resolve hierarchical references into generate blocks by @dalance in #2993
  • fix(analyzer): make invalid select an error instead of a warning by @dalance in #2994
  • feat(std): add a monitor modport to axi4_stream_if by @dalance in #2997
  • fix(new): scaffold component crates with edition 2024 by @dalance in #2998
  • fix(analyzer): resolve generate-block references through a plain instance hop by @dalance in #2999
  • fix(simulator): dynamic-index FF read-during-write must be read-OLD (NBA), not read-NEW by @dalance in #3000
  • feat(synthesizer): infer byte-write-enable RAM, folding a masked-write retention read into the write port (1R1W) by @dalance in #3004
  • fix(simulator): a wide unbased-literal ('1) ternary branch dropped its high words by @dalance in #3005
  • feat(doc): refine generated component pages by @dalance in #3007
  • Fix false positive of invalid_select error by @taichi-ishitani in #3008
  • Fix emittion of global generic functions called from non generic global function by @taichi-ishitani in #3009
  • fix(simulator): evaluate runtime index in hierarchical testbench memory reads by @dalance in #3010
  • Fix interface parameter overrides dropped through modport ports by @shuntarot in #2969
  • Fix cranelift panic on dynamic index of i128 array element sub-slice by @dalance in #3014
  • Fix SIGFPE on unsigned division by zero in AOT-C backend by @dalance in #3016
  • Fix missing sign extension of bare narrower RHS at simulator stores by @dalance in #3017
  • Fix block comment lexing crossing the first */ when followed by / by @dalance in #3018
  • Fix binary XNOR result left unmasked in JIT and AOT-C backends by @dalance in #3019
  • Fix Pow result left unmasked for in-register consumers in JIT backends by @dalance in #3020
  • Fix wide arithmetic right shift sign-filling unsigned operands in JIT and AOT-C backends by @dalance in #3021
  • Fix Cranelift reduction XNOR computing popcount==0 instead of even parity by @dalance in #3025
  • Fix AOT-C unary result left unmasked in a 65..128-bit context by @dalance in #3026
  • Fix op-assign on a struct member reading the base variable's low bits by @dalance in #3027
  • Cache the comb compilation pipeline across tests so a shared DUT compiles once by @dalance in #3028
  • feat(simulator): JIT static wide-result bit-select of wide values on cranelift by @dalance in #3029
  • Fix port default value being const-folded into connected instances by @shuntarot in #3011
  • Fix interpreter panic on comparisons after wide algebraic identity folding by @dalance in #3030
  • Fix power operator dropping exponents wider than 64 bits by @dalance in #3032
  • Fix combinational loops through disjoint bits of one variable never detected by @dalance in #3033
  • Fix unannotated interface instance laundering clock domain crossings by @dalance in #3034
  • Fix missing clock domain check on assignment LHS index and part-select by @dalance in #3035
  • ci: cap sccache at 1G and add cache-size monitoring to periodic by @dalance in #3036
  • Fix foreign-domain index into a const array skipping the clock domain check by @dalance in #3037
  • Fix concatenation-LHS assignment bypassing clock domain checks by @dalance in #3038
  • Fix if/case/switch statement conditions never clock-domain checked against gated writes by @dalance in #3039
  • ci: drop sccache from heliodor boot benchmark by @dalance in #3043
  • Fix const values keeping the RHS literal's signedness instead of the declared type's by @dalance in #3044
  • Fix explicit enum member references carrying the expression width instead of the enum width by @dalance in #3045
  • build: make gitoxide opt-in so codspeed benchmarks skip compiling gix by @dalance in #3046
  • Fix sized all-bit literal carrying width 0 in its IR type by @dalance in #3047
  • ci: group minor/patch dependabot updates weekly to cut rust-cache invalidation by @dalance in #3048
  • Fix base-less literal accepted as concatenation operand but emitted unsized by @dalance in #3049
  • chore: trim over-verbose comments from recent bugfixes by @dalance in #3051
  • Fix literal width prefix silently truncated modulo 2^32 by @dalance in #3052
  • Fix loop-variable-dependent part-select bounds passing the const check by @dalance in #3054
  • Fix negative additive for-step passing the zero-step guard as a huge unsigned step by @dalance in #3055
  • Bump wasmtime to 47.0 and cranelift to 0.134.1 by @dalance in #3060
  • chore(deps): Bump syn from 2.0.119 to 3.0.2 by @dalance in #3061
  • Fix negative for-range bounds wrapping to huge unsigned bounds by @dalance in #3062
  • Fix bitwise operators zero-extending signed operands in eval_value_binary by @dalance in #3063
  • chore(deps): Regenerate test_component fixture Cargo.lock for syn 3.0 by @dalance in #3064
  • Fix comptime evaluation silently skipping for loops over evaluate_size_limit by @dalance in #3065
  • fix(simulator): lower case to a flat multiway node, not a nested if-chain by @dalance in #3066
  • Fix data-dependent break lost when a const-bound for loop is unrolled by @dalance in #3067
  • fix(analyzer): self-determine testbench clock/reset method argument widths by @dalance in #3068
  • Fix shift overflow panic on out-of-range const bit-select assignment by @dalance in #3069
  • fix(analyzer): resolve const/param scalar refs from comptime in eval_value by @dalance in #3070
  • fix(analyzer): give $signed/$unsigned a typed comptime so synth keeps the multiplier by @dalance in #3071
  • fix(synthesizer): keep element-wise multi-decl array drivers (generate-for chains) by @dalance in #3072
  • fix(analyzer): don't false-positive comb-loop on if-statement feed-forward array chains by @dalance in #3073
  • sim/aot-c: emit wide concatenation as direct element placement by @dalance in #3075
  • fix(synthesizer): constant-fold gates at construction to stop constant-cone blowup by @dalance in #3076
  • feat(synthesizer): infer byte/bit write-enable RAMs as a masked SRAM macro by @dalance in #3077
  • feat(synthesizer): add depth-reducing restructuring of reduction and scan chains by @dalance in #3079
  • feat(synthesizer): rebuild serial conditional-increment counters as popcount trees by @dalance in #3080
  • Fix always_ff and another process both writing dynamic slices passing silently by @dalance in #3081
  • Fix partially driven output ports passing the unassigned check by @dalance in #3084
  • fix(analyzer): clamp relational sign-extension shift for width-0 operands by @dalance in #3085
  • fix(analyzer): do not count $sv instance connects as driving processes in the dynamic-write conflict check by @dalance in #3088
  • fix(analyzer): deterministic function-call argument order by @dalance in #3086
  • fix(analyzer): round-trip the sentinel id 0 so interface fragments become cacheable by @dalance in #3089
  • perf(analyzer): share Type payloads across clones via Arc by @dalance in #3090
  • perf(simulator): cache the whole-comb backend compile across tests, keyed by an XXH3-128 pipeline fingerprint by @dalance in #3092
  • fix(simulator): deterministic recurring-DUT pre-pass eliminates a dut_reuse alias-order flake by @dalance in #3093
  • feat(veryl): schedule native tests longest-first using prior-run timings by @dalance in #3094
  • feat(simulator): expand AOT-C whole-comb coverage to wide comb shapes, dynamic-bound For, and 65-128-bit wide-pointer stores by @dalance in #3095
  • perf(simulator): optimize cranelift wide-op codegen and JIT chunk layout for comb settle by @dalance in #3096
  • feat(simulator): extend VERYL_STEP_WATCH (multi-match, array elem, change-only) by @dalance in #3097
  • feat(veryl): report per-test simulation-only time in --format json by @dalance in #3098
  • fix(simulator): honor a constant [hi:lo] range on a dynamic element select by @dalance in #3100
  • fix(simulator): rewind write-log counts before the Cranelift reference run by @dalance in #3101
  • perf(simulator): keep wide comb shapes AOT-native (128-bit shift, dynsel store, 65-128-bit dynamic-index store) by @dalance in #3102
  • Resolve reference to import items as priority by @taichi-ishitani in #3103
  • Apply select to a value resolved through the symbol route by @taichi-ishitani in #3083
  • read a selected const through the same path as a local const by @dalance in #3112
  • Fix unknown_member error reported for items imported from generic packages defined in other projects by @taichi-ishitani in #3107
  • fix else-if const fold dangling empty false side by @MurakamiShun in #3114
  • fix(analyzer): inline a compile-time-true if_reset else-if body and share the leaf-append helper by @dalance in #3123
  • fix(analyzer): fold constant switch arm conditions like an if chain by @dalance in #3124
  • chore(deps): Bump gix from 0.85.0 to 0.86.0 by @dalance in #3125
  • fix(ls): add project to the key of per-file table drops by @taichi-ishitani in #3118
  • fix(analyzer): drop scope tree bindings together with their symbols by @dalance in #3127
  • unalias base path of rust style import by @taichi-ishitani in #3128
  • Fix mismatch_assignment error reported for generic arguments using items imported at an enclosing scope by @taichi-ishitani in #3121
  • fix(analyzer): align import visibility with the resolver's lookup rules by @dalance in #3132
  • fix(simulator): support array literal function arguments by @tignear in #3131
  • fix(analyzer): stop multiple_assignment on provably disjoint dynamic writes by @dalance in #3133

New Contributors

Full Changelog: v0.20.2...v0.20.3