Framework for supporting different programming languages in TMC.
TMC-langs provides an interface that encapsulates everything needed to support a new language in TMC by providing functionality such as downloading exercises, running tests and submitting them. A CLI wrapper is provided so that it's fairly convenient to call from other languages like Ruby.
Documentation for the latest release is available at https://rage.github.io/tmc-langs-rust. Documentation is automatically built and deployed when creating a GitHub release.
Additional documentation for other aspects of TMC such as configuration file formats is included in the docs directory.
A "frontend" for tmc-langs. A binary CLI client for TMC-langs for IDEs. Intended to be used programmatically, for a CLI meant for manual use see tmc-cli-rust.
Bindings for using tmc-langs from Node.js.
The "backend". A library that provides a convenient API for implementing different frontends. A frontend (such as a CLI) should only depend on this library. The other libraries are considered internal.
A library that abstracts over different TMC backends.
A library for communicating with the TestMyCode TMC server.
A library for communicating with the mooc.fi TMC server.
A library for creating language plugins.
A library that provides a convenient API abstracting over all the different language plugins.
A utility library that contains various kinds of useful functionality for other projects.
A TMC plugin for C#.
TMC plugins for Maven and Ant projects.
A TMC plugin for Make.
A TMC plugin for projects with no tests.
A TMC plugin for Python 3.
A TMC plugin for R.
- Linux 64-bit (x86_64-unknown-linux-gnu)
- Linux 32-bit (i686-unknown-linux-gnu)
- Windows MSVC 64-bit (x86_64-pc-windows-msvc)
- Windows MSVC 32-bit (i686-pc-windows-msvc)
- MacOS x86 (x86_64-apple-darwin)
- MacOS M1 (aarch64-apple-darwin)
- ARM64 (aarch64-unknown-linux-gnu)
- Armv7 (armv7-unknown-linux-gnueabihf)
A musl (x86_64-unknown-linux-musl) build is also available, but it does not support Java exercises. This is because the Java support relies on dynamically linking libjvm, which is not supported by the musl build.
See CONTRIBUTING.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.