DMD 2.020 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 © 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
Downloads (~5,8 Mb)_
http://ftp.digitalmars.com/dmd.2.020.zip