Hello community,

here is the log from the commit of package dmd for openSUSE:Factory checked in 
at 2018-10-15 09:45:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dmd (Old)
 and      /work/SRC/openSUSE:Factory/.dmd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dmd"

Mon Oct 15 09:45:54 2018 rev:20 rq:641928 version:2.082.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/dmd/dmd.changes  2018-09-15 15:36:35.428971545 
+0200
+++ /work/SRC/openSUSE:Factory/.dmd.new/dmd.changes     2018-10-15 
09:46:29.211167180 +0200
@@ -1,0 +2,14 @@
+Sun Oct 14 14:14:28 UTC 2018 - Matthias Eliasson <matthias.elias...@gmail.com>
+
+- Update to 2.082.1
+  - DMD Compiler regressions
+    * Could not CTFE with std.math.exp from 2.082.0
+       * [REG 2.081] Can no longer override pragma(lib) with -L switch
+       * Some source files names are no longer accepted
+  - Phobos regressions
+    * Templated format with variable width allocates 2GB of RAM per call.
+  - Phobos bugs
+    * std.net.curl.post cannot be used with !ubyte
+       * std.algorithm.subsitute wrong results for single subrange substitution
+
+-------------------------------------------------------------------

Old:
----
  dmd-2.082.0.tar.gz
  druntime-2.082.0.tar.gz
  phobos-2.082.0.tar.gz

New:
----
  dmd-2.082.1.tar.gz
  druntime-2.082.1.tar.gz
  phobos-2.082.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dmd.spec ++++++
--- /var/tmp/diff_new_pack.gP6Oj4/_old  2018-10-15 09:46:46.699147680 +0200
+++ /var/tmp/diff_new_pack.gP6Oj4/_new  2018-10-15 09:46:46.699147680 +0200
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -20,7 +20,7 @@
 %define sover  0_82
 %define auto_bootstrap 1
 Name:           dmd
-Version:        2.082.0
+Version:        2.082.1
 Release:        0
 Summary:        D Programming Language 2.0
 License:        BSL-1.0

++++++ dmd-2.082.0.tar.gz -> dmd-2.082.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/VERSION new/dmd-2.082.1/VERSION
--- old/dmd-2.082.0/VERSION     2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/VERSION     2018-10-11 14:20:27.000000000 +0200
@@ -1 +1 @@
-v2.082.0
+v2.082.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/appveyor.sh new/dmd-2.082.1/appveyor.sh
--- old/dmd-2.082.0/appveyor.sh 2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/appveyor.sh 2018-10-11 14:20:27.000000000 +0200
@@ -44,8 +44,8 @@
 fi
 
 if [ $D_COMPILER == "dmd" ]; then
-    #appveyor DownloadFile 
"http://downloads.dlang.org/releases/2.x/${D_VERSION}/dmd.${D_VERSION}.windows.7z";
 -FileName dmd2.7z
-    appveyor DownloadFile 
"http://nightlies.dlang.org/dmd-master-2017-12-22/dmd.master.windows.7z"; 
-FileName dmd2.7z
+    appveyor DownloadFile 
"http://downloads.dlang.org/releases/2.x/${D_VERSION}/dmd.${D_VERSION}.windows.7z";
 -FileName dmd2.7z
+    #appveyor DownloadFile 
"http://nightlies.dlang.org/dmd-master-2017-12-22/dmd.master.windows.7z"; 
-FileName dmd2.7z
     7z x dmd2.7z > /dev/null
     export PATH=$PWD/dmd2/windows/bin/:$PATH
     export DMD=/c/projects/dmd2/windows/bin/dmd.exe
@@ -57,8 +57,10 @@
             ! git ls-remote --exit-code --heads 
https://github.com/dlang/$proj.git $APPVEYOR_REPO_BRANCH > /dev/null; then
         # use master as fallback for other repos to test feature branches
         clone https://github.com/dlang/$proj.git $proj master
+        echo "+++ Switched $proj to branch master 
(APPVEYOR_REPO_BRANCH=$APPVEYOR_REPO_BRANCH)"
     else
         clone https://github.com/dlang/$proj.git $proj $APPVEYOR_REPO_BRANCH
+        echo "+++ Switched $proj to branch $APPVEYOR_REPO_BRANCH"
     fi
 done
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/appveyor.yml new/dmd-2.082.1/appveyor.yml
--- old/dmd-2.082.0/appveyor.yml        2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/appveyor.yml        2018-10-11 14:20:27.000000000 +0200
@@ -5,7 +5,7 @@
   matrix:
     - ARCH:                x64
       D_COMPILER:          dmd
-      D_VERSION:           2.077.1
+      D_VERSION:           2.079.1
       C_COMPILER:          MSVC
       VISUALD_VER:         v0.45.1-rc2
       LDC_VERSION:         1.8.0
@@ -22,7 +22,7 @@
 artifacts:
   - path: src/dmd.exe
     name: dmd 64-bit
-  - path: generated/Windows/Release/Win32/dmd.exe 
+  - path: generated/Windows/Release/Win32/dmd.exe
     name: dmd 32-bit built with LDC
 
 init:
@@ -43,7 +43,7 @@
         If (-not (Test-Path $Env:LDC_DIR/bin/ldmd2.exe)) {
             echo "Unexpected LDC installation, 
$Env:LDC_INSTALLER/bin/ldmd2.exe missing"
         }
-        
+
   # Download & install Visual D (needs admin rights?)
   - set VISUALD_INSTALLER=VisualD-%VISUALD_VER%.exe
   - set 
VISUALD_URL=https://github.com/dlang/visuald/releases/download/%VISUALD_VER%/%VISUALD_INSTALLER%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/betterc_cmp_types.dd 
new/dmd-2.082.1/changelog/betterc_cmp_types.dd
--- old/dmd-2.082.0/changelog/betterc_cmp_types.dd      2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/betterc_cmp_types.dd      1970-01-01 
01:00:00.000000000 +0100
@@ -1,42 +0,0 @@
-Support for comparing arrays of unsigned byte-sized types and structs has been 
added to -betterC
-
-Prior to this release, the following code did not build in -betterC, but will 
with this release.
-
----
-// (Prior to this release) Error: TypeInfo cannot be used with -betterC
-struct Sint
-{
-    int x;
-    this(int v) { x = v;}
-}
-
-extern(C) void main()
-{
-    Sint[6] a1 = [Sint(1), Sint(2), Sint(3), Sint(1), Sint(2), Sint(3)];
-    assert(a1[0..3] == a1[3..$]);
-}
----
-
----
-// (Prior to this release) Linker Error: undefined reference to 
`core.internal.string.dstrcmp`
-extern(C) void main()
-{
-    auto s = "abc";
-    switch(s)
-    {
-        case "abc":
-            break;
-        default:
-            break;
-    }
-}
----
-
----
-// (Prior to this release) Linker Error: undefined reference to 
`core.internal.string.dstrcmp`
-extern(C) void main()
-{
-    char[6] a = [1,2,3,1,2,3];
-    assert(a[0..3] >= a[3..$]);  // failed for any byte-sized type (e.g. 
`char`, `ubyte`, etc...)
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/betterc_versions.dd 
new/dmd-2.082.1/changelog/betterc_versions.dd
--- old/dmd-2.082.0/changelog/betterc_versions.dd       2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/betterc_versions.dd       1970-01-01 
01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-Added `D_ModuleInfo`, `D_Exceptions`, and `D_TypeInfo` version identifiers
-
-`D_ModuleInfo`, `D_Exceptions`, and `D_TypeInfo` version identifiers were 
added to allow
-better precision in druntime and other library implementations.
-
-See $(LINK2 https://dlang.org/spec/version.html#predefined-versions, 
Predefined Versions)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/cond_assign.dd 
new/dmd-2.082.1/changelog/cond_assign.dd
--- old/dmd-2.082.0/changelog/cond_assign.dd    2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/changelog/cond_assign.dd    1970-01-01 01:00:00.000000000 
+0100
@@ -1,22 +0,0 @@
-Deprecate conditional expression followed by an assign expression
-
-When a conditional expression is the left operand of an assign
-expression, they would be parsed as an assignment to $(I the result) of
-the conditional. This has now been deprecated. To preserve the existing
-behaviour, add parentheses for the conditional without including the
-assignment:
-
----
-bool test;
-int a, b, c;
-...
-test ? a = b : c = 2;   // Deprecated
-(test ? a = b : c) = 2; // Equivalent
----
-
-This makes the intent clearer, because the first statement can easily
-be misread as the following code:
-
----
-test ? a = b : (c = 2);
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/debug-unsafe.dd 
new/dmd-2.082.1/changelog/debug-unsafe.dd
--- old/dmd-2.082.0/changelog/debug-unsafe.dd   2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/changelog/debug-unsafe.dd   1970-01-01 01:00:00.000000000 
+0100
@@ -1,21 +0,0 @@
-Unsafe code can now be used in debug blocks
-
-When writing debug code, one isn't interested in the type safety, but a 
pleasant
-debugging experience.
-The type checker already allowed to escape `pure` and `@nogc` within `debug`
-statement.
-With this release, `@system` code can be called from `debug` statements too:
-
----
-void main()
-{
-    int[] arr = [1, 2];
-    debug unsafeCode(arr);
-}
-
-@system void unsafeCode(T)(T[] arr)
-{
-    import core.stdc.stdio;
-    printf("arr.ptr: %p", arr.ptr);
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/deprecate-opDot.dd 
new/dmd-2.082.1/changelog/deprecate-opDot.dd
--- old/dmd-2.082.0/changelog/deprecate-opDot.dd        2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/deprecate-opDot.dd        1970-01-01 
01:00:00.000000000 +0100
@@ -1,51 +0,0 @@
-Deprecate usage of `opDot`
-
-`opDot` was the D1 analog to `alias this`.
-However, `alias this` covers all use cases of `opDot`, but ensures safety.
-
----
-struct S
-{
-    int a, b;
-}
-struct T
-{
-    S s;
-
-    S* opDot()
-    {
-        return &s;
-    }
-}
-
-void main()
-{
-    T t;
-    t.a = 4;
-    assert(t.a == 4);
-    t.b = 5;
-}
----
-
-With `alias this`:
-
----
-struct S
-{
-    int a, b;
-}
-struct T
-{
-    S s;
-
-    alias s this;
-}
-
-void main() @safe
-{
-    T t;
-    t.a = 4;
-    assert(t.a == 4);
-    t.b = 5;
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/enum_attributes.dd 
new/dmd-2.082.1/changelog/enum_attributes.dd
--- old/dmd-2.082.0/changelog/enum_attributes.dd        2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/enum_attributes.dd        1970-01-01 
01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-D now supports deprecated, @disable and user-defined attributes on enum members
-
-Example
----
-template AliasSeq(TList...)
-{
-    alias AliasSeq = TList;
-}
-
-enum MyEnum
-{
-    @("uda0") value0,
-    @disable value1,
-    deprecated value2  // Deprecation: enum member `main.MyEnum.value2` is 
deprecated
-}
-
-static assert(__traits(getAttributes, MyEnum.value0) == AliasSeq!("uda0"));
-
-void main()
-{
-    auto v1 = MyEnum.value1;  // Error: enum member `main.MyEnum.value1` 
cannot be used because it is annotated with `@disable`
-}
----
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/error_for_c-style_arrays.dd 
new/dmd-2.082.1/changelog/error_for_c-style_arrays.dd
--- old/dmd-2.082.0/changelog/error_for_c-style_arrays.dd       2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/error_for_c-style_arrays.dd       1970-01-01 
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-Deprecated C-style array declarations will now result in a compilation error
-
-The deprecation period for C-style array declarations has expired.  Beginning 
with this
-release, declaring arrays with C-style syntax will result in an error.
-
----
-int a[2];  // Error: instead of C-style syntax, use D-style `int a[2]`
-int[2] b;  // OK
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/fix19043.dd 
new/dmd-2.082.1/changelog/fix19043.dd
--- old/dmd-2.082.0/changelog/fix19043.dd       2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/changelog/fix19043.dd       1970-01-01 01:00:00.000000000 
+0100
@@ -1,13 +0,0 @@
-Mangling of extern(C++) template on Windows now correctly mangles const 
non-pointer template parameters.
-
-It used to ignore the const and was missing the $$C escape prefix.
-
------
-extern(C++) struct foo(T) {}
-
-extern(C++) void test(foo!(const(char)) a) {}
-// New
-static assert(test.mangleof == "?test@@YAXU?$foo@$$CBD@@@Z");
-// Old
-//static assert(test.mangleof == "?test@@YAXU?$foo@D@@@Z");
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/objc_offsetof_tupleof.dd 
new/dmd-2.082.1/changelog/objc_offsetof_tupleof.dd
--- old/dmd-2.082.0/changelog/objc_offsetof_tupleof.dd  2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/objc_offsetof_tupleof.dd  1970-01-01 
01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-`.offsetof` and `.tupleof` for fields of Objective-C classes have now been 
disabled
-
-To solve the fragile base class problem [1] in Objective-C, fields have a
-dynamic offset instead of a static offset. The compiler outputs a statically
-known offset which later the dynamic loader can update, if necessary, when the
-application is loaded. Due to this behavior it doesn't make sense to be able to
-get the offset of a field at compile time, because this offset might not
-actually be the same at runtime.
-
-To get the offset or value of a field, that is correct at runtime, 
functionality
-from the Objective-C runtime can be used instead [2].
-
-[1] $(LINK2 Fragile Binary Interface Problem, 
https://en.wikipedia.org/wiki/Fragile_binary_interface_problem)
-[2] $(LINK2 Objective-C Runtime, 
https://developer.apple.com/documentation/objectivec/objective_c_runtime)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/osx64_long_cppmangling.dd 
new/dmd-2.082.1/changelog/osx64_long_cppmangling.dd
--- old/dmd-2.082.0/changelog/osx64_long_cppmangling.dd 2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/osx64_long_cppmangling.dd 1970-01-01 
01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-64-bit OS X: Revert C++ mangling of `long` to pre-2.079 to restore `size_t` 
interop
-
-Direct interop of D `size_t` and C++ `size_t` was working before 2.079, on all 
platforms
-except for 32-bit OS X. By mangling D `long` as C++ `long long` on 64-bit OS X 
starting
-with 2.079, `size_t` interop broke on a more relevant platform.
-With new/fixed aliases, e.g., $(REF int64_t, core, stdc, stdint),
-$(REF uint64_t, core, stdc, stdint) and $(REF cpp_size_t, core, stdc, config), 
there are
-now proper tools for portable C++ interop wrt. integers.
-Reverting to the previous C++ mangling on 64-bit OS X (C++ `long`) may save 
mixed D/C++
-code bases from the need of manual adaptations by skipping the 2.079-2.081 DMD 
versions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/changelog/uda-function-parameters.dd 
new/dmd-2.082.1/changelog/uda-function-parameters.dd
--- old/dmd-2.082.0/changelog/uda-function-parameters.dd        2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/changelog/uda-function-parameters.dd        1970-01-01 
01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-UDAs on function parameters are now supported
-
-User-defined attributes on function parameters behave analogous to existing 
UDAs:
-
----
-void example(@(22) string param)
-{
-    @(11) string var;
-    static assert([__traits(getAttributes, var)] == [11]);
-    static assert([__traits(getAttributes, param)] == [22]);
-}
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/semaphoreci.sh 
new/dmd-2.082.1/semaphoreci.sh
--- old/dmd-2.082.0/semaphoreci.sh      2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/semaphoreci.sh      2018-10-11 14:20:27.000000000 +0200
@@ -36,7 +36,14 @@
 # Always source a DMD instance
 
################################################################################
 
-install_d "$DMD"
+# FIXME: v2.082.0 has a broken DUB which fails the CI
+# Remove this when a fixed v2.082.1 is released
+# See https://github.com/dlang/dub/issues/1551
+if [ "$DMD" == "dmd" ]; then
+    install_d "dmd-2.081.2"
+else
+    install_d "$DMD"
+fi
 
 
################################################################################
 # Define commands
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/src/dmd/builtin.d 
new/dmd-2.082.1/src/dmd/builtin.d
--- old/dmd-2.082.0/src/dmd/builtin.d   2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/src/dmd/builtin.d   2018-10-11 14:20:27.000000000 +0200
@@ -124,6 +124,13 @@
     return new RealExp(loc, CTFloat.log10(arg0.toReal()), arg0.type);
 }
 
+extern (C++) Expression eval_exp(Loc loc, FuncDeclaration fd, Expressions* 
arguments)
+{
+    Expression arg0 = (*arguments)[0];
+    assert(arg0.op == TOK.float64);
+    return new RealExp(loc, CTFloat.exp(arg0.toReal()), arg0.type);
+}
+
 extern (C++) Expression eval_expm1(Loc loc, FuncDeclaration fd, Expressions* 
arguments)
 {
     Expression arg0 = (*arguments)[0];
@@ -381,6 +388,7 @@
     add_builtin("_D3std4math3tanFNaNbNiNeeZe", &eval_tan);
     add_builtin("_D3std4math4sqrtFNaNbNiNeeZe", &eval_sqrt);
     add_builtin("_D3std4math4fabsFNaNbNiNeeZe", &eval_fabs);
+    add_builtin("_D3std4math3expFNaNbNiNeeZe", &eval_exp);
     add_builtin("_D3std4math5expm1FNaNbNiNeeZe", &eval_expm1);
     add_builtin("_D3std4math4exp2FNaNbNiNeeZe", &eval_exp2);
     // @safe @nogc pure nothrow double function(double)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/src/dmd/link.d 
new/dmd-2.082.1/src/dmd/link.d
--- old/dmd-2.082.0/src/dmd/link.d      2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/src/dmd/link.d      2018-10-11 14:20:27.000000000 +0200
@@ -569,38 +569,21 @@
             argv.push("-Xlinker");
             argv.push("--gc-sections");
         }
-        /* Add each library, prefixing it with "-l".
-         * The order of libraries passed is:
-         *  1. any libraries passed with -L command line switch
-         *  2. libraries specified on the command line
+        /* Add libraries. The order of libraries passed is:
+         *  1. static libraries ending with *.a     (global.params.libfiles)
+         *  2. link switches passed with -L command line switch  
(global.params.linkswitches)
          *  3. libraries specified by pragma(lib), which were appended
-         *     to global.params.libfiles.
-         *  4. link switches, that may also contain -l libraries
+         *     to global.params.libfiles. These are prefixed with "-l"
+         *  4. dynamic libraries passed to the command line 
(global.params.dllfiles)
          *  5. standard libraries.
          */
-        for (size_t i = 0; i < global.params.libfiles.dim; i++)
+        foreach (p; global.params.libfiles)
         {
-            const(char)* p = global.params.libfiles[i];
-            size_t plen = strlen(p);
-            if (plen > 2 && p[plen - 2] == '.' && p[plen - 1] == 'a')
+            if (FileName.equalsExt(p, "a"))
                 argv.push(p);
-            else
-            {
-                char* s = cast(char*)mem.xmalloc(plen + 3);
-                s[0] = '-';
-                s[1] = 'l';
-                memcpy(s + 2, p, plen + 1);
-                argv.push(s);
-            }
         }
-        for (size_t i = 0; i < global.params.dllfiles.dim; i++)
+        foreach (p; global.params.linkswitches)
         {
-            const(char)* p = global.params.dllfiles[i];
-            argv.push(p);
-        }
-        for (size_t i = 0; i < global.params.linkswitches.dim; i++)
-        {
-            const(char)* p = global.params.linkswitches[i];
             if (!p || !p[0] || !(p[0] == '-' && (p[1] == 'l' || p[1] == 'L')))
             {
                 // Don't need -Xlinker if switch starts with -l or -L.
@@ -610,6 +593,22 @@
             }
             argv.push(p);
         }
+        foreach (p; global.params.libfiles)
+        {
+            if (!FileName.equalsExt(p, "a"))
+            {
+                const plen = strlen(p);
+                char* s = cast(char*)mem.xmalloc(plen + 3);
+                s[0] = '-';
+                s[1] = 'l';
+                memcpy(s + 2, p, plen + 1);
+                argv.push(s);
+            }
+        }
+        foreach (p; global.params.dllfiles)
+        {
+            argv.push(p);
+        }
         /* D runtime libraries must go after user specified libraries
          * passed with -l.
          */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/src/dmd/root/ctfloat.d 
new/dmd-2.082.1/src/dmd/root/ctfloat.d
--- old/dmd-2.082.0/src/dmd/root/ctfloat.d      2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/src/dmd/root/ctfloat.d      2018-10-11 14:20:27.000000000 
+0200
@@ -89,6 +89,7 @@
         static real_t log2(real_t x) { return 
real_t(cast(double)core.stdc.math.log2l(cast(double)x)); }
         static real_t log10(real_t x) { return 
real_t(cast(double)core.stdc.math.log10l(cast(double)x)); }
         static real_t pow(real_t x, real_t y) { return 
real_t(cast(double)core.stdc.math.powl(cast(double)x, cast(double)y)); }
+        static real_t exp(real_t x) { return 
real_t(cast(double)core.stdc.math.expl(cast(double)x)); }
         static real_t expm1(real_t x) { return 
real_t(cast(double)core.stdc.math.expm1l(cast(double)x)); }
         static real_t exp2(real_t x) { return 
real_t(cast(double)core.stdc.math.exp2l(cast(double)x)); }
         static real_t copysign(real_t x, real_t s) { return 
real_t(cast(double)core.stdc.math.copysignl(cast(double)x, cast(double)s)); }
@@ -103,6 +104,7 @@
         static real_t log2(real_t x) { return core.stdc.math.log2l(x); }
         static real_t log10(real_t x) { return core.stdc.math.log10l(x); }
         static real_t pow(real_t x, real_t y) { return core.stdc.math.powl(x, 
y); }
+        static real_t exp(real_t x) { return core.stdc.math.expl(x); }
         static real_t expm1(real_t x) { return core.stdc.math.expm1l(x); }
         static real_t exp2(real_t x) { return core.stdc.math.exp2l(x); }
         static real_t copysign(real_t x, real_t s) { return 
core.stdc.math.copysignl(x, s); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/src/dmd/root/filename.d 
new/dmd-2.082.1/src/dmd/root/filename.d
--- old/dmd-2.082.0/src/dmd/root/filename.d     2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/src/dmd/root/filename.d     2018-10-11 14:20:27.000000000 
+0200
@@ -836,20 +836,24 @@
             // path.
             static immutable prefix = `\\?\`w;
 
+            // prefix only needed for long names and non-UNC names
+            const needsPrefix = pathLength >= MAX_PATH && (wpath[0] != '\\' || 
wpath[1] != '\\');
+            const prefixLength = needsPrefix ? prefix.length : 0;
+
             // +1 for the null terminator
-            const bufferLength = pathLength + prefix.length + 1;
+            const bufferLength = pathLength + prefixLength + 1;
 
-            wchar[1024] absBuf;
+            wchar[1024] absBuf = void;
             auto absPath = bufferLength > absBuf.length ? new 
wchar[bufferLength] : absBuf[];
 
-            absPath[0 .. prefix.length] = prefix[];
+            absPath[0 .. prefixLength] = prefix[0 .. prefixLength];
 
             const absPathRet = GetFullPathNameW(wpath,
-                                                cast(uint)(absPath.length - 
prefix.length),
-                                                &absPath[prefix.length],
+                                                cast(uint)(absPath.length - 
prefixLength),
+                                                &absPath[prefixLength],
                                                 null /*filePartBuffer*/);
 
-            if (absPathRet == 0 || absPathRet > absPath.length - prefix.length)
+            if (absPathRet == 0 || absPathRet > absPath.length - prefixLength)
             {
                 return F((wchar*).init);
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/README.md 
new/dmd-2.082.1/test/README.md
--- old/dmd-2.082.0/test/README.md      2018-09-01 21:45:08.000000000 +0200
+++ new/dmd-2.082.1/test/README.md      2018-10-11 14:20:27.000000000 +0200
@@ -215,3 +215,6 @@
     EXTRA_FILES        directory for extra files of this test type, e.g. 
runnable/extra-files
 
     LIBEXT             platform-specific extension for library files, e.g. .a 
or .lib
+
+    SOEXT              platform-specific extension for shared object files 
(aka. dynamic libraries),
+                       e.g. .so, .dll or .dylib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/compilable/extra-files/test19266.d 
new/dmd-2.082.1/test/compilable/extra-files/test19266.d
--- old/dmd-2.082.0/test/compilable/extra-files/test19266.d     1970-01-01 
01:00:00.000000000 +0100
+++ new/dmd-2.082.1/test/compilable/extra-files/test19266.d     2018-10-11 
14:20:27.000000000 +0200
@@ -0,0 +1,3 @@
+module test19266;
+
+pragma(msg, __FILE__);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/compilable/issue19243.sh 
new/dmd-2.082.1/test/compilable/issue19243.sh
--- old/dmd-2.082.0/test/compilable/issue19243.sh       1970-01-01 
01:00:00.000000000 +0100
+++ new/dmd-2.082.1/test/compilable/issue19243.sh       2018-10-11 
14:20:27.000000000 +0200
@@ -0,0 +1,50 @@
+#! /usr/bin/env bash
+
+# bypassing this test:
+#  - on windows
+#  - on FreeBSD 32 bits
+#       test fails looling for liborig.so; don't know why but shouldn't block 
fixing all other platforms
+#  - on Circle CI with no_pic. (need PIC to run the test)
+if [[ $OS = *"win"* ]]; then exit 0; fi
+if [[ $OS = *"freebsd"* ]] && [[ $MODEL = *"32"* ]]; then exit 0; fi
+if [ ${PIC:-1} == "0" ]; then exit 0; fi
+
+TEST_DIR=${OUTPUT_BASE}
+ORIG_D=$TEST_DIR/orig.d
+ORIG_SO=$TEST_DIR/liborig${SOEXT}
+OVERRIDE_D=$TEST_DIR/override.d
+OVERRIDE_SO=$TEST_DIR/liboverride${SOEXT}
+APP_D=$TEST_DIR/app.d
+
+mkdir -p $TEST_DIR
+
+cat << EOF | $DMD -m$MODEL -fPIC -shared -of$ORIG_SO -
+import core.stdc.stdio;
+
+extern(C) int func()
+{
+    printf("liborig\n");
+    return 1;
+}
+EOF
+
+cat << EOF | $DMD -m$MODEL -fPIC -shared -of$OVERRIDE_SO -
+import core.stdc.stdio;
+
+extern(C) int func()
+{
+    printf("liboverride\n");
+    return 2;
+}
+EOF
+
+cat << EOF | LD_LIBRARY_PATH=$TEST_DIR $DMD -m$MODEL -L-L$TEST_DIR 
-L$OVERRIDE_SO -run -
+extern(C) int func();
+
+pragma(lib, "orig");
+
+void main()
+{
+    assert(func() == 2);
+}
+EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/compilable/test19266.sh 
new/dmd-2.082.1/test/compilable/test19266.sh
--- old/dmd-2.082.0/test/compilable/test19266.sh        1970-01-01 
01:00:00.000000000 +0100
+++ new/dmd-2.082.1/test/compilable/test19266.sh        2018-10-11 
14:20:27.000000000 +0200
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+if [ "${OS}" == "win32" -o "${OS}" == "win64" -o "${OS}" == "win32mscoff" ]; 
then 
+   # break out of bash to get Windows paths
+   cmd //c $(echo $DMD | tr / \\) -c 
\\\\.\\%CD%\\compilable\\extra-files\\test19266.d -deps=nul:
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/compilable/test5227.d 
new/dmd-2.082.1/test/compilable/test5227.d
--- old/dmd-2.082.0/test/compilable/test5227.d  2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/test/compilable/test5227.d  2018-10-11 14:20:27.000000000 
+0200
@@ -21,6 +21,8 @@
 6.00000L
 trunc()
 5.00000L
+exp()
+244.692L
 expm1()
 243.692L
 exp2()
@@ -82,6 +84,11 @@
 enum truncd = trunc(5.5 ); //pragma(msg, truncd);
 enum truncr = trunc(5.5L); pragma(msg, truncr);
 
+pragma(msg, "exp()");
+enum expf = exp(5.5f); //pragma(msg, expf);
+enum expd = exp(5.5 ); //pragma(msg, expd);
+enum expr = exp(5.5L); pragma(msg, expr);
+
 pragma(msg, "expm1()");
 enum expm1f = expm1(5.5f); //pragma(msg, expm1f);
 enum expm1d = expm1(5.5 ); //pragma(msg, expm1d);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/compilable/teststdint.d 
new/dmd-2.082.1/test/compilable/teststdint.d
--- old/dmd-2.082.0/test/compilable/teststdint.d        2018-09-01 
21:45:08.000000000 +0200
+++ new/dmd-2.082.1/test/compilable/teststdint.d        1970-01-01 
01:00:00.000000000 +0100
@@ -1,262 +0,0 @@
-
-import core.stdc.stdint;
-
-extern (C++):
-
-void int8(int8_t i) { }
-void uint8(uint8_t i) { }
-
-void int16(int16_t i) { }
-void uint16(uint16_t i) { }
-
-void int32(int32_t i) { }
-void uint32(uint32_t i) { }
-
-void int64(int64_t i) { }
-void uint64(uint64_t i) { }
-
-void int_least8(int_least8_t i) { }
-void uint_least8(uint_least8_t i) { }
-
-void int_least16(int_least16_t i) { }
-void uint_least16(uint_least16_t i) { }
-
-void int_least32(int_least32_t i) { }
-void uint_least32(uint_least32_t i) { }
-
-void int_least64(int_least64_t i) { }
-void uint_least64(uint_least64_t i) { }
-
-void int_fast8(int_fast8_t i) { }
-void uint_fast8(uint_fast8_t i) { }
-
-void int_fast16(int_fast16_t i) { }
-void uint_fast16(uint_fast16_t i) { }
-
-void int_fast32(int_fast32_t i) { }
-void uint_fast32(uint_fast32_t i) { }
-
-void int_fast64(int_fast64_t i) { }
-void uint_fast64(uint_fast64_t i) { }
-
-void intptr(intptr_t i) { }
-void uintptr(uintptr_t i) { }
-
-void intmax(intmax_t i) { }
-void uintmax(uintmax_t i) { }
-
-version (Win32)
-{
-    static assert(int8.mangleof         == "?int8@@YAXC@Z");
-    static assert(uint8.mangleof        == "?uint8@@YAXE@Z");
-    static assert(int16.mangleof        == "?int16@@YAXF@Z");
-    static assert(uint16.mangleof       == "?uint16@@YAXG@Z");
-    static assert(int32.mangleof        == "?int32@@YAXJ@Z");
-    static assert(uint32.mangleof       == "?uint32@@YAXK@Z");
-    static assert(int64.mangleof        == "?int64@@YAX_J@Z");
-    static assert(uint64.mangleof       == "?uint64@@YAX_K@Z");
-
-    static assert(int_least8.mangleof   == "?int_least8@@YAXC@Z");
-    static assert(uint_least8.mangleof  == "?uint_least8@@YAXE@Z");
-    static assert(int_least16.mangleof  == "?int_least16@@YAXF@Z");
-    static assert(uint_least16.mangleof == "?uint_least16@@YAXG@Z");
-    static assert(int_least32.mangleof  == "?int_least32@@YAXJ@Z");
-    static assert(uint_least32.mangleof == "?uint_least32@@YAXK@Z");
-    static assert(int_least64.mangleof  == "?int_least64@@YAX_J@Z");
-    static assert(uint_least64.mangleof == "?uint_least64@@YAX_K@Z");
-
-    static assert(int_fast8.mangleof    == "?int_fast8@@YAXC@Z");
-    static assert(uint_fast8.mangleof   == "?uint_fast8@@YAXE@Z");
-    static assert(int_fast16.mangleof   == "?int_fast16@@YAXH@Z");
-    static assert(uint_fast16.mangleof  == "?uint_fast16@@YAXI@Z");
-    static assert(int_fast32.mangleof   == "?int_fast32@@YAXJ@Z");
-    static assert(uint_fast32.mangleof  == "?uint_fast32@@YAXK@Z");
-    static assert(int_fast64.mangleof   == "?int_fast64@@YAX_J@Z");
-    static assert(uint_fast64.mangleof  == "?uint_fast64@@YAX_K@Z");
-
-    static assert(intptr.mangleof       == "?intptr@@YAXH@Z");
-    static assert(uintptr.mangleof      == "?uintptr@@YAXI@Z");
-    static assert(intmax.mangleof       == "?intmax@@YAX_J@Z");
-    static assert(uintmax.mangleof      == "?uintmax@@YAX_K@Z");
-}
-else version (Win64)
-{
-    static assert(int8.mangleof         ==  "?int8@@YAXC@Z");
-    static assert(uint8.mangleof        == "?uint8@@YAXE@Z");
-    static assert(int16.mangleof        ==  "?int16@@YAXF@Z");
-    static assert(uint16.mangleof       == "?uint16@@YAXG@Z");
-    static assert(int32.mangleof        ==  "?int32@@YAXH@Z");
-    static assert(uint32.mangleof       == "?uint32@@YAXI@Z");
-    static assert(int64.mangleof        ==  "?int64@@YAX_J@Z");
-    static assert(uint64.mangleof       == "?uint64@@YAX_K@Z");
-
-    static assert(int_least8.mangleof   ==  "?int_least8@@YAXC@Z");
-    static assert(uint_least8.mangleof  == "?uint_least8@@YAXE@Z");
-    static assert(int_least16.mangleof  ==  "?int_least16@@YAXF@Z");
-    static assert(uint_least16.mangleof == "?uint_least16@@YAXG@Z");
-    static assert(int_least32.mangleof  ==  "?int_least32@@YAXH@Z");
-    static assert(uint_least32.mangleof == "?uint_least32@@YAXI@Z");
-    static assert(int_least64.mangleof  ==  "?int_least64@@YAX_J@Z");
-    static assert(uint_least64.mangleof == "?uint_least64@@YAX_K@Z");
-
-    static assert(int_fast8.mangleof    ==  "?int_fast8@@YAXD@Z");   // char
-    static assert(uint_fast8.mangleof   == "?uint_fast8@@YAXE@Z");   // 
unsigned char
-    static assert(int_fast16.mangleof   ==  "?int_fast16@@YAXH@Z");  // int
-    static assert(uint_fast16.mangleof  == "?uint_fast16@@YAXI@Z");  // 
unsigned int
-    static assert(int_fast32.mangleof   ==  "?int_fast32@@YAXH@Z");  // int
-    static assert(uint_fast32.mangleof  == "?uint_fast32@@YAXI@Z");  // 
unsigned int
-    static assert(int_fast64.mangleof   ==  "?int_fast64@@YAX_J@Z"); // 
_Longlong
-    static assert(uint_fast64.mangleof  == "?uint_fast64@@YAX_K@Z"); // 
_ULonglong
-
-    static assert(intptr.mangleof       ==  "?intptr@@YAX_J@Z");
-    static assert(uintptr.mangleof      == "?uintptr@@YAX_K@Z");
-    static assert(intmax.mangleof       ==  "?intmax@@YAX_J@Z");
-    static assert(uintmax.mangleof      == "?uintmax@@YAX_K@Z");
-}
-else version (OSX)
-{
-  version (D_LP64)
-  {
-    static assert(int8.mangleof         == "_Z4int8a");
-    static assert(uint8.mangleof        == "_Z5uint8h");
-    static assert(int16.mangleof        == "_Z5int16s");
-    static assert(uint16.mangleof       == "_Z6uint16t");
-    static assert(int32.mangleof        == "_Z5int32i");
-    static assert(uint32.mangleof       == "_Z6uint32j");
-    static assert(int64.mangleof        == "_Z5int64x");
-    static assert(uint64.mangleof       == "_Z6uint64y");
-
-    static assert(int_least8.mangleof    == "_Z10int_least8a");
-    static assert(uint_least8.mangleof  == "_Z11uint_least8h");
-    static assert(int_least16.mangleof  == "_Z11int_least16s");
-    static assert(uint_least16.mangleof == "_Z12uint_least16t");
-    static assert(int_least32.mangleof  == "_Z11int_least32i");
-    static assert(uint_least32.mangleof == "_Z12uint_least32j");
-    static assert(int_least64.mangleof  == "_Z11int_least64x");
-    static assert(uint_least64.mangleof == "_Z12uint_least64y");
-
-    static assert(int_fast8.mangleof    == "_Z9int_fast8a");
-    static assert(uint_fast8.mangleof   == "_Z10uint_fast8h");
-    static assert(int_fast16.mangleof   == "_Z10int_fast16s");
-    static assert(uint_fast16.mangleof  == "_Z11uint_fast16t");
-    static assert(int_fast32.mangleof   == "_Z10int_fast32i");
-    static assert(uint_fast32.mangleof  == "_Z11uint_fast32j");
-    static assert(int_fast64.mangleof   == "_Z10int_fast64x");
-    static assert(uint_fast64.mangleof  == "_Z11uint_fast64y");
-
-    static assert(intptr.mangleof       == "_Z6intptrl");
-    static assert(uintptr.mangleof      == "_Z7uintptrm");
-    static assert(intmax.mangleof       == "_Z6intmaxl");
-    static assert(uintmax.mangleof      == "_Z7uintmaxm");
-  }
-  else
-  {
-    static assert(int8.mangleof         == "_Z4int8a");
-    static assert(uint8.mangleof        == "_Z5uint8h");
-    static assert(int16.mangleof        == "_Z5int16s");
-    static assert(uint16.mangleof       == "_Z6uint16t");
-    static assert(int32.mangleof        == "_Z5int32i");
-    static assert(uint32.mangleof       == "_Z6uint32j");
-    static assert(int64.mangleof        == "_Z5int64x");
-    static assert(uint64.mangleof       == "_Z6uint64y");
-
-    static assert(int_least8.mangleof    == "_Z10int_least8a");
-    static assert(uint_least8.mangleof  == "_Z11uint_least8h");
-    static assert(int_least16.mangleof  == "_Z11int_least16s");
-    static assert(uint_least16.mangleof == "_Z12uint_least16t");
-    static assert(int_least32.mangleof  == "_Z11int_least32i");
-    static assert(uint_least32.mangleof == "_Z12uint_least32j");
-    static assert(int_least64.mangleof  == "_Z11int_least64x");
-    static assert(uint_least64.mangleof == "_Z12uint_least64y");
-
-    static assert(int_fast8.mangleof    == "_Z9int_fast8a");
-    static assert(uint_fast8.mangleof   == "_Z10uint_fast8h");
-    static assert(int_fast16.mangleof   == "_Z10int_fast16s");
-    static assert(uint_fast16.mangleof  == "_Z11uint_fast16t");
-    static assert(int_fast32.mangleof   == "_Z10int_fast32i");
-    static assert(uint_fast32.mangleof  == "_Z11uint_fast32j");
-    static assert(int_fast64.mangleof   == "_Z10int_fast64x");
-    static assert(uint_fast64.mangleof  == "_Z11uint_fast64y");
-
-    static assert(intptr.mangleof       == "_Z6intptrl");
-    static assert(uintptr.mangleof      == "_Z7uintptrm");
-    static assert(intmax.mangleof       == "_Z6intmaxx");
-    static assert(uintmax.mangleof      == "_Z7uintmaxy");
-  }
-}
-else version (Posix)
-{
-  version (D_LP64)
-  {
-    static assert(int8.mangleof         == "_Z4int8a");
-    static assert(uint8.mangleof        == "_Z5uint8h");
-    static assert(int16.mangleof        == "_Z5int16s");
-    static assert(uint16.mangleof       == "_Z6uint16t");
-    static assert(int32.mangleof        == "_Z5int32i");
-    static assert(uint32.mangleof       == "_Z6uint32j");
-    static assert(int64.mangleof        == "_Z5int64l");
-    static assert(uint64.mangleof       == "_Z6uint64m");
-
-    static assert(int_least8.mangleof   == "_Z10int_least8a");
-    static assert(uint_least8.mangleof  == "_Z11uint_least8h");
-    static assert(int_least16.mangleof  == "_Z11int_least16s");
-    static assert(uint_least16.mangleof == "_Z12uint_least16t");
-    static assert(int_least32.mangleof  == "_Z11int_least32i");
-    static assert(uint_least32.mangleof == "_Z12uint_least32j");
-    static assert(int_least64.mangleof  == "_Z11int_least64l");
-    static assert(uint_least64.mangleof == "_Z12uint_least64m");
-
-    static assert(int_fast8.mangleof    == "_Z9int_fast8a");
-    static assert(uint_fast8.mangleof   == "_Z10uint_fast8h");
-    static assert(int_fast16.mangleof   == "_Z10int_fast16l");
-    static assert(uint_fast16.mangleof  == "_Z11uint_fast16m");
-    static assert(int_fast32.mangleof   == "_Z10int_fast32l");
-    static assert(uint_fast32.mangleof  == "_Z11uint_fast32m");
-    static assert(int_fast64.mangleof   == "_Z10int_fast64l");
-    static assert(uint_fast64.mangleof  == "_Z11uint_fast64m");
-
-    static assert(intptr.mangleof       == "_Z6intptrl");
-    static assert(uintptr.mangleof      == "_Z7uintptrm");
-    static assert(intmax.mangleof       == "_Z6intmaxl");
-    static assert(uintmax.mangleof      == "_Z7uintmaxm");
-  }
-  else
-  {
-    static assert(int8.mangleof         == "_Z4int8a");
-    static assert(uint8.mangleof        == "_Z5uint8h");
-    static assert(int16.mangleof        == "_Z5int16s");
-    static assert(uint16.mangleof       == "_Z6uint16t");
-    static assert(int32.mangleof        == "_Z5int32i");
-    static assert(uint32.mangleof       == "_Z6uint32j");
-    static assert(int64.mangleof        == "_Z5int64x");
-    static assert(uint64.mangleof       == "_Z6uint64y");
-
-    static assert(int_least8.mangleof   == "_Z10int_least8a");
-    static assert(uint_least8.mangleof  == "_Z11uint_least8h");
-    static assert(int_least16.mangleof  == "_Z11int_least16s");
-    static assert(uint_least16.mangleof == "_Z12uint_least16t");
-    static assert(int_least32.mangleof  == "_Z11int_least32i");
-    static assert(uint_least32.mangleof == "_Z12uint_least32j");
-    static assert(int_least64.mangleof  == "_Z11int_least64x");
-    static assert(uint_least64.mangleof == "_Z12uint_least64y");
-
-    static assert(int_fast8.mangleof    == "_Z9int_fast8a");
-    static assert(uint_fast8.mangleof   == "_Z10uint_fast8h");
-    static assert(int_fast16.mangleof   == "_Z10int_fast16i");
-    static assert(uint_fast16.mangleof  == "_Z11uint_fast16j");
-    static assert(int_fast32.mangleof   == "_Z10int_fast32i");
-    static assert(uint_fast32.mangleof  == "_Z11uint_fast32j");
-    static assert(int_fast64.mangleof   == "_Z10int_fast64x");
-    static assert(uint_fast64.mangleof  == "_Z11uint_fast64y");
-
-    static assert(intptr.mangleof       == "_Z6intptri");
-    static assert(uintptr.mangleof      == "_Z7uintptrj");
-    static assert(intmax.mangleof       == "_Z6intmaxx");
-    static assert(uintmax.mangleof      == "_Z7uintmaxy");
-  }
-}
-else
-{
-    static assert(0, "unsupported version");
-}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/runnable/extra-files/stdint.cpp 
new/dmd-2.082.1/test/runnable/extra-files/stdint.cpp
--- old/dmd-2.082.0/test/runnable/extra-files/stdint.cpp        1970-01-01 
01:00:00.000000000 +0100
+++ new/dmd-2.082.1/test/runnable/extra-files/stdint.cpp        2018-10-11 
14:20:27.000000000 +0200
@@ -0,0 +1,8 @@
+#include <stdint.h>
+
+int testCppI8Mangle (int8_t,  uint8_t,  int_least8_t,  uint_least8_t,  
int_fast8_t,  uint_fast8_t)  { return 1; }
+int testCppI16Mangle(int16_t, uint16_t, int_least16_t, uint_least16_t, 
int_fast16_t, uint_fast16_t) { return 2; }
+int testCppI32Mangle(int32_t, uint32_t, int_least32_t, uint_least32_t, 
int_fast32_t, uint_fast32_t) { return 3; }
+int testCppI64Mangle(int64_t, uint64_t, int_least64_t, uint_least64_t, 
int_fast64_t, uint_fast64_t) { return 4; }
+int testCppIntPtrMangle(intptr_t, uintptr_t) { return 5; }
+int testCppIntMaxMangle(intmax_t, uintmax_t) { return 6; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/runnable/stdint.d 
new/dmd-2.082.1/test/runnable/stdint.d
--- old/dmd-2.082.0/test/runnable/stdint.d      1970-01-01 01:00:00.000000000 
+0100
+++ new/dmd-2.082.1/test/runnable/stdint.d      2018-10-11 14:20:27.000000000 
+0200
@@ -0,0 +1,24 @@
+// EXTRA_CPP_SOURCES: stdint.cpp
+
+module stdint_test;
+
+import core.stdc.stdint;
+
+extern(C++):
+
+int testCppI8Mangle (int8_t,  uint8_t,  int_least8_t,  uint_least8_t,  
int_fast8_t,  uint_fast8_t);
+int testCppI16Mangle(int16_t, uint16_t, int_least16_t, uint_least16_t, 
int_fast16_t, uint_fast16_t);
+int testCppI32Mangle(int32_t, uint32_t, int_least32_t, uint_least32_t, 
int_fast32_t, uint_fast32_t);
+int testCppI64Mangle(int64_t, uint64_t, int_least64_t, uint_least64_t, 
int_fast64_t, uint_fast64_t);
+int testCppIntPtrMangle(intptr_t, uintptr_t);
+int testCppIntMaxMangle(intmax_t, uintmax_t);
+
+void main()
+{
+    assert(testCppI8Mangle (1, 2, 3, 4, 5, 6) == 1);
+    assert(testCppI16Mangle(1, 2, 3, 4, 5, 6) == 2);
+    assert(testCppI32Mangle(1, 2, 3, 4, 5, 6) == 3);
+    assert(testCppI64Mangle(1, 2, 3, 4, 5, 6) == 4);
+    assert(testCppIntPtrMangle(1, 2) == 5);
+    assert(testCppIntMaxMangle(1, 2) == 6);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dmd-2.082.0/test/tools/exported_vars.sh 
new/dmd-2.082.1/test/tools/exported_vars.sh
--- old/dmd-2.082.0/test/tools/exported_vars.sh 2018-09-01 21:45:08.000000000 
+0200
+++ new/dmd-2.082.1/test/tools/exported_vars.sh 2018-10-11 14:20:27.000000000 
+0200
@@ -13,6 +13,14 @@
     export LIBEXT=.a
 fi
 
+if [[ "$OS" == "win"* ]]; then
+    export SOEXT=.dll
+elif [[ "$OS" = "osx" ]]; then
+    export SOEXT=.dylib
+else
+    export SOEXT=.so
+fi
+
 # Default to DigitalMars C++ on Win32
 if [ "$OS" == "win32" ] && [ -z "${CC+set}" ] ; then
     CC="dmc"

++++++ druntime-2.082.0.tar.gz -> druntime-2.082.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.082.0/benchmark/gcbench/conmsg.d 
new/druntime-2.082.1/benchmark/gcbench/conmsg.d
--- old/druntime-2.082.0/benchmark/gcbench/conmsg.d     2018-08-29 
11:45:01.000000000 +0200
+++ new/druntime-2.082.1/benchmark/gcbench/conmsg.d     2018-09-28 
13:07:12.000000000 +0200
@@ -7,7 +7,7 @@
  */
 import std.algorithm, std.concurrency, std.conv, std.file, std.json, std.range;
 
-JSONValue buildVal(in dchar[] word)
+JSONValue buildVal(in dchar[] word) pure
 {
     JSONValue[string] res;
     res["word"] = word.to!string;
@@ -35,9 +35,9 @@
 
 void serialize(in JSONValue val, ref ubyte[] buf)
 {
-    with (JSON_TYPE) switch (val.type)
+    with (JSONType) switch (val.type)
     {
-    case OBJECT:
+    case object:
         foreach (k, v; val.object)
         {
             buf ~= cast(ubyte[])k;
@@ -45,17 +45,17 @@
         }
         break;
 
-    case ARRAY:
+    case array:
         foreach (v; val.array)
             serialize(v, buf);
         break;
 
-    case UINTEGER:
+    case uinteger:
         ulong v = val.uinteger;
         buf ~= (cast(ubyte*)&v)[0 .. v.sizeof];
         break;
 
-    case STRING:
+    case string:
         buf ~= cast(ubyte[])val.str;
         break;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.082.0/changelog/exceptions-opt.dd 
new/druntime-2.082.1/changelog/exceptions-opt.dd
--- old/druntime-2.082.0/changelog/exceptions-opt.dd    2018-08-29 
11:45:01.000000000 +0200
+++ new/druntime-2.082.1/changelog/exceptions-opt.dd    1970-01-01 
01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-Exception trapping can now be disabled via `--DRT-trapExceptions=0`
-
-Previously it was only possible to disable the trapping of exception by setting
-the global variable `rt_trapExceptions` to `false`.
-Now you can, for example, immediately open `gdb` at the uncaught exception:
-
-$(CONSOLE
-> gdb -ex run --args <my-program> --DRT-trapExceptions=0
-[Thread debugging using libthread_db enabled]
-Using host libthread_db library "/usr/lib/libthread_db.so.1".
-uncaught exception
-object.Exception@src/rt_trap_exceptions_drt.d(4): foo
-$(NDASH)$(NDASH)$(NDASH)$(NDASH)$(NDASH)$(NDASH)$(NDASH)$(NDASH)$(NDASH)$(NDASH)
-src/rt_trap_exceptions_drt.d:4 void rt_trap_exceptions_drt.test() [0x55591026]
-src/rt_trap_exceptions_drt.d:9 _Dmain [0x55591058]
-$(P)
-Program received signal SIGABRT, Aborted.
-0x00007ffff6e7b86b in raise () from /usr/lib/libc.so.6
-(gdb) bt full
-#0  0x00007ffff6e7b86b in raise () from /usr/lib/libc.so.6
-No symbol table info available.
-#1  0x00007ffff6e6640e in abort () from /usr/lib/libc.so.6
-No symbol table info available.
-#2  0x00005555555918cc in _d_throwdwarf (o=0x7ffff7ea4000) at 
src/rt/dwarfeh.d:233
-        eh = 0x7ffff7fa4740
-        refcount = 0
-        r = 5
-#3  0x0000555555591027 in rt_trap_exceptions_drt.test() () at 
../../src/object.d:2695
-        innerLocal = 20
-#4  0x0000555555591059 in D main (args=...) at src/rt_trap_exceptions_drt.d:9
-        myLocal = "bar"
-)
-
-$(LINK2 http://arsdnet.net/this-week-in-d/2016-aug-07.html, This Week in D) for
-an in-depth explanation of `rt_trapExceptions`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.082.0/changelog/require_update.dd 
new/druntime-2.082.1/changelog/require_update.dd
--- old/druntime-2.082.0/changelog/require_update.dd    2018-08-29 
11:45:01.000000000 +0200
+++ new/druntime-2.082.1/changelog/require_update.dd    1970-01-01 
01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-Additional functions for associative arrays
-
-The $(D require) function provides a means to construct a new value when the 
key
-is not present.
-
----------
-class C{}
-C[string] aa;
-
-auto a = aa.require("a", new C);    // lookup "a", construct if not present
----------
-
-The $(D update) function allows different operations to be performed depending
-on whether a value already exists or needs to be constructed.
-
----------
-class C{}
-C[string] aa;
-
-C older;
-C newer;
-aa.update("a",
-{
-    newer = new C;
-    return newer;
-},
-(ref C c)
-{
-    older = c;
-    newer = new C;
-    return newer;
-});
----------
-
-The functions avoid the need to perform multiple key lookups. Further details
-are available in the $(LINK2 $(ROOT_DIR)spec/hash-map.html, spec.)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.082.0/changelog/typeinfo-gethash.dd 
new/druntime-2.082.1/changelog/typeinfo-gethash.dd
--- old/druntime-2.082.0/changelog/typeinfo-gethash.dd  2018-08-29 
11:45:01.000000000 +0200
+++ new/druntime-2.082.1/changelog/typeinfo-gethash.dd  1970-01-01 
01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-`TypeInfo.getHash` now uses `core.internal.hash.hashOf` functions for hash 
computing
-
-Now `typeid(typeof(var)).getHash(&var)` should be always equal `hashOf(val)`.
-hashOf uses MurmurHash3 algorithm for bitwise hashing, including string 
hashing.
-Old implementation used polynomial hash for string hashing, which often 
provided
-lexicographical order of strings in associative array. However AA doesn't 
guarantee
-some specific order of elements, thus tests which rely on it should be changed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.082.0/changelog/utsname_version.dd 
new/druntime-2.082.1/changelog/utsname_version.dd
--- old/druntime-2.082.0/changelog/utsname_version.dd   2018-08-29 
11:45:01.000000000 +0200
+++ new/druntime-2.082.1/changelog/utsname_version.dd   1970-01-01 
01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-core.sys.posix.utsname.update renamed to version_
-
-The struct that $(D uname) returns - $(D utsname) - has the field $(D version)
-in C. The D definition of the struct cannot match that, because $(D version) is
-a keyword in D. So, it's been called $(D update), which is not an obvious
-choice. It is more in line with current naming policies (and more in line with
-the name in C) for it to be called $(D version_), since that's the closest that
-we can get to $(D version) in D. So, $(D update) has now been renamed to
-$(D version_), and $(D update) is an alias of $(D version_) which will be
-deprecated in a future release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/druntime-2.082.0/src/core/stdc/stdint.d 
new/druntime-2.082.1/src/core/stdc/stdint.d
--- old/druntime-2.082.0/src/core/stdc/stdint.d 2018-08-29 11:45:01.000000000 
+0200
+++ new/druntime-2.082.1/src/core/stdc/stdint.d 2018-09-28 13:07:12.000000000 
+0200
@@ -35,84 +35,92 @@
     alias uint128_t = ucent; ///
 }
 
-version (Win32)
-{
-    alias int8_t   = byte;      ///
-    alias int16_t  = short;     ///
-    alias uint8_t  = ubyte;     ///
-    alias uint16_t = ushort;    ///
-    alias int32_t  = cpp_long;  ///
-    alias uint32_t = cpp_ulong; ///
-    alias int64_t  = long;      ///
-    alias uint64_t = ulong;     ///
-
-    alias int_least8_t   = byte;      ///
-    alias uint_least8_t  = ubyte;     ///
-    alias int_least16_t  = short;     ///
-    alias uint_least16_t = ushort;    ///
-    alias int_least32_t  = cpp_long;  ///
-    alias uint_least32_t = cpp_ulong; ///
-    alias int_least64_t  = long;      ///
-    alias uint_least64_t = ulong;     ///
-
-    alias int_fast8_t   = byte;      ///
-    alias uint_fast8_t  = ubyte;     ///
-    alias int_fast16_t  = int;       ///
-    alias uint_fast16_t = uint;      ///
-    alias int_fast32_t  = cpp_long;  ///
-    alias uint_fast32_t = cpp_ulong; ///
-    alias int_fast64_t  = long;      ///
-    alias uint_fast64_t = ulong;     ///
-
-    alias intptr_t  = int;   ///
-    alias uintptr_t = uint;  ///
-    alias intmax_t  = long;  ///
-    alias uintmax_t = ulong; ///
-}
-else version (Win64)
+version (Windows)
 {
     alias int8_t   = byte;   ///
     alias int16_t  = short;  ///
     alias uint8_t  = ubyte;  ///
     alias uint16_t = ushort; ///
-    alias int32_t  = int;    ///
-    alias uint32_t = uint;   ///
+    version (CRuntime_DigitalMars)
+    {
+        alias int32_t  = cpp_long;  ///
+        alias uint32_t = cpp_ulong; ///
+    }
+    else
+    {
+        alias int32_t  = int;  ///
+        alias uint32_t = uint; ///
+    }
     alias int64_t  = long;   ///
     alias uint64_t = ulong;  ///
 
-    alias int_least8_t   = byte;   ///
-    alias uint_least8_t  = ubyte;  ///
-    alias int_least16_t  = short;  ///
-    alias uint_least16_t = ushort; ///
-    alias int_least32_t  = int;    ///
-    alias uint_least32_t = uint;   ///
-    alias int_least64_t  = long;   ///
-    alias uint_least64_t = ulong;  ///
-
-    alias int_fast8_t   = char;  ///
-    alias uint_fast8_t  = ubyte; ///
-    alias int_fast16_t  = int;   ///
-    alias uint_fast16_t = uint;  ///
-    alias int_fast32_t  = int;   ///
-    alias uint_fast32_t = uint;  ///
-    alias int_fast64_t  = long;  ///
-    alias uint_fast64_t = ulong; ///
-
-    alias intptr_t  = long;  ///
-    alias uintptr_t = ulong; ///
-    alias intmax_t  = long;  ///
-    alias uintmax_t = ulong; ///
+    alias int_least8_t   = byte;     ///
+    alias uint_least8_t  = ubyte;    ///
+    alias int_least16_t  = short;    ///
+    alias uint_least16_t = ushort;   ///
+    alias int_least32_t  = int32_t;  ///
+    alias uint_least32_t = uint32_t; ///
+    alias int_least64_t  = long;     ///
+    alias uint_least64_t = ulong;    ///
+
+    alias int_fast8_t   = byte;     ///
+    alias uint_fast8_t  = ubyte;    ///
+    alias int_fast16_t  = int;      ///
+    alias uint_fast16_t = uint;     ///
+    alias int_fast32_t  = int32_t;  ///
+    alias uint_fast32_t = uint32_t; ///
+    alias int_fast64_t  = long;     ///
+    alias uint_fast64_t = ulong;    ///
+
+    alias intptr_t  = ptrdiff_t; ///
+    alias uintptr_t = size_t;    ///
+    alias intmax_t  = long;      ///
+    alias uintmax_t = ulong;     ///
 }
 else version (OSX)
 {
+    alias int8_t   = byte;          ///
+    alias int16_t  = short;         ///
+    alias uint8_t  = ubyte;         ///
+    alias uint16_t = ushort;        ///
+    alias int32_t  = int;           ///
+    alias uint32_t = uint;          ///
+    alias int64_t  = cpp_longlong;  ///
+    alias uint64_t = cpp_ulonglong; ///
+
+    alias int_least8_t   = byte;     ///
+    alias uint_least8_t  = ubyte;    ///
+    alias int_least16_t  = short;    ///
+    alias uint_least16_t = ushort;   ///
+    alias int_least32_t  = int;      ///
+    alias uint_least32_t = uint;     ///
+    alias int_least64_t  = int64_t;  ///
+    alias uint_least64_t = uint64_t; ///
+
+    alias int_fast8_t   = byte;     ///
+    alias uint_fast8_t  = ubyte;    ///
+    alias int_fast16_t  = short;    ///
+    alias uint_fast16_t = ushort;   ///
+    alias int_fast32_t  = int;      ///
+    alias uint_fast32_t = uint;     ///
+    alias int_fast64_t  = int64_t;  ///
+    alias uint_fast64_t = uint64_t; ///
+
+    alias intptr_t  = cpp_long;  ///
+    alias uintptr_t = cpp_ulong; ///
+    alias intmax_t  = long;      ///
+    alias uintmax_t = ulong;     ///
+}
+else version (Posix)
+{
     alias int8_t   = byte;   ///
     alias int16_t  = short;  ///
     alias uint8_t  = ubyte;  ///
     alias uint16_t = ushort; ///
     alias int32_t  = int;    ///
     alias uint32_t = uint;   ///
-    alias int64_t  = cpp_longlong;  ///
-    alias uint64_t = cpp_ulonglong; ///
+    alias int64_t  = long;   ///
+    alias uint64_t = ulong;  ///
 
     alias int_least8_t   = byte;   ///
     alias uint_least8_t  = ubyte;  ///
@@ -120,101 +128,34 @@
     alias uint_least16_t = ushort; ///
     alias int_least32_t  = int;    ///
     alias uint_least32_t = uint;   ///
-    alias int_least64_t  = int64_t;  ///
-    alias uint_least64_t = uint64_t; ///
-
-    alias int_fast8_t   = byte;  ///
-    alias uint_fast8_t  = ubyte; ///
-    alias int_fast16_t  = short;  ///
-    alias uint_fast16_t = ushort; ///
-    alias int_fast32_t  = int;   ///
-    alias uint_fast32_t = uint;  ///
-    alias int_fast64_t  = int64_t;  ///
-    alias uint_fast64_t = uint64_t; ///
+    alias int_least64_t  = long;   ///
+    alias uint_least64_t = ulong;  ///
 
-    alias intptr_t  = cpp_long;  ///
-    alias uintptr_t = cpp_ulong; ///
-    version (D_LP64)
+    version (FreeBSD)
     {
-        alias intmax_t  = cpp_long;  ///
-        alias uintmax_t = cpp_ulong; ///
+        alias int_fast8_t   = int;  ///
+        alias uint_fast8_t  = uint; ///
+        alias int_fast16_t  = int;  ///
+        alias uint_fast16_t = uint; ///
+        alias int_fast32_t  = int;  ///
+        alias uint_fast32_t = uint; ///
     }
     else
     {
-        alias intmax_t  = long;  ///
-        alias uintmax_t = ulong; ///
-    }
-}
-else version (Posix)
-{
-    version (D_LP64)
-    {
-        alias int8_t   = byte;      ///
-        alias int16_t  = short;     ///
-        alias uint8_t  = ubyte;     ///
-        alias uint16_t = ushort;    ///
-        alias int32_t  = int;       ///
-        alias uint32_t = uint;      ///
-        alias int64_t  = cpp_long;  ///
-        alias uint64_t = cpp_ulong; ///
-
-        alias int_least8_t   = byte;      ///
-        alias uint_least8_t  = ubyte;     ///
-        alias int_least16_t  = short;     ///
-        alias uint_least16_t = ushort;    ///
-        alias int_least32_t  = int;       ///
-        alias uint_least32_t = uint;      ///
-        alias int_least64_t  = cpp_long;  ///
-        alias uint_least64_t = cpp_ulong; ///
-
         alias int_fast8_t   = byte;      ///
         alias uint_fast8_t  = ubyte;     ///
-        alias int_fast16_t  = cpp_long;  ///
-        alias uint_fast16_t = cpp_ulong; ///
-        alias int_fast32_t  = cpp_long;  ///
-        alias uint_fast32_t = cpp_ulong; ///
-        alias int_fast64_t  = cpp_long;  ///
-        alias uint_fast64_t = cpp_ulong; ///
-
-        alias intptr_t  = cpp_long;  ///
-        alias uintptr_t = cpp_ulong; ///
-        alias intmax_t  = cpp_long;  ///
-        alias uintmax_t = cpp_ulong; ///
-    }
-    else
-    {
-        alias int8_t   = byte;   ///
-        alias int16_t  = short;  ///
-        alias uint8_t  = ubyte;  ///
-        alias uint16_t = ushort; ///
-        alias int32_t  = int;    ///
-        alias uint32_t = uint;   ///
-        alias int64_t  = long;   ///
-        alias uint64_t = ulong;  ///
-
-        alias int_least8_t   = byte;   ///
-        alias uint_least8_t  = ubyte;  ///
-        alias int_least16_t  = short;  ///
-        alias uint_least16_t = ushort; ///
-        alias int_least32_t  = int;    ///
-        alias uint_least32_t = uint;   ///
-        alias int_least64_t  = long;   ///
-        alias uint_least64_t = ulong;  ///
-
-        alias int_fast8_t   = byte;  ///
-        alias uint_fast8_t  = ubyte; ///
-        alias int_fast16_t  = int;   ///
-        alias uint_fast16_t = uint;  ///
-        alias int_fast32_t  = int;   ///
-        alias uint_fast32_t = uint;  ///
-        alias int_fast64_t  = long;  ///
-        alias uint_fast64_t = ulong; ///
-
-        alias intptr_t  = int ;  ///
-        alias uintptr_t = uint;  ///
-        alias intmax_t  = long;  ///
-        alias uintmax_t = ulong; ///
+        alias int_fast16_t  = ptrdiff_t; ///
+        alias uint_fast16_t = size_t;    ///
+        alias int_fast32_t  = ptrdiff_t; ///
+        alias uint_fast32_t = size_t;    ///
     }
+    alias int_fast64_t  = long;      ///
+    alias uint_fast64_t = ulong;     ///
+
+    alias intptr_t  = ptrdiff_t; ///
+    alias uintptr_t = size_t;    ///
+    alias intmax_t  = long;      ///
+    alias uintmax_t = ulong;     ///
 }
 else
 {

++++++ phobos-2.082.0.tar.gz -> phobos-2.082.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.082.0/changelog/math_float_double_implementations.dd 
new/phobos-2.082.1/changelog/math_float_double_implementations.dd
--- old/phobos-2.082.0/changelog/math_float_double_implementations.dd   
2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/changelog/math_float_double_implementations.dd   
1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-Single- and double-precision implementations for (a)tan and exp function 
families
-
-The `float` and `double` overloads of
-$(REF atan, std, math), $(REF atan2, std, math), $(REF tan, std, math),
-$(REF exp, std, math), $(REF expm1, std, math) and $(REF exp2, std, math)
-previously forwarded to the `real` implementation (inline assembly) and
-now got proper 'software' implementations in the corresponding precision.
-
-While this may result in a slowdown in some cases for DMD (especially for
-`exp()` and `exp2()`), the overall speed-up factor for LDC is > 3, for
-both `double` and `float`.
-
-This also implies less precise results, especially in single-precision,
-so if your code depended on more accurate results via 80-bit intermediate
-precision, you'll have to cast the argument(s) explicitly now.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.082.0/changelog/std-algorithm-iteration-each-early-stopping.dd 
new/phobos-2.082.1/changelog/std-algorithm-iteration-each-early-stopping.dd
--- old/phobos-2.082.0/changelog/std-algorithm-iteration-each-early-stopping.dd 
2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/changelog/std-algorithm-iteration-each-early-stopping.dd 
1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-`std.algorithm.iteration.each` is now capable of early-stopping
-
-$(REF each, std,algorithm,iteration) is now capable of exiting early.
-When a `No.each` $(REF Flag, std,typecons) is returned from the function that
-is called by `each`, the iteration will be aborted early.
-Analogously, returning `Yes.each` will continue the iteration.
-For example:
-
----
-auto arr = [10, 20, 30];
-arr.each!((n) { arr ~= n; return (n == 20) ? No.each : Yes.each; }); // aborts 
after the second iteration
-assert(arr == [10, 20, 30, 10, 20]);
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.082.0/changelog/std-algorithm-iteration-joiner.dd 
new/phobos-2.082.1/changelog/std-algorithm-iteration-joiner.dd
--- old/phobos-2.082.0/changelog/std-algorithm-iteration-joiner.dd      
2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/changelog/std-algorithm-iteration-joiner.dd      
1970-01-01 01:00:00.000000000 +0100
@@ -1,25 +0,0 @@
-`std.algorithm.iteration.joiner` can now be used for bidirectional ranges
-
-$(REF joiner, std,algorithm,iteration) can now be requested to be a 
bidirectional range.
-
----
-import std.algorithm.iteration : joiner;
-import std.range : retro;
-[[1, 2], [3, 4]].joiner.retro; // [4, 3, 2, 1]
----
-
-A more complex example of inserting a format delimiter fully lazily:
-
----
-import std.algorithm.comparison : equal;
-import std.range : chain, cycle, iota, only, retro, take, zip;
-import std.format : format;
-
-static immutable number = "12345678";
-static immutable delimiter = ",";
-auto formatted = number.retro
-    .zip(3.iota.cycle.take(number.length))
-    .map!(z => chain(z[0].only, z[1] == 2 ? delimiter : null))
-    .joiner
-    .retro; // "12,345,678"
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.082.0/changelog/std-algorithm-searching-skipOver.dd 
new/phobos-2.082.1/changelog/std-algorithm-searching-skipOver.dd
--- old/phobos-2.082.0/changelog/std-algorithm-searching-skipOver.dd    
2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/changelog/std-algorithm-searching-skipOver.dd    
1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-`std.algorithm.searching.skipOver` can now handle variadic arguments
-
-$(REF skipOver, std,algorithm) which allows to move over a needle if it matches
-now accepts variadic arguments for needles to skip over:
-
----
-auto s = "DLang.rocks";
-assert(!s.skipOver("dlang", "DLF", "DLang "));
-assert(s == "DLang.rocks");
-
-assert(s.skipOver("dlang", "DLANG", "DLF", "D", "DL", "DLanp"));
-assert(s == "ang.rocks");
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.082.0/changelog/std-array-asStatic.dd 
new/phobos-2.082.1/changelog/std-array-asStatic.dd
--- old/phobos-2.082.0/changelog/std-array-asStatic.dd  2018-08-27 
08:35:33.000000000 +0200
+++ new/phobos-2.082.1/changelog/std-array-asStatic.dd  1970-01-01 
01:00:00.000000000 +0100
@@ -1,23 +0,0 @@
-Added `staticArray` to construct a static array from array / input range. 
Includes a length-inferring compile-time variant.
-
-The type of elements can be specified implicitly so that $(D [1, 
2].staticArray) results in `int[2]`,
-or explicitly, e.g. $(D [1, 2].staticArray!float) returns `float[2]`.
-When `a` is a range whose length is not known at compile time, the number of 
elements must be given as template argument
-(e.g. `myrange.staticArray!2`).
-Size and type can be combined, if the source range elements are implicitly
-convertible to the requested element type (eg: `2.iota.staticArray!(long[2])`).
-When the range `a` is known at compile time, it can also be specified as a
-template argument to avoid having to specify the number of elements
-(e.g.: `staticArray!(2.iota)` or `staticArray!(double, 2.iota)`).
-
----
-import std.range : iota;
-
-auto input = 3.iota;
-auto a = input.staticArray!2;
-static assert(is(typeof(a) == int[2]));
-assert(a == [0, 1]);
-auto b = input.staticArray!(long[4]);
-static assert(is(typeof(b) == long[4]));
-assert(b == [0, 1, 2, 0]);
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/phobos-2.082.0/changelog/std-datetime-timezone-remove.dd 
new/phobos-2.082.1/changelog/std-datetime-timezone-remove.dd
--- old/phobos-2.082.0/changelog/std-datetime-timezone-remove.dd        
2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/changelog/std-datetime-timezone-remove.dd        
1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-Deprecated functions for getting the timezone have been removed.
-
-Due to the fact that Microsoft changes its timezone definitions too frequently
-to maintain the conversion between the IANA TZ Database names and the names 
that
-Microsoft uses in the standard library, several functions in
-std.datetime.timezone related to getting the time zone independently of the
-host OS were previously deprecated: $(D TimeZone.getTimeZone),
-$(D TimeZone.getInstalledTZNames), $(D tzDatabaseNameToWindowsTZName), and
-$(D windowsTZNameToTZDatabaseName). These functions have now been fully 
removed.
-
-Instead of $(D TimeZone.getTimeZone),
-$(REF PosixTimeZone.getTimeZone, std, datetime, timezone) and
-$(REF WindowsTimeZone.getTimeZone, std, datetime, timezone) should be used
-directly. Instead of $(D Timezone.getInstalledTimeZones),
-$(REF PosixTimeZone.getInstalledTZNames, std, datetime, timezone) and
-$(REF WindowsTimeZone.getInstalledTZNames, std, datetime, timezone) should be
-used directly. And any programs looking to convert between the TZ Database
-names and the Windows names can use
-$(REF parseTZConversions, std, datetime, timezone) with the current
-windowsZones.xml file to get the current conversions (see the documenation for
-$(REF parseTZConversions, std, datetime, timezone) for details).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.082.0/std/algorithm/iteration.d 
new/phobos-2.082.1/std/algorithm/iteration.d
--- old/phobos-2.082.0/std/algorithm/iteration.d        2018-08-27 
08:35:33.000000000 +0200
+++ new/phobos-2.082.1/std/algorithm/iteration.d        2018-09-20 
19:57:07.000000000 +0200
@@ -5466,7 +5466,7 @@
                     else
                     {
                         // find with one needle returns the range
-                        auto hitValue = needles[0];
+                        auto hitValue = match;
                         hitNr = match.empty ? 0 : 1;
                     }
 
@@ -5815,6 +5815,17 @@
     }}
 }
 
+// issue 19207
+@safe pure nothrow unittest
+{
+    import std.algorithm.comparison : equal;
+    assert([1, 2, 3, 4].substitute([1], [7]).equal([7, 2, 3, 4]));
+    assert([1, 2, 3, 4].substitute([2], [7]).equal([1, 7, 3, 4]));
+    assert([1, 2, 3, 4].substitute([4], [7]).equal([1, 2, 3, 7]));
+    assert([1, 2, 3, 4].substitute([2, 3], [7]).equal([1, 7, 4]));
+    assert([1, 2, 3, 4].substitute([3, 4], [7, 8]).equal([1, 2, 7, 8]));
+}
+
 // sum
 /**
 Sums elements of `r`, which must be a finite
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.082.0/std/format.d 
new/phobos-2.082.1/std/format.d
--- old/phobos-2.082.0/std/format.d     2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/std/format.d     2018-09-20 19:57:07.000000000 +0200
@@ -6321,8 +6321,11 @@
 
         if (spec.width == spec.precision)
             len += spec.width;
-        else if (spec.width > 0 && (spec.precision == spec.UNSPECIFIED || 
spec.width > spec.precision))
+        else if (spec.width > 0 && spec.width != spec.DYNAMIC &&
+                 (spec.precision == spec.UNSPECIFIED || spec.width > 
spec.precision))
+        {
             len += spec.width;
+        }
         else if (spec.precision != spec.UNSPECIFIED && spec.precision > 
spec.width)
             len += spec.precision;
     }
@@ -6345,6 +6348,7 @@
     assert(guessLength!char("%2.4f") == 4);
     assert(guessLength!char("%02d:%02d:%02d") == 8);
     assert(guessLength!char("%0.2f") == 7);
+    assert(guessLength!char("%0*d") == 0);
 }
 
 /// ditto
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/phobos-2.082.0/std/net/curl.d 
new/phobos-2.082.1/std/net/curl.d
--- old/phobos-2.082.0/std/net/curl.d   2018-08-27 08:35:33.000000000 +0200
+++ new/phobos-2.082.1/std/net/curl.d   2018-09-20 19:57:07.000000000 +0200
@@ -669,19 +669,27 @@
 {
     import std.uri : urlEncode;
 
-    return post(url, urlEncode(postDict), conn);
+    return post!T(url, urlEncode(postDict), conn);
 }
 
 @system unittest
 {
+    import std.algorithm.searching : canFind;
+    import std.meta : AliasSeq;
+
+    static immutable expected = ["name1=value1&name2=value2", 
"name2=value2&name1=value1"];
+
     foreach (host; [testServer.addr, "http://"; ~ testServer.addr])
     {
-        testServer.handle((s) {
-            auto req = s.recvReq!char;
-            s.send(httpOK(req.bdy));
-        });
-        auto res = post(host ~ "/path", ["name1" : "value1", "name2" : 
"value2"]);
-        assert(res == "name1=value1&name2=value2" || res == 
"name2=value2&name1=value1");
+        foreach (T; AliasSeq!(char, ubyte))
+        {
+            testServer.handle((s) {
+                auto req = s.recvReq!char;
+                s.send(httpOK(req.bdy));
+            });
+            auto res = post!T(host ~ "/path", ["name1" : "value1", "name2" : 
"value2"]);
+            assert(canFind(expected, res));
+        }
     }
 }
 


Reply via email to