Ease of calling C code from D

w0rp devw0rp at gmail.com
Wed Jan 29 13:00:49 PST 2014


I think initially getting C libraries to work in D has some 
hurdles C++ does not. D doesn't support C's pre-processor macros 
to stop people from using them in D code, compile-time execution 
of D code and templates are more powerful and easier to verify. D 
doesn't use null-terminated strings, character arrays and slices 
are often more efficient and easier to use. The tradeoff for 
these things is that you have to re-write some parts of C 
libraries in D (macros) and translate between differences in how 
D and C do things (toStringZ, etc.).

I think the big payoff comes when you start being able to turn 
struct with pointer + length into a D memory slice without 
copying all the data, when you can determine which functions are 
@system and @safe so you can make it easier to track down 
problems, when you can use scope(exit) and friends to make manual 
resource control less of a headache. I think it's these kinds of 
advantages that typically make me want to try using a library in 
D instead of C++.


More information about the Digitalmars-d mailing list