The Microsoft Layer for Unicode (MSLU) is a
software library
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and sub ...
for legacy versions of Windows, simplifying the creation of
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, ...
-aware programs on
Windows 9x
Windows 9x is a generic term referring to a series of Microsoft Windows computer operating systems produced from 1995 to 2000, which were based on the Windows 95 kernel and its underlying foundation of MS-DOS, both of which were updated in sub ...
(
Windows 95
Windows 95 is a consumer-oriented operating system developed by Microsoft as part of its Windows 9x family of operating systems. The first operating system in the 9x family, it is the successor to Windows 3.1x, and was released to manufactu ...
,
Windows 98
Windows 98 is a consumer-oriented operating system developed by Microsoft as part of its Windows 9x family of Microsoft Windows operating systems. The second operating system in the 9x line, it is the successor to Windows 95, and was released ...
, and
Windows Me
Windows Millennium Edition, or Windows Me (marketed with the pronunciation of the pronoun "me"), is an operating system developed by Microsoft as part of its Windows 9x family of Microsoft Windows operating systems. It is the successor to Win ...
). 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 &nda ...
, .
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
UTF-8 is a variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit''.
UTF-8 is capable of ...
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 ...
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
Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH), ...
.
Alternatives exist, among them ,
The Open Layer for Unicode for Windows, an
abandonware
Abandonware is a product, typically software, ignored by its owner and manufacturer, and for which no official support is available.
Within an intellectual rights contextual background, abandonware is a software (or hardware) sub-case of the ...
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 2.1 licensed) re-implementation of the MSLU by
Mozilla
Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, w ...
.
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
A software release life cycle is the sum of the stages of development and maturity for a piece of computer software ranging from its initial development to its eventual release, and including updated versions of the released version to help impro ...
of Windows XP.
MSLU was given the
codename
A code name, call sign or cryptonym is a code word or name used, sometimes clandestinely, to refer to another name, word, project, or person. Code names are often used for military purposes, or in espionage. They may also be used in industrial c ...
''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
The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations ...
provides both (
ANSI
The American National Standards Institute (ANSI ) is a private non-profit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The organ ...
escape codes and
ASCII
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
characters) and (
"wide" character) versions of most
subroutines
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions may ...
. 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
Windows NT is a proprietary graphical operating system produced by Microsoft, the first version of which was released on July 27, 1993. It is a processor-independent, multiprocessing and multi-user operating system.
The first version of Wi ...
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
In computer programming, a thunk is a subroutine used to inject a calculation into another subroutine. Thunks are primarily used to delay a calculation until its result is needed, or to insert operations at the beginning or end of the other subro ...
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 availabilityMSDN Magazine article describing MSLUMSDN programming reference pagesMichael Kaplan's blog entries about MSLU internalsDownload 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
Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, w ...
'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