Qt's MOC getting replicated in D for Calypso

Elie Morisse via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Feb 18 15:48:44 PST 2016


On Thursday, 18 February 2016 at 03:07:22 UTC, Ali Çehreli wrote:
> Congratulations! Any project that can get rid of moc is a big 
> achievement. :) Folks at CopperSpice had done the same in C++ 
> with their Qt replacement:
>
>   http://www.copperspice.com/
>
> Ali

Nice! I've never heard of them, interesting how they proved the 
moc maintainer partly wrong.

On Thursday, 18 February 2016 at 03:36:20 UTC, ZombineDev wrote:
> Congratulations! This is an extremely promising result!
>
> BTW, what do you think about DMD's recent advancement in this 
> area? Can you reuse some of this work for Calypso? When do you 
> think you'll be ready to start upstreaming some of your work to 
> LDC and/or DMD?
>
> https://github.com/D-Programming-Language/dmd/pull/5261 - 
> Parameter types should have namespace std mangling too
>
> https://github.com/D-Programming-Language/dmd/pull/5262 - Add 
> versioned-out branch to support new C++-11 implementations of 
> std::string
>
> https://github.com/D-Programming-Language/druntime/pull/1470 - 
> Add catching C++ exception support to dwarfeh.d
>
> https://github.com/D-Programming-Language/druntime/pull/1473 - 
> add core.stdcpp.exception and core.stdcpp.typeinfo
>
> https://github.com/D-Programming-Language/dmd/pull/5330 - fix 
> Issue 15389 - extern(C++) forward referencing problem
>
> https://github.com/D-Programming-Language/dmd/pull/5333 - fix 
> Issue 15519 - Circular imports leads to fwd ref error with 
> aliased imports
>
> https://github.com/D-Programming-Language/dmd/pull/5342 - C++ 
> EH: initial front end work
>
> https://github.com/D-Programming-Language/dmd/pull/5361 - fix 
> Issue 15579 - extern(C++) interfaces/multiple-inheritance
>
> https://github.com/D-Programming-Language/dmd/pull/5372 - fix 
> Issue 15610 - extern(C++) multiple inheritance - calling with 
> wrong 'this' ptr
>
> https://github.com/D-Programming-Language/dmd/pull/5397 - fix 
> Issue 15644 - Switch object layout ABI to MI style
>
> https://github.com/D-Programming-Language/dmd/pull/5402 - fix 
> Issue 15647 - Casting from one C++ interface in a hierarchy to 
> another is a noop
>
> https://github.com/D-Programming-Language/dmd/pull/5403 - fix 
> Issue 15626 - extern(C++) calling crash

Most of Calypso lives independently from the C++ support in DMD, 
and instead queries Clang whenever possible on C++ matters.

It was actually catching C++ exceptions some time before DMD 
(https://github.com/Syniurge/Calypso/tree/master/tests/calypso/eh), has no C++ multiple inheritance layout issue since that's handled by Clang, and the only way extern(C++) affects Calypso is by not reverting the order of function parameters so these functions can be correctly called by C++ code (function pointers, overridden virtual methods), and if I understand correctly this is only necessary because there's a discrepancy between DMD and what the docs say: http://forum.dlang.org/thread/zogygbvfszssudpaejwo@forum.dlang.org?page=2

>When do you think you'll be ready to start upstreaming some of 
>your work to LDC and/or DMD?

My big concern is the switch to DDMD. It seems that the 
transition is going pretty smoothly for LDC, but what about 
Calypso's extensions to DMD? Calypso classes deriving from DMD 
ones will have to be converted to D and those classes happen to 
sollicit Clang's C++ API a lot, so I'm counting on C++ Calypso to 
build D Calypso meaning it has to be pretty solid at that point 
to support both Clang and LLVM.

Anyway as long as both LDC and Calypso haven't both caught up 
with DDMD it's probably too early for upstreaming.

The downside is that Calypso is marginalized, I don't get many 
testers (<- euphemism, only wilsonk helped a lot and right now 
I'm about the only one testing). The neglecting of MSVC, the 
"still experimental" label and the lack of releases probably 
don't help in that regard. It's not a big deal though since I 
have enough on my hands, coming next is the LDC 0.17 merge, and 
rework on the PCH generation that should increase the speed 3x 
according to cachegrind.


More information about the Digitalmars-d-announce mailing list