immer VS clasp

Compare immer vs clasp and see what are their differences.

immer

Postmodern immutable and persistent data structures for C++ — value semantics at scale (by arximboldi)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
immer clasp
25 47
2,420 2,500
- 1.0%
6.7 9.7
2 days ago 6 days ago
C++ Common Lisp
Boost Software License 1.0 -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

immer

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. 🍻

clasp

Posts with mentions or reviews of clasp. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-15.
  • I Accidentally a Scheme
    2 projects | news.ycombinator.com | 15 Nov 2023
    I accidentally a Common Lisp that interoperates with C++ (https://github.com/clasp-developers/clasp.git). We would also like to move beyond BDWGC and Whiffle looks interesting. I will reach out to you and maybe we can chat about it.
  • Val, a high-level systems programming language
    10 projects | news.ycombinator.com | 18 Jul 2023
    Clasp might be such a language, it seems.

    https://github.com/clasp-developers/clasp

  • The jank programming language (by Jeaye Wilkerson)
    1 project | /r/Clojure | 22 Jun 2023
    /u/jeaye are you aware of CLASP? https://github.com/clasp-developers/clasp https://www.youtube.com/watch?v=mbdXeRBbgDM
  • Clasp v2.3.0 · Bytecode compiled images, preliminary Apple Silicon support, LLVM16.
    1 project | /r/lisp | 5 Jun 2023
  • Proof of Concept clang plugin that automatically binds C/C++ -> Lua
    3 projects | /r/cpp | 3 Jun 2023
    Sounds to me like CLASP; it automatically exports C++ objects to be used from Common Lisp also via llvm.
  • Running Lisp in production @ grammarly
    1 project | /r/lisp | 24 Jan 2023
    Now, the difference of compiling speed of SBCL and CCL is not so big. Look at cl-benchmark, LispWorks is really fast, CCL is on par with Allegro, SBCL is close to CCL. Or https://github.com/clasp-developers/clasp/wiki/Relative-Compile-Performance-of-clasp, it depends on specific project (SBCL sometimes faster, slower, alike), overall difference is not big.
  • What help is needed for Lisp community in order to make Lisp more popular?
    2 projects | news.ycombinator.com | 25 Dec 2022
    So..

    "Why do you want to make Lisp more popular? If you were sucessful, what would be different in the world, and why is that desirable to you?"

    Normally at this point I'd listen to the response, and ask more questions based on that. That would wind up with a very, very deep thread, so I'll break a cardinal rule and pre-guess at some answers.

    This kind of question comes up pretty frequently. In many cases, I suspect the motivation behind the question is "Wow! Here's this cool tool I've discovered. I want to make something really useful with it. I want to do it as part of a community effort; share my excitement with others, share in their excitement, and know that what I'm making is useful because others find it desirable and are excited by it." The field could be cooking, sports, old machine tools, tiny homes, or demo scene. Its the fundemental driver for most content on HN, YouTube, Instructables, and such. It is a Good Thing.

    If that is your motivator, then my suggestion is to find something that bugs you and fix it. You've already decided you're only interested in code, not other aspects. You said you preferred vim, but the emacs ecosystem has a very rich set of sharp edges that need filing off, and a rich set of tools with which to attack them.

    One example: even after 50 years there's no open IDE which allows you to easily globally rename a Lisp identifier. I don't know about LispWorks or other proprietary environments, but you can't in emacs or vim do a right-click on "foo" in "(defun foo ()...)" and select a command which automatically renames it in all invocations. [Queue lots of "but you can..." replies here.] I don't think vim is up to the task of doing this internally. It would be possible in emacs; but would require a huge effort with lots of help from other people. If you emerged alive from that rabbit warren you'd join the company of Certified "How Hard Could it Be?" Mad Scientists such as Dr. "I just want to draw molecules" Meister [1] and "Wouldn't an OS in Lisp be Cool" Froggey [2].

    [1] https://github.com/clasp-developers/clasp

    [2] Mezzano https://github.com/froggey/Mezzano

  • Linux Kernel 6.1 Released with Initial Rust Code
    12 projects | /r/linux | 11 Dec 2022
    But also, there's a reason why most implementations readily make an effort to provide interoperability tools with a variety of runtimes. Clasp much like ABCL gives access to a whole library of other libraries trivially wrapped to interoperate with at little to no performance to cost (depending on how thin you make the wrappers, mainly).
  • Common Lisp Clasp v2.0.0 released
    1 project | /r/hypeurls | 28 Oct 2022
    1 project | news.ycombinator.com | 28 Oct 2022

What are some alternatives?

When comparing immer and clasp you can also consider the following projects:

babashka - Native, fast starting Clojure interpreter for scripting

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

clj-kondo - Static analyzer and linter for Clojure code that sparks joy

gdb-dashboard - Modular visual interface for GDB in Python

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.

CL-CXX-JIT - Common Lisp and CXX interoperation with JIT

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

deprecated-coalton-prototype - Coalton is (supposed to be) a dialect of ML embedded in Common Lisp.

SICL - A fresh implementation of Common Lisp

awesome-modern-cpp - A collection of resources on modern C++

maru - Maru - a tiny self-hosting lisp dialect