tanya/README.md

69 lines
2.4 KiB
Markdown
Raw Normal View History

# Tanya
2016-10-08 20:45:03 +02:00
2016-12-08 15:00:09 +01:00
[![Build Status](https://travis-ci.org/caraus-ecms/tanya.svg?branch=master)](https://travis-ci.org/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-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.
2017-02-10 17:28:55 +01:00
* [Bug tracker](https://issues.caraus.io/projects/tanya)
## Overview
Tanya consists of the following packages:
* `async`: Event loop (epoll, kqueue and IOCP).
* `container`: Queue, Vector, Singly linked list, buffers.
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).
* `network`: URL-Parsing, sockets.
2016-12-24 22:25:34 +01:00
2016-12-27 23:49:22 +01:00
### Supported compilers
2017-01-24 16:15:14 +01:00
* dmd 2.073.0
* dmd 2.072.2
2016-12-27 23:49:22 +01:00
* dmd 2.071.2
2017-01-25 07:24:19 +01:00
* dmd 2.070.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-01-25 07:24:19 +01:00
`container`s are being extended to support ranges. Also following modules are
coming soon:
* UTF-8 string.
* Hash table.
2017-01-09 17:03:09 +01:00
2017-01-25 07:24:19 +01:00
`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).
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
* Documentation and usage examples can be found in the source code.
Online documentation will be published soon.
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
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.
## 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.