A new approach to Emacs
emacs-ng is based off of the
master branch of emacs, and regularly
merges in the latest changes (this branch includes the native
compilation feature from Andrea Corallo).
The last merged commit is
6ebe8b03d8 (Aug 24 2021).
Contributions are welcome from anyone and we are always happy to invite new people to the project. We are open towards interesting ideas to make emacs better.
Emacs combined with the rust ecosystem brings a lot of possibilities. If you have any idea for a new feature, just open an issue before starting work so we can give you some feedback.
We try to maintain a list of "new contributor" friendly issues tagged with "good first issue". You should also take a look at our handbook.
WebRender is a GPU-based 2D rendering engine written in Rust from Mozilla. Firefox, the research web browser Servo, and other GUI frameworks draw with it. emacs-ng use it as a new experimental graphic backend to leverage GPU hardware.
Allow dynamic modules to access more of Emacs's internals. Dynamic modules can be written to take advantage of these extra functionalities when they are available, while at the same time being fully compatible with vanilla Emacs.
- TypeScript offers an extremely flexible typing system, that allows to user to have compile time control of their scripting, with the flexibility of types "getting out of the way" when not needed.
- Usage of modern Async I/O utilizing Rust's Tokio library.
- Emacs-ng also has WebAssembly support - compile your C module as WebAsm and distribute it to the world. Don't worry about packaging shared libraries or changing module interfaces, everything can be handled and customized by you the user, at the scripting layer. No need to be dependent on native implementation details.
v8's world-class JIT offers the potential for large performance gains. Async I/O from Deno, WebWorkers, and WebAsm, gives you the tools to make Emacs a smoother and faster experience without having to install additional tools to launch as background processes or worry about shared library versions.
use-package and straight are really great so we decided to make them built-in packages. But since we don't want to break configs, this is an optional feature.
Just put this line into your
(setq ng-straight-bootstrap-at-startup t)