Eta Versions Save

The Eta Programming Language, a dialect of Haskell on the JVM

0.8.6b5

5 years ago

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.

0.8.6b4

5 years ago

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.

0.8.6b3

5 years ago

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:

  • @Jyothsnasrinivas
  • @jneira
  • @puffnfresh
  • @shirouto
  • @rolandtritsch
  • @noahhaasis
  • @mmisamore

Thanks to all the people who have filed detailed issues and all our wonderful community members and users.

0.8.6b2

5 years ago

What's in the v0.8.6b2 release

1) REPL Upgrades

  • Printing non-Showable Values
  • Saving Evaluation History

2) CPU Usage Fix

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.

0.8.6b1

5 years ago

Eta v0.8.6

Reproducible builds

Eta now supports reproducibility by default. If you need details on how to see this in action, check out this gist.

Base-4.11.1.0

We've upgraded to base-4.11.1.0 to support the newer hackage packages.

Backpack

In order to support better extensibility at compile-time while keeping good performance we took sometime to port Backpack into Eta.

Language Extensions

Eta now supports ApplicativeDo, Strict, and StrictData language extensions.

Library Stabilizations

Servant, Scotty, Spock, Yesod, and Warp work in Eta.

Better Nix Builds

For more information check out this page

Pattern Match Checking

We’ve backported GHC 8’s pattern match checker which performs intelligent exhaustiveness checking, especially for GADTs.

Warning Messages

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.

Major Bug Fixes

  • Concurrent Runtime: We did a stress test on a simple Warp server by flooding it with requests to see whether there were any concurrent bugs we needed to fix. We found a few and the fixes are included in this release. There are currently known issues with Eta apps hogging the CPU, which will be fixed by the next release.
  • Memory Manager: The memory manager is part of the runtime responsible for allocating off-heap memory. There were some concurrent bugs discovered and fixed in this release.
  • StackOverflowErrors: In the process of making PureScript work with Eta we discovered some gaps in our trampolining mechanism. We fixed those allowing you to use the trampoline function to handle a wider class of StackOverflowErrors.
  • TemplateHaskell: They were several minor bugs in TemplateHaskell that lead to strange type errors. These have been fixed in this release.

For more details on this release check out the blog post.

0.7.0b2

6 years ago

Compiler

  • Fixed an FFI bug where the wrong class was being generated for a method call in generic class causing method not found exceptions at runtime. (@rahulmutt)
  • (#603, #610) Fixed a bug in which let-no-escape bindings were being passed arguments in the wrong order causing unexpected (but exception-free) behavior at runtime. (@jarekratajski)
  • (#609, #622) Accurately track relinking state of java inputs to the compiler. (@jneira)

Runtime

  • Improve performance of eta.runtime.io.MutVar.set() by using lazySet to avoid a volatile write since MutVar provides no concurrency guarantees. (@rahulmutt)
  • (#628) When deferencing an address to a ByteBuffer, return an empty buffer when the input is a null address. (@jneira)

Documentation

  • (#615, #620) Update the etlas init dialogue and fixed the Java code adding an exception throwing signature. (@y-taka-23)