# These Weeks in Remacs III

DevFeed: [These Weeks in Remacs III](<https://devfeed.tech/articles/these-weeks-in-remacs-iii-22019.md>)

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

Author: Wilfred Hughes

Published: 2017-10-16T00:00:00Z

Content type: article

Language: en

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

Topics: [Emacs](<https://devfeed.tech/topics/emacs.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Randomizer](<https://devfeed.tech/topics/randomizer.md>)

Tags: [contributions](<https://devfeed.tech/tags/contributions.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [rust](<https://devfeed.tech/tags/rust.md>)

## AI overview

This Remacs update reports contributions and feature progress, including Emacs functionality ported to Rust, new Rust APIs for elisp data structures, and evolving conventions for representing elisp types. It also discusses Rust-specific implementation techniques and an unsuccessful attempt to use a Rust hash map inside Remacs.

## Source excerpt

Time for another Remacs update: lots of contributions, a wide range of features, and even a logo! Contributing Since the last update, we've seen contributions from lots of new people. We've added @brotzeit and @shanavas786, bringing us to seven wonderful people who can approve your PRs. Speaking of PRs, we've merged an amazing 64 pull requests since the last update! If you're looking for a good feature for your first contribution, @brotzeit has been regularly adding new suggestions under the 'good first issue' label. Features Many Emacs features have now been ported to Rust, with new Rust APIs for accessing elisp datastructures. Here's an overview of the features that have landed. Arithmetic: arithmetic, floating point, random number generation (using a Rust RNG!), and comparisons. Symbols: symbol properties, interning, obarrays unbinding, keywords and indirect symbols. Checksums: MD5sum (using a Rust MD5 crate!). Windows: liveness check, type check, overlays and minibuffer, minibuffer check positions and margins. Processes: accessing, type check, data structures and names. Buffers: for the current thread, accessing, file names, size and modification. Point: bobp, bolp, eolp, markers, point-min, point-max forward-point and goto-char. Hash tables: copying and accessing. Characters: multibyte conversions, character tables, category tables Fonts: type checks. Miscellaneous: prefix arguments and identity. We're also periodically pulling GNU Emacs features into Remacs, so all the features available GNU Emacs trunk are included in Remacs. Idiomatic Rust in Remacs Remacs has gradually developed a set of conventions for elisp data types. For each type Foo, we define a LispObject::as_foo, LispObject::as_foo_or_error and a FooRef when you know your elisp datatype is actually a Foo. For example, here's how overlay-start was implemented in C: DEFUN ("overlay-start", Foverlay_start, Soverlay_start, 1, 1, 0, doc: /* Return the position at which OVERLAY starts. */) (Lisp_Object ov