changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > docs / annotate core/ffi.org

changeset 28: a0017112db77
parent: 411eeaebc6d2
child: 0b69e63c9374
author: Richard Westhaver <ellis@rwest.io>
date: Thu, 06 Jun 2024 23:15:50 -0400
permissions: -rw-r--r--
description: style update
23
411eeaebc6d2 doc updates
Richard Westhaver <ellis@rwest.io>
parents: 19
diff changeset
1
 #+title: ffi
411eeaebc6d2 doc updates
Richard Westhaver <ellis@rwest.io>
parents: 19
diff changeset
2
 #+author: Richard Westhaver
28
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 23
diff changeset
3
 #+setupfile: ../../clean.theme
12
ellis <ellis@rwest.io>
parents:
diff changeset
4
 This doc is about the [[https://en.wikipedia.org/wiki/Foreign_function_interface][Foreign Function Interface]] (FFI) features of the
ellis <ellis@rwest.io>
parents:
diff changeset
5
 =core=. 
ellis <ellis@rwest.io>
parents:
diff changeset
6
 
ellis <ellis@rwest.io>
parents:
diff changeset
7
 Besides accessing system, OS, and external libraries via binding code
ellis <ellis@rwest.io>
parents:
diff changeset
8
 (dynamically in Lisp, statically in Rust), we also expose parts of the
ellis <ellis@rwest.io>
parents:
diff changeset
9
 core in a C-compatible fashion. In Lisp, we use the SB-ALIEN interface
ellis <ellis@rwest.io>
parents:
diff changeset
10
 to load (with dlopen) and call foreign symbols. In Rust we mostly use
ellis <ellis@rwest.io>
parents:
diff changeset
11
 rust-bindgen and the built-in rustc features.
ellis <ellis@rwest.io>
parents:
diff changeset
12
 
ellis <ellis@rwest.io>
parents:
diff changeset
13
 * Libraries
ellis <ellis@rwest.io>
parents:
diff changeset
14
 The following binding libraries are provided with supporting
ellis <ellis@rwest.io>
parents:
diff changeset
15
 code. There is some cross-over between the Lisp and Rust bindings
ellis <ellis@rwest.io>
parents:
diff changeset
16
 depending on what library features we need and where. Some of the
ellis <ellis@rwest.io>
parents:
diff changeset
17
 bindings are very minimal or for experimental-use only only.
ellis <ellis@rwest.io>
parents:
diff changeset
18
 ** xkb
ellis <ellis@rwest.io>
parents:
diff changeset
19
 These bindings are actually directed at libxkbcommon instead of
ellis <ellis@rwest.io>
parents:
diff changeset
20
 x11/xkb directly.
ellis <ellis@rwest.io>
parents:
diff changeset
21
 *** xkbcommon
ellis <ellis@rwest.io>
parents:
diff changeset
22
 https://xkbcommon.org/doc/current/md_doc_2quick-guide.html
ellis <ellis@rwest.io>
parents:
diff changeset
23
 ** rocksdb
ellis <ellis@rwest.io>
parents:
diff changeset
24
 [[https://github.com/facebook/rocksdb/wiki][RocksDB Wiki]]
ellis <ellis@rwest.io>
parents:
diff changeset
25
 ** btrfs
ellis <ellis@rwest.io>
parents:
diff changeset
26
 The kernel headers btrfs and btrfs_tree will be wrapped at some point
ellis <ellis@rwest.io>
parents:
diff changeset
27
 in addition to the userspace library (btrfsutil) documented below.
ellis <ellis@rwest.io>
parents:
diff changeset
28
 *** btrfsutil
ellis <ellis@rwest.io>
parents:
diff changeset
29
 https://github.com/kdave/btrfs-progs
ellis <ellis@rwest.io>
parents:
diff changeset
30
 ** uring
ellis <ellis@rwest.io>
parents:
diff changeset
31
 https://man.archlinux.org/man/io_uring.7.en
ellis <ellis@rwest.io>
parents:
diff changeset
32
 ** zstd
ellis <ellis@rwest.io>
parents:
diff changeset
33
 zstd compression bindings: https://github.com/facebook/zstd
ellis <ellis@rwest.io>
parents:
diff changeset
34
 ** tree-sitter
ellis <ellis@rwest.io>
parents:
diff changeset
35
 bindings to tree-sitter parser generator and language libraries: https://github.com/tree-sitter/tree-sitter
19
Richard Westhaver <ellis@rwest.io>
parents: 17
diff changeset
36
 ** COMMENT blake3
12
ellis <ellis@rwest.io>
parents:
diff changeset
37
 temporary package for CL implementation of Blake3 SHA. Wraps C
ellis <ellis@rwest.io>
parents:
diff changeset
38
 implementation (libblake3).
17
Richard Westhaver <ellis@rwest.io>
parents: 12
diff changeset
39
 ** COMMENT alpm
Richard Westhaver <ellis@rwest.io>
parents: 12
diff changeset
40
 https://man.archlinux.org/man/core/pacman/libalpm.3.en
Richard Westhaver <ellis@rwest.io>
parents: 12
diff changeset
41
 https://github.com/archlinux/alpm.rs/tree/382af70cdbff8e1f65c0bf8df79693786f44429c/alpm/examples
Richard Westhaver <ellis@rwest.io>
parents: 12
diff changeset
42
 
Richard Westhaver <ellis@rwest.io>
parents: 12
diff changeset
43
 ** COMMENT bqn
12
ellis <ellis@rwest.io>
parents:
diff changeset
44
 These bindings are for libcbqn which can be build from CBQN:
ellis <ellis@rwest.io>
parents:
diff changeset
45
 https://github.com/dzaima/CBQN
17
Richard Westhaver <ellis@rwest.io>
parents: 12
diff changeset
46
 ** COMMENT k
12
ellis <ellis@rwest.io>
parents:
diff changeset
47
 https://codeberg.org/ngn/k
ellis <ellis@rwest.io>
parents:
diff changeset
48
 bindings for ngn/k (libk).
19
Richard Westhaver <ellis@rwest.io>
parents: 17
diff changeset
49
 ** COMMENT nuklear
Richard Westhaver <ellis@rwest.io>
parents: 17
diff changeset
50
 ** COMMENT ssh2