MSLU Minsk 2006
   HOME

TheInfoList



OR:

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 A filename or file name is a name used to uniquely identify a computer file in a directory structure. Different file systems impose different restrictions on filename lengths. A filename may (depending on the file system) include: * name &ndas ...
, . 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 In computer science, link time refers to the period of time, during the creation of a computer program, in which a linker is being applied to that program. Link time occurs after compile time and before runtime (when a program is executed). It i ...
to compile software in
languages Language is a structured system of communication. The structure of a language is its grammar and the free components are its vocabulary. Languages are the primary means by which humans communicate, and may be conveyed through a variety of met ...
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 Free may refer to: Concept * Freedom, having the ability to do something, without having to obey anyone/anything * Freethought, a position that beliefs should be formed only on the basis of logic, reason, and empiricism * Emancipate, to procur ...
( MPL 1.1/ GPL 2.0/
LGPL The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
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 A wide character is a computer character datatype that generally has a size greater than the traditional 8-bit character. The increased datatype size allows for the use of larger coded character sets. History During the 1960s, mainframe and m ...
) 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 any other supported Win32 system link library, the linker will resolve referenced symbols with the ones provided by instead. When a wide-character function is called for the first time at runtime, the function stub in first receives control and checks if it is running on a Windows 95/98/Me system: * If so, it dynamically loads (if it hasn't been loaded yet) and passes control to the corresponding thunking stub in there. The thunking stub translates the wide-character arguments into ANSI strings and then invokes the native version from the OS, and translates any returned strings back into wide character format. * If the OS natively supports the version (i.e. the Windows NT line of operating systems), then the function stub updates the in-memory symbol table so that future calls will directly invoke the native version without any more overhead. Because of this technique, when an application is linked against MSLU, only Windows 95/98/Me systems will need to rely on at runtime, and on all other versions of Windows there is only a slight performance penalty the first time a function is called. A common problem encountered occurs when some update packages or uninstall programs rename or delete either of the OLE libraries (, ), which are dependencies of . This results in some applications, such as OpenOffice.org, showing an error with the message "Application cannot start because one of the required libraries cannot be found." This occurs even if is installed in the system, as it cannot start without its dependencies (see also DLL hell).


References


External links


Microsoft


Official announcement of availability

MSDN Magazine article describing MSLU

MSDN programming reference pages

Michael Kaplan's blog entries about MSLU internals

Download of MSLU redistributable (UNICOWS.DLL)

Known bugs in each released MSLU version
— formerly maintained by Michael Scott Kaplan, an employee of Microsoft who was the principal developer and maintainer for MSLU.


Open source alternatives


libunicows
— provides an MIT-licensed version of only the UNICOWS.LIB link-library, but still requires the Microsoft-provided or Mozilla's .
opencow (previously MZLU)
— reimplements both the DLL and LIB link-library as MPL 1.1/GPL 2.0/LGPL 2.1, originally for and by Mozilla. {{DEFAULTSORT:Microsoft Layer For Unicode Layer for Unicode Unicode