GC-free, high-performance D library: Containers, networking, metaprogramming, memory management, utilities.
Go to file
Eugene Wissner 45825946c0 Appveyor (#10)
* Add appveyor.yml

* Try major VC version

* Switch to VC 2015

* Try new version

* Try enterprise

* Try another path

* Change VC template

* Set arch

* Set LINKCMD64

* Fix quotes

* Update LINKCMD64

* remove dir

* Update arch

* Fix syntax

* Set arch to x64

* Remove extra dub downloading

* Remove dub version

* Download dub for 2.071.2

* Use DVersion

* Fix nul in powershell

* Put quotes to commands

* Add badges
2017-05-11 06:26:59 +02:00
source/tanya mp.Integer: add two's complement constructor 2017-05-10 19:27:25 +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
appveyor.yml Appveyor (#10) 2017-05-11 06:26:59 +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 Appveyor (#10) 2017-05-11 06:26:59 +02:00

Tanya

Build status 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, UTF-8 string.
  • crypto: HMAC.
  • math: Arbitrary precision integer and a set of functions.
  • memory: Tools for manual memory management (allocator, reference counting, helper functions).
  • network: URL-Parsing, sockets, utilities.

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 Branch Build status
BitVector bitvector bitvector bitvector
TLS crypto crypto crypto
File IO io io io

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.

Release management

4-week release cycle.

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.