Article: We're Overlooking A Key Part of C/C++ to D User Migration

Nick Sabalausky via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Wed Feb 3 10:04:02 PST 2016


On 02/03/2016 12:25 PM, Dicebot wrote:
> On 02/03/2016 07:05 PM, Nick Sabalausky wrote:
>> Something that's been on my mind for a few months, finally got around to
>> a little write-up about it.
>>
>> We're Overlooking A Key Part of C/C++ to D User Migration:
>>
>> https://semitwist.com/articles/article/view/we-re-overlooking-a-key-part-of-c-c-d-user-migration
>
> For plain ABI interop it is actually something that should be doable by
> compiler as part of .di header generation - generate matching
> `extern(C)` wrappers for non-templated code (expanding all arrays to ptr
> + len pairs etc.).
>
> The problem is how you are going to expose templated stuff which
> dominates most useful D libraries.
>

I expect that in many, if not all cases, the library's FULL power and 
benefits might realistically only be accessible to D. But usually, some 
simple wrappers on the D side should be plenty to expose the primary 
use-cases to C. In particular, specially-selected pre-instantiations and 
simple convenience wrappers can go a long way.

For example, an XML library in D: This would likely be heavily templated 
to operate on ranges for everything. But usually, the lib's end users 
are only going to need UTF-8 strings, maybe UTF-16. The C users 
especially aren't likely to need more than that. So pre-instantiating 
for string and maybe wstring, wrapped up in non-templated wrappers would 
be perfectly sufficient to be useful to C users.

Or a regex lib: Compile-time regex (like ctRegex in phobos) would be out 
of the question, but the run-time version could still be exposed and 
useful. (Or, if the lib author *really* wanted to get clever and impress 
the C side, they could offer a simple CLI tool to pre-compile a regex 
outputting a D module and/or C header, which C programs could link in. 
But regardless, even just limiting C-land to the runtime version would 
still be offering something useful.)



More information about the Digitalmars-d-announce mailing list