Last update July 24, 2009

Phobos To Do

This page is for tracking user-feedback about bugs in Phobos or specific tasks to perform to improve the standard library (which includes all parts of Phobos except those in the internal package). If you wish to try to do something about the bug or task please put your name after the item. Remove the item after the release of dmd that contains the fix. A bug is an obvious wrong answer or agreed upon design flaw (when in doubt post the newsgroups asking if something is a bug or not). A task is an agreed upon activity to improve Phobos preferably of small scope.

If you do finish an item please add a unittest if possible to prevent regressions and update the documentation if the change is user-visible.

Table of contents of this page
General Phobos   

General Phobos    

  • several unittests fail on clean build - identify and put in module-specific bug sections
  • rationalize copyrights and licenses in Phobos files (see Phobos License Issues)
  • update html doc (write documentation in DDoc format) - identify and add to specific module section
  • rationalize Exception vs Error naming convention and implement
  • identify name clashes and consider renaming some functions
  • scan newsgroups and identify existing bug and task reports
  • better networking library
  • containers
  • just a little linear algebra basics (i.e. well-defined storage that would allow us to interface with high-performance libraries)
  • at least some essentials for compile-time introspection (Shin, I'm still working on integrating WhiteHole? and BlackHole?; I want to expand your support function into a better fleshed and more general functionality)
  • a few functions here and there, e.g. readf
  • a complete rewrite of std.xml which is currently so slow it's not even funny
  • of course last but not least concurrency support
  • some more generic types a la std.typecons
  • flesh out std.complex which is to supplant the dying complex built-in type
-- Andrei Alexandres


Appears to be broken on OS X, under dmd 2.026 (alpha).

This routine prints out the first item or two, then prints out garbage, on OS X 10.5.

    foreach(DirEntry? e; dirEntries(".", SpanMode?.shallow))
        writeln(, " ", e.size);

The problem is that struct_stat64 does not match the actual struct stat64 on Darwin. This causes the stack to be overwritten by the stat64() call (and also results in nonsensical stat values).    

  • update doc to describe the role of readBlock and writeBlock (BenHinkle)
  • update doc to remove stdin sample code (BenHinkle)
  • proposal: add OutBuffer routines to Stream (BenHinkle)    

  • add non-US date formats (see Phobos Non-US Date)
  • fix various functions, including *From* and Make*:
    • to stop abusing d_time, instead using a more sensible type where d_time is inappropriate ( NG:digitalmars.D.bugs/2365)
    • to conform to naming conventions (camelCase), and make the old names deprecated aliases
  • once this is done, get *FromTime and make* functions documented


  • Decide if "i" is required at the end of strings passed toIReal(), etc, and enable those functions.


  • Replace with something nice


  • deprecate std.math2, which has copyright problems and several bugs. From DMD 0.143 all its useful functions are in Phobos.
  • add functions for complex numbers:
   sin, cos, tan,    asin, acos, atan, 
   sinh, cosh, tanh, asinh, acosh, atanh,
   exp, log, pow, sqrt(ireal).
  • Implement scalbn, lrint, lround, remquo, nextafter on non-Linux systems.
  • Add functions for controlling rounding mode and exceptions flags, as described in float.html. Add precision control as well, for x86.
  • Provide alternatives to the asm code for 64-bit CPUs.


  • proposal: remove enum Vendor since it requires coordination between vendors for enum values


  • The "i" part, it only does "o" now. That is: *readf* is missing ?    

  • Type UINT_PTR (and probably related types, all ending in _PTR) is missing. I guess UINT_PTR is uint in 32-bit Windows and ulong in 64-bit Windows.
  • Declaration for extern(Windows)SHORT GetKeyState(int); is missing (and GetAsyncKeyState is missing too), although the VK_MACROS are declared (the names of these functions even appear in a comment).
  • Declaration for extern(Windows) UINT_PTR SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); is missing, although TIMERPROC is declared :-S (confused).
  • Declaration for extern(Windows) int DrawTextA(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); is missing.
  • Other functions seem to be missing too (RegisterClassEx, for one).

FrontPage | News | TestPage | MessageBoard | Search | Contributors | Folders | Index | Help | Preferences | Edit

Edit text of this page (date of last change: July 24, 2009 0:26 (diff))