immer

Postmodern immutable and persistent data structures for C++ — value semantics at scale (by arximboldi)

Immer Alternatives

Similar projects and alternatives to immer

  1. Visual Studio Code

    3,118 immer VS Visual Studio Code

    Visual Studio Code

  2. InfluxDB

    InfluxDB high-performance time series database. Collect, organize, and act on massive volumes of high-resolution data to power real-time intelligent systems.

    InfluxDB logo
  3. Immer

    150 immer VS Immer

    Create the next immutable state by mutating the current one

  4. babashka

    125 immer VS babashka

    Native, fast starting Clojure interpreter for scripting

  5. clojure

    110 immer VS clojure

    The Clojure programming language

  6. min-sized-rust

    🦀 How to minimize Rust binary size 📦

  7. Carp

    88 immer VS Carp

    A statically typed lisp, without a GC, for real-time applications.

  8. factor

    63 immer VS factor

    Factor programming language

  9. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  10. clasp

    52 immer VS clasp

    clasp Common Lisp environment (by clasp-developers)

  11. Wren

    47 immer VS Wren

    The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language.

  12. jank

    39 immer VS jank

    The native Clojure dialect hosted on LLVM with seamless C++ interop.

  13. libgit2

    A cross-platform, linkable library implementation of Git that you can use in your application.

  14. mun

    26 immer VS mun

    Source code for the Mun language and runtime.

  15. Boost.Asio

    Asio C++ Library

  16. deprecated-coalton-prototype

    Discontinued Coalton is (supposed to be) a dialect of ML embedded in Common Lisp.

  17. core.typed

    6 immer VS core.typed

    An optional type system for Clojure

  18. graalvm-clojure

    This project contains a set of "hello world" projects to verify which Clojure libraries do actually compile and produce native images under GraalVM.

  19. cloture

    8 immer VS cloture

    Clojure in Common Lisp

  20. awesome-modern-cpp

    A collection of resources on modern C++

  21. pil21

    6 immer VS pil21

    PicoLisp is an open source Lisp dialect. It is based on LLVM and compiles and runs on any 64-bit POSIX system. Its most prominent features are simplicity and minimalism.

  22. ewig

    3 immer VS ewig

    The eternal text editor — Didactic Ersatz Emacs to show immutable data-structures and the single-atom architecture

  23. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better immer alternative or higher similarity.

immer discussion

Log in or Post with

immer reviews and mentions

Posts with mentions or reviews of immer. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-11.
  • Text Editor Data Structures: Rethinking Undo
    3 projects | news.ycombinator.com | 11 Dec 2023
    I've been working on an editor (not text) in C++ and pretty early got into undo/redo. I went down the route of doIt/undoIt for commands but that quickly got old. There was both the extra work needed to implement undo separately for every operation, but also the nagging feeling that the undo operation for some operation wasn't implemented correctly.

    In the end, I switched to representing the entire document state using persistent data structures (using the immer library). This vastly simplified things and implementing undo/redo becomes absolutely trivial when using persistent data structures. It's probably not something that is suitable for all domains, but worth checking out.

    https://github.com/arximboldi/immer

  • Show HN: A hash array-mapped trie implementation in C
    2 projects | news.ycombinator.com | 10 Jul 2023
    How does this compare to https://github.com/arximboldi/immer (other than the C/C++ difference)?

    Also, it's my understanding that, in practice, persistent data structures require a garbage collector in order to handle deallocation when used in a general-purpose way. How does your implementation handle that?

  • Text Editor Data Structures
    6 projects | news.ycombinator.com | 13 Jun 2023
    You might be interested in ewig and immer by Juan Pedro Bolivar Puente:

    https://github.com/arximboldi/ewig

    https://github.com/arximboldi/immer

    See the author instantly opening a ~1GB text file with async loading, paging through, copying/pasting, and undoing/redoing in their prototype “ewig” text editor about 27 minutes into their talk here:

    https://m.youtube.com/watch?v=sPhpelUfu8Q

    It’s backed by a “vector of vectors” data structure called a relaxed radix balanced tree:

    https://infoscience.epfl.ch/record/169879/files/RMTrees.pdf

    That original paper has seen lots of attention and attempts at performance improvements, such as:

    https://hypirion.com/musings/thesis

    https://github.com/hyPiRion/c-rrb

  • value semantics and spans/views
    1 project | /r/cpp | 11 Jun 2023
    You’re absolutely right, however people have been putting in the “extra efforts” required for efficiency. Check out immer if you’re interested.
  • How to synchronize access to application data in multithreaded asio?
    3 projects | /r/cpp | 8 Jun 2023
    The C++ immer library: https://github.com/arximboldi/immer
  • Purely Functional Data Structure by Chris Okasaki [pdf]
    3 projects | news.ycombinator.com | 30 May 2023
    For C++ check this one out - https://github.com/arximboldi/immer
  • Persistent and immutable data structures written in C++14
    1 project | news.ycombinator.com | 10 May 2023
  • Introducing B++ Trees, a C++ B+ Tree library
    3 projects | /r/cpp | 24 Apr 2023
    Yeah I agree that I should link that wikipedia page in the docs, I'll do that as soon as I get a chance. immer (https://github.com/arximboldi/immer) also links that page in its docs, for the exact same reason I'm sure. Interestingly, there is a lot of overlap between persistent data structures in the functional programming sense and persistent data structures in the persisted-to-disk sense because persistent data structures in the FP sense are one of the best ways to guarantee atomic updates and safe failure recovery in a persisted-to-disk system! Btrfs and ZFS, as well as many databases, are at their core basically just copy-on-write B+ trees.
  • What are some architectural patterns for creating a game editor.
    1 project | /r/gameenginedevs | 11 Mar 2023
    I’ve never tried it, but I love the idea of implementing editor scene state using immutable data structures like https://github.com/arximboldi/immer With that, every edit would append a new node to a list of scene states. Undo/redo becomes iterating your view of the scene up and down through that list. Can’t screw up an undo function if there’s never any work to do :P
  • TypeScript Without Side Effects
    4 projects | /r/typescript | 22 Feb 2023
    I have! I think it's related to the C++ immer library which I used several years ago in Vortex. It's kinda like the previous generation of ValueScript. 🍻
  • A note from our sponsor - CodeRabbit
    coderabbit.ai | 19 Apr 2025
    Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR. Learn more →

Stats

Basic immer repo stats
25
2,547
9.0
7 months ago

arximboldi/immer is an open source project licensed under gtkbook License which is not an OSI approved license.

The primary programming language of immer is C++.


Sponsored
InfluxDB high-performance time series database
Collect, organize, and act on massive volumes of high-resolution data to power real-time intelligent systems.
influxdata.com

Did you know that C++ is
the 7th most popular programming language
based on number of references?