Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It really comes down to the Go and Rust ecosystems being easy to work with. A decade or two ago, writing a native app meant setting up an automake/autoconf Rube Goldberg machine - especially difficult if you needed to build for multiple architectures.

I'd argue Rust and Go are even easier to work with than Python/JS/TS. The package management is better, and static linked native binaries eliminate so many deployment headaches.




cross compiling to Mac from Linux, cross-architecture used to be an impossible bitbake adventure to go on. in go, it's just two env vars!


With a big footnote: Until you need CGO


Having recently done some investigation along the same lines for a side project that I did not continue to work on: is it not just a matter of passing CGO_LDFLAGS=—static and building on musl?


I don't think you can do this when targeting macOS


or FreeBSD


To say what your siblings said, but more generally: basically this only works for Linux. Other OSes generally don't let you do this, you must have some degree of dynamic linking.

Go used to try and let you do it, but has walked back those implementations after all the bugs they've caused, in my understanding.


fair.


As someone educated in the likes of BASIC and Z80, it isn't as if it was really that complicated, versus the willigness to learn.

Sometimes people really need to follow Yoda and Mr Miyagi advices, instead of jumping right into it.


It is complicated, though. Not as complicated as quantum physics, but still far more complicated than it needs to be - especially if you care about multiple architectures and platforms. At one point I was making builds for X86, AMD64 and Itanium on Windows, MacOS, Linux (which itself was subdivided into various distributions with different glibc/openssl/whatever versions). It took more work maintaining the build pipeline than working on features.

Go and Rust prove you can get most of the benefit of C/C++ without paying that complexity cost.


Well, Modula-2 and Object Pascal already proved that quite a time ago, but they didn't come with curly brackets, nor UNIX.


Both can be true. It can be easy to learn and also a complete pain to set up and get right for every new project and menu of architectures you want to support.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: