/rustly

A Clojure to Rust transpiler

Primary LanguageClojureEclipse Public License 2.0EPL-2.0

Rustly

A Clojure to Rust transpiler.

orange leaves

Usage

lein run --in <src.clj> --out <out.rs>

Example

Run the example with ./hello_world.sh

This shell script invokes the transpiler with input file example/hello_world/hello-world.clj, produces output file example/hello_world/src/main.rs, invokes cargo run, producing the "Ferris says hello" message:

----------------------------
| Hello world              |
----------------------------
          \
           \
              _~^~^~_
          \) /  o o  \ (/
            '_   -   _'
            / '-----' \

Status

This is a science project. Rustly is alpha and subject to change. Feedback on design and implementation is welcome. Only a subset of Clojure is implemented. The goal is to cover all the good parts.

No packaged builds are provided at this time. To use this transpiler you must download the source code.

See Kalai for a more comprehensive Clojure transpiler.

Rationale

A concise Lisp syntax, backed by Clojure tooling that targets Rust might be a good thing.

Developing

Issues, pull requests, and suggestions are very welcome.

License

Copyright © 2019 Timothy Pratley

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.