|
1 |
| -# RuSTy |
2 | 1 |
|
3 |
| -[](https://github.com/PLC-lang/ruSTy/actions) |
4 |
| -[](https://github.com/PLC-lang/rusty/actions/workflows/windows.yml) |
5 |
| -[](https://plc-lang.github.io/rusty) |
6 |
| -[](https://codecov.io/gh/PLC-lang/rusty) |
7 |
| -[](https://plc-lang.github.io/metrics) |
| 2 | +<div align="center"> |
| 3 | +<!-- Eventually(?) we'll have a logo, which we can insert here --> |
| 4 | +<h1>RuSTy</h1> |
| 5 | +<p>A <a href="https://en.wikipedia.org/wiki/Structured_text">structured text</a> compiler written in Rust, utilizing the LLVM framework for native code compilation.</p> |
8 | 6 |
|
9 |
| -[](https://github.com/XAMPPRocky/tokei) |
| 7 | +<a href="https://github.com/PLC-lang/ruSTy/actions/workflows/linux.yml"><img src="https://github.com/PLC-lang/rusty/actions/workflows/linux.yml/badge.svg"/></a> |
| 8 | +<a href="https://github.com/PLC-lang/ruSTy/actions/workflows/windows.yml"><img src="https://github.com/PLC-lang/rusty/actions/workflows/windows.yml/badge.svg"/></a> |
| 9 | +<a href="https://plc-lang.github.io/metrics"><img src="https://github.com/PLC-lang/rusty/actions/workflows/metrics.yml/badge.svg"/></a> |
| 10 | +<a href="https://codecov.io/gh/PLC-lang/rusty"><img src="https://codecov.io/gh/PLC-lang/rusty/branch/master/graph/badge.svg?token=7ZZ5XZYE9V"/></a> |
| 11 | +<a href="https://github.com/XAMPPRocky/tokei"><img src="https://tokei.rs/b1/github/PLC-lang/rusty"/></a> |
10 | 12 |
|
11 |
| -[Structured text](https://en.wikipedia.org/wiki/Structured_text) compiler written in Rust |
| 13 | +<p> |
| 14 | + <a href="https://github.com/PLC-lang/rusty/tree/master/examples">Examples</a> | |
| 15 | + <a href="https://plc-lang.github.io/rusty/">Documentation</a> | |
| 16 | + <a href="https://github.com/PLC-lang/rusty/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">Contributing</a> |
| 17 | +</p> |
12 | 18 |
|
13 |
| -## About RuSTy |
| 19 | +</div> |
14 | 20 |
|
15 |
| -RuSTy is a structured text (ST) compiler written in Rust. RuSTy utilizes the |
16 |
| -LLVM framework to compile eventually to native code. |
17 | 21 |
|
18 |
| -## Getting started |
19 |
| - |
20 |
| -The easiest way to compile this project is to use the provided `Dockerfile`. The project offers a `.devcontainer` when using [VSCode](https://code.visualstudio.com/docs/remote/containers). The Dockerfile offers a linux-image which contains everything you need to run `cargo build` / `cargo test` in the project's root directory. |
21 |
| - |
22 |
| -If you want to build the project without docker, start [here](https://plc-lang.github.io/rusty/build_and_install.html). |
23 |
| - |
24 |
| -### Documentation |
25 |
| - |
26 |
| -The compiler's documentation can be found here: [documentation](https://plc-lang.github.io/rusty/). |
27 |
| - |
28 |
| -### Contributing |
29 |
| - |
30 |
| -If you want to contribute to the project you should look for some [beginner-friendly issues](https://github.com/PLC-lang/rusty/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) and reach out to project's maintainers. |
31 |
| - |
32 |
| -## Why RuSTy |
| 22 | +## Why RuSTy? |
33 | 23 |
|
34 | 24 | Structured Text is a popular language in the domain of automation. A standardized specification of the language ([IEC 61131](https://en.wikipedia.org/wiki/IEC_61131)) was published in the 90s. It was updated several times in the meantime, while its initial spirit - being built for cyclic, robust and deterministic automation applications - still applies.
|
35 | 25 |
|
36 | 26 | Several automation platform suppliers built proprietary compilers and runtime libraries, native to the vendor's hard- and software platform.
|
37 | 27 |
|
38 |
| -RuSTy is aiming towards a _fast_, _modern_ and _open-source_ industry-grade ST compiler for a wide range of platforms, sticking close to the standard. |
| 28 | +RuSTy is aiming towards a **fast**, **modern** and **open-source** industry-grade ST compiler for a wide range of platforms, sticking close to the standard. |
39 | 29 |
|
40 |
| -## Dependencies |
| 30 | +## Getting started |
| 31 | + |
| 32 | +The easiest way to compile this project is to use the provided `Dockerfile`. The project offers a `.devcontainer` when using [VSCode](https://code.visualstudio.com/docs/remote/containers). The Dockerfile offers a linux-image which contains everything you need to run `cargo build` / `cargo test` in the project's root directory. |
41 | 33 |
|
42 |
| -We use the [_logos_](https://crates.io/crates/logos/) |
43 |
| -crate library to perform lexical analysis before a handwritten recursive decent parser creates the AST. |
44 |
| -Generating LLVM IR is accomplished with the help of [_inkwell_](https://github.com/TheDan64/inkwell), a Rust-wrapper around the native LLVM C-API. |
| 34 | +If you want to build the project without docker, start [here](https://plc-lang.github.io/rusty/build_and_install.html). |
0 commit comments