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 one:

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 ( 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 shared library

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:
  • Calypso progress report (+ ... Elie Morisse via Digitalmars-d-announce

Reply via email to