Finalizing D2
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri May 22 22:25:49 PDT 2009
Jason House wrote:
> Andrei Alexandrescu Wrote:
>
>> Jason House wrote:
>>> BCS wrote:
>>>
>>>> Hello Jason,
>>>>
>>>>> Should the final freezing of D2 be delayed until major D1 libraries
>>>>> port to D2? I'm mostly thinking of Tango, but I bet there are others.
>>>>> It may even be good if major libraries could use a Phobos-compatible
>>>>> license and become part of the releases by digital mars.
>>>> Maybe it should be declared "done" as in it's got everything that Walter,
>>>> Andrei, Barotsz and friends what in it, but it might be changed if the Lib
>>>> writers as for some tweaks. Sort of a "feature" freaze.
>>> Yes!
>>>
>>> "Walter, Andrei, Bartosz, and friends": If you're reading this, can you shed
>>> some light on what's happening before D2 is declared stable? And when?
>>>
>> I've submitted the first three chapters to Rough Cuts. I will make
>> progress towards writing up until the end of August. The last chapter
>> concerns concurrency and is the fuzziest one.
>
> Ok, so pen down in three months?
Yah.
>> Thank you for your initiative to enlist help from the community. There's
>> a lot of very visible help already happening: there's been a sharp
>> increase in bug reports and patches recently. Walter and I are still
>> scratching our head over that (it's not like dmd got much crappier
>> overnight). I can only infer that more people have started using more of D.
>
> The increase is interesting. Out of curiosity, is the increase dominantly for the backend? I wonder if having a sense of D2 stabilizing is increasing usage of D2 overall.
Walter has no specific statistics.
>> I'd be thrilled to add more stuff to Phobos. Stuff can be done with
>> ranges that's almost indistinguishable from poetry. But ranges aren't
>> everything, Georg :o). I think Shin's BlackHole and WhiteHole slammed
>> open a door to a world of amazing possibilities. Things like
>> compile-time reflection, run-time reflection, and dynamic loading are
>> very hot and the possibilities are huge. Among other things, Variant can
>> with relative ease implement a function var.call("fun", arg1, arg2) that
>> forwards everything dynamically to a member function of the embedded object.
>
> What do you / others consider the weakest / missing parts of Phobos?
Wow. Where should I start. Let me go down the list of modules and share
a few thoughts.
* std.array: we need to make a decision about differentiating arrays
from slices.
* std.base64: doesn't deserve a separate module
* std.bind: eliminate?
* std.bitmanip: define a range for BitArray and eliminate opApply. Add
opSlice.
* std.vendor: should this go in core?
* std.complex: IMPLEMENT. Eliminate any trace of built-in complex.
* std.conv: define operations to stream data out and in in binary and
text formats.
* std.cover: another little module that should be merged somewhere
* std.date: unnecessarily clunky and low-level. Also, somehow Walter
thinks that std.dateparse has absolutely nothing to do with date.
* std.demangle: another small module. Should be merged with e.g. other
compiler-specific stuff.
* std.encoding, std.utf: we need a massive overhaul of all
encoding-specific stuff. Massive. Epic. The current pile of...
functionality makes the simplest stuff look like rocket surgery.
* std.md5: we should add more such encryption devices.
* std.metastrings: I hate the name. Merge into std.string using ctfe
* std.mmfile: integrate with the garbage collector. It should be there.
* std.outbuffer: I think this shouldn't be a class and shouldn't have
that name.
* std.outofmemory: why???
* std.process: add pipe() for Windows. Actually that should be in stdio.
* std.regex, std.regexp: merge and finalize.
* std.signals: I don't know much. A review wouldn't hurt.
* std.socket, std.socketstream: We need a real networking library.
* std.stdio: implement readf and various I/O specific ranges
* std.cstream, std.stream: eliminate.
* std.string: arrange so there's no overlapping/conflict with
std.algorithm. Implement bidir range for reading strings correctly
(already done that).
* std.system: merge somewhere
* std.thread: replace
* std.variant: add dynamic method invocation capabilities
* std.xml: replace with something that moves faster than molasses.
* std.zip: rewrite
Well there's much other stuff I'm sure but I just dumped what came to
mind when taking a look.
Andrei
More information about the Digitalmars-d
mailing list