Calypso progress report (+ updated MingW64 build)

Elie Morisse via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Wed Oct 21 16:40:13 PDT 2015


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:

   https://www.youtube.com/watch?v=eryhDOa9MV0
   
https://github.com/Syniurge/Calypso/blob/master/tests/calypso/ogre3d/demo.d

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 
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: 
http://www.homo-nebulus.fr/dlang/Calypso-Mingw64-i686-4.9.3-posix-dwarf-rt_v4-rev1.tar.xz


More information about the Digitalmars-d-announce mailing list