It makes me sick!

Jesse Phillips via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jul 27 12:53:10 PDT 2017


On Thursday, 27 July 2017 at 03:34:19 UTC, FoxyBrown wrote:
> Knowing that every time I upgrade to the latest "official" D 
> compiler I run in to trouble:
>
> I recompiled gtkD with the new compiler, same result.  My code 
> was working before the upgrade just fine and I did not change 
> anything.

I've had to delete my previous install at least 2 times before. 
It is an infrequent headache I hit because I'm not following 
appropriate install steps. I cannot expect upstream to support a 
DMD folder which has additional files from what they have 
provided.

Here is my attempt to explain the problem.

* std/datetime.d has a different mangled name than 
std/datetime/package.d.
* The phobos.lib contains the std.datetime.package module and no 
longer contains the std.datetime module.
* When the compiler is reading your code it sees imports for 
std.datetime and looks at the import location 
/install/directory/dmd2/src/std and it writes a reference to the 
std/datetime.d file.
* The linker takes over, loads up phobos.lib and barfs since the 
referenced symbol was not compiled into your obj file nor the 
released phobos.lib.

More recently the headache I've been hitting with upgrades is 
improvements to @safe and such. The bug fixes around this cause 
libraries I'm using to fail compilation. Even this isn't so bad, 
but the library that files is a dependent of a dub package I'm 
using. This means I have to wait for the dependent package to 
update and release followed by the dub package I'm actually 
referencing. So even if I create the needed patches, I have to 
wait at each step for the author to merge and tag their release. 
(or create a branch of the project and throw it in dub so I can 
control all the updates)


More information about the Digitalmars-d-learn mailing list