Win32s es un entorno de ejecución de aplicaciones de 32 bits para los sistemas operativos Microsoft Windows 3.1 y 3.11 . Permitía que algunas aplicaciones de 32 bits se ejecutaran en el sistema operativo de 16 bits mediante procesadores de llamadas . Una versión beta de Win32s estuvo disponible en octubre de 1992. [1] La versión 1.10 se lanzó en julio de 1993 [2] simultáneamente con Windows NT 3.1 .
Win32s fue concebido como una implementación parcial de la API Win32 de Windows tal como existía en las primeras versiones de Windows NT . [3]
La "s" en Win32s significa subconjunto , ya que Win32s carecía de varias funciones de Windows NT, incluyendo multi-threading , E/S asíncrona , funciones de puerto serie más nuevas y muchas extensiones GDI . Esto generalmente lo limitaba a "aplicaciones Win32s" que estaban diseñadas específicamente para la plataforma Win32s, [4] aunque algunos programas Win32 estándar funcionaban correctamente, incluyendo 3D Pinball Space Cadet de Microsoft y algunos de los applets incluidos en Windows 95. [5] Las primeras versiones de Internet Explorer (hasta la versión 5) también eran compatibles con Win32s, aunque también existían en formato de 16 bits. [5] Generalmente, para que una aplicación de 32 bits fuera compatible con Win32s, no tenía que usar más de 16 MB de memoria o ninguna característica extendida como DirectX .
Win32s hereda muchas de las limitaciones del entorno Win16. Las aplicaciones Win32 reales se ejecutan dentro de un espacio de direcciones virtual privado, mientras que Windows 3.x utilizaba un espacio de direcciones compartido entre todas las aplicaciones en ejecución. Una aplicación que se ejecuta en Win32s tiene el espacio de direcciones compartido y las características de multitarea cooperativa de Windows 3.1. En consecuencia, para que una aplicación Win32 se ejecute en Win32s, debe contener información de reubicación .
Una técnica denominada thunking es fundamental para la implementación de sistemas operativos Win32 y Chicago-kernel, que son Windows 95 , Windows 98 y Windows ME . Sin embargo, permitir el thunking a nivel de usuario complica enormemente los intentos de proporcionar una gestión de memoria estable o protección de memoria a nivel de todo el sistema, así como la seguridad del núcleo o kernel; esto permite que aplicaciones mal escritas socaven la estabilidad del sistema en sistemas Win32 y Chicago-kernel. Las versiones de 32 bits de Windows NT proporcionan de forma transparente una máquina virtual para ejecutar aplicaciones Win16, aunque esta característica se eliminó de las versiones de 64 bits de Windows.
Las aplicaciones compatibles con Win32s se podían crear utilizando las herramientas de desarrollo de Microsoft, así como al menos Borland C++ 4.x y Symantec C++ (ahora Digital Mars C++). Sin embargo, varias opciones de compilación de programas (como la información de reubicación de EXE) y DLL que estaban implícitas en Windows NT 3.1 deben incluirse con la aplicación en Win32s. Microsoft dejó de ofrecer soporte para Win32s en Visual C++ versión 4.2, publicada a fines de 1996.
Win32s incluyó una implementación del juego de cartas FreeCell como aplicación de ejemplo, un par de años antes de que el juego se hiciera famoso con su inclusión en Windows 95 .
Warcraft II: Tides of Darkness , un juego para DOS, incluía un editor de niveles que requería Win32s para funcionar. El editor utilizaba una interfaz gráfica de usuario de Windows para mostrar los mapas grandes, ya que Windows ya manejaba los modos gráficos de alta resolución. La versión 2 del navegador web NCSA Mosaic también requería Win32s. [6]
Las aplicaciones C# pueden compilarse mediante el compilador CoreRT en código Win32 que es aceptado por el enlazador Visual C++ de 1994. Esta combinación produce ejecutables Win32 que pueden ejecutarse en Windows 3.1 con Win32. [7]
Todavía es posible encontrar archivos Win32 mediante motores de búsqueda web; generalmente, el archivo de instalación utilizado es PW1118.EXE.
$ sha512sum pw1118.exe 31b532f324a1eebd1073e043e0c81cb131ad40681b1a7e5e73f881369eafa38ba9d91a541d99fd8b96e937f0e93bfd17cf9c26cc77daf8c77d7c9 df803b3aef9
Los desarrolladores deben asegurarse de instalar OLE si necesitan un manejo consistente del portapapeles. Muchas aplicaciones que necesitan que OLE sea compatible (es decir, que se configure su servidor OLE) deben reinstalarse. Win32s también se incluyó con algunos de los primeros programas Win32.