Pre-release

@kinke kinke released this Jul 15, 2018 · 22 commits to master since this release

Assets 11

(Changes since 1.11.0-beta1 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.081.1+. (#2752, #2772, #2776) (new)
    • Add some support for classes without TypeInfos, for -betterC and/or a minimal (d)runtime. (#2765) (new)
  • LLVM for prebuilt packages upgraded to v6.0.1. The x86_64 packages feature some more LLVM targets for cross-compilation (experiments): MIPS, MSP430, RISC-V and WebAssembly. (#2760)
  • Rudimentary support for compiling & linking directly to WebAssembly. See the dedicated Wiki page for how to get started. (#2766) (new)
  • This is also the first release with a mostly working Android/AArch64 port, see this forum post for instructions on trying it out. (new)
  • LDC on Windows now uses 80-bit compile-time reals. This allows for seamless cross-compilation to other x86(_64) targets, e.g., without real.min underflowing to 0 and real.max overflowing to infinity. (#2752)

Platform support

Bug fixes

  • extern(C++) on Posix: Pass non-PODs indirectly by value. (#2728)
  • extern(C++) on Windows/MSVC: Methods return all structs via hidden sret pointer. (#2720, #1935)
  • Make GC2Stack IR optimization pass work as intended. (#2750)
  • Fix beta1 compilability regression on non-x86 architectures with 64-bit reals. (#2764) (new)
  • Work around inline assembly regression with LLVM 6 on Win32. The prebuilt Win32 package is now using LLVM 6.0.1 too. (#2629, #2770) (new)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
Pre-release

@kinke kinke released this Jul 5, 2018 · 42 commits to master since this release

Assets 10

Big news

  • Frontend, druntime and Phobos are at version 2.081.0. (#2752)
  • LLVM for prebuilt packages upgraded to v6.0.1. The x86_64 packages feature some more LLVM targets for cross-compilation (experiments): MIPS, MSP430, RISC-V and WebAssembly. (#2760)
  • LDC on Windows now uses 80-bit compile-time reals. This allows for seamless cross-compilation to other x86(_64) targets, e.g., without real.min underflowing to 0 and real.max overflowing to infinity. (#2752)

Platform support

Bug fixes

  • extern(C++) on Posix: Pass non-PODs indirectly by value. (#2728)
  • extern(C++) on Windows/MSVC: Methods return all structs via hidden sret pointer. (#2720, #1935)
  • Make GC2Stack IR optimization pass work as intended. (#2750)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.

@kinke kinke released this Jun 19, 2018 · 100 commits to master since this release

Assets 11

(Changes since 1.10.0-beta2 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.080.1. (#2665, #2719, #2737) (new)
    • No support for Objective-C class/static methods yet. (#2670)
  • Breaking Win64 extern(D) ABI change: Pass vectors directly in registers, analogous to the MS vector calling convention. (#2714)
  • Config file: For cross-compilation, support additional sections named as regex for specific target triples, e.g., "86(_64)?-.*-linux": { … };; see the comment in etc/ldc2.conf. (#2718)

Platform support

  • Supports LLVM 3.7 - 6.0.
  • Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.
  • Alpine linux/x64: built against Musl libc to support Docker images based on the Alpine distro, requires the llvm5-libs, musl-dev, and gcc packages to run and link D apps and the tzdata and libcurl packages for certain stdlib modules.

Bug fixes

  • CMake and druntime fixes for DragonFlyBSD, thanks Diederik! (#2690, #2691, #2692, ldc-developers/druntime#138, ldc-developers/druntime#139, ldc-developers/phobos#64)
  • DMD-style inline asm label naming issue in overloaded functions. (#2667, #2694)
  • Linux: misc. exception stack trace fixes & extensions, incl. default DWARF v4 debuginfo emission with LLVM 6. (#2677)
  • Predefine version D_HardFloat instead of D_SoftFloat for -float-abi=softfp. (#2678)
  • Bash completion installed to the wrong place with custom CMAKE_INSTALL_PREFIX. (#2679, #2179, #2693)
  • Default to ld.gold linker for ThinLTO on Linux. (#2696)
  • Fix compilation issues on 64-bit macOS with DMD host compiler ≥ 2.079. (#2703, #2704)
  • druntime: Fix core.stdc.stdint.(u)int64_t on 64-bit macOS etc. (#2700)
  • Define D_AVX and D_AVX2 if the target supports them. (#2711)
  • Fix sporadic front-end segfaults. (#2713)
  • Win64: Fix extern(C++) ABI wrt. passing small non-POD structs by value. (#2706)
  • Misc. druntime/Phobos fixes and upstream cherry-picks for ARM, AArch64, MIPS etc.
  • Fix potential LDC crashes when returning static array results from inline IR. (#2729) (new)
  • Win64: Fix terminate handler for VC runtime DLL version 14.14.x.y. (#2739) (new)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
Pre-release

@kinke kinke released this Jun 3, 2018 · 127 commits to master since this release

Assets 11

(Changes since 1.10.0-beta1 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.080.0+ (DMD stable from May 31st). (#2665, #2719) (new)
    • No support for Objective-C class/static methods yet. (#2670)
  • Breaking Win64 extern(D) ABI change: Pass vectors directly in registers, analogous to the MS vector calling convention. (#2714) (new)
  • Config file: For cross-compilation, support additional sections named as regex for specific target triples, e.g., "86(_64)?-.*-linux": { … };; see the comment in etc/ldc2.conf. (#2718) (new)

Platform support

Bug fixes

  • CMake and druntime fixes for DragonFlyBSD, thanks Diederik! (#2690, #2691, #2692, ldc-developers/druntime#138, ldc-developers/druntime#139, ldc-developers/phobos#64)
  • DMD-style inline asm label naming issue in overloaded functions. (#2667, #2694)
  • Linux: misc. exception stack trace fixes & extensions, incl. default DWARF v4 debuginfo emission with LLVM 6. (#2677)
  • Predefine version D_HardFloat instead of D_SoftFloat for -float-abi=softfp. (#2678)
  • Bash completion installed to the wrong place with custom CMAKE_INSTALL_PREFIX. (#2679, #2179, #2693)
  • Default to ld.gold linker for ThinLTO on Linux. (#2696)
  • Fix compilation issues on 64-bit macOS with DMD host compiler ≥ 2.079. (#2703, #2704) (new)
  • druntime: Fix core.stdc.stdint.(u)int64_t on 64-bit macOS etc. (#2700) (new)
  • Define D_AVX and D_AVX2 if the target supports them. (#2711) (new)
  • Fix sporadic front-end segfaults. (#2713) (new)
  • Win64: Fix extern(C++) ABI wrt. passing small non-POD structs by value. (#2706) (new)
  • Misc. druntime/Phobos fixes and upstream cherry-picks for ARM, AArch64, MIPS etc. (new)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
Pre-release

@kinke kinke released this May 13, 2018 · 159 commits to master since this release

Assets 10

Big news

  • Frontend, druntime and Phobos are at version 2.080.0. (#2665)
    • No support for Objective-C class/static methods yet. (#2670)

Platform support

Bug fixes

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.

@kinke kinke released this Apr 30, 2018 · 211 commits to master since this release

Assets 11

Big news

  • Frontend, druntime and Phobos are at version 2.079.1, incl. new switches -i[=<pattern>] (include imports in compilation) and -Xi. (#2587)
    • Support a minimal (d)runtime. (#2641)
    • Win32 breaking ABI change: add extra underscore for mangled names of D symbols. (#2598)
    • No breaking ABI change for 64-bit macOS wrt. C++ mangling of D (u)long. It's still mangled as C++ (unsigned) long in order not to break size_t and ptrdiff_t interop, whereas DMD 2.079 mangles it as (unsigned) long long (which, in combination with missing core.stdc.config.cpp_(u)long, makes it impossible to represent a C++ size_t/ptrdiff_t with DMD 2.079 on 64-bit macOS).
  • Support for LLVM 6. It's used for the prebuilt packages, except for the 32-bit Windows package (due to #2629). (#2608)
  • Integrated LLD (enable with -link-internally) now also able to (cross-)link ELF and Mach-O binaries, in addition to the existing Windows COFF support. (#2203)
  • Prebuilt Linux and macOS packages now ship with LTO default libs (druntime & Phobos). Keep on using -flto=<thin|full> to restrict LTO to your code, or opt for -flto=<thin|full> -defaultlib=phobos2-ldc-lto,druntime-ldc-lto to include the default libs. (#2640)
  • When linking against shared default libs, LDC now sets a default rpath (absolute path to the LDC lib dir(s); configurable in the etc/ldc2.conf file). (#2659)
  • New convenience mixin for fuzzing: ldc.libfuzzer.DefineTestOneInput. (#2510)

Platform support

  • Supports LLVM 3.7 - 6.0.
  • Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.
  • Alpine linux: Added upstream Musl C runtime commits dlang/druntime@07f4e32 and dlang/druntime@e4c2cfc to support Docker images based on Alpine and released a native Alpine/x64 compiler, which requires the llvm5-libs, musl-dev, and gcc packages to run and link D apps and the tzdata and libcurl packages for certain stdlib modules.

Bug fixes

  • DMD-style inline asm:
    • Fix semantics of extended ptr for MSVC targets. (#2653)
    • Add missing EIP register. (#2654)
  • macOS: Fix install_name and symlinks of shared fat druntime/Phobos libs. (#2659, #2615)
  • Make -static override -link-defaultlib-shared. (#2646)
  • Make interface thunks forward variadic args. (#2613)
  • Fix va_arg() for PowerPC. (ldc-developers/druntime#121)
  • MSVC: Support exporting naked functions. (#2648)
  • Only emit interface vtables in the declaring module. (#2647)
  • Call _Unwind_Resume() directly. (#2642)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
  • Phobos does not compile on MinGW platform.
  • ThinLTO may not work well with the ld.bfd linker, use ld.gold instead (-linker=gold).
Pre-release

@kinke kinke released this Apr 22, 2018 · 214 commits to master since this release

Assets 11

Big news

  • Frontend, druntime and Phobos are at version 2.079.1, incl. new switches -i[=<pattern>] (include imports in compilation) and -Xi. (#2587)
    • Support a minimal (d)runtime. (#2641)
    • Win32 breaking ABI change: add extra underscore for mangled names of D symbols. (#2598)
    • No breaking ABI change for 64-bit macOS wrt. C++ mangling of D (u)long. It's still mangled as C++ (unsigned) long in order not to break size_t and ptrdiff_t interop, whereas DMD 2.079 mangles it as (unsigned) long long (which, in combination with missing core.stdc.config.cpp_(u)long, makes it impossible to represent a C++ size_t/ptrdiff_t with DMD 2.079 on 64-bit macOS).
  • Support for LLVM 6. It's used for the prebuilt packages, except for the 32-bit Windows package (due to #2629). (#2608)
  • Integrated LLD (enable with -link-internally) now also able to (cross-)link ELF and Mach-O binaries, in addition to the existing Windows COFF support. (#2203)
  • Prebuilt Linux and macOS packages now ship with LTO default libs (druntime & Phobos). Keep on using -flto=<thin|full> to restrict LTO to your code, or opt for -flto=<thin|full> -defaultlib=phobos2-ldc-lto,druntime-ldc-lto to include the default libs. (#2640)
  • When linking against shared default libs, LDC now sets a default rpath (absolute path to the LDC lib dir(s); configurable in the etc/ldc2.conf file). (#2659)
  • Improved support for MIPS targets and the uClibc runtime library. Thanks Radu! (#2606, ldc-developers/phobos#62, ldc-developers/phobos#63, ldc-developers/druntime#134, ldc-developers/druntime#135)
  • New convenience mixin for fuzzing: ldc.libfuzzer.DefineTestOneInput. (#2510)

Platform support

Bug fixes

  • DMD-style inline asm:
    • Fix semantics of extended ptr for MSVC targets. (#2653)
    • Add missing EIP register. (#2654)
  • macOS: Fix install_name and symlinks of shared fat druntime/Phobos libs. (#2659, #2615)
  • Make -static override -link-defaultlib-shared. (#2646)
  • Make interface thunks forward variadic args. (#2613)
  • Fix va_arg() for PowerPC. (ldc-developers/druntime#121)
  • MSVC: Support exporting naked functions. (#2648)
  • Only emit interface vtables in the declaring module. (#2647)
  • Call _Unwind_Resume() directly. (#2642)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
  • Phobos does not compile on MinGW platform.
  • ThinLTO may not work well with the ld.bfd linker, use ld.gold instead (-linker=gold).

@kinke kinke released this Mar 4, 2018 · 358 commits to master since this release

Assets 11

(Changes from 1.8.0-beta1 release are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.078.3, incl. new switches -dip1008 and -transition=<intpromote|16997> as well as pragma(crt_{con,de}structor). (#2486)
  • New switch -link-defaultlib-shared to link against shared druntime/Phobos. It defaults to true for shared libraries (-shared), so it's primarily useful for executables. (#2443)
  • Support for plugins via -plugin=... (see this example). The mechanism is identical to Clang's LLVM-IR pass plugins and thus supports those as well, e.g., the AFLfuzz LLVM-mode plugin, Easy::Jit. (#2554)
  • Support for LLVM IR-based Profile-Guided Optimization via -fprofile-{generate,use} (not working on Windows yet). (#2474)
  • Basic support for LLVM XRay instrumentation via -fxray-{instrument,instruction-threshold}. (#2465)
  • DMD-style function trace profiling via -profile (LDMD) / -fdmd-trace-functions (LDC). (#2477)
  • New UDA ldc.attributes.assumeUsed to prevent a symbol from being optimized away. (#2457)
  • The PGO helper library ldc-profile-rt was replaced by LLVM's vanilla profiling library. Our subset of LLVM compiler-rt libraries is now also shipped on Windows (excl. fuzzer). (#2527, #2544)
  • Cherry-picked upstream Musl C runtime support for Docker images based on Alpine and added a native Alpine/x64 compiler, which requires the llvm5, musl-dev, and gcc packages to run and link D apps and the tzdata and libcurl packages for certain stdlib modules. (new)

Platform support

  • Supports LLVM 3.7 - 5.0.
  • Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.

Bug fixes

  • Strict left-to-right evaluation/load order of function arguments. (#2450, #2502)
  • Inline asm silently ignores opcodes db, ds, di, dl, df, dd, de. (#2548)
  • Missed optimization for scope allocated classes. (#2515, #2516)
  • Don't eliminate frame pointer by default at -O0. (#2480, #2483)
  • LLVM complaining about invalid IR pointer arithmetics. (#2537)
  • llvm_expect() doesn't work with CTFE. (#2458, #2506)
  • .{so,dylib} file command line arguments should be forwarded to linker. (#2445, #2485)
  • macOS: Set shared stdlib install_name to @rpath/<filename>. (#2442, #2581) (new)
  • array ~= element issue if rhs affects the lhs length. (#2588, #2589) (new)
  • EH segfaults when checking D class catch handlers against thrown C++ exception. (#2590) (new)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
  • Phobos does not compile on MinGW platform.
  • ThinLTO may not work well with the ld.bfd linker, use ld.gold instead (-linker=gold).
Pre-release

@kinke kinke released this Feb 16, 2018 · 383 commits to master since this release

Assets 10

Big news

  • Frontend, druntime and Phobos are at version 2.078.3, incl. new switches -dip1008 and -transition=<intpromote|16997> as well as pragma(crt_{con,de}structor). (#2486)
  • New switch -link-defaultlib-shared to link against shared druntime/Phobos. It defaults to true for shared libraries (-shared), so it's primarily useful for executables. (#2443)
  • Support for plugins via -plugin=... (see this example). The mechanism is identical to Clang's LLVM-IR pass plugins and thus supports those as well, e.g., the AFLfuzz LLVM-mode plugin, Easy::Jit. (#2554)
  • Support for LLVM IR-based Profile-Guided Optimization via -fprofile-{generate,use} (not working on Windows yet). (#2474)
  • Basic support for LLVM XRay instrumentation via -fxray-{instrument,instruction-threshold}. (#2465)
  • DMD-style function trace profiling via -profile (LDMD) / -fdmd-trace-functions (LDC). (#2477)
  • New UDA ldc.attributes.assumeUsed to prevent a symbol from being optimized away. (#2457)
  • The PGO helper library ldc-profile-rt was replaced by LLVM's vanilla profiling library. Our subset of LLVM compiler-rt libraries is now also shipped on Windows (excl. fuzzer). (#2527, #2544)

Platform support

Bug fixes

  • Strict left-to-right evaluation/load order of function arguments. (#2450, #2502)
  • Inline asm silently ignores opcodes db, ds, di, dl, df, dd, de. (#2548)
  • Missed optimization for scope allocated classes. (#2515, #2516)
  • Don't eliminate frame pointer by default at -O0. (#2480, #2483)
  • LLVM complaining about invalid IR pointer arithmetics. (#2537)
  • llvm_expect() doesn't work with CTFE. (#2458, #2506)
  • .{so,dylib} file command line arguments should be forwarded to linker. (#2445, #2485)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
  • Phobos does not compile on MinGW platform.
  • ThinLTO may not work well with the ld.bfd linker, use ld.gold instead (-linker=gold).

@JohanEngelen JohanEngelen released this Jan 5, 2018 · 509 commits to master since this release

Assets 10

(Changes from 1.7.0-beta1 release are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.077.1. (#2401, #2430)
  • C++ exceptions can now be caught in D code, for Linux and MSVC targets (and possibly more). A logical step after consolidating LDC's exception handling for non-MSVC targets with DMD's DWARF implementation. (#2405)
  • Automated building of release and CI packages. (#2438)

Platform support

  • Supports LLVM 3.7 - 5.0. (binary packages on GitHub are built with LLVM 5.0.1 (new))
  • Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.

Bug fixes

  • ICE on chained ref-returning opIndex op-assign. (#2415)
  • Windows: export visibility ignored for globals. (#2437)
  • Print error message when trying to use shared libraries with static runtime. (#2454) (new)
  • ldc-1.7.0-beta1 regression: ICE with implicit cast. (#2471) (new)
  • CMake: use llvm-config to determine LLVM's cmake directory, if possible. (#2482) (new)

Known issues

  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
  • Phobos does not compile on MinGW platform.
  • ThinLTO may not work well with the ld.bfd linker, use ld.gold instead (-linker=gold).