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.037

Download D 2.037
released Dec 3, 2009

#### New/Changed Features

- Conditional expressions ?: can now be modifiable lvalues.
- The type inferred from an ArrayLiteral is now a dynamic array, not a static one.
- Added support for op= for array.length
- Array and associative array types are now determined by using ?: across all the elements, not just using the first one.
- Array concatenation with elements now allows implicit conversion of the elements to the array element type.
- No more comma operators allowed between [ ].
- ClassInfo now merged into TypeInfo_Class.
- Bugzilla 3379: [tdpl] Parameter names not visible in the if clause of a template
- Bugzilla 3380: [tdpl] typeid(obj) should return the dynamic type of the object
- Removed -safe command line switch, added -noboundscheck command line switch.
- Bugzilla 3481: PATCH: opPow(), x ^^ y as a power operator
- Added opDispatch
- properties can only have 0 or 1 arguments
- properties cannot be overloaded with non-properties
- std.math: Added FloatControl, IeeeFlags for enabling floating-point exceptions.
- std.math: Inverse trig functions are now pure nothrow.

#### Bugs Fixed

- std.array: Fixed unlisted bug in array().
- Bugzilla 111: appending a dchar to a char[]
- Bugzilla 2664: OSX standard math functions are less accurate
- Bugzilla 2802: VariantN.opCmp!(T) fails when T != VariantN
- Bugzilla 2967: spec does not mention that inline asm is a valid "return" statement
- Bugzilla 2977: std.random.unpredictableSeed() should use thread ID somewhere
- Bugzilla 3115: >>> and >>>= generate wrong code
- Bugzilla 3171: % not implemented correctly for floats
- Bugzilla 3311: std.range.chain shouldn't have opIndexAssign if arguments aren't mutable
- Bugzilla 3375: [tdpl] Ternary operator doesn't yield an lvalue
- Bugzilla 3381: [tdpl] Incorrect assessment of overriding in triangular-shaped hierarchy
- Bugzilla 3388: [tdpl] contracts should allow throw expressions
- Bugzilla 3390: [tdpl] out(result) contract should not be able to rebind result
- Bugzilla 3407: [tdpl] Compiling with -safe -release must keep all bound checks
- Bugzilla 3433: [tdpl] Comparing structs for equality is not member-by-member
- Bugzilla 3469: ICE(func.c): Regression. Calling non-template function as a template, from another module
- Bugzilla 3478: "no effect in expression" error on return to void
- Bugzilla 3494: Segfault(mtype.c) using typeof(return) inside an auto function
- Bugzilla 3495: Segfault(typinf.c) instantiating D variadic function with too few arguments
- Bugzilla 3496: ICE(cgelem.c, optimizer bug) cast(void *)(x&1)== null.
- Bugzilla 3502: Fix for dropped Mac OS X 10.5
- Bugzilla 3521: Optimized code access popped register
- Bugzilla 3540: Another DWARF line number fix
- Bugzilla 3551: nested struct => dmd adds a hidden pointer
- Bugzilla 3553: ICE when a function argument defaults to __LINE__

Copyright © 1999-2021 by the D Language Foundation | Page generated by Ddoc on Thu Jun 3 21:31:44 2021