From: Sue and Maurice Bauhahn (bauhahnm@clara.net)
Date: Wed Dec 03 2003 - 01:21:13 EST
RE: MS Windows and Unicode 4.0 ?Thank you, Chris, for the background.
Fascinating reading.
Gratefully,
Maurice
-----Original Message-----
From: unicode-bounce@unicode.org [mailto:unicode-bounce@unicode.org]On
Behalf Of Chris Pratley
Sent: 02 December 2003 21:08
To: verdy_p@wanadoo.fr; Michael (michka) Kaplan
Cc: Unicode@Unicode.Org
Subject: RE: MS Windows and Unicode 4.0 ?
A few corrections to your version of history below +++
Chris Pratley
Group Program Manager,
Microsoft Word, Publisher, OneNote
_____________________________________________
From: unicode-bounce@unicode.org [mailto:unicode-bounce@unicode.org] On
Behalf Of Philippe Verdy
Sent: December 2, 2003 5:03 AM
To: Michael (michka) Kaplan
Cc: Unicode@Unicode.Org
Subject: RE: MS Windows and Unicode 4.0 ?
Michael (michka) Kaplan writes:
> I know I'll end up regretting this....
Why do you regret it? I know that you work for Microsoft, but I don't
think you can imply things that Microsoft has not claimed to have done in
its systems.
> From: "Philippe Verdy" <verdy_p@wanadoo.fr>
>
> > That far? So why isn't there correct support of UTF-16 on Windows
> > 95OSR2, 98, 98SE and ME (notably for their FAT32 filesystem)? I can
> > understand it for Windows 95 and 95OSR1 as they were designed before,
> > and may be also for the 95OSR2 version despite it was published in
> > late 1997, one year after UTF-16 was published.
>
> If you have programmed on Win9x for any length of time then you know the
> answer to this and it is simply a straw man to ask why such support was
> not done. Its the fundamental nature of what that system does and it
> would require a rewrite to support Unicode -- in fact, it did require a
> rewrite (called NT).
NT4 predates Windows 95, and offered a whole set of Unicode APIs.
You can't say that NT is a rewrite of Windows 95, as it is simply the
reverse:
Windows 95 was built to integrate the Win32 Unicode APIs of NT, and ease
the compatibility of programs written for NT4 environment. That's why it
contains the MultiByteToWideChar() and WideCharToMultiByte() functions which
are used to convert between Unicode (in fact only UTF-16 in Windows 95) and
other SBCS or DBCS encodings (in fact only the OEMCP and ANSICP codepages
for the localized version of the system in Windows 95).
+++Win95 was created to be a successor to Win3.1 and to support Win32
APIs. It was not created with a purpose of supporting *Unicode* (Wide) Win32
APIs that NT supported. Win 3.x and Win9x are code-page based internally,
and by definition, Unicode support would be limited to what could be
converted to a code page.
+++The few Unicode APIs that exist in Win9x are there because certain
individuals inside Microsoft insisted that they be put in, notably a few
people in Windows and the Word team, who knew that if the OS shipped with
zero Unicode support, it would be really hard to build any kind of Unicode
app in the future. The seven APIs that did get implemented (even in their
original buggy state) were enough to make it reasonable for Office97 core
apps to become full Unicode apps internally.
+++You are correct that NT was not a rewrite of Win9x. It was instead a
rewrite of the whole family of Windows that was based on DOS. That's why the
project was called OS/2 initially, then abandoned and redone as NT more or
less as you describe. MichKa's phrasing was a shorthand for this whole
process. "NT was a rewrite of Windows" (of course, that is unfair to NT -
rewrite implies it was redone to the same specs. In fact NT was entirely
different and only later was support for the Win 3.x (later 9x) GUI and
Win32 APIs grafted on. The Win32 APIs themselves did a kind of roundtrip
through NT. They started life as Win16 on Win 3.x (and before), then went to
NT where they became Win32 because NT was 32 bit and implemented internally
as Unicode, which prompted the NT team to simply provide direct (and faster)
access as "W" APIs (there were few people at that time who would consider
building this imaginary thing called a "Unicode app" so the W APIs were sort
of academic, for completeness. Then they were back-ported to Win3.x using
the Win32s library/thunking layer, and finally implemented natively in
Win9x, but without the "W" versions in large part since these were still
considered by most to be an academic thing. There was even a version of
Office for NT 3.1/3.5x that was based on Office 4.3 (Word 6, Excel 5, etc.)
but was 32 bit, non-Unicode, and ran natively on NT. This later became the
basis for Office95, which was the 32 bit Office that was released with
Win95 - still not Unicode. Finally Office97, which was started at the same
time as Office95 but continued for almost three years, shipped the first set
of Unicode apps designed for NT but which could run using a shim on Win9x,
using its very limited "W" API support, which if you remember was jammed in
near the end of the Win9x project by the aforementioned Unicode enthusiasts
inside Microsoft.
Of course the kernel of Windows 95 is basically the same as Windows for
Workgroup 3.11, including for its drivers (but Windows 95 innovated in its
new Plug&Play architecture with simpler drivers, a technology that was later
retrofitted in Windows 2000, or integrated after full debugging as I'm quite
sure that it was developped to be later compatible and integrable in the NT
kernel).
The FAT32 filesystem (or more precisely the support of UTF-16 encoded LFN)
was also new in Windows 95: it should have integrated approximately the same
file naming conventions as in NT4, without needing the integration of the
NTFS filesystem in Windows 95. Full support for FAT32 was later integrated
in Windows 2000.
If you want to say that NT is a rewrite, you must speak about NT 3.0 which
was rewritten from the Windows 3.1+MSDOS 6 base (in parallel with Windows
for WorkGroup 3.11 which was, despite its minor version number, a really
_major_ evolution from Windows 3.1 and has been _much_ more innovative than
Windows 95 for the kernel part as WfW already integrated support for
multiple VMs), and to integrate kernel features found in Unix, MVS and VMS
systems. The origin of NT is a split from the development project of OS/2
initiated by IBM and initially written jointly between IBM and Microsoft.
Microsoft had to rewrite all in NT when he decided to exit the OS/2 joint
project, to leave the legacy dependance with IBM in the MSDOS kernel system
(adapted to multitasking in OS/2 using the VM concept which was possible
starting with the Intel 80286 processor, and experimented in some "enhanced
multitasking DOS" systems).
The kernel support of "wide chars" (even if it was still not named
Unicode) was already a developement target in OS/2, and it's quite normal
that it was also integrated in NT when "wide chars" became synonymous of
UCS-2 in Windows NT kernel.
__________________________________________________________________
<< ella for Spam Control >> has removed Spam messages and set aside
Newsletters for me
You can use it too - and it's FREE! http://www.ellaforspam.com
This archive was generated by hypermail 2.1.5 : Wed Dec 03 2003 - 02:04:14 EST