Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Tango D2.0 compatibility

Posted: 10/20/07 13:53:30

D2.x is out for a long time now. For D1.x changes to the compiler were updated in tango within hours. Now we stay on the stable 1.x version until D2.x is more stable. When does this happen? In a month, in a year?

Sure it would create work, to have a branch for D1.x and D2.x. And it would create work, if D2.x is changing fundamental things. But not having tango for D2.x is even worse. None of use - "tango only users" - can use the newest D compiler. None of us can see the problems with it. None of use can make arguments in the discussions, because we only know D2.x from the talk about it. Well, at least this is my position.

I think it would be the better strategy to have the D2.x tango-branch.

Since the time I use D, it was always changing. And tango itself was changing even faster. How often did i change my FileConduit using code? How many little bugs did I have, how many bug reports did I wrote? For dmd and tango? Hey, that is no critism. If it is going forward changes are necessary and bugs are a natural thing to happen. So this is the price I like to pay for using the newest tango from svn with the newest D compiler available on this planet. Life is not save. And still, I don't want to get less for paying this price. Please give me back the "newest D compiler available".


Author Message

Posted: 10/20/07 20:22:21

we'd like to, Frank. The truth is, D 1.0 has been relatively stable. D 2.0 is experimental in a fundamental way, and we don't have the manpower to have Tango dragged around by the nose. It's hard enough trying to get anyone to document the library, let alone document rapid changes due to compiler experiments.

When Walter settles on a resolution for const, Tango will be right behind it again. If you have some other solution, please share them

Posted: 10/21/07 11:51:28

A tango branch "exp_d2" could be created. An official playground. Perhaps people would contribute. If not, it stays there for nothing. Where is the cost? Lets see what happens. Later if you think D2 is stable you can use whatever you like or not. But anything contributed to this branch is later less work.

Posted: 10/22/07 01:39:49

Larsivi has made a branch for this. Enjoy :)

Posted: 11/01/07 14:41:12

I just thought of this this morning while strolling through the new posts on the D newsgroup.

As a tango user, I generally see things like "invariant" or "D 2.x" and skip those messages. But this is probably a Bad Thing...

My fear is that tango users, as a significant portion of the D community, are not engaging in shaping or contributing to the design of D 2.0. This is bad because one day we will wake up and Walter's seal of approval will have appeared on D 2.0, and the Tango authors will get busy porting to 2.0. Then they might discover that some design decisions in 2.0 were either not completely thought out, or make some things in Tango impossible to port. I'm not saying this will happen for sure, but we may face the task of getting Walter to change the D 2.0 spec AFTER it has been released. As we all know, it's not easy to get design changes into something that is released and supposed to be stable.

I think many of the users/developers of Tango are some of the brightest people, and it would be a shame to not have their opinions voiced before D 2.0 is released. I think we need to step up and make this port a reality now before it's too late to change anything.

So with that note, can you allow me access to the experimental d2.0 branch? I'd like to help (keinfarbton, I see you've done a lot of work already, let me know how I can help you).


Posted: 11/01/07 18:55:35

I believe we are involved in the 2.0 discussions on various levels, but you are of course correct when you say that practical experience is the best way to create good enough feedback. We hope to get there soon, but I feel that the const stuff should get closer to resolution before I invest too much time on it.

Posted: 11/02/07 21:56:37

The experimental branch is now compiling with 2.006 and example/console/hello.d works on linux-dmd. Well that is not much of practice. And tango in this state is not much useful, because there are casts needed everywhere.

Now, I am not a tango api designer, but I want to do some helpful stuff. If kris/sean/lars could investigate some little time to give directions, what could be useful?

signature of methods in object.Object methods?

Changes in the tango.text.convert.Layout?

some general rules for method parameters, return values, templates, ...?

... Some hints to make my work not go straight to trash, but make it useful for further experiments.

Posted: 11/04/07 11:45:12 -- Modified: 11/04/07 12:52:53 by

I'd like to help get tango working under 2.0 also. I've made a handful of changes to get phobos.lib compiling under windows, and tango.lib won't be far behind. I tried to commit but as I expected I don't have permission. How should I submit code changes?

Posted: 11/04/07 20:12:53

JScott; you have the rights now :)

Please join #d.tango on if you can. You'll most likely meet the other 2.0 experimentors there.

Posted: 11/05/07 06:54:02

@Schweiguy and @JScott:

I have merged the branch with latest trunk and did an update for DMD 2.007.

Many methods are now const aware. This is mostely related to string arguments.


  • get it running on DMD/Win32. I worked only on linux.
  • build and run tango unittest. There will be compile errors, since I did only build the lib.
  • get more examples running
  • add examples like Walters "Full closure" test cases from the forum.

Would be great if you could do parts of this TODO list.

Posted: 11/11/07 00:26:03

I've done some updates to the branch.

  • All example code now compiles on both Win32 and linux.
  • unittests compile in core and io

There is a post on the digitalmars newsgroup that Frank made asking about the state of const. Walter responded and says that he hopes to have it ready in a week.

Since we may have the answer to how const will work in a week, I'm going to hold off making any more changes to the tree. It's in a pretty good state right now.

Doing the port has helped me find several bugs with D 2.0, which is what I had hoped for. Hopefully, with const becoming more finalized, the D 2.0 port will be ready soon.

If people want to try out the branch, Tango now has a D2.0_branch version in the bug tracking system. Please read the README for info on the state of the port, and if you find bugs, file a ticket :)


Posted: 11/11/07 00:58:53

Awesome! Great work you guys :)

Posted: 01/03/08 20:51:12

I'm happy to see all this work to get tango to D 2.x functionality. It seems like D 2.x const functionality is settling on a final design. Is it time to revisit making an official D 2.x release of Tango?

Posted: 01/03/08 23:26:39

First the D 2.0 branch would need to be updated to be sure it works correctly, but I would expect this process to root out more bugs in the DMD 2.00x branch. At this point, we may consider looking at how new D 2.0 features can be applied to Tango. Considering that D 2.0 itself in no way is stable though, and won't be in some time yet, I doubt that we will make too many such changes any time soon. D 1.0 is our prime target until further notice for further development, and having a D 2.0 branch will double our mantainance (if not triple due to the instability in the specification and compiler). I have my doubts over too many Tango for D 2.0 releases before Walter says 2.0 is final.

Posted: 01/04/08 20:55:32

Aye, Tango for D2 should be considered experimental for now

Posted: 08/21/08 16:42:38

The tango D2 is now again compilable and uptodate with tango trunk -r3885. At least this is valid for DMD 2.018 on linux.

Some of the runtime code from Phobos is not completely merged. There is a change in the Object Monitor implementation and I don't know how to handle this. I asked Sean to take look.

Please feel free to test and contribute.

Posted: 10/18/08 17:16:34

Hi all, I'd like to contribute to the (experimental) port of Tango to D2.0! In a previous effort (from which I might copy some fixes) I run into packages that probably will need API changes at some point... How should discussion on those things be organized?

And what is the correct way to contribute any patches?

Posted: 10/18/08 18:21:31

There are perhaps other possibilities also... but you can create a ticket, attach the patch and assign the ticket to me (keinfarbton).

With the ticket we have also the discussion possibility for each ticket.