changelog shortlog graph tags branches files raw help

Mercurial > core / changeset: skel refactor1

changeset 384: 8fe057887c17
parent 383: db2922748364
child 385: 37949b3c203a
author: Richard Westhaver <ellis@rwest.io>
date: Wed, 29 May 2024 23:29:40 -0400
files: lisp/bin/skel.lisp lisp/lib/obj/equiv.lisp lisp/lib/skel/comp/asd.lisp lisp/lib/skel/comp/cargo.lisp lisp/lib/skel/comp/makefile.lisp lisp/lib/skel/comp/pkg.lisp lisp/lib/skel/comp/pkgbuild.lisp lisp/lib/skel/core/err.lisp lisp/lib/skel/core/header.lisp lisp/lib/skel/core/mk.lisp lisp/lib/skel/core/obj.lisp lisp/lib/skel/core/pkg.lisp lisp/lib/skel/core/proto.lisp lisp/lib/skel/core/types.lisp lisp/lib/skel/core/util.lisp lisp/lib/skel/core/vars.lisp lisp/lib/skel/core/vm.lisp lisp/lib/skel/ext/asdf.lisp lisp/lib/skel/ext/box.lisp lisp/lib/skel/ext/cargo.lisp lisp/lib/skel/ext/inspect.lisp lisp/lib/skel/ext/krypt.lisp lisp/lib/skel/ext/net.lisp lisp/lib/skel/ext/packy.lisp lisp/lib/skel/ext/pkg.lisp lisp/lib/skel/ext/pod.lisp lisp/lib/skel/pkg.lisp lisp/lib/skel/skel.asd lisp/lib/skel/skel.lisp lisp/lib/skel/tests.lisp lisp/lib/skel/tools/deploy.lisp lisp/lib/skel/tools/pkg.lisp lisp/lib/skel/tools/viz.lisp lisp/std/defpkg.lisp lisp/std/gc.log lisp/std/mop.lisp lisp/std/pkg.lisp lisp/std/sys.lisp
description: skel refactor1
     1.1--- a/lisp/bin/skel.lisp	Tue May 28 23:50:43 2024 -0400
     1.2+++ b/lisp/bin/skel.lisp	Wed May 29 23:29:40 2024 -0400
     1.3@@ -2,11 +2,10 @@
     1.4 
     1.5 ;;  TODO 2024-05-09: add shell configurables to rules - maybe at sk-command
     1.6 ;;  level. :INPUT :WAIT :OUTPUT
     1.7-
     1.8-(uiop:define-package :bin/skel
     1.9-  (:use :cl :std :cli/clap :vc :sb-ext)
    1.10+(in-package :sk-user)
    1.11+(defpkg :bin/skel
    1.12+  (:use :cl :std :cli/clap :vc :sb-ext :skel :log :dat/sxp)
    1.13   (:import-from :cli/shell :*shell-input*)
    1.14-  (:use-reexport :skel :log)
    1.15   (:export :main))
    1.16 
    1.17 (in-package :bin/skel)
    1.18@@ -14,10 +13,11 @@
    1.19 
    1.20 (defopt skc-help (print-help $cli) $val)
    1.21 (defopt skc-version (print-version $cli))
    1.22-(defopt skc-level *log-level* (setq *log-level* (if $val (if (stringp $val)
    1.23-                                                             (sb-int:keywordicate (string-upcase $val))
    1.24-                                                             $val)
    1.25-                                                    :info)))
    1.26+(defopt skc-level *log-level*
    1.27+  (setq *log-level* (if $val (if (stringp $val)
    1.28+                                 (sb-int:keywordicate (string-upcase $val))
    1.29+                                 $val)
    1.30+                        :info)))
    1.31 
    1.32 ;; TODO 2023-10-13: almost there
    1.33 ;; (defopt skc-config
    1.34@@ -30,8 +30,8 @@
    1.35 (defcmd skc-init
    1.36   (let ((file (when $args (pop $args)))
    1.37 	(name (when (> $argc 1) (pop $args)))) ;; TODO: test, may need to be
    1.38-                                               ;; sequential for side-effect
    1.39-                                               ;; of pop
    1.40+    ;; sequential for side-effect
    1.41+    ;; of pop
    1.42     (handler-bind
    1.43 	((sb-ext:file-exists
    1.44 	   #'(lambda (s)
    1.45@@ -176,14 +176,14 @@
    1.46   (trace! "starting skel shell")
    1.47   (setq *no-exit* t)
    1.48   (cli/clap::with-cli-handlers
    1.49-      (progn
    1.50-        (in-package :sk-user)
    1.51-        (use-package :cl-user)
    1.52-        (use-package :sb-ext)
    1.53-        (use-package :std-user)
    1.54-        (init-skel-vars)
    1.55-        (println "Welcome to SKEL")
    1.56-        (sb-impl::toplevel-repl nil))))
    1.57+    (progn
    1.58+      (in-package :sk-user)
    1.59+      (use-package :cl-user)
    1.60+      (use-package :sb-ext)
    1.61+      (use-package :std-user)
    1.62+      (init-skel-vars)
    1.63+      (println "Welcome to SKEL")
    1.64+      (sb-impl::toplevel-repl nil))))
    1.65 
    1.66 (define-cli $cli
    1.67   :name "skel"
    1.68@@ -259,9 +259,6 @@
    1.69 	   :description "open the sk-shell interpreter"
    1.70            :thunk skc-shell)))
    1.71 
    1.72-(defpackage :sk-user
    1.73-  (:use :cl :std :skel))
    1.74-
    1.75 (defmain ()
    1.76   (in-package :sk-user)
    1.77   (let ((*log-level* :info))
     2.1--- a/lisp/lib/obj/equiv.lisp	Tue May 28 23:50:43 2024 -0400
     2.2+++ b/lisp/lib/obj/equiv.lisp	Wed May 29 23:29:40 2024 -0400
     2.3@@ -67,3 +67,5 @@
     2.4 (defgeneric nequiv (a b))
     2.5 
     2.6 (defgeneric neqv (a b))
     2.7+
     2.8+(defgeneric equals (a b &rest args))
     3.1--- a/lisp/lib/skel/comp/asd.lisp	Tue May 28 23:50:43 2024 -0400
     3.2+++ b/lisp/lib/skel/comp/asd.lisp	Wed May 29 23:29:40 2024 -0400
     3.3@@ -10,7 +10,7 @@
     3.4 ;; will end up violating all that is DRY and holy.
     3.5 
     3.6 ;;; Code:
     3.7-(in-package :skel/comp)
     3.8+(in-package :skel/comp/asd)
     3.9 
    3.10 ;; (describe (asdf:find-system :skel))
    3.11 
     4.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2+++ b/lisp/lib/skel/comp/cargo.lisp	Wed May 29 23:29:40 2024 -0400
     4.3@@ -0,0 +1,21 @@
     4.4+;;; lib/skel/comp/cargo.lisp --- Cargo.toml Compiler
     4.5+
     4.6+;; 
     4.7+
     4.8+;;; Code:
     4.9+(in-package :skel/comp/cargo)
    4.10+
    4.11+(defparameter *default-cargo-manifest* "Cargo.toml")
    4.12+(defparameter *cargo-manifest-extension* "toml")
    4.13+
    4.14+(defclass sk-rust-system (skel sk-meta)
    4.15+  ())
    4.16+
    4.17+(defclass sk-rust-component (skel)
    4.18+  (type value))
    4.19+
    4.20+(defmethod sk-compile ((self sk-rust-system) stream &key &allow-other-keys))
    4.21+
    4.22+(defmethod sk-write-file ((self sk-rust-system) &key path))
    4.23+
    4.24+(defmethod sk-read-file ((self sk-rust-system) path))
     5.1--- a/lisp/lib/skel/comp/makefile.lisp	Tue May 28 23:50:43 2024 -0400
     5.2+++ b/lisp/lib/skel/comp/makefile.lisp	Wed May 29 23:29:40 2024 -0400
     5.3@@ -19,7 +19,7 @@
     5.4 ;; https://www.gnu.org/software/make/manual/html_node/Parsing-Makefiles.html
     5.5 
     5.6 ;;; Code:
     5.7-(in-package :skel/comp)
     5.8+(in-package :skel/comp/makefile)
     5.9 
    5.10 (defparameter *default-makefile* "makefile")
    5.11 (defparameter *makefile-extension* "mk")
    5.12@@ -31,11 +31,11 @@
    5.13 
    5.14 (deftype mk-val-designator () '(member nil :simple :immediate :conditional :recursive :once :append :shell))
    5.15 
    5.16-(defstruct mk-val "" (kind nil :type mk-val-designator)  (val nil :type sxp:form))
    5.17+(defstruct mk-val (kind nil :type mk-val-designator)  (val nil :type sxp:form))
    5.18 
    5.19-(defstruct mk-var ""
    5.20-	   (key "" :type string)
    5.21-	   (val (make-mk-val) :type mk-val))
    5.22+(defstruct mk-var
    5.23+  (key "" :type string)
    5.24+  (val (make-mk-val) :type mk-val))
    5.25 
    5.26 ;; https://www.gnu.org/software/make/manual/html_node/Makefile-Contents.html
    5.27 (defclass makefile (skel sk-meta)
    5.28@@ -49,15 +49,15 @@
    5.29 	     :type (vector sk-rule) :accessor mk-irules))
    5.30   (:documentation "A virtual GNU Makefile."))
    5.31 
    5.32-(defmethod push-rule ((self sk-rule) (place makefile) &optional implicit)
    5.33+(defmethod push-mk-rule ((self sk-rule) (place makefile) &optional implicit)
    5.34   (if implicit
    5.35       (vector-push-extend self (mk-irules place))
    5.36       (vector-push-extend self (mk-erules place))))
    5.37 
    5.38-(defmethod push-directive ((self sk-command) (place makefile))
    5.39+(defmethod push-mk-directive ((self sk-command) (place makefile))
    5.40   (vector-push-extend self (mk-directives place)))
    5.41 
    5.42-(defmethod push-var ((self cons) (place makefile))
    5.43+(defmethod push-mk-var ((self cons) (place makefile))
    5.44   (destructuring-bind (k v) self
    5.45     (setf (gethash k (mk-vars place)) v)))
    5.46 
    5.47@@ -100,3 +100,20 @@
    5.48 
    5.49 (defmethod sk-read-file ((self makefile) path)
    5.50   (with-open-file (in path :direction :input)))
    5.51+
    5.52+;;; Readtable
    5.53+(defreadtable :makefile
    5.54+  (:merge :std))
    5.55+
    5.56+;;; Auto Vars
    5.57+
    5.58+;; simplified version of GNU Make Automatic Variables
    5.59+
    5.60+;; don't need these: $% $? $+ $*
    5.61+
    5.62+(defmacro def-mk-auto (sym ll &body body))
    5.63+
    5.64+(def-mk-auto $@ (rule) (sk-rule-target rule))
    5.65+(def-mk-auto $< (rule) (car (sk-rule-source rule)))
    5.66+(def-mk-auto $^ (rule) (sk-rule-source rule))
    5.67+
     6.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2+++ b/lisp/lib/skel/comp/pkg.lisp	Wed May 29 23:29:40 2024 -0400
     6.3@@ -0,0 +1,19 @@
     6.4+(defpackage :skel/comp/makefile
     6.5+  (:use :cl :std :skel/core/obj :skel/core/proto :skel/core/header)
     6.6+  (:export
     6.7+   :*default-makefile* :*makefile-extension* 
     6.8+   :*mk-magic-vars* :*mk-command-prefixes*
     6.9+   :push-mk-rule :push-mk-var :push-mk-directive
    6.10+   :mk-val-designator 
    6.11+   :mk-val :mk-var
    6.12+   :makefile))
    6.13+
    6.14+(defpackage :skel/comp/pkgbuild
    6.15+  (:use :cl :std :skel/core/obj :skel/core/proto))
    6.16+
    6.17+(defpackage :skel/comp/cargo
    6.18+  (:use :cl :std :skel/core/obj))
    6.19+
    6.20+(defpackage :skel/comp/asd
    6.21+  (:use :cl :std :skel/core/obj)
    6.22+  (:export :sk-asd))
     7.1--- a/lisp/lib/skel/comp/pkgbuild.lisp	Tue May 28 23:50:43 2024 -0400
     7.2+++ b/lisp/lib/skel/comp/pkgbuild.lisp	Wed May 29 23:29:40 2024 -0400
     7.3@@ -1,1 +1,20 @@
     7.4-(in-package :skel/comp)
     7.5+;;; lib/skel/comp/pkgbuild.lisp --- Archlinux PKGBUILD compiler
     7.6+
     7.7+;; 
     7.8+
     7.9+;;; Code:
    7.10+(in-package :skel/comp/pkgbuild)
    7.11+
    7.12+(defparameter *default-pkgbuild* "PKGBUILD")
    7.13+
    7.14+(defclass sk-pkgbuild-system (skel sk-meta)
    7.15+  ())
    7.16+
    7.17+(defclass sk-pkgbuild-component (skel)
    7.18+  (type value))
    7.19+
    7.20+(defmethod sk-compile ((self sk-pkgbuild-system) stream &key &allow-other-keys))
    7.21+
    7.22+(defmethod sk-write-file ((self sk-pkgbuild-system) &key path))
    7.23+
    7.24+(defmethod sk-read-file ((self sk-pkgbuild-system) path))
     8.1--- a/lisp/lib/skel/core/err.lisp	Tue May 28 23:50:43 2024 -0400
     8.2+++ b/lisp/lib/skel/core/err.lisp	Wed May 29 23:29:40 2024 -0400
     8.3@@ -1,5 +1,8 @@
     8.4-;;; Conditions
     8.5-(in-package :skel/core)
     8.6+;;; skel/core/err.lisp --- Skel Errors
     8.7+
     8.8+;;; Code:
     8.9+(in-package :skel/core/err)
    8.10+
    8.11 (eval-always
    8.12   (deferror skel-error (std-error) () (:auto t)))
    8.13 
     9.1--- a/lisp/lib/skel/core/header.lisp	Tue May 28 23:50:43 2024 -0400
     9.2+++ b/lisp/lib/skel/core/header.lisp	Wed May 29 23:29:40 2024 -0400
     9.3@@ -3,7 +3,8 @@
     9.4 ;;
     9.5 
     9.6 ;;; Code:
     9.7-(in-package :skel)
     9.8+(in-package :skel/core/header)
     9.9+
    9.10 ;;; File Headers
    9.11 (deftype file-header-kind () '(member :source :shebang))
    9.12 
    10.1--- a/lisp/lib/skel/core/mk.lisp	Tue May 28 23:50:43 2024 -0400
    10.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3@@ -1,18 +0,0 @@
    10.4-(in-package :skel/core)
    10.5-
    10.6-(eval-when (:compile-toplevel :load-toplevel :execute)
    10.7-  (defreadtable :makefile
    10.8-    (:merge :std)))
    10.9-
   10.10-;;; Auto Vars
   10.11-
   10.12-;; simplified version of GNU Make Automatic Variables
   10.13-
   10.14-;; don't need these: $% $? $+ $*
   10.15-
   10.16-(defmacro def-mk-auto (sym ll &body body))
   10.17-
   10.18-(def-mk-auto $@ (rule) (sk-rule-target rule))
   10.19-(def-mk-auto $< (rule) (car (sk-rule-source rule)))
   10.20-(def-mk-auto $^ (rule) (sk-rule-source rule))
   10.21-
    11.1--- a/lisp/lib/skel/core/obj.lisp	Tue May 28 23:50:43 2024 -0400
    11.2+++ b/lisp/lib/skel/core/obj.lisp	Wed May 29 23:29:40 2024 -0400
    11.3@@ -1,47 +1,8 @@
    11.4-;;; Objects
    11.5-(in-package :skel/core)
    11.6-
    11.7-;;; Vars
    11.8-(declaim (type vc-designator *default-skel-vc-kind*))
    11.9-(deftype vc-designator () '(member :hg :git list))
   11.10-
   11.11-;; ref: https://spdx.org/licenses/
   11.12-(deftype license-designator () '(or string pathname (member :mpl2 :wtfpl :lgpg :llgpl :gpl :mit :mit0)))
   11.13-
   11.14-(defparameter *default-skel-vc-kind* :hg)
   11.15-(defparameter *default-skel-license-kind* :mpl2)
   11.16-(declaim (type sk-project *skel-project*))
   11.17-(defvar *skel-project*)
   11.18-(defvar *skel-env*)
   11.19-;; TODO (defvar *skelfile-boundary* nil "Set an upper bounds on how
   11.20-;; many times and how far to walk an arbitrary file directory.")
   11.21+;;; skel/core/obj.lisp --- Skel Objects
   11.22 
   11.23-(declaim (type string *default-skel-user* *default-skelfile* *default-skel-extension*))
   11.24-(defparameter *default-skel-user* (uid-username (unix-getuid)))
   11.25-(defparameter *default-skelfile* "skelfile")
   11.26-(defparameter *default-skel-extension* "sk")
   11.27-(defparameter *default-skelrc* ".skelrc")
   11.28-
   11.29-(declaim (type pathname *skel-stash* *skel-store*
   11.30-	       *skel-cache* *user-skelrc* *system-skelrc*))
   11.31-
   11.32-(defparameter *skel-stash* #P"/usr/local/share/skel/stash/")
   11.33-
   11.34-(defparameter *skel-store* #P"/usr/local/share/skel/store/")
   11.35+;;; Code:
   11.36+(in-package :skel/core/obj)
   11.37 
   11.38-(defparameter *skel-cache* #P"/usr/local/share/skel/cache/")
   11.39-
   11.40-(defparameter *skel-registry* #P"/usr/local/share/skel/registry/")
   11.41-
   11.42-(defparameter *user-skelrc* (pathname (format nil "~~/~A" *default-skelrc*)))
   11.43-
   11.44-(defparameter *system-skelrc* (pathname "/etc/skelrc"))
   11.45-
   11.46-(defparameter *keep-ast* nil
   11.47-  "Whether to keep the :ast slot stored with an sk object, or set it to nil so
   11.48-that it can be GC'd.")
   11.49-
   11.50-;;; Objects
   11.51 (defclass skel (id)
   11.52   ()
   11.53   (:documentation "Base class for skeleton objects. Inherits from `sxp'."))
   11.54@@ -201,9 +162,9 @@
   11.55     :export export
   11.56     :attach attach))
   11.57 
   11.58-(defmethod print-object ((self sk-document) stream)
   11.59-  (print-unreadable-object (self stream :type t)
   11.60-    (format stream "~S ~A" (sb-int:keywordicate (sk-kind self)) (sk-path self))))
   11.61+;; (defmethod print-object ((self sk-document) (stream t))
   11.62+;;   (print-unreadable-object (self stream :type t)
   11.63+;;     (format stream "~S ~A" (sk-kind self) (sk-path self))))
   11.64 
   11.65 (defmethod write-sxp-stream ((self sk-document) stream &key (pretty t) (case :downcase) &allow-other-keys)
   11.66   (write `(,(keywordicate (sk-kind self)) ,(sk-path self)
   11.67@@ -221,8 +182,6 @@
   11.68   (sk-write-string (sk-path self)))
   11.69 
   11.70 ;;;; Script
   11.71-(deftype script-designator () '(member :bin :sh :bash :zsh :nu :lisp :python))
   11.72-
   11.73 (defclass sk-script (skel sk-meta sxp)
   11.74   ((kind :initform nil :initarg :kind :type (or null script-designator) :accessor sk-kind)))
   11.75 
   11.76@@ -358,8 +317,8 @@
   11.77 
   11.78 (declaim (type sk-user-config *skel-user-config*))
   11.79 (declaim (type sk-system-config *skel-system-config*))
   11.80-(defvar *skel-user-config* (default-sk-user-config))
   11.81-(defvar *skel-system-config* (default-sk-system-config))
   11.82+(defvar *sk-user-config* (default-sk-user-config))
   11.83+(defvar *sk-system-config* (default-sk-system-config))
   11.84 
   11.85 ;;;; Snippet
   11.86 (defstruct sk-snippet
   11.87@@ -383,7 +342,7 @@
   11.88   (kind *default-skel-vc-kind* :type vc-designator)
   11.89   (remotes nil :type (or string list)))
   11.90 
   11.91-(defmethod write-sxp-stream ((self sk-vc-meta) stream &key (pretty t) (case :downcase) (fmt :collapsed))
   11.92+(defmethod write-sxp-stream ((self sk-vc-meta) stream &key (pretty t) (case :downcase) (fmt :pretty))
   11.93   (if (= 0 (length (sk-vc-meta-remotes self)))
   11.94       (write (sk-vc-meta-kind self) :stream stream :pretty pretty :case case :readably t :array t :escape t)
   11.95       (progn
   11.96@@ -426,8 +385,11 @@
   11.97             :accessor sk-imports
   11.98             :type (vector pathname))))
   11.99 
  11.100+
  11.101 (defun find-sk-symbol (s)
  11.102-  (find-symbol* (symbol-name s) :skel/core nil))
  11.103+  (handler-bind ((error #'(lambda (con)
  11.104+                          (funcall #'skel-error con))))
  11.105+    (find-symbol* (symbol-name s) :skel/core/obj t)))
  11.106 
  11.107 ;; ast -> obj
  11.108 (defmethod load-ast ((self sk-project))
    12.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2+++ b/lisp/lib/skel/core/pkg.lisp	Wed May 29 23:29:40 2024 -0400
    12.3@@ -0,0 +1,86 @@
    12.4+(defpackage :skel/core/err
    12.5+  (:use :cl :std :dat/sxp)
    12.6+  (:export
    12.7+   :skel-error
    12.8+   :skel-syntax-error
    12.9+   :skel-fmt-error
   12.10+   :skel-compile-error))
   12.11+
   12.12+(defpackage :skel/core/types
   12.13+  (:use :cl :std)
   12.14+  (:export :vc-designator :license-designator :script-designator))
   12.15+
   12.16+(defpackage :skel/core/proto
   12.17+  (:use :cl :std)
   12.18+  (:export
   12.19+   :sk-run :sk-new :sk-save
   12.20+   :sk-tangle :sk-weave
   12.21+   :sk-call :sk-load
   12.22+   :sk-print :sk-read
   12.23+   :sk-compile :sk-transform
   12.24+   :sk-write :sk-writeln
   12.25+   :sk-write-string :sk-write-file
   12.26+   :sk-read-file :sk-install-user-config
   12.27+   :sk-vc-push :sk-vc-pull
   12.28+   :sk-find-rule :sk-find-script))
   12.29+   
   12.30+(defpackage :skel/core/header
   12.31+  (:use :cl :std :skel/core/err)
   12.32+  (:export
   12.33+   :make-file-header 
   12.34+   :make-shebang-file-header 
   12.35+   :make-source-file-header 
   12.36+   :file-header-kind
   12.37+   :file-header
   12.38+   :make-source-header-comment 
   12.39+   :make-shebang-comment))
   12.40+
   12.41+(defpackage :skel/core/vars
   12.42+  (:use :cl :std :skel/core/types)
   12.43+  (:import-from :sb-unix :uid-username :unix-getuid)
   12.44+  (:export :*user-skelrc* :*system-skelrc* :*keep-ast*
   12.45+   :*skel-project* :*default-skelrc*
   12.46+   :*skel-env* :*skel-project*
   12.47+   :*skel-registry* :*skel-cache* :*skel-store* :*skel-stash*
   12.48+   :*skel-registry* :*default-skelfile* :*default-skel-user* :*default-skel-vc-kind*
   12.49+   :*default-skel-cache* :*skelfile-extension* :*skelfile-boundary*))
   12.50+
   12.51+(defpackage :skel/core/obj
   12.52+  (:use :cl :std :obj
   12.53+   :skel/core/proto :skel/core/err :skel/core/types :skel/core/vars
   12.54+   :dat/sxp :skel/core/header :vc :log)
   12.55+  (:import-from :uiop :ensure-absolute-pathname :read-file-forms)
   12.56+  (:export :sk-license :sk-author :sk-path :sk-stash :sk-cache :sk-registry :sk-user
   12.57+   :sk-store :sk-push :sk-pull :sk-imports
   12.58+   :sk-tags :edit-skelrc :sk-target :skel
   12.59+   :sk-meta :def-sk-class :sk-project :sk-source
   12.60+   :sk-vc :sk-vars :sk-env :make-sk-rule
   12.61+   :make-sk-vc-meta :sk-vc-meta :sk-vc-meta-kind :sk-vc-meta-remotes
   12.62+   :sk-rule :sk-rule-target :sk-rule-source :sk-rule-recipe
   12.63+   :sk-make :sk-description :sk-kind :sk-rules
   12.64+   :sk-version :sk-name :sk-docs :sk-document 
   12.65+   :sk-command :sk-scripts :sk-script :sk-config
   12.66+   :sk-snippets :sk-snippet :sk-abbrevs :sk-abbrev
   12.67+   :sk-user-config :sk-system-config
   12.68+   :*sk-user-config* :*sk-system-config*))
   12.69+
   12.70+(defpackage :skel/core/util
   12.71+  (:use :cl :std :skel/core/obj :skel/core/vars :skel/core/proto :dat/sxp :skel/core/err)
   12.72+  (:import-from :uiop/pathname :pathname-parent-directory-pathname)
   12.73+  (:import-from :cli :find-exe)
   12.74+  (:export
   12.75+   :init-skelrc :load-skelrc
   12.76+   :init-skel-vars
   12.77+   :init-user-skelrc :load-user-skelrc
   12.78+   :init-system-skelrc :load-system-skelrc
   12.79+   :init-skelfile
   12.80+   :load-skelfile
   12.81+   :find-skelfile
   12.82+   :find-sk-file
   12.83+   :find-project-root
   12.84+   :describe-skeleton
   12.85+   :describe-project))
   12.86+
   12.87+(defpackage :skel/core/vm
   12.88+  (:use :cl :std :skel/core/err)
   12.89+  (:export :make-stack-slot :make-sk-vm :sks-ref :sks-pop :sks-push))
    13.1--- a/lisp/lib/skel/core/proto.lisp	Tue May 28 23:50:43 2024 -0400
    13.2+++ b/lisp/lib/skel/core/proto.lisp	Wed May 29 23:29:40 2024 -0400
    13.3@@ -1,5 +1,5 @@
    13.4 ;;; Proto
    13.5-(in-package :skel/core)
    13.6+(in-package :skel/core/proto)
    13.7 
    13.8 (defgeneric sk-run (self)
    13.9   (:documentation "run the object SELF."))
   13.10@@ -21,6 +21,8 @@
   13.11   (:documentation "compile object SELF to output STREAM"))
   13.12 (defgeneric sk-transform (self other &key &allow-other-keys)
   13.13   (:documentation "transform SELF to object of type OTHER"))
   13.14+(defgeneric sk-read (self stream)
   13.15+  (:documentation "read and fill SELF with an object from STREAM."))
   13.16 (defgeneric sk-read-file (self path)
   13.17   (:documentation "read a PATH from the filesystem with SELF."))
   13.18 (defgeneric sk-write (self stream)
    14.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2+++ b/lisp/lib/skel/core/types.lisp	Wed May 29 23:29:40 2024 -0400
    14.3@@ -0,0 +1,8 @@
    14.4+(in-package :skel/core/types)
    14.5+
    14.6+(deftype vc-designator () `(member :hg :git list))
    14.7+
    14.8+;; ref: https://spdx.org/licenses/
    14.9+(deftype license-designator () `(or string pathname (member :mpl2 :wtfpl :lgpg :llgpl :gpl :mit :mit0)))
   14.10+
   14.11+(deftype script-designator () '(member :bin :sh :bash :zsh :nu :lisp :python))
    15.1--- a/lisp/lib/skel/core/util.lisp	Tue May 28 23:50:43 2024 -0400
    15.2+++ b/lisp/lib/skel/core/util.lisp	Wed May 29 23:29:40 2024 -0400
    15.3@@ -1,5 +1,5 @@
    15.4 ;;; Utils
    15.5-(in-package :skel/core)
    15.6+(in-package :skel/core/util)
    15.7 
    15.8 ;;; Configs
    15.9 
   15.10@@ -11,15 +11,15 @@
   15.11 
   15.12 (defun init-user-skelrc (&optional (file *user-skelrc*))
   15.13   "Initialize a skelrc configuration based on the currently active
   15.14-*SKEL-USER-CONFIG*. Defaults to ~/.skelrc."
   15.15-  (sk-write-file *skel-user-config*
   15.16+*SK-USER-CONFIG*. Defaults to ~/.skelrc."
   15.17+  (sk-write-file *sk-user-config*
   15.18                  :path file
   15.19                  :pretty t))
   15.20 
   15.21 (defun init-system-skelrc (&optional (file *system-skelrc*))
   15.22   "Initialize a system skelrc configuration based on the currently active
   15.23-*SKEL-SYSTEM-CONFIG*."
   15.24-  (sk-write-file *skel-system-config*
   15.25+*SK-SYSTEM-CONFIG*."
   15.26+  (sk-write-file *sk-system-config*
   15.27                  :path file
   15.28                  :pretty t))
   15.29 
   15.30@@ -28,7 +28,7 @@
   15.31 
   15.32 If FILE does not exists, it is created with a default configuration."
   15.33   (if-let ((f (probe-file file)))
   15.34-      (setq *skel-user-config* (load-ast 
   15.35+      (setq *sk-user-config* (load-ast 
   15.36                                 (make-instance 'sk-user-config 
   15.37                                   :ast #1=(file-read-forms f) :id (sxhash #1#)
   15.38                                   :path f)))
   15.39@@ -41,11 +41,11 @@
   15.40 doesn't exist, since it is assumed to be write-protected. This can be
   15.41 overwritten with the AUTO flag."
   15.42   (if-let ((f (probe-file file)))
   15.43-    (setq *skel-system-config*
   15.44+    (setq *sk-system-config*
   15.45           (load-ast (make-instance 'sk-system-config :ast #1=(file-read-forms f) :id (sxhash #1#) :path f)))
   15.46     (when auto (init-system-skelrc))))
   15.47 
   15.48-(eval-when (:compile-toplevel :load-toplevel :execute)
   15.49+(eval-always
   15.50   (defun load-skelfile (file)
   15.51     "Load the 'skelfile' FILE."
   15.52     (load-ast (sk-read-file (make-instance 'sk-project) file)))
   15.53@@ -104,19 +104,19 @@
   15.54   (ed *system-skelrc*))
   15.55 
   15.56 (defun get-config-slot* (slot)
   15.57-  "First check *SKEL-USER-CONFIG* for a slot value, and if a valid value
   15.58-isn't found check *SKEL-SYSTEM-CONFIG*."
   15.59-  (when (boundp '*skel-user-config*)
   15.60-    (if (slot-unbound 'sk-user-config *skel-user-config* slot)
   15.61-        (when (boundp '*skel-system-config*)
   15.62-          (if (slot-unbound 'sk-system-config *skel-system-config* slot)
   15.63+  "First check *SK-USER-CONFIG* for a slot value, and if a valid value
   15.64+isn't found check *SK-SYSTEM-CONFIG*."
   15.65+  (when (boundp '*sk-user-config*)
   15.66+    (if (slot-unbound 'sk-user-config *sk-user-config* slot)
   15.67+        (when (boundp '*sk-system-config*)
   15.68+          (if (slot-unbound 'sk-system-config *sk-system-config* slot)
   15.69               (error 'skel-error :message (format nil "slot is unbound: ~a" slot))
   15.70-              (slot-value *skel-system-config* slot)))
   15.71-      (slot-value *skel-user-config* slot))))
   15.72+              (slot-value *sk-system-config* slot)))
   15.73+      (slot-value *sk-user-config* slot))))
   15.74 
   15.75 (defun init-skel-vars ()
   15.76   "Initialize the global SKEL variables based on the active
   15.77-*SKEL-USER-CONFIG*."
   15.78-  (setq *skel-cache* (sk-cache *skel-user-config*)
   15.79-        *skel-stash* (sk-stash *skel-user-config*)
   15.80-        *skel-registry* (sk-registry *skel-user-config*)))
   15.81+*SK-USER-CONFIG*."
   15.82+  (setq *skel-cache* (sk-cache *sk-user-config*)
   15.83+        *skel-stash* (sk-stash *sk-user-config*)
   15.84+        *skel-registry* (sk-registry *sk-user-config*)))
    16.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2+++ b/lisp/lib/skel/core/vars.lisp	Wed May 29 23:29:40 2024 -0400
    16.3@@ -0,0 +1,35 @@
    16.4+(in-package :skel/core/vars)
    16.5+
    16.6+(declaim (type vc-designator *default-skel-vc-kind*))
    16.7+(defparameter *default-skel-vc-kind* :hg)
    16.8+(defparameter *default-skel-license-kind* :mpl2)
    16.9+;; TODO (defvar *skelfile-boundary* nil "Set an upper bounds on how
   16.10+;; many times and how far to walk an arbitrary file directory.")
   16.11+(declaim (type string *default-skel-user* *default-skelfile* *default-skel-extension*))
   16.12+(defparameter *default-skel-user* (uid-username (unix-getuid)))
   16.13+(defparameter *default-skelfile* "skelfile")
   16.14+(defparameter *default-skel-extension* "sk")
   16.15+(defparameter *default-skelrc* ".skelrc")
   16.16+
   16.17+(declaim (type pathname *skel-stash* *skel-store*
   16.18+               *skel-cache* *user-skelrc* *system-skelrc*))
   16.19+
   16.20+(defparameter *skel-stash* #P"/usr/local/share/skel/stash/")
   16.21+
   16.22+(defparameter *skel-store* #P"/usr/local/share/skel/store/")
   16.23+
   16.24+(defparameter *skel-cache* #P"/usr/local/share/skel/cache/")
   16.25+
   16.26+(defparameter *skel-registry* #P"/usr/local/share/skel/registry/")
   16.27+
   16.28+(defvar *skel-project*)
   16.29+(defvar *skel-env*)
   16.30+
   16.31+(defparameter *user-skelrc* (pathname (format nil "~~/~A" *default-skelrc*)))
   16.32+
   16.33+(defparameter *system-skelrc* (pathname "/etc/skelrc"))
   16.34+
   16.35+(defparameter *keep-ast* nil
   16.36+  "Whether to keep the :ast slot stored with an sk object, or set it to nil so
   16.37+that it can be GC'd.")
   16.38+
    17.1--- a/lisp/lib/skel/core/vm.lisp	Tue May 28 23:50:43 2024 -0400
    17.2+++ b/lisp/lib/skel/core/vm.lisp	Wed May 29 23:29:40 2024 -0400
    17.3@@ -1,10 +1,10 @@
    17.4-;;; VM
    17.5+;;; skel/core/vm.lisp --- The Skel Virtual Machine
    17.6 
    17.7 ;; Stack slots refer to objects. a Stack is a sequence of objects
    17.8 ;; which can be output to a stream using a specialized function.
    17.9 
   17.10 ;;; Code:
   17.11-(in-package :skel)
   17.12+(in-package :skel/core/vm)
   17.13 (deftype stack-slot-kind () '(member :shell :lisp :comment :var :rule :directive :nop))
   17.14 
   17.15 (defstruct stack-slot 
    18.1--- a/lisp/lib/skel/ext/asdf.lisp	Tue May 28 23:50:43 2024 -0400
    18.2+++ b/lisp/lib/skel/ext/asdf.lisp	Wed May 29 23:29:40 2024 -0400
    18.3@@ -18,4 +18,4 @@
    18.4 ;; - https://github.com/atlas-engineer/nyxt/tree/master/libraries/nasdf
    18.5 
    18.6 ;;; Code:
    18.7-(defpackage :skel/asdf)
    18.8+(in-package :skel/ext/asdf)
    19.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2+++ b/lisp/lib/skel/ext/box.lisp	Wed May 29 23:29:40 2024 -0400
    19.3@@ -0,0 +1,1 @@
    19.4+(in-package :skel/ext/box)
    20.1--- a/lisp/lib/skel/ext/cargo.lisp	Tue May 28 23:50:43 2024 -0400
    20.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3@@ -1,1 +0,0 @@
    20.4-(defpackage :skel/cargo)
    21.1--- a/lisp/lib/skel/ext/inspect.lisp	Tue May 28 23:50:43 2024 -0400
    21.2+++ b/lisp/lib/skel/ext/inspect.lisp	Wed May 29 23:29:40 2024 -0400
    21.3@@ -1,8 +1,8 @@
    21.4-(in-package :skel/inspect)
    21.5+(in-package :skel/ext/inspect)
    21.6 
    21.7 (defgeneric sk-inspect (self &key)
    21.8   (:documentation "Open a skel object in the clouseau inspector."))
    21.9 
   21.10+#+clouseau
   21.11 (defmethod sk-inspect ((self sk-project) &key (wait t))
   21.12   (sb-thread:make-thread #'clouseau:inspect :name "SK-INSPECTOR" :arguments (list self)))
   21.13-
    22.1--- a/lisp/lib/skel/ext/krypt.lisp	Tue May 28 23:50:43 2024 -0400
    22.2+++ b/lisp/lib/skel/ext/krypt.lisp	Wed May 29 23:29:40 2024 -0400
    22.3@@ -1,1 +1,6 @@
    22.4-(defpackage :skel/krypt)
    22.5+;;; skel/ext/krypt.lisp --- Skel Krypt Extension
    22.6+
    22.7+;;
    22.8+
    22.9+;;; Code:
   22.10+(in-package :skel/ext/krypt)
    23.1--- a/lisp/lib/skel/ext/net.lisp	Tue May 28 23:50:43 2024 -0400
    23.2+++ b/lisp/lib/skel/ext/net.lisp	Wed May 29 23:29:40 2024 -0400
    23.3@@ -1,5 +1,27 @@
    23.4 ;;; skel/ext/net.lisp --- Skel Network
    23.5 
    23.6-;;
    23.7+;; This extension adds a message-based network interface to the SKEL system
    23.8+;; which can be initialized at runtime and used to communicate with remote
    23.9+;; SKEL instances.
   23.10+
   23.11+;;; Commentary:
   23.12+
   23.13+;; The current design is meant to be as simple as possible. We currently only
   23.14+;; support UDP socket communication over inet4 sockets.
   23.15+
   23.16+;;;; Future Goals:
   23.17+
   23.18+;; - unix sockets
   23.19+
   23.20+;; - inet6
   23.21+
   23.22+;; - wrapped streams (crypto)
   23.23+
   23.24+;; - concurrency
   23.25+
   23.26+;; - skelfile config
   23.27+
   23.28+;; - protocol extensions
   23.29 
   23.30 ;;; Code:
   23.31+(in-package :skel/ext/net)
    24.1--- a/lisp/lib/skel/ext/packy.lisp	Tue May 28 23:50:43 2024 -0400
    24.2+++ b/lisp/lib/skel/ext/packy.lisp	Wed May 29 23:29:40 2024 -0400
    24.3@@ -1,1 +1,1 @@
    24.4-(defpackage :skel/packy)
    24.5+(in-package :skel/ext/packy)
    25.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2+++ b/lisp/lib/skel/ext/pkg.lisp	Wed May 29 23:29:40 2024 -0400
    25.3@@ -0,0 +1,32 @@
    25.4+(defpackage :skel/ext/asdf
    25.5+  (:use :cl :std :skel)
    25.6+  (:export))
    25.7+
    25.8+(defpackage :skel/ext/net
    25.9+  (:use :cl :std :skel :net/sans-io :dat/proto :obj/id)
   25.10+  (:export))
   25.11+
   25.12+;; requires clouseau
   25.13+(defpackage :skel/ext/inspect
   25.14+  (:use :cl :std :skel)
   25.15+  (:export :sk-inspect))
   25.16+
   25.17+(defpackage :skel/ext/krypt
   25.18+  (:use :cl :std :skel :krypt)
   25.19+  (:export))
   25.20+
   25.21+(defpackage :skel/ext/packy
   25.22+  (:use :cl :std :skel :packy)
   25.23+  (:export))
   25.24+
   25.25+(defpackage :skel/ext/asdf
   25.26+  (:use :cl :std :skel :asdf/system)
   25.27+  (:export))
   25.28+
   25.29+(defpackage :skel/ext/pod
   25.30+  (:use :cl :std :skel :pod)
   25.31+  (:export))
   25.32+
   25.33+(defpackage :skel/ext/box
   25.34+  (:use :cl :std :skel :box)
   25.35+  (:export))
    27.1--- a/lisp/lib/skel/pkg.lisp	Tue May 28 23:50:43 2024 -0400
    27.2+++ b/lisp/lib/skel/pkg.lisp	Wed May 29 23:29:40 2024 -0400
    27.3@@ -30,107 +30,20 @@
    27.4 ;; 
    27.5 
    27.6 ;;; Code:
    27.7-(defpackage :skel/core
    27.8-  (:use :cl :cl-ppcre :std :sb-mop :obj/id :sb-bsd-sockets :sb-unix :sxp :log :cli :obj :vc :sb-ext)
    27.9-  (:import-from :cli :find-exe)
   27.10-  (:import-from :uiop :read-file-forms :ensure-absolute-pathname)
   27.11-  (:import-from :uiop/pathname :pathname-parent-directory-pathname)
   27.12-  (:import-from :uiop :with-current-directory)
   27.13-  (:import-from :sb-ext :run-program :cas)
   27.14-  (:import-from :std :when-let :if-let :if-let*)
   27.15-  (:import-from :sxp :form)
   27.16-  (:export
   27.17-   ;; err
   27.18-   :skel-error
   27.19-   :skel-syntax-error
   27.20-   :skel-fmt-error
   27.21-   :skel-compile-error
   27.22-   ;; proto
   27.23-   :sk-run :sk-new :sk-save
   27.24-   :sk-tangle :sk-weave
   27.25-   :sk-call :sk-print :sk-load
   27.26-   :sk-compile :sk-transform
   27.27-   :sk-write :sk-writeln
   27.28-   :sk-write-string :sk-write-file
   27.29-   :sk-read-file :sk-install-user-config
   27.30-   :sk-find-rule
   27.31-   :sk-find-script
   27.32-   ;; header
   27.33-   :make-file-header 
   27.34-   :make-shebang-file-header 
   27.35-   :make-source-file-header 
   27.36-   :file-header-kind
   27.37-   :make-source-header-comment 
   27.38-   :make-shebang-comment
   27.39-   ;; virt
   27.40-   :containerfile
   27.41-   :*default-containerfile*
   27.42-   ;; obj
   27.43-   :*user-skelrc* :*system-skelrc* :*keep-ast*
   27.44-   :*skel-project* :*skel-user-config* :*skel-system-config* :*default-skelrc* :*skel-registry* :*skel-cache*
   27.45-   :*default-skelfile* :*default-skel-user* :*default-skel-cache*
   27.46-   :*skelfile-extension* :*skelfile-boundary*
   27.47-   :load-ast :sk-license
   27.48-   :sk-author :sk-path :sk-stash :sk-cache :sk-registry :sk-user :sk-store
   27.49-   :sk-push :sk-pull
   27.50-   :sk-tags :sk-imports
   27.51-   :edit-skelrc
   27.52-   :skel :sk-meta :def-sk-class :sk-project :sk-target :sk-source :sk-vc
   27.53-   :sk-vc-meta :sk-vc-meta-kind :sk-vc-meta-remotes
   27.54-   :sk-vars :sk-env
   27.55-   :sk-rule :sk-rule-target :sk-rule-source :sk-rule-recipe :make-sk-rule
   27.56-   :sk-make
   27.57-   :sk-description :sk-kind :sk-rules :sk-version :sk-name :sk-docs :sk-document 
   27.58-   :sk-command :sk-scripts :sk-script :sk-config :sk-snippets :sk-snippet :sk-abbrevs :sk-abbrev
   27.59-   :sk-user-config
   27.60-   :sk-system-config
   27.61-   ;; util
   27.62-   :init-skelrc :load-skelrc
   27.63-   :init-skel-vars
   27.64-   :init-user-skelrc :load-user-skelrc
   27.65-   :init-system-skelrc :load-system-skelrc
   27.66-   :init-skelfile
   27.67-   :load-skelfile
   27.68-   :find-skelfile
   27.69-   :find-project-root
   27.70-   :describe-skeleton
   27.71-   :describe-project
   27.72-   ;; vm
   27.73-   :make-stack-slot :make-sk-vm :sks-ref :sks-pop :sks-push))
   27.74+(pkg:defpkg :skel/core
   27.75+  (:use :cl :std)
   27.76+  (:use-reexport :skel/core/err :skel/core/types :skel/core/proto :skel/core/vars :skel/core/header :skel/core/obj
   27.77+                 :skel/core/util :skel/core/vm :dat/sxp))
   27.78+
   27.79+(pkg:defpkg :skel/comp
   27.80+  (:use :cl :std)
   27.81+  (:use-reexport :skel/comp/asd :skel/comp/cargo :skel/comp/makefile :skel/comp/pkgbuild))
   27.82 
   27.83-(defpackage :skel/comp
   27.84-  (:use :cl :std :skel/core :sxp)
   27.85-  (:export
   27.86-   ;; asd
   27.87-   :sk-asd
   27.88-   ;; ignore
   27.89-   ;; containerfile
   27.90-   ;; makefile
   27.91-   :*default-makefile* :*makefile-extension* 
   27.92-   :*mk-magic-vars* :*mk-command-prefixes*
   27.93-   :mk-val-designator 
   27.94-   :mk-val :mk-var
   27.95-   :makefile :push-rule :push-directive :push-var))
   27.96-
   27.97-(uiop:define-package :skel
   27.98-    (:use :cl :std :skel/core :skel/comp)
   27.99-    (:use-reexport :skel/core :skel/comp))
  27.100+(pkg:defpkg :skel
  27.101+  (:nicknames :sk)
  27.102+  (:use :cl :std)
  27.103+  (:use-reexport :skel/core :skel/comp))
  27.104 
  27.105-;;; Tools
  27.106-(defpackage :skel/viz
  27.107-  (:use :cl :std :skel)
  27.108-  (:export))
  27.109-
  27.110-(defpackage :skel/deploy
  27.111-  (:use :cl :std :skel)
  27.112-  (:export))
  27.113-
  27.114-;;; Extensions
  27.115-(defpackage :skel/asdf
  27.116-  (:use :cl :std :skel)
  27.117-  (:export))
  27.118-
  27.119-;; requires clouseau
  27.120-(defpackage :skel/inspect
  27.121-  (:use :cl :std :skel)
  27.122-  (:export :sk-inspect))
  27.123+(pkg:defpkg :sk-user
  27.124+  (:use :cl :std)
  27.125+  (:use-reexport :skel))
    28.1--- a/lisp/lib/skel/skel.asd	Tue May 28 23:50:43 2024 -0400
    28.2+++ b/lisp/lib/skel/skel.asd	Wed May 29 23:29:40 2024 -0400
    28.3@@ -5,34 +5,48 @@
    28.4   :bug-tracker "https://vc.compiler.company/comp/core/issues"
    28.5   :depends-on (:uiop :asdf :sb-posix :sb-bsd-sockets :sb-concurrency :cl-ppcre :std
    28.6                      :obj :dat :cli :organ :doc :vc
    28.7-                     (:feature :inspect :clouseau))
    28.8+                     (:feature :ext :pod)
    28.9+                     (:feature :ext :box)
   28.10+                     (:feature :ext :krypt)
   28.11+                     (:feature :ext :packy)
   28.12+                     (:feature :ext :net)
   28.13+                     (:feature (:and :ext :clouseau) :clouseau))
   28.14   :serial t
   28.15   :components 
   28.16-  ((:file "pkg")
   28.17-   (:module "core"
   28.18+  ((:module "core"
   28.19     :serial t
   28.20     :components 
   28.21-    ((:file "err")
   28.22+    ((:file "pkg")
   28.23+     (:file "err")
   28.24+     (:file "types")
   28.25      (:file "proto")
   28.26      (:file "header")
   28.27-     (:file "virt")
   28.28+     (:file "vars")
   28.29      (:file "obj")
   28.30      (:file "util")
   28.31      (:file "vm")))
   28.32    (:module "comp"
   28.33     :components
   28.34-    ((:file "asd")
   28.35+    ((:file "pkg")
   28.36+     (:file "asd")
   28.37      (:file "makefile")
   28.38      (:file "pkgbuild")))
   28.39+   (:file "pkg")
   28.40    (:module "tools"
   28.41     :components
   28.42-    ((:file "deploy")
   28.43-     (:file "viz")))
   28.44+    ((:file "pkg")
   28.45+     (:file "deploy")
   28.46+     (:file "viz"))
   28.47+    :if-feature :tools)
   28.48    (:module "ext"
   28.49     :components
   28.50-    ((:file "asdf")
   28.51-     #+inspect (:file "inspect")
   28.52-     (:file "net"))))
   28.53+    ((:file "pkg")
   28.54+     (:file "asdf")
   28.55+     (:file "inspect" :if-feature :clouseau)
   28.56+     (:file "krypt")
   28.57+     (:file "packy")
   28.58+     (:file "net"))
   28.59+    :if-feature :ext))
   28.60   :in-order-to ((test-op (test-op "skel/tests"))))
   28.61 
   28.62 (defsystem :skel/tests
    30.1--- a/lisp/lib/skel/tests.lisp	Tue May 28 23:50:43 2024 -0400
    30.2+++ b/lisp/lib/skel/tests.lisp	Wed May 29 23:29:40 2024 -0400
    30.3@@ -1,6 +1,6 @@
    30.4 ;;; skel/tests.lisp --- skel tests
    30.5 (defpackage :skel/tests
    30.6-  (:use :cl :skel/core :skel/comp :rt :sxp :log :obj/id)
    30.7+  (:use :cl :skel :rt :log :obj :dat/sxp)
    30.8   (:import-from :uiop :file-exists-p))
    30.9 
   30.10 (in-package :skel/tests)
   30.11@@ -32,7 +32,7 @@
   30.12 This covers variations of make-source-header-comment, make-source-file-header,
   30.13 make-shebang-comment, and make-shebang-file-header."
   30.14   (is (eq (type-of (make-shebang-file-header 
   30.15-		    (make-shebang-comment "/dev/null"))) 
   30.16+		    (make-shebang-comment "/dev/null")))
   30.17 	  'file-header))
   30.18   (is (eq (type-of (make-source-file-header 
   30.19 		    (make-source-header-comment 
   30.20@@ -46,7 +46,7 @@
   30.21   "Ensure skelfiles are created and loaded correctly and that they signal
   30.22 the appropriate restarts."
   30.23   (do-tmp-path (tmp-path "sk")
   30.24-    (is (sk-write-file (make-instance 'sk-project :name "nada" :path %tmp) :path %tmp :if-exists :supersede))
   30.25+    ;; (is (sk-write-file (make-instance 'sk-project :name "nada" :path "test") :path %tmp :if-exists :supersede))
   30.26     (ignore-errors (delete-file %tmp))
   30.27     (setf %tmp (tmp-path "sk"))
   30.28     (is (init-skelfile %tmp))
   30.29@@ -64,7 +64,7 @@
   30.30 							   :path (or path %tmp) :description "barfood"))
   30.31 	     (src (path) (make-instance 'sk-source :path path))
   30.32 	     (cmd (body) (make-instance 'sk-command :body body))
   30.33-	     (rule (tr sr) (make-sk-rule tr sr)))
   30.34+	     (rule (tr sr) (make-sk-rule tr sr nil)))
   30.35 	(is (null (sk-write-file (mk) :if-exists :supersede :path (tmp-path "mk"))))
   30.36 	(let* ((tr1 (tmp-path "t1"))
   30.37 	       (tr2 (tmp-path "t2"))
   30.38@@ -72,18 +72,18 @@
   30.39 	       (r1 (rule tr1 sr))
   30.40 	       (r2 (rule sr tr2))
   30.41 	       (mk1 (mk "test.mk")))
   30.42-	  (is (push-rule r1 mk1))
   30.43-	  (is (push-rule r2 mk1))
   30.44+	  (is (push-mk-rule r1 mk1))
   30.45+	  (is (push-mk-rule r2 mk1))
   30.46 	  ;; NOTE: not really useful yet
   30.47 	  ;; (is (push-rule r2 mk1 t))
   30.48 	  ;; (is (push-rule r1 mk1 t))
   30.49-	  (is (push-directive 
   30.50+	  (is (push-mk-directive 
   30.51 	       (cmd "ifeq ($(DEBUG),1) echo foo 
   30.52 endif")
   30.53 	       mk1))
   30.54 	  ;; (is (push-directive (cmd "") mk1))
   30.55-	  (is (push-var '(a b) mk1))
   30.56-	  (is (push-var '(b c) mk1))
   30.57+	  (is (push-mk-var '(a b) mk1))
   30.58+	  (is (push-mk-var '(b c) mk1))
   30.59 	  ;; FIXME
   30.60 	  ;; (is (null (sk-write-file mk1 :if-exists :supersede :path (tmp-path "mk"))))
   30.61 	  ))))
    31.1--- a/lisp/lib/skel/tools/deploy.lisp	Tue May 28 23:50:43 2024 -0400
    31.2+++ b/lisp/lib/skel/tools/deploy.lisp	Wed May 29 23:29:40 2024 -0400
    31.3@@ -11,4 +11,4 @@
    31.4 ;; multiple project pipelines this package will have the superior DX.
    31.5 
    31.6 ;;; Code:
    31.7-(in-package :skel/deploy)
    31.8+(in-package :skel/tools/deploy)
    32.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2+++ b/lisp/lib/skel/tools/pkg.lisp	Wed May 29 23:29:40 2024 -0400
    32.3@@ -0,0 +1,9 @@
    32.4+(in-package :sk-user)
    32.5+
    32.6+(defpkg :skel/tools/viz
    32.7+  (:use :cl :std :skel)
    32.8+  (:export))
    32.9+
   32.10+(defpkg :skel/tools/deploy
   32.11+  (:use :cl :std :skel)
   32.12+  (:export))
    33.1--- a/lisp/lib/skel/tools/viz.lisp	Tue May 28 23:50:43 2024 -0400
    33.2+++ b/lisp/lib/skel/tools/viz.lisp	Wed May 29 23:29:40 2024 -0400
    33.3@@ -16,4 +16,4 @@
    33.4 ;; - wl  :: wayland backend - look into widgets, mcclim, gtk4
    33.5 
    33.6 ;;; Code:
    33.7-(in-package :skel/viz)
    33.8+(in-package :skel/tools/viz)
    34.1--- a/lisp/std/defpkg.lisp	Tue May 28 23:50:43 2024 -0400
    34.2+++ b/lisp/std/defpkg.lisp	Wed May 29 23:29:40 2024 -0400
    34.3@@ -722,3 +722,19 @@
    34.4        #+(or clasp ecl gcl mkcl) (defpackage ,package (:use))
    34.5        (eval-when (:compile-toplevel :load-toplevel :execute)
    34.6          ,ensure-form))))
    34.7+
    34.8+;; This macro is courtesy of Paul Werkowski. A very nice idea. (From LISA)
    34.9+
   34.10+(defmacro define-lisp-package (pkg-name)
   34.11+  (flet ((externals-of (pkg)
   34.12+           (loop for s being each external-symbol in pkg collect s)))
   34.13+    (let* ((pkg-externs (externals-of pkg-name))
   34.14+           (pkg-shadows (intersection (package-shadowing-symbols pkg-name)
   34.15+                                       pkg-externs))
   34.16+           (cl-externs (externals-of "COMMON-LISP")))
   34.17+      `(defpackage ,(sb-int:symbolicate pkg-name "-LISP")
   34.18+         (:use "COMMON-LISP")
   34.19+         (:shadowing-import-from ,pkg-name ,@pkg-shadows)
   34.20+         (:import-from ,pkg-name ,@(set-difference pkg-externs pkg-shadows))
   34.21+         (:export ,@cl-externs)
   34.22+         (:export ,@pkg-externs)))))
    35.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2+++ b/lisp/std/gc.log	Wed May 29 23:29:40 2024 -0400
    35.3@@ -0,0 +1,684 @@
    35.4+=== GC Start ===
    35.5+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
    35.6+Small objects (in MiB):
    35.7+     0      0      0    311     94      0    406
    35.8+     5      1      2      2      2      3     12
    35.9+     6      1      6      2      4     13     28
   35.10+Large objects:
   35.11+     0      0      0      3      0      0      3
   35.12+     3      0      0      0      0      0      0
   35.13+     5      0      0      0      0      0      1
   35.14+     6      0      0      0      0      0      0
   35.15+=== GC End ===
   35.16+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.17+Small objects (in MiB):
   35.18+     0      0      0      5      4      0     10
   35.19+     5      1      2      2      2      3     12
   35.20+     6      1      6      2      4     13     28
   35.21+Large objects:
   35.22+     0      0      0      1      0      0      1
   35.23+     5      0      0      0      0      0      0
   35.24+     6      0      0      0      0      0      0
   35.25+=== GC Start ===
   35.26+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.27+Small objects (in MiB):
   35.28+     0      0      0    333     84      1    418
   35.29+     5      1      2      2      2      3     12
   35.30+     6      1      6      2      4     13     28
   35.31+Large objects:
   35.32+     0      0      0      2      0      0      2
   35.33+     3      0      0      0      0      0      0
   35.34+     5      0      0      0      0      0      0
   35.35+     6      0      0      0      0      0      0
   35.36+=== GC End ===
   35.37+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.38+Small objects (in MiB):
   35.39+     1      0      0     16      6      0     23
   35.40+     5      1      2      2      2      3     12
   35.41+     6      1      6      2      4     13     28
   35.42+Large objects:
   35.43+     1      0      0      1      0      0      1
   35.44+     5      0      0      0      0      0      0
   35.45+     6      0      0      0      0      0      0
   35.46+=== GC Start ===
   35.47+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.48+Small objects (in MiB):
   35.49+     0      0      0    278    128      0    407
   35.50+     1      0      0     16      6      0     23
   35.51+     5      1      2      2      2      3     12
   35.52+     6      1      6      2      4     13     28
   35.53+Large objects:
   35.54+     0      0      0      2      0      0      2
   35.55+     1      0      0      1      0      0      1
   35.56+     3      0      0      0      0      0      0
   35.57+     5      0      0      0      0      0      0
   35.58+     6      0      0      0      0      0      0
   35.59+=== GC End ===
   35.60+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.61+Small objects (in MiB):
   35.62+     0      0      0     18      4      0     23
   35.63+     1      0      0     16      6      0     23
   35.64+     5      1      2      2      2      3     12
   35.65+     6      1      6      2      4     13     28
   35.66+Large objects:
   35.67+     0      0      0      1      0      0      1
   35.68+     1      0      0      1      0      0      1
   35.69+     5      0      0      0      0      0      0
   35.70+     6      0      0      0      0      0      0
   35.71+=== GC Start ===
   35.72+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.73+Small objects (in MiB):
   35.74+     0      0      0    347     82      0    430
   35.75+     1      0      0     16      6      0     23
   35.76+     5      1      2      2      2      3     12
   35.77+     6      1      6      2      4     13     28
   35.78+Large objects:
   35.79+     0      0      0      4      0      0      4
   35.80+     1      0      0      1      0      0      1
   35.81+     3      0      0      0      0      0      0
   35.82+     5      0      0      0      0      0      0
   35.83+     6      0      0      0      0      0      0
   35.84+=== GC End ===
   35.85+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.86+Small objects (in MiB):
   35.87+     1      0      0     20      8      1     30
   35.88+     5      1      2      2      2      3     12
   35.89+     6      1      6      2      4     13     28
   35.90+Large objects:
   35.91+     1      0      0      2      0      0      2
   35.92+     5      0      0      0      0      0      0
   35.93+     6      0      0      0      0      0      0
   35.94+=== GC Start ===
   35.95+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
   35.96+Small objects (in MiB):
   35.97+     0      0      0    323     81      0    405
   35.98+     1      0      0     20      8      1     30
   35.99+     5      1      2      2      2      3     12
  35.100+     6      1      6      2      4     13     28
  35.101+Large objects:
  35.102+     0      0      0      3      0      0      3
  35.103+     1      0      0      2      0      0      2
  35.104+     3      0      0      0      0      0      0
  35.105+     5      0      0      0      0      0      0
  35.106+     6      0      0      0      0      0      0
  35.107+=== GC End ===
  35.108+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.109+Small objects (in MiB):
  35.110+     0      0      0     11      5      0     17
  35.111+     1      0      0     20      8      1     30
  35.112+     5      1      2      2      2      3     12
  35.113+     6      1      6      2      4     13     28
  35.114+Large objects:
  35.115+     0      0      0      1      0      0      1
  35.116+     1      0      0      2      0      0      2
  35.117+     5      0      0      0      0      0      0
  35.118+     6      0      0      0      0      0      0
  35.119+=== GC Start ===
  35.120+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.121+Small objects (in MiB):
  35.122+     0      0      0    325     92      2    420
  35.123+     1      0      0     20      8      1     30
  35.124+     5      1      2      2      2      3     12
  35.125+     6      1      6      2      4     13     28
  35.126+Large objects:
  35.127+     0      0      0      9      0      0      9
  35.128+     1      0      0      2      0      0      2
  35.129+     3      0      0      0      0      0      0
  35.130+     5      0      0      0      0      0      0
  35.131+     6      0      0      0      0      0      0
  35.132+=== GC End ===
  35.133+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.134+Small objects (in MiB):
  35.135+     1      0      0     35     16      2     54
  35.136+     5      1      2      2      2      3     12
  35.137+     6      1      6      2      4     13     28
  35.138+Large objects:
  35.139+     1      0      0      6      0      0      6
  35.140+     5      0      0      0      0      0      0
  35.141+     6      0      0      0      0      0      0
  35.142+=== GC Start ===
  35.143+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.144+Small objects (in MiB):
  35.145+     0      0      0    312     89      1    404
  35.146+     1      0      0     35     16      2     54
  35.147+     5      1      2      2      2      3     12
  35.148+     6      1      6      2      4     13     28
  35.149+Large objects:
  35.150+     0      0      0      6      0      0      6
  35.151+     1      0      0      6      0      0      6
  35.152+     3      0      0      0      0      0      0
  35.153+     5      0      0      0      0      0      0
  35.154+     6      0      0      0      0      0      0
  35.155+=== GC End ===
  35.156+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.157+Small objects (in MiB):
  35.158+     0      0      0     25      7      0     33
  35.159+     1      0      0     35     16      2     54
  35.160+     5      1      2      2      2      3     12
  35.161+     6      1      6      2      4     13     28
  35.162+Large objects:
  35.163+     0      0      0      0      0      0      0
  35.164+     1      0      0      6      0      0      6
  35.165+     5      0      0      0      0      0      0
  35.166+     6      0      0      0      0      0      0
  35.167+=== GC Start ===
  35.168+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.169+Small objects (in MiB):
  35.170+     0      0      0    346     92      1    439
  35.171+     1      0      0     35     16      2     54
  35.172+     5      1      2      2      2      3     12
  35.173+     6      1      6      2      4     13     28
  35.174+Large objects:
  35.175+     0      0      0      3      0      0      4
  35.176+     1      0      0      6      0      0      6
  35.177+     3      0      0      0      0      0      0
  35.178+     5      0      0      0      0      0      0
  35.179+     6      0      0      0      0      0      0
  35.180+=== GC End ===
  35.181+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.182+Small objects (in MiB):
  35.183+     1      2      3     23     17      3     50
  35.184+     5      1      2      2      2      3     12
  35.185+     6      1      6      2      4     13     28
  35.186+Large objects:
  35.187+     1      0      0      5      0      0      5
  35.188+     5      0      0      0      0      0      0
  35.189+     6      0      0      0      0      0      0
  35.190+=== GC Start ===
  35.191+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.192+Small objects (in MiB):
  35.193+     0      0      0    291    114      2    407
  35.194+     1      2      3     23     17      3     50
  35.195+     5      1      2      2      2      3     12
  35.196+     6      1      6      2      4     13     28
  35.197+Large objects:
  35.198+     0      0      0      1      0      0      1
  35.199+     1      0      0      5      0      0      5
  35.200+     3      0      0      0      0      0      0
  35.201+     5      0      0      0      0      0      1
  35.202+     6      0      0      0      0      0      0
  35.203+=== GC End ===
  35.204+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.205+Small objects (in MiB):
  35.206+     0      0      0     35      9      1     45
  35.207+     1      2      3     23     17      3     50
  35.208+     5      1      2      2      2      3     12
  35.209+     6      1      6      2      4     13     28
  35.210+Large objects:
  35.211+     0      0      0      0      0      0      0
  35.212+     1      0      0      5      0      0      5
  35.213+     5      0      0      0      0      0      0
  35.214+     6      0      0      0      0      0      0
  35.215+=== GC Start ===
  35.216+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.217+Small objects (in MiB):
  35.218+     0      0      0    223    230      1    454
  35.219+     1      2      3     23     17      3     50
  35.220+     5      1      2      2      2      3     12
  35.221+     6      1      6      2      4     13     28
  35.222+Large objects:
  35.223+     0      0      0      0      0      0      0
  35.224+     1      0      0      5      0      0      5
  35.225+     3      0      0      0      0      0      0
  35.226+     5      0      0      0      0      0      0
  35.227+     6      0      0      0      0      0      0
  35.228+=== GC End ===
  35.229+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.230+Small objects (in MiB):
  35.231+     1      2      3     83     32      5    126
  35.232+     5      1      2      2      2      3     12
  35.233+     6      1      6      2      4     13     28
  35.234+Large objects:
  35.235+     1      0      0      5      0      0      6
  35.236+     5      0      0      0      0      0      0
  35.237+     6      0      0      0      0      0      0
  35.238+=== GC Start ===
  35.239+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.240+Small objects (in MiB):
  35.241+     0      0      0     95    314      0    409
  35.242+     1      2      3     83     32      5    126
  35.243+     5      1      2      2      2      3     12
  35.244+     6      1      6      2      4     13     28
  35.245+Large objects:
  35.246+     1      0      0      5      0      0      6
  35.247+     3      0      0      0      0      0      0
  35.248+     5      0      0      0      0      0      0
  35.249+     6      0      0      0      0      0      0
  35.250+=== GC End ===
  35.251+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.252+Small objects (in MiB):
  35.253+     0      0      0      1      0      0      1
  35.254+     1      2      3     83     32      5    126
  35.255+     5      1      2      2      2      3     12
  35.256+     6      1      6      2      4     13     28
  35.257+Large objects:
  35.258+     1      0      0      5      0      0      6
  35.259+     5      0      0      0      0      0      0
  35.260+     6      0      0      0      0      0      0
  35.261+=== GC Start ===
  35.262+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.263+Small objects (in MiB):
  35.264+     0      0      0    198    211      0    410
  35.265+     1      2      3     83     32      5    126
  35.266+     5      1      2      2      2      3     12
  35.267+     6      1      6      2      4     13     28
  35.268+Large objects:
  35.269+     0      0      0      0      0      0      0
  35.270+     1      0      0      5      0      0      6
  35.271+     3      0      0      0      0      0      0
  35.272+     5      0      0      0      0      0      1
  35.273+     6      0      0      0      0      0      0
  35.274+=== GC End ===
  35.275+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.276+Small objects (in MiB):
  35.277+     2      2      3     18     18      5     48
  35.278+     5      1      2      2      2      3     12
  35.279+     6      1      6      2      4     13     28
  35.280+Large objects:
  35.281+     2      0      0      5      0      0      5
  35.282+     5      0      0      0      0      0      0
  35.283+     6      0      0      0      0      0      0
  35.284+=== GC Start ===
  35.285+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.286+Small objects (in MiB):
  35.287+     0      0      0    198    209      0    408
  35.288+     2      2      3     18     18      5     48
  35.289+     5      1      2      2      2      3     12
  35.290+     6      1      6      2      4     13     28
  35.291+Large objects:
  35.292+     0      0      0      1      0      0      1
  35.293+     2      0      0      5      0      0      5
  35.294+     3      0      0      0      0      0      0
  35.295+     5      0      0      0      0      0      0
  35.296+     6      0      0      0      0      0      0
  35.297+=== GC End ===
  35.298+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.299+Small objects (in MiB):
  35.300+     0      0      0     31      5      0     37
  35.301+     2      2      3     18     18      5     48
  35.302+     5      1      2      2      2      3     12
  35.303+     6      1      6      2      4     13     28
  35.304+Large objects:
  35.305+     0      0      0      0      0      0      0
  35.306+     2      0      0      5      0      0      5
  35.307+     5      0      0      0      0      0      0
  35.308+     6      0      0      0      0      0      0
  35.309+=== GC Start ===
  35.310+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.311+Small objects (in MiB):
  35.312+     0      0      0    149    298      0    447
  35.313+     2      2      3     18     18      5     48
  35.314+     5      1      2      2      2      3     12
  35.315+     6      1      6      2      4     13     28
  35.316+Large objects:
  35.317+     0      0      0      0      0      0      0
  35.318+     2      0      0      5      0      0      5
  35.319+     3      0      0      0      0      0      0
  35.320+     5      0      0      0      0      0      0
  35.321+     6      0      0      0      0      0      0
  35.322+=== GC End ===
  35.323+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.324+Small objects (in MiB):
  35.325+     1      0      0     32      5      0     38
  35.326+     2      2      3     18     18      5     48
  35.327+     5      1      2      2      2      3     12
  35.328+     6      1      6      2      4     13     28
  35.329+Large objects:
  35.330+     1      0      0      0      0      0      0
  35.331+     2      0      0      5      0      0      5
  35.332+     5      0      0      0      0      0      0
  35.333+     6      0      0      0      0      0      0
  35.334+=== GC Start ===
  35.335+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.336+Small objects (in MiB):
  35.337+     0      0      0    130    279      0    409
  35.338+     1      0      0     32      5      0     38
  35.339+     2      2      3     18     18      5     48
  35.340+     5      1      2      2      2      3     12
  35.341+     6      1      6      2      4     13     28
  35.342+Large objects:
  35.343+     0      0      0      0      0      0      0
  35.344+     1      0      0      0      0      0      0
  35.345+     2      0      0      5      0      0      5
  35.346+     3      0      0      0      0      0      0
  35.347+     5      0      0      0      0      0      0
  35.348+     6      0      0      0      0      0      0
  35.349+=== GC End ===
  35.350+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.351+Small objects (in MiB):
  35.352+     0      0      0      8      0      0      9
  35.353+     1      0      0     32      5      0     38
  35.354+     2      2      3     18     18      5     48
  35.355+     5      1      2      2      2      3     12
  35.356+     6      1      6      2      4     13     28
  35.357+Large objects:
  35.358+     0      0      0      0      0      0      0
  35.359+     1      0      0      0      0      0      0
  35.360+     2      0      0      5      0      0      5
  35.361+     5      0      0      0      0      0      0
  35.362+     6      0      0      0      0      0      0
  35.363+=== GC Start ===
  35.364+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.365+Small objects (in MiB):
  35.366+     0      0      0    148    269      0    418
  35.367+     1      0      0     32      5      0     38
  35.368+     2      2      3     18     18      5     48
  35.369+     5      1      2      2      2      3     12
  35.370+     6      1      6      2      4     13     28
  35.371+Large objects:
  35.372+     0      0      0      0      0      0      0
  35.373+     1      0      0      0      0      0      0
  35.374+     2      0      0      5      0      0      5
  35.375+     3      0      0      0      0      0      0
  35.376+     5      0      0      0      0      0      0
  35.377+     6      0      0      0      0      0      0
  35.378+=== GC End ===
  35.379+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.380+Small objects (in MiB):
  35.381+     1      0      0     41      6      0     47
  35.382+     2      2      3     18     18      5     48
  35.383+     5      1      2      2      2      3     12
  35.384+     6      1      6      2      4     13     28
  35.385+Large objects:
  35.386+     1      0      0      0      0      0      0
  35.387+     2      0      0      5      0      0      5
  35.388+     5      0      0      0      0      0      0
  35.389+     6      0      0      0      0      0      0
  35.390+=== GC Start ===
  35.391+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.392+Small objects (in MiB):
  35.393+     0      0      0    139    270      0    409
  35.394+     1      0      0     41      6      0     47
  35.395+     2      2      3     18     18      5     48
  35.396+     5      1      2      2      2      3     12
  35.397+     6      1      6      2      4     13     28
  35.398+Large objects:
  35.399+     1      0      0      0      0      0      0
  35.400+     2      0      0      5      0      0      5
  35.401+     3      0      0      0      0      0      0
  35.402+     5      0      0      0      0      0      0
  35.403+     6      0      0      0      0      0      0
  35.404+=== GC End ===
  35.405+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.406+Small objects (in MiB):
  35.407+     0      0      0      8      0      0      8
  35.408+     1      0      0     41      6      0     47
  35.409+     2      2      3     18     18      5     48
  35.410+     5      1      2      2      2      3     12
  35.411+     6      1      6      2      4     13     28
  35.412+Large objects:
  35.413+     1      0      0      0      0      0      0
  35.414+     2      0      0      5      0      0      5
  35.415+     5      0      0      0      0      0      0
  35.416+     6      0      0      0      0      0      0
  35.417+=== GC Start ===
  35.418+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.419+Small objects (in MiB):
  35.420+     0      0      0    147    270      0    417
  35.421+     1      0      0     41      6      0     47
  35.422+     2      2      3     18     18      5     48
  35.423+     5      1      2      2      2      3     12
  35.424+     6      1      6      2      4     13     28
  35.425+Large objects:
  35.426+     1      0      0      0      0      0      0
  35.427+     2      0      0      5      0      0      5
  35.428+     3      0      0      0      0      0      0
  35.429+     5      0      0      0      0      0      0
  35.430+     6      0      0      0      0      0      0
  35.431+=== GC End ===
  35.432+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.433+Small objects (in MiB):
  35.434+     1      0      0     49      6      0     56
  35.435+     2      2      3     18     18      5     48
  35.436+     5      1      2      2      2      3     12
  35.437+     6      1      6      2      4     13     28
  35.438+Large objects:
  35.439+     1      0      0      0      0      0      0
  35.440+     2      0      0      5      0      0      5
  35.441+     5      0      0      0      0      0      0
  35.442+     6      0      0      0      0      0      0
  35.443+=== GC Start ===
  35.444+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.445+Small objects (in MiB):
  35.446+     0      0      0    135    274      0    409
  35.447+     1      0      0     49      6      0     56
  35.448+     2      2      3     18     18      5     48
  35.449+     5      1      2      2      2      3     12
  35.450+     6      1      6      2      4     13     28
  35.451+Large objects:
  35.452+     1      0      0      0      0      0      0
  35.453+     2      0      0      5      0      0      5
  35.454+     3      0      0      0      0      0      0
  35.455+     5      0      0      0      0      0      0
  35.456+     6      0      0      0      0      0      0
  35.457+=== GC End ===
  35.458+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.459+Small objects (in MiB):
  35.460+     0      0      0      5      0      0      5
  35.461+     1      0      0     49      6      0     56
  35.462+     2      2      3     18     18      5     48
  35.463+     5      1      2      2      2      3     12
  35.464+     6      1      6      2      4     13     28
  35.465+Large objects:
  35.466+     1      0      0      0      0      0      0
  35.467+     2      0      0      5      0      0      5
  35.468+     5      0      0      0      0      0      0
  35.469+     6      0      0      0      0      0      0
  35.470+=== GC Start ===
  35.471+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.472+Small objects (in MiB):
  35.473+     0      0      0    142    272      0    414
  35.474+     1      0      0     49      6      0     56
  35.475+     2      2      3     18     18      5     48
  35.476+     5      1      2      2      2      3     12
  35.477+     6      1      6      2      4     13     28
  35.478+Large objects:
  35.479+     1      0      0      0      0      0      0
  35.480+     2      0      0      5      0      0      5
  35.481+     3      0      0      0      0      0      0
  35.482+     5      0      0      0      0      0      0
  35.483+     6      0      0      0      0      0      0
  35.484+=== GC End ===
  35.485+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.486+Small objects (in MiB):
  35.487+     1      0      0     58      6      0     64
  35.488+     2      2      3     18     18      5     48
  35.489+     5      1      2      2      2      3     12
  35.490+     6      1      6      2      4     13     28
  35.491+Large objects:
  35.492+     1      0      0      0      0      0      0
  35.493+     2      0      0      5      0      0      5
  35.494+     5      0      0      0      0      0      0
  35.495+     6      0      0      0      0      0      0
  35.496+=== GC Start ===
  35.497+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.498+Small objects (in MiB):
  35.499+     0      0      0    137    271      0    409
  35.500+     1      0      0     58      6      0     64
  35.501+     2      2      3     18     18      5     48
  35.502+     5      1      2      2      2      3     12
  35.503+     6      1      6      2      4     13     28
  35.504+Large objects:
  35.505+     1      0      0      0      0      0      0
  35.506+     2      0      0      5      0      0      5
  35.507+     3      0      0      0      0      0      0
  35.508+     5      0      0      0      0      0      0
  35.509+     6      0      0      0      0      0      0
  35.510+=== GC End ===
  35.511+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.512+Small objects (in MiB):
  35.513+     0      0      0      8      0      0      8
  35.514+     1      0      0     58      6      0     64
  35.515+     2      2      3     18     18      5     48
  35.516+     5      1      2      2      2      3     12
  35.517+     6      1      6      2      4     13     28
  35.518+Large objects:
  35.519+     1      0      0      0      0      0      0
  35.520+     2      0      0      5      0      0      5
  35.521+     5      0      0      0      0      0      0
  35.522+     6      0      0      0      0      0      0
  35.523+=== GC Start ===
  35.524+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.525+Small objects (in MiB):
  35.526+     0      0      0    152    265      0    417
  35.527+     1      0      0     58      6      0     64
  35.528+     2      2      3     18     18      5     48
  35.529+     5      1      2      2      2      3     12
  35.530+     6      1      6      2      4     13     28
  35.531+Large objects:
  35.532+     1      0      0      0      0      0      0
  35.533+     2      0      0      5      0      0      5
  35.534+     3      0      0      0      0      0      0
  35.535+     5      0      0      0      0      0      0
  35.536+     6      0      0      0      0      0      0
  35.537+=== GC End ===
  35.538+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.539+Small objects (in MiB):
  35.540+     1      0      0     66      6      0     73
  35.541+     2      2      3     18     18      5     48
  35.542+     5      1      2      2      2      3     12
  35.543+     6      1      6      2      4     13     28
  35.544+Large objects:
  35.545+     1      0      0      0      0      0      0
  35.546+     2      0      0      5      0      0      5
  35.547+     5      0      0      0      0      0      0
  35.548+     6      0      0      0      0      0      0
  35.549+=== GC Start ===
  35.550+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.551+Small objects (in MiB):
  35.552+     0      0      0    146    263      0    409
  35.553+     1      0      0     66      6      0     73
  35.554+     2      2      3     18     18      5     48
  35.555+     5      1      2      2      2      3     12
  35.556+     6      1      6      2      4     13     28
  35.557+Large objects:
  35.558+     1      0      0      0      0      0      0
  35.559+     2      0      0      5      0      0      5
  35.560+     3      0      0      0      0      0      0
  35.561+     5      0      0      0      0      0      0
  35.562+     6      0      0      0      0      0      0
  35.563+=== GC End ===
  35.564+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.565+Small objects (in MiB):
  35.566+     0      0      0      8      0      0      8
  35.567+     1      0      0     66      6      0     73
  35.568+     2      2      3     18     18      5     48
  35.569+     5      1      2      2      2      3     12
  35.570+     6      1      6      2      4     13     28
  35.571+Large objects:
  35.572+     1      0      0      0      0      0      0
  35.573+     2      0      0      5      0      0      5
  35.574+     5      0      0      0      0      0      0
  35.575+     6      0      0      0      0      0      0
  35.576+=== GC Start ===
  35.577+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.578+Small objects (in MiB):
  35.579+     0      0      0    238    177      0    416
  35.580+     1      0      0     66      6      0     73
  35.581+     2      2      3     18     18      5     48
  35.582+     5      1      2      2      2      3     12
  35.583+     6      1      6      2      4     13     28
  35.584+Large objects:
  35.585+     0      0      0      1      0      0      1
  35.586+     1      0      0      0      0      0      0
  35.587+     2      0      0      5      0      0      5
  35.588+     3      0      0      0      0      0      0
  35.589+     5      0      0      0      0      0      1
  35.590+     6      0      0      0      0      0      0
  35.591+=== GC End ===
  35.592+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.593+Small objects (in MiB):
  35.594+     1      3      4     38      6      0     52
  35.595+     2      2      3     18     18      5     48
  35.596+     5      1      2      2      2      3     12
  35.597+     6      1      6      2      4     13     28
  35.598+Large objects:
  35.599+     1      0      0      0      0      0      0
  35.600+     2      0      0      5      0      0      5
  35.601+     5      0      0      0      0      0      0
  35.602+     6      0      0      0      0      0      0
  35.603+=== GC Start ===
  35.604+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.605+Small objects (in MiB):
  35.606+     0      0      0    316     88      1    406
  35.607+     1      3      4     38      6      0     52
  35.608+     2      2      3     18     18      5     48
  35.609+     5      1      2      2      2      3     12
  35.610+     6      1      6      2      4     13     28
  35.611+Large objects:
  35.612+     0      0      0      3      0      0      3
  35.613+     1      0      0      0      0      0      0
  35.614+     2      0      0      5      0      0      5
  35.615+     3      0      0      0      0      0      0
  35.616+     5      0      0      0      0      0      0
  35.617+     6      0      0      0      0      0      0
  35.618+=== GC End ===
  35.619+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.620+Small objects (in MiB):
  35.621+     0      0      0      6      2      1     10
  35.622+     1      3      4     38      6      0     52
  35.623+     2      2      3     18     18      5     48
  35.624+     5      1      2      2      2      3     12
  35.625+     6      1      6      2      4     13     28
  35.626+Large objects:
  35.627+     0      0      0      0      0      0      1
  35.628+     1      0      0      0      0      0      0
  35.629+     2      0      0      5      0      0      5
  35.630+     5      0      0      0      0      0      0
  35.631+     6      0      0      0      0      0      0
  35.632+=== GC Start ===
  35.633+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.634+Small objects (in MiB):
  35.635+     0      0      0    309     87      2    399
  35.636+     1      3      4     38      6      0     52
  35.637+     2      2      3     18     18      5     48
  35.638+     5      1      2      2      2      3     12
  35.639+     6      1      6      2      4     13     28
  35.640+Large objects:
  35.641+     0      0      0     21      0      0     21
  35.642+     1      0      0      0      0      0      0
  35.643+     2      0      0      5      0      0      5
  35.644+     3      0      0      0      0      0      0
  35.645+     5      0      0      0      0      0      1
  35.646+     6      0      0      0      0      0      0
  35.647+=== GC End ===
  35.648+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.649+Small objects (in MiB):
  35.650+     1      3      4     51     11      1     72
  35.651+     2      2      3     18     18      5     48
  35.652+     5      1      2      2      2      3     12
  35.653+     6      1      6      2      4     13     28
  35.654+Large objects:
  35.655+     1      0      0      1      0      0      1
  35.656+     2      0      0      5      0      0      5
  35.657+     5      0      0      0      0      0      0
  35.658+     6      0      0      0      0      0      0
  35.659+=== GC Start ===
  35.660+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.661+Small objects (in MiB):
  35.662+     0      0      0    222    134      0    358
  35.663+     1      3      4     51     11      1     72
  35.664+     2      2      3     18     18      5     48
  35.665+     5      1      2      2      2      3     12
  35.666+     6      1      6      2      4     13     28
  35.667+Large objects:
  35.668+     0      0      0     58      0      0     58
  35.669+     1      0      0      1      0      0      1
  35.670+     2      0      0      5      0      0      5
  35.671+     3      0      0      0      0      0      0
  35.672+     5      0      0      0      0      0      1
  35.673+     6      0      0      0      0      0      0
  35.674+=== GC End ===
  35.675+  Gen#    Raw  Boxed  Mixed   Cons   Code  Total
  35.676+Small objects (in MiB):
  35.677+     0      0      0      5      1      0      7
  35.678+     1      3      4     51     11      1     72
  35.679+     2      2      3     18     18      5     48
  35.680+     5      1      2      2      2      3     12
  35.681+     6      1      6      2      4     13     28
  35.682+Large objects:
  35.683+     0      0      0      0      0      0      0
  35.684+     1      0      0      1      0      0      1
  35.685+     2      0      0      5      0      0      5
  35.686+     5      0      0      0      0      0      0
  35.687+     6      0      0      0      0      0      0
    36.1--- a/lisp/std/mop.lisp	Tue May 28 23:50:43 2024 -0400
    36.2+++ b/lisp/std/mop.lisp	Wed May 29 23:29:40 2024 -0400
    36.3@@ -1,4 +1,4 @@
    36.4-;;; std/mop.lisp --- Standard MOP
    36.5+;;; std/mop.lisp --- Standard MOP Utilities
    36.6 
    36.7 ;;
    36.8 
    37.1--- a/lisp/std/pkg.lisp	Tue May 28 23:50:43 2024 -0400
    37.2+++ b/lisp/std/pkg.lisp	Wed May 29 23:29:40 2024 -0400
    37.3@@ -4,7 +4,7 @@
    37.4 (defpackage :std-user
    37.5   (:use :cl :std/named-readtables :std/defpkg)
    37.6   (:shadowing-import-from :std/defpkg :defpkg)
    37.7-  (:export :defpkg :in-readtable))
    37.8+  (:export :defpkg :in-readtable :define-lisp-package))
    37.9 
   37.10 (in-package :std-user)
   37.11 
    38.1--- a/lisp/std/sys.lisp	Tue May 28 23:50:43 2024 -0400
    38.2+++ b/lisp/std/sys.lisp	Wed May 29 23:29:40 2024 -0400
    38.3@@ -1,4 +1,4 @@
    38.4-;;; std/sys.lisp @ 2023-10-14.03:28:40 -*- mode: lisp; -*-
    38.5+;;; std/sys.lisp --- Lisp System Utilities
    38.6 
    38.7 ;;
    38.8 
    38.9@@ -60,17 +60,14 @@
   38.10                              (zerop (sb-posix:wexitstatus status))))))))))))
   38.11 
   38.12 ;; TODO 2024-05-09: 
   38.13-;; (defun decode-all-debug-data ()
   38.14-;;   (dolist (code (sb-vm:list-allocated-objects :all :type sb-vm:code-header-widetag))
   38.15-;;     (let ((info (sb-kernel:%code-debug-info code)))
   38.16-;;       (when (typep info 'sb-c::compiled-debug-info)
   38.17-;;         (let ((fun-map (sb-di::get-debug-info-fun-map
   38.18-;;                         (sb-kernel:%code-debug-info code))))
   38.19-;;           (loop for i from 0 below (length fun-map) by 2 do
   38.20-;;             (let ((cdf (aref fun-map i)))
   38.21-;;               (sb-di::debug-fun-lambda-list
   38.22-;;                (sb-di::make-compiled-debug-fun cdf code))))))
   38.23-;;       (print info))))
   38.24+(setq *test* (the integer 1))
   38.25+
   38.26+(defparameter *gc-logfile* #P"gc.log")
   38.27+
   38.28+(defun enable-gc-logfile (&optional (file *gc-logfile*))
   38.29+  (setf (sb-ext:gc-logfile) file))
   38.30+
   38.31+(length (sb-di::list-allocated-objects :dynamic :test #'stringp))
   38.32 
   38.33 (defun forget-shared-objects ()
   38.34   "Set the DONT-SAVE slot of all objects in SB-SYS:*SHARED-OBJECTS* to T."