On Sat, May 23, 2009 at 7:25 AM, Andrei Alexandrescu <[email protected]> wrote: > 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. >
How do you plan to handle ABI compatibility with C if complex becomes a library type? Drop it? > * 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 >
