alumina
gluon
alumina | gluon | |
---|---|---|
10 | 14 | |
158 | 3,135 | |
3.2% | 0.9% | |
4.6 | 7.6 | |
13 days ago | 3 months ago | |
Rust | Rust | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
alumina
-
Ask HN: LLVM vs. C
You can go surprisingly far with C, though LLVM is probably a better long-term option for a serious compiler, because it's a tool made for the job (unless you target exotic and/or embedded platforms that don't have LLVM support - but that's fairly unlikely).
C is very easy to get started with if you don't already know LLVM. The downside is that once your compiler is reasonably complete, you may spend quite a bit of time working around quirks of C (e.g. int promotion is very annoying when you already have full type information, so your compiler either has to understand C semantics fairly well or defensively cast every subexpression).
I have a C backend in my compiler (https://github.com/alumina-lang/alumina) and it works really well, though the generated C is really ugly and assembly-like. With #line directives, you can also get source-level debugging (gdb/lldb) that just works out of the box.
There are a few goodies that LLVM gives you that you don't get with C, like coverage (https://clang.llvm.org/docs/SourceBasedCodeCoverage.html). It works when done through clang, but easily be made to track the original sources.
- Alumina Programming Language
-
Show HN: Alumina Programming Language
Totally agreed about FFI. I wanted to make it easy to interop with C code and write expressive bindings.
Check for example the language bindings to LLVM's C API (fairly low level) and Tree-Sitter which is used internally (a bit higher level bindings)
https://github.com/tibordp/alumina/tree/master/libraries/llv...
https://github.com/tibordp/alumina/blob/master/libraries/tre...
-
Alumina programming language
However, I am not super happy with the current structure of the compiler and for the self-hosted one I'd like to fix those mistakes. For example, mono.rs is a giant module that does everything from mixin expansion, lowering from AST to IR, type checking and monomorphization. There are some bugs in Alumina that are quite hard to fix without a big refactoring (e.g. if a nested function binds generic parameters of the parent) and I'd like to get it right the next time around.
gluon
- Gluon is a static, type inferred and embeddabble language written in Rust
-
Embeddable Scripting Language for Embedded Rust
A colleague of mine used https://github.com/gluon-lang/gluon with great success in our rust projects. Although it probably can't run in a no_std environment.
-
loxcraft: a compiler, language server, and online playground for the Lox programming language
Aside from these, if you want some inspiration for a production-grade language built in Rust, you might want to go through the source code of Starlark and Gluon.
-
Modules and Imports
Some languages, like Zig and Gluon have an import expression, where the imported symbols are under a local constant's name. Gluon then also supports destructuring, and Zig has had multiple proposals for years about it, none of which are canon. That is, code like this:
- Gluon: A New Node.js Framework to Create Desktop Apps
- Rock v0.2.1, a little native toy language I've made with Rust and LLVM.
- Gluon: A static, type inferred and embeddable language written in Rust
-
Fornjot – The world needs another CAD program
This should be a good use-case for rust-based scripting languages, I think.
I loosely followed a project of that kind a while ago, I don't quite remember if it was Gluon [0] or Dyon [1]. Not sure if these are still active, or if another competitor showed up in meantime.
___
[0] https://github.com/gluon-lang/gluon
[1] https://github.com/PistonDevelopers/dyon
-
Dynamic language extensions for Rust?
Or if you wanted something more Rust-native, you could try Gluon.
-
Which scripting languages work well embedded with Rust?
Gluon
What are some alternatives?
bitloops-language - Open-source transpiled programming language that helps you write clean code, well-designed systems, and build high-quality software that is testable, auditable and maintainable. Like what you see? Don't forget to star! :star: ^^^
toolkit-rust
llvm-cbe - resurrected LLVM "C Backend", with improvements
Rhai - Rhai - An embedded scripting language for Rust.
tree-sitter-visitor - Procedural macro for generating a visitor trait for Tree Sitter Rust bindings
protect-endpoints - Authorization extension for popular web-frameworks to protect your endpoints
duckscript - Simple, extendable and embeddable scripting language.
mun - Source code for the Mun language and runtime.
rune - An embeddable dynamic programming language for Rust.
pen - The parallel, concurrent, and functional programming language for scalable software development
hlua - Rust library to interface with Lua
dyon - A rusty dynamically typed scripting language