...ing logging 4.0


dmd 2.020


Version D 2.020 Oct 20, 2008

New/Changed Features
  • Improved performance of AAs by rebalancing trees when rehashing.
  • immutable now is implemented.
  • Bugzilla 2344: Two wrong lookups for array functions
  • Bugzilla 2345: Return by reference should be allowed
  • Posix is now a predefined identifier when compiling under Linux
  • Based on Sean Kelly's hard work, Phobos has been split into two libraries, druntime.lib and phobos.lib. This will enable better integration with Tango. The user source code changes are:
from to
bit bool
_d_OutOfMemory() onOutOfMemoryError()
import std.asserterror; import core.exception;
import std.hiddenfunc; import core.exception;
import std.switcherr; import core.exception;
import std.array; import core.exception;
import std.outofmemory; import core.exception;
import std.gc; import core.memory;
import std.thread; import core.thread;
SwitchError SwitchException
AssertError AssertException
HiddenFuncError HiddenFuncException
ArrayBoundsError ArrayBoundsException
std.gc.fullCollect() GC.collect()
std.gc.*() memory.gc_*()
_moduleUnitTests() import runtime; runModuleUnitTests()
printf add import std.c.stdio;
  • Changes to thread:
    • The thread handle isn't exposed to the user. This can always be obtained using the appropriate OS calls from within the thread.
    • There is no druntime equivalent for Thread.pause() and Thread.resume(). The closest is thread_suspendAll() and thread_resumeAll()--extern (C) calls meant for use by the GC.
    • Thread.wait() is renamed to Thread.join().
    • Sleep functionality is available as Thread.sleep(double), where the parameter represents the number of seconds to sleep (fractional values accepted, obviously).

This is a big change, and expect some problems for a release or two with this.


ref int foo()
{   auto p = new int;
    return *p;
foo() = 3;  // reference returns can be lvalues



Bugs Fixed
  • Bugzilla 1229: Linker fills disk
  • Bugzilla 2332: Initializing const or invariant hashes croaks
  • Bugzilla 2333: Hash initializer does not work
  • Bugzilla 2336: link to nonexistent std_array.html
  • Bugzilla 2340: Template properties don't work
  • Bugzilla 2341: Double destruction without intervening copy
  • Bugzilla 2362: Confusing description of 'aliasing of invariant with mutable'?
  • Bugzilla 2363: Spurious () required after function name when used with array in prefix form
  • Bugzilla 2366: Const member function syntax is missing
  • Bugzilla 2368: Calling a function with an address of another function, then calling a returned object is rejected
  • Bugzilla 2373: freebsd select does not accept values > 999,999
  • Bugzilla 2376: CTFE fails on array literal of array literals of chars
  • Bugzilla 2380: static struct initializer accepted as non static initializer is not documented
  • Bugzilla 2383: default arguments can implicitly access private global variables that are not visible at call site
  • Bugzilla 2385: spec says all structs are returned via hidden pointer on linux, but it uses registers
  • Bugzilla 2390: Missing warning on conversion from int to char