news
Programming Leftovers
-
Bozhidar Batsov ☛ neorepl: A Terminal REPL for Clojure (and Friends) | Meta Redux
For more than a decade the Clojure REPL most people saw in a terminal was REPLy, the one behind lein repl. It served us well, but it’s showing its age, and I kept wishing for a terminal REPL that felt like CIDER, without the Emacs part. So I finally built one. neorepl 0.1 is out today!
-
University of Toronto ☛ Compiler bootstrapping depends on more than you might think
Like many languages and their toolchains, the Go compiler toolchain is written in Go. This presents a little bit of a problem if you want to wind up with a Go compiler without having to trust someone else's pre-built binary of it. Fortunately, the early versions of the Go toolchain were written in C, which (in theory) allows us to bootstrap a current binary of the Go compiler starting from the last version written in C. The Installing Go from source documentation has a list of what versions of Go can be built with what (which gets increasingly fine-grained with recent Go releases).
-
Bµg ☛ Float and integer arithmetic follow two different paradigms
When working with floats, we tend to reuse the more familiar integer arithmetic patterns. More specifically, we always try to prevent a disaster rather than reacting to it. I keep noticing this pattern over and over again, and seeing that LLMs still get it wrong most of the time means that, either I am wrong, or everyone else is; it's obviously the latter, and I'm going to explain why.
-
Steinar H Gunderson ☛ Steinar H. Gunderson: Decompilation patterns, part 7: if to condition
A variation of the pattern from yesterday; say you have: [...]
-
Python
-
Ubuntu Handbook ☛ Python 3.15 Released with UTF-8 as Default & Lazy Import
Python, the popular general purpose programming language, released new major 3.15 version yesterday. The new version is the result of 17 months of development, that features many new typing features, interpreter, standard, and C API library improvements. Python 3.15 introduced new typing features.
-
-
Rust
-
Niko Matsakis: Why 'externalized' proofs of cyclic trait impls does not work
For this post, I wanted to talk about two different approaches to handling supertraits. I’m calling them modular proofs vs external proofs. The key idea of this post is that, if we want to have cyclic trait impls, we really need to use a modular proof strategy, where the impl establishes all supertraits hold. Previously we had considered an external strategy, where the piece of code using the impl has the obligation to prove the supertraits hold. Modular proofs always seemed better but I did not think they were workable in the past. But I have become convinced that external proofs are incompatible with Rust as designed, and hence modular proofs are really the only option1. This post dives into that reasoning, and also gives a bit of explanation of what I mean by proofs in the first place.
-