Digital Mars C/C++ Version Info
by Walter Bright
Copyright (c) 1997-2002 by Digital Mars. All Rights Reserved.
www.digitalmars.com
Contents:
WHAT'S NEW FOR C/C++ 8.29
Jul 31, 2002
- C++
- Implemented member template functions.
- Implemented member template classes.
- Implemented class template partial specializations.
- Implemented partial ordering of class template specializations.
- Implemented class template explicit specializations.
- Implemented template friends.
- Implemented new C++ 98 for statement scoping rules. This
can be disabled with -A- (for backwards compatibility with
old code), and then re-enabled with -As.
- For C++, changed 3rd operand of conditional operator from
a conditional-expression to an assignment-expression.
There is no switch to revert to the old behavior.
- Operator delete can now take cv-qualified pointers.
- main() now defaults to return 0; if no return
is specified.
- Implemented function try blocks.
- Function templates instantiations that match non-template function
declarations are now distinct functions. This can break some existing
code, but the source fixes are worth doing to be standard compliant.
Function template instantiations
now include the template-argument-list as part of the function signature.
- Added -wc switch which warns on every occurance of a C style
cast which should be replaced with the appropriate C++ style cast.
- Mangled names can now be considerably longer.
- Fixed el 2005 bug
- C and C++
- Implemented universal character names for strings and character literals.
- Fixed iasm 2585 bug
- Fixed error parsing REP MOVSD/CMPSD instructions
- Unrecognized preprocessing directives are now ignored in false
conditionals (previously, an error was issued). -A will
cause them to be an error.
- Fixed problem with -s stack probes in 16 bit code.
- Non-existing directories are now created as necessary when
writing output files. This is convenient when writing .obj files
to temporary directories.
WHAT'S NEW FOR C/C++ 8.28
May 22, 2002
- Added empty base class optimization.
- Added -Jb compiler switch to disable empty base class optimization
for compatibility with code compiled with earlier compilers.
- Fixed cgobj 3034 bug
- Fixed cg87 256 bug
- Added:
#pragma DMC mfc
for compatibility with MFC 4.2.
- Added -Aa- for compatibility with MFC 4.2.
- Empty array members of structs, such as:
char string[];
are now aligned based on the array subtype, rather
than the widest type.
- Fixed bug with unsigned to double conversion.
- Fixed problem with handle passed to DllMain().
WHAT'S NEW FOR C/C++ 8.27
Mar 6, 2002
- Renamed dm\include\strstrea.h to dm\include\strstream.h
- Fixed problem with disp_cursorcol and standout mode in win32 version
- Fixed bug with inline asm and copy propagation
- Fixed eh 683 bug
- Fixed cod1 1278 bug
- Fixed cg87 217 bug
- Now aligns double autos for faster floating point execution
- Added inline assembler support for Intel SSE and SSE2 instructions
- Added inline assembler support for AMD 3DNOW! instructions
- Added new instructions to OBJ2ASM disassembler
WHAT'S NEW FOR C/C++ 8.26
Jan 23, 2002
- Added \dm\include\zmouse.h
- Fixed bug in float.h
- Improved code generation for long long's.
- Fixed long double conversions and unsigned long long's.
- Fixed tentative definition bug.
WHAT'S NEW FOR C/C++ 8.25
Dec 14, 2001
- Added MicroEmacs text editor.
- Fixed IDDE Resource Editor.
- Fixed startup code to be compatible with D.
For C:
- Fixed bugs with 16 bit code generation.
WHAT'S NEW FOR C/C++ 8.23
For C++:
- Fixed eh 682 bug.
- Fixes for problems with template instantiation and exception handling.
For C:
- Fixed problems with C, -A, preprocessor, and //.
- Fixed dos_setdrive() bug for win32.
- Fix for _inpw() and _outpw() for DOSX.
WHAT'S NEW FOR C/C++ 8.22
10/28/01
For C:
- Increased max string length.
- Fixed cg87 263 error.
For C++:
- Fixed bug with -D_MT and STL.
- Fixed template expansion bug with array constructors.
STL:
- Fixed stl_config.h conflict with windows.h
Library:
- Fixed bug in _kbhit() for Win32.
WHAT'S NEW FOR C/C++ 8.20
For C++:
- Added SGI STL 3.3. Numerous fixes to support it.
- Templates are now instantiated only when semantically required,
rather than whenever referred to.
- Added header files cassert, cctype, cerrno, cfloat, ciso646,
climits, clocale, cmath, csetjmp, csignal, cstdarg, cstddef, cstdio,
cstdlib, cstring, ctime, cwchar, cwctype, new.
- Fixed C++ declarations for strchr(), etc., per C++98 21.4.
- Fixed warnings about 0 sized structs used before set.
- Fixed default constructor bug with new(p) char().
- Fixed unused operator->() expansion inside template spurious error.
- In-class static const integral initializers now supported.
- Fixed default template parameter bug.
WHAT'S NEW FOR C/C++ 8.1e
For C++:
- -Ab and -Aw are now always on
(meaning that bool and wchar_t
are real types, not typedefs).
Warning: This can break existing code.
- -Aa is now always on
(meaning that operator new[] and operator delete[]
are separately overloadable)
Warning: This can break existing code.
- parameter-declarations now allowed in function template
template-parameter-list.
- typename can now appear in template-parameter
instead of class.
- Explicit template function template-arguments implemented.
- Partial ordering of function templates implemented.
- elaborated-type-specifier (i.e. typename) implemented.
- mutable implemented.
- explicit implemented.
WHAT'S NEW FOR C/C++ 8.1d
- Fixed code gen bug with -Ab.
- Fixed name mangling with complex floating point types.
- Fixed code gen bug with complex floating point types.
- stdlib.h now compiles with -A.
- Added util.h.
WHAT'S NEW FOR C/C++ 8.1c
- Regular Expressions now added to runtime library.
- Fixed code gen bugs with __interrupt functions.
- rint functions are now inlined by the compiler.
- fabsl and sqrtl are now inlined by the compiler.
- Fixed bug with /= for long doubles.
- Fixed long long support in library.
- Improved long double support in library.
WHAT'S NEW FOR C/C++ 8.1A
- Name mangling for type bool is changed from _X to _N, in order
to be more compatible with VC.
- Literal float support has now been brought in line with ANSI
C99.
- Floating point constants for other than static initializations are
not folded if the folding would result in any exception flags being
raised. This is per C99. To always fold the constants anyway, use the
-ff (fast float) flag.
- Fixed problems with hex long doubles.
WHAT'S NEW FOR C/C++ 8.18
- Hex floats no longer turned off by -A.
- Long longs no longer turned off by -A.
- // comments in C no longer turned off by -A.
- The default CPU target is now the Pentium Pro (-6), not the Pentium.
WHAT'S NEW FOR C/C++ 8.17
- Fixed problem with dllexport on function pointers.
- Added gc.h
- Added Hans Boehm garbage collector to rtl
- Added long double, %a and %A support to printf for win32
WHAT'S NEW FOR C/C++ 8.16
- Fixed 16 bit code gen bugs.
- Added iso646.h
- Added stdint.h
- Added stdbool.h
- Added va_copy() to stdarg.h
- Added isxxxx() floating point comparison macros to math.h
WHAT'S NEW FOR C/C++ 8.15
- Fixed spurious syntax error compiling some MFC code.
WHAT'S NEW FOR C/C++ 8.13
- Now with 32 bit X32 DOS extender support!
- Fixed code generator support for X32.
WHAT'S NEW FOR C/C++ 8.12
- Changed __i keyword to __imaginary due to numerous conflicts
with existing code.
WHAT'S NEW FOR C/C++ 8.10
- Added support for __restrict pointer syntax.
- Added support for macros with variable & blank argument lists per C99.
- Added support for __func__ per C99 6.4.2.2.
- Added __FUNCTION__ predefined macro.
- Added __PRETTY_FUNCTION__ predefined macro.
- Fixed bug in wcscmp() for 0 length strings.
- -Aa switch to SC is now the default. There is no way to turn it off.
- Added _Complex and _Imaginary type support per C99.
- Renamed C++ complex class file complex.h to oldcomplex.h.
- Added new complex.h per C99.
- Added complex library functions per C99.
- Added isinf() per C99.
- Added long double support to isxxx() functions in fp.h.
WHAT'S NEW FOR C/C++ 8.0
- Added __DMC__ predefined macro.
- Added -d switch to generate make dependency information.
- Added debug statements.
- Added debug declarations.
- Added design by contract features.
- Added ability to embed C in HTML files.
- Added native support for 80 bit long doubles (Win32 only).
- Added support for CPU bit instructions via functions in bitops.h.
- Switch -mn is now the default instead of -ms.
- 16 bit preprocessor spp.exe no longer supported - use sppn.exe.
WHAT'S NEW FOR C/C++ 7.6
- Better Code Generation
- Merged C and C++ Compilers.
They are now in the same executable. This saves disk space and testing
time.
WHAT'S NEW FOR C/C++ 7.5
Added MMX Extensions
New Intel MMX instructions now supported by the inline assembler.
Added Support for Alternative Names
With -A and the C++ compiler, the alternative representations
in the standard 2.9 are now supported. In the future, they will
become the default, so don't use the following names otherwise:
and and_eq bitand bitor compl not
not_eq or or_eq xor xor_eq
Added -B[e|f|g|j] switches
See "Definitive list of SC switches" for how they work.
The SCMSGS environment variable and SC.INI setting is no
longer supported.
Added #elseif directive, with same semantics as #elif.
Changed overload resolution rules to reflect ANSI C++ standard changes
regarding integral promotions vs integral conversions.
Added namespaces
Added -g5 switch
See "Definitive list of SC switches".
Added #pragma setlocale("locale")
See "Pragmas supported by SC/SC++".
Added _CPPRTTI and _CPPUNWIND predefined macros
See "Predefined macros".
Added New Keywords
explicit, mutable, typename - but the semantics of them aren't
implemented.
Added __unaligned Keyword
For unaligned pointer support for PowerPC. Ignored for Intel
compiler.
Added Pentium Pro Instructions to Inline Assembler and OBJ2ASM.
Added new P6 instructions:
CMOVcc
FCMOVcc
FCOMI
FCOMIP
FUCOMI
FUCOMIP
RDMPC
Added -ND switch
See "DEFINITIVE LIST OF SC SWITCHES",
and _MT and _DLL in "PREDEFINED MACROS".
-NLlibfile
Added this switch. See "DEFINITIVE LIST OF SC SWITCHES".
__wacrtused
__wacrtused_con
Added these for use in Win32 UNICODE apps. See "ACRTUSED".
SUPPORT and USER GROUPS
Digital Mars C++ is supported via newsgroups at news.digitalmars.com
To join the newsgroups:
Netscape Messenger:
- Start Netscape Messenger.
- Goto menu: Edit->Preferences.
- Expand Mail & Newsgroups in the Category tree.
- Select Newsgroup Servers
- Click Add... (at the right)
- Type the name of the server: news.digitalmars.com
- Click OK
- Close Preferences, i.e. click OK. news.digitalmars.com should appear at the bottom in
the tree with the inbox.
- Click on news.digitalmars.com with the right mouse button
- Choose Subscribe to newsgroups...
- This will give you Communicator: Subscribe to Newsgroups.
- Click Subscribe
- Close Communicator: Subscibe to Newsgroups, i.e. click OK
- Now the newsgroups you subscribed to should appear underneath news.digitalmars.com
Microsoft Outlook Express:
- Start Outlook Express
- Goto menu: Tools->Accounts...
- This will give you Internet Accounts
- Click the News tab.
- Click the Add button
- Select News
- Choose a Display Name
- Click Next
- Choose an E-mail Address
- Click Next
- Type the name of the News (NNTP) server: news.digitalmars.com.
- Click Finish
- Close Internet Accounts, i.e. click Close
- Choose Yes to the question Would you like to download newsgroups from the news account you added?
- Click c++
- Click Subscribe
- Close Newsgroup Subscriptions, i.e. click OK
- Now under the Folders tree news.digitalmars.com should appear underneath c++
Good luck!