In case anyone's wondering, this has come up again because, if all goes well, #musl is finally going to be getting first-class IDN support! 🥳
Sadly, it looks like no one was able to solve the issues around creating a Node.js binary for Musl on arm64, so it looks like Kitten¹ won’t be available on @postmarketOS on mobile phones, etc., in the foreseeable future (unless someone with the necessary knowledge and time can step up right away before this commit is reverted).
Good news reported on #musl mailing list: Linux time namespace behavior is now fixed! https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b5f9dad32ed19e8db3b0f10a84aa824a219803b
OK, back to some #musl stuff: it's always interesting to me how some folks' reaction to it revealing a bug in calling code has been "can you make it stop doing that?" rather than being thankful and fixing the bug in the calling code. 🙃
Wonder if anyone has any ideas why the new Alpine Linux musl/ARM64 Node.js build is failing and/or can help fix it.
If we can get this fixed soon-ish (before it’s reverted) it’ll mean – among other things – that Node.js will run on @postmarketOS on phones and other mobile devices.
#NodeJS #postmarketOS #musl #alpineLinux #arm #arm64 #helpWanted
With pending bugs/patches mostly done (push coming soon), working up slowly towards a #musl 1.2.4 release now! Gigantic WHATSNEW summary in draft.
If you're using #docker images for #testssl.sh you should do a "git pull".
#musl libc seems to have performance problems wrt #glibc .
Thanks to polarathene (https://github.com/drwetter/testssl.sh/issues/2299)
Anyone know anyone on the NodeJS team that might have time to merge this pull request?
Imagine Node.js running on a @PINE64 PineBook or PineBook Pro with @postmarketOS… could be very useful for education (not to mention make development more accessible in general).
(If this pull request gets merged, Kitten – https://codeberg.org/kitten/app – will be able to run on the PinePhone and be used for Small Web development on it.)
The Linux desktop is a horrifying mess, what we need is a complete withdrawal from the awful complexity. I’m working on #YAC so I can one day create my own distribution, and I vow to create simpler alternatives for the sound server (no more alsa/pulse/jack/pw stack), the display server situation, and worst of all, the web browser situation. It will also not contain any trace of the following:
- #GNU (coreutils, #bash, #gcc & glibc)
instead opting for
- mdev or smdev, not sure yet
- YAC, #BusyBox, and #BSD utilities where applicable
- #musl libc & the tiny c compiler (#tcc)
- Almquist Shell (#ash)/Debian ash (#dash)
- mandoc & related utilities
For more information and updates on development, or to contribute yourself, you can join the Tebibyte Media Discord “server” or subscribe to the RSS feeds at:
@jbzfn AIUI @alpinelinux's Firefox package disables malloc replacement and is thus using #musl's mallocng, one of the most hardened allocators available.
Happy ending to a disturbing bug report with #musl: application was calling free() from a signal handler, introducing a sort of allocator state corruption I hadn't seen before. https://www.openwall.com/lists/musl/2023/01/27/1
Yay, #musl mallocng just found yet another buffer overflow, this time in iwd. Which apparently nobody runs under valgrind... 🤦
@snaums @postmarketOS It's possible, but highly recommended against. You're fundamentally changing what #AlpineLinux and #postmarketOS are. I'd recommend using a different distro instead.
What problems do you have with #Musl?
In this case, trying to compile against glibc and link against #musl. 🤦 And claiming musl is broken when it doesn't work.
I know #musl has a lot of places where code is doing stuff to satisfy hidden constraints/requirements, like inability to allocate resources (at all or after a point of an operation having caused irreversible side effects) and I think it would be nice for these to be more obvious to readers.
Ok, idea for a fun game I'm going to play/host when I'm back home: folks reading #musl point out places where it's not obvious *why* something is being done the way it is, and I get to either add comments, clarify/simplify the code, or cite an existing explanation somewhere in the repo.
New round of test case failure reports against #musl fnmatch and they're all from systemd-originating tests asserting wrong behavior from glibc and undefined behavior matching glibc. 😂
New WONTFIX hall of shame entry courtesy of #musl folks: https://bugs.openldap.org/show_bug.cgi?id=8988
I'm running Ubuntu servers with LTS versions, from 16.04 to 22.04. My development system runs on the latest version, so building #Rust executables for x86_64-unknown-linux-gnu will not run on older versions due to the GLIBC dependency.
Instead of building the executable in a #Docker container with the same OS version as the target system, I opted for the #MUSL target instead. It adds a little overhead, but the whole process is much simpler.
What would you do? What do you think is better? Why?
Happy to report that the entirety of our #AlpineLinux gccgo compatibility patchset for #musl libc has now been integrated upstream. If you are using Go on a musl-based Linux distribution, consider bootstrapping it using gccgo: https://github.com/golang/go/issues/51280#issuecomment-1362855803
@rwlowry Mostly because there are no simple, fast, no-bullshit options that vaguely resemble #RHEL.
It's something I've really missed at work where certain colleagues insist on staying at least somewhat compatible with RHEL. Besides, I like how #DNF handles transactions and history even if the spec files are written in a terrible DSL.
I don't particularly condone VMware's business practices but #tdnf is one of their simpler, more open projects.
#AlpineLinux and #musl also, in my opinion, can focus a bit too much on correctness to the point where it impacts usability, compability and freedom of choice.
Today I tried to upgrade my #Pleroma instance up to the version 2.4.4. For some time past I use OTP version bundled with all libraries. But the crucial point is #Alpine #Linux running in #LXC container. Official guide recommends to use v3.10, but I stick with 3.11 since it’s the last version with some additional erlang packages which are absent in more recent versions.
So, as usual, the upgrade went smoothly with pleroma_ctl update --branch develop. But after pleroma_ctl migrate I’ve got very strange result:
Error relocating /var/lib/pleroma/release/erts-10.7.2.18/bin/beam.smp: pthread_getname_np: symbol not found
Well… I checked the binary with ldd and confirmed that it depends on libc.musl-x86_64.so.1. Quick search led me to #musl repo, where I found the particular commit where pthread_getname_np function was added. It turned out that this commit was added 3 months after release 1.2.2 and almost a year before release 1.2.3. Mentioned musl versions were integrated in Alpine versions 3.15 and 3.16 accordingly. So the easiest way was to upgrade my Alpine container to 3.16 and enjoy. But I don’t look for easy ways. Instead I downloaded Pleroma release 2.4.3 archive with erts version 10.7.2.17, unpacked erts directory only, added it to release folder in Pleroma installation and changed in source files all references to erts binary path from 10.7.2.18 to 10.7.2.17. And voilà, my pleroma server works again!
The #LinuxKernel has 2 #ELF loaders: one for executables and one for the interpreter (PT_INTERP). The latter is rather simple and expected only the last PT_LOAD to need zero padding. #LLD linking #musl's libc.so started doing this with multiple PT_LOADs...
Hopefully this will fix the bug
I hope to merge these loaders in the future, but first we need better unit tests.
@Fu @agx His phone OS is, but there is also #postmarketOS which I wouldn't call GNU (being based on #alpinelinux and #Musl and #Busybox) but also isn't Android.
@kdrummond i wiped out mxlinux for a minimal voidlinux based on musl instead. And made a custom xfce-look to it. I am very pleased. #voidlinux #musl #xfce big fan of the Dracula themes.
@firstname.lastname@example.org thanks for the tip. Indeed installing Alpine's flex-dev package (their naming conventions are slightly different from Debian's) provided the required files. Unfortunately now I'm getting build errors as reported by the make recipe, so I guess I'd have to report this as a bug for the maintainer.
My gut feeling is these issues arise from linking against #musl. I've had similar problems with my own programs when compiling in alpine before.
YESSSS, I sucessfully cross-compiled a rust gui application from Archlinux x86_64 to postmarketos aarch64 (pinephone) without emulation and thus quite acceptable performance!
I'll write up the process and publish a blog or sth. for other poor souls soon.
Linux Standard Library Implementations: X32 can be 10% faster, but musl Libc 40% slower: https://www.youtube.com/watch?v=wq-a8juPFzs #linux #glibc #musl #libc #performance #comparison #standardlibrary #x32
Adélie Linux calls for assistance!
The people behind this promising distro are looking to expand their community of users & developers.
Adélie Linux is based on musl runtime library focusing on reliability, security, compatibility, portability, usability.
They even aim eventually to operate smoothly without any GNU components, utilizing Busybox or similar.
Please contact them if interested.
#Adelie #Linux #musl #libre #help #testing #developers #community #GNU
@tobtobxx @linmob Yepp, I gave up on getting the current version of #anki running on #postmarketos #musl. I changed to 2.1.15 which was the last version with a build system that I could at least remotely comprehend: https://pkgs.alpinelinux.org/package/edge/testing/x86/anki
Is there any advantage to using something like this (for static builds) https://github.com/utdemir/ghc-musl over just installing all the haskell depends via APK in alpine the normal way and building from there? like how fossa/haskell-static-alpine does it. I don't understand what the advantage of musl would be in this context.
Here I was trying to get static builds with #musl, #bazel, and #nix working, when it turned out I can't even build the demo included. I should've tested the demo first before diving in.
#musl is a lightweight libc.
musl is a lightweight and standards compliant #C standard library implementation. musl uses Linux calls very closely, making it faster than more general standard libraries as better kernel-specific optimizations are made. musl is highly compatible with standards as well as with glibc, allowing for it to serve as a drop in replacement in many cases.
Website 🔗️: https://musl.libc.org/
apt 📦️: musl musl-dev