https://github.com/emacs-ng/emacs-ng Skip to content Sign up Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Project management - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] [search-key] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up Sign up {{ message }} emacs-ng / emacs-ng * Notifications * Star 325 * Fork 15 A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender. emacs-ng.github.io/emacs-ng/ GPL-3.0 License 325 stars 15 forks Star Notifications * Code * Issues 50 * Pull requests 9 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights master Switch branches/tags [ ] Branches Tags Nothing to show {{ refName }} default View all branches Nothing to show {{ refName }} default View all tags 8 branches 0 tags Go to file Code Clone HTTPS GitHub CLI [https://github.com/e] Use Git or checkout with SVN using the web URL. [gh repo clone emacs-] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching Xcode If nothing happens, download Xcode and try again. Go back Launching Visual Studio If nothing happens, download the GitHub extension for Visual Studio and try again. Go back Latest commit @ericdallo ericdallo [docs] Fix logo image ... 676ad83 Mar 13, 2021 [docs] Fix logo image 676ad83 Git stats * 146,479 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows [docs] Fix logo image Mar 13, 2021 admin remove ChangeLog files Jan 19, 2021 build-aux Update from Gnulib by running admin/merge-gnulib. Jan 1, 2021 doc remove ChangeLog files Jan 19, 2021 docker Merge branch 'feature/native-comp' into master Sep 23, 2020 docs [docs] Fix logo image Mar 13, 2021 etc remove ChangeLog files Jan 19, 2021 images [docs] Fix logo image Mar 13, 2021 leim remove ChangeLog files Jan 19, 2021 lib-src remove ChangeLog files Jan 19, 2021 lib Merge remote-tracking branch 'savannah/master' into HEAD Jan 2, 2021 lisp Adding featurep emacs-ng Jan 20, 2021 lwlib remove ChangeLog files Jan 19, 2021 m4 Update from Gnulib by running admin/merge-gnulib. Jan 1, 2021 modules Update copyright year to 2021 Jan 1, 2021 msdos remove ChangeLog files Jan 19, 2021 nextstep remove ChangeLog files Jan 19, 2021 nt remove ChangeLog files Jan 19, 2021 oldXMenu remove ChangeLog files Jan 19, 2021 rust_src return early from CursorMoved if top_frame is none Feb 24, 2021 src remove ChangeLog files Jan 19, 2021 test Improving test framework layout Feb 14, 2021 .clang-format * .clang-format (ColumnLimit): Fix line length. Dec 23, 2020 .dir-locals.el Set indent-tabs-mode for c-mode in .dir-locals.el Dec 19, 2020 .gitattributes Update copyright year to 2021 Jan 1, 2021 .gitignore Merge branch 'feature/native-comp' Jan 15, 2021 .gitlab-ci.yml Merge remote-tracking branch 'savannah/master' into HEAD Jan 2, 2021 .gitmodules Removing deno submodule for ease-of-use Jan 9, 2021 BUGS Prefer HTTPS to FTP and HTTP in documentation Sep 13, 2017 CONTRIBUTE * CONTRIBUTE: Don't recommend action stamps Sep 25, 2020 COPYING Merge from Gnulib Oct 2, 2017 GNUmakefile Update copyright year to 2021 Jan 1, 2021 INSTALL Update copyright year to 2021 Jan 1, 2021 INSTALL.REPO Update copyright year to 2021 Jan 1, 2021 Makefile.in Merge branch 'feature/native-comp' Jan 15, 2021 README Update copyright year to 2021 Jan 1, 2021 README.md [docs] Add docs pages with mkdocs-material Mar 13, 2021 autogen.sh Merge branch 'feature/native-comp' Jan 15, 2021 config.bat Fix copyright years by hand Jan 1, 2021 configure.ac Upgrading emacs-ng to deno-v1.7.2 Feb 7, 2021 default.nix add rust facilities Sep 22, 2020 docker-compose.yml add rust facilities Sep 22, 2020 gnulib.mk.in add rust facilities Sep 22, 2020 make-dist Update copyright year to 2021 Jan 1, 2021 mkdocs.yml [docs] Add docs pages with mkdocs-material Mar 13, 2021 rust-toolchain Updating nightly Jan 16, 2021 View code README.md [logo] [6874747073] [badge] [6874747073] emacs-ng A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender. --------------------------------------------------------------------- homepage * features * getting started * using deno * FAQ --------------------------------------------------------------------- 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". About A new approach to Emacs - Including TypeScript, Threading, Async I/O, and WebRender. emacs-ng.github.io/emacs-ng/ Topics javascript rust typescript lisp emacs async webworkers webasm deno webrender emacs-ng Resources Readme License GPL-3.0 License Releases No releases published Packages 0 No packages published Contributors 778 * @rgmorris * @Eli-Zaretskii * @monnier * @eggert * @lektu * @loveshack * @larsmagne * @albinus * @snogglethorpe * @link0ff * @jave + 767 contributors Languages * Emacs Lisp 70.6% * C 18.9% * Roff 5.2% * M4 0.8% * Objective-C 0.7% * TeX 0.7% * Other 3.1% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.