2 #+description: The Compiler Company Core
3 #+author: Richard Westhaver
4 #+email: richard.westhaver@gmail.com
5 #+setupfile: https://cdn.compiler.company/org/clean.theme
6 - [[https://compiler.company/docs/core][Docs]] 7 - [[https://compiler.company/docs/core/install.html][Install]] :: Install Guide
8 - [[https://compiler.company/docs/core/tests.html][Tests]] :: Testing Guide
9 - [[https://compiler.company/docs/core/stats.html][Stats]] :: Project Statistics
12 The Compiler Company (aka CC) is a small software research laboratory
13 concerned with the future of Mechanical Freedom.
15 This repository contains the monolothic core of all our products and
18 - NOTE :: This is
*not* a portable library. Starting in version
=1.0= 19 we will be depending on separately distributed forks of SBCL and
22 To bootstrap the core you will need recent versions of
[[https://www.rust-lang.org/][Rust]],
[[http://www.sbcl.org/][SBCL]], and
23 a C compiler (clang or gcc). Only Unix systems are explicitly
26 Many parts of the core depend on additional libraries which may or may
27 not be provided by your system's package manager. See the dependency
28 matrix below for details.
30 In any case, it is always preferred to make use of the
[[https://vc.compiler.company/comp/infra][infra]] project
31 to reliably provision the host either from source or pre-built
32 platform-specific
[[https://packy.compiler.company/dist][binary distributions]].
34 #+NAME: Optional Dependencies
35 | dependency | dependents | src | dist | 36 |-------------+------------------------+-----------------------------------------------+------| 37 | Blake3 | ffi/blake3 | https://vc.compiler.company/packy/blake3 | | 38 | Tree-sitter | ffi/tree-sitter | https://vc.compiler.company/packy/tree-sitter | | 39 | Uring | ffi/uring | https://vc.compiler.company/packy/uring | | 40 | Btrfs | ffi/btrfs | https://vc.compiler.company/packy/btrfs | | 41 | Ublksrv | ffi/ublk | https://vc.compiler.company/packy/ublksrv | | 42 | OpenSSL | lib/net | | | 43 | RocksDB | ffi/rocksdb | https://vc.compiler.company/packy/rocksdb | | 44 | Git | lib/vc/git | https://vc.compiler.company/packy/git | | 45 | Hg | lib/vc/hg | https://vc.compiler.company/packy/hg | | 46 | Zstd | ffi/zstd | https://vc.compiler.company/packy/zstd | | 47 | Qemu | lib/box | https://vc.compiler.company/packy/qemu | | 48 | Podman | lib/pod | https://vc.compiler.company/packy/podman | | 49 | Emacs | emacs | https://vc.compiler.company/packy/emacs | | 50 | StumpWM | lib/gui/wm/x11/stumpwm | https://vc.compiler.company/packy/stumpwm | | 51 | Readline | ffi/readline | | | 52 | Keyutils | ffi/keyutils | | | 53 | Mpd | lib/aud/mpd | https://vc.compiler.company/packy/mpd | | 56 The Core consists of two major system: the
*lisp* system and the
57 *rust* system. There is also an auxiliary
*emacs* system containing a
58 complete Emacs IDE configuration which serves as the base for user
61 Building the core will produce its output to the
=.stash= directory by
62 default. You can then test, run, and install the resulting files or
63 package them up to be shipped elsewhere.
65 The core produces a collection of native program binaries, compiled
66 lisp modules in FASL format, as well as web distributions containing
67 the usual suspects (html, css, js) as well as wasm modules.
71 The Lisp Core can be found under the
=lisp= directory. It is the
72 largest system, most actively developed, and is intended to cover the
73 complete surface of the user-facing APIs contained in the core.
75 Starting from a standard Common Lisp environment with at least
76 [[https://www.quicklisp.org/beta/][Quicklisp]] installed, you can execute
=./x.lisp build skel= to build
77 the project compiler and
=./x.lisp run skel= to run it. This tool is a
78 convenience for building and testing different parts of the core from
79 a minimal dependency set.
82 #+begin_src shell :exports both :results output 83 # bootstrap the core build tool
89 This is SBCL 2.4.5, an implementation of ANSI Common Lisp.
90 More information about SBCL is available at <http://www.sbcl.org/>.
92 SBCL is free software, provided as is, with absolutely no warranty.
93 It is mostly in the public domain; some portions are provided under
94 BSD-style licenses. See the CREDITS and COPYING files in the
95 distribution for more information.
101 x.lisp --- core build tool
114 To test the lisp standard library:
115 #+begin_src shell :results output :exports both 122 This is SBCL 2.4.5, an implementation of ANSI Common Lisp.
123 More information about SBCL is available at <http://www.sbcl.org/>.
125 SBCL is free software, provided as is, with absolutely no warranty.
126 It is mostly in the public domain; some portions are provided under
127 BSD-style licenses. See the CREDITS and COPYING files in the
128 distribution for more information.
142 ; Loading "std/tests"
162 To save the prelude to
=.stash/prelude.core=:
163 #+begin_src shell :results output :noeval t 168 And to install binaries (defaults to
=/usr/local/bin/=):
169 #+begin_src shell :results none :noeval t 175 The Core Rust system can be found under the
=rust= directory.
177 A workspace is configured such that you can build all components with
178 the following command (
~NOTE~ - takes a long time):
179 #+begin_src shell :exports both :results output 180 cd rust && cargo build --release
184 The core contains a collection of Emacs Lisp libraries under
=emacs= 185 which may be installed for the current user using the corresponding
188 ** TODO Bootstrap from packy :experimental: 189 The following can (maybe someday) be used to bootstrap the core without a full
191 #+begin_src shell :results output 192 curl --proto '=https' \
195 https://packy.compiler.company/dist/x86_64-unknown-linux-gnu/bin/sk \
203 This is SBCL 2.4.5, an implementation of ANSI Common Lisp.
204 More information about SBCL is available at <http://www.sbcl.org/>.
206 SBCL is free software, provided as is, with absolutely no warranty.
207 It is mostly in the public domain; some portions are provided under
208 BSD-style licenses. See the CREDITS and COPYING files in the
209 distribution for more information.
215 saving skel to: /home/ellis/comp/core/.stash/skel
221 [undoing binding stack and other enclosing state... done]
222 [performing final GC... done]
223 [saving current Lisp image into /home/ellis/comp/core/.stash/skel:
224 writing 15984 bytes from the static space at 0x50100000
225 writing 339476480 bytes from the dynamic space at 0x1000000000
226 writing 12498752 bytes from the read-only space at 0x74232dc00000
227 writing 0 bytes from the text space at (nil)
235 This section lists all program binaries provided by the core.
237 #+begin_src shell :results output :exports both 243 skel v0.1.1:0e043dcda8f4+ --- A hacker's project compiler.
245 usage: skel [global] <command> [<arg>]
248 -h/--help* : print this message
249 -v/--version* : print version
250 -l/--level* : set log level (warn,info,debug,trace)
251 -c/--config* : set a custom skel user config
252 -i/--input* : input source
253 -o/--output* : output target
256 init : initialize a skelfile in the current directory
257 -n/--name : project name
258 new : make a new skel project
259 -n/--name : project name
260 describe : describe a skelfile
261 show : show project slots
262 -f/--file : path to skelfile
263 -u/--user : print user configuration
264 -s/--system : print system configuration
266 -r/--root : repository path
267 id : print the project id
268 rev : print the current vc revision id
269 inspect : inspect the project skelfile
270 -f/--file : path to skelfile
271 make : build project targets
272 -t/--target : target to build
273 run : run a script or command
274 compile : compile source code
275 build : build programs and libraries
276 dist : distribute build artifacts
277 install : install stuff
279 unpack : unpack stuff
280 bundle : bundle source code
281 unbundle : unbundle source code
282 clean : clean up the project
284 bench : run benchmark
285 status : print the vc status
286 push : push the current project upstream
287 pull : pull the current project from remote
288 clone : clone a remote project
289 commit : commit changes to the project vc
290 edit : edit a project file in emacs.
291 shell : open the sk-shell interpreter
294 #+begin_src shell :results output :exports both 300 organ v0.0.1 --- org-mode toolbox
302 usage: organ [global] <command> [<arg>]
305 -l/--level* : set the log level
306 -h/--help* : print help
307 -v/--version* : print version
310 inspect : inspect an org file
311 show : display local org info
312 describe : describe local org info
317 #+begin_src shell :results output :exports both 323 #:debug 0.44; (#S(CLI-NODE :KIND OPT :FORM #<CLI-OPT help :global T :val T>))
324 packy v0.1.0 --- Universal Package Manager
326 usage: packy [global] <command> [<arg>]
329 -l/--level* : set the log level
330 -h/--help* : print help
331 -v/--version* : print version
335 #:debug 0.453333; /home/ellis/comp/core
336 ; #(#<CLI-OPT help :global T :val NIL>)
342 #+begin_src shell :results output :exports both 348 rdb v0.1.0 --- A simple helper for RocksDB.
350 usage: rdb [global] <command> [<arg>]
353 -l/--level* : set the log level
354 -h/--help* : print help
355 -v/--version* : print version
368 #+begin_src shell :results output :exports both 374 homer v0.1.0 --- user home manager
376 usage: homer [global] <command> [<arg>]
379 -l/--level* : set the log level
380 -h/--help* : print help
381 -v/--version* : print version
382 -f/--force* : use force
392 ** COMMENT alik :rust: 393 #+begin_src shell :results output :exports both 399 ** COMMENT krypt :lisp: 400 #+begin_src shell :results output :exports both 408 Usage: krypt [OPTIONS] [COMMAND]
411 check check service providers and config
413 search Query the Krypt
414 help Print this message or the help of the given subcommand(s)
417 -c, --cfg <CFG> Set the default config file [env: KRYPT_CONFIG_FILE=]
418 -u, --user <USER> Set a user for this command [env: USER=ellis]
419 -l, --level... Set log level
420 -h, --help Print help
421 -V, --version Print version
425 #+begin_src shell :results output :exports both 433 Usage: mailman [OPTIONS] [COMMAND]
437 search Search for items
438 import Import an account
439 export Export an account
440 help Print this message or the help of the given subcommand(s)
443 -c, --cfg <CFG> Set the default config file [env: MAILMAN_CONFIG_FILE=]
444 -u, --user <USER> Set a user for this command [env: USER=ellis]
445 -l, --level... Set log level
446 -h, --help Print help
447 -V, --version Print version