Skip to content

tanya 0.11.2

Compare
Choose a tag to compare
@belka-ew belka-ew released this 08 Sep 05:48
· 120 commits to master since this release

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 missing tanya.range.array import
  • tanya.container.set: Allow hasher to take arg by ref (Thanks to @n8sh)
  • tanya.conv.to: Fix taking out of range chars for hex values
  • tanya.algorithm.iteration: Added missing imports for take() and takeExactly()
  • tanya.algorithm.iteration: Voldemort structs for take() and takeExactly() are now static
  • tanya.algorithm.iteration.takeExactly: Doesn't wrap ranges that have slicing

New

  • tanya.algorithm.mutation: Add copy()
  • tanya.net.ip: This new module contains IPv4 and IPv6 parsers
  • tanya.net.iface: This new module contains nameToIndex() and indexToName() which convert between interface ID and name
  • tanya.memory.op: Add findNullTerminated() (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 to tanya.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.