Phobos/Tango Unification Plans
Lars Ivar Igesund
larsivar at igesund.net
Sat Oct 18 08:13:01 PDT 2008
Bruno Medeiros wrote:
> Sean Kelly wrote:
>> Bruno Medeiros wrote:
>>> Don wrote:
>>>> Benji Smith wrote:
>>>>> I was just looking through bearophile's library (which is based on
>>>>> Phobos) and thinking about how it's too bad that I can't use it
>>>>> because my code is all based on Tango.
>>>>>
>>>>> I know there are plans currently in the works to implement a
>>>>> compatible runtime layer, via Sean's druntime project. And it'll be
>>>>> a breath of fresh air to get rid of the basic incompatibilities in
>>>>> the two runtimes.
>>>>>
>>>>> But if that's all that happens, it'll still leave an undesirable
>>>>> situation, since all the other userland stuff will be incompatible.
>>>>>
>>>>> Eventually, any significantly complex project is likely to have some
>>>>> dependent libraries built on top of both Phobos and Tango. At the
>>>>> very least, string-processing routines from both libraries will get
>>>>> compiled into the final executable.
>>>>>
>>>>> Not only will that result in duplication of functionality (and code
>>>>> bloat), but it'll also mean a bunch of bit-twiddling whenever
>>>>> sending a Tango type into a Phobos-dependent library function (and
>>>>> vice versa).
>>>>>
>>>>> Are there any plans in the works to mitigate that problem? Like,
>>>>> perhaps, negotiating a common API so that at least the names and
>>>>> argument types are the same in both libraries?
>>>>>
>>>>> I'm sure the two libraries will always include different subsets of
>>>>> functionality, but whenever they implement the same basic features,
>>>>> it'd be great if they used a compatible API.
>>>>>
>>>>> --benji
>>>>
>>>>
>>>> That could have some difficult aspects, but here's an uncomplicated
>>>> second step: The math libraries for Tango and Phobos aren't merely
>>>> compatible, they are THE SAME! They are a cut-and-paste of each
>>>> other, with a couple of trivial name changes.
>>>> There are no licensing issues or personality clashes to worry about
>>>> -- I've written most of both of them. They have no dependencies on
>>>> anything else in either Phobos or Tango. I have write access to
>>>> repositories of both Phobos and Tango.
>>>> YET -- there are two bodies of code! This is absolutely ridiculous,
>>>> and it's driving me mad.
>>>>
>>>> How can we turn this into ONE body of code?
>>>> It will only be possible if there is a namespace which is present in
>>>> both Tango and Phobos. There are exactly three ways in which this can
>>>> be done:
>>>> Either
>>>> (1) Tango needs to include part of the std namespace,
>>>> (2) Phobos needs to include part of the tango namespace, or
>>>> (3) Both need to start including a new namespace which is common to
>>>> both.
>>>>
>>>> Of these options, I think (2) is the least natural. For (1) to work,
>>>> the modules invoved would need to be clearly designated as common.
>>>
>>> I don't get it. Why is it that "For (1) to work, the modules invoved
>>> would need to be clearly designated as common." ? Since Tango will
>>> become compatible with Phobos (same runtime), can't Tango just
>>> use/depend-on some of Phobos functionality?
>>
>> I believe Tango aims to continue being separately distributable from
>> Phobos, so this isn't likely to happen. Another option would be for the
>> math package to live in a separate project that's bundled with both
>> libraries, though I don't know how either team feels about the logistics
>> of such an arrangement.
>>
>>
>> Sean
>
> But will it be distributed as a normal library intended to be run on a
> DMD install, or will it still be distributed as a modified DMD
> installation, as it is now? If so, why? I thought you had to modify the
> DMD installation only because the D runtime was not compatible.
Although that may be a reason, the real reason is to make it a onestop
thing - you don't have to download two packages to get what you need.
--
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango
More information about the Digitalmars-d
mailing list