Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for additional languages #39

Open
alexstaeding opened this issue Dec 14, 2021 · 0 comments
Open

Add support for additional languages #39

alexstaeding opened this issue Dec 14, 2021 · 0 comments
Labels
feature request size:XL At least one month
Milestone

Comments

@alexstaeding
Copy link
Member

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

  1. To continue using JUnit as the primary testing environment, using methods in JUnit tests that invoke the foreign code
  2. 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
@alexstaeding alexstaeding added the semver:minor A minor change that adds features in a backwards compatible way label Dec 14, 2021
@alexstaeding alexstaeding added this to the v0.5 milestone Dec 14, 2021
@alexstaeding alexstaeding modified the milestones: v0.5, v0.6 Jun 1, 2022
@alexstaeding alexstaeding modified the milestones: v0.6, v0.7 Sep 23, 2022
@alexstaeding alexstaeding added feature request size:XL At least one month and removed semver:minor A minor change that adds features in a backwards compatible way labels Oct 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request size:XL At least one month
Projects
Status: In Progress: v0.7
Development

No branches or pull requests

1 participant