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