packages feed

clash-prelude-hedgehog 1.10.2 → 1.10.3

raw patch · 2 files changed

+48/−3 lines, 2 filesdep ~clash-preludePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: clash-prelude

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,5 +1,48 @@ # Changelog for the Clash project +## 1.10.3 - *14 Oct, 2026*++### Added:+- Added support for GHC 9.14.+  [#3182](https://github.com/clash-lang/clash-compiler/pull/3182)+- Add `NumConvert` support for converting from `SNat`+  [#3455](https://github.com/clash-lang/clash-compiler/pull/3455)++### Changed:+- Normalization now knows which `Term` constructors each transformation can fire on, and only offers a node to the transformations that can match it. Measured ~25% faster HDL generation end-to-end on a large industrial design, with identical HDL. Transformations that cannot match a node no longer show up in `-fclash-debug-transformations` and `-fclash-debug-count-transformations` output.+  [#3328](https://github.com/clash-lang/clash-compiler/pull/3328)+- `Clash.Signal.Internal.resetGenN` now reports `clash-non-synthesizable` on every backend, instead of only on SystemVerilog.+  [#3410](https://github.com/clash-lang/clash-compiler/pull/3410)+- In `clash-lib`, the `reduceNonRepPrim` transformation is renamed to `reducePrim`, because it replaces primitives for more reasons than non-representable arguments or results. To debug it with `-fclash-debug-transformations`, use the new name.+  [#3462](https://github.com/clash-lang/clash-compiler/pull/3462)+- In `clash-lib`, the `inlineWorkFree` transformation now normalizes an application of a function to constant arguments only once, and reuses the result at every place the same application occurs. Before, every occurrence was normalized separately. This speeds up normalization of designs that compute a lot with type-level naturals at compile time, for example through `KnownNat` constraints.+  [#3472](https://github.com/clash-lang/clash-compiler/pull/3472)++### Fixed:+- Clash no longer errors when unused arguments of local functions are non-representable in very specific circumstances+  [#3407](https://github.com/clash-lang/clash-compiler/issues/3407)+- `ensureSpine` on a `Signal` no longer crashes Clash with an internal error. It now applies the sample's `ensureSpine` instance in HDL, preserving fixed bits in custom representations. Undefined stream recovery in simulation uses the same instance instead of `deepErrorX`, fixing mismatches for function-valued samples.+  [#3432](https://github.com/clash-lang/clash-compiler/issues/3432)+- Functions testing for `XException` (`isX`, `hasX`, `maybeIsX`, and `maybeHasX`) are now marked non-translatable. This makes the Clash compiler throw a proper error, instead of an internal one when it encounters their use.+  [#3434](https://github.com/clash-lang/clash-compiler/pull/3434)+- Clash no longer crashes when generating HDL for `toEnum` on an enumeration with a single constructor.+  [#3439](https://github.com/clash-lang/clash-compiler/issues/3439)+- Clash now reports an error when using GHC 9.12.1 through 9.12.3, which contain bugs affecting Clash. The GHC compatibility matrix now lists 9.12.4 as the minimum supported GHC 9.12 release.+  [#3415](https://github.com/clash-lang/clash-compiler/issues/3415)+- Extending arithmetic (`add`, `sub`, and `mul`) on `Index` now handles zero-width+  arguments correctly. VHDL subtraction from zero-width `BitVector`, `Signed`, and+  `Unsigned` values now negates the widened operand correctly, including boundary+  values.+  [#3310](https://github.com/clash-lang/clash-compiler/issues/3310)+- Clash now checks all input targets before loading modules or generating HDL. Invalid arguments, including Clash flags passed without their leading dash, are reported immediately, instead of after compiling earlier inputs.+  [#3314](https://github.com/clash-lang/clash-compiler/issues/3314)+- Projecting a zero-width field, such as a `CallStack`, no longer renders a reference to an undeclared `c$sel` in the HDL in very specific circumstances.+  [#3460](https://github.com/clash-lang/clash-compiler/issues/3460)+- Clash no longer takes minutes to compile designs that unroll `map`, `zipWith`, `foldr`, or `init` over vectors bound to top-level definitions. This most often happened with modules compiled with `-ffull-laziness`, which is enabled by `-O`, for example by Cabal.+  [#3461](https://github.com/clash-lang/clash-compiler/issues/3461)+- Fixed accidental free variable capture in `appProp`, which could produce subtly incorrect HDL.+  [#3478](https://github.com/clash-lang/clash-compiler/issues/3478)+ ## 1.10.2 *Sep 4th, 2026*  Highlights:@@ -60,6 +103,7 @@ * In `clash-ghc`, Clash no longer enables `-dynamic-too` when the build is already dynamic, which made GHC emit an `-Winconsistent-flags` warning. See [#3354](https://github.com/clash-lang/clash-compiler/issues/3354), fixed in [#3358](https://github.com/clash-lang/clash-compiler/pull/3358). * In `clash-lib`, the SystemVerilog backend no longer emits out-of-bounds array indices when a nested modifier selects a half of an `RTree`. The size of a tree half was computed as `(d-1)^2` instead of `2^(d-1)`, so for an `RTree 3` the right half was emitted as `[4:8]` on an array whose valid indices are `0..7`. See [#3359](https://github.com/clash-lang/clash-compiler/issues/3359), fixed in [#3360](https://github.com/clash-lang/clash-compiler/pull/3360). * In `clash-lib` and `clash-ghc`, structural equality and ordering now account for the names and types of variables, including in `eqTerm` and `eqType`, instead of relying only on variable uniques. See [#3361](https://github.com/clash-lang/clash-compiler/issues/3361), fixed in [#3362](https://github.com/clash-lang/clash-compiler/pull/3362).+* `popCount`, `countLeadingZeros` and `countTrailingZeros` on `BitVector` (and hence on `Unsigned`, `Signed` and `Index`, which delegate to it) went through `Integer`, which made Clash emit a `Dubious primitive instantiation` warning for `GHC.Num.Integer.integerToInt#` and put an `Integer` in the generated HDL. They now use `Clash.Sized.Internal.Index.fromEnum#`, which has a black box of its own. See [#3409](https://github.com/clash-lang/clash-compiler/pull/3409).  ## 1.10.1 *Aug 27th, 2026* 
clash-prelude-hedgehog.cabal view
@@ -1,7 +1,7 @@ cabal-version:      2.2  name:               clash-prelude-hedgehog-version:            1.10.2+version:            1.10.3 synopsis:           Hedgehog Generators for clash-prelude description:        Hedgehog Generators for clash-prelude bug-reports:        https://github.com/clash-lang/clash-compiler/issues@@ -15,7 +15,8 @@ tested-with:        GHC == 9.6.7,                     GHC == 9.8.4,                     GHC == 9.10.3,-                    GHC == 9.12.4+                    GHC == 9.12.4,+                    GHC == 9.14.1  Extra-source-files: CHANGELOG.md @@ -59,4 +60,4 @@     text                      >= 1.2.2   && < 2.2,     string-interpolate        >= 0.3     && < 1.1, -    clash-prelude             == 1.10.2,+    clash-prelude             == 1.10.3,