anyway:
• unloved code is bad
• unloved code in arcane languages is worse
therefore:
• gnu autotools must die
• please stop writing shell scripts
• we need better build systems
@nettles @hikari yeah uh I've been thinking about this a lot lately for reasons that will be obvious if you look at my posting history and
if I wrote down a list of my least favorite five programming languages, four of them would be shell languages and the other one would be Tcl
I'm not sure *anyone* knows how to design a *good* shell language
... but please try! we genuinely do know more about programming language ergonomics today than we did 40 years ago, that's gotta help, right?
@hikari yeah and that’s why cmake and meson exist
cmake is, by all accounts, hell. I’ve used meson a little and it’s pretty nice but also has the Apple problem a little bit (“it just works [but only when you don’t need anything out of it it wasn’t specifically intended for]”)
spawn than shell. Perl and Ruby are closest, but Ruby conventions have moved away from being spawn-friendly, and Perl isn’t much better than shell in terms of maintainability for most people.@hikari “but they have! check out nushell or fish! or that other one!” you want me to learn another language and put it in my repository? making it a build dependency? yeah right
(which is why the best answer so far is “make your package manager do it”, but that’s definitely only an 80/20 solution)
@jrose @hikari you can make shell unusable with the help of protobuf main,
(protobuf shell was supposed to integrate with protobuf main to make it more usable, but we never made a protobuf shell. we did, however, make exactly one executable that uses the protobuf main calling convention over regular linux spawn, because shoving raw binary data into argv was too exciting to pass up!)
well, we never figured out how to shove the schema into the binary... but what's wrong with requiring a schema?
it's more efficient or something.
https://github.com/SoniEx2/protobuf-main
more excitingly, a schema can be translated (e.g. between english and portuguese) without affecting the format.
@jrose @hikari ah, yeah... protobuf is particularly suited to this due to its strong backwards and forwards compatibility design, further we can embed the schema into the binary so you can compare the one in the binary with the one in the protobuf shell script and whatnot. which should help, we think.
protobuf main still allows you to redirect stdin tho. =^-^=
@hikari "not all shell scripts are bad!!11"
... but besides that, I fully agree - and I'll think about shell scripts ^^'
@hikari also .. look at what you did /o\
https://gotosocial-dev.svc.0x0a.network/@littlefox/statuses/01HTR9V6WYC3FTXGPJ0DB25WFF
Hmm ... applying the Golang package system to C and C++ in a build system? Like, you just compile all C and C++ sources in each directory into a static library, which you then link together with whatever depends on them. Each directory has a meta file stating "imports", which are just which ...