Talking never moves anything in Emacs, never did, never will.

2021 Maintainer of GNU Emacs, who then proceeded to keep talking.

Frequently Anticipated Questions

Why?

This is the oft ideated, never sublimated “forge” repository for emacs. As it is hosted on a site using non-free software, the work herein is not the official GNU Emacs source, and does not entreat the FSF to enforce its license.

How to build?

git clone https://github.com/commercial-emacs/commercial-emacs.git
cd commercial-emacs
./autogen.sh
./configure --prefix=$HOME/.local
make -j4
src/emacs

The make logic remains broken in the sense that frequently, incompatible artifacts from a previous build do not get rebuilt. Preceding the above with,

git clean -dfX

rebuilds from scratch.

How often are you merging commits from GNU?

Roughly every hour.

How has the code diverged thus far?

How can I try tree-sitter highlighting?

Install Rust library:

git clone --depth 1 --branch 0.6.3alpha5 \
  https://github.com/commercial-emacs/tree-sitter.git
make -C tree-sitter install
pkg-config --exact-version=0.6.3alpha5 tree-sitter || echo not found

Then build emacs:

./autogen.sh
./configure --prefix=$HOME/.local --with-tree-sitter
make -j4
ldd src/emacs | grep -q tree-sitter || echo not found
make test/src/tree-sitter-tests
src/emacs -Q --eval \
  "(custom-set-variables '(font-lock-support-mode 'tree-sitter-lock-mode))" \
  --visit src/xdisp.c

What is a moving garbage collector?

Moving collectors relocate Lisp values in memory, in contrast to the GNU Emacs collector, which upon allocating say a cons cell, will let it remain at its birth address in perpetuity.

GNU Emacs’s non-moving collector has been unfairly maligned as antiquated, generally by undergraduates who just implemented a toy moving collector for their PL class. They might be surprised to know that the Boehm paper on which Emacs’s collector is based was published twenty years after Cheney’s paper on moving collection.

But one thing moving collectors can do that non-moving ones can’t is generational sequestration, that is, keeping the youngest cohort of Lisp values separated from older ones. This allows fast, intermediary cycles which only scan the “nursery” generation (the rationale being old objects are very likely to still be referenced). A non-moving collector must traverse the full set on each cycle since its allocations are interleaved. This is why Emacs bros are as eager to raise collection thresholds as motherboard jockeys are to overclock their BIOS.

Isn’t this xemacs all over again?

Ah, but if it could reach those heights. If by some miracle it did, the choices for the FSF are the same as before: enlist RMS to embark on a coding frenzy that achieves feature parity, grant myself commit rights, or continue not noticing me. If my history of user acquisition is any indication, the last outcome is most likely.

[1] By Yuan Fu and oldosfan.

Are you a UNIX-driven research enterprise?

No, but if you are, let us show you how Emacs can be your soup-to-nuts computing platform. Pick up the phone, and call the professionals at Command Line Systems.

We’re ready to believe you.

Ghostbusters, 1984