HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
arximboldi
ewig
C++2017–2023
arximboldi / ewig

ewig

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

7Distinct people
14Mentions
0Explicit recommenders
549GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

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

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year14 dated mentions

Observed mentions: 2017-08-28 13:38:48 UTC to 2023-06-14 04:49:21 UTC.

0123452017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC404
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC514
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101

What Hacker News says

14 sources
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
In Text Editor Data Structures
Hey. Check out Juan Pedro Bolivar Puente's talks om value oriented design. He worked on Ableton which is a large application. He specifically speaks to Undo. He describes a much better pattern than the Command Pattern. He also released his source for Value Oriented Data structures Juan Pedro is a next level programmer who I think has pushed the craft forward through his work on bringing Value Oriented Design into the C++ world. Talk I https://youtu.be/sPhpelUfu8Q Talk II https://youtu.be/SAMR5GJ_GqA Data Structures: https://github.com/arximboldi/immer Application Structure: https://github.com/arximboldi/lager Text Editor: https://github.com/arximboldi/ewig Good luck.
In Ask HN: What are the best advanced computer science courses online?
That's a tricky question. Large C++ codebases often have a lot of "legacy" that does not necessarily reflect the best practices. A couple of years ago I wrote a text-editor to have a realistic example of what I consider a nice modern architecture using immutable data-structures. In the README there is also a link to a talk where I cover some of the design and structure: https://github.com/arximboldi/ewig Libraries that it uses: https://github.com/arximboldi/immer https://github.com/arximboldi/lager
In Ask HN: Good C++ code bases to read?
The language and notation is inconsistent with hundreds of years of use in maths and confusing for kids learning both maths and programming (at least it confused me). Regarding your skeptism of immutable data structures, it's best to think of immutable data and data structures as copy-on-write instead of update-in-place. This is a technique that is currently very underused, for example most programming languages do not come with "persistent" copy-on-write collections. Here is an example text editor built using immutable data structures in C++: https://github.com/arximboldi/ewig Advantages are excellent support for concurrency (background save works while you edit) and trivial support for undo/redo.
In OOP: History, and challenges for the next fifty years (2013)
I am working on something like that for C++, a library + debugger called Lager. Quite experimental yet, but been using it to write apps with SDL and Ncurses and I am happy with how it is going... In the end it is a very simple architecture, implementable in any language. Good immutable data-structures are important for big programs though. Library: https://github.com/arximboldi/lager Ncurses example (full text-editor): https://github.com/arximboldi/ewig SDL example: https://twitter.com/sinusoidalen/status/939539173584916480 Immutable data: https://github.com/arximboldi/immer (There was a talk about Lager at MeetingCpp this year, still waiting for it to be published online...)
In Git is a purely functional data structure (2013)
My most popular open-source project [1] I talk about at conferences, mostly C++ ones (last example [2]). I was lucky to also land a paper about it at ICFP'17 [3]. On Friday I will talk at the MeetingCpp conference in Berlin about a new library I am building (kind of experimental Redux for C++ with time-travelling debugger!). I work as a freelancer and at the moment I do client work 3 days a week and dedicate the rest of the time to the open-source work. The open-source work includes doing research and implementing these tools, but also preparing the talks, which is a very time consuming task for me. Doing conference talks is very emotionally exhausting, I dread the previous weeks to the talk---but the feeling afterwards is very good and it is a good way to get exposure, I hope. My dream is to some day form a social company with a coop
Read the rest
structure that works full-time on open-source, either directly or indirectly helping clients use these tools in their system. I hope I am set up in the right direction. Recently I opened a Twitter account to talk mostly about my open-source stuff [1]. I admittedly hate Twitter as a social network, but I've been convinced that it is a good place for networking in our industry, so I just play the game. I keep telling myself that I should open blog too, but then I realize that one can't simply do everything all the time, so I guess maybe I'll never do it. To your last question: is it unfair to not do marketing to your work? Totally not. Just do whatever feels right to you. If one day you realize you have built something really useful, probably you'll get the urge to tell people about it. [1] Immutable data-structures for C++: https://github.com/arximboldi/immer Example usage: https://github.com/arximboldi/ewig [2] https://www.youtube.com/watch?v=sPhpelUfu8Q [3] https://public.sinusoid.es/misc/immer/immer-icfp17.pdf [4] https://twitter.com/sinusoidalen
In Ask HN: How much time do you spend on “marketing” your open source projects?
Very interesting work! It seems that educational text editors are becoming a trend after Antirez published his :-) Excuse me the shameless plug, I'd like to show mine too: https://github.com/arximboldi/ewig It is written in C++, but using a style that is unlike what most C++ developers use: it is composed mostly of pure functions. The architecture is very much like that of Elm programs, and there is even a `store` class like in Redux. Like the project from OP, it is about 2K lines of code. But it also supports asynchronous loading/saving, copy-paste (you can copy-paste a 1GB file instantly), very robust undo, dirty markers, UTF-8 (not perfect), etc. The magic? Immutable vectors based on RRB-Trees. This is like the vectors in Clojure/Scala, but also supports log(n) slicing, concatenations, insertions---these operations are fundamental
Read the rest
for a text editor, and I'd say, to most interactive software supporting big data models [1]. The code has been written in a style as simple as I could. I'd like to think that even non-C++ developers might be able to understand it. It might be specially interesting for web developers invested in Clojure, Elm or Redux and the single-atom architecture. Probably one day I should go ahead and just write a blog post about it or a tutorial or something. But so far I don't have a blog I am not really a social media person. The code is still moving also... PS. And thanks a lot to @kostspielig her help writing and reviewieng the code! <3 [1] The data-structure can be found here: https://github.com/arximboldi/immer
In Lessons learned from implementing a text editor related to front-end development

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.