It isn't really a release announce, maybe a pre-release.

tanya is a general purpose library, used mostly for networking by me. It is an attempt to develop an alternative memory model for D; 100% of the library are usable in @nogc code.

I previously announced that I want to merge my code with another project and that I would stop the development. But it didn't happen. I'm sorry that I wanted to abandon it. It won't happen anymore. I'll continue the development.

tanya contains an event loop, containers, an URL parsing routine and alternative TCP sockets implementation, multiple precision integer. The library is cross plattform, but not thread-safe yet.

The memory management is based on allocators. The allocators are one-way compatible with std.experimental.allocator, it means my allocators can be used with std.exeperimental.allocator but the std.experimental.allocator isn't usable with my lbirary (though it is pretty straightforward to write a wrapper for phobos allocators). tanya's allocators follow Bloomberg Allocator Model, see discussions on BDE Allocator Model for pro and contra.

And sorry once again for a long post...

What's new:
- Bug fixes and performance improvements in the main allocator: MmapPool. - Container redesign: There is a new container, Vector (similar to std.container.array) with the support of ranges and all the cool stuff. I also started to experiment with the "move" semantics in D based on the D conf talk of Ali Çehreli. There are also a singly linked list, circular buffer and a queue. SList will get range support soon, and some time later the buffers.
- Bug fixes in the epoll event loop and a few new features.
- RefCounted: more similar to C++ shared_ptr than to phobos' RefCounted, but more primitive.

Future plans:
I still need a few more containers: UTF-8 string and a hash table. The string won't be the same as RCString. I'm thinking of a not templated string with UTF-8 support only (with a possibility to initialize it from a string, dstring and wstring). Big integer bug fixing and optimization has a priority aswell for me. I'm also planning to add streams but it won't happen very soon since it is a lot of work.

I plan to start a small blog in April based on the library (university project). It will be a SCGI-server, serving only static pages, behind Apache. It will be the first try-out :). From there I can move to a http-server.

The library is still under permanent development. I begin to care about the API stability and proper deprecations, but it isn't always possible. I intend to make releases regularly, maybe all the 6 weeks and to prepare some new features for each of the releases. The API docs for the latest version can be found on If you have questions, need some examples, let me know. I'll write something up and publish it somewhere.

Reply via email to