Relax: JIT compiler for Rust to reduce build times (makepad.github.io)
_cart 3 hours ago
392 an hour ago
https://github.com/haydenflinner/rust/blob/main/PLIRON.md
iteration-focus is slightly there, i.e. fast hotpatching. But been focused on beating LLVM's compiled runtime performance as of late.
anonymous908213 10 minutes ago
faresahmed 5 hours ago
Perhaps the earliest and best attempt was Lisp's computational model. Since then, the idea manifested itself again[1], again[2], and again[3] in different forms.
[1]: Inventing on Principle, Bret Victor: https://www.youtube.com/watch?v=PUv66718DII
[2]: REPL-Driven Development, Stuart Halloway: https://vimeo.com/223309989
[3]: LIVE, Live Programming workshop: https://liveprog.org/
Capricorn2481 5 hours ago
faresahmed 5 hours ago
If we stopped treating the compiler as a one-shot program, we could theoretically shorten this edit-build-test loop by 99%.
LoganDark 5 hours ago
wahern 4 hours ago
Ar-Curunir 2 hours ago
christophilus 5 hours ago
pcwalton 4 hours ago
rikarendsmp 2 hours ago
nu11ptr 3 hours ago
The answer: dependencies (My compiler has virtually none, intentionally)
Rust has a very small stdlib, so you are forced to bring in dependency crates, and not just a few. Many programs have 50-100 or more, and they all have dependencies, and so on. Contrast with Go where it has a culture of few dependencies, and those project have few dependencies. Your Rust compiler is doing a lot more work for what appears to be the same program as in other langs, but ultimately is a lot more code (typically).
To make matters worse, cargo does a decent job of parallelizing the builds, but it can only do so a) at the crate level b) only as much as the dependency graph allows.
Twirrim 15 minutes ago
I don't write much Go but it seems like it has a good balance when I do.
It may be a bad example, but even in rust generating a random number involves pulling in 6ish crates
└── rand v0.10.3
├── chacha20 v0.10.2
│ ├── cfg-if v1.0.5
│ └── rand_core v0.10.1
├── getrandom v0.4.3
│ ├── cfg-if v1.0.5
│ ├── libc v0.2.191
│ └── rand_core v0.10.1
└── rand_core v0.10.1treyd 2 hours ago
The majority of time is spent between the trait solver and LLVM optimization passes. There is work being done to improve the trait solver and to produce more efficient LLIR code from the get-go (so LLVM has less to optimize).
pjmlp 3 hours ago
It is a matter of priorities.
pjmlp 3 hours ago
Besides your examples, Eiffel, Oberon, Java, .NET, C++ (yep even for it), Cedar, Standard ML, OCaml, Haskell, Prolog, BASIC, Forth
jkelleyrtp 4 hours ago
Can build and iterate on Rust in the browser!
cedws an hour ago
evulhotdog 16 minutes ago
Sytten 5 hours ago
n_u 5 hours ago
jtwaleson 5 hours ago
TheMrZZ 3 hours ago
aabhay 5 minutes ago
scottmas 4 hours ago
rikarendsmp 2 hours ago
jonstewart 5 hours ago
ricardobeat 3 hours ago
It's great to have zero deps, but that's a lot of code to maintain.
rikarendsmp 2 hours ago
kennykartman a day ago
rikarendsmp 2 hours ago
ridiculous_fish 4 hours ago
pcwalton 4 hours ago
JITting Rust isn't conceptually very hard: you just take rustc and make everything dynamic instead of static. The only thing that was stopping it before was the sheer amount of effort. Well, now we have a way to reduce that effort.
rikarendsmp 2 hours ago
tontinton 5 hours ago
Just tell Opus 5.5 to "redesign the UI to not look like AI slop, design it like a human expert designer would" at bare minimum.
poly2it 4 hours ago
hn_submit 3 hours ago
rikarendsmp 2 hours ago
baq 4 hours ago
Surac 5 hours ago
jtwaleson 5 hours ago
andix 4 hours ago
In runtimes that provide quick dev loops some developers have continiously running unit testing sessions. They just fire off every few seconds and give intimidate feedback.
rikarendsmp 2 hours ago