Thread overview
Re: Standard Library Concerns (Phobos / Tango)
Feb 12, 2008
Sjoerd van Leent
Feb 12, 2008
Alexander Panek
Feb 14, 2008
Kris
Feb 12, 2008
Bill Baxter
Feb 12, 2008
Graham St Jack
Feb 15, 2008
Jarrod
February 12, 2008
Walter Bright Wrote:

> What I see as the goal for Phobos/Tango is for there to be a compatible core, so that users can mix/match what they need from either library.

To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different.

The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc.

The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc.

This is a logical outcome, because D although being a system language, can be used in places where VM'd languages are used at the moment but also can be used for those C applications we need to have the machine going in the first place.

Regards,
Sjoerd
February 12, 2008
Sjoerd van Leent wrote:
> To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different.

To be frank, I don't see how the purpose is different. :)

> The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc.

This is not entirely true. The Tango core is very well decoupled from the rest of the library, rendering it very useful for exactly those things.

> The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc.

Tango only provides the tools to create such applications. It does not, however, include a web server or database bindings/mappers. That's a seperate project called DDBI on DSource (http://dsource.org/projects/ddbi/).
February 12, 2008
Sjoerd van Leent wrote:
> Walter Bright Wrote:
> 
>> What I see as the goal for Phobos/Tango is for there to be a compatible core, so that users can mix/match what they need from either library.
> 
> To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different.
> 
> The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc.
> 
> The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc.
> 
> This is a logical outcome, because D although being a system language, can be used in places where VM'd languages are used at the moment but also can be used for those C applications we need to have the machine going in the first place.
> 
> Regards,
> Sjoerd

People seem to forget that C++ really has multiple "standard" libraries too: the one inherited from C, the C++ native one (STL/iostreams), and then Boost.  Then on top of that just about every single GUI toolkit has its own set of utility classes because first off templates were extremely unreliably when most of the GUI projects were started, and second the official standard libraries try so damned hard to be platform-neutral that they are often not that useful for getting real work done.

So I agree.  There's absolutely no problem with multiple "standard" libraries.  People will use what suits them, and the chances of one library pleasing everyone are slim in a multi-paradigm language like D.

The main difference in the D situation is that all those various C++ libraries can be linked together and used in the same app without requiring modification of your compiler's installation.

--bb
February 12, 2008
On Wed, 13 Feb 2008 00:44:56 +0900, Bill Baxter wrote:

> Sjoerd van Leent wrote:
>> Walter Bright Wrote:
>> 
>>> What I see as the goal for Phobos/Tango is for there to be a compatible core, so that users can mix/match what they need from either library.

I absolutely agree. I see this as a very high priority.

>> 
>> To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different.
>> 
>> The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc.
>> 
>> The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc.
>> 
>> This is a logical outcome, because D although being a system language, can be used in places where VM'd languages are used at the moment but also can be used for those C applications we need to have the machine going in the first place.
>> 
>> Regards,
>> Sjoerd
> 
> People seem to forget that C++ really has multiple "standard" libraries too: the one inherited from C, the C++ native one (STL/iostreams), and then Boost.  Then on top of that just about every single GUI toolkit has its own set of utility classes because first off templates were extremely unreliably when most of the GUI projects were started, and second the official standard libraries try so damned hard to be platform-neutral that they are often not that useful for getting real work done.
> 
> So I agree.  There's absolutely no problem with multiple "standard" libraries.  People will use what suits them, and the chances of one library pleasing everyone are slim in a multi-paradigm language like D.
> 
> The main difference in the D situation is that all those various C++ libraries can be linked together and used in the same app without requiring modification of your compiler's installation.

That is indeed the problem, and it needs to be fixed urgently.

> 
> --bb

February 14, 2008
Alexander Panek Wrote:

> Sjoerd van Leent wrote:
> > To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different.
> 
> To be frank, I don't see how the purpose is different. :)
> 
> > The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc.
> 
> This is not entirely true. The Tango core is very well decoupled from the rest of the library, rendering it very useful for exactly those things.
> 
> > The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc.
> 
> Tango only provides the tools to create such applications. It does not, however, include a web server or database bindings/mappers. That's a seperate project called DDBI on DSource (http://dsource.org/projects/ddbi/).


aye ... and those webserver packages (along with various other server-related services) reside in the Mango project on dsource. They're built upon Tango, but not shipped as part of it.
February 15, 2008
On Wed, 13 Feb 2008 00:44:56 +0900, Bill Baxter wrote:

> People seem to forget that C++ really has multiple "standard" libraries too: the one inherited from C, the C++ native one (STL/iostreams), and then Boost.  Then on top of that just about every single GUI toolkit has its own set of utility classes because first off templates were extremely unreliably when most of the GUI projects were started, and second the official standard libraries try so damned hard to be platform-neutral that they are often not that useful for getting real work done.
> 
> So I agree.  There's absolutely no problem with multiple "standard" libraries.  People will use what suits them, and the chances of one library pleasing everyone are slim in a multi-paradigm language like D.
> 
> The main difference in the D situation is that all those various C++ libraries can be linked together and used in the same app without requiring modification of your compiler's installation.
> 
> --bb

You are correct that C++ has multiple standard libraries, but you neglect
the key point: They all work together, and for the most part they offer
complimentary rather than competitive functions (ignoring of course the C
and C++ standard libs which clearly do clash but for a valid reason)
Furthermore, the overall compilation result of C++ code -does- depend on
a single specific 'standard' runtime library for entry point/exit
handling and several other things like signal/exception handling and what
have you.
Boost also does not replace nor prevent the use of the STL/std, and does
not offer a lot of functionality provided by the stock standard libraries
(I'm pretty sure boost does not provide POSIX or system API). I would
call boost more of a heavily packed utility library.

On the other hand, in the case of Tango and Phobos you have to replace one of them to use the other, and their API compete with one another to the point of complete redundancy. This is a big difference compared to the C++ situation.