[Home]
[Search]
[D]
D Change Log
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.
Jan 26, 2005
Note: This is a library only change, the dmd executables are still
at 0.111.
New/Changed Features
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 J. 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.
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().
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 ().
Nov 30, 2004
Bugs Fixed
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:
- adds EndianStream for BOM and endian support.
- removes the two public imports std.string and std.file from end of
file
- 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.
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.
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.
Oct 21, 2004
Bugs Fixed
- Fixed linker bug with unknown CV version.
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.
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.
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.
Aug 20, 2004
Bugs Fixed
- Fixed Internal error: ..\ztc\cgcs.c 213 introduced by 0.99.
- Hopefully fixed linux seg fault ENTER problem.
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.
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
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)
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 'lazilly'
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.
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.
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'
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.
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.
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.
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.
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.
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.
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.
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.
Mar 7, 2004
Bugs Fixed
- Fixed problem with class and modules having the same name.
- Fixed access problem with protected members of base class.
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.
Feb 2, 2004
New/Changed Features
- Added utf decoding capability to foreach statement.
- Added Christopher Miller's std.base64.
- Fixed gc per http://www.digitalmars.com/drn-bin/wwwnews?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.
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.
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.
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.
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.
Oct 15, 2003
New/Changed Features
- Added support for Unicode characters in identifiers.
- Version declarations can now wrap attribute : and they'll stick.
- -offilename 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).
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.
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.
Linux Bugs Fixed
- Occaisional segfault during gc collection fixed.
- Empty static arrays now placed in BSS segment.
- Conversion of uint to real now works.
Sep 3, 2003
New/Changed Features
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.
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.
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.
Jul 8, 2003
- 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.
Jun 17, 2003
Jun 8, 2003
- 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[].
May 13, 2003
linux version
- Another bad section name bug is hopefully fixed.
May 12, 2003
linux version
- 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.
May 10, 2003
- Added linux version. Thanks to Burton Radons and
Pat Nelson for the help.
Mar 30, 2003
- 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.
Mar 6, 2003
- Fixed bugs in nested functions.
- Refactored code so it compiles with gnuc.
Mar 3, 2003
Feb 25, 2003
Many thanks to Burton Radons for his help with this.
Feb 20, 2003
- Fixed a couple bad bugs with template typedefs and arrays.
Feb 17, 2003
- 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).
Feb 14, 2003
These changes have been needed for a while, and it's time to
put them in before D gets too constrained by legacy code.
Fortunately, using grep and global/search/replace can easily
take care of the type renames.
The array declaration issue can be fixed
by grepping for "][", and then manually fixing each.
Feb 8, 2003
Feb 5, 2003
- 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.
Jan 27, 2003
- 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.
Nov 20, 2002
Nov 18, 2002
- 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.
Oct 25, 2002
- Added
conv to phobos library.
- Fixed a number of bugs that were blocking people.
Oct 22, 2002
- 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.
Oct 8, 2002
- Redid constructor semantics
to improve reliability.
- Expanded inlining capability.
- Redid interface semantics.
- Fixed problems with ~ string concatenation.
Oct 1, 2002
- Clarified interface semantics
and fixed problems with it per Joe Battelle's suggestions.
Sep 28, 2002
Feedback and Comments
Add feedback and comments regarding this
page.