giving me a static binary i don't need to worry about is the only thing i, an amateur who doesn't write programs, like about Go
-
-
Replying to @atomicthumbs @AmyZenunim
Static binaries are great for toy projects or for companies like Google who recompile and redeploy everything constantly. For everyone else, they are a huge security liability as dependencies get linked in and never updated. Patching a dependency means updating *all* dependents.
3 replies 1 retweet 26 likes -
you also can't statically link the entire world. eventually you must be dynamically linking, in a sense, to the OS kernel's syscall interface now, on Linux you have Linus who promises to keep that extremely stable, so it works however… Windows and macOS are not Linux.
1 reply 0 retweets 9 likes -
Replying to @hikari_no_yume @marcan42 and
a reasonable individual would conclude, okay, we'll make an exception to dynamically linking just for these OSes, and link to the OS's userland dynamic library that handles kernel stuff and which does have a stable interface however that reasonable individual is not the Go devs
1 reply 0 retweets 8 likes -
Go tried to hardcode syscalls on macOS anyway. Then they broke the gettimeofday interface and all Go apps exploded. The other issue is that Go's C FFI is slow (and buggy and convoluted), and they have to use it for syscalls on those platforms, with worse results.
1 reply 0 retweets 11 likes -
Replying to @marcan42 @hikari_no_yume and
So Go *does* dynamically link with C libs in the end on those platforms, but that entire feature sucks.
1 reply 0 retweets 7 likes -
aaaahahaha
1 reply 0 retweets 0 likes -
Replying to @hikari_no_yume @marcan42 and
I also wonder how they handle like, 3D graphics. I guess it's not something people use Go for, but if they want to, sorry… you need dynamic linking. You can't statically link the graphics driver, unless perhaps you really love Mesa
1 reply 0 retweets 2 likes -
I mean, they do claim to support dynamic linking C libs. People use it. I've used it. It sucks.
1 reply 0 retweets 5 likes -
Replying to @marcan42 @hikari_no_yume and
The first time I tried using Go I ran into a FFI bug which took 2 days to find and fix (after the Go devs had been unable to figure it out for months) and then a month of bureaucracy to get merged. I didn't write any more Go after that (and after seeing the guts of the runtime).
1 reply 0 retweets 5 likes
Then I still had to find and debug *another* Go runtime bug after unfortunately running into random segfaults in a piece of software I used that was written in go. The root cause turned out to be Go devs knowingly making invalid ABI assumptions **to avoid using their slow FFI**.
-
-
Replying to @marcan42 @hikari_no_yume and
Because on Linux... surprise! gettimeofday is not a syscall if you want to be fast, it's a call into vDSO, which is just a C ABI call into a special dynamic library that the kernel stuffs into your address space... But actually using Go's C FFI for that would kill the perf.
1 reply 0 retweets 5 likes -
Replying to @marcan42 @hikari_no_yume and
As it turns out, calling C functions with the Go ABI is a stupid idea. Who knew. Well, the Go devs knew, there was even a comment. They still did it. That was another day spent debugging Go.https://marcan.st/2017/12/debugging-an-evil-go-runtime-bug/ …
2 replies 6 retweets 15 likes - Show replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.