GC-free, high-performance D library: Containers, networking, metaprogramming, memory management, utilities.
Go to file
2017-01-04 20:37:55 +01:00
source/tanya Fix Vector.remove not destroying from the end copied elements 2017-01-04 20:37:55 +01:00
.gitignore Fix FreeBSD build 2016-12-24 22:25:34 +01:00
.travis.yml Vector: Use opEquals if defined to compare items 2017-01-02 06:59:05 +01:00
dub.json Add code 2016-08-24 18:15:21 +02:00
LICENSE Initial commit 2016-08-24 18:07:18 +02:00
README.md Fix Vector.remove not destroying from the end copied elements 2017-01-04 20:37:55 +01:00

Tanya

Build Status Dub Version License

Tanya is a general purpose library for D programming language that doesn't rely on the Garbage Collector.

Its aim is to simplify the manual memory management in D and to provide a guarantee with @nogc attribute that there are no hidden allocations on the Garbage Collector heap. Everything in the library is usable in @nogc code. Tanya extends Phobos functionality and provides alternative implementations for data structures and utilities that depend on the Garbage Collector in Phobos.

Overview

Tanya consists of the following packages:

  • async: Event loop (epoll, kqueue and IOCP).
  • container: Queue, Vector, Singly linked list, buffers.
  • crypto: Work in progress TLS implementation.
  • math: Multiple precision integer and a set of functions.
  • memory: Tools for manual memory management (allocator, reference counting, helper functions).
  • network: URL-Parsing, sockets.

Supported compilers

  • dmd 2.072.2
  • dmd 2.071.2

Current status

The library is currently under development, but some parts of it can already be used.

Containers were newly reworked and the API won't change significantly, but will be only extended. The same is true for the memory package.

network and async packages should be reviewed in the future and the API may change.

math package contains an arbitrary precision integer implementation that has a stable API (that mostly consists of operator overloads), but still needs testing and work on its performance.

I'm currently mostly working on crypto that is not a complete cryptographic suite, but contains (will contain) algorithm implementations required by TLS.

Further characteristics

  • Tanya is a native D library.

  • Documentation and usage examples can be found in the source code. Online documentation will be published soon.

  • Tanya is cross-platform. The development happens on a 64-bit Linux, but it is being tested on Windows and FreeBSD as well.

  • The library isn't thread-safe. Thread-safity should be added later.

Contributing

Since I'm mostly busy writing new code and implementing new features I would appreciate, if anyone uses the library. It would help me to improve the codebase and fix issues.

Feel free to contact me if you have any questions.