I am pleased to announce that Autowrap has now gained the ability to
generate .NET interfaces for D libraries! This means that if you have a
D library that you would like to call from .NET you can now Autowrap it
and use the library in .NET as if it were any other .NET assembly.
Autowrap will generate interfaces for the following features of D:
Primitive Types that map between the two languages (no cent/ucent/real)
Module-level Functions
Structs and Classes
- Constructors
- Fields
- Properties
- Methods
1-Dimensional Ranges
Please note that this is initial work and there may be bugs and things
that don't work. For example we know the following things will not work:
SysTime/DateTime/UUID types
Multi-Dimensional Ranges
Templates
Delegates/Callbacks
Amoung the items that do work, 1D ranges have not been thoroughly tested
and there may be corner cases around class/reference lifetime. At the
moment, we only ensure that a D object that is referenced in C# code is
pinned in the D GC until the C# GC runs the objects destructors.
Therefore, multiple copies of the same D reference may experience
use-after-free as the memory will be unpinned after the first destructor
is called. For most scenarios this will not be a problem, but it is
something to be aware of. I am exploring alternatives to handle this
problem but nothing has yet been decided and I am curious what your
opinions and experience would suggest.
Autowrap/.NET requires .NET Core 2.1 or greater and C# 7.3 or later.
More information can be found here:
GitHub Repo: https://github.com/kaleidicassociates/autowrap
DUB Package: http://code.dlang.org/packages/autowrap
I would like to thank Symmetry Investments for sponsoring this effort.
--
Adam Wilson
IRC: EllipticBit
import quiet.dlang.dev;