2 #+author: Richard Westhaver
3 #+setupfile: ../../clean.theme
5 #+infojs_opt: toc:nil home:https://compiler.company up:./ view:content
6 This doc is about the
[[https://en.wikipedia.org/wiki/Foreign_function_interface][Foreign Function Interface]] (FFI) features of the
9 Besides accessing system, OS, and external libraries via binding code
10 (dynamically in Lisp, statically in Rust), we also expose parts of the
11 core in a C-compatible fashion. In Lisp, we use the SB-ALIEN interface
12 to load (with dlopen) and call foreign symbols. In Rust we mostly use
13 rust-bindgen and the built-in rustc features.
16 The following binding libraries are provided with supporting
17 code. There is some cross-over between the Lisp and Rust bindings
18 depending on what library features we need and where. Some of the
19 bindings are very minimal or for experimental-use only only.
21 These bindings are actually directed at libxkbcommon instead of
24 https:
//xkbcommon.org/doc/current/md_doc_2quick-guide.html 26 [[https://github.com/facebook/rocksdb/wiki][RocksDB Wiki]] 28 The kernel headers btrfs and btrfs_tree will be wrapped at some point 29 in addition to the userspace library (btrfsutil) documented below. 31 https://github.com/kdave/btrfs-progs 33 https://man.archlinux.org/man/io_uring.7.en 35 zstd compression bindings: https://github.com/facebook/zstd 37 bindings to tree-sitter parser generator and language libraries: https://github.com/tree-sitter/tree-sitter 39 temporary package for CL implementation of Blake3 SHA. Wraps C 40 implementation (libblake3). 42 https://man.archlinux.org/man/core/pacman/libalpm.3.en 43 https://github.com/archlinux/alpm.rs/tree/382af70cdbff8e1f65c0bf8df79693786f44429c/alpm/examples
46 These bindings are for libcbqn which can be build from CBQN:
47 https:
//github.com/dzaima/CBQN 49 https://codeberg.org/ngn/k
50 bindings for ngn/k (libk).