Win32s was designed to bring some of the benefits of 32-bit computing to Windows 3.x. The 's' is for 'subset', and only the Win32 APIs that corresponded to Win16 APIs available in Windows 3.1 were available. But this was enough to support Freecell on Windows 3.1.
And not just Freecell. Here is a list of compatible programs; it includes Photoshop 4, Nero Burning ROM 4.0, Space Cadet Pinball, ICQ: http://stephan.win31.de/w32slist.htm#list
There are only few things that stop compilers producing Win32s-compatible code. Linking with CRTDLL.LIB will make even Visual Studio 2010 (and perhaps newer versions) produce a valid Win32s program.
Win32s is a sort of shim for 16-bit Windows that implements a subset (thus the "S") of Win32 allowing some binaries that targeted Win32 to launch and execute on 16-bit Windows.
In other words, in 1992 Win32s was a thing you could install on Windows 3.1 that implemented enough of the API of the as-yet-unreleased Windows NT so that some simple apps could launch and run.
It came with the Freecell game as a demo. Original Windows Freecell was only ever a 32-bit app.
It enabled developers working on apps for the forthcoming 32-bit Windows to test code on a released OS without the hassle of running on a beta OS that was, AFAICR, fairly tightly controlled, hard to get, wouldn't run on many computers in 1992-1993, and for which the supported hardware cost a lot: £5000 or so.
Whereas Win 3.1 could run on any old clunker.
It wasn't really for distribution, because not much worked and it wasn't very stable. I don't think anyone sane would try to ship a 32-bit app to Windows 3.1 users.
Fun fact #1: Win32s is still out there for download.
You can unzip it, extract FREECELL.EXE and a couple of other files, and enjoy the original tiny fast Freecell on Windows 11, even on Arm. Works great.
(The modern Freecell is a bloated thing that wants an internet connection and some online accounts.)
Fun fact #2: Win32s caused IBM real pain with OS/2 >=2. It sort of ran under WinOS2 inside OS/2 and that enabled IBM to claim in marketing materials that OS/2 could run 32-bit Windows apps without really blatantly lying.
(Aside for those too young to have used IBM OS/2... WinOS2 was a real licensed copy of Windows 3.0 and later Windows 3.1 which ran in a VM inside OS/2 >= 2, and it let OS/2 run 16-bit Windows apps on the OS/2 desktop. The IBM and Microsoft co-development agreement gave IBM a license to use Microsoft's code. So IBM modified Win3.x to run seamlessly on the OS/2 DOS VM. Later, IBM shipped a cheaper version of OS/2 Warp which didn't include WinOS2 but could integrate an existing installation of Windows 3.1 from your hard disk. This wasn't just cost-saving: it meant that OS/2 picked up and could run all your existing installed Windows applications. That could be a big time saving. Snag: Windows _drivers_ didn't work under OS/2 so it didn't always work. Bigger snag: you couldn't uninstall it again; it was a one-way migration. Even bigger snag: IBM gave away time-bombed demo versions. A time-bombed OS is not a great idea. Even if users liked it, and bought the full thing, they had to reinstall.)
So, MS kept "updating" Win32s so that it did naughty things with memory allocation that broke WinOS2.
IBM kept updating WinOS2 to run it.
Eventually MS succeeded and WinOS2 could not run Win32s 1.30.
Sorry I completely misremembered what Win32s was, but unfortunately I can’t edit/delete it now. But the context you provided is amazing, especially the OS/2 bits.
Freecell was NT-only and relatively niche until it was also released with Win95.