Microsoft Layer For Unicode
   HOME

TheInfoList



OR:

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, wh ...
-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 su ...
(
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 manufacturi ...
,
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 to ...
, 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 Windo ...
). 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 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 th ...
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 An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
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 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( ...
. 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 ( MPL 1.1/
GPL The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
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 In software engineering, a compatibility layer is an interface that allows binaries for a legacy or foreign system to run on a host system. This translates system calls for the foreign system into native system calls for the host system. With so ...
for Unicode-supporting code written for the then-new Windows XP RC1 in the July 2001 edition of Microsoft's
Platform SDK Microsoft Windows SDK, and its predecessors Platform SDK, and .NET Framework SDK, are software development kits (SDKs) from Microsoft that contain documentation, header files, libraries, samples and tools required to develop applications for Micr ...
. This drew criticism from developers who feel it was "
too late Too Late may refer to: Film and theatre *'' Too Late (1914 film)'', American film written by Winifred Dunn * ''Too Late'' (1996 film), a Romanian film * ''Too Late'' (2000 film), a Portuguese film * ''Too Late'' (2015 film), an American film * ' ...
", 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 th ...
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 organi ...
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 Win ...
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 subr ...
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 In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier (or symbols), constants, procedures and functions in a program's source code is associated with info ...
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 OpenOffice.org (OOo), commonly known as OpenOffice, is a discontinued open-source office suite. Active successor projects include LibreOffice (the most actively developed), Apache OpenOffice, Collabora Online (enterprise ready LibreOffice) a ...
, 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 In computing, DLL Hell is a term for the complications that arise when one works with dynamic-link libraries (DLLs) used with Microsoft Windows operating systems, particularly legacy 16-bit editions, which all run in a single memory space. DLL Hel ...
).


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 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