Tuesday, 29 June 2010

What is D.dev?

D.dev is a simple IDE for the D programming language (if you’re not familiar, try Andrei Alexandrescu’s book), designed especially with ease of use as the main focus, especially for beginners. Efficient use echoes the design philosophy of the language itself. This new IDE will aim to offer the D programming community a lightweight alternative to the existing D IDEs.

D.dev is being designed to function as a frontend for the Digital Mars D compiler, although support for other compilers is a possibility in the future. More specifically, DMD 2.0 will be supported.

D.dev is being written in C++, using the wxWidgets GUI toolkit. The reason I chose C++ (besides familiarity, of course), is that C++ is the language which is best supported in wxWidgets (there are ports for many languages, and even a port for D exists already, although I don’t think it will be maintained for long). The reason I chose to make the user interface wxWidgets is portability: although initial testing will be performed on Windows only, D.dev will later be ported to Linux/GTK+. Hopefully in time for 1.0. :)

If you would like to have an idea of what D.dev will look like, here is a screenshot, which at this point, should be regarded as a mock-up of the user interface:

D.dev screenshot

You will immediately notice that D.dev adopts a Ribbon-like interface (although, allow me to stress this, it is *NOT* the Microsoft Ribbon interface). Needless to say, the interface is still being worked on and panels will likely be removed/reformulated before I even consider a beta release. If you hate the Ribbon, look elsewhere. If you think that there are other things that could be done cleverly with the Ribbon, I welcome your suggestions. The comments section is all yours! :)


  1. Great :-)
    This could actually become the first D IDE for Linux that I find usable (I'm not quite happy with Descent and Codeblocks, but maybe I'm just to stupid to get them to work correctly).
    For me the most important feature is solid autocompletion for Phobos and other libs and for my own local classes.
    I personally would be happy with simple build-support: Just tell the IDE to trigger some script or to execute make or rebuild or something and parse the compiler-errors - an IDE-specific internal build-system is not necessary IMHO.
    Oh, and a nice debugger frontend would be great of course, including the possibility to set breakpoints in the editor (like in Eclipse for Java/C++).

    I dunno about the Ribbon-Interface, though: It'd be great if it was possible to fold them or something so they take up minimal vertical space on the display (and vertical space is scarce on todays widescreen-displays, especially on laptops), so I see more lines of code at once.

    - Daniel

  2. Hi, Daniel, thank you for your comment. It's been a while since I produced that screenshot, so in all fairness, I can guarantee to you that even if you use the ribbon interface, it will be somewhat cleaner than what you see.
    Furthermore, I have recently figured out a way to make the user interface interchangeable: you can swap between menu/toolbar and ribbon at any time. I think giving this option will produce the most pleasant experience for most users. I'm also trying to patch or derive from the ribbon to allow folding (ala MS Word).
    More importantly than all that though, the autocompletion engine is starting to work!

    I will post something on this soon. ;)