Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Immer – A library of persistent and immutable data structures written in C++ (github.com/arximboldi)
91 points by smartmic 14 hours ago | hide | past | favorite | 10 comments




Any sense how, if at all, C++ Immer and JS Immer relate as projects? They’re basically meant to be the same thing but I haven’t found either acknowledging the other.

Completely unrelated.

- Immer (C++) appears to be roughly equivalent to Immutable.js ( https://immutable-js.com/ ): a set of specialized data structures

- Immer (JS), on the other hand, uses JS Proxies to wrap plain values, traps attempted mutations, and then replays them to return a safely immutable updated final result

As far as I know, Michel Weststrate came up with the name independently (although I can't 100% confirm that).

(source: I didn't create Immer (JS), but I started using it in Redux Toolkit in 2018, am quoted in the docs about how much I love it, spent the last couple months doing performance optimization work that got shipped in Immer 11.x, and just put up some more bugfix PRs today. I'm a secondary maintainer at this point.)


Thanks for your work, really appreciated the RTK perf boost!

'Immer' is just German for 'always' or 'eternal'. So giving that name to your library of persistent and immutable data structures is a fairly natural thing to do, without them having anything more in common than that.

(Of course, they might have more in common, I don't know.)


Immer is also a dutch word, with the same meaning as in german.

For the curious, yes they provide a garbage-collected heap [1] as well as reference counting.

[1] https://sinusoid.es/immer/memory.html#classimmer_1_1gc__heap


Popular in:

2019 (102 points, 56 comments) https://news.ycombinator.com/item?id=20947222

2016 (144 points, 46 comments) https://news.ycombinator.com/item?id=13049843


I used this library extensively in a prototype of a project and it was awesome!

Besides performance, the API is very well thought.


Good stuff. Very good stuff.

Anyone else religiously went through 490 packages in cppget to make sure they aren't missing out?



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: