Note: This website is archived. For up-to-date information about D projects and development, please visit

The ArcLib Tango-Phobos Dilemma

How to play Russian Roulette with D standard libraries

Here is the question: Should ArcLib use Phobos, Tango, or both?

The answer is long, complicated, and convoluted.

Let’s answer the last question… should ArcLib support both tango and phobos? My answer, in short, is no. In long, in supporting both phobos and tango I will have to use the lower common denominator of features in each, not only that, it is a maintenance nightmare and will consume too much of my time to

  1. Write the version statements / wrapper library for both phobos and tango
  2. Test both phobos and tango and make sure that both work correctly

Plus, the wrapper will just make things slower… which is not what I want out of my 2D game lib.

This leads me on to my next question:

Should I use phobos?

Well… phobos would be the easy choice simply because I already use it and it comes packaged with the standard D compiler. There is one major flaw with phobos; Phobos is not developed by the D community, but by a single entity known as Walter, who also works on the compiler. This means, phobos receives little if any attention, and no one can really submit patches to it and help it grow as a library. Also, phobos is guaranteed not to get any /cool factor/ features, simply because Walter doesn’t have the time for it. In short, phobos has really no long term growth plan, and indeed, it isn’t really designed to grow much bigger than it currently it. Phobos, therefore, is an evolutionary dead-end. It works /alright/ now, but will it in the future?

Should I use tango?

Tango is not packaged with the D compiler, but is easily installable with DSSS. Tango is developed by the community and therefore has more potential to do things the right way, because if it is not done right, someone will write a patch for it and fix it. Tango also has more potential to aquire /cool factor/ features, like the Virtual File System, simply because there is more manpower effort behind the project. Bugs are more likely to become fixed, etc. It is also more cross platform, because it has more manpower behind the testing effort. What’s wrong with tango? Well… the only thing that is wrong with it is that it is non-compatible with phobos. Should this be a reason not to use it? No. What about all the phobos users? Well, if one is going to design a game in arc, the game will be designed from scratch most likely, so I don’t think it will hurt anyone to learn & install tango to use ArcLib to write a game from scratch, and then switch back to phobos for whatever else. It might take a bit for them to catch onto Tango, but Tango docs / support should be good enough to get them off the ground.

So… One or the Other: And the Verdict is…. 100% tango. Besides… with my democratic poll on my forum, it seems more people want tango then they do phobos. I humbly apologize to my phobos users, but my stand will be this: give Tango a shot, at least.

Expect a tango-only Arc v.3. I hope I made the right choice, and will not end up shooting my library self in the head with this Russian roulette of a decision.