LWN.net Logo

Quotes of the week

Normal versioning problems that we just take for granted in C, such as allowing the coexistence of two versions of the same library with different ABIs on the system at the same time without doing the equivalent of static linking, vary between ridiculously difficult and completely impossible in every other programming language that I'm aware of (with the partial exception of C++ where it is possible to use the same facilities as C, just considerably more difficult).

In fact, most new languages seem to be *regressing* here. Both Perl and Python were already fairly bad at this, Java bailed on the problem and shoved it under the carpet of a version of static linking, and now Go is even worse than they are and is explicitly embracing static linking. Sigh.

Russ Allbery

But still, it's hard not to be frustrated when it feels like people with a significant interest in the future of Perl 5-like languages are told that all future version numbers belong to a project that has significantly fewer users, developers, and mindshare than the existing Perl 5 language (and community).
Dave Rolsky

Yet another grand plan for the architecture is no better than what we have, if it isn't executed. This isn't an academic exercise, we don't get points for thinking about cool things.
Allison Randal


(Log in to post comments)

Quotes of the week

Posted Feb 16, 2013 14:53 UTC (Sat) by smitty_one_each (subscriber, #28989) [Link]

From the Russ Allbery link:
>Everyone could stand to learn something from the REST and web services
>community, where ABI versioning is a well-known and widely accepted
>problem that regularly prompts considerable discussion and careful thought
>and a variety of useful proposals for addressing it with different
>tradeoffs.

Huh? I had thought Application Binary Interface referred to RAM layout of executable images and data, whereas web services is all UTF-8 and involves some mangling of URLs, XML and/or JSON.
That is, ABIs are quite low level, and REST/web services are much higher-level in terms of abstraction.

I may be missing something here, and am keenly interested in figuring out what that might be.

Quotes of the week

Posted Feb 16, 2013 18:39 UTC (Sat) by ScottMinster (subscriber, #67541) [Link]

I think the gist is that those REST services have to worry about their interface and not breaking their clients when they change. True, it may not be a strictly binary interface, but a service that changes a parameter name or interpretation could cause a lot of clients to break.

It is kind of surprising that so many dynamic languages that allow for importing modules do not seem to version those modules. It's hard to shoehorn in after the fact, but putting some sort of versioning (even just a simple number like in shared libraries) probably wouldn't be too hard to do initially.

Quotes of the week

Posted Feb 16, 2013 19:04 UTC (Sat) by smitty_one_each (subscriber, #28989) [Link]

>It is kind of surprising that so many dynamic languages that allow for importing modules do not seem to version those modules.

The languages themselves do not deal with any such 'feature'. Yet note Ruby gems, Python eggs, Java's Maven .pom files, and then your various packaging managers like Yum, Apt, or even Gentoo: the metadata have got to be managed somewhere, and it's a dirty dependency graph problem.

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds