Here's a subtle thing I like about Rust.

Rustc has what are, in my opinion, best-in-class error messages. Several people have written crates for generating error messages like rustc.

As a result, most Rust tools I'm running into, particularly those that parse a language, have error messages roughly as good as Rustc. Like the (still-experimental) Filament HDL, whose error message are already yards better than Bluespec: https://filamenthdl.com/docs/lang/tutorial.html

I <3 good error messages.

#rust

Your First Filament Program - Filament

@cliffle virtuous feedbacks beget vituous feedbacks. People expect more, so they simultaneously demand and give more. I hope that it continues spreading to more and more places.
@ekuber @cliffle It's so important I use this tweet in academic talks that aren't about Rust at all.
@jedbrown @ekuber @cliffle just like ffmpeg & QEMU are compiler test suites that happen to convert videos or emulate systems.

@mmu_man @jedbrown @ekuber

And FreeCAD is a corefile generator that occasionally renders a model!

...

@jedbrown @ekuber @cliffle

You might be interested to know author P.J. Brown nailed this in his book 'Writing Interactive Interpreters and Compilers' in 1979.

"... the main tasks of the runtime system are (a) to report to the user the errors in his program... (b) to help the user find out what caused each. Occasionally [it] may be called on to perform its secondary function of running a program to completion and producing correct answers!"

@jedbrown @ekuber @cliffle

It's a marvelous book - very chatty, emphasizing BASIC-like languages due to its age, but it contains many important insights beyond this one.

More important it has the enthusiasm for its topic which makes development of a language and compiler seem perfectly manageable and reasonable tasks for a programmer of modest skills. Which they can be, if you aim at reasonable goals.

@jedbrown @ekuber @cliffle that’s the kind of quote that could go into “Systemantics: The Systems Bible” if new editions were still being written

@jedbrown @ekuber supporting this view -- there are several languages where I never figured out how to find the generated code, and _only_ used the error output.

Agda, for instance. Never did figure out how to run an Agda program, but I sure did evaluate some fancy proofs at compile time.

@jedbrown @ekuber @cliffle
can confirm from my diploma thesis work 35 years ago. about 50% of the yacc grammar rules where for error reporting and recovery of the parser (for Modula-2 in C)

@jedbrown @ekuber @cliffle

I'd love to know what article Aria was referring to in that screenshotted tweet. @Gankra ?

@cratermoon @jedbrown @ekuber @cliffle i believe this was an article i was working on but ran out of mental bandwidth to finish -- basically an accelerated tour of the path from "basic panic-based errors" to "going full rustc"