Digital Mars C/C++ Version Info
- Download latest version for Win32.
- What's new for C/C++ 8.57
- What's new for C/C++ 8.56
- What's new for C/C++ 8.55
- What's new for C/C++ 8.54
- What's new for C/C++ 8.53
- What's new for C/C++ 8.52
- What's new for C/C++ 8.51
- What's new for C/C++ 8.50
- What's new for C/C++ 8.49
- What's new for C/C++ 8.48
- What's new for C/C++ 8.47
- What's new for C/C++ 8.46
- What's new for C/C++ 8.45
- What's new for C/C++ 8.44
- What's new for C/C++ 8.43
- What's new for C/C++ 8.42
- What's new for C/C++ 8.41
- What's new for C/C++ 8.40
- What's new for C/C++ 8.39
- What's new for C/C++ 8.38
- What's new for C/C++ 8.37
- What's new for C/C++ 8.36
- What's new for C/C++ 8.35
- What's new for C/C++ 8.34
- What's new for C/C++ 8.33
- What's new for C/C++ 8.32
- What's new for C/C++ 8.31
- What's new for C/C++ 8.30
- What's new for C/C++ 8.29
- What's new for C/C++ 8.28
- What's new for C/C++ 8.27
- What's new for C/C++ 8.26
- What's new for C/C++ 8.25
- What's new for C/C++ 8.23
- What's new for C/C++ 8.22
- What's new for C/C++ 8.20
- What's new for C/C++ 8.1e
- What's new for C/C++ 8.1d
- What's new for C/C++ 8.1c
- What's new for C/C++ 8.1A
- What's new for C/C++ 8.18
- What's new for C/C++ 8.17
- What's new for C/C++ 8.16
- What's new for C/C++ 8.15
- What's new for C/C++ 8.13
- What's new for C/C++ 8.12
- What's new for C/C++ 8.10
- What's new for C/C++ 8.0
- What's new for C/C++ 7.6
- What's new for C/C++ 7.5
WHAT'S NEW FOR C/C++ 8.57
Aug 1, 2013- New/Changed
- Numerous code gen improvements, including faster switch tables and divides.
WHAT'S NEW FOR C/C++ 8.56
Nov 9, 2012- C++0x
- New/Changed
- Bug fixes
- Bugzilla 8986: The PVS-Studio analyzer has something for you 8987 - Compiling using -O -release options yield Internal error: backend\cgcod.c 1663 9171 - error optimization of expression
-
8796 - Optimizer bug on 64bit: *p++=1 where p is a parameter
WHAT'S NEW FOR C/C++ 8.55
Oct 20, 2012- C++0x
- New/Changed
- Bug fixes
- Bugzilla 89: InterlockedCompareExchange has incorrect signature in winbase.h
- Bugzilla 6505: Wrong code for expression involving 8 floats, only with -O
- Bugzilla 8840: calculating minimum of longs with following comparison compiles to wrong code when enabling the optimizer
- Fixed bit rot in building library
- Fixed uninitialized field
- tmpfile() now uses TEMP environment variable
- MAKE now handles spaces in paths
WHAT'S NEW FOR C/C++ 8.54
Aug 21, 2010- C++0x
- New/Changed
- Bugzilla 5741: Add the SYSCALL and SYSRET opcodes to the inline assembler
- Bug fixes
- Bugzilla 2436: Unexpected OPTLINK termination EIP = 00425303 with /co
- Bugzilla 3372: optlink silently mistreats object files with more than 16384 symbols
- Bugzilla 3681: ICE(go.c): when function takes too long to optimize, only with -O.
- Bugzilla 4275: Unexpected optlink termination when 'export' attribute is missing
- Bugzilla 4379: ICE(blockopt.c): foreach over huge tuple, only with -O
- Bugzilla 4486: CodeView debug info should contain absolute path names
- Bugzilla 5294: -O optimization breaks for loop
- Bugzilla 5455: ICE(cgcod.c): Optimization (register allocation?) regression in DMD 1.065
- Bugzilla 5581: [64-bit] Wrong code with bitwise operations on bools
- Bugzilla 5670: Optlink 8.00.11 crash
- Bugzilla 5672: ICE(cod2.c): incorrect optimization of (long &1) == 1
WHAT'S NEW FOR C/C++ 8.53
Dec 26, 2010- C++0x
- New/Changed
- Bug fixes
- Bugzilla 79: Error comparing double to long long int's.
- Bugzilla 4009: OPTLINK ruins the day yet again
- Bugzilla 4443: Optimizer produces wrong code for || or && with struct arrays
- Bugzilla 4645: to!string(const char*) in library causes Optlink to issue warning
WHAT'S NEW FOR C/C++ 8.52
Apr 24, 2010- C++0x
- Added keywords
- Added unicode string literals and types
- Added raw string literals, except for "undoing" backslash and trigraphs
- Disallow surrogate pairs in universal character names
- Added static_assert declarations
- Added declspec
- Added nullptr
- Added partial support for thread_local
- New/Changed
- Added spell checker for undefined symbols
- Bug fixes
- Changed FLT_EVAL_METHOD to 2, and moved it to float.h
- Changed float_t and double_t to long double
- Fix codegen issue with returning double complex numbers
- Bugzilla 7: -A99 switch makes some math functions inaccessible
- Bugzilla 45: Internal error: cgcod 1594
- Bugzilla 46: Constant folding with long doubles
- Bugzilla 47: Internal error: cg87 3316
- Bugzilla 48: Internal error: cgreg 784
- Bugzilla 3558: Optimizer bug results in false if condition being taken
- Bugzilla 3633: Optimizer causes access violation
- Bugzilla 3736: corrupted struct returned by function with optimizations (-O)
WHAT'S NEW FOR C/C++ 8.51
Dec 6, 2009- New/Changed
- Bugzilla 2888: speedup for float * 2.0
- Bugzilla 2905: Faster +-*/ involving a floating-pointing literal
- Added asinh, acosh, and atanh
- Increase max value of -HP switch from -HP99 to -HP299
- Bug fixes
- Improved long divide performance
- Fixed bug with premature destruction of const ref temporaries.
- Bugzilla 36: ambiguous reference to std::sqrt
- Bugzilla 675: %a format has an out-by-1 bug for denormals.
- Bugzilla 708: inline assembler: "CVTPS2PI mm, xmm/m128" fails to compile
- Bugzilla 709: inline assembler: "CVTPD2PI mm, xmm/m128" fails to compile
- Bugzilla 1194: fcmov* emmits incorrect code
- Bugzilla 2923: -O generates bad code for ?:
- Bugzilla 2697: Cast of float function return to ulong or uint gives bogus value
- Bugzilla 3078: NaN reported as equal to zero
- Bugzilla 3521: Optimized code access popped register
WHAT'S NEW FOR C/C++ 8.50
Aug 19, 2007- New/Changed
- Increase max value of -HP switch from -HP99 to -HP299
- Bug fixes
- Fixed bug in _nmalloc() where allocations larger than 0x8000 failed.
- Removed some wcs functions from stdlib.h (they're in wchar.h)
- Corrected DECIMAL_DIG value in float.h
- Corrected Internal error cgcod.c 1498
- Fixed c++.beta/608 (also need to use -HP299 switch)
- Fixed c++.beta/619
- Fixed c++.beta/628
- Fixed c++/5347: Failure to prefer more-specific (non-template) function
- Fixed c++/5349: Appears that template syntax is checked before macro expansion!
- Fixed c++/5353: elaborated type specifiers and namespaces
- Fixed c++/5354: namespaces and anonymous namespaces
- Fixed c++/5355
- Fixed Bugzilla 365
- Fixed Bugzilla 431
- Fixed Bugzilla 794
- Fixed Bugzilla 1150: Compiler creates wrong code
- Fixed Bugzilla 1448: UTF-8 output to console is seriously broken
- Fixed c++.beta 596: Digital Mars takes into account template parameter *names* as if they were part of the signature
- Fixed c++.beta 660: dmc 8.50.3n Internal error: struct 2169
- Fixed c++ 5533: BUG: typedef not visible for friend?
- Fixed c++ 5534: BUG: friend functions
WHAT'S NEW FOR C/C++ 8.49
Aug 12, 2006- New/Changed
- Bug fixes
- Fixed c++.command-line/681
- Fixed c++.beta/511
- Fixed c++.beta/526 #1
- Fixed c++.beta/526 #2
- Fixed c++.beta/526 #3
- Fixed c++.beta/530
- Fixed c++.beta/546
- Fixed c++.beta/547
- Fixed c++.beta/549
- Fixed c++.beta/562
- Fixed c++.beta/563
- Fixed c++.beta/564
- Fixed c++.beta/565
- Fixed c++.beta/569
- Fixed c++.beta/572
- Fixed c++.beta/574
- Fixed c++.beta/581
- Fixed c++/5174
- Fixed c++/5176
- Fixed c++/5178
- Fixed c++/5179
- Fixed c++/5180
- Fixed c++/5181
- Fixed c++/5182
- Fixed c++/5183
- Fixed Dstress bug_cg87_2393_A
- Fixed Bugzilla 121
- Added function fabsl, sqrtl, remquol, rintl
WHAT'S NEW FOR C/C++ 8.48
May 4, 2006- New/Changed
- Updated sqltypes.h
- Implemented compiler intrinsics to support traits
- Bug fixes
- Fixed Internal error: cod2 4221
- Fixed Internal error: cg87 261
- Fixed Internal error: cg87 1297
- Fixed D.bugs/6118
- Fixed D.bugs/6662
- Fixed c++.beta/485
- Fixed c++.beta/487
- Fixed c++.beta/489
- Fixed c++.beta/493
- Fixed c++.beta/495
- Fixed c++.beta/496
- Fixed c++.beta/498
- Fixed c++.beta/499
- Fixed c++.beta/500
- Fixed c++.beta/502
- Fixed c++.beta/508
- Fixed c++.beta/512
- Fixed winspool.lib per c++/5125
- Fixed coffimplib.exe per c++/5125
- Fixed c++/5128
- Fixed Bugzilla 86
- Now supports static inline functions
WHAT'S NEW FOR C/C++ 8.47
Jan 22, 2006- Bug fixes
- Fixed corrupt uuid.lib.
WHAT'S NEW FOR C/C++ 8.46
Jan 14, 2006- New/Changed
- Adapted Don Clugston's implementation of lgamma() and tgamma().
- Updated import libraries, uuid.lib.
- Added coffimplib tool to convert COFF import libraries to OMF.
- Bug fixes
- Fixed c++/4876.
- Fixed c++/4881.
- Fixed c++/4909.
- Fixed crash compiling stlsoft/method_properties.hpp.
- Fixed preprocessor crash on missing newline on last line.
- Token concatenation for L"string" now works.
- Fixed missing preprocessed output when macro ends source file without ().
- Folded in fixes from DMD.
- Fixed problem with typing of integer literals.
WHAT'S NEW FOR C/C++ 8.45
Sep 3, 2005- New/Changed
- Modified class layout for multiple inheritance of empty base classes, so they take up a minimum of one byte. This is so that pointer-to-members in different base classes can be properly distinguished.
- Added -Ad switch which goes back to one-level name
lookup for compatibility with legacy C++ code.
Some examples:
- For any use with the older STL implementation in \dm\stl.
- For \dm\stlport\stlport\stl\_deque.h, change line 429 from:
allocator_type get_allocator() const { return _M_map_size; }
to:
allocator_type get_allocator() const { return this->_M_map_size; } - Bruce Eckel's "Thinking in C++" example C05/Sortable.cpp.
- Added forward referencing in class member function default arguments.
- Now passes all tests in Dr. Dobb's Conformance Comparison of C++ Compilers: Oct 2003.
- Bug fixes
- Fixed D.bugs/4761 (as it applies to the C++ compiler as well)
- Fixed problem with exception specifications on pointer to function declarations
- Fixed overloading problem with type vs ref type.
- Fixed partial class ordering bug
- Fixed c++/4781
- Fixed c++/4782
WHAT'S NEW FOR C/C++ 8.44
July 29, 2005- New/Changed
- Implemented C++ DR337
- Added -Ai switch to enable implicit casting from void* in C++ for legacy compatibility (such is not C++98 compliant).
- C++ string literals are now typed as const.
- Supports two-level template name lookup.
- Bug fixes
- Fixed template default argument instantiation context.
- Fixed try-catch handling for template function bodies.
- Fixed SFINAE problem with arrays of functions.
- Fixed internal error template 2643
- Fixed problem with strtold() and non-ascii chars.
- Fixed c++/4682
- Fixed c++/4689
- Fixed c++/4690
- Fixed c++/4694
- Fixed c++/4695
- Fixed c++/4693
- Fixed c++/4705
- Fixed c++/4709
- Fixed c++.command-line/532
- Fixed c++.command-line/536
- Fixed c++.command-line/556
- Fixed bug in __FUNC__, __FUNCTION__, and __PRETTY_FUNCTION__.
WHAT'S NEW FOR C/C++ 8.43
Apr 8, 2005- New/Changed
- Added Pentium 4 (Prescott) instructions to inline assembler.
- Bug fixes
- Fixed several obscure problems with deeply nested preprocessor macro expansions.
- Fixed bad code gen for PEXTRW instruction.
- Fixed C++98 14.5.2-5
- Fixed some problems with member template function explicit specializations.
- Fixed problems with operator overloads as template member functions.
- Fixed problem with deeply nested :: typedefs.
- Corrected partial ordering problem with value parameters.
- Fixed int[array] bug in C compiler.
- Fixed Internal error: func 281
- Fixed problem with converting struct to int inside [].
WHAT'S NEW FOR C/C++ 8.42
Mar 2, 2005- New/Changed
- io.h's tell() is now an inline function, rather than a macro, for C++.
- Added -HHfilename switch to dmc.exe.
- Added -HPnn switch to dmc.exe.
- Bug fixes
- Fixed internal error type 600
- Changed unmangled output of constants from hex to decimal
- Fixed spurious "Error: no type for argument" error
- Fixed template partial specialization for typedef class members
- Fixed function overloading bug with ...
- Fixed function overloading bug with user defined conversions
- Fixed pretty printing of arrays of consts
- Fixed problem with user defined conversions coupled with some forms of class upcasting.
- Fixed bug overloading non-const references to different types.
WHAT'S NEW FOR C/C++ 8.41
Sep 5, 2004- New/Changed
- Added C99 struct and array designated initializers.
- For C++, warning 11 is now always an error.
- For C++, void* is no longer implicitly convertible to other pointer types.
- Added wmem* C99 functions.
- Bug fixes
- Fixed sscanf bug with end of string.
- Quotes, spaces and tabs now allowed in path of -I switch.
- Fixed problem with backwards branch on long double comparison.
- Fixed implib bug where missing LIBRARY statement would cause crash.
- Fixed internal error cg87 279.
- Fixed internal error cg87 313.
- Fixed -A bug with dm\stlport\stlport\config\stl_dm.h.
- Fixed obscure crasher with delete[] on classes with constructor but no destructor.
- Fixed dllexport on global pointer declarations.
- Fixed template default parameter bug with Range classes.
- Fixed >>= sign problem.
- Fixed outp() codegen problem with register variables.
- Fixed dm\include\win32\wownt16.h so it works with C++.
- Fixed internal error ph 1116.
- Fixed partial specialization bug with class templates and value parameters.
- Fixed whitespace bug with empty macro expansion.
- Fixed #line followed by macro.
- Fixed name mangling for array of const.
- Fixed bug with typeid(test<bool const volatile[2]>);
- Fixed erroneous code generation within sizeof expressions.
- Fixed partial specialization ambiguity with template template parameters.
- Fixed incorrect parsing of > inside template sizeof.
- Fixed problem with user defined conversion to bool.
WHAT'S NEW FOR C/C++ 8.40
Feb 20, 2004- New/Changed
- Bug fixes
- Fixed protected access problem with wxWindows.
- Fixed recursion bug in strpbrk().
- Fixed MI bug with function overloading.
WHAT'S NEW FOR C/C++ 8.39
Feb 12, 2004- New/Changed
- Added switches -A89, -A90, -A94, -A95, -A99 for various values of __STDC_VERSION__ and standard C conformance.
- Added functions fwide, isblank, vfscanf, vscanf, vsscanf, vsnprintf, _Exit, lldiv, atoll, ilogb, logb, cbrt, exp2, erf, erfc.
- Added C99 formats to strftime, wcsftime.
- Functions in fenv.h now return int, not void.
- Changed _stprintf in \dm\include\tchar.h to map to sprintf and swprintf.
- Removed "angle bracket hack" where >> token was interpreted as two greater than tokens to close a nested template argument list.
- Member operator delete[] is now recognized.
- Unnamed template parameters now allowed.
- Implemented surrogate call functions.
- Implemented TC1 issue #1.
- Per C++98, typedef names can no longer appear after struct, class, union or enum.
- Implemented some aspects of dependent/independent name lookup.
- Fixed return value of fesetround().
- Bug fixes
- Fixed values of LDBL_MAX_EXP and LDBL_MIN_EXP in float.h.
- Fixed range problems with some long double math functions.
- USHRT_MAX in limits.h is now signed.
- ferror now shows error for a read of a file opened for write.
- Updated asctime format to C99.
- wcstok now correctly has 3 parameters.
- Fixed vswprintf() signature.
- Fixed Internal error: cgcod 1459.
- Fixed Internal error: cod2 410.
- Fixed Internal error: go 237.
- Fixed Internal error: cgcs 213.
- Fixed problem with spaces in preprocessor concatenations.
- Tightened private/protected access checks.
- Tightened error checking for templates.
- Did a sweep through the C++98 spec, fixing several obscure issues.
WHAT'S NEW FOR C/C++ 8.38
Nov 30, 2003- New/Changed
- Added __BASE_FILE__ predefined macro.
- Source files not ending in newline are now allowed with C++ and -A (but are not for C and -A).
- Now accepts \u and \U universal character names in identifiers.
- Added log2 functions.
- Bug fixes
- Template functions now inlined.
- Fixed destructor call problem in virtual base initializer list.
- Inherited exception specifications now checked for equivalence.
- Fixed problem with ldexpl() and cosh().
- Fixed optimizer peephole problem.
- Fixed problem with outlined nested struct functions inside class template.
- Fixed a couple of recursive macro expansion problems.
- Fixed problem with //* comment following #else or #endif with -A.
- Fixed problem with multiply defined local statics in inline functions with constructors.
- Fixed obscure name lookup cases.
- Fixed parsing problem with default template template parameters.
- T can now be cast to T volatile&.
- Fixed accuracy problem with log10t().
WHAT'S NEW FOR C/C++ 8.37
Oct 17, 2003- Fixed another problem with statics.
- Fixed several problems with templates discovered by Bruce Eckel.
- Fixed problem where nested class functions inside class templates sometimes did not get expanded inline properly.
- Fixed problem with member function pointers of templated type inside template parameter list.
- Added support for template-template-parameters.
- C++ alternate keywords are now always enabled, instead of just with -A.
- Fixed problems with friend scopes and multiple initializations of template statics.
- Removed default support of \dm\stl, as only \dm\stlport\stlport will continue to be supported.
WHAT'S NEW FOR C/C++ 8.36
Sep 8, 2003- Fixed problem with statics introduced by 8.35.
- More Boost issues fixed.
- VLA's with destructors now give proper error message.
- Fixed problem with iostream files.
WHAT'S NEW FOR C/C++ 8.35
Aug 22, 2003- Fixed problem with "bad type index" messages from the linker. This would sometimes happen if debug compiles, namespaces, and precompiled headers were used together.
- Fixed problem with needing to #include <typeinfo.h> before <exception>.
- Removed the _ prefixed long double names from math.h.
- Now issues an error on negative array dimensions.
- Fixed numerous issues with compiling Boost.
- Fixed preprocessor problem with F. Tydeman's tests.
- Fixed nanl() and copysignl().
- Fixed bug with redefinitions of statics.
- Fixed internal error out 637.
- Fixed internal error type 149.
- Upgraded to STLsoft 1.6.5.
- Make
- Comment lines are now removed before \ line splicing (thanks, Matthew).
- Command lines can be much longer now.
WHAT'S NEW FOR C/C++ 8.34
Jun 1, 2003- Added STLsoft libraries; see \dm\stlsoft\readme\readme.txt.
- Fixed numerous template problems.
- Fixed several enum promotion problems.
- Fixed problem with bringing ?: to common type.
- Fixed problem with large stack frames.
- Fixed argument reversal on movq2dq inline asm opcode.
- Changed arguments (added count) to swprintf() and vswprintf() for compatibility with C99. This can break existing code.
- Added 8087 opcodes feni, fneni, fdisi, and fndisi.
- Fixed -A problems with stdlib.h and string.h.
- type_info::before() is now const per C++98.
- Fixed case insensitivity problem in RegExp.
- Added standard headers <exception> and <typeinfo> per C++98. This required a rebuild of the stlport libraries and DLLs.
WHAT'S NEW FOR C/C++ 8.33
Mar 18, 2003- Addes support for ::template syntax.
- Fixed numerous template problems.
- Implemented hypotl().
- Implemented frexpl().
- ldexp() is now builtin to the compiler.
- Fixed some problems compiling Boost.
- Fixed some problems with template argument deduction.
- Fixed rare case of loss of precision with long doubles.
- Fixed problem with 16 bit DOS libraries and 8088 PC/XT.
WHAT'S NEW FOR C/C++ 8.32
Jan 4, 2003- Fixed internal error cg87 2490.
- Fixed gp fault for nested template expansions with non-type args.
- Added predefined macro __DMC_VERSION_STRING__.
- Implemented boolean conversions per C++98 4.12.
- Upgraded namespace support to C++98.
- Implemented overloading by enum.
- Implemented Argument Dependent Lookup.
- Implemented friend namespace qualified classes.
- Fixed operator bool conversions.
- C99 restrict is now always on for C compiling.
- C99 dynamic sizeof works.
- Fixed numerous bugs with namespaces and templates.
- Redid how macro expansion worked to bring it in line with C99. This can break existing code.
- operator->() can now accept any return type.
- Added \dm\include\wctype.h.
- Implemented template explicit instantiation.
- Implemented _finddata_t, _findfirst, _findnext, _findclose.
- Fixed obscure crash bug in exception unwinding.
- Upgraded STLport to reflect improved compiler.
WHAT'S NEW FOR C/C++ 8.31
Oct 17, 2002- Bugs fixed
- Fixed bug with nested class member templates.
- Fixed bug with inline asm and LGDT/LIDT operand matching.
- Make 5.02
- Now accepts ~ rule flag.
- Command line length increased from 127 to 996.
WHAT'S NEW FOR C/C++ 8.30
Oct 8, 2002- C
- static and type-qualifier-list now supported for array dimension per C99 6.7.5.2.
- Variable length arrays (VLAs) per C99 6.7.5.2 now implemented.
- Implemented declarations in clause-I of for statement per C99 6.8.5.3.
- Implemented mixing statements and declarations per C99 6.8.2-1.
- Implemented implicit return 0; from main() per C99 5.1.2.2.3.
- Updated fenv.h functions per C99 7.6.
- C++
- Extended C++ with support for array declarations per C99 6.7.5.2.
- Added type_info to typeinfo.h.
- C and C++
- __declspec(import) now works with DOSX (-mx) memory model by generating an extra level of indirection like under Win32.
- Bugs fixed
- Fixed internal error cgcod 2347.
- Fixed internal error cgcod 1402.
- Fixed internal error cg87 268.
- Fixed internal error exp2 121.
- Fixed internal error newman 963.
- Fixed problem with template overload resolution.
- Fixed forward template instantiation bug.
- Fixed partial ordering with constants.
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.
- Added STLport 4.5.3.
- 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.
- 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.
- 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/01For C:
- Increased max string length.
- Fixed cg87 263 error.
- Fixed bug with -D_MT and STL.
- Fixed template expansion bug with array constructors.
- Fixed stl_config.h conflict with windows.h
- 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 Contract Programming 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
- Changed overload resolution rules to reflect ANSI C++ standard changes regarding integral promotions vs integral conversions.
- 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".