erizocosmico / tangram

tangram is a general purpose runtime for the Elm language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logo

Build Status Test Coverage Go Report Card

tangram is an effort to bring the Elm language to the backend. It uses Go as the host language, which comes for free with very nice features such as the always-improving garbage collector, static binaries, cross compilation, and a large ecosystem amongst other things.

Goals

  • Be an alternative implementation of the Elm language. The language will always remain exactly the same as Elm. Being the default imports and the libraries in elm-lang/core the only thing that will be different.
  • Ability to reuse all the Elm code in elm-lang/core, elm-lang/html, elm-lang/http and other important libraries.
  • Transparent usage of pure Elm libraries with zero effort.
  • Communication between Elm and Go using ports and Native modules, just like Elm does with JavaScript.

Why?

Elm is a very simple, pragmatic and well-thought language. It's a perfect fit for the frontend, and tangram aims to explore if it will be good on the backend as well.

Roadmap

  • Get rid of some TODOs required for the next steps and implement some missing parser features.
  • Type check
  • Generate Go ASTs from Elm ASTs
  • Go interop and Native modules
  • Native implementations for elm-lang/core
  • Package management
  • Native implementations for elm-lang/html
  • Native implementations for elm-lang/http

Contributing

Right now, contributing can be a bit chaotic. Some parts of the code are a mess and filled with TODOs waiting for a refactor that will come when everything is more or less functional. Nonetheless, if you are interested in contributing to the project you are welcomed to do so!

You can take a look at the roadmap and if there's some part you want to work on just open an issue and you'll be guided through the code and such, if you need it.

License

tangram is licensed under the MIT license, see LICENSE

tangram is not official or related to the elm-lang team in any way.

About

tangram is a general purpose runtime for the Elm language

License:MIT License


Languages

Language:Go 99.3%Language:Elm 0.5%Language:Makefile 0.2%