The Eta Programming Language, a dialect of Haskell on the JVM
This release contains support for Java 9 and above and includes some bug fixes.
See the commentary in the issues below for more details:
#648 - A minor code generation improvement that avoids off-heap allocations for constant strings.
#943 - Finally adds support for Java 9, 10, and 11.
#942 - Code generation improvement that avoids overflowing the constant pool for large code files (2k+ lines).
#947 - Fixes a bug that causes invalid paths to be generated for temporary files resulting in runtime exceptions. (@mgsloan)
Thanks to @jneira and @GordonBGood for documentation improvements (#561, #935, #936).
In addition, thanks to all the people who have filed detailed issues and all our wonderful community members and users.
This release contains major performance improvements and several bug fixes.
Eta has suffered from some space leaks in programs that make heavy use of laziness to the point where it can potentially cause the GC to hang. We not only fixed this problem in general by implementing thunk clearing, but we also implemented an optimization we didn't have before - the selector thunk optimization which is an absolute requirement for any lazy language to be practical.
See the commentary in the issues below for more details:
#517 - Implements selector thunk optimization
#907 - Fixes a bug with foreign exports involving generics and arrays
#916 - Fixes a bug with file locking on Windows which causes spurious "resource busy" exceptions.
#919 - Fixes a bug where pattern splices via Template Metaprogramming were causing compiler panics.
#927 - Fixes a bug with importing multidimensional Java arrays into Eta
Thanks to all the people who have filed detailed issues and all our wonderful community members and users.
This release primarily contains bug fixes.
The relevant issues are linked below with brief descriptions of what they entail:
#878 - Fixes a severe bug with floating point operations in Eta.
#891, #897 - Fixes a bug with categorizing Unicode characters in the GHC.Unicode
module in base
.
#893 - Fixes a bug with using <:
constraints in foreign export declarations.
#896 - Fixed a bug with the trampoline
function that makes it fail for values.
#898 - Support supplementary Unicode character literals
#913 - Relaxes case restriction for type constructors since their names won't appear in generated code.
#915 - Fixes a bug that caused ClosedByInterruptException
to be thrown spuriously.
Thanks to all the contributors who have contributed to this release:
Thanks to all the people who have filed detailed issues and all our wonderful community members and users.
It was reported that the CPU usage was over 100% when idle (#839, #862, etlas #69 ). We fixed this problem by doing a small refactor of the RTS. Now the usage is down to < 1% when idle.
Eta now supports reproducibility by default. If you need details on how to see this in action, check out this gist.
We've upgraded to base-4.11.1.0
to support the newer hackage packages.
In order to support better extensibility at compile-time while keeping good performance we took sometime to port Backpack into Eta.
Eta now supports ApplicativeDo
, Strict
, and StrictData
language extensions.
Servant, Scotty, Spock, Yesod, and Warp work in Eta.
For more information check out this page
We’ve backported GHC 8’s pattern match checker which performs intelligent exhaustiveness checking, especially for GADTs.
Warnings now give a proper context showing you exactly which flags enable the warning in the first place, making day-to-day usage a bit smoother.
For more details on this release check out the blog post.
eta.runtime.io.MutVar.set()
by using lazySet
to avoid a volatile write since MutVar
provides no concurrency guarantees. (@rahulmutt)