Commit graph

1655 commits

Author SHA1 Message Date
Aaron Estrada ed317dc00c fix(sb-simd): define missing-instruction fallbacks for sap-ref on unsupported CPUs
- In define-vrefs.lisp, emit define-missing-instruction forms for ,sap
  and (setf ,sap) when the target instruction set is not available.
  Prevents unattached definition errors during package validation
  (e.g. F64.8-SAP-REF on hosts without AVX-512 support).
- In missing-instruction.lisp, use record-instruction-set and
  record-name rather than instruction-record-* aliases so that
  missing-instruction error reporting works for sap-ref and other
  function records inheriting from base record.
- Verified under Intel SDE Haswell (-hsw) and Skylake (-skl) emulation
  with 0 errors (737 tests, 9,992,078 checks passed).
- Verified natively on Zen 4 host with 0 regressions (737 tests,
  13,860,908 checks passed).
2026-09-09 02:17:04 +03:00
Aaron Estrada 336b6ae146 feat(sb-simd): guard constant folding and missing instructions on unsupported CPU targets
- define-instruction-vops.lisp: only declare foldable on defknown when
  the underlying instruction set is available on the host CPU.
- define-scalar-casts.lisp: gate sb-c:foldable on instruction-set-available-p.
- define-associatives.lisp, define-reducers.lisp, define-comparisons.lisp,
  define-unequals.lisp, define-ifs.lisp: fallback to define-missing-instruction
  when the instruction set is unavailable on the host. This prevents compile-time
  constant folding from attempting to evaluate vector constructors or instructions
  on host CPUs lacking the requisite instruction set extensions.
2026-09-09 02:17:04 +03:00
Aaron Estrada 0dc8bb88d2 feat(sb-simd): add modular AVX-512_FP16 vector support (f16.32, f16.16, f16.8)
- cpu-identification.lisp: add avx512fp16-supported-p detection via CPUID
  leaf 7 subleaf 0 EDX bit 23.
- packages.lisp: export avx512fp16-supported-p and define sb-simd-avx512fp16
  package extending sb-simd-avx512dq.
- instruction-sets/avx512fp16.lisp: define :avx512fp16 instruction set
  introducing half-precision float vectors:
  * f16.32 (512-bit ZMM, 32 lanes)
  * f16.16 (256-bit YMM, 16 lanes)
  * f16.8 (128-bit XMM, 8 lanes)
  * Vector arithmetic (vaddph, vsubph, vmulph, vdivph, vsqrtph, vminph,
    vmaxph, vrcpph, vrsqrtph, vscalefph)
  * FMA with :encoding :fma (vfmadd213ph, vfmsub213ph, vfnmadd213ph, vfnmsub213ph)
  * Conversions (f32.16 <-> f16.16, s32.16 <-> f16.16)
  * Bitwise logic and casts
- define-custom-vops.lisp: add f16.32-not to def-not macrolet.
- x86-64-fake-vops.lisp: add f16.8-broadcast, f16.16-broadcast, and
  f16.32-broadcast fake VOPs.
- record.lisp & test-suite/utilities.lisp: replace deprecated
  :sb-simd-pack-256 and :sb-simd-pack-512 feature guards with :x86-64.
- test-packages.lisp: validate sb-simd-avx512fp16 symbol bindings.
2026-09-09 02:17:04 +03:00
Aaron Estrada 16a029c1e0 feat(sb-simd): add modular AVX-512F, AVX-512BW, and AVX-512DQ vector support 2026-09-09 02:17:04 +03:00
Qiantan Hong 65f214fd09 add sb-simd-ssse3:u8.16-shuffle 2026-09-05 14:56:08 +03:00
Gabor Melis 289db46c16 sb-manual: do not document unbuilt contribs
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
Also, test texinfo generation on github.
2026-09-03 14:09:06 +02:00
Stas Boukarev a7922782cf Fix make-target-contrib on Windows
Some checks are pending
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
2026-09-03 02:14:22 +03:00
Douglas Katzman 3dfe0b3e65 Fix sb-manual build when SBCL_CONTRIB_BLOCKLIST is nonempty 2026-09-02 16:07:22 +00:00
Stas Boukarev 774ad4de28 Speed up gmp-intexp
Faster dispatch to orig-intexp.
Faster (expt ratio -power)
2026-09-01 03:03:25 +03:00
Ilia Gradina c998d48297 sb-gmp: hand a non-rational base back to the original INTEXP
EXPT dispatches to INTEXP for a (COMPLEX RATIONAL) base as well as for
fixnums, bignums and ratios:

  (((foreach fixnum (or bignum ratio) (complex rational)) integer)
   (intexp base power))

GMP-INTEXP handles integers, ratios and 0/+-1, then sends everything else to
MPZ-POW, which only takes an integer. So merely loading the contrib - LOAD-GMP
calls INSTALL-GMP-FUNS itself, and again from an init hook - turns a working
EXPT into a type error:

  * (expt #c(1/5 1) 1)
  ; Evaluation aborted on #<TYPE-ERROR expected-type: INTEGER
  ;                                    datum: #C(1/5 1)>

Constant folding hides it from a toplevel REPL form, so it only shows up in
compiled code with a computed base. Maxima hits it through bernstein_poly,
where it fails one of the regression tests on any build linked against sb-gmp.

Send non-rational bases to ORIG-INTEXP, which handles them by repeated
squaring; GMP keeps the integer and ratio paths it was installed for.
2026-09-01 03:03:25 +03:00
Gabor Melis 9c2cbbd7d1 sb-manual: don't use version controlled symlinks
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call --with-tls-based-mv-return, sse4) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
They are a hassle on Windows.
2026-08-31 10:20:39 +02:00
Stas Boukarev 71c43e5aa0 Don't define very large simd-pack functions for printing
Some checks are pending
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
Just use sap-refs from memory.
Saves 1.1MB of core space.
2026-08-30 16:41:43 +03:00
Sylvia Harrington e4e628ab84 sb-simd: Fix a bunch of bugs
64-bit integer min/max don't have actual instructions, fake instead
Fix signed lane extraction not sign-extending
Add float abs/neg
Fix fsqrt encoding
Fix u32.4-from-u64.2/s32.4-from-s64.2 family, wrong size
Remove 64-bit integer vector mul, instruction doesn't exist
Add missing exports for integer min/max
Align spilled neon registers properly
Validate more vector instruction forms properly
Fix movi immediates
2026-08-28 22:38:41 +03:00
Stas Boukarev bf87e9ab2c Fix file-position on copmosite streams
concatenated-stream wasn't processing buffered input correctly.
two-way-stream and echo-stream should just return NIL, as
file-position can't apply to both streams.
2026-08-04 00:12:14 +03:00
Stas Boukarev 8ee5b24141 sb-simd: separate x86-64 and arm64 things 2026-08-02 17:02:43 +03:00
Sylvia Harrington 1f70cb412c sb-simd: Implement vector sap-ref for arm64 2026-08-02 16:31:11 +03:00
arthur a659610f72 sb-simd: support for load/store to and from SAPs 2026-08-02 16:30:49 +03:00
Gabor Melis 7ee5314861 sb-manual: skip undefined things when building the manual 2026-07-29 09:41:59 +02:00
arthur 05b15081a2 Correct the user facing function for vpsubusb instruction 2026-07-29 08:15:58 +03:00
Gabor Melis e45c5c70b5 sb-manual: fix indented code block parsing
... when the first line of the block looks like a list item.
2026-07-24 16:47:02 +02:00
arthur c315c378e4 add vpsadbw, vpalignr and vpsubusb to sb-simd 2026-07-20 18:00:36 +03:00
Douglas Katzman cfbeebabb3 Set *derive-function-types* to T in make-contrib 2026-07-13 16:08:32 +00:00
Stas Boukarev 6ae12b7cd8 Out of bounds in simd-copy-character-string-to-utf8-byte-array too 2026-07-09 04:46:32 +03:00
Gabor Melis 2be4173812 various documentation changes
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
- make bug reporting instructions more consistent

- add DOCUMENTATION file

- deduplicate Texinfo @cindex lines

- fix typos and URLs

- update obsolete references to Texinfo

- standardize the spelling of HyperSpec
2026-07-02 14:47:25 +02:00
Gabor Melis 739a65fe11 doc: fix some typos and readability issues
Thanks to Štěpán Němec.
2026-07-01 15:14:58 +02:00
Gabor Melis 34dda2dde1 Don't canonicalize whitespace in Texinfo files
Almost all of them are generated.

Also, fix some comments.
2026-07-01 15:14:58 +02:00
Gabor Melis 2c524ff00b Reduce core size impact of docstring normalization
- Conditionalize it on #+sb-doc.

- Drop Markdown blockquote support (it's not needed by any docstring
  currently).

- Make the code more compact.

Without :SB-DOC, the core size impact is thus zero. With :SB-DOC, the
core size is increased by ~0.05% (~10kB).
2026-07-01 15:14:37 +02:00
Sylvia Harrington cb716e24d6 sb-simd: arm64 support 2026-07-01 01:15:08 +03:00
Sylvia Harrington f99638c4e0 sb-simd: Portability fixes
This is mostly just building on what already existed, primarily
only defining and calling VOPs where the instruction set exists.
Also a phony simd-pack-256 type to allow building when that
type doesn't exist.
And disable the vref vop implementation outside x86oids, as it's entirely
specific to that instruction set.
2026-07-01 00:44:25 +03:00
Gabor Melis 1b4ec23342 doc: remove unnecessary markup 2026-06-30 17:00:48 +02:00
Gabor Melis 27621b01ca Make DOCUMENTATION strip markup from SBCL definitions
... and normalize the indentation of their docstrings, too.

Doing this lazily in DOCUMENTATION allows interactive work on
docstrings (e.g. change a docstring, recompile its definition,
generate documentation from the image). I don't think the overhead in
DOCUMENTATION is a factor.
2026-06-30 16:59:49 +02:00
Gabor Melis ab6fa91796 sb-manual: add links from/to PAX world 2026-06-29 14:01:32 +02:00
Gabor Melis 34812e52a1 sb-manual: readd concepts 2026-06-29 14:01:32 +02:00
Gabor Melis 40658bfd6a sb-manual: implement concept indexing 2026-06-29 14:01:32 +02:00
Gabor Melis 2e9dc0721f manual: arrays are row-major
Thanks to Scott L. Burson (lp#2158033)
2026-06-29 14:01:32 +02:00
Gabor Melis 6e2bcf1d9b doc: make PAX PDF much shorter
... by reducing the font size and the margins.
2026-06-29 14:01:31 +02:00
Gabor Melis 7901ac4063 doc: fix compilation on windows 2026-06-29 14:01:31 +02:00
Gabor Melis c50ce6dcaf sb-manual: fix CONVERT-DOCSTRING-PACKAGE-OVERRIDES-TO-PAX 2026-06-29 14:01:31 +02:00
Gabor Melis 61e352d105 sb-manual: add support for [label](uri) and [label][id] 2026-06-29 14:01:31 +02:00
Gabor Melis 79e63158c9 make-pax-docs: muffle source location warnings 2026-06-29 14:01:31 +02:00
Gabor Melis 4499dc6430 sb-manual: automatically USE-PAX
Put a magic marker on the value of the variable holding the dummy
section. Variables with these markers are recognized by PAX (from
v0.4.12) as lazy sections. So, (DREF @FAKE 'SECTION) works. Then,
whenever such a reference is RESOLVEd, the function following the
magic marker is called. That function is USE-PAX in this case.

The net effect of this hack is that PAX:DOCUMENTing a fake section
will unfake it.

Export USE-PAX for the remaining cases.
2026-06-29 14:01:31 +02:00
Gabor Melis 98d37dc3e3 sb-manual: USE-PAX automatically if PAX is already loaded
... when sb-manual is loaded.

SWITCH-TO-PAX was renamed to USE-PAX.
2026-06-29 14:01:31 +02:00
Gabor Melis 55fe2df553 doc: fix overlapping section numbers and title in the PDF toc 2026-06-29 14:01:31 +02:00
Gabor Melis f319e996d1 sb-manual: make GENERATE-TEXINFO unaffected by SWITCH-TO-PAX 2026-06-29 14:01:31 +02:00
Gabor Melis 7c2785fe2a Add support for (DOCUMENTATION ... 'declaration)
- Add docstrings for user-facing declaration.

- Fix the hacks for declarations in the manual.

- Add documentation of DOCUMENTATION extensions to the manual.

- Add a "Declaration Index" appendix to the manual.
2026-06-29 14:01:31 +02:00
Gabor Melis b3bfe02876 doc: update generated texinfo files 2026-06-29 14:01:31 +02:00
Gabor Melis 316291e371 doc: update lisp definition docstrings for Markdown
This is a follow up to the "PAXlike docs" commit.
2026-06-29 14:01:31 +02:00
Gabor Melis 4271a2f375 doc: PAXlike docs
Summary
-------

Implement of a subset of PAX so that we can write PAX:DEFSECTIONlike
forms that supports the same restricted Markdown that we use for
docstrings and generate doc/manual/*.texinfo files from them.

Without PAX
-----------

There is no hard dependency on PAX. When the new SB-MANUAL contrib is
loaded, one can M-. around in documentation (sections are variables),
and function docstrings can now link to sections.

The generated Texinfo files are quite close to the originals, with
some loss of "semantic" markup: e.g. Markdown has `FOO` but no
@var{FOO} and @code{FOO}. We didn't derive much practical benefit from
that distinction.

With PAX
--------

(SB-MANUAL::SWITCH-TO-PAX) ensures that PAX is loaded and patches things
up, as if everything had been defined with PAX to begin with. Now, we
get PAX::@BROWSING-LIVE-DOCUMENTATION for low-latency, interactive
documentation work and PAX::@GENERATING-DOCUMENTATION for auto-linked
documentation.

Notable features:

- auto-generated links within the manual: if SB-EXT:EXIT is mentioned,
  then it's linked to its documentation.

- auto-generated links to the CLHS (these links are red in PDF)

- locatives (e.g. the "[function]" in "- [function] SB-EXT:EXIT" are
  also links and they go to the sources on GitHub (in live browsing,
  they tell Slime to open the definition)

Details
-------

- Factor out the Markdown-to-Texinfo code into a new SB-MANUAL
  contrib.

- Convert doc/manual/*.texinfo files to PAXlike DEFSECTION format and
  add each chapter as a contrib/sb-manual/doc/<chapter>.lisp file.

- Fix a *lot* of small issues during the conversion.

- Make doc/make-doc.sh regenerate the all .texinfo files except
  sbcl.texinfo and backmatter.texinfo.

- Fix docstrings of Lisp definitions used in the manual to conform to
  the supported Markdown syntax.

- Retain the Texinfo function, variable and type indicies but drop the
  concept index. There is no obvious way to support that in Markdown,
  and it was used rather sporadically rather incomplete.

- Even with  the new features, the  amount of Lisp code  didn't change
  significantly.

- See contrib/sb-manual/README for the Todo list
2026-06-29 14:01:31 +02:00
Gabor Melis e20983b2ad doc: add new lisp manual files
This is in preparation for the "PAXlike docs" commit.
2026-06-29 14:01:31 +02:00
Gabor Melis 3dc327b828 Silence "<internal-feature> no longer present on *FEATURES*"
... warnings when *READ-SUPPRESS*.
2026-06-29 14:01:31 +02:00