I'm a huge fan of languages that require you to explicitly export your functions (e.g. pub in Rust or export in JS).
It's much easier to change than a separate header file (.h in C, .mli in OCaml) and it enables local reasoning. You can see from the definition if it's exported.
miniblog.
Related Posts
Claude asked me a question today: was I looking for an Emacs plugin (because I was talking about elisp) or a Rust program (because I have configured Rust preferences)?
I'm really impressed, it's rare to see LLMs ask follow-up questions.
(I wanted Emacs in this case.)
I see that *up has become an increasingly common name for toolchain installers: rustup, ghcup, even juliaup.
I think Rust was the first to use this terminology? I'm curious how similar the different *up tools are.
I would have thought that invoking a C compiler would be a solved problem. Looking at Rust's cc crate there's a remarkable long tail of corner cases to fix.
Exotic CPUs, microarchitectures, compiler differences, operating system differences, etc.