|
1 | 1 | # Changelog for the [`clash-ghc`](http://hackage.haskell.org/package/clash-ghc) package
|
2 | 2 |
|
| 3 | +## 1.0.0 *September 3rd 2019* |
| 4 | +* 10x - 50x faster compile times |
| 5 | +* New features: |
| 6 | + * API changes: check the migration guide at the end of `Clash.Tutorial` |
| 7 | + * All memory elements now have an (implicit) enable line; "Gated" clocks have |
| 8 | + been removed as the clock wasn't actually gated, but implemented as an |
| 9 | + enable line. |
| 10 | + * Circuit domains are now configurable in: |
| 11 | + * (old) The clock period |
| 12 | + * (new) Clock edge on which memory elements latch their inputs |
| 13 | + (rising edge or falling edge) |
| 14 | + * (new) Whether the reset port of a memory element is level sensitive |
| 15 | + (asynchronous reset) or edge sensitive (synchronous reset) |
| 16 | + * (new) Whether the reset port of a memory element is active-high or |
| 17 | + active-low (negated reset) |
| 18 | + * (new) Whether memory element power on in a configurable/defined state |
| 19 | + (common on FPGAs) or in an undefined state (ASICs) |
| 20 | + |
| 21 | + * See the [blog post](https://clash-lang.org/blog/0005-synthesis-domain/) on this new feature |
| 22 | + * Data types can now be given custom bit-representations: http://hackage.haskell.org/package/clash-prelude/docs/Clash-Annotations-BitRepresentation.html |
| 23 | + * Annotate expressions with attributes that persist in the generated HDL, |
| 24 | + e.g. synthesis directives: http://hackage.haskell.org/package/clash-prelude/docs/Clash-Annotations-SynthesisAttributes.html |
| 25 | + * Control (System)Verilog module instance, and VHDL entity instantiation names |
| 26 | + in generated code: http://hackage.haskell.org/package/clash-prelude/docs/Clash-Magic.html |
| 27 | + * Much improved infrastructure for handling of unknown values: defined spine, |
| 28 | + but unknown leafs: http://hackage.haskell.org/package/clash-prelude/docs/Clash-XException.html#t:NFDataX |
| 29 | + * Experimental: Multiple hidden clocks. Can be enabled by compiling |
| 30 | + `clash-prelude` with `-fmultiple-hidden` |
| 31 | + * Experimental: Limited GADT support (pattern matching on vectors, or custom |
| 32 | + GADTs as longs as their usage can be statically removed; no support of |
| 33 | + recursive GADTs) |
| 34 | + * Experimental: Use regular Haskell functions to generate HDL black boxes for |
| 35 | + primitives (in an addition to existing string templates for HDL black boxes) |
| 36 | + See for example: http://hackage.haskell.org/package/clash-lib/docs/Clash-Primitives-Intel-ClockGen.html |
| 37 | + |
| 38 | +* Fixes issues: |
| 39 | + * [#316](https://github.com/clash-lang/clash-prelude/issues/316) |
| 40 | + * [#319](https://github.com/clash-lang/clash-prelude/issues/319) |
| 41 | + * [#323](https://github.com/clash-lang/clash-prelude/issues/323) |
| 42 | + * [#324](https://github.com/clash-lang/clash-prelude/issues/324) |
| 43 | + * [#329](https://github.com/clash-lang/clash-prelude/issues/329) |
| 44 | + * [#331](https://github.com/clash-lang/clash-prelude/issues/331) |
| 45 | + * [#332](https://github.com/clash-lang/clash-prelude/issues/332) |
| 46 | + * [#335](https://github.com/clash-lang/clash-prelude/issues/335) |
| 47 | + * [#348](https://github.com/clash-lang/clash-prelude/issues/348) |
| 48 | + * [#349](https://github.com/clash-lang/clash-prelude/issues/349) |
| 49 | + * [#350](https://github.com/clash-lang/clash-prelude/issues/350) |
| 50 | + * [#351](https://github.com/clash-lang/clash-prelude/issues/351) |
| 51 | + * [#352](https://github.com/clash-lang/clash-prelude/issues/352) |
| 52 | + * [#353](https://github.com/clash-lang/clash-prelude/issues/353) |
| 53 | + * [#358](https://github.com/clash-lang/clash-prelude/issues/358) |
| 54 | + * [#359](https://github.com/clash-lang/clash-prelude/issues/359) |
| 55 | + * [#363](https://github.com/clash-lang/clash-prelude/issues/363) |
| 56 | + * [#364](https://github.com/clash-lang/clash-prelude/issues/364) |
| 57 | + * [#365](https://github.com/clash-lang/clash-prelude/issues/365) |
| 58 | + * [#371](https://github.com/clash-lang/clash-prelude/issues/371) |
| 59 | + * [#372](https://github.com/clash-lang/clash-prelude/issues/372) |
| 60 | + * [#373](https://github.com/clash-lang/clash-prelude/issues/373) |
| 61 | + * [#378](https://github.com/clash-lang/clash-prelude/issues/378) |
| 62 | + * [#380](https://github.com/clash-lang/clash-prelude/issues/380) |
| 63 | + * [#381](https://github.com/clash-lang/clash-prelude/issues/381) |
| 64 | + * [#382](https://github.com/clash-lang/clash-prelude/issues/382) |
| 65 | + * [#383](https://github.com/clash-lang/clash-prelude/issues/383) |
| 66 | + * [#387](https://github.com/clash-lang/clash-prelude/issues/387) |
| 67 | + * [#393](https://github.com/clash-lang/clash-prelude/issues/393) |
| 68 | + * [#396](https://github.com/clash-lang/clash-prelude/issues/396) |
| 69 | + * [#398](https://github.com/clash-lang/clash-prelude/issues/398) |
| 70 | + * [#399](https://github.com/clash-lang/clash-prelude/issues/399) |
| 71 | + * [#401](https://github.com/clash-lang/clash-prelude/issues/401) |
| 72 | + * [#403](https://github.com/clash-lang/clash-prelude/issues/403) |
| 73 | + * [#407](https://github.com/clash-lang/clash-prelude/issues/407) |
| 74 | + * [#412](https://github.com/clash-lang/clash-prelude/issues/412) |
| 75 | + * [#413](https://github.com/clash-lang/clash-prelude/issues/413) |
| 76 | + * [#420](https://github.com/clash-lang/clash-prelude/issues/420) |
| 77 | + * [#422](https://github.com/clash-lang/clash-prelude/issues/422) |
| 78 | + * [#423](https://github.com/clash-lang/clash-prelude/issues/423) |
| 79 | + * [#424](https://github.com/clash-lang/clash-prelude/issues/424) |
| 80 | + * [#438](https://github.com/clash-lang/clash-prelude/issues/438) |
| 81 | + * [#450](https://github.com/clash-lang/clash-prelude/issues/450) |
| 82 | + * [#452](https://github.com/clash-lang/clash-prelude/issues/452) |
| 83 | + * [#455](https://github.com/clash-lang/clash-prelude/issues/455) |
| 84 | + * [#460](https://github.com/clash-lang/clash-prelude/issues/460) |
| 85 | + * [#461](https://github.com/clash-lang/clash-prelude/issues/461) |
| 86 | + * [#463](https://github.com/clash-lang/clash-prelude/issues/463) |
| 87 | + * [#468](https://github.com/clash-lang/clash-prelude/issues/468) |
| 88 | + * [#475](https://github.com/clash-lang/clash-prelude/issues/475) |
| 89 | + * [#476](https://github.com/clash-lang/clash-prelude/issues/476) |
| 90 | + * [#500](https://github.com/clash-lang/clash-prelude/issues/500) |
| 91 | + * [#507](https://github.com/clash-lang/clash-prelude/issues/507) |
| 92 | + * [#512](https://github.com/clash-lang/clash-prelude/issues/512) |
| 93 | + * [#516](https://github.com/clash-lang/clash-prelude/issues/516) |
| 94 | + * [#517](https://github.com/clash-lang/clash-prelude/issues/517) |
| 95 | + * [#526](https://github.com/clash-lang/clash-prelude/issues/526) |
| 96 | + * [#556](https://github.com/clash-lang/clash-prelude/issues/556) |
| 97 | + * [#560](https://github.com/clash-lang/clash-prelude/issues/560) |
| 98 | + * [#566](https://github.com/clash-lang/clash-prelude/issues/566) |
| 99 | + * [#567](https://github.com/clash-lang/clash-prelude/issues/567) |
| 100 | + * [#569](https://github.com/clash-lang/clash-prelude/issues/569) |
| 101 | + * [#573](https://github.com/clash-lang/clash-prelude/issues/573) |
| 102 | + * [#575](https://github.com/clash-lang/clash-prelude/issues/575) |
| 103 | + * [#581](https://github.com/clash-lang/clash-prelude/issues/581) |
| 104 | + * [#582](https://github.com/clash-lang/clash-prelude/issues/582) |
| 105 | + * [#586](https://github.com/clash-lang/clash-prelude/issues/586) |
| 106 | + * [#588](https://github.com/clash-lang/clash-prelude/issues/588) |
| 107 | + * [#591](https://github.com/clash-lang/clash-prelude/issues/591) |
| 108 | + * [#596](https://github.com/clash-lang/clash-prelude/issues/596) |
| 109 | + * [#601](https://github.com/clash-lang/clash-prelude/issues/601) |
| 110 | + * [#607](https://github.com/clash-lang/clash-prelude/issues/607) |
| 111 | + * [#629](https://github.com/clash-lang/clash-prelude/issues/629) |
| 112 | + * [#637](https://github.com/clash-lang/clash-prelude/issues/637) |
| 113 | + * [#644](https://github.com/clash-lang/clash-prelude/issues/644) |
| 114 | + * [#647](https://github.com/clash-lang/clash-prelude/issues/647) |
| 115 | + * [#661](https://github.com/clash-lang/clash-prelude/issues/661) |
| 116 | + * [#668](https://github.com/clash-lang/clash-prelude/issues/668) |
| 117 | + * [#677](https://github.com/clash-lang/clash-prelude/issues/677) |
| 118 | + * [#678](https://github.com/clash-lang/clash-prelude/issues/678) |
| 119 | + * [#682](https://github.com/clash-lang/clash-prelude/issues/682) |
| 120 | + * [#691](https://github.com/clash-lang/clash-prelude/issues/691) |
| 121 | + * [#703](https://github.com/clash-lang/clash-prelude/issues/703) |
| 122 | + * [#713](https://github.com/clash-lang/clash-prelude/issues/713) |
| 123 | + * [#715](https://github.com/clash-lang/clash-prelude/issues/715) |
| 124 | + * [#727](https://github.com/clash-lang/clash-prelude/issues/727) |
| 125 | + * [#730](https://github.com/clash-lang/clash-prelude/issues/730) |
| 126 | + * [#736](https://github.com/clash-lang/clash-prelude/issues/736) |
| 127 | + * [#738](https://github.com/clash-lang/clash-prelude/issues/738) |
| 128 | + |
| 129 | +## 0.99.3 *July 28th 2018* |
| 130 | +* Fixes bugs: |
| 131 | + * Evaluator recognizes `Bit` literals [#329](https://github.com/clash-lang/clash-compiler/issues/329) |
| 132 | + * Use existential type-variables in context of GADT pattern match |
| 133 | + * Do not create zero-bit temporary variables in generated HDL |
| 134 | + * Use correct arguments in nested primitives [#323](https://github.com/clash-lang/clash-compiler/issues/329) |
| 135 | + * Zero-constructor data type needs 0 bits [#238](https://github.com/clash-lang/clash-compiler/issues/238) |
| 136 | + * Create empty component when result needs 0 bits |
| 137 | + * Evaluator performs BigNat arithmetic |
| 138 | + |
| 139 | +## 0.99.1 *May 12th 2018* |
| 140 | +* Allow `~NAME[N]` tag inside `~GENSYM[X]` |
| 141 | +* Support HDL record selector generation [#313](https://github.com/clash-lang/clash-compiler/pull/313) |
| 142 | +* `InlinePrimitive` support: specify HDL primitives inline with Haskell code |
| 143 | + |
| 144 | +## 0.99 *March 31st 2018* |
| 145 | +* New features: |
| 146 | + * Support for `clash-prelude-0.99`: |
| 147 | + * Explicit clock and reset arguments |
| 148 | + * Overhaul of `TopEntity` annotations |
| 149 | + * Hierarchies with multiple synthesisable boundaries by allowing more than one |
| 150 | + function in scope to have a `Synthesize` annotation. |
| 151 | + * Local caching of functions with a `Synthesize` annotation |
| 152 | + * `Bit` type is mapped to a HDL scalar type (e.g. `std_logic` in VHDL) |
| 153 | + * Improved name preservation |
| 154 | + * Zero-bit values are filtered out of the generated HDL |
| 155 | + * Improved compile-time computation |
| 156 | +* Many bug fixes |
| 157 | + |
3 | 158 | ## 0.7.2
|
4 | 159 | * New features:
|
5 | 160 | * Sum-of-product types: unused bits now "don't-care" [#212](https://github.com/clash-lang/clash-compiler/commit/fabf745793491ce3baf84ef0066b4ccf0753d503)
|
|
0 commit comments