Looking for documentation of D's lower-level aspects.
Jonathan M Davis
jmdavisProg at gmx.com
Fri Oct 21 19:08:02 PDT 2011
On Saturday, October 22, 2011 01:20:05 Sean Silva wrote:
> == Quote from Trass3r (un at known.com)'s article
>
> > Am 20.10.2011, 00:06 Uhr, schrieb Sean Silva
>
> <chisophugis at gmail.com>:
> > > == Quote from Jesse Phillips (jessekphillips+D at gmail.com)'s
>
> article
>
> > >> Right now D isn't ready to be used in this fashion
> > >
> > > It looks there's a more-or-less functional kernel written in D
>
> (and
>
> > > pretty well documented too):
> > > http://wiki.xomb.org/index.php?title=Main_Page
> >
> > "You do not need the Tango standard library to compile XOmB as it
>
> contains
>
> > its own standard calls and runtime."
>
> that was my point ... that it seems that D *is* "ready to be used in
> this fashion" ;)
You _can_ use D with no to minimal GC, but you have to be very careful. A good
chunk of the standard library would be completely unusable without the GC
(primarily anything which might allocate or append to an array), you have to
be very careful when using arrays (since appending to them wouldn't work, and
you have to worry about who owns an array so that slices don't result in
memory leaks or you using a slice which has already be freed), and there are
some cases where something might allocate using the GC when you don't expect.
For instance.
int[3] a = [1, 2, 3];
currently allocates a dynamic array which is the copied into the static array.
It shouldn't allocate like that, and it _will_ be fixed so that it doesn't, but
for now it does.
Generally, I'd say that the best way to deal with D is to just not worry about
the GC until you profile your code and see that it's a problem. If don't need
inheritance and so are using primarily structs rather than classes, you often
don't need to allocate much on the heap. If you're not doing a lot with
classes, the primary thing on the heap would be arrays (including strings).
But if you're smart about avoiding unnecessary allocations, the abilities that
the GC gives you with arrays (such as concatenation and the ability to use
slices without worrying about how many references to it there are) are well
worth it.
Essentially, as long as you avoid constantly allocating stuff on the heap, the
GC shouldn't cause you much trouble.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list