Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. aja

aja

MITElixir

An Elixir library extending the standard library with high-performance persistent vectors, ordered maps, and optimized Enum functions.

GitHubGitHub
226 stars6 forks0 contributors

What is aja?

Aja is an Elixir library that extends the standard library with high-performance data structures like persistent vectors and ordered maps, along with optimized utility functions. It solves the problem of inefficient data manipulation in Elixir by providing alternatives to lists and maps that offer better performance characteristics for specific operations.

Target Audience

Elixir developers working on performance-sensitive applications, those needing ordered map functionality, or anyone looking for more efficient data structures than standard lists and maps.

Value Proposition

Developers choose Aja because it provides well-documented, consistent APIs that integrate seamlessly with Elixir's ecosystem while offering significant performance improvements for data manipulation tasks, especially when working with large datasets.

Overview

Extension of the Elixir standard library focused on data stuctures, data manipulation and performance

Use Cases

Best For

  • Replacing lists when constant-time appends and random access are needed
  • Maintaining insertion order in maps without using keyword lists
  • Optimizing Enum operations on large collections
  • Implementing efficient persistent data structures in Elixir
  • Pattern matching on vector structures using convenience macros
  • Benchmarking performance-critical data manipulation code

Not Ideal For

  • Production systems requiring long-term API stability without breaking changes
  • Applications where minimal memory usage is critical and map order is irrelevant
  • Projects prioritizing fast compile times over runtime performance

Pros & Cons

Pros

Efficient Persistent Vectors

Aja.Vector provides constant-time appends and random access, benchmarked to outperform Erlang's :array module and offer faster operations than lists for many Enum functions.

Order-Preserving Maps

Aja.OrdMap maintains insertion order for any key type, addressing a gap in Elixir's standard library where only keyword lists offer order but with performance and key-type limitations.

Optimized Enum Module

Aja.Enum delivers highly optimized functions for Aja's data structures, often speeding up operations on large collections compared to the standard Enum module, as highlighted in benchmarks.

Seamless Elixir Integration

APIs are consistent with Elixir's core library, implementing protocols like Enumerable and Access, and offering convenience macros like Aja.vec/1 for easy adoption and pattern matching.

Cons

Early Stage Instability

The project explicitly states it's still early with breaking changes expected, making it risky for production use without careful versioning and testing.

Ordered Map Overheads

Aja.OrdMap has decent overhead in write operations and memory usage compared to plain maps, as extra work is needed to maintain insertion order, which can impact performance-critical scenarios.

Compile-Time Trade-off

Vectors optimize for fast runtime at the expense of compile time, which may slow down development cycles in projects with frequent builds or tight deployment schedules.

Frequently Asked Questions

Quick Stats

Stars226
Forks6
Contributors0
Open Issues0
Last commit10 months ago
CreatedSince 2020

Tags

#ordered-maps#functional-programming#elixir#ordered-map#data-structures#standard-library-extension#util#performance

Built With

E
Elixir

Included in

Elixir13.1k
Auto-fetched 11 hours ago

Related Projects

flowflow

Computational parallel flows on top of GenStage

Stars1,621
Forks90
Last commit20 days ago
witchcraftwitchcraft

Monads and other dark magic for Elixir

Stars1,236
Forks60
Last commit3 years ago
machinerymachinery

Elixir State machine thin layer for structs

Stars568
Forks56
Last commit2 years ago
fusefuse

A Circuit Breaker for Erlang

Stars513
Forks52
Last commit4 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