D Programming Language 2.0

- Comments
- D
- Search
- Downloads
- Home

Last update Sun Jan 20 11:39:47 2008

# D Change Log

- What's new for D 2.010
- What's new for D 2.009
- What's new for D 2.008
- What's new for D 2.007
- What's new for D 2.006
- What's new for D 2.005
- What's new for D 2.004
- What's new for D 2.003
- What's new for D 2.002
- What's new for D 2.001
- What's new for D 2.000
- changelog for 1.0
- Download latest D 2.0 alpha D compiler for Win32 and x86 linux
- tech support

### What's New for D 2.010

Jan 20, 2008

#### New/Changed Features

- `opAssign` can no longer be overloaded for class objects.
- `WinMain` and `DllMain` can now be in template mixins.
- Added `pure` keyword.

#### Bugs Fixed

- Bugzilla 1319: compiler crashes with functions that take const ref arguments
- Bugzilla 1697: Internal error: ..\ztc\cgcod.c 2322 with -O
- Bugzilla 1700: ICE attempting to modify member of const return struct
- Bugzilla 1707: '==' in TemplateParameterList in IsExpression causes segfault
- Bugzilla 1711: typeof with delegate literal not allowed as template parameter
- Bugzilla 1713: foreach index with tuples and templates fails
- Bugzilla 1718: obscure exit with error code 5
- Bugzilla 1719: Compiler crash or unstable code generation with scoped interface instances
- Bugzilla 1720: std.math.NotImplemented missing a space in message
- Bugzilla 1724: Internal error: toir.c 177
- Bugzilla 1725: std.stream.BufferedFile.create should use FileMode.OutNew
- Bugzilla 1757: there is an fault in phobos windows api interface
- Bugzilla 1762: Wrong name mangling for pointer args of free extern (C++) functions
- Bugzilla 1767: rejects-valid, diagnostic
- Bugzilla 1769: Typo on the page about exceptions
- Bugzilla 1773: excessively long integer literal
- Bugzilla 1779: Compiler crash when deducing more than 2 type args
- Bugzilla 1783: DMD 1.025 asserts on code with struct, template, and alias
- Bugzilla 1788: dmd segfaults without info
- D.announce/11066: Re: DMD 1.025 and 2.009 releases

### What's New for D 2.009

Jan 1, 2008

#### New/Changed Features

- Redid const/invariant semantics again.
- Extended enums to allow declaration of manifest constants.

#### Bugs Fixed

- Bugzilla 1111: enum value referred to by another value of same enum is considered as enum's base type, not enum type
- Bugzilla 1694: Zip::ArchiveMember::name format bug
- Bugzilla 1702: ICE when identifier is undefined
- Bugzilla 1738: Error on struct without line number
- Bugzilla 1742: CTFE fails on some template functions
- Bugzilla 1743: interpret.c:1421 assertion failure on CTFE code
- Bugzilla 1744: CTFE: crash on assigning void-returning function to variable
- Bugzilla 1745: Internal error: ..\ztc\out.c 115
- Bugzilla 1749: std.socket not thread-safe due to strerror
- Bugzilla 1753: String corruption in recursive CTFE functions
- D/63456: Cannot overload on constancy of this

### What's New for D 2.008

Nov 27, 2007

#### New/Changed Features

- std.string: Made munch more general and added function chompPrefix.
- std.variant: Added documentation for variantArray
- std.traits: Added CommonType template, fixed isStaticArray.
- std.bitarray: scheduled for deprecation
- std.bitmanip: new module with the content of std.bitarray plus the bitfields, FloatRep, and DoubleRep templates
- std.process: Made getpid visible in Linux builds
- std.math: Made nextafter visible for all floating types. Added approxEqual template.
- std.contracts: Added enforce signature taking an exception
- std.conv: Made conv_error a template parameterized on the types being converted.
- std.stdio: Cosmetic changes.
- std.system: Cosmetic changes.
- std.file: Fixed bug in function dirEntries.
- std.random: Major addition of engines and distributions.
- std.format: Added raw ('r') format specifier for writef*.
- std.path: Added rel2abs (Linux version only).
- std.algorithm: new module
- std.typecons: new module
- std.functional: new module
- std.numeric: new module
- Added const/invariant structs, classes and interfaces.
- Added `const` and `invariant` to IsExpressions.
- Added `typeof(return)` type specifier.
- Changed the way coverage analysis is done so it is independent of order dependencies among modules.
- Revamped const/invariant.

#### Bugs Fixed

- Bugzilla 70: valgrind: Conditional jump or move depends on uninitialised value(s) in elf_findstr
- Bugzilla 71: valgrind: Invalid read of size 4 in elf_renumbersyms
- Bugzilla 204: Error message on attempting to instantiate an abstract class needs to be improved
- Bugzilla 1508: dmd/linux template symbol issues
- Bugzilla 1651: .di file generated with -H switch does not translate function() arguments correctly
- Bugzilla 1655: Internal error: ..\ztc\cgcod.c 1817
- Bugzilla 1656: illegal declaration accepted
- Bugzilla 1664: (1.23).stringof generates bad code
- Bugzilla 1665: Internal error: ..\ztc\cod2.c 411

### What's New for D 2.007

Oct 31, 2007

#### New/Changed Features

- Functors now supported by std.traits.ReturnType().
- Transitive const now leaves invariants intact in the tail.
- Added overloadable unary * operation as opStar().
- Full closure support added.
- Data items in static data segment >= 16 bytes in size are now paragraph aligned.

#### Bugs Fixed

- Variables of type void[0] can now be declared.
- Static multidimensional arrays can now be initialized with other matching static multidimensional arrays.
- Bugzilla 318: wait does not release thread resources on Linux
- Bugzilla 322: Spawning threads which allocate and free memory leads to pause error on collect
- Bugzilla 645: Race condition in std.thread.Thread.pauseAll
- Bugzilla 689: Clean up the spec printfs!
- Bugzilla 697: No const folding on asm db,dw, etc
- Bugzilla 706: incorrect type deduction for array literals in functions
- Bugzilla 708: inline assembler: "CVTPS2PI mm, xmm/m128" fails to compile
- Bugzilla 709: inline assembler: "CVTPD2PI mm, xmm/m128" fails to compile
- Bugzilla 718: Internal error: ../ztc/cgcod.c 562
- Bugzilla 723: bad mixin of class definitions at function level: func.c:535: virtual void FuncDeclaration::semantic3(Scope*): Assertion `0' failed
- Bugzilla 725: expression.c:6516: virtual Expression* MinAssignExp::semantic(Scope*): Assertion `e2->type->isfloating()' failed.
- Bugzilla 726: incorrect error line for "override" mixin
- Bugzilla 729: scope(...) statement in SwitchBody causes compiler to segfault
- Bugzilla 1258: Garbage collector loses memory upon array concatenation
- Bugzilla 1480: std.stream throws the new override warning all over the place
- Bugzilla 1483: Errors in threads not directed to stderr
- Bugzilla 1557: std.zlib allocates void[]s instead of ubyte[]s, causing leaks.
- Bugzilla 1580: concatenating invariant based strings should work
- Bugzilla 1593: ICE compiler crash empty return statement in function
- Bugzilla 1613: DMD hangs on syntax error
- Bugzilla 1618: Typo in std\system.d

### What's New for D 2.006

Oct 16, 2007

#### New/Changed Features

- Transformed all of `string`, `wstring`, and `dstring` into invariant definitions. Tons of changes in function signatures and implementations rippled through the standard library. Initial experience with invariant strings seems to be highly encouraging.
- Implemented Overload Sets for functions and templates.
- Added the std.getopt module that makes standards-conforming command-line processing easy.
- Added the parse and assumeUnique to the std.conv module.
- Added the dirEntries function to the std.file module.
- Added the basename and dirname functions (which alias the less gainful names getBaseName and getDirectoryName to the std.path module.)
- Added optional terminator to readln; added the convenience functions fopen and popen; added functions lines and chunks; all to the std.stdio module.
- Added the munch function to the std.string module.
- Fixed isStaticArray; added BaseClassesTuple, TransitiveBaseTypeTuple, ImplicitConversionTargets, isIntegral, isFloatingPoint, isNumeric, isSomeString, isAssociativeArray, isDynamicArray, isArray; all to the std.traits module.
- Added the std.variant module.
- Incorporated many of the Tango GC structural differences (much more to go still).
- Added the std.contracts module.
- Breaking change: `std.stdio.writef` can now only accept a format as its first argument.

#### Bugs Fixed

- Bugzilla 1478: Avoid libc network api threadsafety issues
- Bugzilla 1491: Suppress SIGPIPE when sending to a dead socket
- Bugzilla 1562: Deduction of template alias parameter fails
- Bugzilla 1571: Const on function parameters not carried through to .di file
- Bugzilla 1575: Cannot do assignment of tuples
- Bugzilla 1579: write[ln] fails for obj.toString()
- Bugzilla 1580: Concatenating invariant based strings should work

### What's New for D 2.005

Oct 1, 2007

#### New/Changed Features

- `std.math.sin`, `cos`, `tan` are now evaluated at compile time if the argument is a constant.
- Added Cristian Vlasceanu's idea for C++ interface for 'plugins'
- Overhaul phobos `linux.mak` and add documentation build logic
- Massive additions to std.conv
- Add `writeln()` and `write()` to std.stdio

#### Bugs Fixed

- Fix std.boxer boxing of Object's (unit test failure)
- Fix std.demangle to not show hidden parameters (this and delegate context pointers)
- Bugzilla 217: typeof not working properly in internal/object.d
- Bugzilla 218: Clean up old code for packed bit array support
- Bugzilla 223: Error message for unset constants doesn't specify error location
- Bugzilla 278: dmd.conf search path doesn't work
- Bugzilla 479: can't compare arrayliteral statically with string
- Bugzilla 549: A class derived from a deprecated class is not caught
- Bugzilla 550: Shifting by more bits than size of quantity is allowed
- Bugzilla 551: Modulo operator works with imaginary and complex operands
- Bugzilla 556: is (Type Identifier : TypeSpecialization) doesn't work as it should
- Bugzilla 668: Use of *.di files breaks the order of static module construction
- Bugzilla 1125: Segfault using tuple in asm code, when size not specified
- Bugzilla 1437: dmd crash: "Internal error: ..\ztc\cod4.c 357"
- Bugzilla 1456: Cannot use a constant with alias template parameters
- Bugzilla 1474: regression: const struct with an initializer not recognized as a valid alias template param
- Bugzilla 1488: Bad code generation when using tuple from asm
- Bugzilla 1510: ICE: Assertion failure: 'ad' on line 925 in file 'func.c'
- Bugzilla 1523: struct literals not work with typedef
- Bugzilla 1530: Aliasing problem in DMD front end code
- Bugzilla 1531: cannot access typedef'd class field
- Bugzilla 1537: Internal error: ..\ztc\cgcod.c 1521

### What's New for D 2.004

Sep 5, 2007

#### New/Changed Features

- Added command line switches -defaultlib and -debuglib
- Bugzilla 1445: Add default library options to sc.ini / dmd.conf
- Changed result type of IsExpression from int to bool.
- Added isSame and compiles to __traits.
- Added optional TemplateParameterList to IsExpression.
- Added warning when override is omitted.
- Added std.hiddenfunc.
- Added trace_term() to object.d to fix Bugzilla 971: No profiling output is generated if the application terminates with exit
- Multiple module static constructors/destructors allowed.
- Added new syntax for string literals (delimited, heredoc, D tokens)
- Added __EOF__ token

#### Bugs Fixed

- Fixed D/56414
- Bugzilla 961: std.windows.registry stack corruption
- Bugzilla 1315: CTFE doesn't default initialise arrays of structs
- Bugzilla 1342: struct const not accepted as initializer for another struct
- Bugzilla 1363: Compile-time issue with structs in 'for'
- Bugzilla 1375: CTFE fails for null arrays
- Bugzilla 1378: A function call in an array literal causes compiler to crash
- Bugzilla 1384: Compiler segfaults when using struct variable like a function with no opCall member.
- Bugzilla 1388: multiple static constructors allowed in module
- Bugzilla 1414: compiler crashes with CTFE and structs
- Bugzilla 1421: Stack Overflow when using __traits(allMembers...)
- Bugzilla 1423: Registry: corrupted value
- Bugzilla 1436: std.date.getLocalTZA() returns wrong values when in DST under Windows
- Bugzilla 1446: Missing comma in Final Const and Invariant page title
- Bugzilla 1447: CTFE does not work for static member functions of a class
- Bugzilla 1448: UTF-8 output to console is seriously broken
- Bugzilla 1450: Registry: invalid UTF-8 sequence
- Bugzilla 1460: Compiler crash on valid code
- Bugzilla 1464: "static" foreach breaks CTFE
- Bugzilla 1468: A bug about stack overflow.

### What's New for D 2.003

Jul 21, 2007

#### New/Changed Features

- Added 0x78 Codeview extension for type dchar.
- Moved next member from Object.Error to Object.Exception
- Added ForeachRangeStatement
.
- Added extern (System)
- Added std.traits
- Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0

#### Bugs Fixed

- Bugzilla 46: Included man files should be updated
- Bugzilla 268: Bug with SocketSet and classes
- Bugzilla 406: std.loader is broken on linux
- Bugzilla 561: Incorrect duplicate error message when trying to create instance of interface
- Bugzilla 588: lazy argument and nested symbol support to std.demangle
- Bugzilla 668: Use of *.di files breaks the order of static module construction
- Bugzilla 1110: std.format.doFormat + struct without toString() == crash
- Bugzilla 1300: Issues with struct in compile-time function
- Bugzilla 1306: extern (Windows) should work like extern (C) for variables
- Bugzilla 1318: scope + ref/out parameters are allowed, contrary to spec
- Bugzilla 1320: Attributes spec uses 1.0 const semantics in 2.0 section
- Bugzilla 1331: header file genaration generates a ":" instead of ";" at pragma
- Bugzilla 1332: Internal error: ../ztc/cod4.c 357
- Bugzilla 1333: -inline ICE: passing an array element to an inner class's constructor in a nested function, all in a class or struct
- Bugzilla 1336: Internal error when trying to construct a class declared within a unittest from a templated class.

### What's New for D 2.002

Jul 1, 2007

#### New/Changed Features

- Renamed linux library from libphobos.a to libphobos2.a

#### Bugs Fixed

- Bugzilla 540: Nested template member function error - "function expected before ()"
- Bugzilla 559: Final has no effect on methods
- Bugzilla 627: Concatenation of strings to string arrays with ~ corrupts data
- Bugzilla 629: Misleading error message "Can only append to dynamic arrays"
- Bugzilla 639: Escaped tuple parameter ICEs dmd
- Bugzilla 641: Complex string operations in template argument ICEs dmd
- Bugzilla 657: version(): ignored
- Bugzilla 689: Clean up the spec printfs!
- Bugzilla 1103: metastrings.ToString fails for long > 0xFFFF_FFFF
- Bugzilla 1107: CodeView: wrong CV type for bool
- Bugzilla 1118: weird switch statement behaviour
- Bugzilla 1186: Bind needs a small fix
- Bugzilla 1199: Strange error messages when indexing empty arrays or strings at compile time
- Bugzilla 1200: DMD crash: some statements containing only a ConditionalStatement with a false condition
- Bugzilla 1203: Cannot create Anonclass in loop
- Bugzilla 1204: segfault using struct in CTFE
- Bugzilla 1206: Compiler hangs on this() after method in class that forward references struct
- Bugzilla 1207: Documentation on destructors is confusing
- Bugzilla 1211: mixin("__LINE__") gives incorrect value
- Bugzilla 1212: dmd generates bad line info
- Bugzilla 1216: Concatenation gives 'non-constant expression' outside CTFE
- Bugzilla 1217: Dollar ($) seen as non-constant expression in non-char[] array
- Bugzilla 1219: long.max.stringof gets corrupted
- Bugzilla 1224: Compilation does not stop on asserts during CTFE
- Bugzilla 1228: Class invariants should not be called before the object is fully constructed
- Bugzilla 1233: std.string.ifind(char[] s, char[] sub) fails on certain non ascii strings
- Bugzilla 1234: Occurrence is misspelled almost everywhere
- Bugzilla 1235: std.string.tolower() fails on certain utf8 characters
- Bugzilla 1236: Grammar for Floating Literals is incomplete
- Bugzilla 1239: ICE when empty tuple is passed to variadic template function
- Bugzilla 1242: DMD AV
- Bugzilla 1244: Type of array length is unspecified
- Bugzilla 1247: No time zone info for India
- Bugzilla 1285: Exception typedefs not distinguished by catch
- Bugzilla 1287: Iterating over an array of tuples causes "glue.c:710: virtual unsigned int Type::totym(): Assertion `0' failed."
- Bugzilla 1290: Two ICEs, both involving real, imaginary, ? : and +=.
- Bugzilla 1291: .stringof for a class type returned from a template doesn't work
- Bugzilla 1292: Template argument deduction doesn't work
- Bugzilla 1294: referencing fields in static arrays of structs passed as arguments generates invalid code
- Bugzilla 1295: Some minor errors in the lexer grammar

### What's New for D 2.001

Jun 27, 2007

#### New/Changed Features

- Added D_Version2 predefined identifier to indicate this is a D version 2.0 compiler
- Added __VENDOR__ and __VERSION__.
- Now an error to use both const and invariant as storage classes for the same declaration
- The .init property for a variable is now based on its type, not its initializer.

#### Bugs Fixed

- std.compiler now is automatically updated.
- Fixed problem catting mutable to invariant arrays.
- Fixed CFTE bug with e++ and e--.
- Bugzilla 1254: Using a parameter initialized to void in a compile-time evaluated function doesn't work
- Bugzilla 1256: "with" statement with symbol
- Bugzilla 1259: Inline build triggers an illegal error msg "Error: S() is not an lvalue"
- Bugzilla 1260: Another tuple bug
- Bugzilla 1261: Regression from overzealous error message
- Bugzilla 1262: Local variable of struct type initialized by literal resets when compared to .init
- Bugzilla 1263: Template function overload fails when overloading on both template and non-template class
- Bugzilla 1268: Struct literals try to initialize static arrays of non-static structs incorrectly
- Bugzilla 1269: Compiler crash on assigning to an element of a void-initialized array in CTFE
- Bugzilla 1270: -inline produces an ICE
- Bugzilla 1272: problems with the new 1.0 section
- Bugzilla 1274: 2.0 beta link points to dmd.zip which is the 1.x chain
- Bugzilla 1275: ambiguity with 'in' meaning
- Bugzilla 1276: static assert message displayed with escaped characters
- Bugzilla 1277: "in final const scope" not considered redundant storage classes
- Bugzilla 1279: const/invariant functions don't accept const/invariant return types
- Bugzilla 1280: std.socket.Socket.send (void[],SocketFlags) should take a const(void)[] instead
- Bugzilla 1283: writefln: formatter applies to following variable
- Bugzilla 1286: crash on invariant struct member function referencing globals

### What's New for D 2.000

Jun 17, 2007

#### New/Changed Features

- Added aliases string, wstring, and dstring for strings.
- Added .idup property for arrays to create invariant copies.
- Added const, invariant, and final.
- in parameter storage class now means final scope const.
- foreach value variables now default to final if not declared as inout.
- class and struct invariant declarations now must have a ().

#### Bugs Fixed

- Added missing \n to exception message going to stderr.
- Fixed default struct initialization for CTFE.
- Bugzilla 1226: ICE on a struct literal

Copyright © 1999-2008 by Digital Mars, All Rights Reserved | Page generated by Ddoc. | Comments