https://github.com/rage/tmc-langs-rust
A library and CLI for supporting different programming languages in the TestMyCode programming assignment evaluator.
https://github.com/rage/tmc-langs-rust
cli rust tmc
Last synced: 5 months ago
JSON representation
A library and CLI for supporting different programming languages in the TestMyCode programming assignment evaluator.
- Host: GitHub
- URL: https://github.com/rage/tmc-langs-rust
- Owner: rage
- License: apache-2.0
- Created: 2020-05-04T13:21:49.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2025-10-29T17:11:49.000Z (8 months ago)
- Last Synced: 2025-10-29T19:16:30.245Z (8 months ago)
- Topics: cli, rust, tmc
- Language: Rust
- Homepage: https://tmc.mooc.fi/
- Size: 956 MB
- Stars: 12
- Watchers: 4
- Forks: 9
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
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
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](./docs) directory.
## Included projects
### tmc-langs-cli
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](https://github.com/rage/tmc-cli-rust).
### tmc-langs
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.
### tmc-client
A library that abstracts over different TMC backends.
### tmc-testmycode-client
A library for communicating with the TestMyCode TMC server.
### tmc-mooc-client
A library for communicating with the mooc.fi TMC server.
### tmc-langs-framework
A library for creating language plugins.
### tmc-langs-plugins
A library that provides a convenient API abstracting over all the different language plugins.
### tmc-langs-util
A utility library that contains various kinds of useful functionality for other projects.
### plugins/csharp
A TMC plugin for C#.
### plugins/java
TMC plugins for Maven and Ant projects.
### plugins/make
A TMC plugin for Make.
### plugins/notests
A TMC plugin for projects with no tests.
### plugins/python3
A TMC plugin for Python 3.
### plugins/r
A TMC plugin for R.
### Supported targets
- 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.
## Contributing
See [CONTRIBUTING](CONTRIBUTING.md).
## License
Licensed under either of
- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.