Saturday, 31 July 2010

D.dev progress: July 2010

Here we are, it’s almost time to make the beta version available to all, but not quite yet. There are too many glitches and bugs and essential features missing. I did however, manage to make the autocompletion work, and it’s about 50% done. I also found out how to make D.dev feature a dual user interface, check out how in the last few seconds of the preview video ;)

D.dev preview video from D.Dev IDE on Vimeo.

Play full-screen in order to have a better view of the text. As always, feedback in the comments section will be very appreciated. :)

Tuesday, 13 July 2010

Controversy regarding memory management in D

D 2 is subject to constant redesign and improvement. Or is it? It appears that D is becoming, like C++, a language designed by comitee. With a big difference: at least when C++ is changed, both the relevance of the changes and the impact on the language features are carefully considered.

So, what is happening to D? Well, somebody thought to themselves “This delete keyword is a source of a multitude of errors” and from there decided that it should be banned! Not without a replacement of course. There is a proposal for new functions that would effectively replace the delete keyword. One of them is clear(object), which would destroy the object, copy onto it the initial value Object.init, and construct it again. It sounds more like a reset(object) to me… Another one is a function that does nothing other than destroy the object, which is what delete already does. It seems that the idea is to encourage people to always use the garbage collector and disencourage people from managing the memory manually…

There already is a language with such a logic, it’s called Java. I refuse to allow the prejudices of a minority to turn the powerful and flexible systems language that is D into a mere Java copycat. Naturally, we must find a middleground, and so far, the best counter-proposal is to keep the delete keyword, but forbid it in the SafeD subset. It sounds like the most logical alternative to me.

What do you think? Leave your vote in the poll.

Sunday, 11 July 2010

Roadmap, features before 1.0

Here is a summarized roadmap for D.dev. During early beta, all releases will be under Windows only.

  1. Late July/Early August 2010 - First Beta release of D.dev 0.1.
    • Editor, featuring: syntax-highlighting; auto-completion with a few extensions specific for D; standard text search; and bookmarks (with comments).
    • Project management.
    • Compiler support for DMD 2.0. Depending on the author, possibility of bundling it together with D.dev binaries.
    • Bug fix releases to follow up when necessary.
  2. Autumn 2010 – Beta update
    • Begin porting for Linux (internal testing will be done on Ubuntu).
    • Support for GDB 7.1, to be bundled with D.dev from that point forth.
    • Bug fix releases to follow up when necessary.
  3. 2011 – 1.0
    • Begin tests for Git GUI interface and its integration with project management.

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! :)