OpenBSD founder Theo de Raadt first proposed a new system call, called
mimmutable(), at the beginning of September. After numerous revisions, the system call looks to be merged as:
int mimmutable(void *addr, size_t len);
A call to
mimmutable()will render the mapping of the
lenbytes of memory starting at
addrimmutable, meaning that the kernel will not allow any changes to either the memory protections or the mapping in that range. As a result, system calls like
mprotect()that would affect that range will, instead, fail.
There are numerous small Lisp/Scheme implementations, and probably most of them are unfinished or unmaintained. I found serious, production-ready tiny Scheme interpreters for you to embed in your C or C++ programs.
I have an unhealthy obsession with one-file implementations of useful things in C, which you can just drop into your project and use without configuring libraries with dozens of files. Miniz is one such project: it is a single 225 KB
miniz.c, which contains a
zlib replacement plus functions to read/write ZIP files.
Linenoise is a small self-contained line editing library written in C by Salvatore Sanfilippo of Redis fame, aimed at replacing the monster readline and libedit libraries. It is used in Redis, MongoDB, and Android.