Thread overview | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
October 21, 2015 Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
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 |
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Elie Morisse | On 10/21/2015 07:40 PM, Elie Morisse wrote:
> It's been a while since the last update, so here's a quick one before
> making the jump to LDC 0.16.
Great news! What's the story on exceptions? Does Calypso allow D code to catch exceptions thrown from C++ code? -- Andrei
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | On Thursday, 22 October 2015 at 01:19:19 UTC, Andrei Alexandrescu wrote: > On 10/21/2015 07:40 PM, Elie Morisse wrote: >> It's been a while since the last update, so here's a quick one before >> making the jump to LDC 0.16. > > Great news! What's the story on exceptions? Does Calypso allow D code to catch exceptions thrown from C++ code? -- Andrei Hi Andrei, Not yet but I've looked into it, the plan is to add: catch (C++) (...) { } statements and make Clang translate them into C++ landing pads (as for imports the parser will query the language plugins when encountering two pairs of (), so the C++-specific statement will be part of Calypso, not DMD). Then add a "C++ exception class" handler in LDC's personality function: https://github.com/ldc-developers/druntime/blob/ldc/src/ldc/eh/libunwind.d#L327 Easier said that done but Clang should make the std::type_info matching doable. So it's on the roadmap just after the merge of LDC 0.16. |
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Elie Morisse | On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
> It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16.
You should write a blog post explaining what you have done so far and what remains to be done, then submit it to the usual link sites. I bet a lot of people would be interested in reading about this approach.
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Elie Morisse | On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
> make Calypso an optional shared library
Does it's mean, that Calypso can be work as plugin for Clang?
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Joakim | On Thursday, 22 October 2015 at 03:14:39 UTC, Joakim wrote:
> On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
>> It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16.
>
> You should write a blog post explaining what you have done so far and what remains to be done, then submit it to the usual link sites. I bet a lot of people would be interested in reading about this approach.
Second.
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Elie Morisse | On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
> 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.
>
Wow, this is fantastic. What about Windows and iOS support?
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Thursday, 22 October 2015 at 15:22:16 UTC, Szymon Gatner wrote:
> On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
>> 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.
>>
>
> Wow, this is fantastic. What about Windows and iOS support?
By Windows I meant Win32/x86
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Elie Morisse | On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
> 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.
Cool, is that a value type QString? Really? Then functions in Qt5 demo should accept QString by ref to better match C++.
Are copy constructors and assignment operator invoked?
As I see default constructors are not invoked yet?
|
October 22, 2015 Re: Calypso progress report (+ updated MingW64 build) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Thursday, 22 October 2015 at 15:23:34 UTC, Szymon Gatner wrote:
> On Thursday, 22 October 2015 at 15:22:16 UTC, Szymon Gatner wrote:
>> On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:
>>> 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.
>>>
>>
>> Wow, this is fantastic. What about Windows and iOS support?
>
> By Windows I meant Win32/x86
Win32/x86 is on the todo-list for the LDC release. I assume that once merged Calypso will support Win32/x86, too. (There is still work to do on x86 exception support in LLVM.)
Regards,
Kai
|
Copyright © 1999-2021 by the D Language Foundation