www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Portable D compiler builds

reply Temtaime <temtaime gmail.com> writes:
Hello !
Glad to announce my D compiler builds.

Currently there's only DMD builds: 64-bit compiler built with LDC 
with MSVC's 2017 runtime, allowing linking your apps with all the 
COFF libraries you have.
It supports both 32-bit(limited due to a bug in lld linker) and 
64-bit apps.

Scripts that are used to make a build is published here with some 
additional info: https://github.com/Temtaime/d_builds
And the builds are going here: https://d.acomirei.ru/

It doesn't require any dependency at all - just download it, 
extract somewhere, add «bin» to PATH and use dmd, dub, dustmite 
from your command prompt without worrying about installing MSVC 
build tools or something else.

Project is in beta state, something may be not working correctly, 
so feel free to report bugs or something else.
Mar 16 2019
parent reply Temtaime <temtaime gmail.com> writes:
Yay, latest stable ldc was added alongside rdmd, ldmd2, dustmite 
and ddemangle tools for both ldc and dmd!
Mar 29 2019
parent reply kinke <noone nowhere.com> writes:
On Friday, 29 March 2019 at 20:40:08 UTC, Temtaime wrote:
 Yay, latest stable ldc was added alongside rdmd, ldmd2, 
 dustmite and ddemangle tools for both ldc and dmd!
It's not quite clear to me what your goals are. Official DMD and LDC packages are portable, don't require any external dependencies either and ship with these tools. Your DMD builds are 64-bit and compiled with LDC, vs. 32-bit and DMD of official builds, so that's an improvement. I downloaded your LDC build and after a quick glance noticed that it's 32-bit (?) and contains * just the x86 and x86_64 LLVM backends (e.g., no support for WebAssembly and dcompute), * a phobos.lib merging both druntime and Phobos (DMD-style, unlike official LDC), * NO debug and LTO versions of druntime/Phobos, * NO dynamicCompile/JIT and compiler-rt libraries (e.g., needed for profiling), * superfluous imports (the internal/hidden gc and rt packages), * NO imports/ldc/gccbuiltins*.di, * NO readme and license files, * NO `-link-defaultlib-shared=false` in the config file, so that linking DLLs with `-shared` probably fails, * the static MS libs which cannot be officially redistributed (license...) but allow people to generate binaries not depending on the MS runtime DLLs. Once your goals are clearer, there may be much simpler solutions, e.g., augmenting the official LDC builds by the MS libs instead of the MinGW-based ones.
Mar 30 2019
parent reply Temtaime <temtaime gmail.com> writes:
On Saturday, 30 March 2019 at 14:18:05 UTC, kinke wrote:
 On Friday, 29 March 2019 at 20:40:08 UTC, Temtaime wrote:
 Yay, latest stable ldc was added alongside rdmd, ldmd2, 
 dustmite and ddemangle tools for both ldc and dmd!
It's not quite clear to me what your goals are. Official DMD and LDC packages are portable, don't require any external dependencies either and ship with these tools. Your DMD builds are 64-bit and compiled with LDC, vs. 32-bit and DMD of official builds, so that's an improvement. I downloaded your LDC build and after a quick glance noticed that it's 32-bit (?) and contains * just the x86 and x86_64 LLVM backends (e.g., no support for WebAssembly and dcompute), * a phobos.lib merging both druntime and Phobos (DMD-style, unlike official LDC), * NO debug and LTO versions of druntime/Phobos, * NO dynamicCompile/JIT and compiler-rt libraries (e.g., needed for profiling), * superfluous imports (the internal/hidden gc and rt packages), * NO imports/ldc/gccbuiltins*.di, * NO readme and license files, * NO `-link-defaultlib-shared=false` in the config file, so that linking DLLs with `-shared` probably fails, * the static MS libs which cannot be officially redistributed (license...) but allow people to generate binaries not depending on the MS runtime DLLs. Once your goals are clearer, there may be much simpler solutions, e.g., augmenting the official LDC builds by the MS libs instead of the MinGW-based ones.
Hi, thanks for a reply. The goal is to provide a complete solution to build an ordinary d app without having visual studio installed. Static libs for imports are taken from a pelles c compiler and can be redistributed, i'll add a notice and license files. Dmd for now can only work with omf libs and link only 32 bit apps, ldc - with mingw libs. Many packages on code.dlang.org uses coff format, so at least for me other variants are not acceptable. LTO version of phobos/runtime is on the list with some other features.
Mar 30 2019
parent reply kinke <noone nowhere.com> writes:
On Saturday, 30 March 2019 at 17:00:12 UTC, Temtaime wrote:
 The goal is to provide a complete solution to build an ordinary 
 d app without having visual studio installed.
 [...]
 Dmd for now can only work with omf libs and link only 32 bit 
 apps, ldc - with mingw libs.
Erm nope, DMD works fine with COFF libs (-m32mscoff) and 64-bit (-m64) too; it's been shipping with the LLD linker and MinGW-based libs for a while, LDC followed suite but uses different MinGW-based libs. The only drawback is that these libs require a VC runtime installation for *running* generated binaries (but no MinGW). But Visual Studio or the Build Tools are purely optional for both compilers, and mostly interesting to link against the static MS libs to prevent the MS DLL dependencies.
 Static libs for imports are taken from a pelles c compiler and 
 can be redistributed, i'll add a notice and license files.
Okay that's *very* interesting, and I highly doubt they are allowed to do so. See recent https://issues.dlang.org/show_bug.cgi?id=19760.
Mar 30 2019
parent Temtaime <temtaime gmail.com> writes:
On Saturday, 30 March 2019 at 17:38:35 UTC, kinke wrote:
 On Saturday, 30 March 2019 at 17:00:12 UTC, Temtaime wrote:
 The goal is to provide a complete solution to build an 
 ordinary d app without having visual studio installed.
 [...]
 Dmd for now can only work with omf libs and link only 32 bit 
 apps, ldc - with mingw libs.
Erm nope, DMD works fine with COFF libs (-m32mscoff) and 64-bit (-m64) too; it's been shipping with the LLD linker and MinGW-based libs for a while, LDC followed suite but uses different MinGW-based libs. The only drawback is that these libs require a VC runtime installation for *running* generated binaries (but no MinGW). But Visual Studio or the Build Tools are purely optional for both compilers, and mostly interesting to link against the static MS libs to prevent the MS DLL dependencies.
 Static libs for imports are taken from a pelles c compiler and 
 can be redistributed, i'll add a notice and license files.
Okay that's *very* interesting, and I highly doubt they are allowed to do so. See recent https://issues.dlang.org/show_bug.cgi?id=19760.
Seems that i was sleeping for too long and missed the moment when they both migrated to mingw libs. Okay, then there's really no advantages and rights for distributing this project. I just made those builds for myself for years and decided to share it. Thanks for a notion and the link.
Mar 31 2019