Phobos Wish List/Next in Review Queue?

Johannes Pfau spam at example.com
Sun Nov 20 02:48:48 PST 2011


dsimcha wrote:
>Now that we've got a lot of contributors to Phobos and many projects
>in the works, I decided to start a thread to help us make a rough plan
>for Phobos's short-to-medium term development.  There are three goals
>here:
>
>1.  Determine what's next in the review queue after std.csv (voting on 
>std.csv ends tonight, so **please vote**).
>
>2.  Come up with a wish list of high-priority modules that Phobos is 
>missing that would make D a substantially more attractive language
>than it is now.
>
>3.  Figure out who's already working on what from the wish list and
>what bottlenecks, if any, are getting in the way and what can be done
>about them.
>
>The following is the wish list as I see it.  Please suggest additions 
>and correct any errors, as this is mostly off the top of my head.
>Also, status updates if you're working on any of these and anything 
>substantial has changed would be appreciated.
>
>*  Some higher level networking support, such as HTTP, FTP, etc.
>(Jonas Drewsen's CURL wrapper handles a lot of this and may be ready
>for a second round of review.)
>
>*  Serialization.  (Jacob Carolberg's Orange library might be a good 
>candidate.  IIRC he said it's close to ready for review.)
>
>*  Encryption and hashing.  (This is more an implementation problem
>than a design problem and AFAIK noone is working on it.)
>
>*  Containers.  (AFAIK noone is working on this.  It's tough to get 
>started because, despite lots of discussion at various times on this 
>forum, noone seems to really know what they want.  Since the
>containers in question are well-known, it's much more a design problem
>than an implementation problem.)
>
>*  Allocators.  (I think Phobos desperately needs a segmented 
>stack/region based allocator and I've written one.  I've also tried to 
>define a generic allocator API, mostly following Andrei's suggestions, 
>but I'll admit that I didn't really know what I was doing for the 
>general API.  Andrei has suggested that allocators should have 
>real-world testing on containers before being included in Phobos. 
>Therefore, containers block allocators and if the same person doesn't 
>write both, there will be a lot of communication overhead to make sure 
>the designs are in sync.)
>
>*  Streams.  (Another item where the bottleneck is mostly at the
>design level and people not really knowing what they want.)
>
>*  Compression/archiving.  (Opening standard compressed/archived file 
>formats needs to just work.  This includes at least zip, gzip, tar and 
>bzip2.  Of course, zip already is available and gzip is supported by
>the zlib module but with a crufty C API.  At least gzip and bzip2,
>which are stream-based as opposed to file-based, should be handled via
>streams, which means that streams block compression/archiving.  Also,
>since tar and zip are both file based, they should probably be handled
>by the same API, which might mean deprecating std.zip and rewriting
>it.)

AFAIK almost all compression (and encryption) algorithms work like
streams. The directory structure is often simply added on top of the
streaming functionality (at least true for all .tar.* formats).

BTW: The unfinished stream API blocks lots of projects: Encryption,
Compression, the curl wrapper could be integrated with streams, http
servers and almost everything else related to I/O.

>
>*  An improved std.xml.  (I think Thomas Sowinski is working on a 
>replacement, but I haven't seen any updates in a long time.)
>
>*  Matrices and linear algebra.  (Cristi Cobzarenco's GSoC project is
>a good starting point but it needs polish.  I've been in contact with
>him occasionally since GSoC ended and he indicated that he wants to
>get back to working on it but doesn't have time.  I've contributed to
>it sparingly, but find it difficult because I haven't gotten around to 
>familiarizing myself with the implementation details yet, and it's
>hard to get into a project that complex with a few hours a week as
>opposed to focusing full time on it.)
>
>*  std.database.  (Apparently Steve Teale is working on this.  This is
>a large, complicated project because we're trying to define a common
>API for a variety of RDBMSs.  Again, it's more a design problem than
>an implementation problem.)
>
>*  Better support for creating processes/new std.process.  (Lars 
>Kyllingstad wrote a replacement candidate for Posix and Steve 
>Schveighoffer ported it to Windows, but issues with the DMC runtime 
>prevent it from working on Windows.)
>
>*  Parallel algorithms.  (I've implemented a decent amount of these in 
>my std.parallel_algorithm Github project, but I've become somewhat 
>frustrated and unmotivated to finish this project because so many of
>the relevant algorithms seem memory bandwidth bound and aren't
>substantially faster when parallelized than when run serially.)

Inter-process communication, but as we have thrift now, that might be
ok. (Extending std.concurrency message passing to interprocess
communication with a low overhead serializer like messagepack would
still be great though)

Logging: AFAIK the new log module should be almost ready. I already
used it a few times, but you have to a patch druntime to use
it.

High performance IO: A reactor / proactor framework

A replacement for std.json

>
>After writing this, the general pattern I notice is that lots of stuff 
>is blocked by design, not implementation.  In a lot of cases people 
>don't really know what they want and analysis paralysis results.


-- 
Johannes Pfau



More information about the Digitalmars-d mailing list