So to jump on my soapbox about this whole #xz thing: it has become my personal mission at work to say that bash is not good enough, after being seriously burned by it in production.

Now, I am fully on-board the bandwagon of writing my release "scripts" in #Rust. To be specific, I am hoping that I eventually get to the point where I have built a tool where I can do the entire release process end-to-end with very strong types. Does this fix the problem with #xz? No! But I can see many ways it reduces the scope.

The only other language I'd be interested in using if I wasn't doing this in Rust? #miniKanren, hands down. But that's not feasible today without a lot of bootstrapping, and Rust gives me a lot out of the gate even if I have to solve the deployment problem before I can deploy the tool that I want to use to solve the deployment problem. Fortunately, this is well-trod ground.

https://hackers.town/@zwol/112199061250713761

Zack Weinberg (@[email protected])

Suppose that's not good enough. Bourne shell is still a shitty programming language, and in particular it is really dang hard to read, especially if you're worried about malicious insiders. Which we are. Now we have another problem. The #1 selling point for autotools vs all other build orchestrators is "no build dependencies if you're working from tarballs," and the only reason that works is you can count on /bin/sh to exist on anything that purports to be Unix. If we want to stop using /bin/sh, we're going to have to make people install something else first, and that something else needs to be a small and stable Twinkie. Python need not apply (sorry, Meson). What's small and stable enough? Lua is already too large, and at the same time, too limited. There's one language that's famous for being tiny, flexible, and pleasantly readable once you wrap your head around it: Forth. If I had investments to live off, I would be sorely tempted to take the next year or so and write my own Forth that was also a shell language and a build orchestrator, and then have a look at rewriting Autoconf in *that.* This is the castle in the air.

hackers.town
@thatgeoguy
Good idea. Going to start doing my build scripts with Haskell. At work we already use it for things ranging from utility scripts to production web services and anything in-between.

@dino Haskell would be a good pick for me too, but I think given the process and IO heavy workloads that result from build scripts and CI commands that I would probably struggle to reel in most of the complexity with Haskell.

Rust is a better balance on that front for me, but I know some of the more modern Haskell libraries would probably blow my socks off if I was only more familiar with them.