@@ -5,7 +5,7 @@ $(CHANGELOG_NAV_INJECT)
5
5
$(VERSION Apr 01, 2025, =================================================,
6
6
7
7
$(CHANGELOG_HEADER_STATISTICS
8
- $(VER) comes with 40 major changes and 123 fixed Bugzilla issues.
8
+ $(VER) comes with 41 major changes and 126 fixed Bugzilla issues.
9
9
A huge thanks goes to the
10
10
$(LINK2 #contributors, 79 contributors)
11
11
who made $(VER) possible.)
@@ -24,6 +24,7 @@ $(LI $(RELATIVE_LINK2 dmd.deprecation-throwing-contracts,An error is now issued
24
24
$(LI $(RELATIVE_LINK2 dmd.deprecation-typesafe-variadic-class,Typesafe variadic class parameters have been deprecated))
25
25
$(LI $(RELATIVE_LINK2 dmd.deprecation-version-debug-number,Integers in `debug` or `version` statements have been removed from the language))
26
26
$(LI $(RELATIVE_LINK2 dmd.error-messages,Many error messages have changed))
27
+ $(LI $(RELATIVE_LINK2 dmd.extern-std-cpp23,The compiler now accepts `-extern-std=c++23`))
27
28
$(LI $(RELATIVE_LINK2 dmd.ftime-trace,Build time profiling has been added to DMD))
28
29
$(LI $(RELATIVE_LINK2 dmd.getBitfieldInfo,New traits `getBitfieldOffset` and `getBitfieldWidth` for built-in bitfields))
29
30
$(LI $(RELATIVE_LINK2 dmd.import-c-i,Using the compiler flag `-i` will now properly pick up C source files))
495
496
)
496
497
)
497
498
499
+ $(LI $(LNAME2 dmd.extern-std-cpp23,The compiler now accepts `-extern-std=c++23`)
500
+ $(CHANGELOG_SOURCE_FILE dmd, changelog/dmd.extern-std-cpp23.dd)
501
+ $(P
502
+ The compiler now accepts c++23 as a supported standard for `-extern-std=`.
503
+ Currently this only changes the value of `__traits(getTargetInfo, "cppStd")`.
504
+ )
505
+ )
506
+
498
507
$(LI $(LNAME2 dmd.ftime-trace,Build time profiling has been added to DMD)
499
508
$(CHANGELOG_SOURCE_FILE dmd, changelog/dmd.ftime-trace.dd)
500
509
$(P
@@ -771,9 +780,26 @@ efficient, as, say, a string can be moved rather than copied/deleted.
771
780
)
772
781
773
782
$(P
774
- A moved object can still be destructed, so take that into account when moving
783
+ A moved object will still be destructed, so take that into account when moving
775
784
a field - set it to a benign value that can be destructed.
776
785
)
786
+
787
+ $(P
788
+ `__rvalue` may also be used as an attribute on a function which returns by ref
789
+ to declare that the result should be treated as an rvalue at the callsite:
790
+ )
791
+ ```
792
+ ref T move(T)(return ref T source) __rvalue
793
+ {
794
+ return source;
795
+ }
796
+
797
+ S s;
798
+ S t = move(s); // call expression rewritten as: S t = __rvalue(move(s))
799
+ ```
800
+ $(P
801
+ This is used as an internal tool to implement library primitives such as `move` and `forward`.
802
+ )
777
803
)
778
804
779
805
$(LI $(LNAME2 dmd.safer,Add `-preview=safer` switch for safety checking on unattributed functions)
@@ -1248,6 +1274,7 @@ $(LI $(BUGZILLA 20691): Converting scope static array to scope dynamic array sho
1248
1274
$(LI $(BUGZILLA 20812): _d_assocarrayliteralTX segfault assigning a shared associative array an AA literal)
1249
1275
$(LI $(BUGZILLA 20831): __traits$(LPAREN)getAttributes$(RPAREN) failes to compile when used on a parameter with no name)
1250
1276
$(LI $(BUGZILLA 20912): Compiler incorrectly lists non-matching overloads as matching in diagnostic)
1277
+ $(LI $(BUGZILLA 21020): named import in with block masks local symbol)
1251
1278
$(LI $(BUGZILLA 21995): Struct with size uint.max or greater causes ICE)
1252
1279
$(LI $(BUGZILLA 23131): With -vasm all the X87 instructions are printed wrong.)
1253
1280
$(LI $(BUGZILLA 23294): [dip1000] parameter to parameter assignment leads to incorrect scope inference)
@@ -1293,6 +1320,7 @@ $(LI $(BUGZILLA 20516): [D 2.0 FAQ])
1293
1320
$(LI $(BUGZILLA 20614): CTFE supports typeid$(LPAREN)stuff$(RPAREN).name but not classinfo.name)
1294
1321
$(LI $(BUGZILLA 20888): std.range.Cycle does not compose with `const`)
1295
1322
$(LI $(BUGZILLA 20960): -profile=gc does not track class objects allocated with new)
1323
+ $(LI $(BUGZILLA 20982): Add a pragma to suppress deprecation messages)
1296
1324
$(LI $(BUGZILLA 21564): Allow assignment syntax for instantiating mixin templates)
1297
1325
$(LI $(BUGZILLA 23449): spellchecker should suggest corrections for pointer members)
1298
1326
$(LI $(BUGZILLA 23812): ImportC: allow adding function attributes to imported C functions)
@@ -1308,6 +1336,7 @@ $(LI $(BUGZILLA 64): Unhandled errors should go to stderr)
1308
1336
$(LI $(BUGZILLA 10581): Undefined identifier "std.uni.isWhite" when passing string lambda to std.algorithm.filter)
1309
1337
$(LI $(BUGZILLA 10607): DirEntry has no constructor)
1310
1338
$(LI $(BUGZILLA 10647): AutoImplement should implement overridden member functions with 'override' attributes)
1339
+ $(LI $(BUGZILLA 10680): BigInt uses deprecated std.traits.unsigned)
1311
1340
$(LI $(BUGZILLA 14138): std.parallelism.task breaks @safety)
1312
1341
$(LI $(BUGZILLA 15315): can break immutable with std.algorithm.move)
1313
1342
$(LI $(BUGZILLA 20870): std.outbuffer.printf is trusted)
0 commit comments