The Microsoft Layer for Unicode (MSLU) is a software library for legacy versions of Windows, simplifying the creation of Unicode-aware programs on Windows 9x (Windows 95, Windows 98, and Windows Me). It is also known as UnicoWS (Unicode for Windows 95/98/Me Systems) or by its filename, . Microsoft described it as providing "a layer over the Win32 API on Windows 95/98/Me so that a software developer can write a single Unicode version of their application and have it run properly on all platforms." Previously, developers had to either provide two separate versions of an application, or perform complex string translations and API decisions at runtime. In the present, UnicoWS can be used to compile newer software, which often expects Unicode support, (partially due to the influential "UTF-8 Everywhere" manifesto,) for legacy versions of Windows. UnicoWS can also be used at link time to compile software in languages that did not exist contemporaneously with Windows 9x and require Unicode support, like Rust. Alternatives exist, among them , "The Open Layer for Unicode for Windows", an abandonware yet free (MPL 1.1/GPL 2.0/LGPL 2.1 licensed) re-implementation of the MSLU by Mozilla. Availability The MSLU was announced in March 2001, and was first made available as a compatibility layer for Unicode-supporting code written for the then-new Windows XP RC1 in the July 2001 edition of Microsoft's Platform SDK. This drew criticism from developers who feel it was "too late", as it was released long past the peak popularity of Windows 9x and only one month before the release to manufacturing of Windows XP. MSLU was given the codename Godot, a reference to Waiting for Godot, a play centered around the failure of a man named "Godot" to arrive and the endless wait for him, because such a Unicode compatibility layer was thought—even inside Microsoft—to have been long overdue. How it works Normally, the Windows API provides both (ANSI escape codes and ASCII characters) and ("wide" character) versions of most subroutines. On Windows 9x, only the versions are implemented and attempting to call a version will fail with an error code that indicates that the function is unimplemented. On the Windows NT line of operating systems, both the and versions are implemented (however, the operating system generally only internally implements the version natively, and the version is usually a translation thunk to the version). By adding the to the link command-line before , , or