Last update March 7, 2012

Standard Lib

Difference (last change) (no other diffs, normal page display)

Deleted: 38,148d37
jam tangan
jam tangan murah
jam tangan kw
hostgator coupon
kata mutiara
Jasa SEO
pioneer deh-1300mp
asus a53e-xa2
asus tf101-b1
asus tf101-a1
asus n53sv-eh72
asus republic of gamers g74sx
asus acer a5250
acer chromebook ac700
asus asus 53u
lg infinia 55lw5600
Sonicview 360 premier
asus 7 cu ft freezer
asus 30 single wall oven
brother cs6000i sewing machine
brother 1034d serger
brother sewing machines
Yokohama Geolandar H/T-S
crib tent tots in mind
kidco peapod plus
foscam fi8910w
samsung pl120 review
gopro helmet cam
Canon SX130IS
powershot s100
ContourHD 1080p
canon vixia hf r21
digital picture frame
canon ef 50mm f1.4
canon ef 70-300mm review
wide angle lenses
moving comfort sports bra
moving comfort bra
womens argyle sweater
bebe dresses
ViewSonic VX2250WM
Le Pan TC 970
Apple MacBook Air MC965LL
Sennheiser CX 880
plantronics cs540
ultrasonic jewelry cleaner
Sennheiser RS120
bose quietcomfort 15 acoustic noise cancelling headphones
logitech harmony one remote
logitech harmony 900
sony mhc-ec69i
sony mhcec909ip
bose wave music system
sony htss380
logitech squeezebox touch
sony dvp-fx970
onkyo tx-nr509
onkyo tx - nr609
onkyo ht-s3400
energy 5.1 take classic home theater system
polk audio psw505
onkyo ht-s5400
onkyo tx-nr709
belkin pf60
onkyo ht-rc360
denon avr-1912
Yamaha YHT-S400BL
fujitsu scansnap s1500
brother hl-2270dw
epson workforce 545
hp laserjet p2055dn
bushnell 8mp trophy cam
toshiba 32c110u
panasonic viera tc-p60s30
hauppauge wintv dcr-2650
Acer AM3970-U5022
Acer AspireRevo AR3700-U3002
Dell Inspiron i570
Dell GX620
Gateway FX6860-UR20P
Western Digital My Passport Essential SE 1 TB USB 3.0
Fujitsu ScanSnap S1300
Epson Perfection V300
Fujitsu SCANSNAP S1100
NeatDesk Desktop Scanner and Digital Filing System
Epson WorkForce Pro GT-S50
Kodak P811BK
Epson Perfection V330
Viewsonic VX2453MH
Asus VE228H
ViewSonic VA2431WM
Samsung B2230
HP 2711x
Epson PowerLite Home Cinema 8350
Optoma PK301
Epson EX7210
Epson EX5210
ViewSonic PJD5133
Acer X1161P
Epson EX3210
ViewSonic PJD6531w
Trinity 360 Breville 800JEXL
Skil 3320-02
Delta 46-460
Grizzly G0555
Delta 18-900L

When beginning to learn D one comes across the need to learn a lot about what is happening in its development to really understand what they should be looking at. One aspect that is probably the strangest for new comers is the competing runtime libraries: Phobos and Tango. Note that there really is only one standard library, which is Phobos.

Table of contents of this page
The Situation   
The Coming of Tango   
Suggested Resolutions   

The Situation    

When it comes to development, the community is split over two choices. There are some historical reasons for this. This separation has caused conflicts within the community, but even worse is confusion for those that have just arrived.

Phobos is the original and first library for D developed and maintained by Walter Bright. This library is developed in a way that feels similar to the C libraries. The library has been placed onto DSource for community input, while having Walter decide what changes will be added to the release bundle.

Tango started in 2006 as a runtime library to replace Phobos. This library has more of a C++ feeling as it uses streams for standard io and many objects will return themselves for chaining. Tango has had some misconceptions relating to its design. It has been gaining more popularity as more projects are created using Tango, and older Phobos projects are moved to a Tango code base.


There have been some misunderstandings about Tango that people seem to make when looking into whether they should use it.

  • Tango is solely class based
This is not the case, it uses classes where appropriate such as the stream object for output.
  • Tango is for large projects and not system level coding
This can be true if you want it to be, however it was designed with layers allowing one to use only the basics if that is all that is needed.
  • Tango only knows one dance
It knows only one style of dance, but it knows more than one dance.

The Coming of Tango    

A lot has changed over the few years Tango has been around and many people do not understand why Tango was created, and why it didn't just build off of the Standard library. As D was picking up more community members, one of the things that was bugging a lot of users was the slow movement of Phobos. It wasn't moving in any direction, useful features were missing and no one could easily provide code (or didn't feel as though they could).

To resolve the problem of movement the Ares project was started, the second coming of Phobos. This never got much momentum and the reason I will give is that it felt like Phobos. There wasn't much benefit to switch as there was still a need to have it expanded.

Ares declared defeat after Tango made itself known. There were good reasons Tango has survived. There is a great development crew working on it. It has had a greatly different design from Phobos letting others see it as an alternative rather than an extension.

There are at least two reasons that Tango was not built on top of Phobos. One is the differences in what its goal was as a library. Phobos has a lot of interdependence while Tango wished to use the layered scheme. It also was going to be expanding functionality, it would not be good to add on top of Phobos an then later have to remove something when it was later added to Phobos.


There will be no changes to the situation for D1. However D2, as of version 2.020, has had Phobos split into 2 libraries, druntime.lib and phobos.lib. This is to allow a common runtime to be used with both Phobos and Tango. While there is no plan to merge both libraries or even include Tango with releases of DMD, this will allow both libraries to be used at the same time without a compatibility layer.

Suggested Resolutions    

FrontPage | News | TestPage | MessageBoard | Search | Contributors | Folders | Index | Help | Preferences | Edit

Edit text of this page (date of last change: March 7, 2012 20:34 (diff))