An open API service indexing awesome lists of open source software.

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.

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.