The core is in Rust. The Mac frontend is in Rust. It’s using xml-rpc so front ends and other plug ins can be written in any language. I had/have high hopes this would replace Emacs for me (no reason to drop emacs really other than to have something more modern/fast.
While development does continue, sadly it seems to be mired in it’s design choices. But… Emacs is getting lots of attention on it’s internals, so it may be moot ;)
Small correction. The Mac front end is Swift. The xi core is launched as a separate process by the front end and communication between the processes occurs via JSON over STDIN/STDOUT.
Rust has the “extern c” directive to give you a c calling convention when building shared libraries. It’s a little unergonomic on the rust side as you have to convert between eg c and rust strings but jot too bad.
Yup, and Swift can parse C headers and lets you call C functions in a similar way. Binding Rust to Swift in-process would just be a matter of declaring a suitable C interface between them.
From June: https://raphlinus.github.io/xi/2020/06/27/xi-retrospective.html
This retrospective is amazing. So much information and feedback about the experience around xi. Thanks for sharing the link!
https://xi-editor.io/
One thing I’m curious about: how is it calling to/from Rust from Swift? I’d love to have app core logic in Rust if possible in some cases.
The core is in Rust. The Mac frontend is in Rust. It’s using xml-rpc so front ends and other plug ins can be written in any language. I had/have high hopes this would replace Emacs for me (no reason to drop emacs really other than to have something more modern/fast.
While development does continue, sadly it seems to be mired in it’s design choices. But… Emacs is getting lots of attention on it’s internals, so it may be moot ;)
Small correction. The Mac front end is Swift. The xi core is launched as a separate process by the front end and communication between the processes occurs via JSON over STDIN/STDOUT.
https://github.com/xi-editor/xi-mac
Sorry, just a brain fart when typing that up, I knew that it was swift.
Rust has the “extern c” directive to give you a c calling convention when building shared libraries. It’s a little unergonomic on the rust side as you have to convert between eg c and rust strings but jot too bad.
Yup, and Swift can parse C headers and lets you call C functions in a similar way. Binding Rust to Swift in-process would just be a matter of declaring a suitable C interface between them.
The design docs on CRDTs and “Rope Science” are fascinating. 🧐
Isn’t this project pretty much dead?
I don’t know; I starred it two or three years ago and just stumbled upon it again while searching for something unrelated. :)
with https://raphlinus.github.io/xi/2020/06/27/xi-retrospective.html and the repo activities it doesn’t look good :(
I wish this project would have succeeded. It was fascinating.