D Programming Language 1.0

Last update Sun Dec 30 20:34:43 2012

# D Change Log to Nov 7 2005

- What's new for D 0.139
- What's new for D 0.138
- What's new for D 0.137
- What's new for D 0.136
- What's new for D 0.135
- What's new for D 0.134
- What's new for D 0.133
- What's new for D 0.132
- What's new for D 0.131
- What's new for D 0.130
- What's new for D 0.129
- What's new for D 0.128
- What's new for D 0.127
- What's new for D 0.126
- What's new for D 0.125
- What's new for D 0.124
- What's new for D 0.123
- What's new for D 0.122
- What's new for D 0.121
- What's new for D 0.120
- What's new for D 0.119
- What's new for D 0.118
- What's new for D 0.117
- What's new for D 0.116
- What's new for D 0.115
- What's new for D 0.114
- What's new for D 0.113
- What's new for D 0.112
- What's new for D 0.111
- What's new for D 0.110
- What's new for D 0.109
- What's new for D 0.108
- What's new for D 0.107
- What's new for D 0.106
- What's new for D 0.105
- What's new for D 0.104
- What's new for D 0.103
- What's new for D 0.102
- What's new for D 0.101
- What's new for D 0.100
- What's new for D 0.99
- What's new for D 0.98
- What's new for D 0.97
- What's new for D 0.96
- What's new for D 0.95
- What's new for D 0.94
- What's new for D 0.93
- What's new for D 0.92
- What's new for D 0.91
- What's new for D 0.90
- What's new for D 0.89
- What's new for D 0.88
- What's new for D 0.86
- What's new for D 0.82
- What's new for D 0.81
- What's new for D 0.80
- What's new for D 0.79
- What's new for D 0.78
- What's new for D 0.77
- What's new for D 0.76
- What's new for D 0.75
- What's new for D 0.74
- What's new for D 0.73
- What's new for D 0.72
- What's new for D 0.71
- What's new for D 0.70
- What's new for D 0.69
- What's new for D 0.68
- What's new for D 0.67
- What's new for D 0.66
- What's new for D 0.65
- What's new for D 0.64
- What's new for D 0.63
- What's new for D 0.61
- What's new for D 0.59
- What's new for D 0.58
- What's new for D 0.57
- What's new for D 0.56
- What's new for D 0.55
- What's new for D 0.54
- What's new for D 0.53
- What's new for D 0.52
- What's new for D 0.51
- What's new for D 0.50
- What's new for D 0.49
- What's new for D 0.48
- What's new for D 0.47
- What's new for D 0.46
- What's new for D 0.45
- What's new for D 0.44
- What's new for D 0.43
- What's new for D 0.42
- What's new for D 0.41
- What's new for D 0.40
- What's new for D 0.39
- What's new for D 0.38
- What's new for D 0.37
- What's new for D 0.36
- What's new for D 0.35
- What's new for D 0.34
- What's new for D 0.32
- What's new for D 0.30
- What's new for D 0.29
- What's new for D 0.28
- What's new for D 0.27
- What's new for D 0.26
- What's new for D 0.25
- What's new for D 0.24
- What's new for D 0.23
- What's new for D 0.22
- What's new for D 0.20
- What's new for D 0.19
- What's new for D 0.16
- What's new for D 0.15
- What's new for D 0.11
- What's new for D 0.10
- What's new for D 0.07
- What's new for D 0.04
- What's new for D 0.03
- What's new for D 0.02
- What's new for D 0.01
- What's new for D 0.00
- Download D compiler for Win32 and x86 linux
- tech support

### What's New for D 0.139

Nov 7, 2005

#### Bugs Fixed

- Fixed D.bugs/5329
- Fixed D.bugs/5330

### What's New for D 0.138

Nov 2, 2005

#### New/Changed Features

- Implemented constant folding of "string"[constant].
- Implemented constant folding of "string"[constant .. constant].
- Added --help switch.
- Removed std.math2.poly, use std.math.poly instead.
- Implemented Jarrett Billingsley's suggestion for custom wrappers around structs, modules, etc. D.announce/1705.

#### Bugs Fixed

- Fixed D.learn/2070
- Fixed D.bugs/5202
- Fixed std.math.lgamma and tgamma.
- Fixed D.announce/1730
- Fixed D.bugs/5198
- Fixed D.bugs/5199
- Fixed Linux C ABI compatibility bug with returning structs from `extern (C)` functions. this can break existing code.

### What's New for D 0.137

Oct 24, 2005

#### New/Changed Features

- Added implicit type inference.
- extern storage class for variables now works.
- extern(linkage) for nested functions now works.

#### Bugs Fixed

- Fixed grammar per Unknown W. Brackets' suggestions D.bugs/5137 and D.bugs/5147
- Fixed D.bugs/4862
- Fixed D.bugs/4972
- Fixed D.bugs/5098
- Fixed D.bugs/5172
- Fixed D.gnu/1472
- Fixed D.bugs/5171

### What's New for D 0.136

Oct 17, 2005

#### New/Changed Features

- Added Doc Clugston's D/28800 for tgamma, lgamma.
- Updated std.md5 per Dawid Ciezarkiewicz's suggestion D/28887.

#### Bugs Fixed

- Fixed D.bugs/4533
- Fixed D.bugs/4769
- Fixed D.bugs/4882
- Fixed D.bugs/4985
- Fixed D.bugs/5015
- Fixed D.bugs/5016
- Fixed D.bugs/5076
- Fixed D.bugs/5082
- Fixed D.bugs/5083
- Fixed D.bugs/5111
- Fixed D.bugs/5115
- Fixed D.bugs/5130
- Fixed D.bugs/5143

### What's New for D 0.135

Oct 2, 2005

#### New/Changed Features

- C o l o r syntax highlighting is here!
- Added capability to process general purpose documents.

#### Bugs Fixed

- Fixed D/28888

### What's New for D 0.134

Sep 28, 2005

#### New/Changed Features

- Added .. macro arguments, and special macro.
- Each standard section now has its own custom DDOC_ macro.
- Incorporated Bob W's suggestions D/28843.

#### Bugs Fixed

- Fixed bug where .ddoc files needed to end in newline.
- Fixed D.announce/1563
- Fixed D.announce/1598

### What's New for D 0.133

Sep 24, 2005

#### New/Changed Features

- Filled out std.math with standard C math.h functions.
- Added -o- flag to suppress generation of object file.
- Removes closing *'s on /******* Comment ***********/
- '_' in section names now replaced with ' ' (Derek Parnell's idea).
- Extensive revision to how macros work based on a suggestion from Derek Parnell. Much more flexible now.

#### Bugs Fixed

- Fixed D.bugs/5045
- Fixed D.announce/1564

### What's New for D 0.132

Sep 19, 2005

#### New/Changed Features

- Added Ddoc, the documentation generator for D.

### What's New for D 0.131

Sep 8, 2005

#### Bugs Fixed

- Fixed problem with Linux line number generation.
- Fixed D.announce/1467
- Fixed D.announce/1483

### What's New for D 0.130

Sep 6, 2005

#### New/Changed Features

- Added Don Clugston's std.math.feqrel().
- Added Ben Hinkle's updates to std.stream:
  - removed all deprecated features stdin/out/err and the Error exceptions D/27364
  - new FilterStream superclass of BufferedStream, EndianStream and SliceStream
  - added File.available overload D/27684
  - Fixed D.bugs/4711
  - updated html doc with more details about filtering D.announce/1102
- Added Ben Hinkle's updates to std.mmfile from thread D.bugs/4550
  - added windowing support
  - changed size parameters to ulong instead of size_t
  - commented out the debug printf
  - added unittests
  - updated help

#### Bugs Fixed

- Fixed D.bugs/4684
- Fixed D.bugs/4634
- Fixed D.bugs/4818
- Fixed D.bugs/4696
- Fixed D.bugs/4750
- Fixed D.bugs/4699
- Fixed D.bugs/4726
- Fixed D.bugs/4761
- Fixed D.bugs/4765
- Fixed D.bugs/4768
- Fixed DMDScript/4768

### What's New for D 0.129

Aug 5, 2005

#### New/Changed Features

- Added postfixes c, w, d to string literals to denote type.
- For linux, DW_LANG_D is used for DW_AT_language in the Dwarf symbolic debug info. If the -gc switch is used, DW_LANG_C is used for older GDB's.
- Incorporated Ben Hinkle's new std.format which can print general arrays.
- Added std.stdio.writefx and std.stream.writefx from David L. Davis and Ben Hinkle.
- Incorporated Ameer Armaly's improvement to std.c.linux.linux D/27320.

#### Bugs Fixed

- Implemented access checking for structs.
- Fixed D.bugs/4555

### What's New for D 0.128

Jul 10, 2005

#### New/Changed Features

- Incorporated Ameer Armaly's improvement to std.file.exists() D/26226.
- Ben Hinkle's update for stream.d and std_stream.html: As discussed in D/26073 scanf and vscanf have been modified and renamed to readf and vreadf (with doc updates, too).

#### Bugs Fixed

- Ben Hinkle's fix for D.bugs/4335. In particular the doc for readLine is fixed. The return type of writef and writefln is fixed.
- Fixed D/26224
- Fixed D.bugs/4472
- Fixed D.bugs/4377
- Fixed D.bugs/4409
- Fixed D.bugs/4296
- Fixed D.bugs/4382
- Fixed D.bugs/4386
- Fixed D.bugs/4396
- Fixed D.bugs/4398
- Fixed D.bugs/4413
- Applied buffer overflow fix to etc/c/zlib/inftrees.c.

### What's New for D 0.127

Jun 16, 2005

#### New/Changed Features

- No more forward references of version or debug identifiers.

#### Bugs Fixed

- Fixed D.bugs/4185
- Fixed D.bugs/4246
- Fixed D.bugs/4239
- Fixed D.bugs/4249
- Fixed D.bugs/4299
- Fixed D.bugs/4153
- Fixed D.bugs/4161
- Fixed D.bugs/4240
- Fixed D.bugs/4248
- Fixed D.bugs/4300
- Fixed D.learn/1073

### What's New for D 0.126

Jun 7, 2005

#### New/Changed Features

- === now deprecated, replaced with is.
- !== now deprecated, replaced with !is.
- Added typesafe variadic functions.
- Now throws an ArrayBoundsError if accessing an associative array with a key that is not already in the array. Previously, the key would be added to the array.
- Added s which replaces IftypeConditions which are now deprecated. The IsExpressions are significantly more general and powerful.
- Added VoidInitializers.
- `delete aa[key]` is now deprecated, use `aa.remove(key)` instead.
- Added non-static nested classes.
- Added anonymous non-static nested classes.
- Incorporated Ben Hinkle's changes to std.stream:
  - std.stream.stdin/out/err deprecated
  - adding std.cstream.din/out/err
  - stream.d:
    - incorporate the socketstream code for handling \r end-of-line formats for readLine on non-seekable streams like pipes
    - getc and getcw return char.init and wchar.init on EOF
    - getcw throws if EOF after reading 1 byte
    - ungetc and ungetcw ignore char.init and wchar.init
    - deprecate stdin,stdout,stderr
    - remove private import of std.c.stdio and aliases for va_list
  - socketstream.d: removed overrides that are now in std.stream.Stream
  - cstream.d: new stream wrapper around FILE* with din, dout, derr
  - unittest,d: add cstream to ensure unittests are run

#### Bugs Fixed

- Fixed Internal error: e2ir.c 488
- Incorporated David Friedman's patch for std.base64.
- Fixed D.bugs/4178
- Incorporated evilmrhenry's fixes from D.bugs/4215
- Fixed std.math.tan's bug where it could leave an operand on the FPU stack

### What's New for D 0.125

May 20, 2005

#### Bugs Fixed

- iftype fixed to do implicit conversion match with specialization, rather than exact match.
- Fixed D.bugs/4075
- Ben Hinkle fixed D.learn/873
- phobos/internal/gc _d_newarrayi() fixed to use std.c.stdarg.

### What's New for D 0.124

May 19, 2005

#### New/Changed Features

- Added -quiet switch to dmd.
- .size property is no longer deprecated, it is an error. Replace with .sizeof.
- Renamed DMD source debcond.h to cond.h, debcond.c to cond.c.
- Added Burton Radons' std.boxer.
- Reformatted the documentation to use a bit of color.
- Added static if.
- Added iftype.

#### Bugs Fixed

- #line broken & fixed again.
- Fixed compiler crash with modulo 0 arithmetic.
- Ben Hinkle fixed D.bugs/3982
- Fixed D.bugs/3981
- Fixed D.bugs/3968
- Fixed D.bugs/3975
- Fixed D.bugs/3999

### What's New for D 0.123

May 11, 2005

#### New/Changed Features

- Capped static array size at 16Mb.

#### Bugs Fixed

- __LINE__ now works as argument to #line.
- Members are no longer allowed to be named 'alignof'.
- Added some missing line numbers to error messages.
- Fixed another circular interface inheritance problem.
- Fixed internal error cod1 2433
- Fixed internal error cgcs 353
- Fixed dstress auto_07
- Fixed dstress array_initialization_06
- Fixed dstress array_initialization_08
- Fixed dstress array_initialization_10
- Fixed dstress typeid_13
- Fixed D.bugs/2162
- Fixed D.bugs/3386
- Fixed D.bugs/3571
- Fixed D.bugs/3691
- Fixed D.bugs/3712
- Fixed D.bugs/3713
- Fixed D.bugs/3791
- Fixed D.bugs/3792
- Fixed D.bugs/3812
- Fixed D.bugs/3818
- Fixed D.bugs/3844
- Fixed D.bugs/3896
- Fixed D.bugs/3897
- Fixed D.bugs/3898
- Fixed D.bugs/3900

### What's New for D 0.122

May 3, 2005

#### New/Changed Features

- Added Ben Hinkle's fixes for std.stream:
  - fixes the seekable bugs on reading stdin and pipes
  - adds isOpen and eof to InputStream
  - adds isOpen, flush and close to OutputStream
- Added std.conv.toFloat, toDouble, toReal from David L. Davis.

#### Bugs Fixed

- Improved line numbers in error messages.
- Fixed problems detecting array overflows at compile time.
- Improved handling of compiler out-of-memory errors.
- Fixed DMDScript build break.
- Fixed memory corruption problem with array[length..length].
- Fixed compiler seg fault on uplevel invariant.
- Fixed problem detecting circular interface hierarchies.
- Fixed cat of static arrays.
- Fixed Internal error cg87 1240.
- Fixed D.bugs/3710
- Fixed D.bugs/3747
- Fixed D.bugs/3752
- Fixed D.bugs/3753

### What's New for D 0.121

Apr 15, 2005

#### New/Changed Features

- std.syserror is now deprecated, replaced with std.windows.syserror. It is Windows specific, and lining it up with strerror() on Linux was a mistake. Windows error numbers do not line up with C's errno values. Thanks to Regan Heath for a decent implementation of it.
- Now ?: works with null and arrays.
- Changed std.outofmemory.OutOfMemory to std.outofmemory.OutOfMemoryException, and it now derives from Exception.
- Abstract class methods now cause the class to be abstract.
- Abstract can no longer be applied to variables, structs or unions.
- Unit tests now allowed in structs and unions.

#### Bugs Fixed

- Added zwang's fix for std.string.ifind().
- Fixed constant fold divide by 0.
- Fixed "Win32 Exception" in std.regexp.
- Fixed bogus "switch statement already has a default" bug.
- Fixed D.bugs/2991
- Fixed D.bugs/3002
- Fixed D.bugs/3034
- Fixed D.bugs/3091
- Fixed D.bugs/3129
- Fixed D.bugs/3551
- Fixed D.bugs/3597
- Fixed D.bugs/3646
- Implemented typeinfo's for arrays, static arrays, associative arrays, function pointers, delegates, and enums.
- Fixed typeinfo for typedef's.
- Fixed broken implicit conversion from real or imaginary to complex.
- Fixed pragma error messages.
- Fixed broken pragma(lib) inside function.
- Fixed dstress slice_10.
- Fixed dstress argument_03.
- Fixed dstress const_04.
- Fixed dstress foreach_26.
- Fixed dstress html_empty_entity_03.
- Fixed dstress invariant_12.
- Fixed dstress invariant_29, _30, _31.
- Fixed dstress main_06.
- Fixed dstress mixin_09.
- Fixed dstress new_09.
- Incorporated Ben Hinkle's fixes for std.stream. Fixed a bug introduced in dmd-120: D.bugs/3563 about seekable stdin and Stream.toString(). Fixed a bug in the Windows version of seek() with files larger than uint.sizeof.

### What's New for D 0.120

Apr 6, 2005

#### New/Changed Features

- In `-release` builds implicit switch defaults, implicit return statements, and assert(0) expressions are replaced with HLT instructions.
- Renamed -gt command line switch that invokes the profiler to -profile.
- Complex types can no longer be implicitly converted to non-complex types.
- Real and imaginary types can no longer be implicitly converted to each other.
- Added Pentium 4 (Prescott) instructions to inline assembler.
- Template alias parameters can now have specializations.
- Compiler now permitted to retain floating point literals and do constant folding on them in a precision that is greater than the precision of its type.
- Changed AMD64 predefined version to X86_64.
- Added Matthew Wilson's std.openrj.
- Ben Hinkle submitted a new std.stream with:

  > - replace uint buffer lengths with size_t
  > - add line-by-line opApply to Stream and InputStream (due to Regan Heath)
  >   int opApply(int delegate(inout char[] line) dg)
  >   int opApply(int delegate(inout ulong n, inout char[] line) dg)
  >   int opApply(int delegate(inout wchar[] line) dg)
  >   int opApply(int delegate(inout ulong n, inout wchar[] line) dg)
  > - move readable/writeable/seekable tests from contracts to the body since phobos is compiled in release mode and users can easily try to write to an unwritable stream
  > - return "this" from writef and writefln to allow chaining (eg flush)
  > - fix TArrayStream read/write to check for "eof" (Derick Eddington)
  > - make SliceStream preserve the source buffer position if seekable and pay attention to isOpen (Derick)
  > - implement available() for more stream types (Derick)
  > - copyFrom bug fixes and position preserving if seekable (Derick)
  > - move the initialization of the BOMs to the initializer instead of the module constructor.
  > - make isopen protected (from private) so that subclasses can see it.
  > - more unittest (Derick and Ben)
  > - fix File.size() bug on Windows
  > - fix File.open() error message to say "Cannot open or create file"

#### Bugs Fixed

- Fixed crash with forward reference of local as mixin alias parameter.
- Fixed bit array append.
- Fixed base class fwd ref bug introduced in 0.119.
- Fixed problems with throwing in a destructor.
- Fixed problem with misaligned arrays of structs.
- Fixed diagnosis of types based on deprecated symbols.
- Fixed bad code gen for PEXTRW instruction.
- Fixed compiler hang with template alias parameters.
- Fixed Internal error: ..\ztc\cg87.c 279
- Fixed Internal error: ..\ztc\cod1.c 1648
- Fixed Internal error: ..\ztc\cgobj.c 2139
- Fixed Internal error: ..\ztc\cgcs.c 353
- Fixed Assertion failure 622 glue.c
- Fixed compiler crash on circular typedef declarations.
- Fixed compiler crash on empty catch handlers.
- Fixed D.bugs/2606
- Fixed D.bugs/2618
- Fixed D.bugs/3234
- Fixed D.bugs/3369

### What's New for D 0.119

Mar 18, 2005

#### New/Changed Features

- Clarified and revamped handling of 'finally' blocks.
- C-style casts are no longer deprecated, they are now illegal.
- Invalid UTF sequences in comments are now diagnosed as errors.
- Can no longer set predefined versions.

#### Bugs Fixed

- Fixed &lsaquo; misspelled entity.
- Fixed parsing entities with digits.
- Class invariant calls no longer attached to private, protected, or package member functions.
- Fixed D.bugs/32
- Fixed D.bugs/1148
- Fixed D.bugs/1815
- Fixed D.bugs/1865
- Fixed D.bugs/1953
- Fixed D.bugs/2042
- Fixed D.bugs/2140
- Fixed D.bugs/2240
- Fixed D.bugs/2262
- Fixed D.bugs/2429
- Fixed D.bugs/2546
- Fixed D.bugs/2934
- Changed documentation on struct/union grammar to allow invariants, unit tests, and allocator/deallocators.
- The file names printed out by runtime assert failures now matches what was set by any preceding #line LineNumber FileName.
- Fixed bug with aliases as struct members.
- Error now diagnosed when override is applied to non- class member functions.
- Fixed colliding template struct initializer problem under Linux.
- Can now cat string literals to wchar[] or dchar[].
- Now correctly diagnoses as an error attempts to access members of outer aggregate from within inner aggregate.
- Fixed Assertion failure: 'cd' on line 1275 in file 'expression.c'
- Now diagnoses error when catches are 'hidden' by previous catch parameters.
- Added missing typeid's for void, void[] and bit[].

### What's New for D 0.118

Mar 12, 2005

#### Bugs Fixed

- Fixed introduced name mangling bug.
- Fixed introduced bug with COMDAT records.

### What's New for D 0.117

Mar 10, 2005

#### New/Changed Features

- Added `pragma(lib, "library name");`
- cent and ucent are now keywords, to ensure they stay reserved.
- `version=all` cannot be explicitly set; all is always on anyway.

#### Bugs Fixed

- Fixed spurious unreachable code warning.
- Now issues error for declaring non-virtual functions as abstract.
- Declaring an entire class as abstract now works.
- Added wprintf back to std.c.stdio.
- Instantiating deprecated classes now generates deprecation message.
- Fixed several cases where deprecated symbol uses were not flagged.
- Can now goto case into enclosing switch case.
- Fixed problem with goto into if(0) block.
- Incorporated Stewart Gordon's fix for std.file.copy().
- Fixed Assertion failure: '0' on line 720 in file 'statement.c'
- Fixed D.bugs/1795
- Fixed D.bugs/2737
- Fixed D.bugs/752
- Fixed D.bugs/1326
- Fixed D.bugs/2238
- Fixed D.bugs/2275
- Fixed D.bugs/2315
- Fixed D.bugs/2316

### What's New for D 0.116

Mar 7, 2005

#### New/Changed Features

- Added named character entities to escape sequences.
- Added much better named character entity support to HTML preprocessing.
- Added __FILE__, __LINE__, __DATE__, __TIME__, __TIMESTAMP__.
- $ can now be used instead of length inside an array's []. It represents the length of the array. This is a trial feature, if it works out then these will happen in sequential releases:
  1. length will become deprecated inside [].
  2. length will be removed as the implicitly declared length, and it will be just another identifier.
- Added warnings on a trial basis.
- If a module statement name is used with a package prefix, as in:

      	module foo.bar;

  then `bar` is not in scope, one must use `foo.bar`.

#### Bugs Fixed

- Fixed several errors in HTML preprocessing - entities, line numbers, spaces, casing.
- Fixed mac line termination.
- Fixed D.gnu/983
- Fixed D.bugs/1849
- Added missing typeid's for arrays of floating point types.
- .sort property now works on arrays of bits and NaNs.
- Can now return an expression from a function returning void.
- Can have a main() as a nested function.

### What's New for D 0.115

Feb 28, 2005

#### Bugs Fixed

- Fixed my bungled integration of std.socket.

### What's New for D 0.114

Feb 27, 2005

#### New/Changed Features

- Renamed std.regexp.RegExp.search to std.regexp.RegExp.find to be analogous to names in std.string. Old name remains as a deprecated alias.
- Added functions split, find, rfind, sub, search to std.regexp.
- Added functions tr, succ, squeeze, removechars, countchars, inPattern, chop, and chomp to std.string.
- Incorporated Christopher E. Miller's fixes to std.socket:

  > IPv6 not supported but the C interface for it should all be there. Split up socket.d and put the C stuff in std.c modules. std.c.linux.linux updated because most of the socket functions are actually regular I/O functions. Added classes Protocol and Service. Added Socket.accepting() to allow derived classes to be accepted. Documentation and samples updated. Fixed major bug in the linux version.

- Improved error message for overloaded function mismatches.
- Added man pages to \dmd\man\man1 (thanks to Anders F Bjorklund)

#### Bugs Fixed

- Fixed std.format %A unittest failure under linux
- Fixed proxy static constructor ordering problem.
- Fixed bug where v.init would initialize v.
- Fixed .reverse bug of char[] and wchar[] with multibyte encodings.
- Fixed various problems with constant folding for const initializers.
- Fixed Internal error: ../ztc/cod4.c 352
- Fixed Assertion failure: 'ta' on line 1481 in file 'template.c'
- Fixed Assertion failure: 'f' on line 3005 in file 'expression.c'
- Fixed Assertion failure: 'ids->vthis' on line 394 in file 'inline.c'
- Fixed Assertion failure: '0' on line 909 in file 'func.c'
- Fixed Assertion failure: '!scopesym || !scopesym->isWithScopeSymbol()' on line 2637 in file 'mtype.c'
- Fixed Assertion failure: 'se2->op == TOKstring' on line 1379 in file 'expression.c'
- Fixed Assertion failure: '!needThis()' on line 139 in file 'tocsym.c'

### What's New for D 0.113

Feb 12, 2005

#### New/Changed Features

- internal/qsort2.d is now a freely redistributable version of internal/qsort.d.
- Added std.file.copy
- Asserts enabled in release builds if -unittest is given.

#### Bugs Fixed

- Fixed cgcs 353 error
- Fixed dmd crash on class C{this(){super();}}
- Fixed dmd crash on cast(int)(.0>>0)
- Fixed dmd crash on enum e;
- Fixed dmd crash on 0==Exception;
- Fixed dmd crash on varargs in initializer
- Fixed dmd crash on labeled {} statements
- Fixed dmd crash on mishandled forward reference
- Fixed Internal error: e2ir.c 229
- Fixed Internal error: ..\ztc\cgcod.c 1640
- Fixed Internal error: e2ir.c 141
- Fixed Internal error: ../ztc/elfobj.c 1251
- Fixed Assertion failure: '!needThis()' on line 139 in file 'tocsym.c'
- Fixed Assertion failure: 'fdx->vresult' on line 1450 in file 'statement.c'
- Fixed Assertion failure: '!deferred.dim' on line 470 in file 'module.c'
- Fixed Assertion failure: 'sym->memtype' on line 3020 in file 'mtype.c'
- Fixed infamous std.string.toStringz() bug.

### What's New for D 0.112

Jan 26, 2005

#### New/Changed Features

- Note: This is a library only change, the dmd executables are still at 0.111.
- New capabilities for making Windows DLLs.
- The -gt profiler now works under Linux.

### What's New for D 0.111

Jan 15, 2005

#### New/Changed Features

- Added std.date.toUTCString().
- \uFFFE and \uFFFF are now allowed as valid UCS characters, since there are applications that use them.
- Added std.string.toString(long, uint) and toString(ulong, uint) for radix conversions.
- Incorporated Phobos improvements provided by Ben Hinkle:

  > I've attached modified versions of std.stream and mmfile and the help section for std.mmfile and std.stream. The std.mmfile changes are:

  > - change module declaration to std.mmfile
  > - change class declaration to not be auto
  > - add mMode read-only property to get the file mode of type MmFile.Mode
  > The std.stream changes are:
  > - added Dave Fladebo's performance improvements for buffered readLine
  > - fixed a bug in read/write cfloat/cdouble/creal endian support
  > - uncommented MmFileStream and cleaned it up to use MmFile's mode property.

#### Bugs Fixed

- Fixed .length bug in std.string.sformat().
- Fixed rounding error in std.date for dates before 1970.
- Fixed bugs with function inlining and length property.
- Compensated for errors in linux's powl() function.
- Fixed rounding problem with convering doubles to ulongs.
- Extended range of std.date daylight savings time calculation under linux.

### What's New for D 0.110

Dec 30, 2004

#### New/Changed Features

- Structs can now be forward referenced.
- Structs can now be used as keys in associative arrays.
- Arrays of structs can now be sorted.
- Drastically speedup up compiler with projects that contain complicated imports.
- Does a better job soldiering on after errors are diagnosed.
- .sizeof property can no longer be overridden.

#### Bugs Fixed

- Fixed regression on using super or this outside of a class.
- Fixed internal error cod1 2729.
- Object file now deleted if compilation errors occurred.
- Fixed some circumstances where properties were not recognized.
- Fixed potential hang in critical section release code.
- Fixed pointer value returned by 'in' expressions.
- Fixed codegen bug with some array initializations.
- Fixed access violation in std.uri.encodeComponent().

### What's New for D 0.109

Dec 5, 2004

#### New/Changed Features

- super.id and this.id now work if id does not need a 'this' pointer.

#### Bugs Fixed

- Fixed constant folding problem with complex numbers.
- Fixed class member initialize bug.
- Fixed compiler gpf on bit sizeof.
- Now correctly diagnoses some forward reference errors.
- Fixed error recovery on minusing template as a variable.
- Fixed internal error e2ir 1158
- Fixed Assertion failure: '0' on line 661 in file 'expression.c'
- Fixed synchronized property call omitting ().

### What's New for D 0.108

Nov 30, 2004

#### Bugs Fixed

- Fixed mango build break.

### What's New for D 0.107

Nov 29, 2004

#### New/Changed Features

- Improved speed of writef().
- Improved single thread performance of gc allocation per Dave Fladebo's suggestions.
- InExpressions now, instead of returning a bit, return a pointer to the associative array element if the key is present, null if it is not. This obviates the need for many double lookups.
- .offset property is now deprecated, use .offsetof instead. This makes for better compatibility with C and fewer conflicts with `offset` as a field name.
- Added .ptr property to arrays, which is handier and more typesafe than casting an array to a pointer.
- Added Ben Hinkle's changes to std.stream:
  1. adds EndianStream for BOM and endian support.
  2. removes the two public imports std.string and std.file from end of file
  3. adds read/write for ifloat, idouble, cfloat, cdouble and dchar to interfaces InputStream and OutputStream and add implementations to Stream and EndianStream
- Added std.c.stddef for definition of C wchar_t.

#### Bugs Fixed

- Fixed internal error e2ir 814
- Fixed protection of implicit constructor.
- Fixed deprecated attribute overriding static.
- Tightened up detection of constants being implicitly converted to a type that cannot hold it.
- Now detects duplicate case strings in switch statements.
- Added support for switch(dchar[]) statements.
- Fixed bug reading source files without B.O.M.
- Fixed initialization of anonymous structs in classes.
- Anonymous structs/unions can now only be a member of an aggregate.
- Assert expressions are no longer evaluated for side effects even if asserts are turned off. It is not legal to depend on the side effect of an assert.
- Fixed _init vs __init prefix for TypeInfo classes.
- Adjusted arithmetic conversion rules to match C99.

### What's New for D 0.106

Nov 9, 2004

#### New/Changed Features

- Changed std.c.time.CLOCKS_PER_SEC from 1000 to 1000000 for linux.
- Added version identifier all being always set.
- Setting one of the list of predefined version identifiers is now an error.
- Changed TypeInfoClass to TypeInfo_Class.
- Changed TypeInfoTypedef to TypeInfo_Typedef.
- Incorporated Matthew Wilson's changes to std.process.

#### Bugs Fixed

- Fixed internal error s2ir 458
- Fixed Assertion failure: 64 tocvdebug.c
- Fixed codegen error with EAX parameter.
- Version switch syntax checking fixed.
- Fixed cast of constant to bit.
- Multiple declarations of the same type alias now detected.
- Access check now done for private constructor in new expression.
- Anonymous structs/unions can now have non-field members.
- Non-top level classes now added to module class list.
- Fixed bugs in std.format with class objets, typedefs, %o and %b formats.
- Fixed optimizer bug with loop invariants.
- Fixed synchronized statements on Linux.

### What's New for D 0.105

Oct 28, 2004

#### New/Changed Features

- Changed integral literal type determination to match C99 6.4.4.1.

#### Bugs Fixed

- Incorporated David Friedman's fixes for static initializers.
- Incorporated David Friedman's fixes for bit array duping and array appending.
- Incorporated David Friedman's fix for cast of integral constant to bit.
- Incorporated Stewart Gordon's fix for switcherr.d and array.d.
- Fixed several bugs with dmd command line parsing.
- Fixed Assertion failure: 'ei' line 2576 file 'mtype.c'
- Fixed Ivan Senji's two compiler crashes.
- Fixed Internal error: ..\ztc\cod3.c 736
- Fixed diagnostic on forward referenced templates.
- Fixed diagnostic on missing identifiers in foreach declarations.
- Fixed bug with mixin constructors.
- Internal use of "_invariant" changed to "__invariant" to avoid conflicts with user code.
- Fixed dmd hang on transcoding some utf strings.
- Interfaces used as an argument to synchronized statements are now automatically cast to Object.

### What's New for D 0.104

Oct 21, 2004

#### Bugs Fixed

- Fixed linker bug with unknown CV version.

### What's New for D 0.103

Oct 20, 2004

#### New/Changed Features

- Improved symbolic debug info generation for Win32.
- Added Dwarf2 line number debug info for linux.
- Added Dave Fladebo's speedups to associative arrays.

#### Bugs Fixed

- Removed redundant declaration of MAP_FAILED from Phobos.
- Fixed codegen scheduling bug.
- Incorporated Dave Fladebo's linux phobos makefile improvements.
- Incorporated David Friedman's std.thread pause fix.

### What's New for D 0.102

Sep 20, 2004

#### New/Changed Features

- Upgraded etc.c.zlib to 1.2.1 (thanks to Sean Kelly).
- Improved performance of array append (thanks to Dave Fladebo).
- Added \dmd\bin\make.exe.
- Improved Phobos makefiles.

#### Bugs Fixed

- Fixed private module construction order.
- Folded in Dave Fladebo's fix to std.zlib.
- Fixed array append seg fault under linux.
- Fixed problem where COMDATs could not exist in multiple modules.
- Fixed seg fault on const fields as lvalues.
- Fixed Internal error: ../ztc/cod1.c 2498
- Fixed Internal error: e2ir.c 447
- Fixed seg fault with empty debug statement.
- Fixed seg fault with undefined qualified types.
- Fixed error recovery with void in arithmetic expressions.
- Fixed assertion failure 1147 in expression.c.
- Fixed Internal error: ../ztc/cod2.c 4207
- Eliminated trailing 0 in returned array from std.file.getcwd()
- Fixed "cd" command in make.exe.

### What's New for D 0.101

Aug 30, 2004

#### New/Changed Features

- Added Ben Hinkle's improvements to std.stream. Ben writes: "I've attached a modified version of std.stream and phobos.html that include the bug fixes and behavior changes outlined in the newsgroup post yesterday. The bug fixes are almost entirely backwards compatible. The biggest difference is the change that opening a file on Windows with FileMode.In errors when the file doesn't exist. That makes it the same behavior as Linux and it just seems to make sense. I also did things like added writef and changed the Error classes to Exception."
- Kris pointed out that version identifiers have global effect, and are dependent on which order modules are imported. This is clearly wrong. Now, only version and debug definitions on the command line have global effect. Others only influence the module they are declared in. Furthermore, version and debug definitions can only be done at module scope.

#### Bugs Fixed

- Fixed "super" bug introduced by 0.99.
- Missing function body after 'in' now diagnosed.
- Function literals can now have same type signature.
- Fixed problem with 'out' parameters in nested functions.
- Fixed array initialization causing seg fault.
- Fixed compiler gpf on invalid enum syntax.
- Fixed Internal error: ..\ztc\cod1.c 3251
- Fixed FPU stack overflow bug.
- Fixed float optimization bug.
- Fixed bug in conversion of string literals to UTF-16.

### What's New for D 0.100

Aug 20, 2004

#### Bugs Fixed

- Fixed Internal error: ..\ztc\cgcs.c 213 introduced by 0.99.
- Hopefully fixed linux seg fault ENTER problem.

### What's New for D 0.99

Aug 19, 2004

#### New/Changed Features

- Added std.string functions ifind() and irfind() (thanks to David L. Davis).
- Slicing of bit arrays now allowed if lower bound lands on a byte boundary.
- Bit pointer offsets now are in number of bits, however, they must be a multiple of 8.
- Improved performance of stack array initialization.
- Idiom of using std.c.stdlib.alloca() with a constant value now recognized.
- Removed implicit cast to void. What was I thinking?
- Moved setErrno() from std.c.linux.linux to std.c.stdlib.
- Added setErrno() to std.c.stdlib.
- Improved code gen on cast of 'this' to interface.
- Added implicit declaration of length to index and slice expressions. This will break existing code if length is used as a variable within [ ].

#### Bugs Fixed

- Some overloading errors fixed.
- ~ now works on bit operands.
- Copy of non-byte aligned upper bound of bit array copies no longer copies too many bits.
- Fixed cast of bit to byte.
- Fixed MI bug with interface vtbl dispatch.
- Fixed Internal error: ..\ztc\el.c 723
- Fixed gpf on forward reference of mixin.
- Fixed Internal error: ..\ztc\dt.c 104
- Fixed Internal error: ..\ztc\cgcod.c 552
- Fixed error recovery on bad initializers.
- Diagnoses error on arithmetic on class references.
- Fixed Internal error: ..\ztc\cgcod.c 1464
- Fixed internal error: ..\ztc\cgcs.c 353
- Fixed unresolved external when expanding nested templates in imports.
- Fixed mysterious TOK881 message.
- Fixed compiler gpf with using const char[] as enum value.
- Fixed compiler gpf with error recovery.

### What's New for D 0.98

Aug 5, 2004

#### New/Changed Features

- One can now 'new' a scalar type, for example:
  `int* p = new int;`

#### Bugs Fixed

- Fixed bug where typedef/alias members of a class weren't found when looked up via an instance of that class.
- Added Berin Loritsch's fixes to pi.d.
- Better detection of recursive template instantiation errors.
- Improved error message for implicit conversion errors.
- Fixed gpf on erroneous template instantiations.
- Fixed name mangling of D __import__ symbols from DLLs.
- Fixed Assertion failure: 267 'declaration.c'
- Fixed Internal error: ..\ztc\cgcod.c 1464
- Fixed Assertion failure: 1204 'expression.c'
- Fixed some error recovery for undefined identifiers.
- Fixed Internal error: ..\ztc\cgcs.c 350
- Fixed Internal error: ..\ztc\cod1.c 2244
- Access checking now done after overload resolution rather than before.
- Fixed gpf on static initializers for function local structs.
- Fixed error recovery on undefined identifiers.
- Fixed gpf on const arrays without initializers.
- Fixed Assertion failure: 3154 'mtype.c'
- Fixed Assertion failure: 1203 'func.c'
- Fixed Internal error: ..\ztc\cg87.c 1968

### What's New for D 0.97

Jul 26, 2004

#### New/Changed Features

- Added missing overload (opPos) for unary plus.
- B.O.M. no longer required for UTF-16 and UTF-32 source text (thanks to Arcane Jill).

#### Bugs Fixed

- Fixed linux bug where sometimes global symbols were not made public in .o file.
- Fixed linux bug with function returns of small structs from C functions.
- Implemented listdir() for linux (thanks to Christopher E. Miller and Andre Fornacon)
- Deprecated functions can now call other deprecated functions without causing an error.
- Check for deprecated functions now done after overloading rather than before.
- Fixed some forward reference problems with interfaces.
- Fixed compiler GPF with va_arg.
- Fixes for std.system (thanks to Thomas Kuehne)
- Fixed method alias ordering conflict in derived class.
- Fixed std.utf bugs (thanks to Stewart Gordon)

### What's New for D 0.96

Jul 21, 2004

#### New/Changed Features

- Added exec* functions to std.process. (thanks to Matthew Wilson)
- Added std.perf (thanks to Matthew Wilson)

#### Bugs Fixed

- Fixed compiler crash on circular class derivations.
- Invalid UTF characters in string literals now diagnosed.
- Date parsing can now handle time zone offsets that are not in hourly increments.
- Fixed incorrect handling of precision for strings in std.format.
- Fixed auto bug inside template bodies.
- Fixed static initializations of the form int[2]x=3;
- Added some missing line numbers in error messages.
- Fixed an alias resolution problem.
- Break/continue in try and syncrhonized blocks now matches documentation.
- Function out parameters are now initialized at the start of the function.
- Fixed mishandling of out parameters in variadic functions.
- Fixed problem of undefined symbols at link time when templates are expanded in interface declarations.
- Template default arguments for parameters now are 'lazily' semantically analyzed, which means they can refer to previous template argument types.
- Fixed DMD GPF when trying to index a mixin with [].
- time_t definition removed from std.c.linux.linux, as it conflicted with definition in std.c.time.

### What's New for D 0.95

Jul 6, 2004

#### New/Changed Features

- Added printf replacement, std.stdio.writef and related functions.
- Added std.format for formatting strings.
- Rewrote std.string.format() for full functionality.

#### Bugs Fixed

- Fixed Internal error: ..\ztc\cgcod.c 614
- Fixed overflow detection on static array dimension.
- Fixed Internal error: ..\ztc\cod4.c 352
- Now detects attempts to use non-identifer character filenames as module names.
- Can now overload static member functions with non-static ones within a static one.
- Now detects attempts to overload destructors.
- Fixed compiler exit status under linux (thanks to Sam McCall).
- Fixed poor error recover from undefined template identifier.
- Better forward reference handling.
- Fixed problems with local statics having name collisions.

### What's New for D 0.94

Jun 27, 2004

#### Bugs Fixed

- Missing TypeInfo for bit added.
- Incorrect integral type promotion for variadic arguments fixed.
- Fixed std.string.toStringz() 0 termination bug.
- Fixed some .size => .sizeof deprecations in library.
- Fixed std.stream.File.open() and std.stream.File.create() to handle UTF filenames (thanks to Carlos Santander Bernal).
- Fixed std.uri.encode() bug with Octets.
- Fixed codegen error with typedef'd static arrays.
- Correct error message now generated when using an array initializer as an expression.
- Fixed "frame" error when compiling.
- Fixed compiler GPF on getting boolean value of module name.
- Fixed compiler GPF with function with all default arguments.
- Fixed bug with associative array typedef'd indices.
- Fixed TypeInfo crash with arrays of null Objects.
- Fixed Internal error: ..\ztc\blockopt.c 1941
- Fixed Internal error: ..\ztc\cod1.c 2244
- Fixed Assertion failure: '0' on line 80 in file 'mtype.c'

### What's New for D 0.93

Jun 22, 2004

#### New/Changed Features

- char.init is now 0xFF, wchar.init is 0xFFFF, dchar.init is 0x0000FFFF. Thanks to Arcane Jill.
- Array operator assignment overloading with opIndex(index, value) is now deprecated. Use opIndexAssign(value, index) instead.
- Multiple indices are now allowed with array operator overloading.
- Added _arguments[] and _argptr to variadic functions.
- Added TypeidExpressions.
- .typeinfo property is now deprecated (use TypeidExpression instead).
- Replaced std.c.stdarg with std.stdarg.

#### Bugs Fixed

- Some minor error message improvements.
- Fixed bug where local class static constructor did not get called.
- Fixed Assertion failure: 'f' on line 2695 in file 'expression.c'
- Fixed Internal error: ..\ztc\cgcs.c 353
- Fixed dmd GPF when module used as array.

### What's New for D 0.92

Jun 7, 2004

#### New/Changed Features

- Modified Object.toString() and Object.print() to print out the name of the object instance's class.
- The Expression within an array's brackets is now an AssignExpression (meaning that commas are no longer allowed).
- Added default arguments to function parameters. Semantics are like C++.
- Added package attribute for package level access.
- Added operator overloads opAdd_r, opMul_r, opAnd_r, opOr_r, and opXor_r.
- Modified operator overloading rules so functionality can be added to the lvalue of an operator overload for user defined rvalues without needing to modify the lvalue's class.

#### Bugs Fixed

- Fixed parsing bug in typeof(this).func();
- Fixed nested multiple inheritance bug with interfaces.
- Fixed compare() bug in typeinfo's for int and uint. Thanks to Stewart Gordon.

### What's New for D 0.91

May 27, 2004

#### New/Changed Features

- Allow functions that return void to return expressions.
- Added support for typeof(this) and typeof(super). outside of non-static member functions.
- Added cast operator overloading.
- typeof(this).member() now does non-virtual call to member().
- Mixin qualifier names now work for class members.

#### Bugs Fixed

- Fixed std.file.listdir unicode issue with Win95.
- Fixed incorrect diamond inheritance of interface classes.
- std.string.capwords() now converts non-first characters of a word to lower case.
- Fixed problem with super in mixins.
- Fixed assert failure mtype.c 2575
- Fixed bad formatting of typedef* error messages.
- Fixed std.string.toString(char).
- Fixed bug accessing private static from inlined function.
- Fixed compiler gpf on synchronized blank for statement inits.

### What's New for D 0.90

May 20, 2004

#### Bugs Fixed

- Fixed problem with mixins overriding same function more than once.
- Added ability for invariants and other special functions to be in mixins.
- Fixed error diagnostic for delegate literals in class declarations.
- Fixed extended comparison operators so they work on integral types when constant folding.
- Fixed bug with mixin functions for interfaces.
- Fixed Internal error: ..\ztc\cod1.c 1641
- Fixed name lookups for special functions in mixins.

### What's New for D 0.89

May 17, 2004

#### New/Changed Features

- Allow void() to be omitted from function literals.
- Mixins added.
- A WithStatement now works on struct instances.

#### Bugs Fixed

- Added Stewart Gordon's windows.d function pointer fixes.
- Added Stewart Gordon's std.asserterror fixes.
- Added Ben Hinkle's std.stream fixes.
- Fixed bug with template function alias arguments.

### What's New for D 0.88

May 5, 2004

#### New/Changed Features

- Added std.c.stdarg (thanks to Hauke Duden).
- C style casts deprecated (use -d to compile them for now).
- instance style template instantiation deprecated (use -d to compile them for now).

#### Bugs Fixed

- Fixed problem with template classes and opCall.
- Fixed problems with implicit this and member template functions.
- Fixed problem with property in [] of NewExp.
- Now correctly diagnoses problem with using local as template parameter alias.
- Fixed bug with no identifier for declarator in template type.
- Fixed const folding with ?: operator.
- Fixed std.utf.toUTF32() with J C Calvarese's fix.
- Included David Friedman's fixes for linux monitors.
- Fixed bug with overloading alias template parameters.
- Fixed internal error cg87 1235.
- Superclass dtors now called for class deallocator.
- Fixed _d_delmemory() taking the wrong argument.
- Fixed auto super dtors.
- Fixed multi argument struct new's with custom new.
- Fixed custom deallocator struct delete.
- Monitors now deleted when object is deleted.

### What's New for D 0.86

Apr 23, 2004

#### New/Changed Features

- Added template default parameters.
- Added casting ability to non-COM interfaces.
- Added Christopher E. Miller's std.socket and std.socketstream.
- Added std.mmfile (thanks to Matthew Wilson!)

#### Bugs Fixed

- An error is now issued when the argument to `delete` is a COM interface object.
- Incorporated Antonio Monteiro's fixes for std.date and std.zip.
- Error now diagnosed when EnumBaseType is not integral.
- Fixed delete on non-class objects.

### What's New for D 0.82

Mar 28, 2004

#### Bugs Fixed

- Some cases of forward referenced classes are now handled.
- Illegal recursive alias declarations now correctly diagnosed.
- Erroneous anonymous struct member offsets within unions fixed.
- Fixed problem with array initializers for consts.
- Fixed bug with intrinsics.
- Can now slice a void[].
- std.date: fixed dst calculation for zones with no dst.
- Fixed bug with nested delegate literals.
- Fixed overload inheritance bug with function aliases from base classes.
- Added files gnuc.h, mem.h, mem.c, port.h, enum.h, and enum.c to the \dmd\src\dmd.
- Fixed seg fault on forward reference to template.
- Fixed std.date.getUTCtime() for linux.

### What's New for D 0.81

Mar 7, 2004

#### Bugs Fixed

- Fixed problem with class and modules having the same name.
- Fixed access problem with protected members of base class.

### What's New for D 0.80

Mar 5, 2004

#### New/Changed Features

- Added overloads for basic types for std.string.toString().
- Modified front end source to be more compatible with GDMD project.
- Implicit conversions of floating point values to integer values is now disallowed.

#### Bugs Fixed

- Fixed dmd crash with module and class name conflict.
- Fixed bug where f(x)(y); was interpreted as declaring x as a function taking parameter type y and returning type f, instead of f being an instance of a class with () overloaded. There's still the problem of f(*p)(y), though, the solution is to probably just deprecate the C function pointer declaration syntax.
- Fixed using super in nested function.
- Function members without bodies in non-abstract classes now reference an external symbol rather than inserting a 0 in the vtbl[].
- Fixed Internal error: ../ztc/cgcod.c 1459
- Fixed problems with template aliases.
- Improved semantic analysis with member templates.
- Adding some missing file/line numbers to error messages.
- Fixed bug with property syntax in return expression.
- Fixed problem with template expansion contexts.

### What's New for D 0.79

Feb 2, 2004

#### New/Changed Features

- Added utf decoding capability to foreach statement.
- Added Christopher Miller's std.base64.
- Fixed gc per D/21217

#### Bugs Fixed

- Fixed std.file failure on Win95 (hopefully got it right this time!).
- Fixed code gen error with unsigned % 10.
- Fixed problem with std.regexp.test and multiple calls.
- Fixed Internal error: ..\ztc\cgcod.c 2241
- Fixed chained assignments to bit arrays.
- Fixed bugs with foreach over a bit array.
- Fixed many problems with recursive templates.
- Fixed Assertion failure on line 67 in file 'template.c'
- Fixed problem with optimization of short registers.

### What's New for D 0.78

Jan 14, 2004

#### New/Changed Features

- std.string.find() and .rfind() upgraded to support dchar searches within char[] strings.
- Fixed std.ctype functions to accept/return dchar types instead of char types.
- // comments can now be terminated by end of file rather than a newline.

#### Bugs Fixed

- Fixed Internal error e2ir.c 133
- Fixed Internal error: ..\ztc\cod1.c 2240
- Fixed Internal error: ..\ztc\cod2.c 4116
- Fixed crash on invalid template syntax.
- std.file functions now fall back to "A" functions on Win9x systems.
- Fixed problem with static arrays of structs with non-zero default initializations.
- Fixed crasher with structs declared but not defined.
- Fixed critical section bug in Win95.

### What's New for D 0.77

Jan 2, 2004

#### New/Changed Features

- Changed std.file so unicode filenames work.
- Added toUTF16z to std.utf.
- Added std.md5.
- Hex strings must now contain an even number of hex digits.
- Added .alignof property.
- Added .sizeof property which has same value as .size, but won't conflict with C/C++ struct member names.
- Global main must be main() or main(char[][] args).
- Added size_t, ptrdiff_t predefined aliases. Use size_t as an alias for an unsigned integral type spanning the address space, and ptrdiff_t as an alias for a signed integral type spanning the address space. This will make the code portable from 32 to 64 bits.
- .length, .size, .sizeof, and .alignof now return a value of type size_t.
- For win32, converts '/' in source file names passed to dmd to '\' so that back end routines work consistently.
- Added typeof.
- Added pragmas.
- Added expression lists to case statements.
- Added `goto default;` and `goto case;` and `goto case Expression;` for use in switch statements.
- Added template alias parameters.
- Added new template instance syntax.
- Added class template syntax.
- Added template member injection rule.
- Added Matthew Wilson's std.recls - for recursive file-system searching.

#### Bugs Fixed

- Better error recovery in parser.
- Sizes of bit arrays fixed.
- Fixed conflict between std.intrinsic and std.math.
- Fixed reset problem with std.regexp.match().
- Fixed std.string.rfind().
- Fixed several problems with -inline.

### What's New for D 0.76

Nov 21, 2003

#### New/Changed Features

- std.assert changed to std.asserterror.
- Added keyword is, which has same function as ===.
- Renamed operator overloading names.
- Renamed std.assert to std.asserterror.
- Added system to std.process.
- Changes to std.file:
  - Added several functions to std.file.
  - Changed byte[] types for data in std.file to void[].
  - std.file.getSize() now returns a ulong.

#### Bugs Fixed

- Library modules are all correctly named.
- Library modules now have private imports.

### What's New for D 0.75

Nov 4, 2003

#### New/Changed Features

- Changed to new standard library package layout.
- Changed apply to opApply.
- Fixed foreach so it can have multiple parameters.
- Added etc.c.zlib, a D interface to the C zlib compression library.
- Added std.zlib, a compression module.
- Added std.zip, a zip archive module.

### What's New for D 0.74

Oct 15, 2003

#### New/Changed Features

- Added support for Unicode characters in identifiers.
- Version declarations can now wrap attribute : and they'll stick.
- -of filename switch now accepts any extension.
- Added D.win32.registry.

#### Bugs Fixed

- Problems fixed with with abstract member function definitions.
- Fixed problems with getting the wrong .classinfo with inherited classes.
- Fixed internal error cgcod.c 1459
- Fixed internal error e2ir.c 721
- Fixed ICE for empty foreach bodies.
- Fixed name mangling for out/inout parameters to extern (Windows) functions.
- Fixed bug in ?: of string literals.
- Fixed order-of-evaluation bug with &((new foo()).bar)
- Can now assign null to delegates.
- Fixed problem diagnosing error of slices as out parameters.
- Fixed problem diagnosing error of const field initializations.
- Fixed gc and multithread deadlock (thanks to jhenzie).

### What's New for D 0.73

Sep 18, 2003

#### New/Changed Features

- Added static asserts.
- Added bswap as a compiler intrinsic function.
- Added operator overloading for array index [], array slice [..] and function call () operators.
- Added properties.
- To take the address of a function, the & operator is required now, rather than being implicit.

#### Bugs Fixed

- Implicit conversions of B[] to A[] are no longer allowed if B is derived from A. Gaping type safety holes are the reason.

### What's New for D 0.72

Sep 14, 2003

#### New/Changed Features

- Implicit conversions of B[] to A[] are now allowed if B is derived from A.
- Functions in abstract classes can now have function bodies.

#### Bugs Fixed

- Fixed bug with in and out instructions in inline assembler.
- Fixed speed problem with `%.*s` printf format.
- Fixed problem with foreach over array of arrays or structs.
- Fixed compiler error with array rehash.
- Now correctly issues error on self-initializations like:
  `int a = a;`
- Fixed problem converting "string" to char[], it should be an exact conversion, not an implicit conversion.
- Occaisional segfault during gc collection fixed.
- Empty static arrays now placed in BSS segment.
- Conversion of uint to real now works.

### What's New for D 0.71

Sep 3, 2003

#### New/Changed Features

- Added foreach statement.

#### Bugs Fixed

- Fixed bug with nested functions.
- Fixed bug with linux file.write() and file.append() functions.
- Fixed bug with linux processing of /etc/dmd.conf.

### What's New for D 0.70

Aug 24, 2003

#### New/Changed Features

- Added wprintf() to object.d.
- Extended alias to work for overloaded functions from another scope.

#### Bugs Fixed

- Fixed incorrect handling of leading UTF-8 BOM mark.
- Fixed 2 compiler GPF's.
- Fixed problem with downcasting to interfaces.
- Fixed linux seg fault with %@P% in DFLAGS.
- Fixed inoperative -L switch for linux.

### What's New for D 0.69

Aug 11, 2003

#### New/Changed Features

- Added dchar keyword for UTF-32 characters.
- ' ' strings are now character literals, not strings.
- wysiwyg strings are not r"string", not 'string'.
- `string` (backquotes) are also wysiwyg strings.
- Added x"0a AA BF" style hex strings.
- Implicit conversion of single character strings to character literals no longer happens.
- Implicit conversions of string literals between UTF-8, UTF-16 and UTF-32 now happens.
- Deleted command line switch -o, replaced it with -od, -of and -op. This should remove confusion and add flexibility.
- Added bool as an alias for bit.
- Integer and floating point literals can now have embedded _ for formatting purposes.

#### Bugs Fixed

- Bit variables can now be out or inout function parameters.
- Package names now part of mangled names.
- Mangled names are now reversible unambiguously.
- Fixed problem returning 8 byte structs from functions.
- Fixed bug with typedef'd associative arrays.
- Fixed bug with typedef'd return values.
- Fixed error recovery from 'typedef struct'.
- Fixed problems with Linux exception handling.
- 0b... numeric literals now work under Linux.

### What's New for D 0.68

Jul 8, 2003

#### New/Changed Features

- Added TypeInfo's for classes and other basic types.
- new'ing arrays of types with non-zero initializers now works.
- new'ing bit arrays now works.
- new'ing structs now works.
- Fixed bug with typedef'd associative array index.
- Falling off the end of a function that has a non-void return type now generates a runtime exception if a syntax error is not already generated.
- Fixed parse bug with inout keyword in nested functions.
- Fixed cgcs 350 error.
- Fixed error where const objects could be assigned to.
- Fixed crash with non-existent struct member names in initializers.
- Fixed crash with const objects with no initializers.
- Fixed cgobj 3115 error.
- Correctly errors out now when slicing voids.

### What's New for D 0.67

Jun 17, 2003

#### Bugs Fixed

- Fixed some bugs.

### What's New for D 0.66

Jun 8, 2003

#### New/Changed Features

- Added uri module.
- Added utf module.
- Added constant folding for ?: operator.
- Zero initialized structs no longer need to link to the module the struct was defined in.
- Private imports now supported.
- Class names common to multiple modules no longer collide, but this required a change to how class names are mangled. Hence, existing libraries will need to be recompiled.
- templates of the form:

      	template foo(T:T[])

  now correctly resolve T in foo(int[]) to int rather than int[].

### What's New for D 0.65

May 13, 2003

#### Bugs Fixed

- Another bad section name bug is hopefully fixed.

### What's New for D 0.64

May 12, 2003

#### New/Changed Features

- `dmd.conf` now needs to be installed as `/etc/dmd.conf`.
- `phobos.a` has been renamed as `libphobos.a` and been placed in the `/usr/lib` directory.
- dmd will now do the link step automatically.
- The bad section name bug is hopefully fixed.

### What's New for D 0.63

May 10, 2003

#### New/Changed Features

- Added linux version. Thanks to Burton Radons and Pat Nelson for the help.

### What's New for D 0.61

Mar 30, 2003

#### New/Changed Features

- Incorporated Burton Radon's stream.d fixes.
- Improved performance of string switches and string concatenation.
- Phobos library is now built optimized.
- Fixed numerous reported bugs.

### What's New for D 0.59

Mar 6, 2003

#### New/Changed Features

- Fixed bugs in nested functions.
- Refactored code so it compiles with gnuc.

### What's New for D 0.58

Mar 3, 2003

#### New/Changed Features

- Added covariant function return types.
- Fixed several bugs in nested functions, template argument deduction, access protections, constant folding, etc.

### What's New for D 0.57

Feb 25, 2003

#### New/Changed Features

- Added keyword function and new function pointer syntax analogous to the way the delegate declaration syntax works.
- Added function literals.
- Added nested functions.
- Added closures.
- Fixed struct/class definitions nested within functions.

Many thanks to Burton Radons for his help with this.

### What's New for D 0.56

Feb 20, 2003

#### New/Changed Features

- Fixed a couple bad bugs with template typedefs and arrays.

### What's New for D 0.55

Feb 17, 2003

#### New/Changed Features

- Added several new math functions to math.d.
- Changed behavior of new expressions to match change in array declaration order:

      	char[][] foo;
      	foo = new char[][45];	// new, correct way to allocate array of 45 strings
      	//foo = new char[45][];	// old, now wrong, way

- Fixed some problems with error recovery.
- The module name is now in its own scope enclosing the scope of the contents of the module (before it was simply inaccessible).

### What's New for D 0.54

Feb 14, 2003

#### New/Changed Features

- Fixed some parsing problems with template instances.
- Introduced new types cfloat, cdouble, ifloat, idouble.
- Introduced new constant types ifloat, idouble.
- Renamed extended to real.
- Renamed imaginary to ireal.
- Renamed complex to creal.
- Reversed order of array declarations when they appear to the left of the identifier being declared. Postfix array declaration syntax remains the same (and equivalent to C).

      	int[3][4] a;	// a is 4 arrays of 3 arrays of ints
      	int b[4][3];	// b is 4 arrays of 3 arrays of ints

These changes have been needed for a while

### What's New for D 0.53

Feb 8, 2003

#### New/Changed Features

- Added ability for explicit memory allocation/deallocation.

### What's New for D 0.52

Feb 5, 2003

#### New/Changed Features

- The argument to a with statement can now be a template instance.
- The inline asm for `FCOMI/FCOMIP/FUCOMI/FUCOMIP` can now accept the `ST,ST(i)` form of the instruction to match the Intel documentation.
- Fixed numerous minor bugs.

### What's New for D 0.51

Jan 27, 2003

#### New/Changed Features

- Added template value parameters (as opposed to just type parameters).
- Fixed several problems with templates.
- Added #line pragma support.
- D can now accept source files in various UTF formats.

### What's New for D 0.50

Nov 20, 2002

#### New/Changed Features

- To convert to type bit now requires an explicit cast, rather than implicit. The conversion `(cast(bit)i)` is now performed as `(i?true:false)`.
- Added library functions string.toString().
- Fixed many template bugs.
- Changed implicit conversion rules for integral types; implicit conversions are not allowed if the value would change. For example:

      	byte  b = 0x10;		// ok
      	ubyte c = 0x100;	// error
      	byte  d = 0x80;		// error
      	ubyte e = 0x80;		// ok

### What's New for D 0.49

Nov 18, 2002

#### New/Changed Features

- Added LINKCMD to sc.ini to specify which linker to use.
- Multiple -I switches can now be used, and the paths are searched in order.
- Fixed bug in regexp with blank substitutions.
- Removed "reference to this before super()" error.
- % and %= floating point operations are now handled by code generator instead of library.
- Fixed GCStats linking problem.
- Fixed many other minor problems.

### What's New for D 0.48

Oct 25, 2002

#### New/Changed Features

- Added conv to phobos library.
- Fixed a number of bugs that were blocking people.

### What's New for D 0.47

Oct 22, 2002

#### Bugs Fixed

- Fix Burton's reported bugs on arrays of small structs, and unit test failures in stream.d.

### What's New for D 0.46

Oct 22, 2002

#### New/Changed Features

- Fixed problem with auto class constructors.
- Fixed problem with calling class invariants with -O.
- Redid lib.exe command syntax to simplify makefiles.
- String literals can now span multiple lines.
- Fixed bugs in handling access violations and other windows exceptions.
- Revamped support for generating Windows GUI apps.
- Fixed some code gen bugs.

### What's New for D 0.45

Oct 8, 2002

#### New/Changed Features

- Redid constructor semantics to improve reliability.
- Expanded inlining capability.
- Redid interface semantics.
- Fixed problems with ~ string concatenation.

### What's New for D 0.44

Oct 1, 2002

#### New/Changed Features

- Clarified interface semantics and fixed problems with it per Joe Battelle's suggestions.

### What's New for D 0.43

Sep 28, 2002

#### New/Changed Features

- Added new VolatileStatement.
- Added auto storage class and auto classes to implement RAII. See here and here.

### What's New for D 0.42

Sep 12, 2002

#### New/Changed Features

- Implemented new alias declarations.

### What's New for D 0.41

Sep 9, 2002

#### New/Changed Features

- Implemented new array resizing algorithms.

### What's New for D 0.40

Sep 8, 2002

#### New/Changed Features

- Implemented templates.

### What's New for D 0.39

Aug 28, 2002

#### New/Changed Features

- Just some nuisance bugs fixed.

### What's New for D 0.38

Aug 21, 2002

#### New/Changed Features

- Fleshed out operator overloading support.

### What's New for D 0.37

Aug 18, 2002

#### New/Changed Features

- www.digitalmars.com/d/operatoroverloading.html It doesn't do all the operators yet, but it's a start.

### What's New for D 0.36

Aug 15, 2002

#### Bugs Fixed

- A long, but unspecified, list of bug fixes.

### What's New for D 0.35

Jun 3, 2002

#### New/Changed Features

- Add support for sc.ini file

### What's New for D 0.34

May 31, 2002

#### New/Changed Features

- Made public/protected/private work

#### Bugs Fixed

- Fixed some bugs

### What's New for D 0.32

May 17, 2002

#### New/Changed Features

- Now will inline functions with the -inline switch.
- DMD will now do the link for you, no need to use SC.

#### Bugs Fixed

- Fixes numerous problems with bit arrays and arrays in general.

### What's New for D 0.30

Apr 27, 2002

#### Bugs Fixed

- Fixed several reported bugs

### What's New for D 0.29

Apr 23, 2002

#### New/Changed Features

- Released the front end compiler source

### What's New for D 0.28

Apr 21, 2002

#### New/Changed Features

- Implements the new ==, !=, comparison, === and !== semantics

### What's New for D 0.27

Apr 16, 2002

#### New/Changed Features

- Add a threading library and make the GC thread aware www.digitalmars.com/d/phobos.html#thread

### What's New for D 0.26

Apr 10, 2002

#### New/Changed Features

- implement delegates: described in www.digitalmars.com/d/type.html
- works under Win98 now.

### What's New for D 0.25

Apr 7, 2002

#### New/Changed Features

- Lots of internal work reorganizing the compiler to be more consistent.
- Better error messages.
- Implemented .init properties.
- Added time and date functions.
- Includes Pavel's math2 package.
- Some of the front end code in \dmd\src\dmd\

### What's New for D 0.24

Mar 29, 2002

#### New/Changed Features

- Release source to lexer and parser
- Added array.reverse, .sort, etc

#### Bugs Fixed

- Fixed a raft of array handling bugs

### What's New for D 0.23

Mar 26, 2002

#### New/Changed Features

- Mostly under the hood rewrites of associative arrays.

#### Bugs Fixed

- Fixed some problems Pavel found.

### What's New for D 0.22

Mar 14, 2002

#### New/Changed Features

- This has the garbage collector rewritten in D.
- The C++ code has been replaced with D code in the Phobos source code. The gc is a little slower at the moment because I haven't implemented inline functions yet. Inline functions will close the performance gap between C and D, though D has the potential for better optimization than C.
- Intrinsic functions like I/O port calls added: www.digitalmars.com/d/phobos.html#intrinsic

### What's New for D 0.20

Feb 26, 2002

#### New/Changed Features

- Added inline assembler

### What's New for D 0.19

Feb 8, 2002

#### Bugs Fixed

- win98 crash
- /+ +/ commenting
- function pointer types
- etc

### What's New for D 0.16

Jan 20, 2002

#### New/Changed Features

- Array bounds checking

### What's New for D 0.15

Jan 15, 2002

#### New/Changed Features

- I've finally got packages implemented www.digitalmars.com/d/module.html
- Note that stdio is now c.stdio, and stdlib is now c.stdlib.

### What's New for D 0.11

Jan 4, 2002

#### Bugs Fixed

- No changelog

### What's New for D 0.10

Jan 2, 2002

#### Bugs Fixed

- No changelog

### What's New for D 0.07

Dec 28, 2001

#### Bugs Fixed

- No changelog

### What's New for D 0.04

Dec 23, 2001

#### Bugs Fixed

- Fixes long list of bugs submitted by people

### What's New for D 0.03

Dec 19, 2001

#### Bugs Fixed

- Fixed a lot of bugs regarding arrays and strings. Check out strings.d, the D string runtime library functions. It makes much use of array slicing and unit tests.

### What's New for D 0.02

Dec 16, 2001

#### Bugs Fixed

- interface calls, casts, implicit conversions, vtbl[]'s
- import object; is now implicitly done
- Object is now the default base class
- overloading at module level now works

### What's New for D 0.01

Dec 9, 2001

#### Bugs Fixed

- Fixed reported bugs

### What's New for D 0.00

Dec 8, 2001

#### New/Changed Features

- Initial release

Forums | Comments | D | Search | Downloads | Home
Copyright © 1999-2012 by Digital Mars ®, All Rights Reserved | Page generated by Ddoc.