From 2565d4749504fc12ff54a30032787ff5924f6570 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 9 Oct 2016 18:27:28 +0200 Subject: [PATCH 1/9] add druntime changelog --- changelog/2.072.0_pre.dd | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 15785720be..91cc402f35 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -111,6 +111,10 @@ $(BUGSTITLE Library Changes, suitable `outer` pointer)) $(LI $(RELATIVE_LINK2 drt-oncycle, New druntime switch `--DRT-oncycle` allows specifying what to do on cycle detection in modules.)) + $(LI $(RELATIVE_LINK2 gc-runtimeswitch-added, A switch for selecting + the GC implementation at runtime was added.)) + $(LI $(RELATIVE_LINK2 manualgc-added, A GC implementation allowing manual + memory management was added.)) ) $(BR)$(BIG $(RELATIVE_LINK2 bugfix-list, List of all bug fixes and enhancements in D $(VER).)) @@ -773,6 +777,36 @@ $(BUGSTITLE Library Changes, $(DD Do not print anything, and do not halt execution. Order of initialization is arbitrarily chosen based on the order the modules are in the binary) ) ) + + $(LI $(LNAME2 gc-runtimeswitch-added, A runtime switch for selecting + the GC implementation was added.) + + $(P This allows to select a GC at program startup.) + ------- + ./my_d_exe --DRT-gc=gc:conservative # use conservative GC (default) + ./my_d_exe --DRT-gc=help # list available GC options + ------- + $(P See $(LINK2 $(ROOT_DIR)spec/garbage.html#gc_config, gc_config) for more information about gcopt.) + $(P In a future release it should be possible to extend the list + of GCs by linking with an alternative one. + ) + ) + + $(LI $(LNAME2 manualgc-added, A manual GC was added.) + + $(P Use the `--DRT-gc=gc:manual` option to select the manual GC.) + + $(P This GC is a thin wrapper around malloc and free and does not collect + any garbage. It only releases memory explicity freed using $(REF_SHORT GC.free, core,memory). + Builtin language constructs such as arrays or delegates that might + allocate GC memory can leak. It supersedes the gcstub implementation. + ) + + $(P The manual GC is useful for applications that deterministically control memory. + Use dmd's `-vgc` switch to keep track of hidden allocations that might leak. + ) + $(P It can also be helpful to find memory corruptions with tools like valgrind.) + ) ) ) From bd866ea471cba539bc393d3cb6297518f1b7ef8f Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 14 Oct 2016 18:19:01 +0200 Subject: [PATCH 2/9] move implicit concat deprecation to language change section - also move it above non-deprecation change --- changelog/2.072.0_pre.dd | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 91cc402f35..749085ea62 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -9,6 +9,8 @@ $(BUGSTITLE Language Changes, $(LI $(RELATIVE_LINK2 deprecated_implicit_catch, Implicit catch statement are deprecated.)) + $(LI $(RELATIVE_LINK2 deprecated_implicit_cat, Implicit string concatenation is deprecated.)) + $(LI $(LNAME2 unrestricted_unions, Add Unrestricted Unions.) $(P @@ -18,8 +20,6 @@ $(BUGSTITLE Language Changes, ) $(LI $(RELATIVE_LINK2 align_by_ctfe, Align attribute can be used with CTFEable expression.)) - - $(LI $(RELATIVE_LINK2 deprecated_implicit_cat, Implicit string concatenation is deprecated.)) ) $(BUGSTITLE Compiler Changes, @@ -169,6 +169,21 @@ $(BUGSTITLE Language Changes, --- ) + $(LI $(LNAME2 deprecated_implicit_cat, Implicit string concatenation is deprecated.) + + $(P Implicit concatenation of string literal is a very early feature that is now supplanted + by the concatenation operator ('~'), the later being more explicit.) + + $(P It could result in hard to spot bug, where one missed a coma in an array expression:) + + --- + void foo () + { + string[] arr = [ "Hello", "buggy" "World" ]; + assert(arr.length = 3); // Fail, the length of the array is 2 and the content is [ "Hello", "buggyWorld" ] + } + --- + ) $(LI $(LNAME2 align_by_ctfe, Align attribute can be used with CTFEable expression.) @@ -296,22 +311,6 @@ $(BUGSTITLE Compiler Changes, $(P The number after `spec:` is the nesting of the speculative compiles.) ) - $(LI $(LNAME2 deprecated_implicit_cat, Implicit string concatenation is deprecated.) - - $(P Implicit concatenation of string literal is a very early feature that is now supplanted - by the concatenation operator ('~'), the later being more explicit.) - - $(P It could result in hard to spot bug, where one missed a coma in an array expression:) - - --- - void foo () - { - string[] arr = [ "Hello", "buggy" "World" ]; - assert(arr.length = 3); // Fail, the length of the array is 2 and the content is [ "Hello", "buggyWorld" ] - } - --- - ) - $(LI $(LNAME2 iteration_closure, Assumes opApply delegate parameter escapes unless marked `scope`) $(P This breaking change was required to fix bug with `@safe` violation: $(BUGZILLA 16193).) From c949c2e3607d1aca664591ed2bd5cd4f08322933 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 14 Oct 2016 18:22:45 +0200 Subject: [PATCH 3/9] reprioritize and clarify opApply closures --- changelog/2.072.0_pre.dd | 56 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 749085ea62..f2c4532b91 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -23,12 +23,12 @@ $(BUGSTITLE Language Changes, ) $(BUGSTITLE Compiler Changes, + $(LI $(RELATIVE_LINK2 iteration_closure, OpApply now conservatively allocates a closure unless marked `scope`)) $(LI $(RELATIVE_LINK2 deferred_alias, Analysis for aliases in imported modules is deferred.)) $(LI $(RELATIVE_LINK2 native_tls_osx, Native TLS on OS X 64 bit.)) $(LI $(RELATIVE_LINK2 __FILE_FULL_PATH__, Special keyword replaced by the source file's absolute file name.)) $(LI $(RELATIVE_LINK2 dash_safe, Add -transition=safe switch.)) $(LI $(RELATIVE_LINK2 dash_verrors_spec, Add `-verrors=spec` switch.)) - $(LI $(RELATIVE_LINK2 iteration_closure, Assumes opApply delegate parameter escapes unless marked `scope`)) ) $(BUGSTITLE Library Changes, @@ -210,6 +210,33 @@ $(BUGSTITLE Language Changes, ) $(BUGSTITLE Compiler Changes, + $(LI $(LNAME2 iteration_closure, OpApply now conservatively allocates a closure unless marked `scope`) + + $(P This breaking change was required to fix bug with `@safe` violation: $(BUGZILLA 16193).) + + $(P To list all places where closure may be allocated after the change, use `-transition=safe` + compiler switch.) + + $(P Example:) + + --- + struct S1 { + int opApply(int delegate(int) dg); + } + + struct S2 { + int opApply(scope int delegate(int) dg); + } + + void foo() { + foreach(i; S1.init) { // will allocate closure + } + foreach(i; S2.init) { // won't allocate closure + } + } + --- + ) + $(LI $(LNAME2 deferred_alias, Analysis for aliases in imported modules is deferred.) $(P Example:) @@ -310,33 +337,6 @@ $(BUGSTITLE Compiler Changes, --- $(P The number after `spec:` is the nesting of the speculative compiles.) ) - - $(LI $(LNAME2 iteration_closure, Assumes opApply delegate parameter escapes unless marked `scope`) - - $(P This breaking change was required to fix bug with `@safe` violation: $(BUGZILLA 16193).) - - $(P To list all places where closure may be allocated after the change, use `-transition=safe` - compiler switch.) - - $(P Example:) - - --- - struct S1 { - int opApply(int delegate(int) dg); - } - - struct S2 { - int opApply(scope int delegate(int) dg); - } - - void foo() { - foreach(i; S1.init) { // will allocate closure - } - foreach(i; S2.init) { // won't allocate closure - } - } - --- - ) ) $(BUGSTITLE Library Changes, From 67c87955e0ecf1e5bf531a2d8e88a09cb46b6f30 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 14 Oct 2016 18:24:07 +0200 Subject: [PATCH 4/9] reprio&reworing for -transition=safe switch --- changelog/2.072.0_pre.dd | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index f2c4532b91..805c4a903a 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -24,10 +24,10 @@ $(BUGSTITLE Language Changes, $(BUGSTITLE Compiler Changes, $(LI $(RELATIVE_LINK2 iteration_closure, OpApply now conservatively allocates a closure unless marked `scope`)) + $(LI $(RELATIVE_LINK2 dash_safe, Add -transition=safe switch to enable additional @safe checks.)) $(LI $(RELATIVE_LINK2 deferred_alias, Analysis for aliases in imported modules is deferred.)) $(LI $(RELATIVE_LINK2 native_tls_osx, Native TLS on OS X 64 bit.)) $(LI $(RELATIVE_LINK2 __FILE_FULL_PATH__, Special keyword replaced by the source file's absolute file name.)) - $(LI $(RELATIVE_LINK2 dash_safe, Add -transition=safe switch.)) $(LI $(RELATIVE_LINK2 dash_verrors_spec, Add `-verrors=spec` switch.)) ) @@ -237,6 +237,15 @@ $(BUGSTITLE Compiler Changes, --- ) + $(LI $(LNAME2 dash_safe, Add -transition=safe switch to enable additional @safe checks.) + $(P Enables enhanced `@safe` checking, which will break some existing code.) + $(UL + $(LI Prevents dereferencing `array.ptr` because that bypasses array bounds check.) + $(LI Assumes opApply delegate parameter escapes unless marked `scope`. Escaping + delegates often require a GC allocated closure.) + ) + ) + $(LI $(LNAME2 deferred_alias, Analysis for aliases in imported modules is deferred.) $(P Example:) @@ -313,15 +322,6 @@ $(BUGSTITLE Compiler Changes, --- ) - $(LI $(LNAME2 dash_safe, Add -transition=safe switch.) - $(P Enables enhanced `@safe` checking, which will break some existing code.) - $(UL - $(LI Prevents dereferencing `array.ptr` because that bypasses array bounds check.) - $(LI Assumes opApply delegate parameter escapes unless marked `scope`. Escaping - delegates often require a GC allocated closure.) - ) - ) - $(LI $(LNAME2 dash_verrors_spec, Add `-verrors=spec` switch.) $(P Shows errors from speculative compiles such as:) --- From b93fbe960ee3ea977f9320ffe2585b9625f056aa Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 14 Oct 2016 18:25:01 +0200 Subject: [PATCH 5/9] reprio native TLS --- changelog/2.072.0_pre.dd | 43 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 805c4a903a..81d1dea518 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -25,8 +25,8 @@ $(BUGSTITLE Language Changes, $(BUGSTITLE Compiler Changes, $(LI $(RELATIVE_LINK2 iteration_closure, OpApply now conservatively allocates a closure unless marked `scope`)) $(LI $(RELATIVE_LINK2 dash_safe, Add -transition=safe switch to enable additional @safe checks.)) - $(LI $(RELATIVE_LINK2 deferred_alias, Analysis for aliases in imported modules is deferred.)) $(LI $(RELATIVE_LINK2 native_tls_osx, Native TLS on OS X 64 bit.)) + $(LI $(RELATIVE_LINK2 deferred_alias, Analysis for aliases in imported modules is deferred.)) $(LI $(RELATIVE_LINK2 __FILE_FULL_PATH__, Special keyword replaced by the source file's absolute file name.)) $(LI $(RELATIVE_LINK2 dash_verrors_spec, Add `-verrors=spec` switch.)) ) @@ -246,6 +246,26 @@ $(BUGSTITLE Compiler Changes, ) ) + $(LI $(LNAME2 native_tls_osx, Native TLS on OS X 64 bit.) + + $(P + The compiler has been updated to use native thread local storage + (TLS) on OS X when compiling for 64 bit. This means that it's + possible to to link with C/C++ TLS variables. This change is an ABI + breaking change and requires recompiling libraries. + ) + + $(P + The minimum required version of running the compiler and any + produced binary is now Mac OS X Lion (10.7). + ) + + $(P + Xcode 7.3 has a bug causing linker errors for some TLS variables. + Xcode 7.3.1 fixes this bug. Any version older than 7.3 works as well. + ) + ) + $(LI $(LNAME2 deferred_alias, Analysis for aliases in imported modules is deferred.) $(P Example:) @@ -275,27 +295,6 @@ $(BUGSTITLE Compiler Changes, --- ) - $(LI - $(LNAME2 native_tls_osx, Native TLS on OS X 64 bit.) - - $(P - The compiler has been updated to use native thread local storage - (TLS) on OS X when compiling for 64 bit. This means that it's - possible to to link with C/C++ TLS variables. This change is an ABI - breaking change and requires recompiling libraries. - ) - - $(P - The minimum required version of running the compiler and any - produced binary is now Mac OS X Lion (10.7). - ) - - $(P - Xcode 7.3 has a bug causing linker errors for some TLS variables. - Xcode 7.3.1 fixes this bug. Any version older than 7.3 works as well. - ) - ) - $(LI $(LNAME2 __FILE_FULL_PATH__, Special keyword replaced by the source file's absolute file name.) $(P The __FILE_FULL_PATH__ special keyword is replaced by the absolute path From 074812040cd35f4ebabc9b0b516f438105b864e7 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 14 Oct 2016 18:26:46 +0200 Subject: [PATCH 6/9] reprio DRT-oncycle switch - since the module cycle detection was fixed --- changelog/2.072.0_pre.dd | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 81d1dea518..8c729fffde 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -33,6 +33,8 @@ $(BUGSTITLE Compiler Changes, $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 TypeInfo.init-deprecated, `TypeInfo.init` has been deprecated.)) + $(LI $(RELATIVE_LINK2 drt-oncycle, New druntime switch `--DRT-oncycle` + allows specifying what to do on cycle detection in modules.)) $(LI $(RELATIVE_LINK2 std-digest-murmurhash, Implementation of MurmurHash digest.)) $(LI $(RELATIVE_LINK2 process, Process creation in `std.process` was sped up @@ -109,8 +111,6 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 emplace-inner-class, `std.conv.emplace` no longer allows to emplace classes directly nested inside other classes without specifying a suitable `outer` pointer)) - $(LI $(RELATIVE_LINK2 drt-oncycle, New druntime switch `--DRT-oncycle` - allows specifying what to do on cycle detection in modules.)) $(LI $(RELATIVE_LINK2 gc-runtimeswitch-added, A switch for selecting the GC implementation at runtime was added.)) $(LI $(RELATIVE_LINK2 manualgc-added, A GC implementation allowing manual @@ -350,6 +350,19 @@ $(BUGSTITLE Library Changes, $(P Use $(REF_OBJECT_SHORT TypeInfo.initializer) instead.) ) + $(LI $(LNAME2 drt-oncycle, New druntime switch `--DRT-oncycle` allows + specifying what to do on cycle detection in modules.) + $(P When module cycles are detected, the default behavior is to print the cycle, and abort execution. However, in many cases, the cycles are not harmful. With the new `--DRT-oncycle` switch, you can effect a different behavior when cycles are detected:) + $(DL + $(DT `--DRT-oncycle=abort`) + $(DD This is the default behavior, and will abort, printing the cycle to `stderr` when the first cycle is detected) + $(DT `--DRT-oncycle=print`) + $(DD Print all cycles that are detected to `stderr`, but do not halt execution. Order of initialization is arbitrarily chosen based on the order the modules are in the binary) + $(DT `--DRT-oncycle=ignore`) + $(DD Do not print anything, and do not halt execution. Order of initialization is arbitrarily chosen based on the order the modules are in the binary) + ) + ) + $(LI $(LNAME2 std-digest-murmurhash, Implementation of `std.digest.murmurhash`). $(P $(MREF std,digest,murmurhash) has been added. MurmurHash is a non-cryptographic hash function suitable for general hash-based lookup. It @@ -763,19 +776,6 @@ $(BUGSTITLE Library Changes, ------- ) - $(LI $(LNAME2 drt-oncycle, New druntime switch `--DRT-oncycle` allows - specifying what to do on cycle detection in modules.) - $(P When module cycles are detected, the default behavior is to print the cycle, and abort execution. However, in many cases, the cycles are not harmful. With the new `--DRT-oncycle` switch, you can effect a different behavior when cycles are detected:) - $(DL - $(DT `--DRT-oncycle=abort`) - $(DD This is the default behavior, and will abort, printing the cycle to `stderr` when the first cycle is detected) - $(DT `--DRT-oncycle=print`) - $(DD Print all cycles that are detected to `stderr`, but do not halt execution. Order of initialization is arbitrarily chosen based on the order the modules are in the binary) - $(DT `--DRT-oncycle=ignore`) - $(DD Do not print anything, and do not halt execution. Order of initialization is arbitrarily chosen based on the order the modules are in the binary) - ) - ) - $(LI $(LNAME2 gc-runtimeswitch-added, A runtime switch for selecting the GC implementation was added.) From deb9b022b6b41fe81768aaa6772ea7f50cf75f88 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Fri, 14 Oct 2016 18:28:29 +0200 Subject: [PATCH 7/9] reprio breaking etc.c.curl change --- changelog/2.072.0_pre.dd | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 8c729fffde..fc2c834e58 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -35,6 +35,14 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 TypeInfo.init-deprecated, `TypeInfo.init` has been deprecated.)) $(LI $(RELATIVE_LINK2 drt-oncycle, New druntime switch `--DRT-oncycle` allows specifying what to do on cycle detection in modules.)) + $(LI Wrong + $(LINK2 $(ROOT_DIR)spec/function.html#trusted-functions, `@trusted`) + attributes have been + removed from $(MREF etc,c,curl) functions + $(REF_ALTTEXT `curl_easy_escape`, curl_easy_escape, etc,c,curl), + $(REF_ALTTEXT `curl_escape`, curl_escape, etc,c,curl), + $(REF_ALTTEXT `curl_easy_unescape`, curl_easy_unescape, etc,c,curl), and + $(REF_ALTTEXT `curl_unescape`, curl_unescape, etc,c,curl).) $(LI $(RELATIVE_LINK2 std-digest-murmurhash, Implementation of MurmurHash digest.)) $(LI $(RELATIVE_LINK2 process, Process creation in `std.process` was sped up @@ -92,14 +100,6 @@ $(BUGSTITLE Library Changes, $(LI $(RELATIVE_LINK2 quantize, Added `std.math.quantize`, for rounding to the nearest multiple of some number.)) $(LI $(RELATIVE_LINK2 traits, Three new traits were added to `std.traits`.)) - $(LI Wrong - $(LINK2 $(ROOT_DIR)spec/function.html#trusted-functions, `@trusted`) - attributes have been - removed from $(MREF etc,c,curl) functions - $(REF_ALTTEXT `curl_easy_escape`, curl_easy_escape, etc,c,curl), - $(REF_ALTTEXT `curl_escape`, curl_escape, etc,c,curl), - $(REF_ALTTEXT `curl_easy_unescape`, curl_easy_unescape, etc,c,curl), and - $(REF_ALTTEXT `curl_unescape`, curl_unescape, etc,c,curl).) $(LI $(RELATIVE_LINK2 generate, `std.range.generate` fixed to be a proper range.)) $(LI $(MREF std,numeric) no longer uses `enforce` for verifying From 7db7ecc2922cf10f9c6d407bfc34d27211b11664 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 15 Oct 2016 23:42:26 +0200 Subject: [PATCH 8/9] address changelog review points --- changelog/2.072.0_pre.dd | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index fc2c834e58..4b01ed8aa6 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -23,8 +23,8 @@ $(BUGSTITLE Language Changes, ) $(BUGSTITLE Compiler Changes, - $(LI $(RELATIVE_LINK2 iteration_closure, OpApply now conservatively allocates a closure unless marked `scope`)) - $(LI $(RELATIVE_LINK2 dash_safe, Add -transition=safe switch to enable additional @safe checks.)) + $(LI $(RELATIVE_LINK2 iteration_closure, `opApply` now conservatively allocates a closure unless marked `scope`)) + $(LI $(RELATIVE_LINK2 dash_safe, Add `-transition=safe` switch to enable additional `@safe` checks.)) $(LI $(RELATIVE_LINK2 native_tls_osx, Native TLS on OS X 64 bit.)) $(LI $(RELATIVE_LINK2 deferred_alias, Analysis for aliases in imported modules is deferred.)) $(LI $(RELATIVE_LINK2 __FILE_FULL_PATH__, Special keyword replaced by the source file's absolute file name.)) @@ -174,13 +174,13 @@ $(BUGSTITLE Language Changes, $(P Implicit concatenation of string literal is a very early feature that is now supplanted by the concatenation operator ('~'), the later being more explicit.) - $(P It could result in hard to spot bug, where one missed a coma in an array expression:) + $(P It could result in hard to spot bug, where one missed a comma in an array expression:) --- void foo () { string[] arr = [ "Hello", "buggy" "World" ]; - assert(arr.length = 3); // Fail, the length of the array is 2 and the content is [ "Hello", "buggyWorld" ] + assert(arr.length == 3); // Fail, the length of the array is 2 and the content is [ "Hello", "buggyWorld" ] } --- ) @@ -210,7 +210,7 @@ $(BUGSTITLE Language Changes, ) $(BUGSTITLE Compiler Changes, - $(LI $(LNAME2 iteration_closure, OpApply now conservatively allocates a closure unless marked `scope`) + $(LI $(LNAME2 iteration_closure, `opApply` now conservatively allocates a closure unless marked `scope`) $(P This breaking change was required to fix bug with `@safe` violation: $(BUGZILLA 16193).) @@ -237,7 +237,7 @@ $(BUGSTITLE Compiler Changes, --- ) - $(LI $(LNAME2 dash_safe, Add -transition=safe switch to enable additional @safe checks.) + $(LI $(LNAME2 dash_safe, Add `-transition=safe` switch to enable additional `@safe` checks.) $(P Enables enhanced `@safe` checking, which will break some existing code.) $(UL $(LI Prevents dereferencing `array.ptr` because that bypasses array bounds check.) @@ -352,7 +352,10 @@ $(BUGSTITLE Library Changes, $(LI $(LNAME2 drt-oncycle, New druntime switch `--DRT-oncycle` allows specifying what to do on cycle detection in modules.) - $(P When module cycles are detected, the default behavior is to print the cycle, and abort execution. However, in many cases, the cycles are not harmful. With the new `--DRT-oncycle` switch, you can effect a different behavior when cycles are detected:) + $(P When module cycles are detected, the default behavior is to print + the cycle, and abort execution. However, in many cases, the cycles + are not harmful. With the new `--DRT-oncycle` switch, you can effect + a different behavior when cycles are detected:) $(DL $(DT `--DRT-oncycle=abort`) $(DD This is the default behavior, and will abort, printing the cycle to `stderr` when the first cycle is detected) From abc28d75245ed74b70f682b413d2048e85f132b0 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sat, 15 Oct 2016 23:45:57 +0200 Subject: [PATCH 9/9] fix gcopt example --- changelog/2.072.0_pre.dd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/2.072.0_pre.dd b/changelog/2.072.0_pre.dd index 4b01ed8aa6..0039bea769 100644 --- a/changelog/2.072.0_pre.dd +++ b/changelog/2.072.0_pre.dd @@ -784,8 +784,8 @@ $(BUGSTITLE Library Changes, $(P This allows to select a GC at program startup.) ------- - ./my_d_exe --DRT-gc=gc:conservative # use conservative GC (default) - ./my_d_exe --DRT-gc=help # list available GC options + ./my_d_exe --DRT-gcopt=gc:conservative # use conservative GC (default) + ./my_d_exe --DRT-gcopt=help # list available GC options ------- $(P See $(LINK2 $(ROOT_DIR)spec/garbage.html#gc_config, gc_config) for more information about gcopt.) $(P In a future release it should be possible to extend the list