@@ -5,14 +5,15 @@ $(CHANGELOG_NAV_INJECT)
55$(VERSION Aug 01, 2023, =================================================,
66
77$(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.
99 A huge thanks goes to the
1010 $(LINK2 #contributors, 34 contributors)
1111 who made $(VER) possible.)
1212
1313$(BUGSTITLE_TEXT_HEADER Compiler changes,
1414
1515$(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))
1617$(LI $(RELATIVE_LINK2 dmd.enum-function,Functions can no longer have `enum` storage class))
1718$(LI $(RELATIVE_LINK2 dmd.extern-c-overload,Overloading `extern(C)` functions is now an error))
1819$(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
6465---
6566)
6667
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+
6793$(LI $(LNAME2 dmd.enum-function,Functions can no longer have `enum` storage class)
6894$(CHANGELOG_SOURCE_FILE dmd, changelog/dmd.enum-function.dd)
6995$(P
@@ -283,9 +309,7 @@ $(CHANGELOG_SEP_TEXT_BUGZILLA)
283309$(BUGSTITLE_BUGZILLA DMD Compiler regression fixes,
284310
285311$(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)
287312$(LI $(BUGZILLA 24018): array concatenation doesn't work with disabled default construction)
288- $(LI $(BUGZILLA 24026): ImportC: ICE on nested C initializer 2)
289313)
290314$(BUGSTITLE_BUGZILLA DMD Compiler bug fixes,
291315
@@ -298,8 +322,8 @@ $(LI $(BUGZILLA 20008): __traits$(LPAREN)allMembers$(RPAREN) of packages is comp
298322$(LI $(BUGZILLA 20687): Allow member function address as const initializer)
299323$(LI $(BUGZILLA 21415): catch immutable exceptions breaks immutable)
300324$(LI $(BUGZILLA 21425): Using va_start twice results in wrong values)
301- $(LI $(BUGZILLA 23279): Segmentation fault on mixin template + using unknown type)
302325$(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)
303327$(LI $(BUGZILLA 23870): ImportC doesn't accept '\' followed by newline, whereas VC does)
304328$(LI $(BUGZILLA 23875): ImportC: __attribute__ in a cast doesn't work)
305329$(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
312336$(LI $(BUGZILLA 23935): ImportC: __pragma not allowed between struct and tag name)
313337$(LI $(BUGZILLA 23936): ImportC: pragma pack is not working for structs)
314338$(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)
316339$(LI $(BUGZILLA 23968): Deprecation not emitted with alias to template function in UFCS)
317340$(LI $(BUGZILLA 23988): Conditional Exp does not bring enums to correct common type if one leg is const)
318341$(LI $(BUGZILLA 24010): Destructor called before end of scope for tuples)
319342$(LI $(BUGZILLA 24017): [UFCS] Bypassing `nothrow` with `debug` doesn’t work)
320343$(LI $(BUGZILLA 24024): cannot pass class this to ref class)
321344$(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)`)
323345$(LI $(BUGZILLA 24029): ImportC: symbol name clash on statement expressions)
324346)
325347$(BUGSTITLE_BUGZILLA DMD Compiler enhancements,
326348
327349$(LI $(BUGZILLA 4663): Wrong 'static' position error message)
328- $(LI $(BUGZILLA 5636): Array ops use lexicographic comparison instead of vector-style element-wise)
329350$(LI $(BUGZILLA 15436): Compiler still refers to AliasSeq-s as "tuple"-s $(LPAREN)and TypeTuple?$(RPAREN))
330351$(LI $(BUGZILLA 23475): confusing printf deprecation message with ulong/long on Windows)
331352$(LI $(BUGZILLA 23871): ImportC: __attribute not recognized)
@@ -351,10 +372,6 @@ $(BUGSTITLE_BUGZILLA Phobos enhancements,
351372$(LI $(BUGZILLA 23881): std.system has no function for system architecture)
352373$(LI $(BUGZILLA 23922): [std.socket])
353374)
354- $(BUGSTITLE_BUGZILLA Druntime regression fixes,
355-
356- $(LI $(BUGZILLA 23890): "Warning: cannot inline function" in core.lifetime)
357- )
358375$(BUGSTITLE_BUGZILLA Druntime bug fixes,
359376
360377$(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
372389)
373390$(BUGSTITLE_BUGZILLA dlang.org enhancements,
374391
392+ $(LI $(BUGZILLA 5636): Array ops use lexicographic comparison instead of vector-style element-wise)
375393$(LI $(BUGZILLA 23571): Discussion of manifest constants in enum documentation is confusing at best)
376394)
377395)
@@ -389,14 +407,14 @@ $(D_CONTRIBUTORS
389407 $(D_CONTRIBUTOR Dennis Korpel)
390408 $(D_CONTRIBUTOR Dmytro Katyukha)
391409 $(D_CONTRIBUTOR Ernesto Castellotti)
392- $(D_CONTRIBUTOR FeepingCreature)
393410 $(D_CONTRIBUTOR Iain Buclaw)
394411 $(D_CONTRIBUTOR Jacob Carlborg)
395412 $(D_CONTRIBUTOR Jan Jurzitza)
396413 $(D_CONTRIBUTOR Johan Engelen)
397414 $(D_CONTRIBUTOR Lucian Danescu)
398415 $(D_CONTRIBUTOR Lucipetus)
399416 $(D_CONTRIBUTOR Luís Ferreira)
417+ $(D_CONTRIBUTOR Martin Kinkelin)
400418 $(D_CONTRIBUTOR Mathis Beer)
401419 $(D_CONTRIBUTOR mhh)
402420 $(D_CONTRIBUTOR Mike Parker)
0 commit comments