You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Jagr currently only supports Java submissions. To support additional languages, both support for the compiler and the runtime interface between JUnit and the language must be implemented.
Compiler
Jagr's Java compiler interface is located in the compiler.java package, with some language-independent functionality located in the base compiler package. Supporting a language like Kotlin shouldn't require too many changes other than adding support for it in a compiler.kotlin package.
However, support for languages like Racket or Python will most likely be more challenging. If a language does not have a java-based compiler, it will probably need to be bundled as a native executable in the jar. This poses additional problems for multi-platform execution. For this reason, it is likely that some additional language support has to be provided external to Jagr; through a plugin for example. A compiler abstraction in the launcher or a new plugin module would be necessary.
Testing-Language interop
Currently, all testing is done through JUnit. To support other languages, a form of interoperability is required to call the foreign code from Java. The two options here are
To continue using JUnit as the primary testing environment, using methods in JUnit tests that invoke the foreign code
Add a Grader that runs a foreign testing environment and sets points based on the results.
Deliverables
[] Add compiler abstraction (in API)
[] Add support for Kotlin compilation
[] Consider possible interoperability for JVM-foreign languages such as Racket and Python
The text was updated successfully, but these errors were encountered:
Jagr currently only supports Java submissions. To support additional languages, both support for the compiler and the runtime interface between JUnit and the language must be implemented.
Compiler
Jagr's Java compiler interface is located in the
compiler.java
package, with some language-independent functionality located in the basecompiler
package. Supporting a language like Kotlin shouldn't require too many changes other than adding support for it in acompiler.kotlin
package.However, support for languages like Racket or Python will most likely be more challenging. If a language does not have a java-based compiler, it will probably need to be bundled as a native executable in the jar. This poses additional problems for multi-platform execution. For this reason, it is likely that some additional language support has to be provided external to Jagr; through a plugin for example. A compiler abstraction in the launcher or a new plugin module would be necessary.
Testing-Language interop
Currently, all testing is done through JUnit. To support other languages, a form of interoperability is required to call the foreign code from Java. The two options here are
Grader
that runs a foreign testing environment and sets points based on the results.Deliverables
The text was updated successfully, but these errors were encountered: