D Programming Language 2.0

- Comments
- D
- Search
- Downloads
- Home

Last update Thu Mar 6 19:29:27 2008

# D Change Log

- Version D 2.012
- Version D 2.011
- Version D 2.010
- Version D 2.009
- Version D 2.008
- Version D 2.007
- Version D 2.006
- Version D 2.005
- Version D 2.004
- Version D 2.003
- Version D 2.002
- Version D 2.001
- Version D 2.000
- changelog for 1.0
- Download latest D 2.0 alpha D compiler for Win32 and x86 linux
- tech support

Version D 2.012 Mar 6, 2008

#### New/Changed Features

- Added predefined version(unittest). See Bugzilla 458
- Removed std.math2
- Added compile time error for comparing class types against `null`.
- Added struct destructors and postblits.
- std.algorithm: Made some imports conditional for the Unittest version; fixed doc typo; made min and max always return the tightest type and work with mixes of signed and unsigned; changed enum value names to obey lowercase convention; changed OrderStrategy to SwapStrategy as it's not just for ordering (e.g. see eliminate).
- std.bitmanip: simplified code generated for bitfields and improved error message.
- std.format: ate dogfood: used bitfields internally.
- std.functional: fixed binaryfun to work with constant-size arrays; added compose.
- std.random: made unpredictableSeed return different numbers every call (except for rarely-encountered MT scenarios); added private variable name that will take experts millenia to figure out; changed the boundaries syntax from two separate characters '[', '(' to one string "[(" throughout.
- std.traits: added mostNegative, mostly to assuage for the unpardonable mistake of inheriting C++'s unpardonable mistake of defining "min" to mean very different things for floating-point types and integral types.
- std.typecons: added undocumented Rebindable in preparation for opImplicitCast.

#### Bugs Fixed

- std.contracts: fixed unlisted bug in pointsTo.
- std.conv: fixed bug related to number-to-number conversion (T.min hits again).
- Fixed dwarf bug with DT_AT_upper_bound
- Bugzilla 756: IFTI for tuples only works if tuple parameter is last
- Bugzilla 1454: IFTI cant deduce parameter if alias argument used
- Bugzilla 1661: Not possible to specialize on template with integer parameter
- Bugzilla 1800: Compiler crash on enums nested in structs
- Bugzilla 1801: Const structs should be assignable to non-const variables unless they contain references
- Bugzilla 1806: "const" makes typesafe variadic arguments not work properly.
- Bugzilla 1809: template.c:2600
- Bugzilla 1810: MmFile anonymous mapping does not work under win32
- Bugzilla 1819: spurious warning about missing return statement after synchronized
- Bugzilla 1821: ICE when using __traits isSame on const/invariant variables
- Bugzilla 1823: Implicit conversion to const on associative array
- Bugzilla 1828: Several Thread Issues
- Bugzilla 1833: std.c.windows.windows should use enums for constants, or be more selective about use of extern(Windows)
- Bugzilla 1836: Inline assembler can't use enum values as parameters.
- Bugzilla 1837: Make dmd stop flooding the console: prints content of passed parameter file
- Bugzilla 1843: Bogus unreachable statement on forward referenced struct, lacks line number
- Bugzilla 1850: The compiler accepts lower case asm registers.
- Bugzilla 1851: missing opCall? when cast away const struct
- Bugzilla 1852: you get opCall missing when cast to a struct(diagnostic)
- Bugzilla 1853: opCmp documentation really needs some examples
- Bugzilla 1854: bug in new flow analysis (warnings on valid code)
- Bugzilla 1857: Runtime segfault while profileing - jump to invalid code address
- Bugzilla 1862: asm: [ESI+1*EAX] should be a legal addr mode
- Bugzilla 1865: Escape sequences are flawed.
- Bugzilla 1867: lazy adds spurious const qualifier
- Bugzilla 1871: DMD debug messages printed
- Bugzilla 1873: structs with at least one immutable member are completely immutable
- Bugzilla 1874: __traits(allMembers, T) fails to list methods which only have non-mutating overloads
- Bugzilla 1876: inside a non-static class method, should "&( f)" be same as "&(this.f)" ?
- Bugzilla 1877: Errors in the documentation of std.math.atan2
- Bugzilla 1882: Internal error: ..\ztc\cod1.c 2529
- Bugzilla 1883: templates instantiated as real gives incorrect values
- Bugzilla 1884: manifest constants for strings
- Bugzilla 1885: Syntax error for object identity test between invariant/mutable references
- Bugzilla 1887: compiler freeze on array of dyn. arrays with empty first initializer

Version D 2.011 Feb 18, 2008

#### New/Changed Features

- std.typecons: fixed code bloat issue; added Tuple.toString; added function tuple(); fixed unlisted bug in enumValuesImpl.
- std.process: added function shell().
- std.math: minor change in approxEqual.
- std.contracts: added functions pointsTo()
- std.numeric: minor unittest fixes.
- std.bitmanip: fixed code bloat issue, reintroduced FloatRep and DoubleRep.
- std.conv: minor simplification of implementation.
- std.regexp: added reference to ECMA standard in the documentation.
- std.getopt: changed return type from bool to void, error is signaled by use of exceptions.
- std.functional: added unaryFun, binaryFun, adjoin.
- std.string: updated documentation, changed code to compile with warnings enabled.
- std.traits: changed FieldTypeTuple; added RepresentationTypeTuple, hasAliasing; fixed bug 1826; added call to flush() from within write; fixed unlisted bug in lines().
- std.algorithm: added map, reduce, filter, inPlace, move, swap, overwriteAdjacent, find, findRange, findBoyerMoore, findAdjacent, findAmong, findAmongSorted, canFind, canFindAmong, canFindAmongSorted, count, equal, overlap, min, max, mismatch, EditOp, none, substitute, insert, remove, levenshteinDistance, levenshteinDistanceAndPath, copy, copyIf, iterSwap, swapRanges, reverse, rotate, SwapStrategy, Unstable, Semistable, Stable, eliminate, partition, nthElement, sort, schwartzSort, partialSort, isSorted, makeIndex, schwartzMakeIndex, lowerBound, upperBound, equalRange, canFindSorted.
- std.thread: fixed so it compiles with warnings enabled.
- std.file: made getSize() faster under Linux.
- std.random: fixed so it compiles with warnings enabled; improved function uniform so it deduces type generated from its arguments.
- std.format: added fixes to make formatting work with const data.
- std.path: minor documentation changes.
- Added `std.xml`
- Added `std.complex`
- Added `std.iterator`
- Added `std.c.linux.tipc`
- Added `std.c.linux.termios`
- Added `nothrow` keyword
- Re-enabled auto interfaces.
- Now allow static arrays to be lvalues.
- Now allows implicit casting of `null` to/from const/invariant.
- Now allows implicit casting of StructLiterals if each of its arguments can be implicitly cast.
- Now allows implicit casting of structs to/from const/invariant if each of its fields can be.
- Added pragma startaddress.
- `.tupleof` can now access private fields of a struct/class
- Enhancement Bugzilla 493: Partial IFTI does not work

#### Bugs Fixed

- Fixed D/66406 Remaining const niggles #1 - Custom POD types
- Fixed display of ddoc template parameters that were aliased
- Fixed bug in std.file.readln() for Windows in translated mode
- Bugzilla 1072: CTFE: crash on for loop with blank increment
- Bugzilla 1435: DDoc: Don't apply DDOC_PSYMBOL everywhere
- Bugzilla 1815: foreach with interval does not increment pointers correctly
- Bugzilla 1825: local instantiation and function nesting
- Bugzilla 1837: Make dmd stop flooding the console: prints content of passed parameter file
- Bugzilla 1842: Useless linker command line output during compilation on Linux

Version 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

Version 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

Version 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

Version 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

Version 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

Version 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

Version 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.

Version 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.

Version 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

Version 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

Version 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