changelog shortlog graph tags branches files raw help

Mercurial > org > docs / changeset: populate

changeset 11: d0a90a87b824
parent 10: b38886ced111
child 12: 31db7a83d2c6
author: ellis <ellis@rwest.io>
date: Sat, 09 Dec 2023 20:50:45 -0500
files: core/app/cc-init.org core/app/homer.org core/app/krypt.org core/app/mailman.org core/app/organ.org core/app/packy.org core/app/rdb.org core/app/readme.org core/app/skel.org core/app/tz.org core/lib/alch.org core/lib/audio.org core/lib/crypto.org core/lib/db.org core/lib/dl.org core/lib/dot.org core/lib/flate.org core/lib/hash.org core/lib/krypt.org core/lib/logger.org core/lib/net.org core/lib/nlp.org core/lib/obj.org core/lib/organ.org core/lib/packy.org core/lib/rdb.org core/lib/readme.org core/lib/skel.org core/lib/sxp.org core/lib/tenex.org core/lib/util.org
description: populate
     1.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2+++ b/core/app/cc-init.org	Sat Dec 09 20:50:45 2023 -0500
     1.3@@ -0,0 +1,16 @@
     1.4+{{{header(cc-init,Richard Westhaver,ellis@rwest.io)}}}
     1.5+* help
     1.6+#+begin_src shell :results pp replace
     1.7+cc-init -h
     1.8+#+end_src
     1.9+
    1.10+#+RESULTS:
    1.11+: cc-init 0.1.0-0941fa04c53d+ (x86_64-linux-gnu)
    1.12+: 
    1.13+: Usage: cc-init [OPTIONS]
    1.14+: 
    1.15+: Options:
    1.16+:   -y              Disable confirmation prompts
    1.17+:   -l, --level...  Set the log level
    1.18+:   -h, --help      Print help
    1.19+:   -V, --version   Print version
     2.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2+++ b/core/app/homer.org	Sat Dec 09 20:50:45 2023 -0500
     2.3@@ -0,0 +1,20 @@
     2.4+{{{header(homer,Richard Westhaver,ellis@rwest.io)}}}
     2.5+* help
     2.6+#+begin_src shell :results pp replace
     2.7+homer -h
     2.8+#+end_src
     2.9+
    2.10+#+RESULTS:
    2.11+#+begin_example
    2.12+homer v0.1.0
    2.13+  usage: homer [global] <command> [<arg>]
    2.14+
    2.15+  home manager
    2.16+  options:
    2.17+     -l/--level* :  set the log level
    2.18+     -h/--help* :  print help
    2.19+     -v/--version* :  print version
    2.20+  commands:
    2.21+    show  
    2.22+    
    2.23+#+end_example
     3.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2+++ b/core/app/krypt.org	Sat Dec 09 20:50:45 2023 -0500
     3.3@@ -0,0 +1,25 @@
     3.4+{{{header(kyrpt,Richard Westhaver,ellis@rwest.io)}}}
     3.5+* help
     3.6+#+begin_src shell :results pp replace
     3.7+krypt -h
     3.8+#+end_src
     3.9+
    3.10+#+RESULTS:
    3.11+#+begin_example
    3.12+Krypt CLI
    3.13+
    3.14+Usage: krypt [OPTIONS] [COMMAND]
    3.15+
    3.16+Commands:
    3.17+  check   check service providers and config
    3.18+  show    Show Krypt info
    3.19+  search  Query the Krypt
    3.20+  help    Print this message or the help of the given subcommand(s)
    3.21+
    3.22+Options:
    3.23+  -c, --cfg <CFG>    Set the default config file [env: KRYPT_CONFIG_FILE=]
    3.24+  -u, --user <USER>  Set a user for this command [env: USER=ellis]
    3.25+  -l, --level...     Set log level
    3.26+  -h, --help         Print help
    3.27+  -V, --version      Print version
    3.28+#+end_example
     4.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2+++ b/core/app/mailman.org	Sat Dec 09 20:50:45 2023 -0500
     4.3@@ -0,0 +1,26 @@
     4.4+{{{header(mailman,Richard Westhaver,ellis@rwest.io)}}}
     4.5+* help
     4.6+#+begin_src shell :results pp replace
     4.7+mailman -h
     4.8+#+end_src
     4.9+
    4.10+#+RESULTS:
    4.11+#+begin_example
    4.12+Mail client util
    4.13+
    4.14+Usage: mailman [OPTIONS] [COMMAND]
    4.15+
    4.16+Commands:
    4.17+  ping    Ping the server
    4.18+  search  Search for items
    4.19+  import  Import an account
    4.20+  export  Export an account
    4.21+  help    Print this message or the help of the given subcommand(s)
    4.22+
    4.23+Options:
    4.24+  -c, --cfg <CFG>    Set the default config file [env: MAILMAN_CONFIG_FILE=]
    4.25+  -u, --user <USER>  Set a user for this command [env: USER=ellis]
    4.26+  -l, --level...     Set log level
    4.27+  -h, --help         Print help
    4.28+  -V, --version      Print version
    4.29+#+end_example
     5.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2+++ b/core/app/organ.org	Sat Dec 09 20:50:45 2023 -0500
     5.3@@ -0,0 +1,30 @@
     5.4+{{{header(organ,Richard Westhaver,ellis@rwest.io)}}}
     5.5+
     5.6+The =organ= CLI tool is used to manipulate [[https://orgmode.org/][Org Mode]] files.
     5.7+
     5.8+* help
     5.9+#+begin_src shell :results pp replace
    5.10+organ -h
    5.11+#+end_src
    5.12+
    5.13+#+RESULTS:
    5.14+#+begin_example
    5.15+organ v0.0.1
    5.16+  usage: organ [global] <command> [<arg>]
    5.17+
    5.18+  org-mode toolbox
    5.19+  options:
    5.20+     -l/--level* :  set the log level
    5.21+     -h/--help* :  print help
    5.22+     -v/--version* :  print version
    5.23+  commands:
    5.24+    inspect  :  inspect an org file
    5.25+     -i/--input  :  path to org file
    5.26+    
    5.27+    show  :  display local org info
    5.28+    
    5.29+    parse  
    5.30+     -i/--input  :  input source
    5.31+     -o/--output  :  compiler output
    5.32+    
    5.33+#+end_example
     6.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2+++ b/core/app/packy.org	Sat Dec 09 20:50:45 2023 -0500
     6.3@@ -0,0 +1,10 @@
     6.4+{{{header(packy,Richard Westhaver,ellis@rwest.io)}}}
     6.5+
     6.6+Packy is a universal package manager. The packy CLI tool is used to
     6.7+query and download resources from local or remote stores.
     6.8+* help
     6.9+#+begin_src shell :results pp replace
    6.10+packy -h
    6.11+#+end_src
    6.12+
    6.13+#+RESULTS:
     7.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2+++ b/core/app/rdb.org	Sat Dec 09 20:50:45 2023 -0500
     7.3@@ -0,0 +1,19 @@
     7.4+{{{header(rdb,Richard Westhaver,ellis@rwest.io)}}}
     7.5+
     7.6+The =rdb= cli tool is a simple RocksDB management utility.
     7.7+
     7.8+* help
     7.9+#+begin_src shell :results pp replace
    7.10+rdb -h
    7.11+#+end_src
    7.12+
    7.13+#+RESULTS:
    7.14+: rdb v0.1.0
    7.15+:   usage: rdb [global] <command> [<arg>]
    7.16+: 
    7.17+:   richard's database
    7.18+:   options:
    7.19+:      -l/--level* :  set the log level
    7.20+:      -h/--help* :  print help
    7.21+:      -v/--version* :  print version
    7.22+:   commands:
     8.1--- a/core/app/readme.org	Wed Dec 06 23:27:11 2023 -0500
     8.2+++ b/core/app/readme.org	Sat Dec 09 20:50:45 2023 -0500
     8.3@@ -1,3 +1,12 @@
     8.4 {{{header(Core App Docs,Richard Westhaver,ellis@rwest.io)}}}
     8.5 #+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
     8.6 #+EXPORT_FILE_NAME: index
     8.7+* [[file:skel.org][skel]]                                                                 :lisp:
     8.8+* [[file:organ.org][organ]]                                                                :lisp:
     8.9+* [[file:packy.org][packy]]                                                                :lisp:
    8.10+* [[file:homer.org][homer]]                                                                :lisp:
    8.11+* [[file:rdb.org][rdb]]                                                                  :lisp:
    8.12+* [[file:tz.org][tz]]                                                                   :rust:
    8.13+* [[file:mailman.org][mailman]]                                                              :rust:
    8.14+* [[file:cc-init.org][cc-init]]                                                              :rust:
    8.15+* [[file:krypt.org][krypt]]                                                                :rust:
     9.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2+++ b/core/app/skel.org	Sat Dec 09 20:50:45 2023 -0500
     9.3@@ -0,0 +1,166 @@
     9.4+{{{header(skel,Richard Westhaver,ellis@rwest.io)}}}
     9.5+
     9.6+The =skel= CLI is the primary build tool for contributors and serves a
     9.7+similar role to language-agnostic build tools like [[https://www.gnu.org/software/make/][GNU Make]], but with
     9.8+the features and ease-of-use of language-specific build tools like
     9.9+Rust's [[https://github.com/rust-lang/cargo][Cargo]].
    9.10+
    9.11+* features
    9.12+** configuration
    9.13+The ~skel~ tool can be configured at runtime using the CLI flags, or
    9.14+via local configuration files. The configuration files are in the
    9.15+~skelfile~ format and are assigned the following locations by default:
    9.16+- ~*default-user-skelrc*~ :: =$HOME/.skelrc=
    9.17+- ~*default-system-skelrc*~ :: =/etc/skel/skelrc=
    9.18+
    9.19+Both files are optional and the user skelrc takes precedence over
    9.20+system.
    9.21+
    9.22+Example =~/.skelrc=:
    9.23+#+begin_src skel :results pp replace :exports both
    9.24+  ;;; .skelrc @ 2023-10-12.02:58:08 -*- mode: skel; -*-
    9.25+  :author "Richard Westhaver <ellis@rwest.io>"
    9.26+  :user "ellis"
    9.27+  :version "0.1.0"
    9.28+  :tags ("auto")
    9.29+  :fmt :collapsed
    9.30+  :vc :hg
    9.31+  :auto-insert t
    9.32+  :license "MPL"
    9.33+  :log-level nil
    9.34+  :shed "~/lab/shed"
    9.35+  :stash "~/lab/stash"
    9.36+  :scripts "~/bin/sh"
    9.37+  :alias-list
    9.38+  (("p" "vc push")
    9.39+   ("P" "vc pull")
    9.40+   ("ci" "vc commit"))
    9.41+#+end_src
    9.42+
    9.43+** projects
    9.44+Projects are the main top-level object users interact with. A project
    9.45+consists of a list of slots which are populated automatically or by
    9.46+the user. Once a project is initialized the slots can be accessed and
    9.47+a set of high-level operations can be performed.
    9.48+
    9.49+The easiest way to initialize a project is with a ~skelfile~. These
    9.50+files are parsed as a simplified Lisp dialect and generate
    9.51+~sk-project~ objects based on their contents.
    9.52+
    9.53+The simplest project looks like this:
    9.54+
    9.55+#+begin_src skel :results pp replace :exports both
    9.56+:name hello-world
    9.57+#+end_src
    9.58+
    9.59+Don't worry, this is still lisp - the parentheses are implied. All we
    9.60+actually need is a name to generate an object, and we can fill in the
    9.61+blanks later as the project develops.
    9.62+
    9.63+Here is a more verbose example, still with only metadata:
    9.64+
    9.65+#+begin_src skel :results pp replace :exports both
    9.66+;;; skelfile --- core skelfile -*- mode: skel; -*-
    9.67+:name "core"
    9.68+:author "Richard Westhaver <ellis@rwest.io>"
    9.69+:version "0.1.0"
    9.70+:license "MPL"
    9.71+:description "The Compiler Company Core"
    9.72+:vc :hg
    9.73+:tags ("core")
    9.74+:docs ((:org "readme") (:org "install") (:org "tests") (:org "todo"))
    9.75+:imports ("lisp/lisp.sk" "rust/rust.sk")
    9.76+#+end_src
    9.77+
    9.78+** version control
    9.79+=skel= integrates closely with our Version Control System (VCS) which
    9.80+is built on [[https://www.mercurial-scm.org/][Mercurial]], but we also interact with and host many [[https://git-scm.com/][Git]]
    9.81+repositories.
    9.82+
    9.83+The =skel= tool helps us abstract away the differences between git/hg
    9.84+and make maximum use of their utility. When you run a =skel vc=
    9.85+command the currently active ~sk-project~ and configuration are used
    9.86+to determine the appropriate VC backend to call. New backends can of
    9.87+course be added as extensions.
    9.88+
    9.89+** TODO compilers
    9.90+- State "TODO"       from              [2023-12-09 Sat 19:28]
    9.91+One of the most unusual features of =skel= is the compiler set. With
    9.92+the =skel= CLI you can compile the following types of files for your
    9.93+project directly from a ~skelfile~:
    9.94+- Makefile (.mk)
    9.95+- Lisp system defs (.asd)
    9.96+- Cargo.toml
    9.97+- Containerfile
    9.98+- .hgignore/.gitignore
    9.99+
   9.100+We treat skelfiles as the mother of all build formats and consolidate
   9.101+different formats into our own project DSL. This helps reduce
   9.102+complexity while increasing capability and portability.
   9.103+
   9.104+Project compilation occurs on demand with the =sk compile= command.
   9.105+
   9.106+** TODO virtualization
   9.107+- State "TODO"       from              [2023-12-09 Sat 18:55]
   9.108+
   9.109+  =skel= offers a mechanism for generating and running Virtual
   9.110+  Machines (VMs) and Containers. Under the hood we depend on [[https://podman.io/][podman]]
   9.111+  for our container runtime as well as [[https://www.qemu.org/][QEMU]] for some
   9.112+  functionality.
   9.113+
   9.114+** TODO emacs integration
   9.115+- State "TODO"       from              [2023-12-09 Sat 19:30]
   9.116+=sk.el= is the Emacs support package for skel. It contains a
   9.117+=skel-mode= for working with skelfiles and will soon contain
   9.118+additional built-in integrations for =project.el=, =vc.el=, and more.
   9.119+** TODO deployment
   9.120+- State "TODO"       from              [2023-12-09 Sat 19:37]
   9.121+** TODO visualization
   9.122+- State "TODO"       from              [2023-12-09 Sat 19:37]
   9.123+* help
   9.124+#+begin_src shell :results pp replace :exports both
   9.125+skel -h
   9.126+#+end_src
   9.127+
   9.128+#+RESULTS:
   9.129+#+begin_example
   9.130+skel v0.1.1
   9.131+  usage: skel [global] <command> [<arg>]
   9.132+
   9.133+  A hacker's project compiler and build tool.
   9.134+  options:
   9.135+     -h/--help* :  print this message
   9.136+     -v/--version* :  print version
   9.137+     -d/--debug* :  set log level (debug,info,trace,warn)
   9.138+     -c/--config* :  set a custom skel user config
   9.139+     -i/--input  :  input source
   9.140+     -o/--output  :  output target
   9.141+  commands:
   9.142+    init  :  initialize a skelfile in the current directory
   9.143+     -n/--name  :  project name
   9.144+    
   9.145+    show  :  describe the project skelfile
   9.146+     -f/--file  :  path to skelfile
   9.147+    
   9.148+    inspect  :  inspect the project skelfile
   9.149+     -f/--file  :  path to skelfile
   9.150+    
   9.151+    make  :  build project targets
   9.152+     -t/--target  :  target to build
   9.153+    
   9.154+    run  :  run a script or command
   9.155+    
   9.156+    push  :  push the current project upstream
   9.157+    
   9.158+    pull  :  pull the current project from remote
   9.159+    
   9.160+    clone  :  clone a remote project
   9.161+    
   9.162+    commit  :  commit changes to the project vc
   9.163+    
   9.164+    edit  :  edit a project file
   9.165+    
   9.166+    shell  :  open the sk-shell interpreter
   9.167+    
   9.168+#+end_example
   9.169+
    10.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2+++ b/core/app/tz.org	Sat Dec 09 20:50:45 2023 -0500
    10.3@@ -0,0 +1,12 @@
    10.4+{{{header(tz,Richard Westhaver,ellis@rwest.io)}}}
    10.5+
    10.6+=tz= is a small binary for packing and unpacking compressed archives
    10.7+(tar+zstd).
    10.8+
    10.9+* help
   10.10+#+begin_src shell :results pp replace
   10.11+tz -h
   10.12+#+end_src
   10.13+
   10.14+#+RESULTS:
   10.15+: mtz [pack|unpack|unpackr] PATH
    11.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2+++ b/core/lib/alch.org	Sat Dec 09 20:50:45 2023 -0500
    11.3@@ -0,0 +1,1 @@
    11.4+{{{header(alch,Richard Westhaver,ellis@rwest.io)}}}
    12.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2+++ b/core/lib/audio.org	Sat Dec 09 20:50:45 2023 -0500
    12.3@@ -0,0 +1,1 @@
    12.4+{{{header(audio,Richard Westhaver,ellis@rwest.io)}}}
    13.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2+++ b/core/lib/crypto.org	Sat Dec 09 20:50:45 2023 -0500
    13.3@@ -0,0 +1,1 @@
    13.4+{{{header(crypto,Richard Westhaver,ellis@rwest.io)}}}
    14.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2+++ b/core/lib/db.org	Sat Dec 09 20:50:45 2023 -0500
    14.3@@ -0,0 +1,1 @@
    14.4+{{{header(db,Richard Westhaver,ellis@rwest.io)}}}
    15.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2+++ b/core/lib/dl.org	Sat Dec 09 20:50:45 2023 -0500
    15.3@@ -0,0 +1,1 @@
    15.4+{{{header(dl,Richard Westhaver,ellis@rwest.io)}}}
    16.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2+++ b/core/lib/dot.org	Sat Dec 09 20:50:45 2023 -0500
    16.3@@ -0,0 +1,1 @@
    16.4+{{{header(dot,Richard Westhaver,ellis@rwest.io)}}}
    17.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2+++ b/core/lib/flate.org	Sat Dec 09 20:50:45 2023 -0500
    17.3@@ -0,0 +1,1 @@
    17.4+{{{header(flate,Richard Westhaver,ellis@rwest.io)}}}
    18.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2+++ b/core/lib/hash.org	Sat Dec 09 20:50:45 2023 -0500
    18.3@@ -0,0 +1,1 @@
    18.4+{{{header(hash,Richard Westhaver,ellis@rwest.io)}}}
    19.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2+++ b/core/lib/krypt.org	Sat Dec 09 20:50:45 2023 -0500
    19.3@@ -0,0 +1,1 @@
    19.4+{{{header(krypt,Richard Westhaver,ellis@rwest.io)}}}
    20.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2+++ b/core/lib/logger.org	Sat Dec 09 20:50:45 2023 -0500
    20.3@@ -0,0 +1,1 @@
    20.4+{{{header(logger,Richard Westhaver,ellis@rwest.io)}}}
    21.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2+++ b/core/lib/net.org	Sat Dec 09 20:50:45 2023 -0500
    21.3@@ -0,0 +1,1 @@
    21.4+{{{header(net,Richard Westhaver,ellis@rwest.io)}}}
    22.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2+++ b/core/lib/nlp.org	Sat Dec 09 20:50:45 2023 -0500
    22.3@@ -0,0 +1,1 @@
    22.4+{{{header(nlp,Richard Westhaver,ellis@rwest.io)}}}
    23.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2+++ b/core/lib/obj.org	Sat Dec 09 20:50:45 2023 -0500
    23.3@@ -0,0 +1,1 @@
    23.4+{{{header(obj,Richard Westhaver,ellis@rwest.io)}}}
    24.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2+++ b/core/lib/organ.org	Sat Dec 09 20:50:45 2023 -0500
    24.3@@ -0,0 +1,1 @@
    24.4+{{{header(organ,Richard Westhaver,ellis@rwest.io)}}}
    25.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2+++ b/core/lib/packy.org	Sat Dec 09 20:50:45 2023 -0500
    25.3@@ -0,0 +1,1 @@
    25.4+{{{header(packy,Richard Westhaver,ellis@rwest.io)}}}
    26.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2+++ b/core/lib/rdb.org	Sat Dec 09 20:50:45 2023 -0500
    26.3@@ -0,0 +1,1 @@
    26.4+{{{header(rdb,Richard Westhaver,ellis@rwest.io)}}}
    27.1--- a/core/lib/readme.org	Wed Dec 06 23:27:11 2023 -0500
    27.2+++ b/core/lib/readme.org	Sat Dec 09 20:50:45 2023 -0500
    27.3@@ -1,3 +1,25 @@
    27.4 {{{header(Core Lib Docs,Richard Westhaver,ellis@rwest.io)}}}
    27.5 #+OPTIONS: ^:nil toc:nil num:nil html-postamble:nil
    27.6 #+EXPORT_FILE_NAME: index
    27.7+
    27.8+* [[file:skel.org][skel]]                                                                 :lisp:
    27.9+
   27.10+* [[file:organ.org][organ]]                                                                :lisp:
   27.11+* [[file:packy.org][packy]]                                                                :lisp:
   27.12+* [[file:rdb.org][rdb]]                                                                  :lisp:
   27.13+* [[file:nlp.org][nlp]]                                                                  :lisp:
   27.14+* [[file:dot.org][dot]]                                                                  :lisp:
   27.15+* [[file:alch.org][alch]]                                                                 :rust:
   27.16+* [[file:audio.org][audio]]                                                                :rust:
   27.17+* [[file:crypto.org][crypto]]                                                               :rust:
   27.18+* [[file:logger.org][logger]]                                                               :rust:
   27.19+* [[file:krypt.org][krypt]]                                                                :rust:
   27.20+* [[file:sxp.org][sxp]]                                                                  :rust:
   27.21+* [[file:tenex.org][tenex]]                                                                :rust:
   27.22+* [[file:util.org][util]]                                                                 :rust:
   27.23+* [[file:obj.org][obj]]                                                                  :rust:
   27.24+* [[file:net.org][net]]                                                                  :rust:
   27.25+* [[file:flate.org][flate]]                                                                :rust:
   27.26+* [[file:db.org][db]]                                                                   :rust:
   27.27+* [[file:dl.org][dl]]                                                                   :rust:
   27.28+* [[file:hash.org][hash]]                                                                 :rust:
    28.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2+++ b/core/lib/skel.org	Sat Dec 09 20:50:45 2023 -0500
    28.3@@ -0,0 +1,51 @@
    28.4+{{{header(skel,Richard Westhaver,ellis@rwest.io)}}}
    28.5+
    28.6+=skel= is /a hacker's project compiler and build tool/. It is an
    28.7+extensible software library designed for managing /projects/.
    28.8+
    28.9+The [[https://compiler.company/docs/core/app/skel.html][cli]] is the main entry point for typical users. This documentation
   28.10+is for library developers and internal use.
   28.11+
   28.12+* Overview
   28.13+This library started as a Rust crate but was re-written in Lisp as the
   28.14+purpose of the library grew from managing a small collection of
   28.15+user-space libraries (also written in Rust) to managing large
   28.16+collections in many different langs.
   28.17+
   28.18+It is obvious in hindsight, that this project needs Lisp. Today we are
   28.19+built on CLOS with classes and methods exposing the library API.
   28.20+
   28.21+* Design
   28.22+The library core is built on CLOS. Most important data structures are
   28.23+represented with classes, slots, and methods such as the ~sk-project~
   28.24+class which has a slot named ~:components~ and a method specialized on
   28.25+it called ~load-ast~.
   28.26+
   28.27+We make use of mixins defined within the library like ~sk-meta~ as
   28.28+well as classes defined downstream - the ~sxp~ class for example
   28.29+provides a default method for AST functions (~load-ast~ ~build-ast~)
   28.30+and is defined in the ~std/sxp~ package.
   28.31+
   28.32+On top of the core we build our compilers or 'translators' which
   28.33+convert core objects to a corresponding external representation. For
   28.34+example the ~makefile~ and ~mk-*~ classes defined in ~skel/comp/make~
   28.35+can be built from a ~sk-project~ and ~sk-*~ instances. Once built, the
   28.36+~sk-compile~ method can be used to actually generate the GNU Make
   28.37+output as a stream of bytes.
   28.38+
   28.39+The remainder of the ~skel~ system is dedicated to extensions. These
   28.40+are all optional. There are built-in extension called ~tools~ which
   28.41+run within the ~skel~ system and external extensions (~ext~) which
   28.42+integrate with a particular external system.
   28.43+
   28.44+The ~tools~ we provide are similar to Cargo's [[https://doc.rust-lang.org/book/ch14-05-extending-cargo.html][custom commands]], but
   28.45+they don't need to be a separate binary - they can be compiled into
   28.46+the core image. The downside is that this requires re-compiling ~skel~
   28.47+every time you want to add a new tool. However since this is Lisp not
   28.48+Rust, we can compile anywhere - including from within ~skel~
   28.49+itself.
   28.50+
   28.51+~ext~ contains extensions for external systems. These modules are the
   28.52+'edges' of the system and provide support to programs which need to be
   28.53+able to access ~skel~ data at runtime. These modules always compiled
   28.54+separately and aren't built into the default core image.
    29.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2+++ b/core/lib/sxp.org	Sat Dec 09 20:50:45 2023 -0500
    29.3@@ -0,0 +1,1 @@
    29.4+{{{header(sxp,Richard Westhaver,ellis@rwest.io)}}}
    30.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2+++ b/core/lib/tenex.org	Sat Dec 09 20:50:45 2023 -0500
    30.3@@ -0,0 +1,1 @@
    30.4+{{{header(tenex,Richard Westhaver,ellis@rwest.io)}}}
    31.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2+++ b/core/lib/util.org	Sat Dec 09 20:50:45 2023 -0500
    31.3@@ -0,0 +1,1 @@
    31.4+{{{header(util,Richard Westhaver,ellis@rwest.io)}}}