Coming IO features in Tango

Robert Fraser fraserofthenight at gmail.com
Sun Jun 24 12:23:01 PDT 2007


Awesome! As a SEDA lover, I give you my 100% stamp of approval! Thanks for all the hard work you guys are putting in!

Out of curiosity, will Tango be 2.0-ready soon?

Lars Ivar Igesund Wrote:

> Dear D community
> 
> To make the Tango development process more transparent, we will start
> announcing new and coming features outside of the release cycle itself.
> This may be important changes to Tango, notable feature additions or
> particularly exciting compatible libraries. They will be about features
> already near-finished or well on the way, to avoid false pretences.
> 
> By popular demand, the Tango IO subsystem now exposes a 'stream' oriented
> API which will be available in the upcoming release 0.99. Tango streams are
> described by InputStream and OutputStream, which are hosted by the existing
> Conduit mechanism. Both input and output support the notion of 'filter'
> chains: distinct chains of attached streams to manipulate content as it
> flows in one direction or the other. In order to avoid the pitfalls of a
> purely Decorator-pattern design, these stream chains are fully encapsulated
> within the hosting Conduit -- this allows the specific attributes of a
> Conduit (such as file seek, or various socket attributes) to be exposed at
> all times, instead of trying to force-fit those options into the stream
> itself. Thus, streams retain an uncomplicated API with little more than
> read, write, copy and flush operations.
> 
> Tango has been adjusted in various ways to take advantage of the new
> streams, and we'll see further use of that model in later releases.
> 
> Further on, we're building an asynchronous I/O library based on Tango's IO
> abstractions with notifications sent on completion of I/O events. The plan
> for the first stage of development is to have an API capable of delivering
> I/O, timer and (possibly) Unix signal events to applications through
> delegates. It will be able to efficiently handle large numbers ( i.e.
> thousands) of active file descriptors/handles (sockets, pipes, etc.) on all
> the platforms that Tango supports. Initially the library will work both on
> Windows (using I/O completion ports) and on Linux (using epoll); we will
> then provide a Mac OS X and FreeBSD implementation (based on kqueue), and
> other platforms if there is enough interest from the community.
> 
> During the second stage of development we will build a framework on top of
> the asynchronous I/O library that will be able to multiplex I/O jobs using
> Tango Fibers (i.e. lightweight or userspace threads). Each fiber waiting
> for I/O events will be suspended until the event is received, helping to
> avoid consuming excessive resources. The load from each fiber will be
> distributed among a pool of threads.
> 
> The idea behind both libraries is to be able to efficiently implement
> network protocols that are either synchronous (HTTP, SMTP, etc.) and
> asynchronous (XMPP, etc.) in nature in both client and server applications.
> 
> Contact:
> http://www.dsource.org/projects/tango/wiki/Contact 
> 
> Signed, 
> 
> The Tango Team 
> 
> http://www.dsource.org/projects/tango/wiki/Contributors 
> 
> ----
> 
> Tango is a D library providing a cohesive runtime and library for the D
> programming language. A feature list can be found on
> http://www.dsource.org/projects/tango/wiki/Features




More information about the Digitalmars-d-announce mailing list