typelead/eta

Support Module System in Java 9+

rahulmutt opened this issue · 1 comments

Java 9+ introduced the module system by specifying module-info.java or module-info.class.

Implementing this requires:

  • Adding support for Module and Package constants in codec-jvm
  • Adding support for Module attribute in codec-jvm
  • Generating module-info.class inside of the compiler and packaging it in the final jar file.
  • Generating jmod files instead of jar files if the target is >= 9 for every Eta module.

The trickiest problem to resolve here is that the module system does not support cyclic dependencies while Eta supports source imports so we need to find a way to encode that somehow.