GC-free, high-performance D library: Containers, networking, metaprogramming, memory management, utilities.
Go to file
Eugen Wissner 6f405c5e08 Make Vector's opSliceAssign accept only own ranges
Vector.opSliceAssign and Vector.opIndexAssign should accept only vector
ranges. For assigning other ranges, std.algorithm.mutation.copy and
std.algorithm.mutation.fill should be used.
2017-05-02 10:56:32 +02:00
source/tanya Make Vector's opSliceAssign accept only own ranges 2017-05-02 10:56:32 +02:00
.gitignore SList: Add length and opEquals 2017-01-25 19:41:05 +01:00
.travis.yml Add support for dmd 2.074.0, remove 2.070.2 2017-04-13 16:02:18 +02:00
dub.json SList: Add length and opEquals 2017-01-25 19:41:05 +01:00
LICENSE Initial commit 2016-08-24 18:07:18 +02:00
README.md Add support for dmd 2.074.0, remove 2.070.2 2017-04-13 16:02:18 +02:00

Tanya

Build Status Dub version Dub downloads License

Tanya is a general purpose library for D programming language.

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.
  • math: Arbitrary 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.074.0
2.073.2
2.072.2
2.071.2

Current status

The library is currently under development, but the API is becoming gradually stable.

Following modules are coming soon:

Feature Build status
UTF-8 string utf8string
BitVector bitvector
Hash table N/A

math package contains an arbitrary precision integer implementation that needs more test cases, better performance and some additional features (constructing from a string and an ubyte array, and converting it back).

Further characteristics

  • Tanya is a native D library.

  • 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.