Replacing C's memcpy with a D implementation

Mike Franklin slavo5150 at yahoo.com
Mon Jun 11 10:32:07 UTC 2018


On Monday, 11 June 2018 at 10:07:39 UTC, Walter Bright wrote:

> We have no design for this function that doesn't rely on the 
> GC, and the GC needs TypeInfo. This function is not usable with 
> betterC with or without the TypeInfo argument.

I understand that.  I was using `_d_arraysetlengthT` as an 
example of problems I encountered trying to convert these runtime 
hooks into templates, specifically illustrating how the compiler 
does not enforce the guarantees of safety, nothrow, and pure, 
and, in fact, completely disregards them.

Converting *any* runtime hook, not just `_d_arraysetlengthT`, to 
a template comes with a whole host of problems because of the 
aforementioned issue.  As soon as it's implemented as a template 
it is semantically analyzed in the context of its caller, so 
@safe, nothrow, pure, etc. all need to accommodated for.  That's 
good to have the compiler check for that stuff.  It's unfortunate 
the current implementation does not, and that's the fault in the 
current implementation.

There are other runtime hooks that are good candidates for 
templates, even if `_d_arraysetlengthT` isn't one of them.  
Again, I just chose `_d_arraysetlengthT` as an example, because 
it is the one I had experience with.

Mike


More information about the Digitalmars-d mailing list