2016-12-08 14:43:50 +01:00
|
|
|
# Tanya
|
2016-10-08 20:45:03 +02:00
|
|
|
|
2017-05-11 06:26:59 +02:00
|
|
|
[![Build status](https://travis-ci.org/caraus-ecms/tanya.svg?branch=master)](https://travis-ci.org/caraus-ecms/tanya)
|
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/djkmverdfsylc7ti/branch/master?svg=true)](https://ci.appveyor.com/project/belka-ew/tanya/branch/master)
|
2017-05-11 13:15:04 +02:00
|
|
|
[![codecov](https://codecov.io/gh/caraus-ecms/tanya/branch/master/graph/badge.svg)](https://codecov.io/gh/caraus-ecms/tanya)
|
2017-01-07 15:25:05 +01:00
|
|
|
[![Dub version](https://img.shields.io/dub/v/tanya.svg)](https://code.dlang.org/packages/tanya)
|
|
|
|
[![Dub downloads](https://img.shields.io/dub/dt/tanya.svg)](https://code.dlang.org/packages/tanya)
|
2016-12-24 22:25:34 +01:00
|
|
|
[![License](https://img.shields.io/badge/license-MPL_2.0-blue.svg)](https://raw.githubusercontent.com/caraus-ecms/tanya/master/LICENSE)
|
2016-12-08 15:00:09 +01:00
|
|
|
|
2017-01-09 17:03:09 +01:00
|
|
|
Tanya is a general purpose library for D programming language.
|
2016-12-07 23:16:49 +01:00
|
|
|
|
2016-12-24 22:25:34 +01:00
|
|
|
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.
|
2016-12-08 14:43:50 +01:00
|
|
|
|
2017-02-10 17:28:55 +01:00
|
|
|
* [Bug tracker](https://issues.caraus.io/projects/tanya)
|
2017-02-18 16:35:06 +01:00
|
|
|
* [Documentation](https://docs.caraus.io/tanya)
|
2017-02-10 17:28:55 +01:00
|
|
|
|
2016-12-08 18:30:22 +01:00
|
|
|
## Overview
|
|
|
|
|
|
|
|
Tanya consists of the following packages:
|
2016-12-08 14:43:50 +01:00
|
|
|
|
2017-01-04 20:37:55 +01:00
|
|
|
* `async`: Event loop (epoll, kqueue and IOCP).
|
2017-05-06 11:55:20 +02:00
|
|
|
* `container`: Queue, Vector, Singly linked list, buffers, UTF-8 string.
|
2017-05-03 19:05:23 +02:00
|
|
|
* `crypto`: HMAC.
|
2017-01-25 07:24:19 +01:00
|
|
|
* `math`: Arbitrary precision integer and a set of functions.
|
2016-12-27 23:49:22 +01:00
|
|
|
* `memory`: Tools for manual memory management (allocator, reference counting,
|
|
|
|
helper functions).
|
2017-05-03 19:05:23 +02:00
|
|
|
* `network`: URL-Parsing, sockets, utilities.
|
2016-12-24 22:25:34 +01:00
|
|
|
|
2016-12-27 23:49:22 +01:00
|
|
|
### Supported compilers
|
|
|
|
|
2017-04-13 16:01:35 +02:00
|
|
|
| dmd |
|
|
|
|
|:-------:|
|
|
|
|
| 2.074.0 |
|
|
|
|
| 2.073.2 |
|
|
|
|
| 2.072.2 |
|
|
|
|
| 2.071.2 |
|
2016-12-27 23:49:22 +01:00
|
|
|
|
2016-12-24 22:25:34 +01:00
|
|
|
### Current status
|
|
|
|
|
2017-01-25 07:24:19 +01:00
|
|
|
The library is currently under development, but the API is becoming gradually
|
|
|
|
stable.
|
2016-12-24 22:25:34 +01:00
|
|
|
|
2017-04-13 16:01:35 +02:00
|
|
|
Following modules are coming soon:
|
|
|
|
|
2017-05-10 13:18:58 +02:00
|
|
|
| Feature | Branch | Build status |
|
|
|
|
|--------------|:---------:|:---------------------------------------------------------------------------------------------------------------------:|
|
2017-05-11 07:05:13 +02:00
|
|
|
| BitVector | bitvector | [![bitvector](https://travis-ci.org/caraus-ecms/tanya.svg?branch=bitvector)](https://travis-ci.org/caraus-ecms/tanya) [![bitvector](https://ci.appveyor.com/api/projects/status/djkmverdfsylc7ti/branch/bitvector?svg=true)](https://ci.appveyor.com/project/belka-ew/tanya/branch/bitvector) |
|
|
|
|
| TLS | crypto | [![crypto](https://travis-ci.org/caraus-ecms/tanya.svg?branch=crypto)](https://travis-ci.org/caraus-ecms/tanya) [![crypto](https://ci.appveyor.com/api/projects/status/djkmverdfsylc7ti/branch/crypto?svg=true)](https://ci.appveyor.com/project/belka-ew/tanya/branch/crypto) |
|
|
|
|
| File IO | io | [![io](https://travis-ci.org/caraus-ecms/tanya.svg?branch=io)](https://travis-ci.org/caraus-ecms/tanya) [![io](https://ci.appveyor.com/api/projects/status/djkmverdfsylc7ti/branch/io?svg=true)](https://ci.appveyor.com/project/belka-ew/tanya/branch/io) |
|
2016-12-24 22:25:34 +01:00
|
|
|
|
2016-12-27 23:49:22 +01:00
|
|
|
### Further characteristics
|
2016-12-24 22:25:34 +01:00
|
|
|
|
2016-12-27 23:49:22 +01:00
|
|
|
* Tanya is a native D library.
|
2016-12-24 22:25:34 +01:00
|
|
|
|
2016-12-27 23:49:22 +01:00
|
|
|
* Tanya is cross-platform. The development happens on a 64-bit Linux, but it
|
2017-01-01 02:51:49 +01:00
|
|
|
is being tested on Windows and FreeBSD as well.
|
2016-12-24 22:25:34 +01:00
|
|
|
|
|
|
|
* The library isn't thread-safe. Thread-safity should be added later.
|
|
|
|
|
2017-05-03 19:05:23 +02:00
|
|
|
## Release management
|
|
|
|
|
|
|
|
4-week release cycle.
|
|
|
|
|
2016-12-24 22:25:34 +01:00
|
|
|
## 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.
|