rustc_codegen_clr
Rhai
rustc_codegen_clr | Rhai | |
---|---|---|
7 | 27 | |
1,026 | 3,503 | |
- | 2.3% | |
9.7 | 9.6 | |
6 days ago | 13 days ago | |
Rust | Rust | |
MIT License | Apache License 2.0 |
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.
rustc_codegen_clr
-
The search for easier safe systems programming
I don't have something that could be of Crafting Interpreters level on hand, but the general suggestion given to this question on DotNetEvolution discord by Roslyn team members was to start with the spec itself: https://ecma-international.org/publications-and-standards/st...
This might be a bit of a learning curve if you don't have experience with writing compilers like that though.
There are other materials that might prove useful should you go down this path:
- A series of blog posts of a student who is writing a Rust to .NET compiler which you could follow along: https://fractalfir.github.io/generated_html/home.html The project itself: https://github.com/FractalFir/rustc_codegen_clr
- A video series on writing a compiler for .NET from scratch: https://www.youtube.com/watch?v=wgHIkdUQbp0&list=PLRAdsfhKI4... Notes: https://github.com/terrajobst/minsk/tree/master/docs
As for CLR via C#, while it has certain facts that remained the same, the ecosystem has changed a lot since then, you really want to target the latest LTS to get best experience and performance.
p.s.: if it's any consolation, the promise in CLR via C# of JIT having the advantage of dynamically profiling code execution and compiling to profile-guided version, tuned to the exact hardware and environment is finally fulfilled, many years later :)
-
Rust to .NET compiler – Progress update
The author answers the "why" in the FAQ https://github.com/FractalFir/rustc_codegen_clr?tab=readme-o.... I didn't find it very convincing but I'm sure the author will learn a lot of neat things along the way.
- Rust in .NET Projects
- RustPython
-
The Rust compiler backend for .NET can now compile std with (numerous) errors, and supports allocation (Box, Vec, String, etc.)
After adding support for statics and many bug fixes related to pointers/slices, my compiler backend targeting .NET can finally build a barely working version of the standard library. It can be loaded into the .NET runtime, allocate memory (e.g. for a Box, Vec or String), push elements to Vec's and String's (currently without relocations). There are also some other parts of the standard library that already work, but I want to stress that the project is still fairly early into development (I started working on it late August), and you should expect most things in std to not work at all. Things working is the exception, not the rule. This newest set of commits allows you to use a small subset of the standard library, within code running inside the .NET runtime. | Here is some Rust code that I wrote to demo the ability to use the Rust std within the .NET runtime:
-
.NET backend for Rust now compiles 1000 functions within core.
This is a small update about my rustc backend, which is supposed to allow compilation of Rust code into .NET assemblies. This would allow you to use Rust crates in C#, and C# libraries in Rust.
-
Need help modeling some type constraints
I am currently working on a rust codegen targeting .NET. One of the features I currently work on is a .NET interop layer, mycorrhiza, and I am having some trouble modeling certain type constraints. There are 2 ways to store a reference to a GC type in Rust: 1. By a handle - this type has some cost associated with it, but can be stored anywhere (heap, stack). 2. By a raw reference - raw references may only live on the stack. They can be copied, and behave almost exactly like a normal rust type (with exceptions related to transmutes and enums), as long as they are stored on the stack.
Rhai
- RustPython
-
Moonbit: The fast, compact and user friendly language for WebAssembly
For that world there is also Rhai (https://github.com/rhaiscript/rhai), TypeScript, Scheme, etc.
Though Moonbit does look nice too.
- Announcing dwarf!
-
Embeddable Scripting Language for Embedded Rust
As far as I know there exists rhai scripting lang. You can check it out -> https://github.com/rhaiscript/rhai
-
Rhai 1.13.0 released - embedded scripting engine for Rust.
Version 1.13.0 is released to crates.io.
-
What's the best way to make a type optionally Sync/Send?
Check out https://github.com/rhaiscript/rhai/blob/main/src/func/native.rs
- RustPython – A Python-3 (CPython >= 3.11.0) Interpreter written in Rust
- Best language to use as a scripting lang for my rust app
-
[concept] Modular kernel
The OS would be built in Rust and the module system could be made using ELF executibles (fast, but it could be really hard to implement modules to communicate with the kernel), WASM (can compile from many languages, slower but not too slow, APIs can be simple enough to implement if the correct VM is choses) or even a custom scripting language like rhai (slower, but best way for the implementation [way to connect modules and kernel]).
-
Godot game engine now has its own foundation
For sure, that's where something like rhai would shine: https://crates.io/crates/rhai
What are some alternatives?
ffidji - 🐶 FFIDJI is a tool to automatically generate bindings between languages, like calling Rust code from C# for instance.
dyon - A rusty dynamically typed scripting language
pavex - An easy-to-use Rust framework for building robust and performant APIs
rune - Rune is a programming language developed to test ideas for improving security and efficiency.
wrapped_mono - Wrapper around mono library. Allows easy loading and interop between code written for the .NET framework and Rust.
hlua - Rust library to interface with Lua
openEcommerce - .NET 6, ASP.NET Core 6, Entity Framework Core 6, C# 10, Angular 14, CQRS, Clean Architecture,SOLID, DDD.
rune - An embeddable dynamic programming language for Rust.
kalem.rs - Fegeya Kalem.rs, Rust implementation of Kalem, work-in-progress.
RustPython - A Python Interpreter written in Rust
extism - The framework for building with WebAssembly (wasm). Easily load wasm modules, move data, call functions, and build extensible apps.
Ketos - Lisp dialect scripting and extension language for Rust programs