#245 (or) with zero arguments trapped with an arity error on the hosted expander — blocked (load "./asdf.lisp") in uiop/utility
closedRepro (pre-fix): (print (or)) => "Error: invalid number of arguments: G25 expected 1, got 0"; (defun z1 () (or)) same. (or 5), (or nil 7) fine.
Root cause: src/stdlib.lisp defined (defmacro or (a &rest rest)) — the required first arg mis-bound on zero-arg calls and the gensym-named hosted expander trapped. Identical to the (and) lambda-list bug fixed for cave#232; (and) got the (&rest args) fix but (or) was left behind.
Impact: uiop/utility contains a bare (or) after the funcl reader drops a #+(or …) form, so (load "./asdf.lisp") trapped mid-load. gdb stack walk on the spinning trap: AG-MACRO-APPLY-HOSTED <- AG-MACRO-EXPAND-CALL-1 <- AG-MACRO-EXPAND-FORM, form = (OR . NIL).
Fix: (defmacro or (&rest args)) returning () for zero args; 1+ arg expansions byte-identical. After fix + make build, asdf.lisp loads to ASDF/FOOTER with LOAD-DONE (remaining load errors are known downstream gaps: pathname wildcards, getenv defsetf, etc.).
Note (not fixed here): the multi-arg expansion (if a a (or …)) double-evaluates a truthy side-effecting first form — non-ANSI, pre-existing, separate issue if it starts to bite.
Fixed in 367ffd8: (defmacro or (&rest args)) with () for zero args; 1+-arg expansions byte-identical. Verified on build/funcl-stage2 and rebuilt build/funcl; (load "./asdf.lisp") now runs to ASDF/FOOTER + LOAD-DONE with no arity trap.