D without a GC (Was: Advocacy (Was: Who here actually uses D?))
Vladimir Panteleev
vladimir at thecybershadow.net
Mon Jan 3 02:40:58 PST 2011
On Sun, 02 Jan 2011 21:57:50 +0200, Walter Bright
<newshound2 at digitalmars.com> wrote:
> Sure, but D has *optional* gc. If you want to, you can use D as simply a
> "better C" and it will compile to the same code as C does.
The usual comeback to that is that Phobos depends on the GC, so a great
part of the standard library was unusable without memory leaks. I think
this is an interesting problem, and solving it could both prove that D
*is* practically usable for nontrivial tasks without a GC, and provide a
solution for those who can't or don't want to use a GC (you may have
noticed how many upvotes the stackoverflow comment about people just not
wanting to use a GC got).
How much of D can you really use without Phobos? I imagine there'd be no
problem in using it as a better C, but there isn't much appeal to that,
compared to C++/STL/Boost. A practical No-GC D solution would probably
have to include a standard library that works without a GC.
Some ideas:
* A while ago, it was suggested that there be a version(NO_GC) or
something like that, and the standard library could be modified to work
differently depending on that version flag. It's probably not practically
possible, though, because some functions would not make sense in a GC-less
context (lack of GC would require changing their signature/documentation),
and the code would quickly become a jungle.
* Forking Phobos into a new standard library based on STL-like
RAII/refcount constructs (std::string, std::vector) instead of built-in
arrays, etc.
** The biggest problem with the above idea is that we're back to typing
long type names instead of having the luxury of built-in dynamic
arrays/AAs. There could be a language mode (controlled by a compiler
switch) which maps the syntax for built-in arrays/AAs to RAII/refcounting
library types.
--
Best regards,
Vladimir mailto:vladimir at thecybershadow.net
More information about the Digitalmars-d
mailing list