tanya 0.11.2
Supported compilers:
- dmd 2.081.2 - 2.082.0
- gdc-7 and gdc-8 (2.081.2)
- Some modules (
tanya.net.iface
) require building with--arch=x86_mscoff
on 32-bit Windows now.
Bugfixes
tanya.net.inet
: Add missingtanya.range.array
importtanya.container.set
: Allow hasher to take arg by ref (Thanks to @n8sh)tanya.conv.to
: Fix taking out of range chars for hex valuestanya.algorithm.iteration
: Added missing imports fortake()
andtakeExactly()
tanya.algorithm.iteration
: Voldemort structs fortake()
andtakeExactly()
are now statictanya.algorithm.iteration.takeExactly
: Doesn't wrap ranges that have slicing
New
tanya.algorithm.mutation
: Addcopy()
tanya.net.ip
: This new module contains IPv4 and IPv6 parserstanya.net.iface
: This new module containsnameToIndex()
andindexToName()
which convert between interface ID and nametanya.memory.op
: AddfindNullTerminated()
(strlen()
alternative)
Deprecated
-
tanya.range.primitive.put
: Deprecated putting an input into an output range (tanya.algorithm.mutation.copy
should be used instead) -
tanya.range.adapter
: The module is deprecated for now. The only adapter it contained,take()/takeExactly()
, is moved totanya.algorithm.iteration
.A lot of algorithms like lazy sort() can be also classified as adapters
since it wraps the original range and allows to access the elements of
the range in a particular order. The only reason why take() was in
range.adapter is that take() is trivial - it doesn't change the order of
elements but can turn an infinite range into finite one. This
distinction between trivial and non-trivial algorithms isn't absolutely
clear. So let us put all algorithms and any adapters that change the
range iteration in some way into "algorithm" package to avoid any
confusion later.