quickscript 0.5.3

A quick programming language with a compiler implemented in Rust.
docs.rs failed to build quickscript-0.5.3
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: quickscript-0.5.5

qsc: The QuickScript compiler.

build

QuickScript is a language that I am creating to learn how to, well, create a language. The syntax is very similar to Rust, and it is a semicolon-based language, or at least it will be (I think). The compiler is written in Rust, and will translate into Assembly, which will then be compiled with either nasm or GNU as (probably the latter), and then linked with ld (I think I might use mold for it actually) internally. The standard library should hopefully be pretty good, but I haven't gotten around to that yet.

License

This project is licensed under the MIT license. Feel free to use the code for whatever you want.

Usage

Currently you just run cargo run [file], where [file] represents the path to the input file. I know, very complex. For any other options, use --help or -h, as the CLI is built with Clap.

If you want to use the code as a library, feel free, I tried to document most of it. I may have forgotten some though, or I may just stop out of laziness later. :p (I will likely get to documenting it later anyway.)

New Parsing

I'm working on a new parser implementation! To use it, run cargo run -- new-parsing-demo [file].

Support

Currently, here is the support matrix:

Version i686 x86_64 armv7l armhf arm64
0.0.0 🔴 🔴 🔴 🔴 🟢
0.1.0 🔴 🟡 🔴 🔴 🟢
0.3.0 🟢 🟢 🔴 🔴 🟢

Note that armv7l and armhf support is dependent on Cranelift's support for it. See cranelift#1173 for more details.

Musl builds for i686 are also not supported due to a big in cargo zigbuild. See cargo-zigbuild#96 for more details.

Credits

Huge thanks to Pixeled (@orosmatthew) and his Creating a Compiler series, as it helped me think about how to do this best and it gave me the inspiration for this project.

Another huge thanks for the cranelift-jit-demo, as it helped me implement the code generator with Cranelift.