- Update to 1.32.2:
* Big news
- New command-line option --fwarn-stack-size=<threshold> with
LLVM 13+. (#4378)
- New command-line option --fsplit-stack for incremental stack
allocations, see https://llvm.org/docs/SegmentedStacks.html. (#4379)
- New UDA ldc.attributes.noSplitStack disables it on a per-function
basis. (#4382)
- New command-line option --indent for the timetrace2txt tool.
(#4391)
* Bug fixes
- Fix potentially huge compile slowdowns with -g and LLVM 15+.
(#4354, #4393)
- Treat all LLVM warnings as regular warnings (e.g., errors
with -w). Requires LLVM 13+. (#4384)
- Skipped 1.32.1:
* Big news
- The prebuilt Linux packages are now generated on a Ubuntu 20.04
box, so the min required glibc version has been raised from
2.26 to 2.31. (#4367)
* Bug fixes
- Fix empty ldc.gccbuiltins_* modules with LLVM 15+.
(#4347, #4350)
- Fix v1.31 regression wrt. potentially wrong constant pointer
offsets. (#4362, #4365)
- Windows: Fix v1.32 regression wrt. leaking Throwable.info
backtraces. (#4369)
- Fix C assert calls for newlib targets. (#4351)
- Do not use %{_includedir}/d to be able to install/use multiple
D compilers in parallel - boo#1212913
OBS-URL: https://build.opensuse.org/request/show/1097968
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ldc?expand=0&rev=22
- Update to 1.32.2:
* Big news
- New command-line option --fwarn-stack-size=<threshold> with
LLVM 13+. (#4378)
- New command-line option --fsplit-stack for incremental stack
allocations, see https://llvm.org/docs/SegmentedStacks.html. (#4379)
- New UDA ldc.attributes.noSplitStack disables it on a per-function
basis. (#4382)
- New command-line option --indent for the timetrace2txt tool.
(#4391)
* Bug fixes
- Fix potentially huge compile slowdowns with -g and LLVM 15+.
(#4354, #4393)
- Treat all LLVM warnings as regular warnings (e.g., errors
with -w). Requires LLVM 13+. (#4384)
- Skipped 1.32.1:
* Big news
- The prebuilt Linux packages are now generated on a Ubuntu 20.04
box, so the min required glibc version has been raised from
2.26 to 2.31. (#4367)
* Bug fixes
- Fix empty ldc.gccbuiltins_* modules with LLVM 15+.
(#4347, #4350)
- Fix v1.31 regression wrt. potentially wrong constant pointer
offsets. (#4362, #4365)
- Windows: Fix v1.32 regression wrt. leaking Throwable.info
backtraces. (#4369)
- Fix C assert calls for newlib targets. (#4351)
- Do not use %{_includedir}/d to be able to install/use multiple
D compilers in parallel - boo#1212913
OBS-URL: https://build.opensuse.org/request/show/1097494
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=65
- Use gcc-d (gdc) for bootstrapping as recommended by upstream.
Only gdc is needed for bootstrapping instead of various older ldc
versions, which also allows to use newer versions of LLVM
(boo#1199054). On top of that, this allows ldc to use the shared
runtime built with itself.
- Drop use of binutils-gold, 1.29.0 does not use it by default anymore
- Mention %so_ver in %files
OBS-URL: https://build.opensuse.org/request/show/976651
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ldc?expand=0&rev=17
- Update to 1.24.0:
Big news
* Frontend, druntime and Phobos are at version 2.094.1+, incl. new command-line options -cov=ctfe, -vtemplates=list-instances and -HC=<silent|verbose> . (#3560, #3582, #3588, #3593)
* Support for LLVM 11. The prebuilt packages use v11.0.0; x86 packages newly include the LLVM backend for AMD GPUs. (#3546, #3586)
* Experimental support for macOS on 64-bit ARM, thanks Guillaume! All druntime/Phobos unit tests pass. The macOS package includes prebuilt druntime/Phobos; adapt the SDK path in etc/ldc2.conf and then use -mtriple=arm64-apple-macos to cross-compile. If you know how to work around the countless linker warnings, please let us know. (dlang/druntime#3226, #3583)
Platform support
* Supports LLVM 6.0 - 11.0.
Bug fixes
* Fix potentially wrong context pointers when calling delegate literals. (#3553, #3554)
* Fix alignment issue when casting vector rvalue to static array. (c8889a9)
* Make sure lambdas in pragma(inline, true) functions are emitted into each referencing compilation unit. (#3570)
* Fix -Xcc=-Wl,... by dropping support for comma-separated list of cc options. (c61b135)
* Fix ThreadSanitizer support by not detaching main thread upon program termination. (#3572)
* Traverse full chain of nested aggregates when resolving a nested variable. (#3556, #3558)
Internals
* CI: Linux AArch64 is now also tested by a Travis job, because Shippable has sadly become unreliable. (#3469)
* Building LDC with an LDC host compiler might be somewhat faster now (requires -DLDC_LINK_MANUALLY=OFF in the CMake command-line on non-Windows hosts). (#3575)
Known issues
* When building LDC, old LDC 0.17.*/ltsmaster host compilers miscompile LDC ≥ 1.21, leading to potential segfaults of the built LDC. Ltsmaster can still be used to bootstrap a first compiler and then let that compiler compile itself. (#3354)
* Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
* 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.
OBS-URL: https://build.opensuse.org/request/show/859085
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=45
- Update to 1.22.0:
Big news
* Frontend, druntime and Phobos are at version 2.092.1+.
(#3413, #3416, #3429, #3434, #3452, #3467) (new)
* AArch64: All known ABI issues have been fixed. C(++) interop should now be
on par with x86_64, and variadics usable with core.{vararg,stdc.stdarg}.
(#3421)
* Windows hosts: DMD's Visual C++ toolchain detection has been adopted. As
that's orders of magnitude faster than the previous method involving the MS
batch file, auto-detection has been enabled by default, so if you have a
non-ancient Visual C++ installation, it will now be used automatically for
linking. The environment setup has been reduced to the bare minimum
(LIB and PATH). (#3415)
* FreeBSD x64: CI with CirrusCI is now fully green and includes automated
prebuilt package generation. The package depends on the llvm ports package
and should currently work on FreeBSD 11-13. (#3453, #3464) (new)
* Link-time overridable @weak functions are now emulated for Windows targets
and work properly for ELF platforms. For ELF, LDC doesn't emit any COMDATs
anymore. (#3424)
* New ldc.gccbuiltins_{amdgcn,nvvm} for AMD GCN and NVIDIA PTX targets.
(#3411)
* druntime: Significant speed-up for core.math.ldexp. (#3440, #3446)
Platform support
* Supports LLVM 3.9 - 10.0.
Bug fixes
* Cross-module inlining (incl. pragma(inline, true)): Enable emission into
multiple object files. This may have a significant impact on performance
(incl. druntime/Phobos) when not using LTO. (#3126, #3442)
* Android: Fix TLS initialization regression (introduced in v1.21) and
potential alignment issues. Unfortunately, the ld.bfd linker is required
for our custom TLS emulation scheme, unless you're willing to use a custom
linker script. So -linker=bfd is the new default for Android targets.
(#3462) (new)
* Casting (static and dynamic) arrays to vectors now loads the data instead
of splatting the first element. (#3418, #3419)
* Fix return statements potentially accessing memory from destructed
temporaries. (#3426)
* Add proper support for -checkaction=halt. (#3430, #3431)
* druntime: Include core.stdcpp.* modules. (#3103, #3158)
* GCC-style asm: Add support for indirect input operands ("m"). (#3438)
* FreeBSD: Fix backtraces for optimized code by switching to external
libexecinfo. (#3108, #3453)
* FreeBSD: Fix C math related issues (incl. CTFE math issues) by bringing
core.stdc.{math,tgmath} up to speed. (dlang/druntime#3119)
* Fix ICE for captured parameters not passed on the LLVM level. (#3441)
* Convenience fixes for RISC-V and other exotic targets. (#3457, #3460) (new)
Internals
* When printing compile-time reals to hex strings (mangling, .di headers),
LDC now uses LLVM instead of the host C runtime, for proper and consistent
results. (#3410)
* One limitation for exotic hosts wrt. C long double precision has been
lifted. (#3414)
* For AVR targets, the compiler now predefines AVR and emits all TLS globals
as regular __gshared ones. (#3420)
* WebAssembly: New memory grow/size intrinsics. (ldc-developers/druntime#187)
(new)
* New -fno-plt option to avoid PLT external calls. (#3443)
* iOS/arm64 CI, running the debug druntime & Phobos unittests on an iPhone
6S. Thx Jacob for this tedious work! (#3379, #3450)
Known issues
* When building LDC, old LDC 0.17.*/ltsmaster host compilers miscompile LDC ≥
1.21, leading to potential segfaults of the built LDC. Ltsmaster can still
be used to bootstrap a first compiler and then let that compiler compile
itself. (#3354)
* Buggy older ld.bfd linker versions may wrongly strip out required symbols,
e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC
defaults to ld.gold on Linux.
* 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.
OBS-URL: https://build.opensuse.org/request/show/825204
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=39
- Remove groups from specfile since they are not used anymore
- Add ldc-jit lib and devel packages
- Update to 1.21.0:
* Big news
- Frontend, druntime and Phobos are at version 2.091.1+, incl. new CLI
switches -verror-style and -HC, -HCd, -HCf. (#3333, #3399)
- LLVM for prebuilt packages upgraded to v10.0.0. Android NDK version
bumped to r21. (#3307, #3387, #3398)
- Initial support for GCC/GDC-style inline assembly syntax, besides
DMD-style inline asm and LDC-specific __asm, enabling to write inline
asm that is portable across GDC/LDC and corresponds to the GCC syntax
in C. See ldc-developers/druntime#171 for examples wrt. how to
transition from __asm to similar GCC-style asm. (#3304)
- Inline assembly diagnostics have been extended by the D source
location. (#3339)
* Platform support
- Supports LLVM 3.9 - 10.0.
* Bug fixes
- Fixed tail calls in thunks, affecting AArch64 (the debug libraries now work)
and possibly other architectures. (#3329, #3332)
- Windows: Do not emit any column infos for CodeView by default
(like clang) & add -gcolumn-info. (#3102, #3388)
- Windows: Do not leak MSVC-environment-setup into -run child processes.
A new LDC_VSDIR_FORCE environment variable can be used to enforce MSVC
toolchain setup. (#3340, #3341)
- Windows: Fix memory leak when throwing exceptions in threads.
(#3369, ldc-developers/druntime#181)
- Try to use memcmp for (in)equality of non-mutable static arrays and
mutable slices. (#3400, #3401)
- ldc.gccbuiltins_*: Lift 256-bit vector limit, adding 174 AVX512
builtins for x86; 512-bit vector aliases have been added to core.simd.
(#3405, #3406)
* Internals
- core.bitop.{bts,btr,btc} are now CTFE-able. (ldc-developers/druntime#182)
- Do not fallback to host for critical section size of unknown targets.
(#3389)
- Linux: Possibility to avoid passing -fuse-ld to cc via -linker=.
(#3382)
- WebAssembly: Switch from legacy linked-list ModuleInfo registry to
__minfo section. (#3348)
- Windows: Bundled libcurl upgraded to v7.69.1, incl. the option to link
it statically. (#3378)
- Windows: Switch to wide wmain C entry point in druntime. (#3351)
- druntime unittests are now compiled with -checkaction=context.
* Known issues
- NEW: When building LDC, old LDC 0.17.*/ltsmaster host compilers
miscompile LDC ≥ 1.21, leading to potential segfaults of the built LDC.
Ltsmaster can still be used to bootstrap a first compiler and then let
that compiler compile itself. (#3354)
- Buggy older ld.bfd linker versions may wrongly strip out required
symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run).
LDC defaults to ld.gold on Linux.
- 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.
OBS-URL: https://build.opensuse.org/request/show/808560
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=36
- Switch to llvm7 for Tumbleweed as llvm8 is not able to build
bootstrap version 0.17.6
See https://github.com/ldc-developers/ldc/issues/3109
- Disable -flto=4 option as llvm does not recognize this option
- Update to 1.16.0:
* Big news
- Frontend, druntime and Phobos are at version 2.086.1, incl.
a DIP1008 fix. (#3062, #3076, #3091) (new)
- Non-Windows x86: Faster real versions of std.math.{tan,expi}. (#2855)
- dcompute: New __traits(getTargetInfo, "dcomputeTargets"). (#3090) (new)
* Platform support
- Supports LLVM 3.9 - 8.0 (incl. 7.1).
* Bug fixes
- Make pragma(LDC_no_typeinfo) actually elide TypeInfo emission
for structs, classes and interfaces. (#3068)
- Windows: Fix DLL entry point in MinGW-based libs.
(ldc-developers/mingw-w64-libs@8d930c1)
- WebAssembly: Use --export-dynamic when linking with LLD 8+.
(#3023, #3072)
- Fix corrupt this in functions nested in in/out contracts.
(45460a1)
- Fix identity comparisons of integral vectors. (a44c78f)
- Improved handling of unsupported vector ops. (a44c78f)
- uClibc: Fix C assert calls. (#3078, #3082) (new)
- Improved error message on global variable collision.
(#3080, #3081) (new)
* Known issues
- Buggy older ld.bfd linker versions may wrongly strip out
required symbols, e.g., ModuleInfos (so that e.g. no module
OBS-URL: https://build.opensuse.org/request/show/714253
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=34
- Update to 1.15.0
* Big news
- Frontend, druntime and Phobos are at version 2.085.1, incl. new
command-line options -preview, -revert, -checkaction=context,
-verrors-context and -extern-std. (#3003, #3039, #3053) (new)
+ The Objective-C improvements from DMD 2.085 are not implemented
(#3007)
- Support for LLVM 8.0. The prebuilt packages have been upgraded to
LLVM 8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that
dcompute can now emit OpenCL too. (#3005)
- Compiler memory requirements can now be reduced via the new -lowmem
switch, which enables the garbage collector for the front-end and
sacrifices compile times for less required memory. In some cases, the
overall max process memory can be reduced by more than 60%; see #2916
(comment) for some numbers. (#2916)
+ Note for package maintainers: this feature requires a recent D host
compiler (most notably, it doesn't work with ltsmaster), ideally
LDC 1.15 itself due to important GC memory overhead improvements in
2.085 druntime.
- Support for generic @llvmAttr("name") parameter UDAs, incl. new
@restrict with C-like semantics. (#3043) (new)
- macOS: 32-bit support was dropped in the sense of not being CI-tested
anymore and the prebuilt macOS package now containing x86_64 libraries
only. MACOSX_DEPLOYMENT_TARGET for the prebuilt package has been raised
from 10.8 to 10.9.
- Prebuilt packages don't depend on libtinfo and libedit anymore.
(#1827, #3019)
- x86: SSSE3 isn't required for the prebuilt packages and generated
optimized binaries anymore. (#3045) (new)
* Platform support
- Supports LLVM 3.9 - 8.0.
* Bug fixes
- Implicit cross-module-inlining of functions annotated with
pragma(inline, true) without explicit -enable-cross-module-inlining has
been restored. (#2552, #3014)
- Propagate well-known length of newly allocated dynamic arrays for
better optimizability. (#3041, #3042) (new)
- JIT: Support implicit __chkstk calls for Windows targets, e.g., for
large stack allocations. (#3051) (new)
- Update so_version to 85
OBS-URL: https://build.opensuse.org/request/show/696415
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=32
- Remove wrong requires to 'ldc-utils' as there is no such package
- Disable bootstrap in Tumbleweed and Leap 15+ as it is bootstrapped already
and to workaround https://github.com/ldc-developers/ldc/issues/2947
- Add bash-completion sub-package
- Update to 1.13.0:
* Big news
- Frontend, druntime and Phobos are at version 2.083.1.
(#2878, #2893, #2920, #2933) (new)
- The Windows packages are now fully self-sufficient, i.e., a
Visual Studio/C++ Build Tools installation isn't required anymore,
as we now ship with MinGW-w64-based libraries, similar to DMD. Check out
the included README.txt for all relevant details.
(dlang/installer#346, #2886, Wiki: Cross-compiling with LDC)
- Debug info improvements:
- For GDB: printing global and imported symbols, non-member
and member function calls. (#2826)
- For Visual Studio and mago: names, by-value params, nested
variables. (#2895, #2908, #2909, #2912)
- Associative arrays now showing up properly (at least with mago),
not as opaque void* anymore. (#2869)
- -gc now translates D names to C++ ones, e.g., to use the regular
Visual Studio debugger (bypassing mago) and as preparation for VS Code
debugging with Microsoft's C/C++ plug-in (screenshots). Thanks to
Oleksandr for this contribution and the AA fix! (#2869)
- New command-line option -fvisibility=hidden to hide functions/globals
not marked as export (for non-Windows targets), primarily to reduce the
size of shared libraries. Thanks to Andrey for stepping up! (#2894, #2923)
- Dropped support for LLVM 3.7 and 3.8. (#2872)
- LLVM for prebuilt packages upgraded to v7.0.1. (new)
- Linux: now defaulting to ld.gold linker in general, not just with
-flto=thin, as buggy older ld.bfd versions may wrongly strip out required
symbols (change with -linker). (#2870)
- Improved support for Android/x86[_64], musl libc and FreeBSD/AArch64.
(#2917, ldc-developers/druntime#146) (new)
- LDC-specific druntime: ldc.simd.inlineIR moved/renamed to ldc.llvmasm.__ir
(with deprecated legacy alias). (#2931) (new)
- New CMake option COMPILE_D_MODULES_SEPARATELY builds D files in the DDMD
frontend separately to reduce the time required to build LDC with many
CPU cores and/or for iterative development. (#2914)
* Platform support
- Supports LLVM 3.9 - 7.0.
- Alpine linux/x64: built against Musl libc to support Docker images based on
the Alpine distro, requires the llvm5-libs, musl-dev, binutils-gold and gcc
packages to build and link D apps and the tzdata and curl-dev packages for
certain stdlib modules.
* Bug fixes
- 32-bit Android/ARM regression introduced in v1.12. (#2892)
- Non-Windows x86_64 ABI fixes wrt. what's passed in registers,
relevant for C[++] interop. (#2864)
- Some issues with beta1's newly bundled Windows libraries. (#2900, #2903)
- Alignment of scope allocated class instances. (#2919)
- Beta2's -fvisibility=hidden causing lots of linker errors.
(#2922, #2923) (new)
- Update so_version to 83
- Disable ppc64 builds (boo#1113531)
OBS-URL: https://build.opensuse.org/request/show/664386
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ldc?expand=0&rev=5
- Update to 1.12.0:
* Big news
- Frontend, druntime and Phobos are at version 2.082.1.
(#2818, #2837, #2858, #2873) (new)
Significant performance improvements for some transcendental
std.math functions in single and double precision, at least
for x86. (dlang/phobos#6272 (comment))
- Support for LLVM 7, which is used for the prebuilt packages.
Due to an LLVM 7.0.0 regression, the prebuilt x86[_64] LDC
binaries require a CPU with SSSE3, and so will your optimized
binaries (unless compiling with -mattr=-ssse3). (#2850)
- JIT compilation: new ldc.dynamic_compile.bind function with
interface similar to C++ std::bind, allowing to generate
efficient specialized versions of functions (much like
Easy::jit for C++). (#2726)
- LTO now working for Win64 too; the prebuilt package includes
the required external LLD linker and the optional LTO default
libs. Enable as usual with -flto=<thin|full>
[-defaultlib=druntime-ldc-lto,phobos2-ldc-lto]. (#2774)
- Config file: new lib-dirs array for directories to be searched
for libraries, incl. LLVM compiler-rt libraries. (#2790)
* Platform support
- Supports LLVM 3.7 - 7.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 build and link D apps and the
tzdata and libcurl packages for certain stdlib modules.
- Android/ARM: This release slightly changes the way emulated TLS
is interfaced, but is missing a patch for 32-bit ARM. See the
wiki for instructions on patching that file manually before
cross-compiling the runtime libraries for 32-bit Android/ARM.
* Bug fixes
- Fix IR-based PGO on Windows (requires our LLVM fork). (#2539)
- Fix C++ class construction with D new on Posix. (#2801)
- Android: No more text relocations in Phobos zlib, required for
API level 23+. (#2822, #2835)
- Declare extern const/immutable globals as IR constants.
(#2849, #2852)
- Fix issue when emitting both object and textual assembly files
at once (-output-o -output-s). (#2847)
- Support address of struct member as key/value in AA literal.
(#2859, #2860)
- Fix ICE when computing addresses relative to functions/labels.
(#2865, #2867) (new)
- beta2 regression wrt. cross-compiling to Android. (#2863) (new)
- Fix so_version to 82
OBS-URL: https://build.opensuse.org/request/show/644172
OBS-URL: https://build.opensuse.org/package/show/devel:languages:D/ldc?expand=0&rev=23