72 comments

[ 3.1 ms ] story [ 64.2 ms ] thread
awesome, finally wine is getting proper ntsync support... and i reckon wow64 will let me run so many old games...
Wine might be oddly self-defeating. Broad game support on Linux increases the viability of Linux as a desktop, which increases market share, which may result in developers creating Linux ports as a 1st class concern, which don't need Wine to run.
In many cases for game devs/publishers "supporting Linux" now means making sure the Windows build runs well under Proton.
Wine has always beem a bandage not a final thing. Something to drive exactly this transition to better. Through wine ive been able to transition many colleagues accross because software they need will work as they expect it to in linux and everything elese is an arcane mystery to them anyway. This means one less network effect contributing win user. Most also experience a massive jump in tech literacy as a result of the move, since a system that doesn't wall you out at every step lets you passively learn more.
Reading these posts always make me feel like an imposter. People are dealing with such low level things, while i'm outta here building simple CRUDs.
Why do people belittle CRUDs? Or even call them that? I have written quite a few applications, where there was a frotend which displayed things stored in a SQL db, with certain operations allowing you to modify said db, which I guess would fall into the CRUD variety, but the least of the complexity, and usefullness lay in that fact.
I am a normal web dev / CRUD app coder. All of this isn't beyond your ability.

Every so often I hit a problem that requires me to go all the way down to the OS level and find out what is going wrong or into the core framework and you find out that most of the code is actually less complex, better documented and clearer than a lot of the garbage bespoke applications you have to deal with at the higher levels.

If it's any consolation I can out-imposter you: lately I've been mostly reviewing LLM-generated code.
> Dirt 3 went from 110.6 FPS to 860.7 FPS

> Resident Evil 2 jumped from 26 FPS to 77 FPS

> Call of Juarez went from 99.8 FPS to 224.1 FPS

> Tiny Tina's Wonderlands saw gains from 130 FPS to 360 FPS

Amazing. I don't understand the low level details on how such a massive speed gain was ripe for the picking but I welcome!

I guess thanks Valve for pouring money into Proton.

Read the last sentence in that paragraph, those numbers are a bit disingenuous:

> Those benchmarks compare Wine NTSYNC against upstream vanilla Wine, which means there's no fsync or esync either. Gamers who use fsync are not going to see such a leap in performance in most games.

Having done a multi targeted project in the 2005 range. I can tell you. The APIs that both systems provide are quite expansive and do quite a bit. However there is a mismatch on details and gaps. In this case the NT mutex system is 'there' in linux however the way it works is subtly different. You have to basically emulate waitforxxxxxxobject set of windows calls. Getting that right and performant can be quite a challenge.

My particular challenge was similar in around how threads were created destroyed and signals between them (such as mutex). We ended up making our own wrappers to insure the different platforms acted the same. Even something simple as just moving between two supposedly 'same' linux distros could be different depending on what the ODM did to their packages and supported libs. Having a dedicated linux object that acts exactly like the windows one would have made that code much simpler to do.

Another place where there is a huge impedance mismatch is in the permission system. In many ways the VMS/NT way is wildly detailed. Linux can do that but you have to emulate it or use it directly and hope you get it right on both sides. There are several places where windows/linux have the same functionality but the APIs are different enough that multi platform support is kinda awful to do.

Wine is a project that I've grown a near-infinite level of respect for.

I don't know for sure, but I suspect that a lot of the work for Wine is boring and thankless. Digging through and trying to get exact parity with both the documented and undocumented behavior of Windows for the past 30 years doesn't sound fun, but it's finding every little weird edge case that makes Wine a viable product.

The fact that Wine runs a lot of games better than Windows now (especially older games) shows a very strong attention to detail and a high tolerance for pain. I commend them for it.

It’s astounding how badly Microsoft had to fumble their complete and unassailable monopoly on the standard video game runtime (ie Windows) for an upstart like Valve to be able to get WINE/Proton into a place where this is now possible.

The mind reels. They had the biggest moat in tech, and now small shops are easily tossing homemade ladders across the gap. AAA gaming is an industry larger than all of Hollywood, and Windows is no longer a critical component. This is incompetence on an unthinkable scale.

I wonder when and how Excel’s stranglehold will eventually be cracked, and if I will live to see it. Perhaps the new agentic universe will cause someone to finally make the Pixelmator of Excel.

That's not boring at all. A lot of the works done in Wine can be fed back to ReactOS
There was a time when WINE was iffy. At best.

It’s gotten good and reliable.

Commendations to contributors!

I was rewriting an old game of mine using SDL2 for release on Steam—had struggled with getting a build target for Linux/Steam Deck.

Man, Wine just worked and I confess I copped out and just delivered MacOS and Windows targets.

I spent my entire college career doing consulting for a company that worked on Wine since Wine was part of its commercial offering.

The work is not boring (it's fascinating!) but completely thankless. The documentation on MSDN was (and I'm guessing still is) complete shit, and most of the APIs are undocumented. Random fixes would have knock on effects. I contributed a bit to some cases on a bug open since the 90s, and since I'm still on the list, I still get messages about it!

If any Wine devs are reading this, I'd love to see a talk on this topic at the 2026 Carolina Code Conference. Call for Speakers is open until March 31st.
Before anyone gets too excited about ntsync, the performance gains are (with few exceptions) mild, usually in the lower single percentage range. These extreme gains are the result of benching against vanilla wine without fsync, anyone playing demanding games on linux would have been doing so using fsync. This is mentioned in the article but treated like a side note. I've been running benchmarks between both and while the performance increase is real, please temper your expectations. A few titles might also run slightly worse.
> usually in the lower single percentage range

Is it worth to compare Wayland vs X11?

I'll be very interested to see how this plays out with final 3rd-party benchmarks.

Now if we can just get some decent Nvidia drivers......

While I am not a big gamer anymore, I am curious whether this new Wine release make it possible to run Windows software such as Photoshop or Visual Studio on Linux with decent speed and decent resource usage.
Does it finally support visual studio?
the NTSYNC change is for video games, doesn't help VS
This is such an amazing accomplishment! Absolutely wild to see Linux basically re-implement Windows and doing it better, while MS is dead set on making everything about their software worse.
It seems like it would be possible to implement this in userspace using shared memory to store the data structures and using just one eventfd per thread to park/unpark (or a futex if not waiting for anything else), which should be fully correct and have similar or faster performance, at the cost of not being secure or robust against process crashes (which isn't a big problem for more Wine usage).

It seems that neither esync or fsync do this though - why?

Claude thinks that "nobody was motivated enough to write and debug the complex shared-memory waiter-list logic when simpler (if less correct) approaches worked for 95% of games, and when correctness finally mattered enough, the kernel was the more natural place to put it". Is that true?

I had to close 3 ads before even half my screen was the article

And then it never was more than half…

I am glad that a portion of the thousands of dollars I've given to Valve Corporation over the years has been gone to improve Wine for everybody. I wonder how many developers and contractors on the project are paid by Valve.
Is the difference between the NT-style and POSIX-style semaphores essentially just that NT (and now this new API in Linux) supports setting a max value? Why don't POSIX semaphores support this?
> This might sound like a small quality-of-life improvement, but it's a massive piece of engineering work. The WoW64 mode now handles OpenGL memory mappings, SCSI pass-through, and even 16-bit application support. Yes, 16-bit! If you've got ancient Windows software from the '90s that you need to run for whatever reason, Wine 11 has you covered.

Does that also apply to macOS? Even on Intel machines, Apple dropped 32-bit support many many years ago and IIRC it took ugly workarounds that weren't ever part of upstream WINE but of Crossover.

Anybody know if NTSYNC support is why the Chrome OS team moved away from native Steam support?
I've heard in the past that ntsync is a big deal for audio plugins via yabridge as well. Not sure how much that's going to reduce the existing CPU penalty there.
Not that it really matters, but does this article read as LLM authored to anyone else?
This is great.

Not to sound snarky, but now please get it to run Microsoft Office. I'd argue that this is the last barrier to many, many people being able to use Linux full-time for business purposes.

Entirely.

If you really / actually want Linux and Linux Gaming to really take off, contribute with whatever helps to get Office 365 running in Linux without a VM.

Like it or not, the business world runs on Office.

I have quite a few machines under my direction, and I would drop Windows on every single one of them for employees that have never used Linux in their lives if I could be assured that they had Office and Teams.

I don't know if it is. Most businesses seem to use the web-based Office365 interface now, rather than native Office.

I expect the biggest reasons businesses use Windows these days are momentum, and lower support costs (Linux is still less reliably than Windows on real laptop hardware).

I don’t think so. Windows is very easy to administer compared to both, Linux and Mac. There is also a compliance part that MS makes easier, though it’s a bit beyond what I really know.
I'm not an heavy o365 user but i'm almost happy on Debian KDE with thunderbird 148[0] (email only), teams-for-linux[1] (chat/calendar/whatever), Onedrive[2] and webdav (sharepoint)[3]. Libreoffice/Onlyoffice for documents.

[0] https://blog.thunderbird.net/2025/11/thunderbird-adds-native...

[1] https://github.com/IsmaelMartinez/teams-for-linux

[2] https://github.com/abraunegg/onedrive + https://github.com/bpozdena/OneDriveGUI

[3] Store the SP cookie via konqueror visiting the SP site, then open it in dolphin via "webdavs://CORP.sharepoint.com/sites/SITE/Shared Documents/" (sometimes the cookie is very short-lived)

I'd consider using it as Windows replacement. Exclusively Windows, as I don't care for the Linux applications, or anything Linux, at all. I don't enjoy being an admin, and the system is more stable without package management. Linux is a fossil from the age of the admin, best used today to emulate Windows, just like it runs under Android, as a HAL. If so, 2026 could be the year of the Linux desktop!

ReactOS is always almost there.. except it doesn't quite get there; same goes for Wine, as they have a lot in common?

Hm, speculating a bit, but it feels like NTSYNC is essentially a beginning of NT Subsystem for Linux, or maybe ntoskrnl as a kernel module. Feels like the most clean and fast way to port Windows, since the rest of the interfaces are in the user space in real Windows. Essentially should be almost without overhead: user: [gdi32.dll,user32.dll,kernel32.dll -> ntdll.dll] -> kernel: [ntoskrnl.ko]