• lobsters__ellio_6fd8@crustaceanson.theshelf.topM
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    2 days ago

    It shouldn’t be surprising, and yet it is, how this technique of swapping out underlying API calls let’s you move between platforms with such broad support. Maybe I have too much respect for Hyrums law.

    BSD is intersecting more and more with my world, seems like the boulder has started to roll, I’ll be biting the bullet in an experimental capacity sooner rather than later.


    score 3 · canonical

    • A few months ago, after failing to get wireless working under FreeBSD on a new-ish Thinkpad T14, I installed OpenBSD, and the whole process was shockingly simple. The installer recognized the wireless card, downloaded the correct firmware (over ethernet) and upon reboot, I had full desktop and working wireless. Getting XFCE and Firefox was also simple. It worked very well until I wiped the laptop to give to a friend.

      It’s come a long way. I remember an earlier attempt at an OpenBSD desktop taking hours, and requiring a lot more effort to get everything working correctly. This was also before the recent improvements to the FreeBSD installer, which I hear has improved significantly. The performance was low compared to linux on the same machine, but that’s expected since OpenBSD favors security and correctness over performance.


      score 2 · canonical

  • I saw this on Mastodon first and figured “well, I’m sure it’s nothing more than being able to run some basic Windows apps”, but no, I was shocked to learn that they got games up to AAA level running.

    Of NetBSD and OpenBSD (since FreeBSD already can run Steam using its “linuxulator”), I much rather would’ve assumed NetBSD would get anything similar, with how particular OBSD is about security and whatnot.

    I hope these efforts might cross-pollinate, it’d be fun to one day run NetBSD as a full (in the sense of able to do everything Linux today can) desktop OS.


    score 3 · canonical

    • I hope these efforts might cross-pollinate, it’d be fun to one day run NetBSD as a full (in the sense of able to do everything Linux today can) desktop OS.

      I used NetBSD as my main (and only) OS for over a decade, throughout college and even at work. I only stopped using it about 8 years ago because I got tired of dealing with some issues in pkgsrc. Of course, I didn’t care about Wine and Docker didn’t exist yet. It has a low-cost Linux syscall compatibility layer, so it is even possible to run Linux binaries if you must, but I don’t know how up-to-date it is.


      score 1 · canonical

      • Oh sure, that’s why I included the parts between the parentheses. I’ve heard multiple accounts that NetBSD can be used as a desktop OS, but most of them had an asterisk after them (in the sense of some important program being missing or something not working or simply being prohibitively slow), so I wanted to quantify what exactly a “full desktop OS” would mean for me.

        It has a low-cost Linux syscall compatibility layer, so it is even possible to run Linux binaries if you must, but I don’t know how up-to-date it is.

        As far as I understand, from reading others’ experiences it’s only a subset of calls and doesn’t support stuff like futexes and other modern kernel APIs, because that’d require more than simply mapping.

        I got tired of dealing with some issues in pkgsrc

        I’m curious, could you please elaborate what sort of issues you had? (I’m aware of what ports/pkgsrc is.)


        score 2 · canonical

        • At the time (don’t know if this is better now), pkgsrc had quarterly snapshots from which binaries were built and made available. When a vulnerability was found in a package, the corresponding binary would be removed from FTP. This led to the unfortunate case that one would have to recompile the package from source. And if it was a lower-level dependency like, say, libpng, this would cause a cascade of recompilations of everything and the kitchen sink (e.g. Emacs, Firefox, etc) leading to hours of recompiling.

          Because you’d want to recompile a non-vulnerable version, you’d be compiling from CVS HEAD, which often meant there’d often be more (unrelated) breakage, so you wouldn’t even be able to continue.

          And of course, my system would often be unusable because I wouldn’t have the package installed until the recompilation was done.

          And sometimes, the binaries were unavailable because the package was broken or something else went wrong, so one would have to compile a package from source once in a while.


          score 2 · canonical

      • Note that some bits of WINE really want custom support in the kernel. The implementation of WaitForMultipleObjects comes to mind. Linux and FreeBSD (not sure about macOS?) have custom kernel APIs specifically to make this efficient.


        score 1 · canonical

        • Anyone who has ever implemented a cross-platform “WaitForMultiple” that is inspired by Windows knows how incredibly cursed this is and how hard it is to get robust and right. I once had the (dis)pleasue of maintaining such a cross-platform API that supported Windows, Linux, QNX, FreeRTOS, MQX and Micrium OS. The Windows implementation of that part of the library was basically just a wrapper, but the other operating systems… Oh boy.


          score 1 · canonical