Uh... destructors?

%u wfunction at hotmail.com
Wed Feb 23 11:21:10 PST 2011


>> Because a pure unsafe function is useless.

> I disagree. Suppose you have a function which is conceptually pure but requires a temporary 100
Mb matrix of doubles. Wouldn't it make sense to use malloc/free for this temporary storage
instead of using the GC and risking the block never being collected because of a false pointer
somewhere?

This is _precisely_ why I think the 'delete' keyword will still have uses -- it lets you delete
memory that you _know_ will no longer be needed, and it gets read if the need to malloc/free. As
a bonus, it will be much less "special" of a case than excepting the ordinary malloc/free
functions.
But anyway, I doubt that that's going to convince anyone, so I'll stop talking about the delete
keyword. :)

Another point is that the problem with false pointers is actually an implementation flaw in the D
runtime, _not_ an issue with the language. I actually think that even an extremely small chance
at remote possibility of a false pointer will provide enough reason for people to avoid adopting
D, notwithstanding the greatness (IMHO) of the language as it currently is. If D is going to be
adopted on a large scale, I don't think it's going to happen with the possibility of false
pointers looming in the dark.
It would be an architectural change for the GC (and probably the compiler) to fix the issue, but
now that it's brought up, I think it might be a good idea to revisit it, since even if it's not a
great possibility, it's obviously an uneasiness lurking in the back of people's heads, and a
hindrance to the adoption of the language.
Any thoughts on this? (Should this GC discussion be a separate thread?)


More information about the Digitalmars-d mailing list