phobos-next 0.5.1

Various reusable D code.

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:


Additional useful containers, algorithms, wrapper types, traits etc. Several are generic enough to have a place in Phobos.

Documentation used to be generated here but it’s currently out of date and I don’t know how to update it.

Announcement here.



  • trie.d: Trie with sortedness and prefix completion(s).
  • dynamic_array.d: Basic uncopyable array with value semantics and explicit copying via .dup.
  • fixed_dynamic_array.d: Dynamically allocated (heap) array with fixed length.
  • minimal_static_array.d: Minimalistic statically-sized (stack) array of length smaller than 255 fitting in an ubyte for compact packing.
  • hybrid_hashmap.d: Combined hashset and hashmap with open addressing and support for deletion via hole handling. Pointers and classes are stored as is with support for vacancy and hole handling. Vacancy support for std.typecons.Nullable.
  • cyclic_array.d: Cyclic array.
  • filterarray.d: Filter array.
  • static_array.d: Fixed-sized statically allocated (heap) array similar to C++ std::array.
  • fixed_dynamic_array.d: Fixed-sized heap-allocated array.
  • bitarray.d: A dynamically sized (heap) bit array.
  • static_bitarray.d: A statically sized (stack) bit array.
  • ...

For reference semantics wrap uncopyable containers in std.typecons.RefCounter.

Wrapper types

  • bound.d: A wrapper for bounded types.
  • notnull.d: Enhanced NotNull.
  • digest_ex.d: A structured wrapper for message digests.
  • sorted.d: A structured wrapper for sorted random access containers (arrays).
  • ...


  • integer_sorting.d: Integer sorting algorithms, including radix sort.
  • horspool.d: Boyer-Moore-Hoorspool search.
  • ...


  • dbgio.d: Debug printing.
  • csunits.d: Computer Science units.
  • ...


  • Various extension to Phobos (often ending with _ex.d)
  • ...

Other general notes

  • The __traits(isPOD, T) is used to detect when a instance of T can be passed by value opposite to passed by move. For details see



  • Per Nordlöw <>
silly, mir-algorithm
0.5.1 2022-Dec-21
0.5.0 2022-Nov-28
0.4.6 2022-Nov-25
0.4.5 2022-Nov-25
0.4.4 2022-Nov-25
Show all 24 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 765 downloads total

Short URL: