Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. D
  3. EMSI containers

EMSI containers

BSL-1.0Dv0.9.0

A D language container library using std.experimental.allocator for flexible memory management.

Visit WebsiteGitHubGitHub
111 stars40 forks0 contributors

What is EMSI containers?

Containers is a D programming language library that provides alternative implementations of common data structures like arrays, lists, and trees. It solves the problem of inflexible memory management in standard containers by integrating with D's experimental allocator system, allowing developers to use custom memory allocation strategies for better performance control.

Target Audience

D language developers who need fine-grained control over memory allocation in their container usage, particularly those working on performance-critical applications or systems with specific memory constraints.

Value Proposition

Developers choose this library over Phobos' default containers because it offers full compatibility with D's experimental allocator system, enabling custom memory management strategies while providing familiar container interfaces and often better performance through specialized implementations.

Overview

Containers backed by std.experimental.allocator

Use Cases

Best For

  • Implementing custom memory allocation strategies with standard data structures
  • Performance-critical applications where memory management needs fine-tuning
  • Systems with specific memory constraints requiring specialized allocators
  • Replacing Phobos containers with allocator-aware alternatives
  • Educational purposes to understand allocator-integrated data structures
  • Benchmarking different allocation strategies with container operations

Not Ideal For

  • Projects using Phobos containers without needing custom memory allocation strategies.
  • Developers seeking a comprehensive set of container types including hash maps, sets, or deques, as this library only offers a limited selection.
  • Teams with tight deadlines that cannot afford the setup time and learning curve for integrating allocator-based systems.

Pros & Cons

Pros

Custom Allocator Support

Fully integrates with D's std.experimental.allocator module, allowing developers to use any allocator for fine-tuned memory management and performance optimization.

Performance Optimization

Benchmarks in the README show faster insertion speeds for TTree and SList compared to Phobos equivalents, indicating efficiency improvements for specific use cases.

Specialized Data Structures

Includes unique implementations like TTree (a balanced tree for ordered storage) and UnrolledList (reduces overhead by storing multiple elements per node), catering to niche performance needs.

Familiar Interfaces

Maintains interfaces similar to Phobos containers, making adoption smoother for developers already accustomed to D's standard library syntax and usage.

Cons

Limited Container Variety

Only provides a few container types (DynamicArray, SList, TTree, UnrolledList), lacking common structures like hash maps or double-ended queues, which may require supplementing with other libraries.

Experimental Dependencies

Relies on std.experimental.allocator, which is not part of D's stable standard library and could undergo breaking changes, posing risks for long-term project stability.

Steeper Learning Curve

Requires understanding of D's allocator system to use effectively, adding complexity and initial setup time compared to drop-in Phobos containers.

Frequently Asked Questions

Quick Stats

Stars111
Forks40
Contributors0
Open Issues9
Last commit2 years ago
CreatedSince 2014

Tags

#d#d-language#fast#array#memory-allocator#data-structures#standard-library#hashmap#set#containers#performance

Built With

D
D

Links & Resources

Website

Included in

D748
Auto-fetched 1 day ago

Related Projects

dlib.containerdlib.container

Allocators, I/O streams, math, geometry, image and audio processing for D

Stars231
Forks33
Last commit24 days ago
memutilsmemutils

Overhead allocators, allocator-aware containers and lifetime management for D objects

Stars45
Forks12
Last commit2 months ago
std.rcstringstd.rcstring

A reference counted string implementation for D's build in string construct.

Stars9
Forks3
Last commit7 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub