Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
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

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

Copyright © 1999-2023 by the D Language Foundation | Page generated by Ddoc on Mon May 1 15:50:25 2023