# Remacs II: New Rust Features, GNU Emacs Compatibility Updates, and Build Improvements

DevFeed: [Remacs II: New Rust Features, GNU Emacs Compatibility Updates, and Build Improvements](<https://devfeed.tech/articles/these-weeks-in-remacs-ii-22015.md>)

Original publisher: [Read original article](<http://www.wilfred.me.uk/blog/2017/07/15/these-weeks-in-remacs-ii/>)

Author: Wilfred Hughes

Published: 2017-07-15T00:00:00Z

Content type: release

Language: en

Sources: [Wilfred Hughes](<https://devfeed.tech/sources/wilfred-hughes.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Emacs](<https://devfeed.tech/topics/emacs.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [macOS](<https://devfeed.tech/topics/macos.md>)

Tags: [docker](<https://devfeed.tech/tags/docker.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [github](<https://devfeed.tech/tags/github.md>), [linux](<https://devfeed.tech/tags/linux.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [macos](<https://devfeed.tech/tags/macos.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [rust](<https://devfeed.tech/tags/rust.md>)

## AI overview

This Remacs project update describes new Elisp primitive functions, Rust support, GNU Emacs compatibility documentation, platform fixes, a restructured codebase, procedural macros, Rust crates, and Docker Compose support for building without a local development toolchain.

## Source excerpt

It's been six months since the last Remacs update, and many new features have landed! Community We now have a Gitter chat room! Do drop by if you have any questions or wish to discuss Remacs. There's a low traffic Remacs Subreddit too. We've added @jeandudey and @birkenfeld to the GitHub collaborators, bringing us to five fine people who can approve your pull requests. Elisp Features We're still tracking upstream GNU Emacs master, so new features there are landing in Remacs (1, 2). We've added a lot new elisp primitive functions: Strings: characterp, multibyte conversions (1, 2, 3), and comparisons Vectors: type definitions, functions Buffers: type definitions, functions Symbols: various functions A much requested feature, adding Rust support to find-function, has 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. Cleanup 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. Macros 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 vectorp: /// Return t if OBJECT is a vector. #[lisp_fn] fn vectorp(object: LispObject) -> LispObject { LispObject::from_bool(object.is_vector()) } Lever