Joined: 24 Jun 2004
Location: Bay Area, CA
|Posted: Thu Jul 21, 2005 11:50 pm Post subject:
|At the moment, Ares contains the bare minimum for a D application: a garbage collector, compiler runtime routines, and multithreading support. Much of this was extracted from Phobos, where it all existed as a single library. One of the initial goals of Ares was to separate the standard library, garbage collector, and runtime code so that each portion could be swapped out easily. This would allow third-party standard library or garbage collector components to be plugged into any compiler, as well as offering a bit more flexibility in what library routines are available. The breakdown is as follows:
dmdgc - DMD garbage collector
dmdrt - DMD compiler runtime
ares - Ares standard library
The Ares library itself aims to be a complete redesign of what you'd find in the "std" portion of Phobos, so expect it to ultimately contain utilities, containers, i/o components, etc. Most of this will be drawn from third-party submissions with an aim for consistency and robustness.
The zipfile contains four libraries: dmdgc.lib, dmdrt.lib, ares.lib, and phobos.lib. In this case, phobos.lib is actually just a compilation of the other three libraries, as DMD automatically looks for a file named "phobos.lib" when it's linking (it was easier to just duplicate the file name than to hack the DMD executable).
Sadly, there's little documentation yet, but the only things you should likely care about are in the ares directory:
atomic - In development. This will contain some basic tools for lockless programming.
thread - The Thread class and some GC support functions. The Windows version is nearly complete, but the Posix version still needs work.
error - Hooks for system errors and some system-level exception classes. More will be added in the future.
gc - The GC interface from Phobos. This needs to be looked and and possibly redone.
intrinsic - Mango needs this, as does some of the DMD support code. Again, copied from Phobos.
As for the rest, std.c is a nearly full implementation of the C99 inteface, and I'm working on finishing std.c.posix. Development has slowed a bit as everyone (including me) has been on vacation recently, but I expect things to speed up again before too long.