tanya library 0.2.0
Eugene Wissner via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Sat Feb 18 07:51:59 PST 2017
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
https://docs.caraus.io/tanya/
If you have questions, need some examples, let me know. I'll
write something up and publish it somewhere.
https://github.com/caraus-ecms/tanya
http://code.dlang.org/packages/tanya
https://docs.caraus.io/tanya/
More information about the Digitalmars-d-announce
mailing list