Overview
emacs-module-rs provides high-level Rust binding and tools to write Emacs’s dynamic modules. It is easy to use if you know either Rust or Emacs.
It currently supports:
- Stable Rust (latest stable recommended; 1.56 minimum).
- Emacs 25 or above, built with module support.
- macOS, Linux, Windows.
Setting up
- Make sure your Emacs was compiled with module support. Check that
module-file-suffixis notnil, and the functionmodule-loadis defined.- On macOS, the recommended installation method is MacPorts (
emacs-appandemacs-mac-app). - On Windows, install Emacs via MSYS2:
pacman -S mingw-w64-x86_64-emacs. (Emacs officially supports MSVCRT, not UCRT.)
- On macOS, the recommended installation method is MacPorts (
- Install the Rust toolchain with rustup.
- On Windows, use the
stable-gnutoolchain, with thegccfrommingw-w64-x86_64-toolchain. This ensures CRT linkages match.
- On Windows, use the
Notes
- When the optional feature
bindgenis enabled, the raw binding will be generated fromemacs-module.hat build time. You will also need to installclang. (This is recommended only for troubleshooting.) For example, on Windows:# In Powershell scoop install llvm $env:LIBCLANG_PATH = "$(scoop prefix llvm)\bin" cargo build --all
Known Issues
There is a bug (see issue #1) with Emacs 26 on Linux that prevents it from loading any dynamic modules (even those written in C), if:
- Emacs is built without thread support.
- The OS is Ubuntu 16.04 (Xenial).