More Tango Conference Vids


KeYeR recently put up a couple more videos of sessions from the Tango conference. First, though, I should mention that he posted a video of Jarret Billingsley’s talk on MiniD about a month ago and I didn’t mention it here. You can learn more about Jarret from the Q & A I did with him last year (I think it’s past time to do some more of those).

The first of the newer videos is the talk on DWT by Frank Benoit, which capped the first day of sessions. The next is a vid of the second day’s opener, Rick Richardson’s session on DReactor.

You can learn more about MiniD, DWT and DReactor from DSource.

Technorati Tags: ,

More on Derelict 2


On a whim, I sat down with a copy of my working copy of Derelict today to get a feel for Derelict2. Particularly, I wanted to see how things look after the merging of some packages and to get an idea of how difficult it will be to modify the source for D2 support. It took very little time, much less than I expected, to get to the point where I had a compilable code base that supports both D1 and D2 (though I temporarily removed Tango support) out of the box. It compiles, it links, and my simple little tests work fine with D1 and D2. On top of that, the condensed source tree is much, much nicer to look at (and to work with!). Unfortunately, things never really are that easy.

While the code works as-is, the library interfaces are almost certainly going to have to be modified. toStringz in D2 returns a const(char)*, whereas the function prototypes in Derelict that take C strings, being that they are bound to C libraries, expect plain old char*. It will get mighty tedious mighty fast having to cast every call to toStringz to lose the const. I got around this internally in Derelict by casting to char* before returning from the toStringz wrapper in DerelictUtil. So I could recommend that Derelict users make use of that version — it will do the right thing between D1/D2 and Phobos/Tango (once I add Tango support back in) and leave it at that. But, realistically, that’s just not going to work. So for full D2 support I’ll need to modify the bindings in every package where appropriate.

A more critical problem is that DerelictFT fails to compile with the latest D2 (not tried previous versions). It still works fine with D1, but D2 keeps barfing with assert failures by the compiler. Specifically:

compile dmd -c derelict\freetype\ft.d -ofdsss_objs\D\derelict-freetype-ft.obj
-IC:/dev/D/dsss/bin\..\include\d -Idsss_imports\ -I. -L-L.\ -IC:\dev\D\ds
ss\include\d -L-LC:\dev\D\dsss\lib\ -IC:\dev\D\dsss\include\d -L-LC:\dev\D\ds
ss\lib -I../DerelictUtil -IC:\dev\D\Mars\D2\dmd\bin\..\src\phobos -IC:\dev\D\
Mars\D2\dmd\bin\..\src\druntime\import
Assertion failure: ‘t->deco’ on line 604 in file ‘mtype.c’

abnormal program termination
compile dmd -c derelict\freetype\ftfuncs.d -ofdsss_objs\D\derelict-freetype-f
tfuncs.obj -IC:/dev/D/dsss/bin\..\include\d -Idsss_imports\ -I. -L-L.\ -IC
:\dev\D\dsss\include\d -L-LC:\dev\D\dsss\lib\ -IC:\dev\D\dsss\include\d -L-LC
:\dev\D\dsss\lib -I../DerelictUtil -IC:\dev\D\Mars\D2\dmd\bin\..\src\phobos -
IC:\dev\D\Mars\D2\dmd\bin\..\src\druntime\import
Assertion failure: ‘t->deco’ on line 604 in file ‘mtype.c’

abnormal program termination
compile dmd -c derelict\freetype\fttypes.d -ofdsss_objs\D\derelict-freetype-f
ttypes.obj -IC:/dev/D/dsss/bin\..\include\d -Idsss_imports\ -I. -L-L.\ -IC
:\dev\D\dsss\include\d -L-LC:\dev\D\dsss\lib\ -IC:\dev\D\dsss\include\d -L-LC
:\dev\D\dsss\lib -I../DerelictUtil -IC:\dev\D\Mars\D2\dmd\bin\..\src\phobos -
IC:\dev\D\Mars\D2\dmd\bin\..\src\druntime\import
Assertion failure: ‘t->deco’ on line 604 in file ‘mtype.c’

abnormal program termination
compile dmd -c derelict\freetype\sftfuncs.d -ofdsss_objs\D\derelict-freetype-
sftfuncs.obj -IC:/dev/D/dsss/bin\..\include\d -Idsss_imports\ -I. -L-L.\ -
IC:\dev\D\dsss\include\d -L-LC:\dev\D\dsss\lib\ -IC:\dev\D\dsss\include\d -L-
LC:\dev\D\dsss\lib -I../DerelictUtil -IC:\dev\D\Mars\D2\dmd\bin\..\src\phobos
-IC:\dev\D\Mars\D2\dmd\bin\..\src\druntime\import
Assertion failure: ‘t->deco’ on line 604 in file ‘mtype.c’

abnormal program termination
Command C:\dev\D\dsss\bin\rebuild.exe returned with code 1, aborting.
Error: Command failed, aborting.

I imagine this is going to take some effort to narrow down to a minimal case for a bugzilla report. I’ll get around to it.

At any rate, since this is turning out to be less of a headache than I thought it would be (DerelictFT issues aside), I’m going to go ahead and create a Derelict2 branch in the next few days and start cracking. That will also help get more eyes on the DerelictFT problem. I had initially intended to tag the current trunk and just do Derelict2 dev in the trunk. That’s really not the way to go, though, since most Derelict users rely on the trunk to actually work. So I’ll do all Derelict2 dev in a branch and merge it to the trunk later on down the road. Since it’s not going to be an issue supporting both D1 and D2, I don’t see any reason why (what-will-soon-be) the old Derelict need hang around any longer than necessary.

So I’ll be working on this in fits and spurts over the coming weeks and months. I’ll announce here when the new branch is ready so that any of you wanting to play with it can. Aside from the DerelictFT issue with D2, it should be quite usable almost as soon its committed. But I make no promises as to its continued stability. I’ll be updating and making changes over the coming weeks and months. I’ll try not to make any breaking changes if I can reasonably avoid it. I would like to ensure that all current Derelict clients continue to compile without change. But there may be a few minor nits.

In the meantime, I’m still open to suggestions and ideas about where to take Derelict 2. If you have any, please head over to the Derelict forum and post them in the suggestion thread.

Technorati Tags: ,

Suggestions for Derelict 2


EDIT: The links now point to the correct forum thread.

In the not-too-distant future (by my reckoning, which can sometimes be months or even years by the reckoning of others!), I’m going to begin the process of getting Derelict 2 together. As a precursor to that, I’ve put up a sticky in the Derelict forums with some details about what I plan to do and what I’d like to do. I’m looking for feedback from Derelict users on those ideas and other suggestions to look into.

So if you are a current/former/potential user of Derelict, I invite you to the Suggestions for Derelict 2 thread.

Technorati Tags: ,

DMD 1.036 and 2.020


Big news in D-land today. Walter has pushed out two new DMD release, one each of the 1.x and 2.x branches. The big news is what’s inside of them.

The 2.020 release got all of the attention in the newsgroup thread and no one has yet commented on the first item in the 1.036 changelog:

improved performance of AAs by rebalancing trees when rehashing

OK, that’s not just a 1.x thing, as 2.020 sports the same fix. But it’s a reason to give D1 some love!

The big, big news that has everyone jabbering is in the changelog for 2.020 and was the primary focus of Walter’s announcement, in which he dropped this much-anticipated line:

The 2.0 version splits phobos into druntime and phobos libraries (thanks to Sean Kelly). This will enable both Tango and Phobos to share a common core library.

How’s that for BIG NEWS? This is very bleeding edge stuff, so I suggest you read the entire announcement thread if you are going to play around with it. I’ve not touched it yet myself, but some workarounds for a few issues are discussed in NG. I’m not sure if Walter has updated the zip yet with the corrections(or if he even will). If you do play around and have any issues with druntime, be sure to post a ticket at the project site so as to keep Sean busy.

If you are a D noob, be aware that the 1.x series is ’stable’ while the 2.x series, despite the 2.x versioning, is not considered stable or production ready. Let that guide you in deciding which version to jump into.

I’m rather happy about these releases. This wipes away a couple of the issues I had with D and finally gives me a reason to start looking at a new branch for Derelict (as if I’m not busy enough already). Stay tuned.

Technorati Tags: , , ,

Learn to Tango with D on Safari


I’ve subscribed to O’Reilly’s Safari off and on for a few years. I usually renew my subscription when I have to work with unfamiliar tech on a contract, keep it alive for a few months out of curiosity, then cancel it until I need it again. I renewed it last month on a whim. Yesterday, in an update email listing newly added titles, I was pleasantly surprised to find Learn to Tango with D in the list (and I tried to post about it then, but had problems connecting to aldacron.net most of the day).

Yes, I was surprised. The notification from Apress didn’t come until today. At any rate, it’s good news. Several Apress titles have been added, in fact. Oddly, the book is listed in the ‘C# Category’. Not quite sure what that’s about. But if you haven’t yet taken a look at the book and you have a Safari subscription, now all you need do is add it to your Safari Bookshelf.

Even better, you can support both Tango and The One with D and buy Learn to Tango with D from Amazon.

Technorati Tags: , , ,