Giter Site home page Giter Site logo

mech-lang / mech Goto Github PK

View Code? Open in Web Editor NEW
203.0 5.0 10.0 2.34 MB

🦾 Mech is a programming language for building data-driven systems like robots, games, and interfaces. Start here!

Home Page: http://mech-lang.org

License: Apache License 2.0

Rust 99.24% Dockerfile 0.01% HTML 0.51% RenderScript 0.08% TypeScript 0.16%
ide programming-environment programming-language compiler data-processing reactive-programming live-programming language robotics

mech's Introduction

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

Try Mech online in your browser, or follow our progress on our blog.

Documentation

If this is your first time with Mech, read Learn Mech in Fifteen Minutes.

Documentation is hosted online at mech-lang.org, and is open sourced on GitHub.

Installation

Binary

You can download the latest release for your platform here.

Source

You will need to install Rust on a recent nightly release, and wasm-pack. When those are installed, follow these instructions:

git clone https://gitlab.com/mech-lang/mech
cd mech
wasm-pack build wasm-notebook --target web
cargo build --bin mech --release

Project Roadmap

Mech is undergoing a redesign to incorporate state machines into the language.

This work is happening in the v0.2-beta branch of the repository.

The current target for the release of v0.2 is October 2024.

See ROADMAP.md for more.

License

Apache 2.0

mech's People

Contributors

cmontella avatar djedwards avatar hag223 avatar kkren avatar matthewjgunton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mech's Issues

Variables do not allow underscores in names

Mech Version: 3.0.0
Issue: Variables fail to parse if an underscore is present.

Example:
In the file below, placing an underscore in the variable name will prevent program execution. When viewing the program using mech core no variable defintion is found for an_underscore.

TestBlock
  #NoSpaces = 5
  #an_underscore = 4

display
  #mech/output = #NoSpaces

When no underscore is present, everything works fine.

TestBlock
  #NoSpaces = 5
  #anunderscore = 4

display
  #mech/output = #NoSpaces

I'm not sure if this is intended, but I figured I'd open an issue. An open pull request which handles this issue is seen here: https://github.com/mech-lang/syntax/pull/1

Project status

What is the status of this project? Is it dead like EVE.

Test fails for Ubuntu 18.04 (GLIBC version mismatch)

Cargo builds successfully on Ubuntu 18.04 but mech testing the test dir in the repo, fails. It seems machines/libmech_io.so has a hard dependency on GLIBC. I know 18.04 is outdated but I think this would fail again when GLIBC is bumped in later versions of the distro.

./mech test ../../tests/
[Testing]
[Loading] ../../tests/math.mec
[Downloading] https://gitlab.com/mech-lang/machines/mech/-/raw/v0.1-beta/src/test.mec
[Compiling] Compiled 4 blocks.
[Running]

[Mech Test] [Downloading] Updating machine registry.
*else: Ok(Ready)

[Mech Test] [Downloading] io v0.0.1
thread 'Mech Test' panicked at 'Can't load library "machines/libmech_io.so": DlOpen { desc: "/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29\' not found (required by
machines/libmech_io.so)" }', src/program/src/lib.rs:123:56
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[Error] receiving on an empty and disconnected channel

Linker error when cross-compiling for non-x86_64 architectures

I'm packaging mech-lang for Termux (Android). When I'm cross-compiling for aarch64, arm or i686, I'm getting the following linker error about openssl:

  = note: ld: error: /data/data/com.termux/files/usr/lib/libssl.so is incompatible with elf64-x86-64
          ld: error: /data/data/com.termux/files/usr/lib/libcrypto.so is incompatible with elf64-x86-64
          collect2: error: ld returned 1 exit status      

error: could not compile `mech` due to previous error
Error: Process completed with exit code 101.

Interesting project, btw! Is it similar to ROS in scope and application domain? Is there literature (papers, etc) on this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.