Compiler for the B Programming Language(github.com)
github.com
Compiler for the B Programming Language
https://github.com/tsoding/b
24 comments
Interesting that this is in a self-developed subset/dialect of Rust called Crust which attempts to treat it as a better C, using unsafe everywhere among other things.
That's a little bit interesting. It remains then a C-like language with generics, and that sounds a lot more fun than regular C. I don't yet understand the point of avoiding references or libstd, though.
I don't know why you'd see that as desirable and not use Zig. Unsafe Rust is actually harder to get right than C or Zig.
This is mainly for fun, really.
Tsoding's main lesson is how simple systems can be and the desire and demand for complex build systems is silly.
Tsoding's main lesson is how simple systems can be and the desire and demand for complex build systems is silly.
> the desire and demand for complex build systems is silly
No it isn't. "Simple" build systems like Make don't solve many of the problems that "complex" build systems like Bazel do.
At my current company I tried to convince my boss at the start of our project to use Bazel (it's very difficult to change build systems once your project is big), because I knew from experience it would solve many problems we would eventually run into.
He wouldn't let me and wanted to keep things "simple". Guess what happened? Now we have to run dozens of hours of CI just to fix a typo in a comment. CI regularly breaks because people forget dependencies. Etc.
No it isn't. "Simple" build systems like Make don't solve many of the problems that "complex" build systems like Bazel do.
At my current company I tried to convince my boss at the start of our project to use Bazel (it's very difficult to change build systems once your project is big), because I knew from experience it would solve many problems we would eventually run into.
He wouldn't let me and wanted to keep things "simple". Guess what happened? Now we have to run dozens of hours of CI just to fix a typo in a comment. CI regularly breaks because people forget dependencies. Etc.
Make is definitely not a simple system. In tsodings latest stream about this project he actually implemented a small build/test runner system for it that is really simple.
But actually I would disagree with the commenter you replied to. I think the main goal of this project seems to just be doing it for fun.
But actually I would disagree with the commenter you replied to. I think the main goal of this project seems to just be doing it for fun.
I would argue that the baseline for a "simple build system" is DJB Redo.
A pretty recent work: https://github.com/sergev/BCause .
Nice, but it really needs to be written in B and self-hosted.
Always nice to see more B. Here's mine: https://github.com/aap/b
Had a go at this a while back: https://github.com/elvircrn/bcomp.
Hate to see Tsoding was using Rust for this. Rust is as far removed from recreational programming than any other language.
It's not rust. It's crust. https://github.com/tsoding/crust
"The Rules of Crust
Every function is unsafe. No references, only pointers. No cargo, build with rustc directly. No std, but libc is allowed. Only Edition 2021. All user structs and enums #[derive(Clone, Copy)]. Everything is pub by default."
"The Rules of Crust
Every function is unsafe. No references, only pointers. No cargo, build with rustc directly. No std, but libc is allowed. Only Edition 2021. All user structs and enums #[derive(Clone, Copy)]. Everything is pub by default."
Why? It's a great language. Very productive. Ideal for compilers too.
Is this satire or did you actually watch the streams?
He doesn't actually use rust "idiomatically". He calls this "crust":
1. Every function is unsafe
2. No references, only pointers
3. No cargo, just rustc
4. No std, only libc
...
I don't know if he is sticking to these rules throughout but that was the idea in the beginning of this project.
https://github.com/tsoding/Crust
He doesn't actually use rust "idiomatically". He calls this "crust":
1. Every function is unsafe
2. No references, only pointers
3. No cargo, just rustc
4. No std, only libc
...
I don't know if he is sticking to these rules throughout but that was the idea in the beginning of this project.
https://github.com/tsoding/Crust
https://github.com/tsoding/b/blob/main/src/codegen/uxn.rs
https://wiki.xxiivv.com/site/uxn.html