www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Building phobos GDC

reply Rufus Smith <RufusSmith indi.com> writes:
Trying to compile code that uses GDC, had to import phobos files 
from dmd in to project since they are not in the GDC's phobo 
lib(the core.sys.windows stuff).

Almost all the errors are related to stuff like

PALETTEENTRY* peNew() return { return _peNew.ptr; }


Does that even make sense?
Jul 22 2016
next sibling parent Lodovico Giaretta <lodovico giaretart.net> writes:
On Friday, 22 July 2016 at 18:30:13 UTC, Rufus Smith wrote:
 Trying to compile code that uses GDC, had to import phobos 
 files from dmd in to project since they are not in the GDC's 
 phobo lib(the core.sys.windows stuff).

 Almost all the errors are related to stuff like

 PALETTEENTRY* peNew() return { return _peNew.ptr; }


 Does that even make sense?
The peculiarity of this code is that it uses DIP 25. I don't know if GDC supports it, nor if you need some compiler switch. In DMD you need the -dip25 switch. For more infos on DIP 25: https://wiki.dlang.org/DIP25
Jul 22 2016
prev sibling parent reply Lodovico Giaretta <lodovico giaretart.net> writes:
On Friday, 22 July 2016 at 18:30:13 UTC, Rufus Smith wrote:
 Trying to compile code that uses GDC, had to import phobos 
 files from dmd in to project since they are not in the GDC's 
 phobo lib(the core.sys.windows stuff).

 Almost all the errors are related to stuff like

 PALETTEENTRY* peNew() return { return _peNew.ptr; }


 Does that even make sense?
I'll add that, in general, it's a bad idea to mix the libraries of the various compilers. In fact, the library has the same release cycle as the frontend, and is specific to the frontend version it comes with. GDC is several frontend versions behind DMD, so GDC cannot support the new features / characteristics of the recent DMD libraries. You should always use a Phobos version as old as the frontend of the compiler you're using.
Jul 22 2016
parent reply Rufus Smith <RufusSmith indi.com> writes:
On Friday, 22 July 2016 at 19:52:59 UTC, Lodovico Giaretta wrote:
 On Friday, 22 July 2016 at 18:30:13 UTC, Rufus Smith wrote:
 Trying to compile code that uses GDC, had to import phobos 
 files from dmd in to project since they are not in the GDC's 
 phobo lib(the core.sys.windows stuff).

 Almost all the errors are related to stuff like

 PALETTEENTRY* peNew() return { return _peNew.ptr; }


 Does that even make sense?
I'll add that, in general, it's a bad idea to mix the libraries of the various compilers. In fact, the library has the same release cycle as the frontend, and is specific to the frontend version it comes with. GDC is several frontend versions behind DMD, so GDC cannot support the new features / characteristics of the recent DMD libraries. You should always use a Phobos version as old as the frontend of the compiler you're using.
I don't agree with this. The versions are too far out of sync. It is better to test the different versions together because they are not consistent. As I yet I can neither use GDC or LDC because they don't compile the code that works with DMD. This is a problem with those compilers. If one could guarantee that the oldest compiler was always compatible, eventually(reasonably), with the newest one, it would be a different story. But bugs creep in. I'd rather work with the reference compiler, the actual one the language is based off of, rather than work with one that is not even guaranteed to be maintained properly. With dmd, I know exactly what I'm getting and I only bother with the other compilers due to performance, which is not priority when developing. Hence, I hope that the other compilers are up to speed once I am finished with developing. This is a risk, but no more than expecting those compilers to eventually be updated. Given that the maintenance of LDC and GDC are rather low compared to DMD, I'd rather stick with DMD.
Jul 22 2016
parent Lodovico Giaretta <lodovico giaretart.net> writes:
On Friday, 22 July 2016 at 20:26:50 UTC, Rufus Smith wrote:
 On Friday, 22 July 2016 at 19:52:59 UTC, Lodovico Giaretta 
 wrote:
 On Friday, 22 July 2016 at 18:30:13 UTC, Rufus Smith wrote:
 Trying to compile code that uses GDC, had to import phobos 
 files from dmd in to project since they are not in the GDC's 
 phobo lib(the core.sys.windows stuff).

 Almost all the errors are related to stuff like

 PALETTEENTRY* peNew() return { return _peNew.ptr; }


 Does that even make sense?
I'll add that, in general, it's a bad idea to mix the libraries of the various compilers. In fact, the library has the same release cycle as the frontend, and is specific to the frontend version it comes with. GDC is several frontend versions behind DMD, so GDC cannot support the new features / characteristics of the recent DMD libraries. You should always use a Phobos version as old as the frontend of the compiler you're using.
I don't agree with this. The versions are too far out of sync. It is better to test the different versions together because they are not consistent. As I yet I can neither use GDC or LDC because they don't compile the code that works with DMD. This is a problem with those compilers. If one could guarantee that the oldest compiler was always compatible, eventually(reasonably), with the newest one, it would be a different story. But bugs creep in. I'd rather work with the reference compiler, the actual one the language is based off of, rather than work with one that is not even guaranteed to be maintained properly. With dmd, I know exactly what I'm getting and I only bother with the other compilers due to performance, which is not priority when developing. Hence, I hope that the other compilers are up to speed once I am finished with developing. This is a risk, but no more than expecting those compilers to eventually be updated. Given that the maintenance of LDC and GDC are rather low compared to DMD, I'd rather stick with DMD.
LDC is fairly up to date. In fact, it recently shipped an alpha version with support for the 2.071 frontend, while DMD 2.072 is still in beta. So, not that bad, just one version behind. I started a project a couple months ago with DMD 2.071. I'm still working on it, and now I can also use LDC. The real problem is GDC, which apparently is currently at 2.066.
Jul 22 2016