News for hackers. Stuff that matters.
Re:The Windows malloc() implementation from MSVCRT is slow by p_l on Saturday July 02, 2022 @07:58PM (#31963662)
Glibc is major source of "binary from X years ago doesn't work" in my experience, to the point that if I want to run stuff older than let's say 5 years I start by getting a docker container - or a specially taylored set of libs starting with dynamic linker itself. Somehow proprietary OpenGL drivers still worked, it was glibc related files that caused crashes.

Thanks to symbol versioning I never know if a binary will work unless I can dismiss it early by versioning causing it to not link at all.

And given that glibc backward compatibility for all practical purposes is shorter than 10 years, having to support centos can get you a lot of those issues

Re:The Windows malloc() implementation from MSVCRT is slow by mananaysiempre on Saturday July 02, 2022 @08:28PM (#31963849)
> Given that glibc backward compatibility for all practical purposes is shorter than 10 years

As far as I’m able to tell[1], Glibc has never removed a versioned symbol as long as symbol versioning has existed, so the intended backwards compatibility is “forever”. No binary built against a(n unpatched) Glibc should fail to load on a later Glibc due to an absent Glibc symbol version. (Of course, if you play non-version-aware dynamic linker and dlsym() not dlvsym() things in libc, you lose; if you bundle an “updated” part of libc with the application[2], you lose; etc., so this may be true but still not entirely foolproof. And given how many things there are in libc, if you’re going to lose it’s probably going to be there.)

[1] E.g. https://sourceware.org/git/?p=glibc.git;a=history;f=stdlib/V...

[2] https://news.ycombinator.com/item?id=29479903

Re:The Windows malloc() implementation from MSVCRT is slow by benibela on Sunday July 03, 2022 @08:10AM (#31967102)
Glibc 2.34 broke FreePascal. It calls some unversioned symbol for initialization that was removed
Re:The Windows malloc() implementation from MSVCRT is slow by password4321 on Saturday July 02, 2022 @08:40PM (#31963920)
Re:The Windows malloc() implementation from MSVCRT is slow by kelnos on Saturday July 02, 2022 @11:44PM (#31964862)
This is the opposite problem of what's being talked about. Binaries built against old versions of glibc should run just fine against newer versions. This is about a binary built against a newer version of glibc that doesn't run on an older one. This is common, and super annoying. There are ways to build to eliminate this problem, but they all feel like hacks, or involve a lot of extra work.

(Hacks such as https://github.com/wheybags/glibc_version_header -- which apparently does work very well, but still feels like an annoying hoop that should be unnecessary to jump through. I wish glibc's shipped headers actually could support this out of the box so you could set a preprocessor define like `-DGLIBC_TARGET_ABI=2.12` and it would just work.)

Re:The Windows malloc() implementation from MSVCRT is slow by mananaysiempre on Saturday July 02, 2022 @08:51PM (#31963997)
So a vscode thingie uploads a newer binary to an older host, tries to run it there, and fails? Because the people who built said binary did not care to make it backwards compatible (or better yet, statically linked)?

... Duh?

(I’m not an expert in VSCode DRM, to put it mildly, so I might be misinterpreting this discussion, but that’s what it looks like to me. Also, isn’t it referencing GLIBCXX i.e. libstdc++, which not even a part of Glibc?)

Re:The Windows malloc() implementation from MSVCRT is slow by password4321 on Saturday July 02, 2022 @09:30PM (#31964216)
> referencing GLIBCXX i.e. libstdc++, which not even a part of Glibc

You're right, so not an example of a glibc failure, but rather another standard library. Thanks!