@@ -5,14 +5,15 @@ $(CHANGELOG_NAV_INJECT)
5
5
$(VERSION Aug 01, 2023, =================================================,
6
6
7
7
$(CHANGELOG_HEADER_STATISTICS
8
- $(VER) comes with 10 major changes and 64 fixed Bugzilla issues.
8
+ $(VER) comes with 11 major changes and 59 fixed Bugzilla issues.
9
9
A huge thanks goes to the
10
10
$(LINK2 #contributors, 34 contributors)
11
11
who made $(VER) possible.)
12
12
13
13
$(BUGSTITLE_TEXT_HEADER Compiler changes,
14
14
15
15
$(LI $(RELATIVE_LINK2 dmd.alias-this-syntax,Assignment-style syntax is now allowed for `alias this`))
16
+ $(LI $(RELATIVE_LINK2 dmd.catch-immutable,Catch clause must take only `const` or mutable exceptions))
16
17
$(LI $(RELATIVE_LINK2 dmd.enum-function,Functions can no longer have `enum` storage class))
17
18
$(LI $(RELATIVE_LINK2 dmd.extern-c-overload,Overloading `extern(C)` functions is now an error))
18
19
$(LI $(RELATIVE_LINK2 dmd.private-deprecation-error,Deprecation phase ended for access to private method when overloaded with public method.))
@@ -64,6 +65,31 @@ struct S
64
65
---
65
66
)
66
67
68
+ $(LI $(LNAME2 dmd.catch-immutable,Catch clause must take only `const` or mutable exceptions)
69
+ $(CHANGELOG_SOURCE_FILE dmd, changelog/dmd.catch-immutable.dd)
70
+ $(P
71
+ In 2.104, throwing qualified types was
72
+ [deprecated](https://dlang.org/changelog/2.104.0.html#dmd.throw-qualifier).
73
+ )
74
+
75
+ $(P
76
+ It is also unsafe to catch an exception as `immutable`, `inout` or `shared`.
77
+ This is because the exception may still be accessible through another
78
+ mutable or non-shared reference. Catching an exception with those qualifiers
79
+ is now deprecated.
80
+ )
81
+
82
+ ---
83
+ auto e = new Exception("first");
84
+ try {
85
+ throw e;
86
+ } catch(immutable Exception ie) { // now an error
87
+ e.msg = "second";
88
+ assert(ie.msg == "first"); // would fail
89
+ }
90
+ ---
91
+ )
92
+
67
93
$(LI $(LNAME2 dmd.enum-function,Functions can no longer have `enum` storage class)
68
94
$(CHANGELOG_SOURCE_FILE dmd, changelog/dmd.enum-function.dd)
69
95
$(P
@@ -283,9 +309,7 @@ $(CHANGELOG_SEP_TEXT_BUGZILLA)
283
309
$(BUGSTITLE_BUGZILLA DMD Compiler regression fixes,
284
310
285
311
$(LI $(BUGZILLA 22427): betterC: casting an array causes linker error in string comparison.)
286
- $(LI $(BUGZILLA 23966): [REG2.102] Cannot use traits$(LPAREN)getAttributes$(RPAREN) with overloaded template)
287
312
$(LI $(BUGZILLA 24018): array concatenation doesn't work with disabled default construction)
288
- $(LI $(BUGZILLA 24026): ImportC: ICE on nested C initializer 2)
289
313
)
290
314
$(BUGSTITLE_BUGZILLA DMD Compiler bug fixes,
291
315
@@ -298,8 +322,8 @@ $(LI $(BUGZILLA 20008): __traits$(LPAREN)allMembers$(RPAREN) of packages is comp
298
322
$(LI $(BUGZILLA 20687): Allow member function address as const initializer)
299
323
$(LI $(BUGZILLA 21415): catch immutable exceptions breaks immutable)
300
324
$(LI $(BUGZILLA 21425): Using va_start twice results in wrong values)
301
- $(LI $(BUGZILLA 23279): Segmentation fault on mixin template + using unknown type)
302
325
$(LI $(BUGZILLA 23719): runnable/test22071.c:22:16: error: ‘abc’ is a pointer; did you mean to use ‘->’?)
326
+ $(LI $(BUGZILLA 23857): backend inliner takes too long on recursive function call)
303
327
$(LI $(BUGZILLA 23870): ImportC doesn't accept '\' followed by newline, whereas VC does)
304
328
$(LI $(BUGZILLA 23875): ImportC: __attribute__ in a cast doesn't work)
305
329
$(LI $(BUGZILLA 23879): ImportC: Windows system headers use __alignof)
@@ -312,20 +336,17 @@ $(LI $(BUGZILLA 23914): "auto ref" resolution on return value prevented by noret
312
336
$(LI $(BUGZILLA 23935): ImportC: __pragma not allowed between struct and tag name)
313
337
$(LI $(BUGZILLA 23936): ImportC: pragma pack is not working for structs)
314
338
$(LI $(BUGZILLA 23947): If a class overloads a method mixing private and public and the last overload is public, the method is always public.)
315
- $(LI $(BUGZILLA 23951): "alias this" not properly dereferenced when the object being looked up is a field of a type)
316
339
$(LI $(BUGZILLA 23968): Deprecation not emitted with alias to template function in UFCS)
317
340
$(LI $(BUGZILLA 23988): Conditional Exp does not bring enums to correct common type if one leg is const)
318
341
$(LI $(BUGZILLA 24010): Destructor called before end of scope for tuples)
319
342
$(LI $(BUGZILLA 24017): [UFCS] Bypassing `nothrow` with `debug` doesn’t work)
320
343
$(LI $(BUGZILLA 24024): cannot pass class this to ref class)
321
344
$(LI $(BUGZILLA 24025): Expressions contained in parentheses should not be assumed to be C casts)
322
- $(LI $(BUGZILLA 24027): error: instantiated from here: `maxElement!$(LPAREN)"a.a", A[]$(RPAREN)`)
323
345
$(LI $(BUGZILLA 24029): ImportC: symbol name clash on statement expressions)
324
346
)
325
347
$(BUGSTITLE_BUGZILLA DMD Compiler enhancements,
326
348
327
349
$(LI $(BUGZILLA 4663): Wrong 'static' position error message)
328
- $(LI $(BUGZILLA 5636): Array ops use lexicographic comparison instead of vector-style element-wise)
329
350
$(LI $(BUGZILLA 15436): Compiler still refers to AliasSeq-s as "tuple"-s $(LPAREN)and TypeTuple?$(RPAREN))
330
351
$(LI $(BUGZILLA 23475): confusing printf deprecation message with ulong/long on Windows)
331
352
$(LI $(BUGZILLA 23871): ImportC: __attribute not recognized)
@@ -351,10 +372,6 @@ $(BUGSTITLE_BUGZILLA Phobos enhancements,
351
372
$(LI $(BUGZILLA 23881): std.system has no function for system architecture)
352
373
$(LI $(BUGZILLA 23922): [std.socket])
353
374
)
354
- $(BUGSTITLE_BUGZILLA Druntime regression fixes,
355
-
356
- $(LI $(BUGZILLA 23890): "Warning: cannot inline function" in core.lifetime)
357
- )
358
375
$(BUGSTITLE_BUGZILLA Druntime bug fixes,
359
376
360
377
$(LI $(BUGZILLA 23312): Crash when calling writeln in WinMain)
@@ -372,6 +389,7 @@ $(LI $(BUGZILLA 23946): specifications state that "there can only be one destruc
372
389
)
373
390
$(BUGSTITLE_BUGZILLA dlang.org enhancements,
374
391
392
+ $(LI $(BUGZILLA 5636): Array ops use lexicographic comparison instead of vector-style element-wise)
375
393
$(LI $(BUGZILLA 23571): Discussion of manifest constants in enum documentation is confusing at best)
376
394
)
377
395
)
@@ -389,14 +407,14 @@ $(D_CONTRIBUTORS
389
407
$(D_CONTRIBUTOR Dennis Korpel)
390
408
$(D_CONTRIBUTOR Dmytro Katyukha)
391
409
$(D_CONTRIBUTOR Ernesto Castellotti)
392
- $(D_CONTRIBUTOR FeepingCreature)
393
410
$(D_CONTRIBUTOR Iain Buclaw)
394
411
$(D_CONTRIBUTOR Jacob Carlborg)
395
412
$(D_CONTRIBUTOR Jan Jurzitza)
396
413
$(D_CONTRIBUTOR Johan Engelen)
397
414
$(D_CONTRIBUTOR Lucian Danescu)
398
415
$(D_CONTRIBUTOR Lucipetus)
399
416
$(D_CONTRIBUTOR Luís Ferreira)
417
+ $(D_CONTRIBUTOR Martin Kinkelin)
400
418
$(D_CONTRIBUTOR Mathis Beer)
401
419
$(D_CONTRIBUTOR mhh)
402
420
$(D_CONTRIBUTOR Mike Parker)
0 commit comments