I like Emacs Lisp and am always adding little bits of Elisp to my init.el
that improves my workflow or enhances Emacs in one way or another. Mostly, I can make Elisp do whatever I need it to do but sometimes the bindings just aren’t there and I have to invoke a shell. Starting with Emacs 25, all that is going to change.
Emacs 25 supports the notion of dynamic modules. These modules are natively compiled pieces of code that can be called directly from Emacs and that can access the Emacs environment. It doesn’t take a lot of thought to see the opportunities this offers.
Aurélien Aptel has an excellent post that describes the module system and offers a simple example to so you can see how it works. Modules are, as Aptel notes, like plugins for other software. There’s a bit of busywork to register the module and access the Emacs environment but then it’s just normal C code except when you’re interacting with the environment. It sounds harder than it is: see Aptel’s example.
This facility isn’t something you’re going to be using everyday but when you need a capability that can’t be implemented with Elisp directly, modules are just what you need. Tale a look at Aptel’s post to get a feel for what’s involved and how they work.
UPDATE: Emacs 24 → Emacs 25