All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Support for building with ghc-8.10
- Support for building with ghc-9.0.1.
- Removed Cabal support in favor of Bazel.
- Support building with jni-0.8
- Fix Tweag logo image in readme
- Added support for ghc-8.10.1 and ghc-8.11 (HEAD)
- Use TH.addCorePlugin instead of -fplugin
- An interface based on linear types (tweag#127)
- An abstract monad to use in the safe interfaces (tweag#128)
- Removed support for ghc < 8.10.1
- Dependency bounds and import declarations to build with ghc 8.4.1.
- Rename all BUILD files to BUILD.bazel.
- Workaround Gradle sometimes trashing output in recent versions.
- Fix check for settings.gradle file in cabal hooks. Prevents the file from growing a few bytes each time a project using gradle hooks is rebuilt.
- Relaxed upper bound of jni to admit jni-0.6.0.
addJarsToClasspath
: a function to add a list of jar paths to the CLASSPATH in cabal hooks.
gradleHooks
now extends the CLASSPATH even if the CLASSPATH is set.- Renamed
setGradleClasspath
toprependClasspathWithGradle
.
- CLASSPATH is now set in Cabal hooks before running haddock.
- A hello-java example project.
- Upper bounds to
jni
andjvm
.
- Normalize type families before inspecting the return type of quasiquotations.
- Plugin option to dump the generated Java to the console or a file.
- Partial support for inner classes. Antiquoted variables and quasiquotation results can refer to inner classes now.
- Use a compiler plugin to build the bytecode table and to generate Java code. We no longer need static pointers to find the bytecode at runtime, and we can check at build-time that values are marshaled between matching types in Java and Haskell when using antiquated variables or the result of quasiquotations. Also, now java quasiquotes work inside Template Haskell brackets ([| ... |]).
- Use only the lexer in
language-java
. This defers most parsing errors to thejavac
compiler which produces better error messages and might support newer syntactic constructs like anonymous functions. - Java checked exceptions are now allowed in java quasiquotes.
- Gradle hooks now produce a correct build-time classpath.
- Exposed loadJavaWrappers.
- Fixed handling of repeated antiquotation variables, which in some cases was causing a compilation error.
- Setting the
CLASSPATH
using Gradle is now fully supported. It was previously unusable due to a bug (see #42).
- Avoid producing warnings about unused inlinejava_bytecode0 bindings.
- Support type synonyms in variable antiquotation.
- Update lower bounds of jni to 0.3 and jvm to 0.2.
- Support passing array objects as arguments / return values.
- More robust mangling of inline class name.
- Can set a custom
CLASSPATH
inSetup.hs
from Gradle build configurations to use when compiling inline expressions. - GHC 8 compatibility
- Support inline expressions that compile to multiple .class files (e.g for anonymous classes and anonymous function literals).
- The return type of inline expressions no longer needs
Reify
/Reflect
instances.
- Fix antiquotation: in [java| $obj.foo() |],
obj
is now recognized as an antiquotation variable. - Passing multiple options to the JVM using
withJVM
.
- First release with support for inline Java expressions.
- Split lower-level and mid-level bindings into separate packages: jni and jvm.