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.100.2
Download D 2.100.2
released Sep 10, 2022
2.100.2 comes with 1 major change and 21 fixed Bugzilla issues.
A huge thanks goes to the
18 contributors
who made 2.100.2 possible.
List of all bug fixes and enhancements in D 2.100.2.
Compiler changes
- scope(failure) blocks that contain return statements are now deprecated
Starting with this release, having a return statement in the body of a scope(failure) statement is deprecated. Having the ability to return from such blocks is error prone since currently, Errors are also handled by scope(failure). This leads to the following situation:
ulong get () @safe nothrow { scope (failure) return 10; throw new Error(""); } void main () @safe { assert(get() == 10); // passes }
where an error is circumvented by a return. If a return is indeed desired in such situations, then the solution is to simply use a try-catch block for the function body.
Note: scope(exit) and scope(success) already present this restriction.
List of all bug fixes and enhancements in D 2.100.2:
DMD Compiler regression fixes
- Bugzilla 23100: empty array literal passed to scope param not 'falsey' anymore
- Bugzilla 23148: Missing invariant symbol with static library when template function declares struct with destructor and invariant that instantiates template with lambda, also main has a lambda
- Bugzilla 23170: Array literal passed to map in lambda, then returned from nested function, is memory corrupted
- Bugzilla 23172: [REG2.100] Wrong cast inserted for ternary operator and non-int enums
- Bugzilla 23181: [REG 2.099] AssertError@src/dmd/e2ir.d(6094): Trying reference _d_arraysetctor
DMD Compiler bug fixes
- Bugzilla 20143: ICE in optimizer on real 0/0 returned as double
- Bugzilla 21443: scope (failure) with a return breaks safety
- Bugzilla 21723: Linker error: two module static library, main compiled inline, invariant that defines a function, type alias, and an alias lambda
- Bugzilla 23082: stringof of template alias overloaded with function accessed by trait: segfault.
- Bugzilla 23102: pinholeopt, "Conditional jump or move depends on uninitialised value(s)"
- Bugzilla 23108: ICE: AssertError@src/dmd/clone.d(567): Assertion failure
- Bugzilla 23109: ICE: AssertError@src/dmd/dclass.d(449): Assertion failure
- Bugzilla 23114: Can't use noreturn operand in arithmetic expression
- Bugzilla 23120: dmd illegal instruction throw expression
- Bugzilla 23166: seg fault when compiling with -inline
- Bugzilla 23177: ModuleInfo is not exported on Windows
- Bugzilla 23234: Delegate literal with inferred return value that requires following alias-this uses class cast instead.
- Bugzilla 23258: ICE on SumType of two arrays of classes
Phobos regression fixes
- Bugzilla 23132: "cannot access frame pointer" comparing two ranges for equality from v2.099.0
- Bugzilla 23140: Array!T where T is a shared class no longer works
- Bugzilla 23238: Cannot write a const Nullable(T, T nullValue)
Contributors to this release (18)
A huge thanks goes to all the awesome people who made this release possible.
- Boris Carvajal
- dawg
- Dennis
- Dennis Korpel
- FeepingCreature
- Iain Buclaw
- Martin Kinkelin
- Martin Nowak
- Mathis Beer
- Max Haughton
- mhh
- Paul Backus
- Razvan Nitu
- richard andrew cattermole
- RubyTheRoobster
- Tomáš Chaloupka
- Walter Bright
- wolframw
Copyright © 1999-2024 by the D Language Foundation | Page generated by
Ddoc on Thu Nov 21 01:51:43 2024