Wine ported to OpenBSD

(marc.info)

390 points | by iamnothere 6 hours ago ago

97 comments

  • haunter 4 hours ago
    • Maken 3 hours ago

      I'm really surprised VKD3D works out of the box. So many abstraction layers stacked on top of each other feel like a jenga tower on the brink of falling.

      • qalmakka 29 minutes ago

        Vkd3d is a PE executable, if wine works and Vulkan works then it works too, as long as the required extensions are present

      • braiamp an hour ago

        It targets vulkan, so if BSD has vulkan drivers it is agnostic

    • nottorp 3 hours ago

      Whoa, openbsd has 3d hardware drivers? Only open source i guess, no official drivers?

      • brynet 3 hours ago

        Yes, the upcoming OpenBSD 8.0 release will have inteldrm/radeondrm/amdgpu drivers from Linux 6.18.y/6.18.53.

        https://bsd.network/@brynet/117407035545900963

        • bentley an hour ago

          Correct, those are the versions in the coming release.

          For those not familiar with OpenBSD, it’s had an accelerated amdgpu driver since 2019, and inteldrm/radeondrm for a few years longer, generally kept up to date with Linux stable throughout that time.

          • daneel_w 25 minutes ago

            > ... and inteldrm/radeondrm for a few years longer ...

            Since many years longer, including the nv(4) driver for old Nvidia GPUs up to the earliest GTX models.

      • Maken 3 hours ago

        The open source drivers are the official ones for Intel and AMD.

      • asveikau 2 hours ago

        They port the open source Linux drivers. FreeBSD does this too. Maybe others.

        Over time there can be periodic drift and out of date drivers until they re-sync, but it usually works pretty well.

      • daneel_w 28 minutes ago

        OpenBSD has had hardware-accelerated 2D and OpenGL since, well, forever-ish. Just not for modern Nvidia GPUs.

    • Onavo 3 hours ago

      What about the most difficult game of all, Microsoft Office?

      • daneel_w 10 minutes ago

        Whoa, whoa, whoa, stop right there, Evel Knievel.

      • sellmesoap an hour ago

        Yeah I tried that game once it's not for me, I heard the old boss tried to EOL civilization as we know it!

  • t-3 4 hours ago

    https://marc.info/?l=openbsd-ports&m=179241414029592

    > I doubt much will be merged upstream. Many updates we have can technically run on other OSes (%gs stubs won't be built on Linux because %gs is correctly set, SIGUSR1 will work but less optimally, etc). However I picked an approach where everything that is done for OpenBSD is just marked as OpenBSD only. I did that purely to simplify my life while I was working on it and clearly mark the changes.

    > When I was talking to Wine maintainers a month ago, they were hesitant to accept even patching Wine so it compiles for OpenBSD, mostly because it's another OS they will have to support and keep operational, while the %gs stub fix is something they definitely cannot take upstream. They are very hesitant to take anything that is changing the "emulated" application code.

    • iamnothere 3 hours ago

      Yes, unfortunately OpenBSD maintainers will have to keep this running for now. NetBSD is apparently in a similar situation. Perhaps their efforts can be pooled at some point if the patches don’t diverge too much.

  • RunSet 5 hours ago

    Especially welcome news now that OpenBSD is shaping up to be a refuge from slopcode.

    https://marc.info/?l=openbsd-tech&m=177411620801633&w=2

    • greyw 4 hours ago

      OpenBSD will probably fall even further behind

      • vdombr 4 hours ago

        Yeah, they won't have a chance to rewrite cp and mv in Rust.

      • Krssst 3 hours ago

        There are already OSes that include LLM code (such as Linux). It's fine to have a few that don't.

        • frumplestlatz 44 minutes ago

          It is, but an already niche operating system that refuses to leverage the advantages of LLMs is only going to fall further and further behind. I say that as someone who has actively contributed to the BSDs since the 90s and would hate to see that happen.

          The slop problem is very real. People are spewing reams of bad code that generates entropy faster than humans or LLMs can clean it up. LLM best practices are not yet obvious, and we're still figuring out how best to leverage them while maintaining code quality and human understanding.

          ... but LLMs are coming whether we want them or not. Models keep consistently improving, the slop keeps getting better, and human-only development is going to struggle to keep up.

          In my day job, I'm driving an enormous number of tokens at Astra+Ultramax solving problems in Lean 4 that previously we never would have attempted simply due to the incredible human engineering cost; we review the high-level lemmas and let it prove the rest.

          LLMs are the only solution I've seen over these decades that could finally close the feature/usability gap between mainstream and more niche operating systems -- software support, features, drivers, and other broad usability barriers. All of that has historically been far too much work for a much smaller developer community to reasonably undertake.

          Hating AI isn't going to make it go away.

          • margalabargala 11 minutes ago

            What does "behind" actually mean, though?

            Think about how far Linux has/hasn't come in the last 10 years. The user experience is nicer, drivers "just work" more, there's more support for more stuff...but at the end of the day, the actual computing experience is mostly the same today as when I installed Debian back in 2016. It's polish, interoperability, etc that's improved.

            Maybe VR takes off and takes over the desktop, and then openBSD can't keep up with that, but I don't think that's likely. So what are they trying to "keep up" with?

      • freedomben 4 hours ago

        Yep, drivers are one of if not the biggest blocker in my experience, and that's an area AI can help immensely

        • segmondy 4 hours ago

          Then vibe up the ones you need for yourself.

          • Angostura 4 hours ago

            ‘Click to write and install driver’

            • overfeed 3 hours ago

              > 'Click to write and install driver’

              Theo de Raadt would spin in his grave — after the security implications of this to OpenBSD gives him a fatal aneurysm.

              Either that, or he'll surprise-launch OpenLLM, a model bundled in the next OpenBSD release that produces driver code free of security bugs.

              • sterlind 3 hours ago

                honestly LLMs could probably write drivers in CompCert C or some other formally verified dialect. having AI discharge proof obligations seems like a terrific use for all this newly-developed mathematical process.

                you could have the driver code prove it implements a spec, that there's no UB, that hardware invariants are maintained, that routines take a fixed time to execute.

                the formal driver spec must still be written by sober, well-caffeinated humans of course.

                • speed_spread 2 hours ago

                  That's also assuming the device is fully documented and that hardware behaves exactly as documented.

              • ktta 3 hours ago

                > Theo de Raadt would spin in his grave

                Isn't he still alive?

                • boomlinde 2 hours ago

                  > — after the security implications of this to OpenBSD gives him a fatal aneurysm.

      • lioeters an hour ago

        Good.

      • shevy-java 3 hours ago

        Well, they were always slow. But they made a stand against AI slop, which is great. Look at how AI slop infiltrated the ruby core team. You even get slop-spammed down when you try to interact with e. g. Hiroshi Shibata, who suddenly has ... perfect english language skills. A few years ago his command over the english language was rather weak (which is fine by the way, I much prefer broken english from a real human than AI slop spam text as filter acting in between humans).

        • atmosx an hour ago

          Then learn Japanese. No? So you can write broken Japanese and he doesn’t have to translate his words in English for you.

      • noosphr 4 hours ago

        If you don't break the law you do indeed fall further behind people who do.

        Nothing in that post is against using an LLM. It's all about copyright:

        >Since every file in OpenBSD has been continually verified to ensure correct Copyright, and we've even deleted code which has incorrect Copyright, the chances of us accepting such new code with such a suspicious Copyright situation is zero.

        Once the current bubble pops we're going to see a lot of litigation over copyright enfringement by LLMs. Currently no one wants to rock the boat because everyone hopes to make a trillion dollars from AI, Oracle included, once they see they can't the knives are going to come out and I wouldn't want to be Linux at that point: https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America

        • greyw 4 hours ago

          Copyright will adapt.

          Also my personal opinion about copyright _in the FOSS domain_ is that I simply dont care. Copyleft as the GNU folks like to call it is just using the copyright laws to achieves certain free software objectives. If that doesnt work anymore there will be another fix

          • noosphr 4 hours ago

            Copyright adaptation literally means billion dollar lawsuits, because copyright only adapts after court decisions.

            The BSD licences are not copyleft, or indeed part of the GNU copyright regime.

            • vconnor 2 hours ago

              Yeah, the billion dollar lawsuits that are coming after the trillion dollar ones that are gonna hit the AI industry any day now.

              Copyright is dead.

              • steelframe 43 minutes ago

                So long as there's big money interests around copyright, I assure you it will not die. And all the predictions about the knives coming out after the AI bubble pops are spot on.

                It took a while for the DMCA to happen after Napster. But it indeed happened, and we all know the saying about history repeating itself.

              • noosphr 2 hours ago

                >Copyright is dead.

                I remember hearing that in 1996 too.

                • vconnor an hour ago

                  How was the LLM training scene in 1996?

          • toast0 2 hours ago

            > my personal opinion about copyright _in the FOSS domain_ is that I simply dont care.

            You may not care, but if the OS you prefer to run is the defendant in a copyright case, that's likely to impact you in a negative way.

            • JdeBP 2 hours ago

              It is amusing to see this point made in a discussion that is notionally about one of the BSDs.

              "Those that do not learn history" and so forth.

    • smlacy 4 hours ago

      Wow, I honestly didn't think HN would succumb to the AI := Slop perspective.

      • lionkor 4 hours ago

        I think it's the complete saturation of the platform with members who make it feel like HN is a platform for people to boast about how many tokens they burnt to rewrite something that already worked fine.

        It polarizes people to either join the "the LLM is my god" crowd or the "if AI touches the repo, it's all slop" crowd.

        The careful balance is rarely discussed, probably because that's the part that still takes work.

        • necovek an hour ago

          I think "careful balance" is the status quo even if people are unaware of it being so.

          Agents and LLM-assisted coding currently work within the confines of already working hand-coded OSes, language frameworks, test harnesses and even CLI tooling. Pull one of those out, and agents become unhinged and they lose direction.

        • kingcauchy 4 hours ago

          It really depends on the post anymore. Have had a lot of really thoughtful discussions about the nuance that came out of HN convos. Seems like most businesses and people are still just trying to figure out.

        • runeb 4 hours ago

          I would hope that lazy polarization found some resistance on this particular forum

          • mahboi 3 hours ago

            It has. You don't see a lot of people who are all-in on AI or against it.

      • ranger_danger 4 hours ago

        Although Theo seems to imply AI code is not welcome, this commit says Claude was used: https://github.com/openbsd/src/commit/9c2b8e445a0bdfafdd6148...

        • ninjin 4 hours ago

          Plenty of issues that have been patched recently found using such tools as well. OpenBSD's policy remains largely the same as always: You need to understand the patch you propose and it needs to be maintainable. The link elsewhere in this thread is mainly discussing large patches where it is unclear if the LLM drew too heavily on code elsewhere.

          • raddan an hour ago

            OpenBSD's errata list has recently started growing rapidly, and the scale is a real departure from the past. I have taken to running syspatch much more regularly than in the past. Anyway, it's clear that the project's stance on AI is "as long as reports are detailed and high-quality (and probably from a person with a record of such work) the project will act on it." See slide 17 here: https://events.eurobsdcon.org/media/2026/submissions/ZGDXQR/...

    • hias 4 hours ago

      how do you think they made this wine port lol?

      • simonw 3 hours ago

        Looks to me like it was made without AI assistance. https://github.com/NethIafin/wine/tree/openbsd-master

        • asveikau 2 hours ago

          Afaik I think I saw the author say on reddit he used AI to prototype and then rewrote it.

          https://www.reddit.com/r/openbsd/s/k0dz2WrkCo

          In that thread I suggested he submit it to the ports tree, I'm not sure if he took my advice or came up with the idea on his own. At any rate this is cool.

          • NethIafin an hour ago

            I never hid the fact that I iterated with AI. It's pretty hard to commit to an approach if you don't even know if it will succeed. And boy oh boy this was a shot in the dark.

            I also respect Wine and OpenBSD and their rules to not have any LLM code in the repo/ports. So my approach was to iterate over solutions, find approach that works, ask AI to "just see if my idea even works", learn what/how/why of that approach, generate some supporting manuals for myself (for example how to decode %gs instructions and how to reencode them) and then write my own code based just on decoding tables (and not LLM code).

            I did not know how to work with REX/SIB/ModRM, how to detect prefixes, how to parse every single instruction that contains %gs, how offsets work, how to encode jmp rels, why I want to use JMP *0(%RIP) instead of JMP 32rel on return, why I want to leave stub on SIGUSR (or any other signal). But I do know now.

            I was incredibly lucky that patching just these %gs instructions were enough to launch Factorio and play, with broken sound, but anyways! Holy molly this was and is so much FUN!

            The approach still feels like cheating, and if it feels the same for you, I perfectly understand.

            • asveikau 43 minutes ago

              I'm way more ai skeptical than most HN users and I don't think you did anything wrong. Like I said in the reddit thread, the patches are cool. Kudos.

          • MYEUHD 2 hours ago

            Yes, he said the same on the mailing list[0] when he asking about a related thing 3 weeks ago:

            > I had some success in porting Wine to amd64.OpenBSD. Was able to run a few = games. But that required in memory patching of %gs commands (LLM's suggesti= on and 1st implementation, then I re-did it from scratch - I'm not that sma= rt with amd64 assembly code)

            Also, it's not a single author. Other people contributed significantly and their contributions don't seem written by AI: https://github.com/NethIafin/wine/commits/openbsd-master/

            [0]: https://marc.info/?l=openbsd-tech&m=179070255546118&w=2

            • NethIafin 41 minutes ago

              At that time, that LLM built solution was like 3+ weeks old if not more. It's just me and Fabien for now though. Rest are working on helping us turn it into a nice Port Wine

      • NethIafin 44 minutes ago

        Soon like with Speedrun submissions, we will have to show ourselves livestream coding to avoid any AI usage suspicions

      • ranger_danger 4 hours ago

        Do you have any evidence to support this claim?

        • baq 4 hours ago

          at this point in the timeline you need evidence to the contrary, safe to assume most code is AI generated or AI assisted at the very least

          • mahboi 2 hours ago

            If "slopcode" means code where the author consulted AI at all, yeah. But it's pretty easy to tell if the author AI-spammed without even reviewing all of it, or even if they did review it but didn't hand-type it. The email says "you did not write them, you said an AI did," so the author did admit to using AI at the same time they claimed copyright over the code.

  • ataraxia937 4 hours ago

    I find it amusing and appropriate that the surname of the author of that message is Frohwein. "Happy wine" in German.

    • spirographer an hour ago

      I came here looking for your comment!

  • philipallstar 4 hours ago

    Missed opportunity to call it Port.

    • NethIafin 33 minutes ago

      I was (and partially probably still am) hoping that it will go upstream in some shape or form so I kept the original name.

    • kingcauchy 4 hours ago

      Probably being reserved for the OpenBrandSherryDaquiri rebranding.

    • mahboi 2 hours ago

      I feel like there was some WINE-related thing called Port.

  • yass0 21 minutes ago

    I am sure this has something to do with all the PS5 jailbreak work that is massively happening recently.

  • Xunie 2 hours ago

    2026 is finally the year of the BSD gaming desktop!

  • brynet 4 hours ago

    I OK'd this port. I apologize in advance.

  • kogasa240p 14 minutes ago

    Impressive! Wonderful to see that the BSDs are getting love these days.

  • simonw 4 hours ago

    OpenBSD apparently still uses CVS. I found this GitHub mirror of their ports repo which has the new wine port: https://github.com/openbsd/ports/tree/master/emulators/wine

    That has a static import from 13 hours ago. Anyone know if this wine port has its own repository somewhere else tracking the history of the development effort?

  • BlackRabbit1 5 hours ago

    Finally I can run Zonealarm on OBSD

  • Bluescreenbuddy 5 hours ago

    Good lord this is awesome

  • CodeCompost 5 hours ago

    That is awesome. I take it I can't run this with nVidia.

  • throwaway27448 5 hours ago

    Out of curiosity, how much work/what sorts of openbsd-specific details must be addressed to get such a port working?

    • NethIafin 2 minutes ago

      There are some basic OpenBSD-isms like ucontext, stack mapping, mmap, fix trap context so rest of the %gs patching logic even knows where to work.

      Rest is basically ~~two~~ three main issues 1. %gs/gsbase - we trap on %gs instructions because %gs=0 gsbase=0 so all of them illegally point at page zero. So we take the instruction, decode, turn it into %gs-less instruction, and stow it somewhere else. To do conversion we need a scratch register (now two, thanks MINGW32-GCC, you c*nt), we replace whatever gsbase should've been with our TEB pointer, and gogogo (with restore of the scratch register state {or two}). Old instruction (if wide enough) becomes jmp rel32 (I picked it because it is 5 bytes, and short jump branches are too... short). If it isn't, we are just constantly trap on that so we just create a hash between trap location and stub location. Those cases are thankfully rare.

      Just this one patch gives us Notepad, Notepad++, Factorio, and many many other games

      2. SIGUSR1. Basically Windows lets threads chat thru their thread API, and Electron apps (I really wanted Eve Online to work) and Chromium apps constantly chat and interrogate each other with that thread API. Wine decided to emulate some of the APIs with unix signals. Now the main issue here is that OpenBSD, does not allow one process to signal a thread in another process. So we catch it with the currently active thread, and reemit it now inside of the process as SIGUSR2. Read on SuspendThread, GetThreadContext, ReadProcessMemory, and why Mojo/Crashpad works how they work, very fun! Makes you really enjoy the security OpenBSD gives you. Another dev is making this code better and handle other SIGnals.

      3. ReadProcessMemory / WriteProcessMemory (NtReadVirtualMemory / NtWriteVirtualMemory) - this is also for Electron/Chromium but mostly Steam. We only needed it majorly when we started pushing towards steam working. Steamwebhelper, steam overlay, and steam watching you play and tracking your game time, are completely against OpenBSD's security model. Wine processes are not descendants of wineserver, so wineserver cannot ptrace them unless you enable kern.global_ptrace=1. We were trying to keep kernel as stock as possible so...

      2 and 3 are very much together and if you ever seen on windows how chrome looks in the Task Manager and how many chrome processes there are, well now you know my pain, haha

    • coldpie 4 hours ago

      You can download the attachment and take a look at the patches. Wine already supports FreeBSD and macOS, so it's not tooooo crazy hard to add another BSD/Unix to the pile. Looks like there's a few Unix APIs that have drifted, so the patches add some #if OpenBSD style stuff to avoid using some symbols that don't exist on OpenBSD. The gs register stuff is by far the most complex bit. IIRC that register is used for thread-local storage on Windows, but for other purposes on other OS's, so handling access from win32 binaries to the gs register is a big problem when porting to a new OS.

      On the whole it looks well written to me, especially with how complex & low-level these areas of Wine are. Good work to the author. I'd encourage them to try upstreaming it if they're interested. Some of it looks a little hacky, which upstream will object to, but maybe they could get some help cleaning it up, which will avoid having to maintain a diff and result in an even better port.

      Edit: Oh, looks like they already talked with upstream https://marc.info/?l=openbsd-ports&m=179241414029592 It's not a huge diff to maintain, so maybe that is the better route. Great work either way.

  • ericfrederich 5 hours ago

    My first thought was this must have something to do with the development momentum around the PS5 but that apparently runs FreeBSD not OpenBSD.

  • imagetic 4 hours ago

    Yes. More of this.

  • shevy-java 3 hours ago

    Now the BSDs are not so popular compared to Linux, but I think this is great news as more eyes help here. Let's have EVERYTHING from windows portable towards linux. (I struggled with the 32-bit versus 64-bit stuff; this should also be a prime goal for wine to make this a trivial super-easy to solve thing for linux in general. Back then when I ran into this issue, it was not trivial to solve.)

  • raverbashing 4 hours ago

    I wonder what's the state of 3D/OpenGL support on OpenBSD or if the games run into too many problems here

  • j45 4 hours ago

    I remember reading once how far away something like this way to work - for all the time that BSD has kept servers and networks safer than other options, it's nice to see things like WINE making it there as well.

    Its hard to not think of the possibility that BSD might offer new or different advantages to keeping legacy windows applications safe until there is a willingness to adopt or develop alternatives.

  • saurilabs 4 hours ago

    This is awessome!

  • ndbe 5 hours ago

    Insane work!

    There's even the remaster of The Witcher running! If I had money I would simply gift to those guys.