The Death of D. (Was Tango vs Phobos)

Steven Schveighoffer schveiguy at yahoo.com
Fri Aug 15 07:37:33 PDT 2008


"Sean Kelly" <sean at invisibleduck.org> wrote in message 
news:g8347r$201b$1 at digitalmars.com...
> Walter Bright wrote:
>> Sean Kelly wrote:
>>>> What specifically I'd like from the Tango team is explicit permission 
>>>> for the Phobos team to go over the Tango code and be able to copy/use 
>>>> whatever portions of it are necessary to get the two libraries to have 
>>>> a compatible core, and to relicense those parts under the corresponding 
>>>> Phobos license.
>>>
>>> I think this is arguably a reasonable first step, but working towards a 
>>> compatible core still means two separate cores, which means not being 
>>> able to use Tango and Phobos together in the same app.  So I'll admit to 
>>> not completely understanding the reasoning behind this approach, but 
>>> it's the only option so I'm happy to comply.  Frankly, I don't want to 
>>> be stuck maintaining the Tango runtime from now until doomsday anyway 
>>> :-)
>>
>> If the cores are compatible at the API level, then one should be able to 
>> mix and match Tango/Phobos user level modules.
>
> I think it will turn out to be more complicated than that.  The runtime 
> contains user-visible code as well as the compiler support code and GC: 
> exception definitions, the thread code, etc.  And Phobos vs. Tango have 
> different exception hierarchies, at the very least.

As far as threads, I agree.  One must be chosen.

As far as exceptions, yes, one base must be chosen, and the exceptions put 
forth by the compiler must be chosen, but higher level exceptions do not 
have to be part of the runtime.  For example, in Tango, socket exceptions 
are in the same module as array bound exception (which is needed by the 
compiler).  These should be separated if we are to have a common runtime.

And in that case, I think you can draw a clear line: what is needed to 
compile programs, and what is needed to start the runtime.  Everything else 
should be standard library code, and should be relegated to whatever you 
fancy as the runtime.

I propose these essential classes and modules be moved into a separate 
package, like std.runtime.  So you would have std.runtime.thread, 
std.runtime.exception, etc.  Or whatever.  Then the line is even clearer.

-Steve 





More information about the Digitalmars-d mailing list