2
2
3
3
$(CHANGELOG_NAV_LAST 2.078.3)
4
4
5
- $(VERSION Feb 18 , 2018, =================================================,
5
+ $(VERSION Mar 01 , 2018, =================================================,
6
6
7
7
$(BUGSTITLE_TEXT_HEADER Compiler changes,
8
8
9
9
$(LI $(RELATIVE_LINK2 comma-deprecation-error,The deprecation period of using the result of comma expression has ended))
10
10
$(LI $(RELATIVE_LINK2 default_after_variadic,Function parameters with default values are now allowed after variadic template parameters))
11
11
$(LI $(RELATIVE_LINK2 deprecate_delete,The `delete` keyword has been deprecated.))
12
12
$(LI $(RELATIVE_LINK2 deprecation-dylib,The deprecation period of the `-dylib` flag on OSX has ended. Use `-shared`))
13
+ $(LI $(RELATIVE_LINK2 dip1008,Experimental `@nogc` Exception throwing with `-dip1008`))
13
14
$(LI $(RELATIVE_LINK2 disabled-trait,A compiler trait used to detect if a function is marked with `@disable` has been added.))
14
15
$(LI $(RELATIVE_LINK2 fix17630,Fix Issue 17630 - selective imports find symbols in private imports of other modules))
15
16
$(LI $(RELATIVE_LINK2 fix17899,Fix issue 17899 - Allow delegates to be initialised at compile time))
@@ -20,9 +21,9 @@ $(LI $(RELATIVE_LINK2 fix8207,D ABI change on Win32 and OSX targets))
20
21
$(LI $(RELATIVE_LINK2 hexstrings,HexString literals are deprecated.))
21
22
$(LI $(RELATIVE_LINK2 includeimports,Added the -i command line option to automatically include imports))
22
23
$(LI $(RELATIVE_LINK2 json_includes,Added `-Xi=<name>` to include more fields in the JSON output))
23
- $(LI $(RELATIVE_LINK2 lambdacomp,Lambda comparison using __traits(isSame, ...)))
24
+ $(LI $(RELATIVE_LINK2 lambdacomp,Lambda comparison using `__traits(isSame, ...)`))
25
+ $(LI $(RELATIVE_LINK2 lld_mingw,Windows: Visual C++ and the Windows SDK are no longer required to build 64-bit executables))
24
26
$(LI $(RELATIVE_LINK2 minimal_runtime,Using D with no/minimal/custom runtime implementation in a pay-as-you-go fashion))
25
- $(LI $(RELATIVE_LINK2 multi_module_selective_imports,Allow multiple selective imports from different modules in a single import statement))
26
27
$(LI $(RELATIVE_LINK2 osx-10_9,macOS deployment target was increased to 10.9))
27
28
$(LI $(RELATIVE_LINK2 private,Deprecate the use of selectively imported private members))
28
29
$(LI $(RELATIVE_LINK2 ptr-safe-end-of-deprecation,`.ptr` on arrays can no longer be used in `@safe` code))
@@ -32,7 +33,7 @@ $(LI $(RELATIVE_LINK2 ptr-safe-end-of-deprecation,`.ptr` on arrays can no longer
32
33
$(BUGSTITLE_TEXT_HEADER Runtime changes,
33
34
34
35
$(LI $(RELATIVE_LINK2 core-memory-__delete,`core.memory.__delete` has been added))
35
- $(LI $(RELATIVE_LINK2 lazy-gc-init,the garbage collector is now lazily initialized on first use))
36
+ $(LI $(RELATIVE_LINK2 lazy-gc-init,The garbage collector is now lazily initialized on first use))
36
37
37
38
)
38
39
113
114
$(H4 Rationale)
114
115
$(P The comma operator leads to unintended behavior (see below for a selection)
115
116
Moreover it is not commonly used and it blocks the ability to implement tuples
116
- as a language features using commas.
117
+ as a language feature using commas.
117
118
)
118
119
119
120
$(P
122
123
---
123
124
writeln( 6, mixin("7,8"), 9 ); // 6, 8, 9
124
125
125
- template vec(T...)(T args) { ... }
126
- vec v = (0, 0, 3); // 3, because vec is variadic
126
+ struct Vec
127
+ {
128
+ this(T...)(T args) { ... }
129
+ }
130
+ // missing type name
131
+ Vec v = (0, 0, 3); // Vec(3)
127
132
128
133
int a = 0;
129
134
int b = 2;
@@ -132,10 +137,10 @@ $(P
132
137
}
133
138
134
139
void foo(int x, int y=0) {}
135
- foo((a, b)); // Oops, foo is called with x=b
140
+ foo((a, b)); // Oops, foo(b) is called
136
141
137
142
synchronized (lockA, lockB) {}
138
- // isn 't currently implemented, but still compiles due to the comma operator
143
+ // multiple expressions aren 't currently implemented, but it compiles due to the comma operator
139
144
---
140
145
$(P
141
146
)
@@ -204,6 +209,23 @@ $(CONSOLE dmd -shared awesome_d_library.d)
204
209
)
205
210
)
206
211
212
+ $(LI $(LNAME2 dip1008,Experimental `@nogc` Exception throwing with `-dip1008`)
213
+ $(P
214
+ [DIP1008](https://github.com/dlang/DIPs/blob/master/DIPs/DIP1008.md) has been merged and it can be previewed under the experimental `-dip1008` flag:
215
+ )
216
+
217
+ ---
218
+ void main() @nogc
219
+ {
220
+ throw new Exception("I'm @nogc now");
221
+ }
222
+ ---
223
+
224
+ $(P
225
+ $(CONSOLE rdmd -dip1008 app.d)
226
+ )
227
+ )
228
+
207
229
$(LI $(LNAME2 disabled-trait,A compiler trait used to detect if a function is marked with `@disable` has been added.)
208
230
$(P
209
231
Prior to this release is was impossible to filter out `@disable` functions without
@@ -414,7 +436,7 @@ The option -i by itself is equivalent to:
414
436
)
415
437
416
438
$(P
417
- $(CONSOLE dmd -i=-std,- core,- etc, -object)
439
+ $(CONSOLE dmd -i=-std -i=- core -i=- etc -i= -object)
418
440
)
419
441
)
420
442
@@ -480,10 +502,10 @@ $(RED This is an experimental command-line flag and will be stabilized in the ne
480
502
)
481
503
)
482
504
483
- $(LI $(LNAME2 lambdacomp,Lambda comparison using __traits(isSame, ...))
505
+ $(LI $(LNAME2 lambdacomp,Lambda comparison using ` __traits(isSame, ...)` )
484
506
$(P
485
507
It is now possible to compare two lambda functions, under certain
486
- constraints, using __traits(isSame, lamda1, lambda2). In order to
508
+ constraints, using ` __traits(isSame, lamda1, lambda2)` . In order to
487
509
correctly compare two lambdas, the following conditions must be
488
510
satisfied:
489
511
)
@@ -505,12 +527,22 @@ These limitations might be lifted in the next release version.
505
527
)
506
528
507
529
$(P
508
- Whenver a lambda is considered uncomparable, the __traits(isSame, ...) expression
530
+ Whenever a lambda is considered uncomparable, the ` __traits(isSame, ...)` expression
509
531
in which it's used will return false, no matter what other lambda is used in
510
532
the comparison.
511
533
)
512
534
)
513
535
536
+ $(LI $(LNAME2 lld_mingw,Windows: Visual C++ and the Windows SDK are no longer required to build 64-bit executables)
537
+ $(P
538
+ The Windows installer now adds platform libraries built from the MinGW definitions and
539
+ a wrapper library for the VC2010 shared C runtime. When building COFF object files with
540
+ `-m64` or `-m32mscoff` and no Visual Studio installation is detected or
541
+ no platform libraries are found these will be used as replacements. If the Microsoft linker
542
+ is not found, the LLVM linker LLD will be used.
543
+ )
544
+ )
545
+
514
546
$(LI $(LNAME2 minimal_runtime,Using D with no/minimal/custom runtime implementation in a pay-as-you-go fashion)
515
547
$(P
516
548
$(P DMD has been further decoupled from the runtime so it is now easier and more
@@ -641,30 +673,6 @@ runtime implementation code, but they can be implemented in a pay-as-you-go fash
641
673
)
642
674
)
643
675
644
- $(LI $(LNAME2 multi_module_selective_imports,Allow multiple selective imports from different modules in a single import statement)
645
- $(P
646
- It is now possible to add imports from a different module after a selective
647
- import list, when those import are also selective or when the imported module
648
- has a qualified name.
649
- )
650
-
651
- -------
652
- import pkg.mod1 : sym1, mod2 : sym2;
653
- import pkg.mod1 : sym1, sym2, pkg.mod2;
654
- -------
655
-
656
- $(P
657
- Unqualified modules or renamed imports following a selective import will be
658
- parsed as part of the selective import list, not as separate modules.
659
- )
660
-
661
- -------
662
- import pkg.mod1 : sym1, mod2; // selectively imports mod2 from pkg.mod1
663
- import pkg.mod1 : sym1, name=mod2; // selectively imports mod2 as name from pkg.mod1
664
- import pkg.mod1 : sym1, name=pkg1.mod1; // parsing renamed selective imports fails due to qualfier
665
- -------
666
- )
667
-
668
676
$(LI $(LNAME2 osx-10_9,macOS deployment target was increased to 10.9)
669
677
$(P
670
678
The compiler has been updated to use 10.9 and link with `libc++` on OSX.
@@ -770,7 +778,7 @@ would not be a feasible option.
770
778
)
771
779
)
772
780
773
- $(LI $(LNAME2 lazy-gc-init,the garbage collector is now lazily initialized on first use)
781
+ $(LI $(LNAME2 lazy-gc-init,The garbage collector is now lazily initialized on first use)
774
782
$(P
775
783
The runtime now lazily initializes the GC on first use, thus allowing applications that do not use the GC to skip its initialization.
776
784
)
@@ -1392,6 +1400,7 @@ $(LI $(BUGZILLA 18093): [Reg 2.071] MSCOFF: dmd crashes when overriding a C++ me
1392
1400
$(LI $(BUGZILLA 18097): [REG2.077] Unittest function is undefined identifier)
1393
1401
$(LI $(BUGZILLA 18322): void fun$(LPAREN)string file=__FILE_FULL_PATH__$(RPAREN)$(LPAREN)$(RPAREN) returns relative path $(LPAREN)pointing to nowhere$(RPAREN))
1394
1402
$(LI $(BUGZILLA 18430): isSame is wrong for non global lambdas)
1403
+ $(LI $(BUGZILLA 18469): [REG 2.079-b1] Segfault when trying to get type of __dtor.opCall)
1395
1404
)
1396
1405
$(BUGSTITLE_BUGZILLA DMD Compiler bugs,
1397
1406
@@ -1449,6 +1458,7 @@ $(LI $(BUGZILLA 18316): std.net.curl.SMTP.mailTo fails to compile)
1449
1458
)
1450
1459
$(BUGSTITLE_BUGZILLA Phobos bugs,
1451
1460
1461
+ $(LI $(BUGZILLA 7054): format$(LPAREN)$(RPAREN) aligns using code units instead of graphemes)
1452
1462
$(LI $(BUGZILLA 10879): std.variant Variant/Algebraic: Can't store static arrays > 32$(LPAREN)/16$(RPAREN) bytes)
1453
1463
$(LI $(BUGZILLA 15157): std.experimental.allocator.building_blocks docs)
1454
1464
$(LI $(BUGZILLA 15391): Problems loading libcurl.so and running datetime unittest on NixOS package build)
@@ -1511,6 +1521,7 @@ $(LI $(BUGZILLA 14475): man page is outdated)
1511
1521
$(LI $(BUGZILLA 16490): Usage of attributes in inline asm blocks is not documented)
1512
1522
$(LI $(BUGZILLA 18306): No compliation errors shown when running modified examples)
1513
1523
$(LI $(BUGZILLA 18319): std.exception: enforce example does not compile)
1524
+ $(LI $(BUGZILLA 18341): Documentation for std.array.split is confusing/incorrect)
1514
1525
$(LI $(BUGZILLA 18355): [Areas of D usage])
1515
1526
)
1516
1527
$(BUGSTITLE_BUGZILLA dlang.org enhancements,
@@ -1521,6 +1532,10 @@ $(LI $(BUGZILLA 18337): https://dlang.org/spec/operatoroverloading.html missing
1521
1532
$(LI $(BUGZILLA 18379): [404 Not Found] Foundation Donate page not found)
1522
1533
$(LI $(BUGZILLA 18383): Front page blog section is only partially filled.)
1523
1534
)
1535
+ $(BUGSTITLE_BUGZILLA Installer bugs,
1536
+
1537
+ $(LI $(BUGZILLA 15131): curl.lib is not available in 32 bit mscoff format)
1538
+ )
1524
1539
)
1525
1540
$(D_CONTRIBUTORS_HEADER 77)
1526
1541
$(D_CONTRIBUTORS
0 commit comments