You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$(LI $(RELATIVE_LINK2 remove_std_c,The deprecated `std.c` package has been removed.))
35
+
$(LI $(RELATIVE_LINK2 std-algorithm-iteration-joiner,The performance of `std.algorithm.iteration.joiner` has been improved))
37
36
$(LI $(RELATIVE_LINK2 std-algorithm-mutation-remove,`std.algorithm.mutation.remove` now only accepts integral values or pair of integral values as offset))
38
37
$(LI $(RELATIVE_LINK2 std-math-fminmax,Changed semantics of std.math.{fmin,fmax} wrt. NaNs.))
39
38
@@ -182,6 +181,49 @@ int fun(ref int a, int b)
182
181
---
183
182
)
184
183
184
+
$(LI $(LNAME2 extern_cpp_overhaul,`extern (C++)` construction, destruction, operators and other mangling improvements)
Many improvements have been made to the `extern(C++)` experience in this release cycle.
188
+
)
189
+
190
+
$(P
191
+
Mangling improvements include:
192
+
)
193
+
194
+
$(P
195
+
$(UL
196
+
$(LI Constructor/destructor mangling matches C++)
197
+
$(LI Compatible D style operators now mangle as C++ operators)
198
+
$(LI `nullptr_t` mangles correctly)
199
+
$(LI Various mangling bugs have been fixed)
200
+
)
201
+
)
202
+
203
+
$(P
204
+
`extern(C++)` APIs that use `nullptr_t` can use `typeof(null)` on the D side:
205
+
)
206
+
---
207
+
alias nullptr_t = typeof(null);
208
+
extern (C++) void fun(nullptr_t);
209
+
---
210
+
211
+
$(P
212
+
`extern (C++)` mangling of operators is working for all operators that are semantically equivalent.
213
+
This list includes all instantiations of `opUnary`, `opBinary`, `opAssign`, `opOpAssign`, `opCast`, `opEquals`, `opIndex`, `opCall`.
214
+
Two notable exceptions are `opCmp`, and C++ `operator !`, which don't have compatible implementations.
215
+
)
216
+
217
+
$(P
218
+
Mangling of `extern (C++) class` constructors and destructor are working.
219
+
)
220
+
221
+
$(P
222
+
This release also includes ABI fixes where destructors are now correctly added to the virtual table, and constructor/destructor calling semantics now match C++.
223
+
With this, mixed-language class hierarchies are working, with construction/destruction being supported in either language.
224
+
)
225
+
)
226
+
185
227
$(LI $(LNAME2 fix16206,Support for iterating template overloads)
$(LI $(BUGZILLA 18966): extern$(LPAREN)C++$(RPAREN) constructor should match C++ semantics assigning vtable)
690
741
$(LI $(BUGZILLA 18970): DMD segfault due to opDispatch)
691
742
$(LI $(BUGZILLA 18976): Inconsistency in overload merging with aliases)
743
+
$(LI $(BUGZILLA 18984): Debugging stack struct's which are returned causes incorrect debuginfo.)
692
744
)
693
745
$(BUGSTITLE_BUGZILLA DMD Compiler enhancements,
694
746
@@ -698,6 +750,11 @@ $(LI $(BUGZILLA 15691): Improve error message for struct member initializer)
698
750
$(LI $(BUGZILLA 18859): Silence class allocator/deallocator deprecation warning if they are marked "deprecated")
699
751
$(LI $(BUGZILLA 18963): Relax restrictions on 'return' parameters when parameter is not a pointer)
700
752
)
753
+
$(BUGSTITLE_BUGZILLA Phobos regressions,
754
+
755
+
$(LI $(BUGZILLA 18937): [REG 2.080.0] std.experimental.allocator: compiling `make` needs an unreasonable amount of memory for structs that contain static arrays)
756
+
$(LI $(BUGZILLA 18993): toLower is broken for UTF chars)
757
+
)
701
758
$(BUGSTITLE_BUGZILLA Phobos bugs,
702
759
703
760
$(LI $(BUGZILLA 12086): std.algorithm.remove + range of indices produces wrong results)
@@ -711,6 +768,8 @@ $(LI $(BUGZILLA 18847): std.allocator: Region uses .parent before it can be set)
711
768
$(LI $(BUGZILLA 18934): std.concurrency receive throws assertion failure if message is a struct containing const data)
712
769
$(LI $(BUGZILLA 18940): [std.net.curl]Can't run examples on page. cannot implicitly convert expression ... `char[]` to `string`)
713
770
$(LI $(BUGZILLA 18952): std.experimental.checkedint.Saturate prints integral promotion deprecation message)
771
+
$(LI $(BUGZILLA 19020): findSkip, findSplit and findSplitBefore return wrong results)
772
+
$(LI $(BUGZILLA 19023): findSplitBefore and findSplitAfter give wrong bool result)
714
773
)
715
774
$(BUGSTITLE_BUGZILLA Phobos enhancements,
716
775
@@ -721,11 +780,17 @@ $(LI $(BUGZILLA 18813): fromStringz should work with char, wchar and dchar)
721
780
$(LI $(BUGZILLA 18837): MMFile should have opDollar)
722
781
$(LI $(BUGZILLA 18948): std.uni.toLower and std.uni.toUpper should work with random access ranges)
723
782
)
783
+
$(BUGSTITLE_BUGZILLA Druntime regressions,
784
+
785
+
$(LI $(BUGZILLA 18996): Inserting a type containing indirections into an std.container Array causes SIGILL$(LPAREN)4$(RPAREN). Illegal Instruction.)
786
+
$(LI $(BUGZILLA 19005): [REG2.081-b1] object.hashOf no longer works for std.datetime.date.Date)
787
+
)
724
788
$(BUGSTITLE_BUGZILLA Druntime bugs,
725
789
726
790
$(LI $(BUGZILLA 14536): Calling destroy$(LPAREN)$(RPAREN) on a on an extern$(LPAREN)C++$(RPAREN) class causes a segfault)
727
791
$(LI $(BUGZILLA 18932): core.internal.hash.hashOf$(LPAREN)val, seed$(RPAREN) ignores `seed` when val is a raw pointer)
728
792
$(LI $(BUGZILLA 18989): On OSX32, core.stdc.time.clock$(LPAREN)$(RPAREN) should resolve to clock$UNIX2003$(LPAREN)$(RPAREN))
793
+
$(LI $(BUGZILLA 19008): core.internal.convert.toUbyte doesn't work on enums)
0 commit comments