These months are coming and going way too fast, for a whole variety of reasons, so we’ve got another month of improvements for Redox, the operating system written in Rust. I February, January’s work on dynamic linking continued, adding support for it to the recipes for Cargo, LLVM, Rust, libssh2, OpenSSL, zlib, COSMIC Terminal, NetSurf, libpng, bzip2, DevilutionX, and LuaJIT, as well as to the project’s Rust and OpenSSL forks. Relibc also saw its usual slew of improvements, as did the build system and documentation.
The Intel HD Audio driver initialization has been fixed, and PS/2 touchpad support has been fixed as well – you’d be surprised to find out how many laptops use PS/2 internally, so this is an important function to maintain. And as always, there’s a whole slew of smaller changes and fixes, too.
Not as earth shattering as some other updates but good progress. We are starting to see a greater diversity of names. Not everything is Jeremy Soller. People moving different aspects of the project forward is how you get from “kind of works” to real polish. Nice to see on Relibc for example.
But things like drivers, build system, and especially documentation are also awesome in terms of building a project that people can engage in.
As a bit of fun, it made me smile to see that Redox runs Diablo (DevilutionX).
I have seen this reported in a couple of places.
What I have not seen is anyone questioning it. As I understand it, the creators of Unix later decided dynamic linking was a mistake. For this reason, Plan 9 (Unix 2.0) and I think Inferno (Unix 3.0) did not include it.
Multiple experimental Linux distros are trying to _remove_ dynamic linking, e.g. StaLi and Oasis:
https://sta.li/
https://github.com/oasislinux/oasis
It almost seems like Redox is trying to recreate Linux so faithfully it’s also including the bad ideas.
lproven,
I’ve not really heard that opinion before, at least not explicitly. I’m looking up sources that have this debate…
https://belkadan.com/blog/2022/02/Dynamic-Linking-and-Static-Linking/
My feeling is that many programs don’t need to use dynamic linking, but there are times when it’s genuinely beneficial.
For example linux has the ability to dynamically link in new modules without having to link them all at bootup. I find this genuinely useful and in fact I prefer to build kernels this way because I get to choose what modules I want later and it gives much more control over module parameters.
Maybe we could say the kernel is the exception to the rule, however I can think of tons of userspace scenarios where dynamic linking could be helpful too. An office program can have tons and tons features, many of which the user doesn’t need at any given time…so why not load them in dynamically on demand rather than forced to do so at startup? This seems sensible to me. Or dynamically loading codecs from shared object files for a media player. You might support hundreds or maybe thousands of codecs but you only need a couple for A/V at any given time…dynamic linking is a perfect solution. Otherwise just think about how bloated the player process would need to be on account of all the codecs that are present but not used.
This is just my initial reaction, but since I haven’t heard much about this I’m curious about your rationale for saying it’s bad.
As for everything, there are tradeoffs. And until someone shows an alternative that is actually better, I will keep updating openssl without needing to rebuild the world.