ariadne
inkwell
Our great sponsors
ariadne | inkwell | |
---|---|---|
18 | 16 | |
1,552 | 2,129 | |
- | - | |
6.4 | 8.3 | |
9 days ago | 5 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.
ariadne
-
What languages have the best error message rendering styles in the terminal?
To complement, Nushell's error rendering is done with miette (whose name is a reference to this cute meme AFAIK). There is also another notable Rust error rendering lib: ariadne. So you can get the same beautiful error rendering in your own projects :D
-
Looking for error reporting package for compilers
Hey gophers, I'm looking for something like this https://github.com/zesterer/ariadne for my compiler project, can u suggest any pkgs?
-
Is there any go library to print compiler errors?
I'm looking for something similar to this rust crate https://github.com/zesterer/ariadne, but I can't find anything. I'm just starting to play with go and I really don't know where to look.
-
COBOL deserves modern, easy to read error messages as well! | Otterkit COBOL
Because of that, we made a new modern error message system for Otterkit, which should still display useful information to experienced developers, while also being easy to read and understand for new developers. This new format was inspired by Rust's error messages, and both the Errata NuGet package and Ariadne Rust crate.
- Is there a tool to emulate rust compiler error stlye code explanations?
- Why does Rust have parameters on impl?
-
Tools for creating a programming language in rust
i really like chumsky for parsing (and it works very well with it's sister crate ariadne)
-
Small changes you can make in a rust codebase that have a significant impact
I've also been looking into https://github.com/zesterer/ariadne as I'm building a static compiler using Jinja and want to return nicer messages when there is a parsing issue.
-
Hey Rustaceans! Got a question? Ask here! (29/2022)!
If you’d like to see some examples of great error messages written by a language with a parser combinator, I recommend you check out tao, which is parsed via chumsky, and provides rust-like error messages with the help of ariadne! I have been fiddling with writing my own language for a while now, and after trying out the alternatives, I found Chumsky to be great to work with, and can not recommend it enough. There are also great examples that you can find in the repo as well!
-
When is necessary to preserve whitespaces/comments directly in a concrete syntax tree?
The major thing I'm going to do is support nicer error messages like in https://github.com/zesterer/ariadne. Then add support for language server (LSP) and shoe them interactively on editors.
inkwell
-
Compiler Optimization Learning Suggestions
Secondly, I have learned about LLVM, and I have learned about the Inkwell library on Rust (It's a New Kind of Wrapper for Exposing LLVM (Safely)). Has anyone used this library before? Is this a good practice? Is it suitable for my compiler? Can I write some optimization passes of my own using this library?
-
Finding LLVM location for use with the inkwell Rust crate
I am trying to use the inkwell Rust crate for working with LLVM. In Cargo.toml, I have specified the LLVM version using features = ["llvm15-0"]
-
How Rust transforms into Machine Code.
inkwell is a great llvm binding for rust and it has an implementation of kaleidoscope
- Inkwell – New Kind of Wrapper for Exposing LLVM in Rust
-
Need help improving API for crate relying on Inkwell (Self-referential struct alternative)
I'm working on a compiler that uses the LLVM wrapper Inkwell for compilation. In order to compile something in inkwell, unless I'm missing something (which I very well might be), you need two structs:
-
Tools for creating a programming language in rust
Compiler backends (If building JIT/machine compiled langauges) 1. cranelift 2. inkwell - safe rust wrapper around llvm
-
How do I instrument LLVM IR for a Rust program?
Haha small world. I think we go to the same university and I took the same or similar course a few years ago. If somebody hasn't done the work for you, you may have to do some instrumentation yourself depending on what you want to track IMO https://github.com/TheDan64/inkwell is the best LLVM wrapper for Rustland (Python's llvmlite is a bit easier to use though)
-
How good is LLVM in other languages other than C++? (In my case I'm interested in using Rust)
I'm currently using the Inkwell bindings for Rust, which I've found actually pretty nice. In terms of generating LLVM IR, the C bindings (which is what Inkwell uses internally) can do anything you want them to (definitely not limited to trivial languages as someone else here said.) I'm even using the LLVM garbage collection infrastructure, with no problems (well, no problems in generating it; the LLVM GC infrastructure works pretty well but is sparsely documented, so actually writing a GC is fairly difficult, but it's doable). The C bindings are actually more stable than the C++ bindings (!), although not quite as stable as the textual IR format; but without the bindings you would have to write code to generate the IR yourself, the compiler would be slower as it must be emitted as text and then reparsed in a different process, and you would have less control over optimization.
-
Are there any repos of tutorials on writing a compiler in Rust?
safe llvm bindings https://github.com/TheDan64/inkwell
-
LLVM Infrastructure and Rust
As we reviewed in this article LLVM IR has many use-cases and allows us to analyze and optimize source code through its passes. Knowing IR language itself will help us to write our passes and build projects around it for debugging, testing, optimizing. Currently, LLVM IR doesn't have Rust API. It's mainly used through the C++ library. However, some user-created repos are available on crates.io. There is a Rust binding to LLVM's C API - llvm-sys and two other, more Rusty APIs that are using LLVM: inkwell and llvm-ir. And finally, if you want to learn how to write a LLVM pass you should start here.
What are some alternatives?
strawberry - A GraphQL library for Python that leverages type annotations 🍓
llvm-sys.rs
redis-rs - Redis library for rust
rust-langdev - Language development libraries for Rust
chumsky - Write expressive, high-performance parsers with ease.
llvm-ir - LLVM IR in natural Rust data structures
lalrpop - LR(1) parser generator for Rust
langs-in-rust - A list of programming languages implemented in Rust, for inspiration.
statix - lints and suggestions for the nix programming language
starlark-rust - A Rust implementation of the Starlark language
progge.rs - Program analysis playground for a simple, imperative language
not-yet-awesome-rust - A curated list of Rust code and resources that do NOT exist yet, but would be beneficial to the Rust community.