www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - LDC 1.15.0

reply kinke <noone nowhere.com> writes:
Glad to announce LDC 1.15:

* Based on D 2.085.1.
* Support for LLVM 8.0. The prebuilt packages ship with LLVM 
8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that 
dcompute can now emit OpenCL too.
* New -lowmem switch to enable the GC for the front-end, trading 
compile times for less required memory (in some cases, by more 
than 60%).
* New generic  llvmAttr("name") parameter UDAs, incl.  restrict 
with C-like semantics.
* Dropped support for 32-bit macOS. Min macOS version for 
prebuilt package raised to 10.9.
* Prebuilt packages don't depend on libtinfo/libedit and don't 
require SSSE3 anymore.
* Fix: functions annotated with `pragma(inline, true)` are 
implicitly cross-module-inlined again.

Full release log and downloads: 
https://github.com/ldc-developers/ldc/releases/tag/v1.15.0

Thanks to all contributors!
Apr 06
next sibling parent reply Thomas Mader <thomas.mader gmail.com> writes:
On Saturday, 6 April 2019 at 17:40:39 UTC, kinke wrote:
 Glad to announce LDC 1.15:

 * Based on D 2.085.1.
 * Support for LLVM 8.0. The prebuilt packages ship with LLVM 
 8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that 
 dcompute can now emit OpenCL too.
 * New -lowmem switch to enable the GC for the front-end, 
 trading compile times for less required memory (in some cases, 
 by more than 60%).
 * New generic  llvmAttr("name") parameter UDAs, incl.  restrict 
 with C-like semantics.
 * Dropped support for 32-bit macOS. Min macOS version for 
 prebuilt package raised to 10.9.
 * Prebuilt packages don't depend on libtinfo/libedit and don't 
 require SSSE3 anymore.
 * Fix: functions annotated with `pragma(inline, true)` are 
 implicitly cross-module-inlined again.

 Full release log and downloads: 
 https://github.com/ldc-developers/ldc/releases/tag/v1.15.0

 Thanks to all contributors!
Were there some changes to the shared phobos unittest runners between beta2 and the final release? I ask because I have the problem on macOS with the final release that libphobos2-ldc-unittest-shared.85.dylib is not fixed by my fixing step to switch to absolute paths referencing. I use install_name_tool and run this step after I do 'make all-test-runners'. It used to work previously and also with beta2. My guess is that libphobos2-ldc-unittest-shared.85.dylib is getting created after my fixing step now for some reason.
Apr 07
parent reply kinke <noone nowhere.com> writes:
On Sunday, 7 April 2019 at 14:26:16 UTC, Thomas Mader wrote:
 Were there some changes to the shared phobos unittest runners 
 between beta2 and the final release?
 I ask because I have the problem on macOS with the final 
 release that libphobos2-ldc-unittest-shared.85.dylib is not 
 fixed by my fixing step to switch to absolute paths referencing.
 I use install_name_tool and run this step after I do 'make 
 all-test-runners'. It used to work previously and also with 
 beta2.
 My guess is that libphobos2-ldc-unittest-shared.85.dylib is 
 getting created after my fixing step now for some reason.
No changes wrt. the test runners, especially none wrt. build order. The only CMake change was the frontend version. See https://github.com/ldc-developers/ldc/compare/v1.15.0-beta2...v1.15.0.
Apr 07
parent Thomas Mader <thomas.mader gmail.com> writes:
On Sunday, 7 April 2019 at 15:14:59 UTC, kinke wrote:
 On Sunday, 7 April 2019 at 14:26:16 UTC, Thomas Mader wrote:
 Were there some changes to the shared phobos unittest runners 
 between beta2 and the final release?
 I ask because I have the problem on macOS with the final 
 release that libphobos2-ldc-unittest-shared.85.dylib is not 
 fixed by my fixing step to switch to absolute paths 
 referencing.
 I use install_name_tool and run this step after I do 'make 
 all-test-runners'. It used to work previously and also with 
 beta2.
 My guess is that libphobos2-ldc-unittest-shared.85.dylib is 
 getting created after my fixing step now for some reason.
No changes wrt. the test runners, especially none wrt. build order. The only CMake change was the frontend version. See https://github.com/ldc-developers/ldc/compare/v1.15.0-beta2...v1.15.0.
In [1] you mentioned that it might be an order problem because I used make instead of ninja but the problem occurred again. I got it working now by setting the DYLD_LIBRARY_PATH variable to the build/lib directory. For some reason the phobos2-test-runner-debug-shared binary didn't have the full path to libphobos2-ldc-unittest-debug-shared.85.dylib [2]. The druntime test didn't have this problem and the problem was also not always reproducible I believe. For me it's not a problem anymore but maybe it's a pointer to something problematic. [2] otool -L /private/var/folders/wq/m1dnr42s42n5msqk2v8l0lfc0000gn/T/nix-build-ldc-1.15.0.drv-4/ldc-1.15.0-src/build/runtime/phobos2-test-runner-debug-shared /private/var/folders/wq/m1dnr42s42n5msqk2v8l0lfc0000gn/T/nix-build-ldc-1.15.0.drv-4/ldc-1.15.0-src/build/runtime/phobos2-test-runner-debug-shared: libphobos2-ldc-unittest-debug-shared.85.dylib (compatibility version 85.0.0, current version 2.0.85) /private/var/folders/wq/m1dnr42s42n5msqk2v8l0lfc0000gn/T/nix-build-ldc-1.15.0.drv-4/ldc-1.15.0-src/build/lib/libdruntime-ldc-debug shared.2.0.85.dylib (compatibility version 85.0.0, current version 2.0.85) /nix/store/mkfq1a1i6n66fahlcjvw890xj32zvlqp-Libsystem-osx-10.11.6/l b/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) [1] https://forum.dlang.org/post/rsfddgngewcloqucyfco forum.dlang.org
Apr 12
prev sibling next sibling parent Vijay Nayar <madric gmail.com> writes:
On Saturday, 6 April 2019 at 17:40:39 UTC, kinke wrote:
 Glad to announce LDC 1.15:

 * Based on D 2.085.1.
 * Support for LLVM 8.0. The prebuilt packages ship with LLVM 
 8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that 
 dcompute can now emit OpenCL too.
 * New -lowmem switch to enable the GC for the front-end, 
 trading compile times for less required memory (in some cases, 
 by more than 60%).
 * New generic  llvmAttr("name") parameter UDAs, incl.  restrict 
 with C-like semantics.
 * Dropped support for 32-bit macOS. Min macOS version for 
 prebuilt package raised to 10.9.
 * Prebuilt packages don't depend on libtinfo/libedit and don't 
 require SSSE3 anymore.
 * Fix: functions annotated with `pragma(inline, true)` are 
 implicitly cross-module-inlined again.

 Full release log and downloads: 
 https://github.com/ldc-developers/ldc/releases/tag/v1.15.0

 Thanks to all contributors!
Pretty amazing work! I especially like the -lowmem option, which actually solves the problem of certain compile-time heavy algorithms failing to compile entirely due to running out of memory.
Apr 10
prev sibling next sibling parent Radu <void null.pt> writes:
On Saturday, 6 April 2019 at 17:40:39 UTC, kinke wrote:
 Glad to announce LDC 1.15:

 * Based on D 2.085.1.
 * Support for LLVM 8.0. The prebuilt packages ship with LLVM 
 8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that 
 dcompute can now emit OpenCL too.
 * New -lowmem switch to enable the GC for the front-end, 
 trading compile times for less required memory (in some cases, 
 by more than 60%).
 * New generic  llvmAttr("name") parameter UDAs, incl.  restrict 
 with C-like semantics.
 * Dropped support for 32-bit macOS. Min macOS version for 
 prebuilt package raised to 10.9.
 * Prebuilt packages don't depend on libtinfo/libedit and don't 
 require SSSE3 anymore.
 * Fix: functions annotated with `pragma(inline, true)` are 
 implicitly cross-module-inlined again.

 [...]
Thank you!
Apr 12
prev sibling parent reply jmh530 <john.michael.hall gmail.com> writes:
On Saturday, 6 April 2019 at 17:40:39 UTC, kinke wrote:
 
 * New generic  llvmAttr("name") parameter UDAs, incl.  restrict 
 with C-like semantics.
 [snip]
I think I had passed over this when I first read the announcement. The llvmAttr("noalias") compiled on run.dlang.org, but I couldn't get the restrict to work. I assume that uses the most recent version of LDC, but I don't really know. Hmm, given that these work in LDC and not DMD, making code that uses it compiler-agnostic might be a little more roundabout. The best I could think of was something like below, unless you have other recommendations. version(LDC) { import ldc.attributes; } mixin template fooImpl() {} version(LDC) { void foo( llvmAttr("noalias") void* p) { mixin fooImpl; } } else { void foo(void* p) { mixin fooImpl; } } void main() { }
Apr 12
parent reply kinke <noone nowhere.com> writes:
On Friday, 12 April 2019 at 13:26:14 UTC, jmh530 wrote:
 The  llvmAttr("noalias") compiled on run.dlang.org, but I 
 couldn't get the  restrict to work. I assume that uses the most 
 recent version of LDC, but I don't really know.
--version as cmdline switch tells you the run.dlang.io version is still at v1.14 (as is the ldc-beta there).
 unless you have other recommendations.
I'd use something like version (LDC) import ldc.attributes : restrict; else enum restrict = null;
Apr 12
next sibling parent jmh530 <john.michael.hall gmail.com> writes:
On Friday, 12 April 2019 at 13:54:05 UTC, kinke wrote:
 [snip]

 I'd use something like

 version (LDC) import ldc.attributes : restrict;
 else          enum restrict = null;
Much better, thanks.
Apr 12
prev sibling parent jmh530 <john.michael.hall gmail.com> writes:
On Friday, 12 April 2019 at 13:54:05 UTC, kinke wrote:
 [snip]

 I'd use something like

 version (LDC) import ldc.attributes : restrict;
 else          enum restrict = null;
Excellent. Thanks.
Apr 12