Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Calendar
  - 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.021

Download D 2.021
released Nov 25, 2008

#### New/Changed Features

- Added -safe switch and module(system) Identifier; syntax.
- Added range support to foreach statement.
- scope parameter storage class means the parameter will not 'escape' the scope of the function invocation. Using this for delegate parameters will prevent some closure allocations by the calling function.
- The lazy storage class now implies scope so that lazy arguments won't trigger a heap allocated closure.
- The 'this' parameter to struct member functions is now a reference type, rather than a pointer. This breaks existing code.
- More changes to druntime:

  from | to
  --- | ---
  OutOfMemoryException | OutOfMemoryError
  SwitchException | SwitchError
  HiddenFuncException | HiddenFuncError
  ArrayBoundsException | RangeError
  AssertException | AssertError
  FinalizeException | FinalizeError
  onArrayBoundsError | onRangeError
  stdc.* | core.stdc.*
  sys.* | core.sys.*

- Added core.runtime.loadLibrary() as an experimental feature for loading dynamic libraries (Win32 only at the moment).
- Added core.runtime.unloadLibrary() as an experimental feature for unloading dynamic libraries previously loaded by loadLibrary().
- core.thread.sleep() accepts a long integer specifying the sleep interval in 100 nanosecond intervals (the previous release notes said this was a float, IIRC).
- It is no longer necessary to link in druntime separately, it is inserted into libphobos2.a.

#### Bugs Fixed

- Bugzilla 313: Fully qualified names bypass private imports
- Bugzilla 920: SPEC: Auto classes referenced where scope should be used
- Bugzilla 929: Resizing array of associative arrays (uint[char[]][]) causes infinite loop / hang
- Bugzilla 1372: Compiler accepts pragma(msg,)
- Bugzilla 1610: Enum.stringof is int, not the name of the enum
- Bugzilla 1663: pragma(lib, "") don't work on linux
- Bugzilla 1797: Documentation comments - ///
- Bugzilla 2428: Accessing item in enum'd array produced compiler error
- Bugzilla 2429: std.stream.File incorrect flag parsing and sharing mode
- Bugzilla 2431: Internal error: ../ztc/cgcod.c 1031 when using -O
- Bugzilla 2470: Cannot build libraries from other libraries
- unittest functions now always use D linkage

Copyright © 1999-2021 by the D Language Foundation | Page generated by Ddoc on Sun Dec 19 20:54:59 2021