Benji Smith wrote:
Don wrote:
Lars Ivar Igesund wrote:
Don wrote:
druntime should certainly not become any bigger (in scope), as that
would defeat the purpose of separating the runtime from userspace in
the first place. The topic of common userspace functionality should
be kept separate from the topic of druntime.
I think you are confusing druntime (the project) with the D runtime.
druntime includes the gc as well the runtime, though they are seperate.
I see no reason why including core modules in the druntime project
would destroy the seperation.
Really, this is entirely a question of naming.
core.XXX seems to me to be the perfect namespace, certainly for the
key math modules which I'm most concerned about
(std.math/(tango.math.Math, tango.math.IEEE), and possibly also the
low-level bigint routines. These are all functionality which is
closely tied to the compiler).
Totally agree.
Although the name 'druntime' implies it'll only contain the runtime, I
think it ought to contain all the common functionality that virtually
all applications and libraries will absolutely need: the runtime itself,
gc, TypeInfo, math, containers (including ranges), algorithms, string
processing, date/time, and IO.
After the dsource project was created, someone suggested using the name
'd-core' instead--I think it's more appropriate than 'd-runtime'. That
aside, I personally see the visible portion of the runtime to be roughly
similar to java.lang. Basically, I think it should contain the stuff
that's required for a D app to simply load and run, but anything that's
sufficiently intrinsic to the language or language philosophy is
appropriate as well. In addition to what's already there, I think an
argument could be made for a range definition, essential math routines,
and probably a few other things. But things that are simply commonly
used belong in the standard library.
Without those commonalities, any "compatibility" between Phobos and
Tango will be purely illusory.
True enough. But attempting to include all of the stuff you mentioned
above would require design agreement between the Phobos and Tango folks
on quite a bit in terms of API philosophy.
Whether the commonality is realized within druntime, or within some
other low-level common library (like "dcore"), is immaterial to me. And
actually, I don't really care whether Phobos and Tango have their own
implementations. But there should be an API (interfaces? concepts? some
new template-interface mechanism? doesn't matter.) that both Phobos and
Tango implement, so that library consumers can seamlessly pass low-level
objects between Phobos and Tango dependent libraries.
I agree that this is a fine goal. It just isn't a task I have any
intention of pursuing, personally.
Sean