Added:
- Support for GHC 9.10 #2758
- Support for GHC 9.8.4 #2852
- Add
ShowX
,NFDataX
instances forProxy
#2637 - Added
Clash.Sized.Vector.ToTuple.vecToTuple
: a way to safely work around incomplete patterns warnings on patterns involvingVec
tors. #2862 - Added operator precedences for infix usage of functions exported from
Clash.Class.Num
:mul
,add
,sub
,satMul
,satAdd
,satSub
,boundedMul
,boundedAdd
, andboundedSub
. This means that expressions such asa `add` b `mul` c
now get parsed asa `add` (b `mul` c)
instead of(a `add` b) `mul` c
. #2719
Changed:
BitVector n
now has an implementation forensureSpine
which ensures the constructor is present. #2702xToBV
is now located inClash.Sized.Internal.BitVector
to avoid circular dependencies. #2702- The error messages that mention the valid ranges for out-of-range inputs have been improved to be more intuitive: one of
<empty range>
,[n]
or[n..m]
. All n..m ranges are now ordered with the lower bound on the left. #2733
Fixed:
- cabal: Make
workaround-ghc-mmap-crash
a noop on non-x86_64. Fixes #2656 - Clash no longer hides error messages if it fails to load external (precompiled) modules. Note: this fix only works from GHC 9.0 on. See #2365
- HDL generation fails when using multiple-hidden feature in combination with synthesis attributes #2593
- Clash no longer errors out in the netlist generation stage when a polymorphic function is applied to type X in one alternative of a case-statement and applied to a newtype wrapper of type X in a different alternative. See #2828
- various issues with black boxes and evaluator rules for number-related primitives #2689
genBitVector
no longer contains off-by-one error on for generated Naturals #2704- (+>>.) and (.<<+) such that they are compliant with (+>>) and (<<+) for vectors of zero length in the sense that the input vector is kept unchanged. #2730
- Removed
stringsearch
dependency fromv16-upgrade-primitives
. See #2726 - Bug in the compile-time evaluator #2781
- Exponentiation (
Clash.Class.Exp
) is now right-associative with a precedence level of 8 (infixr 8
). By accident, it used to lack a fixity declaration, meaning it was implicitly left-associative at level 9. #2818 - Unused argument warnings on writeToBiSignal# #2822
- Clash errored saying it cannot translate a globally recursive function in code that originally only contains let-bound (local) recursion #2839
- Clash generates illegal Verilog names #2845