www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - LDC 1.9.0 beta

reply kinke <noone nowhere.com> writes:
Hi everyone,

on behalf of the LDC team, I'm glad to announce the first beta 
for LDC 1.9. The highlights of this version in a nutshell:

* Based on D 2.079.1, including new `-i` switch and support for a 
minimal (d)runtime.
* Support for LLVM 6, used for all prebuilt packages (except for 
Win32).
* `-link-internally` able to (cross-)link Windows, Linux and 
macOS binaries.
* Prebuilt Linux and macOS packages now shipping with LTO-able 
druntime/Phobos.
* Improved support for MIPS targets and the uClibc runtime 
library.
* Various fixes, incl. druntime/Phobos/ldc-jit .dylib issues on 
macOS.

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

Thanks to all contributors!
Apr 22
next sibling parent solidstate1991 <laszloszeremi outlook.com> writes:
On Sunday, 22 April 2018 at 15:56:49 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first beta 
 for LDC 1.9. The highlights of this version in a nutshell:

 * Based on D 2.079.1, including new `-i` switch and support for 
 a minimal (d)runtime.
 * Support for LLVM 6, used for all prebuilt packages (except 
 for Win32).
 * `-link-internally` able to (cross-)link Windows, Linux and 
 macOS binaries.
 * Prebuilt Linux and macOS packages now shipping with LTO-able 
 druntime/Phobos.
 * Improved support for MIPS targets and the uClibc runtime 
 library.
 * Various fixes, incl. druntime/Phobos/ldc-jit .dylib issues on 
 macOS.

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

 Thanks to all contributors!
I'm getting a bunch of errors with the inline assembler like this: <inline asm>:6:2: error: assembler label 'L7CPUblit9composing11blitter8bit_eightpixel' can not be undefined jl L7CPUblit9composing11blitter8bit_eightpixe However I still ended up getting a .lib file in the end. Is this normal or have I done something wrong?
Apr 22
prev sibling next sibling parent reply Suliman <evermind live.ru> writes:
What about Webassembly support? Latest LLVM suppport it, so LDC 
should support also.
Apr 23
next sibling parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 23 April 2018 at 09:18:07 UTC, Suliman wrote:
 What about Webassembly support? Latest LLVM suppport it, so LDC 
 should support also.
We don't support a lot of platforms that llvm supports. It will require someone to work on the port, which hasn't happened. I've said before that I don't think it's worth it, because the web has been declining as a platform: https://forum.dlang.org/post/unqvdzopebfksnxwhoqn forum.dlang.org On Tuesday, 24 April 2018 at 08:47:49 UTC, Radu wrote:
 On Sunday, 22 April 2018 at 15:56:49 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first beta 
 for LDC 1.9. The highlights of this version in a nutshell:

 * Based on D 2.079.1, including new `-i` switch and support 
 for a minimal (d)runtime.
 * Support for LLVM 6, used for all prebuilt packages (except 
 for Win32).
 * `-link-internally` able to (cross-)link Windows, Linux and 
 macOS binaries.
 * Prebuilt Linux and macOS packages now shipping with LTO-able 
 druntime/Phobos.
 * Improved support for MIPS targets and the uClibc runtime 
 library.
 * Various fixes, incl. druntime/Phobos/ldc-jit .dylib issues 
 on macOS.

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

 Thanks to all contributors!
Looks that not all my druntime and phobos PR got in. Is this because they were not included in 2.0.79 mainline release?
Yes, ldc releases are the same as dmd releases, with some ldc-specific changes. We generally don't backport features from upstream.
 ATM uClibc is not usable as is, it doesn't even compile because 
 of various missing pieces, bummer :(
Yeah, this beta doesn't even have a MIPS backend. How much of the testsuite do you have working on MIPS/uClibc? If you have it pretty far along, we can probably cherry-pick what you need and ship it with 1.9 for people to try.
Apr 24
next sibling parent kinke <kinke libero.it> writes:
On Tuesday, 24 April 2018 at 15:53:23 UTC, Joakim wrote:
 Yeah, this beta doesn't even have a MIPS backend.
[The prebuilt binaries don't.] I thought about it for a second, but releasing a new LDC-LLVM version (and me having to build the 4 Windows variants again) seemed too troublesome for the gain. We can add the backend for v6.0.1 (and maybe revise that targets list in general). FWIW, I included the AArch64 target for the prebuilt armhf LLVM/LDC this time.
Apr 24
prev sibling next sibling parent reply Radu <void null.pt> writes:
On Tuesday, 24 April 2018 at 15:53:23 UTC, Joakim wrote:
 On Monday, 23 April 2018 at 09:18:07 UTC, Suliman wrote:
 What about Webassembly support? Latest LLVM suppport it, so 
 LDC should support also.
We don't support a lot of platforms that llvm supports. It will require someone to work on the port, which hasn't happened. I've said before that I don't think it's worth it, because the web has been declining as a platform: https://forum.dlang.org/post/unqvdzopebfksnxwhoqn forum.dlang.org On Tuesday, 24 April 2018 at 08:47:49 UTC, Radu wrote:
 On Sunday, 22 April 2018 at 15:56:49 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first 
 beta for LDC 1.9. The highlights of this version in a 
 nutshell:

 * Based on D 2.079.1, including new `-i` switch and support 
 for a minimal (d)runtime.
 * Support for LLVM 6, used for all prebuilt packages (except 
 for Win32).
 * `-link-internally` able to (cross-)link Windows, Linux and 
 macOS binaries.
 * Prebuilt Linux and macOS packages now shipping with 
 LTO-able druntime/Phobos.
 * Improved support for MIPS targets and the uClibc runtime 
 library.
 * Various fixes, incl. druntime/Phobos/ldc-jit .dylib issues 
 on macOS.

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

 Thanks to all contributors!
Looks that not all my druntime and phobos PR got in. Is this because they were not included in 2.0.79 mainline release?
Yes, ldc releases are the same as dmd releases, with some ldc-specific changes. We generally don't backport features from upstream.
 ATM uClibc is not usable as is, it doesn't even compile 
 because of various missing pieces, bummer :(
Yeah, this beta doesn't even have a MIPS backend. How much of the testsuite do you have working on MIPS/uClibc? If you have it pretty far along, we can probably cherry-pick what you need and ship it with 1.9 for people to try.
I realized that those PRs are not going to get in :(. Unfortunately it is pretty hard to contribute something that has a big impact. It looks that I need to wait another 2 releases to get all those changes in LDC as I might miss the 2.8.0 window for 1 PR, not counting additional patches for fixes that might come later on... uClibc fully passes druntime unit tests on ARM had float (armv7). phobos test runner segfaults on std.mathspecial, commenting out mathspecial - I get some asserts on formatting code related to double and some math asserts on some constants. Overall looks good and the formatting issues for double and math special segfault are not a priority for me, yet. on uClibc MIPS, druntime test hangs on everything after running core.runtime test at `void* z = pureMalloc(size_t.max - 2);`, malloc calls will fail after this (overcommit). Versioning it out I get the druntime unittest passing with an assert on core.atomic for double and some assert when allocating 390mb of memory in gc.impl.conservative.gc (way to much for my board). Overall druntime looks good. I don't have the details for phobos, but most of it passes. MIPS is a bit special as the vendor toolchain for my HW is pretty old and misses some supporting libs like libbacktrace, a math function etc.. had to stub them out. I think MIPS will require more tinkering from people trying it out.
Apr 24
next sibling parent kinke <noone nowhere.com> writes:
On Tuesday, 24 April 2018 at 19:39:30 UTC, Radu wrote:
 On Tuesday, 24 April 2018 at 15:53:23 UTC, Joakim wrote:
 Yeah, this beta doesn't even have a MIPS backend. How much of 
 the testsuite do you have working on MIPS/uClibc? If you have 
 it pretty far along, we can probably cherry-pick what you need 
 and ship it with 1.9 for people to try.
I realized that those PRs are not going to get in :(. Unfortunately it is pretty hard to contribute something that has a big impact. It looks that I need to wait another 2 releases to get all those changes in LDC as I might miss the 2.8.0 window for 1 PR, not counting additional patches for fixes that might come later on...
It may not be that bad. The next post-1.9 LDC is based on 2.080.x with x most likely >= 1, so just make sure to have most stuff in by then (maybe targeting the stable druntime/Phobos branches for new PRs). Final touchups can always be cherry-picked. We may have a 2.080-based LDC pretty soon. I started merging beta1 this evening and it looks way less troublesome than upgrading to 2.079.
Apr 24
prev sibling parent Joakim <dlang joakim.fea.st> writes:
On Tuesday, 24 April 2018 at 19:39:30 UTC, Radu wrote:
 On Tuesday, 24 April 2018 at 15:53:23 UTC, Joakim wrote:
 [...]
I realized that those PRs are not going to get in :(. Unfortunately it is pretty hard to contribute something that has a big impact. It looks that I need to wait another 2 releases to get all those changes in LDC as I might miss the 2.8.0 window for 1 PR, not counting additional patches for fixes that might come later on... [...]
Sounds like you're close, I suggest you open an ldc issue to track uClibc support, like this one tracking ARM64 support, and ping us there when you need something cherry-picked from upstream: https://github.com/ldc-developers/ldc/issues/2153
Apr 24
prev sibling parent reply meppl <mephisto nordhoff-online.de> writes:
On Tuesday, 24 April 2018 at 15:53:23 UTC, Joakim wrote:
 On Monday, 23 April 2018 at 09:18:07 UTC, Suliman wrote:
 What about Webassembly support? Latest LLVM suppport it, so 
 LDC should support also.
We don't support a lot of platforms that llvm supports. It will require someone to work on the port, which hasn't happened. I've said before that I don't think it's worth it, because the web has been declining as a platform: https://forum.dlang.org/post/unqvdzopebfksnxwhoqn forum.dlang.org
I stumbled over this: http://blog.qt.io/blog/2018/04/23/beta-qt-webassembly-technology-preview/ https://sdtimes.com/webdev/mozillas-webassembly-studio-enters-beta/ I dont want to argue, just throwing that in ;)
Apr 25
parent reply Joakim <dlang joakim.fea.st> writes:
On Thursday, 26 April 2018 at 05:34:51 UTC, meppl wrote:
 On Tuesday, 24 April 2018 at 15:53:23 UTC, Joakim wrote:
 On Monday, 23 April 2018 at 09:18:07 UTC, Suliman wrote:
 What about Webassembly support? Latest LLVM suppport it, so 
 LDC should support also.
We don't support a lot of platforms that llvm supports. It will require someone to work on the port, which hasn't happened. I've said before that I don't think it's worth it, because the web has been declining as a platform: https://forum.dlang.org/post/unqvdzopebfksnxwhoqn forum.dlang.org
I stumbled over this: http://blog.qt.io/blog/2018/04/23/beta-qt-webassembly-technology-preview/ https://sdtimes.com/webdev/mozillas-webassembly-studio-enters-beta/ I dont want to argue, just throwing that in ;)
I don't know how those links are relevant. Yes, some projects are supporting WebAssembly, but that doesn't mean the web hasn't been declining, so this port likely isn't worth the effort. Nobody is stopping anyone from doing the port though: ldc has some support for even more niche platforms like linux/PowerPC, simply because Kai wanted to do it. I'm just warning people who haven't seen those linked numbers that it likely isn't worth it.
Apr 26
parent "Nick Sabalausky (Abscissa)" <SeeWebsiteToContactMe semitwist.com> writes:
On 04/26/2018 03:11 AM, Joakim wrote:
 
 I don't know how those links are relevant. Yes, some projects are 
 supporting WebAssembly, but that doesn't mean the web hasn't been 
 declining, so this port likely isn't worth the effort.
 
 Nobody is stopping anyone from doing the port though: ldc has some 
 support for even more niche platforms like linux/PowerPC, simply because 
 Kai wanted to do it. I'm just warning people who haven't seen those 
 linked numbers that it likely isn't worth it.
Not disagreeing at all, and not trying to twist anyone's arm, but speaking purely personally, I'd love to see WebAsm/Asm.js support (FWLIW). I'm converting an old Flash-based thing to Unity3D/WebGL right now (still web-based due to factors beyond my control), and (for various reasons) I'd love to sometime build a nice 2D engine in D and use it to move this project to D. Unfortunately, I've checked into GCC and LLVM docs before and GCC/LLVM hacking seems to be beyond me. I'm not making any particular point there. Just chatting, fwiw.
Apr 26
prev sibling parent Radu <void null.pt> writes:
On Monday, 23 April 2018 at 09:18:07 UTC, Suliman wrote:
 What about Webassembly support? Latest LLVM suppport it, so LDC 
 should support also.
Might be interesting for game devs to have webassembly support, but no one pitched in to making it happen. One could start by getting `betterC` mode working and be fully supported on LDC/Webassembly, this will make D/LDC and interesting platform to develop on, and you can use a bunch of C/C++ libs also. Stage 2 is getting a webrutime (with minimal D runtime support) that targets webassembly and its peculiarities, like DOM and related bindings. Implementing `extern(ecmascript)` would also be a nice thing to have. All this needs a champion to make it happen :D
Apr 24
prev sibling next sibling parent Radu <void null.pt> writes:
On Sunday, 22 April 2018 at 15:56:49 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first beta 
 for LDC 1.9. The highlights of this version in a nutshell:

 * Based on D 2.079.1, including new `-i` switch and support for 
 a minimal (d)runtime.
 * Support for LLVM 6, used for all prebuilt packages (except 
 for Win32).
 * `-link-internally` able to (cross-)link Windows, Linux and 
 macOS binaries.
 * Prebuilt Linux and macOS packages now shipping with LTO-able 
 druntime/Phobos.
 * Improved support for MIPS targets and the uClibc runtime 
 library.
 * Various fixes, incl. druntime/Phobos/ldc-jit .dylib issues on 
 macOS.

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

 Thanks to all contributors!
Looks that not all my druntime and phobos PR got in. Is this because they were not included in 2.0.79 mainline release? ATM uClibc is not usable as is, it doesn't even compile because of various missing pieces, bummer :(
Apr 24
prev sibling parent reply Rel <relmail rambler.ru> writes:
On Sunday, 22 April 2018 at 15:56:49 UTC, kinke wrote:
 * `-link-internally` able to (cross-)link Windows, Linux and 
 macOS binaries.
This is nice to hear, but just to make it clear, what steps do I need to take to for example build a Mac OSX binary on Windows or Linux? Can I just download libs from prebuilt LDC for Mac OSX, put them somewhere in my current LDC installation and it will work? I'm also waiting so much for LDC to be independent of MS Visual Studio libs, and ship MinGW libs with the installation or something. I thought you had some troubles getting LLVM to work with MinGW libs, is it still true?
Apr 25
parent Jacob Carlborg <doob me.com> writes:
On Wednesday, 25 April 2018 at 13:36:50 UTC, Rel wrote:

 This is nice to hear, but just to make it clear, what steps do 
 I need to take to for example build a Mac OSX binary on Windows 
 or Linux? Can I just download libs from prebuilt LDC for Mac 
 OSX, put them somewhere in my current LDC installation and it 
 will work?
In theory yes, in practice unfortunately no, see [1]. You would also need the macOS SDK. In short, the LLD linker does not support some magic linker symbols that LDC is dependent on. I've created a Dockerfile that uses LDC to cross-compile targeting macOS. It does not use the LLD linker. Note, the base Docker image pulls the macOS SDK from a Dropbox account. I've compiled this [3] repositories using that image.
 I'm also waiting so much for LDC to be independent of MS Visual 
 Studio libs, and ship MinGW libs with the installation or 
 something. I thought you had some troubles getting LLVM to work 
 with MinGW libs, is it still true?
Apparently the MinGW libraries are too old. LDC requires the libraries from Visual Studio 2015 (I think) or later. [1] https://github.com/ldc-developers/ldc/issues/2662 [2] https://github.com/jacob-carlborg/docker-ldc-darwin/blob/master/Dockerfile [3] https://github.com/jacob-carlborg/d_webkit_test -- /Jacob Carlborg
Apr 26