PAX and DRef v0.4
Tags: tech
, lisp
, Date: 2025-04-23
Version 0.4 of PAX, the documentation system, and DRef, the definition reifier, was released. There were large refactorings, bug fixes, minor features, cosmetics, documentation and performance improvements too numerous to list. Here is a summary of the new features and notable changes.
DRef now supports
DTYPE
s, which allow filteringDEFINITIONS
andDREF-APROPOS
results according to the locative type hierarchy:(definitions 'print) ==> (#<DREF PRINT FUNCTION> --> #<DREF PRINT (UNKNOWN (:DEFOPTIMIZER PRINT SB-C:DERIVE-TYPE))> --> #<DREF PRINT (UNKNOWN --> (DECLAIM PRINT --> SB-C:DEFKNOWN))>)
(definitions 'print :dtype '(and t (not unknown))) ==> (#<DREF PRINT FUNCTION>)
The
AND T
bit restricts the query to definitions in the running Lisp. The top of theDTYPE
hierarchy isDREF:TOP
, which includes external definitions such as theCLHS
, that comes with PAX:(definitions 'print :dtype '(not unknown)) ==> (#<DREF PRINT (CLHS FUNCTION)> #<DREF PRINT FUNCTION>)
(dref-apropos "method" :package :dref :external-only t :dtype 'class) ==> (#<DREF METHOD CLASS> #<DREF METHOD-COMBINATION CLASS>)
The locative type hierarchy can be queried programmatically, and this information is included in their documentation (see for example the
GENERIC-FUNCTION
locative type).The PAX Live Home Page better supports exploration without having to leave the browser.
It lists packages grouped by ASDF systems that define them (when this can be determined from the source locations).
It links to apropos pages for each locative type.
It has an input box for looking up documentation right from the browser (as if with
mgl-pax-document
from Emacs).It has an input box for looking up apropos right from the browser (as if with
mgl-pax-apropos
from Emacs).The web server can be started without Emacs.
Completion of names and locatives in Emacs is much improved.
New aliases were added to the
CLHS
pages documenting format directives (e.g.~F
), standard macro characters (#A
) and loop keywords (sum
,:sum
,loop:sum
), so that one can justC-.
(mgl-pax-document
) them. See the documentation of theCLHS
locative.The DRef extension api has been cleaned up.
