November 28, 2007
BCS wrote:
> 
> Short version is it would be a pain. If you can build DMD with stuff that won't require people to update it would save a lot of effort for a bunch of people.

I had to downgrade to get DMD working on Linux before this release, so it's a matter of perspective.


Sean
November 28, 2007

Tom S wrote:
> Walter Bright wrote:
>> New const/invariant in 2.007!
>>
>> http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.024.zip
>>
>> http://www.digitalmars.com/d/changelog.html http://ftp.digitalmars.com/dmd.2.008.zip
> 
> Awesome! Thanks Walter :)
> 
> BTW, 1.024 is the sexiest version number so far ;D

Happy Version (2**10)/(10**3)!

	-- Daniel
November 28, 2007
Sean Kelly wrote:
> BCS wrote:
>>
>> Short version is it would be a pain. If you can build DMD with stuff that won't require people to update it would save a lot of effort for a bunch of people.
> 
> I had to downgrade to get DMD working on Linux before this release, so it's a matter of perspective.

Hm, I take it back.  I don't have glibc 2.4 on my system after all.


Sean
November 28, 2007
BCS wrote:
> Laziness/incompetence mostly. Actually it has no Internet connection so I would have to play a few fun games to get anything done.
> 
> Come to think of it though, I do have 2 blank hard drive in it that I could play with....
> 
> Short version is it would be a pain. If you can build DMD with stuff that won't require people to update it would save a lot of effort for a bunch of people.

When I built dmd with the old library, then people with the modern ubuntu had to go find the old C shared library and install that. So somebody will be inconvenienced. I think it's better to make things painless for people using the latest linux.
November 28, 2007
Walter Bright wrote:

> I think it's better to make things painless for people using the latest linux.


with modifications (s/the latest/reasonably recent/) I'll grant the point.

I don't think catering to the bleeding edge is a good idea (I /don't/ think that's what you are saying). I'd personally go with the oldest version that will work with up to date systems.
November 28, 2007
Walter Bright Wrote:

> korogu wrote:
> > Version 2.007 worked fine, but trying to run 2.008 I got :
> > 
> > dmd: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by dmd)
> > 
> > How can i correct that :-s ?
> > 
> 
> This version of dmd was compiled with the latest ubuntu, which probably uses the latest C runtime library. So can you install the latest C shared runtime library?

Is it the package called "libc6" ? I updated to the latest available version, 2.3.6-0ubuntu20.5 Same error message ...
November 28, 2007
On Wed, 28 Nov 2007, Walter Bright wrote:

> BCS wrote:
> > Laziness/incompetence mostly. Actually it has no Internet connection so I would have to play a few fun games to get anything done.
> > 
> > Come to think of it though, I do have 2 blank hard drive in it that I could play with....
> > 
> > Short version is it would be a pain. If you can build DMD with stuff that won't require people to update it would save a lot of effort for a bunch of people.
> 
> When I built dmd with the old library, then people with the modern ubuntu had to go find the old C shared library and install that. So somebody will be inconvenienced. I think it's better to make things painless for people using the latest linux.

Careful.. details here are important.

The past releases have needed an older version of libstdc++, the c++ runtime (primarily stl).  It's easy to have multiple versions of libstdc++ installed and all distributions package several of them for just this situation.

This current release apparantly needs libc 2.4 or greater.  libc tends to be great at backwards compatibility (ie, running apps built against 2.2 can still run against installations with 2.4), but the reverse isn't true. It's either very hard or practically impossible to have multiple versions of libc installed and upgrading it is usually only done during whole os updates.  As a case in point, would you upgrade your old box's libc in isolation?  Probably not.

Either way, this change in the 1.x series seems inappropriate.  It might be ok for 2.x, though will cost some number of adopters to put it off for a later date.

Later,
Brad
November 28, 2007
Walter Bright Wrote:

> korogu wrote:
> > Version 2.007 worked fine, but trying to run 2.008 I got :
> > 
> > dmd: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by dmd)
> > 
> > How can i correct that :-s ?
> > 
> 
> This versin of dmd was compiled with the latest ubuntu, which probably uses the latest C runtime library. So can you install the latest C shared runtime library?

It looks like the only symbol requiring >=glibc-2.4 in the binary is

[dittrich@despina] readelf -s ./dmd.bin | grep GLIBC_2.4
    69: 00000000    70 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@GLIBC_2.4 (10)

which probably means that you used "-fstack-protector" or sth similar to compile the dmd source. Without it, the requirement for a newer glibc may actually go away. Otherwise, dmd.bin could also be distributed as a static binary at the cost of a (much) larger filesize.

Markus

November 29, 2007
I have noticed that the status of some bugs listed in the changelog of the release are not marked as fixed in bugzilla.

g.

November 29, 2007
On Wed, 28 Nov 2007, Markus Dittrich wrote:

> Walter Bright Wrote:
> 
> > korogu wrote:
> > > Version 2.007 worked fine, but trying to run 2.008 I got :
> > > 
> > > dmd: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by dmd)
> > > 
> > > How can i correct that :-s ?
> > > 
> > 
> > This versin of dmd was compiled with the latest ubuntu, which probably uses the latest C runtime library. So can you install the latest C shared runtime library?
> 
> It looks like the only symbol requiring >=glibc-2.4 in the binary is
> 
> [dittrich@despina] readelf -s ./dmd.bin | grep GLIBC_2.4
>     69: 00000000    70 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@GLIBC_2.4 (10)
> 
> which probably means that you used "-fstack-protector" or sth similar to compile the dmd source. Without it, the requirement for a newer glibc may actually go away. Otherwise, dmd.bin could also be distributed as a static binary at the cost of a (much) larger filesize.
> 
> Markus

You can't link libc statically (for glibc at least, other os' do allow it) any more.  I forget the last version that supported it, but it might well be prior to 2.4.  Either way, it's not considered supported to build against version X of glibc and run it against any version < X, only >= even if it happens to not link against a versioned symbol (not all symbols are versioned).

Later,
Brad