It’s been six months since the last Remacs update, and many new features have landed!
We’ve added @jeandudey and @birkenfeld to the GitHub collaborators, bringing us to five fine people who can approve your pull requests.
We’ve added a lot new elisp primitive functions:
Symbols: various functions
A much requested feature, adding Rust support to
been added. This was an
unusual PR as it includes some elisp changes in Remacs.
We now have documentation on our compatibility with GNU Emacs. This covers all known implementation differences, platform support differences, and describes how to detect Remacs in elisp code.
Platforms: We’ve dropped MS-DOS support. The Remacs build has been fixed on 32-bit Linux and 32-bit macOS.
The codebase has been split out:
- remacs-lib (Rust equivalents of gnulib)
- remacs-sys (type definitions of Emacs types and C functions)
- remacs-macros (procedural macros supporting elisp primitive functions in Rust)
- src (Rust implementation code of elisp)
Signal name mapping is pure Rust code.
We now run rustfmt on every PR.
If you fancy building Remacs without installing a dev toolchain (compilers, C libraries etc), there’s now a docker-compose.yml to make your life easy.
It wouldn’t be a proper lisp project without some macro magic.
After several PRs and discussions, Remacs now includes a procedural macro to simplify defining elisp functions in Rust.
For example, here’s
Rust has also enabled us to mark Emacs functions with the ! type, a neat Rust feature that marks functions as not returning.
The #[repr(transparent)] Rust RFC
has been approved, so we’re looking forward to using that in Remacs. In the
meantime, Remacs has a
LispObject type for use in Rust, and a
type for FFI compatibility.
There’s still lots to do on Remacs: many small elisp functions to port, or larger projects to sink your teeth into. We also welcome incomplete pull requests: many of the PRs shown here have been built on top of initial implementations written by other contributors.
Join the fun at: https://github.com/Wilfred/remacs