y-codemirror
text-unicode
y-codemirror | text-unicode | |
---|---|---|
1 | 2 | |
80 | 69 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | about 2 years ago | |
JavaScript | TypeScript | |
MIT License | - |
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.
y-codemirror
-
Ace, CodeMirror, and Monaco: A Comparison of the Code Editors You Use in Browser
Not mentioned in the article but CodeMirror has a brilliant story for collaborative editing. You have two options:
- An Operational Transform (OT) based system built by Marijn (the creator of CodeMirror)
OT Demo: https://codemirror.net/6/examples/collab/
- A Conflict Free Replicated Datatype (CRDT) based system using Yjs crated by Kevin Jahns (the creator of Yjs) - https://github.com/yjs/y-codemirror
Yjs Demo: https://demos.yjs.dev/codemirror/codemirror.html
Both are brilliant, but I'm a huge fan of Yjs - the number of different bindings to different editors (and state systems) is brilliant.
text-unicode
-
Ace, CodeMirror, and Monaco: A Comparison of the Code Editors You Use in Browser
We had to handroll our own OT implementation inhouse (based on https://github.com/ottypes/text-unicode) since we had built the system for it already. I suspect we would've used or forked CodeMirror's collab package if we were starting today.
Also huge fan of yjs, but the implementation is not compatible with codemirror 6, only version 5 (AFAIK)
-
Accidentally quadratic: When Python is faster than C++
Well said.
I've had a lot of conversations with javascript engineers over the years who've argued to me that well tuned JS will be nearly as fast as the equivalent C code. I've written plenty of little toy benchmarks over the years, and in my experience they're partly right. Well written JS code in V8 can certainly run fast - sometimes around half the speed of C code. But a massive performance gap opens up when you use nontrivial data structures. Nested fields, non-uniform arrays, trees, and so on will all cripple javascript's performance when compared to C's equivalent of simply embedding nested structs. If you couple clean C data structures with allocation-free hot paths from arenas, the performance of C will easily hit 10-20x the performance of the equivalent JS code.
From memory my plain text based operational transform code does ~800k transforms / second in javascript. The equivalent C code does 20M/second. The C implementation is about twice as many lines of code as the JS version though.
(The code in question: https://github.com/ottypes/text-unicode/blob/master/lib/type... / https://github.com/ottypes/libot )
What are some alternatives?
codejar - An embeddable code editor for the browser 🍯
rapidyaml - Rapid YAML - a library to parse and emit YAML, and do it fast.
phonk - PHONK is a coding playground for new and old Android devices
codemirror-emacs - Emacs keybindings for CM6
codemirror-vim - Vim keybindings for CM6
y-codemirror.next - Collaborative extensions for CodeMirror6
JitFromScratch - Example project from my talks in the LLVM Social Berlin and C++ User Group
flang - Flang is a Fortran language front-end designed for integration with LLVM.
slate - A completely customizable framework for building rich text editors. (Currently in beta.)
esbuild - An extremely fast bundler for the web