Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

Change Log: 2.020

previous version: 2.019 – next version: 2.021

Download D 2.020
released 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.

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
previous version: 2.019 – next version: 2.021