Skip to content

rage/tmc-langs-rust

Repository files navigation

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 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.

bindings/tmc-langs-node

Bindings for using tmc-langs from Node.js.

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.

License

Licensed under either of

at your option.

About

A library and CLI for supporting different programming languages in the TestMyCode programming assignment evaluator.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published