All Projects → emacs-ng → Emacs Ng

emacs-ng / Emacs Ng

Licence: gpl-3.0
A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender.

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects
rust
11053 projects
lisp
113 projects

Projects that are alternatives of or similar to Emacs Ng

Emacs Async Await
Async/Await for Emacs
Stars: ✭ 47 (-91.05%)
Mutual labels:  async, emacs
Robe
Code navigation, documentation lookup and completion for Ruby
Stars: ✭ 525 (+0%)
Mutual labels:  emacs
Portacle
A portable common lisp development environment
Stars: ✭ 494 (-5.9%)
Mutual labels:  emacs
Import Js
A tool to simplify importing JS modules
Stars: ✭ 511 (-2.67%)
Mutual labels:  emacs
Combinex
Open source implementation for Apple's Combine
Stars: ✭ 496 (-5.52%)
Mutual labels:  async
Kneden
Transpile ES2017 async/await to vanilla ES6 Promise chains: a Babel plugin
Stars: ✭ 517 (-1.52%)
Mutual labels:  async
Elsa
Emacs Lisp Static Analyzer
Stars: ✭ 485 (-7.62%)
Mutual labels:  emacs
Dotfiles
Let's be honest: mostly Emacs.
Stars: ✭ 536 (+2.1%)
Mutual labels:  emacs
Php Mode
A powerful and flexible Emacs major mode for editing PHP scripts
Stars: ✭ 522 (-0.57%)
Mutual labels:  emacs
Docker.el
Manage docker from Emacs.
Stars: ✭ 511 (-2.67%)
Mutual labels:  emacs
Async Raft
An implementation of the Raft distributed consensus protocol using the Tokio framework.
Stars: ✭ 510 (-2.86%)
Mutual labels:  async
Vertx Guide For Java Devs
Vert.x 3 guide for Java developers
Stars: ✭ 500 (-4.76%)
Mutual labels:  async
Horseshoe
🍧代号马蹄铁。以专题为单位的学习。目前已发布 { Async专题 } { Grid专题 } { Flex专题 } { Git专题 } { Regex专题 } { Redux专题 } { React专题 }
Stars: ✭ 521 (-0.76%)
Mutual labels:  async
Studio
A nodejs framework to create decoupled and scalable applications
Stars: ✭ 495 (-5.71%)
Mutual labels:  async
Zsh Async
Because your terminal should be able to perform tasks asynchronously without external tools!
Stars: ✭ 528 (+0.57%)
Mutual labels:  async
Fasy
FP iterators that are both eager and asynchronous
Stars: ✭ 488 (-7.05%)
Mutual labels:  async
Prelude
Prelude is an enhanced Emacs 25.1+ distribution that should make your experience with Emacs both more pleasant and more powerful.
Stars: ✭ 4,735 (+801.9%)
Mutual labels:  emacs
Ggtags
Emacs frontend to GNU Global source code tagging system.
Stars: ✭ 515 (-1.9%)
Mutual labels:  emacs
Posterus
Composable async primitives with cancelation, control over scheduling, and coroutines. Superior replacement for JS Promises.
Stars: ✭ 536 (+2.1%)
Mutual labels:  async
Cppserver
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution
Stars: ✭ 528 (+0.57%)
Mutual labels:  async

emacs-ng

A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender.


homepagefeaturesgetting startedusing denoFAQ


Overview

emacs-ng is based off of the native-comp branch of emacs, and regularly merges in the latest from that branch.

The last merged commit is f1efac1f9e by Andrea Corallo (Thu Jan 14 22:38:55 2021).

Motivation

The goal of this fork is to explore new development approaches. To accomplish this, we aim to maintain an inclusive and innovative environment. Contributions are welcome from anyone, and we do not require copyright assignment. We welcome interesting ideas to make emacs better. Our only request is that you open an issue before starting work and be willing to take feedback from the core contributors.

Why Emacs-ng

Emacs-ng is an additive native layer over emacs, bringing features like Deno's Javascript and Async I/O environment, Mozilla's Webrender (experimental opt-in feature), and other features in development. emacs-ng's approach is to utilize multiple new development approaches and tools to bring Emacs to the next level. emacs-ng is maintained by a team that loves Emacs and everything it stands for - being totally introspectable, with a fully customizable and free development environment. We want Emacs to be a editor 40+ years from now that has the flexibility and design to keep up with progressive technology.

Why JavaScript

One of emacs-ng's primary features is integrating the Deno Runtime, which allows execution of JavaScript and Typescript within Emacs. The details of that feature are listed below, however many users would ask themselves WHY JAVASCRIPT? JavaScript is an extremely dynamic language that allows for a user to inspect and control their scripting environment. The key to note is that bringing in Deno isn't JUST JavaScript - it's an ecosystem of powerful tools and approaches that Emacs just doesn't have currently.

  • 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.
  • Deno uses Google's v8 JavaScript engine, which features an extremely powerful JIT and world-class garbage collector.
  • Usage of modern Async I/O utilizing Rust's Tokio library.
  • Emacs-ng has WebWorker support, meaning that multiple JavaScript engines can be running in parallel within the editor. The only restriction is that only the 'main' JS Engine can directly call lisp functions.
  • 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.

Performance

v8's world-class JIT offers the potential for massive performance gains. For a simple benchmark (fibonacci), using the following implementations:

(defun fibonacci(n)
  (if (<= n 1)
      n
    (+ (fibonacci (- n 1)) (fibonacci (- n 2)))))
const fib = (n) => {
    if (n <= 1) {
        return n;
    }

    return fib(n - 1) + fib(n - 2);
};

emacs-ng's JS implementation clocks in over 50 times faster than emacs 28 without native-comp for calculating fib(40). With native-comp at level 3, JS clocks in over 15 times faster. This, along with 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 - full performance with EVERYTHING in the scripting layer.

Contributing

Contributions are welcome. We try to maintain a list of "new contributor" friendly issues tagged with "good first issue".

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].