From: cfortier@genghis.news (Chris Fortier)
Subject: Re: Does Borland plan to support NT on non-X86 archtectures?
Organization: Borland International, Inc.
Date: Thu, 12 Nov 1992 22:44:28 GMT


Borland has committed to supporting Windows NT.  Below is a very early(June
time frame) PUBLICLY AVAILABLE press release.

Chris Fortier
Borland C++ Run Time Library QA

cfortier@borland.com


============================================================================

Borland C++ for Win32:  A Technical Overview

 
Overview

Borland International is the leading supplier of object-oriented 
development tools for DOS and Windows.  With the introduction of 
Borland C++ 2.0 in February 1991, Borland pioneered the concept of a 
single package solution for Windows development with no SDK 
requirements.  With ObjectWindows, a component of Borland C++ & 
Application Frameworks, Borland provided the development community 
with a set of object-oriented building blocks for reducing the 
complexity of Windows development in C++.  Borland C++ 3.0 added the 
first Windows hosted development environment for C++.  Borland C++ 
3.1, introduced in June 1992 on the heels of Microsoft Windows 3.1, 
advances the state-of-the-art of Windows hosted development 
environments, adds 386 and C++ optimizations, and takes full 
advantage of Windows 3.1.

Now Borland is announcing support for 32-bit tools for Win32s and 
Windows NT -- Borland C++ for Win32.  Borland sees these 32-bit 
operating environments as critical to its installed base of 
professional developers and new customers who want to build 
industrial strength 32-bit applications for Windows.  Borland is 
leveraging its 32-bit compiler technology built for OS/2 to offer 
programmers advanced object- oriented development tools for the Win32 
and Win32s application programming interfaces.

This document gives a technical overview of the upcoming Borland C++ 
for Win32.  It describes the major features added to Borland C++ 
beyond its support for Windows 3.1 and how developers can plan for 
the changes required to port their applications to Win32s or Win32. 
This document assumes the reader has knowledge of Borland C++ 3.1 and 
Windows programming in general.  If more information on Borland C++ 
is necessary, please refer to the Borland C++ & Application 
Frameworks Reviewer's Guide available from Borland.

Win32 and Win32s

Win32 is an Applications Programming Interface (API) for 32-bit 
versions of Windows.  The API widens the parameters of the existing 
16 Windows API to 32-bits and adds many functional capabilities with 
new API calls.  The additional functionality of Win32 includes 
support for a 32-bit linear address space, pre- emptive multitasking, 
networking, security, and enhanced graphics functions among other 
capabilities.  Win32 is an API that will first appear on top of 
Microsoft's new operating system technology NT (new technology).  The 
first release of this API will appear in Windows NT, which will have 
the Windows 3.1 user interface model and the full Win32 API.

Win32s is a subset of the Win32 API that can be implemented on top of 
the existing 16-bit Windows running in enhanced (386) mode.  Without 
changing the underlying DOS operating system, only the widened 
Windows 3.1 API for a 32-bit linear address can be supported. 
Supporting this capability requires device drivers (VxDs) to handle 
memory management and a DLL to handle a mapping of the Win32 function 
calls to their 16-bit counterparts.  The benefits of this technology 
are two fold: first, a Win32s executable is the same format (Portable 
Executable or PE) as an NT executable so it can run unchanged in both 
environments; and second, applications can take advantage of the 
performance gains associated with a 32-bit linear address space.  As 
a result, application developers can build programs that take 
advantage of the 386 while still appealing to the broad installed 
base of Windows 3.1 users.

------------------------------------------------------------------------- 
UI  |  Windows 3.1     |  Windows 3.1   |   Windows 3.1 |  Windows 3.x 
----|------------------|----------------|---------------|---------------- 
API |  16-bit Win API  |    Win32s      |      Win32    |     Win32 
    |                  | 16-bit Win API |               | 
----|------------------|----------------|---------------|---------------- 
OS  |  16-bit DOS      |  16-bit DOS    |       NT      |NT or 32-bit DOS 
-------------------------------------------------------------------------

The above table depicts the chronological evolution of Windows as it 
might be viewed by developers. It helps delineate the relationship of 
the user interface model, i.e., the look and feel, to the API, and 
the API to the operating system.  Note that the user interface model 
refers to Windows 3.1.  The model can be thought of as the Program 
Manager, the applets, and the general look to user interface 
components.  The API is the set of functions that programmers use to 
build their applications.  The operating system refers to the core 
set of functions that are called to manage memory, handle file I/O, 
get input from a variety of devices including the keyboard and the 
mouse, and handle the display.

The full Win32 API requires advanced operating system functions that 
are not available in 16-bit DOS, e.g., support for multi-threading. 
Win32s is an intermediate step until a 32-bit version of DOS that 
supports more of the Win32 API.  The additional overhead of thunking 
down to 16-bit Windows calls under Win32s will reduce some of the 
increased performance gained from running a 32-bit application.  When 
Microsoft releases a 32-bit version of DOS, a 32-bit version of 
Windows (3.x) will enable Win32 applications to run on DOS without a 
thunking layer.  Product Overview 
  
Borland C++ for Win32 is a new generation of Borland C++ that only 
targets applications for Win32s and NT on Intel architectures.  The 
first generation of Borland C++ for Win32 is focused on targeting 
these platforms exclusively.  New functionality will appear in areas 
of the product where it is necessary to support 32-bit development 
under Win32s or NT, such as the addition of exception handling or 
multi- threaded libraries.  Other new features have been added to aid 
programmers in moving between 16-bit Windows development and Win32 
such as an enhanced version of the ObjectWindows application 
framework that supports 16 to 32-bit source code portability and 
expanded coverage of the Windows API.  The goal for Borland C++ for 
Win32 is to provide a world class development environment for C and 
C++ that reduces the complexity of developing 32-bit Windows 
applications -- all in a single box solution.

 
Compiler 

Borland C++ for Win32 features a 32-bit hosted compiler that supports 
ANSI C and AT&T C++ 3.0.  The C++ compiler supports a native code 
implementation of templates and is the most compliant C++ 
implementation available on PCs.  Borland C++ will continue to push 
the limits of speed compilation with its exceptionally fast 
front-end/back-end and precompiled headers technology.  Borland C++ 
speed of compilation only decreases by 50% with full optimizations.  

The new 32-bit optimization technology features highly sophisticated 
register allocation with priority based coloring.  The optimizer uses 
state-of-the-art data flow and data dependency analysis to achieve 
superior code quality for the Intel 386/486 architecture.  The 
compiler provides additional debugging information to enhance the 
debugging of optimized code.  

The NT kernel requires support for structured exception handling to 
service a variety of error conditions that can occur in an 
application such as floating point exceptions.  Exception handling is 
a generic mechanism available to applications to handle error 
conditions as non local exits from a procedure.  Borland C++ for 
Win32 has support for exception handling.

 
Integrated Development Environment

Borland C++ for Windows is the Windows hosted integrated development 
environment.  It features a single environment in which you can edit, 
compile, resource compile, link and run your application.  The macro 
based editor features color syntax highlighting so that you can 
control the display of C/C++ syntax with fonts and color.  Borland 
C++ for Windows has a project manager that functions as a visual make 
facility for building your applications.  The project manager 
understands how to process each of the files that make up your 
application to produce an executable -- to compile source files, 
resource compile .RC files, and to use DEF files in the link process. 
It also has a browser to allow you to display your class hierarchy or 
get more details on the structure of classes and variables.

Borland C++ for Windows is a Windows 3.1 application that runs in 
using WOW (Windows on Windows) box under Windows NT.  It seamlessly 
invokes the 32-bit compiler to generate applications for Win32s or 
Windows NT.

ObjectWindows/32

The ObjectWindows application framework has simplified Windows 
development for thousands of programmers.  This new version extends 
on the basic concepts of ObjectWindows by encapsulating more of the 
Windows API.  The Graphics Device Interface (GDI) is encapsulated to 
simplify the use of brushes, pens, fonts, bitmaps and new 
functionality introduced by Win32 under NT such as Bezier curves and 
paths.  In addition, often used services such as Object Linking and 
Embedding (OLE) and Dynamic Data Exchange (DDE) will also be 
encapsulated in ObjectWindows/32.

ObjectWindows/32 will feature single source code for 16-bit Windows 
and Win32 applications.  This capability will allow programmers to 
build applications for 16-bit Windows without preventing their 
migration to Win32s or Windows NT.  Applications built with the 
current 16-bit ObjectWindows will easily migrate to ObjectWindows/32 
because many of the changes forced by Win32 are already encapsulated 
in ObjectWindows. 

For example, changes to the packing of wParam and lParam impact the 
way many messages are processed.  But the most common messages that 
are affected, such as WM_COMMAND, are encapsulated in classes within 
ObjectWindows.  Consequently, programs written to the ObjectWindows 
application framework will experience a minimum of change porting to 
ObjectWindows/32.

Portability Considerations

Programmers interested in porting their existing ObjectWindows 
applications to ObjectWindows/32 when it is available can prepare by 
following "Portable Coding Techniques" in the Microsoft Overview of 
Win32 Applications Programming Interface.  Borland highly recommends 
the use of the STRICT macro to ensure better compiler type checking. 
The STRICT macro is supported in the version of ObjectWindows that 
comes with Borland C++ & Application Frameworks 3.1.

Command-Line Tools

Although Borland pioneered the integrated development environment, 
Borland C++ for Win32 also comes with a complete complement of 
command-line tools including a compiler, linker, UNIX like MAKE 
facility, and GREP.  These are all 32-bit tools with greater 
performance and capacity than their 16-bit counterparts.  Run Time 
Library

The run time library supports the ANSI C standard and AT&T C++ 3.0 
including streams and complex numbers as well as a complete set of 
container classes.  It has a high degree of compatibility with 
Microsoft C so that applications built with that compiler can easily 
be ported to Borland C++.  The runtime library has added support for 
multiple threads.  

Debugger and Tools

Turbo Debugger

Turbo Debugger has always featured the most advanced user interface 
for debugging C and C++.  It allows the user to inspect data 
structures with a simple point and click metaphor.  It has a 
hierarchy browser to aid C++ debugging and supports C++ expression 
evaluation.  Debugging Windows messages is integrated into the 
debugging model. Turbo Debugger for Windows NT adds debugging support 
for multiple threads.

Resource Workshop

Resource Workshop is Borland's integrated resource creation, editing 
and management tool.  It provides the developer with multiple 
representations of resources to allow the most convenient editing 
paradigm.  This tool integrates the editing of all types of resources 
into a single package with a project manager for managing resources. 
Resource Workshop supports the new 32-bit resources required by 
Win32.  

Resource Workshop also includes the Borland Windows Custom Controls 
(BWCC) package for Win32.  This predefined set of custom controls can 
be added to your applications using Resource Workshop and give your 
application a more appealing look than the standard Windows controls. 
Applications currently using BWCC under Windows 3.1 will have an 
equivalent set of controls running under Windows NT.

Turbo Assembler

Borland C++ for Win32 comes with a 32-bit version of Turbo Assembler 
that supports 386 and 486 assembly language.  Turbo Assembler has 
optimizations to reduce NOPs from assembler generated code and 
object-oriented extensions.

 
SDK Tools

Borland will provide a complement of SDK tools in addition to 
Resource Workshop.  Tools such as WinSight for tracking messages and 
other tools will be available.  Borland will also license the 
necessary tools from Microsoft, such as Win32s, to provide a complete 
array of software and documentation for the development of Win32s and 
Win32 APIs.

Documentation

Documentation for Borland C++ for Win32 will include a comprehensive 
array of manuals on using Borland's development environment and tools 
including Win32 API.

 
Summary

Borland C++ for Win32 is Borland's premier entry into the 32-bit 
Windows programming world.  Borland expects Win32s will be a very 
important mass market delivery environment in 1993 and for Windows NT 
will be an ideal development environment for professional developers. 
Borland is committed to providing its leading edge C++ development 
tools for these operating environments within twelve weeks of their 
commercial availability.  Borland tools are distinguished in their 
advanced implementation of C++, compile speed, Windows hosted 
development environment, object-oriented application framework and 
the surrounding toolset that professionals have come to expect.  With 
Borland C++ for Win32, Borland will continue to advance the 
state-of-the-art in development tools.

  

Question And Answers:  Borland C++ for Win32

 
Q: Do I need the NT Software Developer's Kit (SDK) to use Borland C++ 
for Win32?

A: Yes.  To use the pre-release version Borland C++ for Win32, you 
must first be a tester of the Windows/NT SDK.  Beta test copies can 
be obtained from Microsoft by calling Microsoft Developer Services at 
1 800 227-4679.  Once Borland C++ for Win32 is commercially 
available, no SDK will be required.

Q: How much will Borland C++ for Win32 cost?

A: The price of the product will be announced when Borland C++ for 
Win32 is released commercially.  Pre-release versions of Borland C++ 
for Win32 will be available for a fee as part of our Early Experience 
Program.

Q: What new features will Borland C++ for Win32 have?

A: The most notable additional features in Borland C++ for Win32 are 
a 32-bit optimizing C and C++ compiler, a 16/32-bit capable version 
of the ObjectWindows application framework, multiple thread support 
in the runtime library and Turbo Debugger, and a mechanism for 
structured exception handling. 

Q: How can I get Borland C++ for Win32?  When?

A: For those developers who need Borland tools for Win32s and Windows 
NT, there will be an Early Experience Program (EEP) for Borland C++ 
for Win32.  This fee-based program will start in the Q4 1992. A 
request form is included in the Borland attendee kit or at the 
Borland Exhibit booth. This form is your request for more information 
and for an application for the Early Experience Program. We will take 
applications until August 15, 1992. There will be a limited number of 
participants in this program.

You can also send a request letter or electronic mail message to:

    David Intersimone 
    Director, Developer Relations 
    Languages Business Unit 
    Borland International 
    1700 Green Hills Road 
    Scotts Valley, CA 95066 
    MCI: 297-2255 
    Compuserve: 76067,512

Q: How do I get Borland C++ for Win32 if I am already a beta tester 
for Borland C++?

A: Beta testers of Borland C++ will be given a separate application 
for testing Borland C++ for Win32.  For more information, contact 
your Borland beta administrator.

 
Q: When will Borland C++ for Win32 be commercially available?

A: Borland C++ for Win32 will be commercially available within twelve 
weeks after Microsoft releases Windows/NT.  

Q: Will Borland C++ for Win32 include ObjectWindows?

A: Yes.  ObjectWindows has been enhanced to support 16 and 32-bit 
Windows development and will be included in Borland C++ for Win32.

Q: Will ObjectWindows/32 support the advanced Win32 features?

A: ObjectWindows/32 will contain a number of new features, including 
GDI encapsulation and OLE support.  When it makes sense, we will 
encapsulate the features of the extended API.  In either case, the 
complete API will be available to the user of ObjectWindows/32.

Q: Is there an upgrade price to Borland C++ for Win32?

A: Borland will provide an upgrade path for users of Borland C++ 3.1 
and for users of Borland C++ for OS/2.

Q: Will Borland C++ for Win32 also generate 32-bit DPMI applications? 
OS/2 1.x?  OS/2 2.0?

A: The platforms targeted by Borland C++ for Win32 will be Win32 and 
Win32s.  

Q: When will Turbo Pascal for Win32 be available?

A: Turbo Pascal will support Win32s in a future release but no 
announcements as to availability are being made at this time.

Q: Will Borland C++ for Win32 support structured exception handling?

A: Yes.  Borland C++ for Win32 will have a mechanism for implementing 
structured exception handling. 

Q: Is Borland's Win32s compatible with Microsoft's Win32s?

A: Borland is licensing Win32s from Microsoft. 

Q: When will Win32s be available for beta test?

A: Borland is working with Microsoft to determine that date.

Q: Can I mix 16-bit and 32-bit code in an application with Borland 
C++ for Win32?

A: Currently, neither NT nor Win32s support this feature.

Q: Will Borland C++ for Win32 support multiple threads?

A: Yes, Borland C++ for Win32 will fully support multiple threads in 
the runtime library and in the debugger.  

Q: Are my ObjectWindows (OWL) applications for Windows 3.1 portable 
to NT? 

A: We will make the transition from 16-bit OWL programs to 32-bit 
Win32 OWL programs as smooth as possible.  If a porting tool is 
necessary, one will be provided.  It is our intent to allow easy 
migration to Win32. 

Q: Will Borland C++ for Win32 support the Microsoft Object Mapping? 
Will it be link compatible?

A: No.  Our C++ object format will remain different from Microsoft's 
and will continue to offer advantages in performance, size and 
implementation of C++.  We will maintain DLL compatibility for C 
programs.

Q: Will Borland C++ for Win32 support the Microsoft Foundation 
Classes?

A: Borland C++ currently supports the Microsoft Foundation Classes 
provided that necessary changes are made to make the source code 
compliant to the C++ language definition (v. 2.1 or greater) and to 
remove the compiler dependent implementation issues.  As long as 
Microsoft makes the foundation classes C++ compliant, Borland C++ 
will be able to support them.

Q: What documentation comes with Borland C++ for Win32?

A: Borland will provide documentation to describe the use of its 
tools under Win32 and the Win32 API.  Documentation on the internals 
of Win32 will be available separately from Microsoft and third party 
publishers.

Q: Will I need a CD ROM drive to use Borland C++ for Win32?

A: As with NT, the primary medium for Borland C++ will be a CD ROM. 
Borland C++ will also be available in both 5.25 and 3.5" diskette 
formats.

Q: What is Win32 and how does it differ from NT?

A: Win32 is a 32-bit applications programming interface.  It is an 
extension of the existing 16-bit Windows API that includes additional 
functionality such as multitasking, networking, Bezier curves, 
security, etc.  NT is a new portable operating system kernel from 
Microsoft that supports the Win32 API.  

Q: What is Win32s?

A: Win32s is a subset of the Win32 applications programming interface 
that can be implemented under Windows 3.1 while it is running on DOS. 
Win32s applications have the same executable format as NT 
applications and thus can run under either Windows 3.1 or Windows/NT. 
For a more detailed description of Win32s, see the Borland C++ for 
Win32: A Technical Overview document.

Q: Will I need to sign a non-disclosure to get support for NT?

A: Yes.  Borland will be sponsoring an Early Experience Program for 
Win32 development.  To participate in this program, you will need to 
sign a non-disclosure agreement.  You will also need to obtain the NT 
SDK beta available from Microsoft.

 
Q: Will Borland include Brief in Borland C++ for Win32?

A: Other tools and utilities may be provided with Borland C++ for 
Win32.  The details of what additional tools the product will contain 
will be available to the Early Experience Program participants.

Q: Will Borland include source code control in Borland C++ for Win32?

A: Other tools and utilities may be provided with Borland C++ for 
Win32.  The details of what additional tools the product will contain 
will be available to the Early Experience Program participants.

Q: Will Borland C++ for Win32 support MIPS?  Alpha?

A: Not at this time.  Borland's development tools efforts are focused 
on building the best of breed tools for the Intel architecture.

Q: Will there be a Resource Workshop for NT?

A: Yes.  Resource Workshop is an integral part of the Borland C++ 
toolset.  There will be an NT version of Resource Workshop included 
in Borland C++ for Win32.

Q: Will Borland C++ 3.1 support Win32s? NT?

A: Borland C++ 3.1 is a 16-bit compiler and thus cannot support 
Win32s or NT.  Support for these platforms will only be available in 
Borland C++ for Win32.

Q: When will Borland's other applications be available for NT and 
Win32s?

A: Borland believes that these platforms will be important 
application environments in the future but has nothing to announce at 
this time.