What does your ISO C++ embrace mean practically?
The code is overwhelmingly platform- and toolkit-agnostic. It uses std::string
and set, STL iterators, algorithms, etc. When interfacing with non-ISO code DDT dips its toe in and out as briefly as possible.
F.ex. DDT has its own logging facility using a light sig/slot pattern and a type-safe C++14 vararg template to mimic sprintf()
We use QT/.Net/JUCE/other, not wxWidgets, is this a show-stopper?
No. DDT's UI widgets are portable by rendering to cairo 2D surfaces. Those can be Qt, OpenGL or any other available cairo backend.
The variable view pane (for locals, globals and watches) already uses this new model. Table hierarchies, mouse picking and hyperlinks are handled by DDT's own code. The editor is a straight Scintilla wrapper; lexing, highlighting, etc. are handled internally. The daemon is headless, so no UI issue there.
These new widgets are meant to fit with C++17's planned cairo integration.
What's special about the networking layer?
Many know about Boost.Asio, few know its recent non-Boost flavor, which uses C++11 instead. It's just as fast, portable and still header-only but without Boost's baggage.
Asio was accepted in its entirety to form part of the next networking TS. See this C++ ISO report
as well as think-async.com
for technical details.
DDT uses binary TCP streams whose data is both platform- and arch- agnostic. F.ex. a Windows client connects directly to an iOS daemon - without OSX bridge.
What does "DDT" stand for?
It's a punacronym for dedetizador
which means "pest control" in Brazilian Portuguese (where Lua's from). Formally, "debugger" translates to "depurador".
i.e. [my first name] at [this domain]