Skip to content
This repository

A port of the Tango library to D2

branch: d2port

Add silenceWarnings to package.json

This is currently required to build Tango successfully using Dub.
Remove when the isNaN warnings are properly fixed.
latest commit d170ee4961
Vladimir Panteleev CyberShadow authored
Octocat-spinner-32 build Use a more correct method to grab the architecture January 20, 2014
Octocat-spinner-32 doc Port the xml examples. All valid examples are now ported January 31, 2012
Octocat-spinner-32 tango Fix things broken in 2.064 February 24, 2014
Octocat-spinner-32 unported Merge the svn April 08, 2012
Octocat-spinner-32 .gitignore Added newline at end of .gitignore December 14, 2011
Octocat-spinner-32 Fix bug description November 12, 2013
Octocat-spinner-32 LICENSE.txt September 22, 2009
Octocat-spinner-32 Bump DMDFE version in the readme February 24, 2014
Octocat-spinner-32 package.json Add silenceWarnings to package.json April 04, 2014
Octocat-spinner-32 porting_guidelines Mention the druntime situation in the porting guidelines May 29, 2011

Tango for D2

Last tested DMDFE: 2.065

This is an effort to port Tango to the D2 programming language.

This port roughly follows the guidelines outlined in the porting_guidelines file. If you want to help out, please follow that procedure.

What works so far

Modules that have not been yet ported are located in the unported folder. All those located in the tango folder are ported, in the sense that they pass the import+unittest test (sometimes imperfectly on 64 bits due to DMD bugs). Right now this means that essentially all the user modules (with the exception for tango.math.BigNum, which is aliased to std.bigint until further notice) and a large majority of tango.core modules are ported. Examples in the doc/examples folder should also work.

I do the porting on Linux, so that is the most tested platform. It generally should also compile on Windows, but might not pass all the unit-tests, since DMD does weird things with unittests on Windows. All other platforms probably don't compile at all.

Documentation can be found here:

See for a list of D compiler bugs that affect Tango and possible workabouts for them.

Breaking changes from D1

Since one of the important use cases of this port is porting programs from D1 to D2, breaking changes in functionality have been avoided as much as possible. Sometimes, however, this would introduce hidden heap usage or unsafe operation. Those things are even more detestable, especially for Tango's future, than breaking backwards compatibility. Cases where changes were introduced are documented here.

  • tango.sys.Process
    • args no longer returns the program name as the first element. Get it from programName property instead.


From packages

jordisayol maintains a APT repository with a reasonably recent version of Tango-D2 available there. Worth a try if you're using a Debian based OS. To use it, follow the directions on this website: .

From source

It is possible to use the binary bob building tool (located in build/bin/*/bob) like so:

64-bit Linux

cd PathToTango
./build/bin/linux64/bob -vu .


cd PathToTango
build\bin\win32\bob.exe -vu .

LDC2 is the primary testing compiler, but DMD seems to compile the library as well.

There is also an experimental Makefile building system. You can invoke it like so (modify the parameters you pass to make to suit preference):

cd PathToTango
make -f build/Makefile static-lib -j4 DC=ldc2
make -f build/Makefile install-static-lib install-modules DC=ldc2

Notable version statements

Define the following version statements to customize your build of the library:

  • NoPhobos - Removes the Phobos2 dependencies from tango (tango.math.BigInt is the only dependency right now)
  • TangoDemangler - Use Tango's old demangler instead of Druntime's




Find me on IRC on #d.tango @ or by email.

Something went wrong with that request. Please try again.