It's been a while since the last update, so here's a quick one
before making the jump to LDC 0.16.
Kelly added a more complex Qt5 demo, I recently added an Ogre3D
Ogre3D is a much more "sophisticated" creature than Qt5, relies
on some Boost libraries, so Calypso had to reach quite another
level to support it.
As a reminder Calypso (https://github.com/Syniurge/Calypso) is an
experimental LDC fork which lets you use C/C++ libraries without
having to write bindings. Its main additions:
• Maps C++ functions, global variables, structs, classes,
unions, enums, typedefs, templates
• C++ class and function template instantiation (including
global variables inside class templates with their proper
initialization in the global ctor)
• C++ class creation with the correct calls to ctors
(destruction is still disabled)
• Virtual function calls
• Static casts between C++ base and derived classes (incl.
multiple inheritance offsets)
• D classes inheriting from C++ classes, including the correct
vtable generation for the C++ part of the class (except for MSVC
which has a different ABI)
• Debug info generation for any C++ symbol instantiated by D code
The roadmap is:
merge upstream LDC 0.16 into Calypso → C++ exception support →
better C++11 support → MSVC support → extend magicport2 to
convert Calypso to D (and Calypso could "bootstrap" itself to
avoid writing bindings to Clang) → make Calypso an optional
On Linux Calypso should be in a state usable enough to start a
project assuming the lack of C++ exceptions or class destruction
isn't a blocker to start it (but I'm looking into the latter
right now), it has held up quite well while expanding the Ogre
and Qt5 demos, and my own project based on Qt5 and OpenCV.
So far only Kelly Wilson has been testing Calypso with various
libs and expanded the test cases (most of the libstdc++ samples
are his), so more testing would be very helpful.
Updated MingW build: