Mech is a language for developing data-driven, reactive systems like animations, games, and robots. It makes composing, transforming, and distributing data easy, allowing you to focus on the essential complexity of your problem.

You can try Mech online at try.mech-lang.org.

Usage and installation instructions can be found in the documentation or the main Mech repository.

Read about progress on our blog, follow us on Twitter @MechLang, get live help on our Gitter channel, or join the mailing list.

Welcome

This repository serves as a table of contents for the constellation of tools and utilities that comprise the Mech programming language:

  1. Core - The language runtime. It's a small dataflow engine that accepts transactions of changes, and applies them to a compute network.
  2. Syntax - A compiler for a textual Mech syntax.
  3. Program - Organizes Mech cores into a coordinated program. Handles reading files, interfacing with libraries, and persisting changes top disk.
  4. Server - Provides a server and client for hosting Mech programs and a browser-based editor on a websocket.
  5. Notebook / Mech-wasm - A hosted editor for writing Mech applications.

Documentation

Right now, most Mech features and syntax are undocumented. You can find some minimal documentation here, and also the beginning of a tutorial here.

Documenation and tooling will be a focus of the next release (v0.0.2).

Building from Source

You will need to install Rust and NodeJS before building Mech. When those are installed, follow these instructions:

```bash

git clone https://gitlab.com/mech-lang/mech cd mech git submodule update --init --recursive cd notebook npm install cd.. cargo build --bin mech --release ```

Project Status

Mech is currently in the alpha stage of development. This means that while some features work and are tested, programs are still likely to crash and produce incorrect results. We've implemented some language features, but many are not yet implemented.

Feel free to use the language for your own satisfaction, but please don't use it for anything important.

License

Apache 2.0