Re: master: Faster keyword argument checking in CLOS

Stas Boukarev <[email protected]> Sun, 10 May 2026 00:23:53 +0300
Newsgroups gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel
Message-ID <CAF63=12w072sddaRXs+GxtT2FZRsJprbh570PC5G8357N0eJ3A@mail.gmail.com>
Ikl0IGlzIG5vdCBwZXJtaXR0ZWQgdG8gc3VwcGx5IGEga2V5d29yZCBhcmd1bWVudCB0byBhIGZ1
bmN0aW9uIHVzaW5nCmEgbmFtZSB0aGF0IGlzIG5vdCBhIHN5bWJvbC4KCklmIHRoaXMgc2l0dWF0
aW9uIG9jY3VycyBpbiBhIHNhZmUgY2FsbCwgYW4gZXJyb3Igb2YgdHlwZQpwcm9ncmFtLWVycm9y
IG11c3QgYmUgc2lnbmFsZWQgdW5sZXNzIGtleXdvcmQgYXJndW1lbnQgY2hlY2tpbmcgaXMKc3Vw
cHJlc3NlZCBhcyBkZXNjcmliZWQgaW4gU2VjdGlvbiAzLjQuMS40LjEgKFN1cHByZXNzaW5nIEtl
eXdvcmQKQXJndW1lbnQgQ2hlY2tpbmcpIgoKT24gU3VuLCBNYXkgMTAsIDIwMjYgYXQgMTI6MjPi
gK9BTSBDaGFybGVzIFpoYW5nIHZpYSBTYmNsLWNvbW1pdHMKPHNiY2wtY29tbWl0c0BsaXN0cy5z
b3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+Cj4gQnV0IHdoYXTigJlzIHdpdGggdGhlIHJlbW92ZWQg
dGVzdHMgYW5kIHRoZSBhbnNpIHRlc3QgZmFpbHVyZT8KPgo+IE9uIFNhdHVyZGF5LCBNYXkgOSwg
MjAyNiwgMTE6MTkgUE0sIHN0YXNzYXRzIHZpYSBTYmNsLWNvbW1pdHMgPHNiY2wtY29tbWl0c0Bs
aXN0cy5zb3VyY2Vmb3JnZS5uZXQ+IHdyb3RlOgo+Cj4gVGhlIGJyYW5jaCAibWFzdGVyIiBoYXMg
YmVlbiB1cGRhdGVkIGluIFNCQ0w6Cj4gICAgICAgdmlhICBjNzkyMWEwMmQ4YjhmZjk1OTE0MTA4
YjIzOTUwNjliZGM3ZjI5OWFhIChjb21taXQpCj4gICAgICAgZnJvbSAgOWNlNGY2Y2NjNGEyMGFi
ZTMxNjFhYjY4YWM2MGQwZjY1NDYxMWYyNSAoY29tbWl0KQo+Cj4gLSBMb2cgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBj
b21taXQgYzc5MjFhMDJkOGI4ZmY5NTkxNDEwOGIyMzk1MDY5YmRjN2YyOTlhYQo+IEF1dGhvcjog
U3RhcyBCb3VrYXJldiA8c3Rhc3NhdHNAZ21haWwuY29tPgo+IERhdGU6ICBTYXQgTWF5IDkgMjI6
NDk6NDUgMjAyNiArMDMwMAo+Cj4gICAgIEZhc3RlciBrZXl3b3JkIGFyZ3VtZW50IGNoZWNraW5n
IGluIENMT1MKPgo+ICAgICBDb3B5IHdoYXQgY29udmVydC1tb3JlLWVudHJ5IGlzIGRvaW5nIGFu
ZCBpbmxpbmUgaXQuCj4gLS0tCj4gc3JjL3BjbC9jb21iaW4ubGlzcCAgICB8IDY4ICsrKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gc3JjL3BjbC9mbmdl
bi5saXNwICAgIHwgIDMgKystCj4gdGVzdHMvYW5zaS10ZXN0cy5zaCAgICB8ICAyICstCj4gdGVz
dHMvY2xvcy5pbXB1cmUubGlzcCB8ICA0IC0tLQo+IDQgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0
aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvc3JjL3BjbC9jb21iaW4u
bGlzcCBiL3NyYy9wY2wvY29tYmluLmxpc3AKPiBpbmRleCA2MDM3YzY1MWEuLjdmZDU2ZjE1ZSAx
MDA2NDQKPiAtLS0gYS9zcmMvcGNsL2NvbWJpbi5saXNwCj4gKysrIGIvc3JjL3BjbC9jb21iaW4u
bGlzcAo+IEBAIC01NzYsNDYgKzU3NiwzNiBAQAo+ICAgICAgICAgKGF2ZXIgYW55LWtleXApCj4g
ICAgICAgICAodmFsdWVzIChpZiBhbGxvd3AgdCBrZXlzKSBub3B0KSkpKSkKPgo+IC0oZGVmdW4g
Y2hlY2stYXBwbGljYWJsZS1rZXl3b3JkcyAoc3RhcnQgdmFsaWQta2V5cyBtb3JlLWNvbnRleHQg
bW9yZS1jb3VudCkKPiAtICAobGV0ICgoYWxsb3ctb3RoZXIta2V5cy1zZWVuIG5pbCkKPiAtICAg
ICAgICAoYWxsb3ctb3RoZXIta2V5cyBuaWwpCj4gLSAgICAgICAgKGkgc3RhcnQpKQo+IC0gICAg
KGRlY2xhcmUgKHR5cGUgaW5kZXggaSBtb3JlLWNvdW50KQo+IC0gICAgICAgICAgICAob3B0aW1p
emUgc3BlZWQpKQo+IC0gICAgKGZsZXQgKChjdXJyZW50LXZhbHVlICgpCj4gLSAgICAgICAgICAg
IChzYi1jOjolbW9yZS1hcmcgbW9yZS1jb250ZXh0IGkpKSkKPiAtICAgICAgKGRlY2xhcmUgKGlu
bGluZSBjdXJyZW50LXZhbHVlKSkKPiAtICAgICAgKGNvbGxlY3QgKChpbnZhbGlkKSkKPiAtICAg
ICAgICAobG9vcAo+IC0gICAgICAgICAgKHdoZW4gKD49IGkgbW9yZS1jb3VudCkKPiAtICAgICAg
ICAgICAgKHdoZW4gKGFuZCAoaW52YWxpZCkgKG5vdCBhbGxvdy1vdGhlci1rZXlzKSkKPiAtICAg
ICAgICAgICAgICAoJXByb2dyYW0tZXJyb3IgIn5APGludmFsaWQga2V5d29yZCBhcmd1bWVudH5Q
OiB+Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfnt+U35eLCB+fSAodmFsaWQg
a2V5cyBhcmUgfnt+U35eLCB+fSkufkA6PiIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGxlbmd0aCAoaW52YWxpZCkpIChpbnZhbGlkKSB2YWxpZC1rZXlzKSkKPiAtICAgICAgICAg
ICAgKHJldHVybikpCj4gLSAgICAgICAgICAobGV0ICgoa2V5IChjdXJyZW50LXZhbHVlKSkpCj4g
LSAgICAgICAgICAgIChpbmNmIGkpCj4gLSAgICAgICAgICAgIChjb25kCj4gLSAgICAgICAgICAg
ICAgKChub3QgKHN5bWJvbHAga2V5KSkKPiAtICAgICAgICAgICAgICAgICglcHJvZ3JhbS1lcnJv
ciAifkA8a2V5d29yZCBhcmd1bWVudCBub3QgYSBzeW1ib2w6IH5TLn5AOj4iCj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga2V5KSkKPiAtICAgICAgICAgICAgICAoKD0gaSBtb3Jl
LWNvdW50KQo+IC0gICAgICAgICAgICAgICAgKHNiLWM6OiVvZGQta2V5LWFyZ3MtZXJyb3IpKQo+
IC0gICAgICAgICAgICAgICgoZXEga2V5IDphbGxvdy1vdGhlci1rZXlzKQo+IC0gICAgICAgICAg
ICAgICAgOzsgb25seSB0aGUgbGVmdG1vc3QgOkFMTE9XLU9USEVSLUtFWVMgaGFzIGFueSBlZmZl
Y3QKPiAtICAgICAgICAgICAgICAgICh1bmxlc3MgYWxsb3ctb3RoZXIta2V5cy1zZWVuCj4gLSAg
ICAgICAgICAgICAgICAgIChzZXRxIGFsbG93LW90aGVyLWtleXMtc2VlbiB0Cj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFsbG93LW90aGVyLWtleXMgKGN1cnJlbnQtdmFsdWUpKSkpCj4gLSAg
ICAgICAgICAgICAgKChlcSB0IHZhbGlkLWtleXMpKQo+IC0gICAgICAgICAgICAgICgobm90ICht
ZW1xIGtleSB2YWxpZC1rZXlzKSkgKGludmFsaWQga2V5KSkpKQo+IC0gICAgICAgICAgKGluY2Yg
aSkpKSkpKQo+IC0KPiAoZGVmdW4gd3JhcC13aXRoLWFwcGxpY2FibGUta2V5d29yZC1jaGVjayAo
ZWZmZWN0aXZlIHZhbGlkLWtleXMga2V5YXJncy1zdGFydCkKPiAtICBgKGxldCAoKC52YWxpZC1r
ZXlzLiAnLHZhbGlkLWtleXMpCj4gLSAgICAgICAgKC5rZXlhcmdzLXN0YXJ0LiAnLGtleWFyZ3Mt
c3RhcnQpKQo+IC0gICAgKG11bHRpcGxlLXZhbHVlLWJpbmQgKC5tb3JlLWNvbnRleHQuIC5tb3Jl
LWNvdW50LikgKHNiLWM6OiVyZXN0LWNvbnRleHQgLnJlc3QuKQo+IC0gICAgICAoY2hlY2stYXBw
bGljYWJsZS1rZXl3b3Jkcwo+IC0gICAgICAua2V5YXJncy1zdGFydC4gLnZhbGlkLWtleXMuIC5t
b3JlLWNvbnRleHQuIC5tb3JlLWNvdW50LikpCj4gKyAgYChwcm9nbgo+ICsgICAgKG11bHRpcGxl
LXZhbHVlLWJpbmQgKG1vcmUtY29udGV4dCBtb3JlLWNvdW50KSAoc2ItYzo6JXJlc3QtY29udGV4
dCAucmVzdC4pCj4gKyAgICAgIChkZWNsYXJlIChpZ25vcmFibGUgbW9yZS1jb250ZXh0KSkKPiAr
ICAgICAgOzsgU2ltaWxhciB0byB3aGF0IFNCLUM6OkNPTlZFUlQtTU9SRS1FTlRSWSBkb2VzCj4g
KyAgICAgIChsZXQgKChjb3VudCAoLSBtb3JlLWNvdW50ICxrZXlhcmdzLXN0YXJ0KSkpCj4gKyAg
ICAgICAgKHdoZW4gLChpZiAoemVyb3Aga2V5YXJncy1zdGFydCkKPiArICAgICAgICAgICAgICAg
ICAgICBgKG9kZHAgY291bnQpCj4gKyAgICAgICAgICAgICAgICAgICAgYChhbmQgKHBsdXNwIGNv
dW50KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIChvZGRwIGNvdW50KSkpCj4gKyAgICAg
ICAgICAoc2ItYzo6JW9kZC1rZXktYXJncy1lcnJvcikpKQo+ICsgICAgICAsQCh1bmxlc3MgKGVx
IHZhbGlkLWtleXMgdCkKPiArICAgICAgICAgIChsZXQgKChyZXN0YXJ0IChzYi1jOm1ha2UtcmVz
dGFydC1sb2NhdGlvbikpKQo+ICsgICAgICAgICAgICBgKChsZXQgKGFsbG93cAo+ICsgICAgICAg
ICAgICAgICAgICAgIChsb3NlIChtYWtlLXVuYm91bmQtbWFya2VyKSkKPiArICAgICAgICAgICAg
ICAgICAgICAoaW5kZXggbW9yZS1jb3VudCkpCj4gKyAgICAgICAgICAgICAgICAoZGVjbGFyZSAo
aW5kZXggaW5kZXgpKQo+ICsgICAgICAgICAgICAgICAgKGxvb3AgdW50aWwgKDw9IGluZGV4ICxr
ZXlhcmdzLXN0YXJ0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgZG8gKGRlY2YgKHRydWx5LXRo
ZSBpbmRleCBpbmRleCkgMikKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoa2V5
IChzYi1jOjolbW9yZS1hcmcgbW9yZS1jb250ZXh0IGluZGV4KSkpCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2FzZSBrZXkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCwocmVtb3ZlIDphbGxvdy1vdGhlci1rZXlzIHZhbGlkLWtleXMpKQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoOmFsbG93LW90aGVyLWtleXMKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNldGYgYWxsb3dwIChzYi1jOjolbW9yZS1hcmcgbW9yZS1jb250ZXh0ICgx
KyBpbmRleCkpKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgbG9zZSBrZXkpKSkpKQo+ICsgICAgICAgICAg
ICAgICAgKGlmIChvciAodW5ib3VuZC1tYXJrZXItcCBsb3NlKQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBhbGxvd3ApCj4gKyAgICAgICAgICAgICAgICAgICAgKHNiLWM6OnJlc3RhcnQtcG9p
bnQgLHJlc3RhcnQpCj4gKyAgICAgICAgICAgICAgICAgICAgKHNiLWM6OiV1bmtub3duLWtleS1h
cmctZXJyb3IgbG9zZSAscmVzdGFydCkpKSkpKSkKPiAgICAgICAsZWZmZWN0aXZlKSkKPgo+IDs7
OzsgdGhlIFNUQU5EQVJEIG1ldGhvZCBjb21iaW5hdGlvbiB0eXBlLiBUaGlzIGlzIGNvZGVkIGJ5
IGhhbmQKPiBkaWZmIC0tZ2l0IGEvc3JjL3BjbC9mbmdlbi5saXNwIGIvc3JjL3BjbC9mbmdlbi5s
aXNwCj4gaW5kZXggNmViMTQwODc1Li42MGQyYjA2MGEgMTAwNjQ0Cj4gLS0tIGEvc3JjL3BjbC9m
bmdlbi5saXNwCj4gKysrIGIvc3JjL3BjbC9mbmdlbi5saXNwCj4gQEAgLTk3LDcgKzk3LDggQEAK
Pgo+IChkZWZ1biBkZWZhdWx0LWNvbnN0YW50cCAoZm9ybSkKPiAgIChhbmQgKGNvbnN0YW50cCBm
b3JtKQo+IC0gICAgICAobm90ICh0eXBlcCAoY29uc3RhbnQtZm9ybS12YWx1ZSBmb3JtKSAnKG9y
IHN5bWJvbCBmaXhudW0gY29ucyBsYXlvdXQpKSkpKQo+ICsgICAgICAobm90ICh0eXBlcCAoY29u
c3RhbnQtZm9ybS12YWx1ZSBmb3JtKSAnKG9yIHN5bWJvbCBmaXhudW0gY29ucyBsYXlvdXQKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ItYzo6cmVz
dGFydC1sb2NhdGlvbikpKSkpCj4KPiAoZGVmdW4gZGVmYXVsdC10ZXN0LWNvbnZlcnRlciAoZm9y
bSkKPiAgIChpZiAoZGVmYXVsdC1jb25zdGFudHAgZm9ybSkKPiBkaWZmIC0tZ2l0IGEvdGVzdHMv
YW5zaS10ZXN0cy5zaCBiL3Rlc3RzL2Fuc2ktdGVzdHMuc2gKPiBpbmRleCBmYjhkYzkyY2UuLjZl
ODA3ZDBlMyAxMDA3NTUKPiAtLS0gYS90ZXN0cy9hbnNpLXRlc3RzLnNoCj4gKysrIGIvdGVzdHMv
YW5zaS10ZXN0cy5zaAo+IEBAIC01Niw3ICs1Niw3IEBAIHJtIC1mciBzYW5kYm94L3NjcmF0Y2gK
PiAgICJTVUJTVElUVVRFLUlGLkZPTEQuMyIgIlNVQlNUSVRVVEUtSUYuRk9MRC4yIiAiU1VCU1RJ
VFVURS1JRi5GT0xELjEiCj4gICAiU1VCU1RJVFVURS5GT0xELjQiICJTVUJTVElUVVRFLkZPTEQu
MyIgIlNVQlNUSVRVVEUuRk9MRC4yIgo+ICAgIlNVQlNUSVRVVEUuRk9MRC4xIiAgIlNVQlNUSVRV
VEUtSUYtTk9ULkZPTEQuMyIKPiAtICJNSVNDLjU5OCIgIklNQUdQQVJULjQiCj4gKyAiTUlTQy41
OTgiICJJTUFHUEFSVC40IiAiU0hBUkVELUlOSVRJQUxJWkUuRVJST1IuNCIKPiAgIChhcHBlbmQg
Iyt4ODYgKGxpc3QgIkNJUy40IikKPiAgICAgICAgICAgIysob3IgYXJtIHJpc2N2IChhbmQgYXJt
NjQgKG5vdCBkYXJ3aW4pKSkKPiAgICAgICAgICAgICAobGlzdCAiRVhQLkVSUk9SLjQiICJFWFAu
RVJST1IuNSIgIkVYUC5FUlJPUi42IiAiRVhQLkVSUk9SLjciICJFWFBULkVSUk9SLjQiCj4gZGlm
ZiAtLWdpdCBhL3Rlc3RzL2Nsb3MuaW1wdXJlLmxpc3AgYi90ZXN0cy9jbG9zLmltcHVyZS5saXNw
Cj4gaW5kZXggYWYxNDJlNmU5Li5mOGUyNWRkNjkgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvY2xvcy5p
bXB1cmUubGlzcAo+ICsrKyBiL3Rlc3RzL2Nsb3MuaW1wdXJlLmxpc3AKPiBAQCAtMTM1MiwxMCAr
MTM1Miw2IEBACj4gICAoYXNzZXJ0LWVycm9yIChzaGFyZWQtaW5pdGlhbGl6ZSAobWFrZS1pbnN0
YW5jZSAnc2hhcmVkLWluaXRpYWxpemUta2V5d29yZC1jaGVjaykgbmlsIDphKQo+ICAgICAgICAg
ICAgICAgICBwcm9ncmFtLWVycm9yKSkKPgo+IC0od2l0aC10ZXN0ICg6bmFtZSAoOmNoZWNrLWtl
eXdvcmQtYXJncyBzaGFyZWQtaW5pdGlhbGl6ZSA6bm9uLWtleXdvcmQgOmVycm9yKSkKPiAtICAo
YXNzZXJ0LWVycm9yIChzaGFyZWQtaW5pdGlhbGl6ZSAobWFrZS1pbnN0YW5jZSAnc2hhcmVkLWlu
aXRpYWxpemUta2V5d29yZC1jaGVjaykgbmlsICcoYWJjKSAxKQo+IC0gICAgICAgICAgICAgICAg
cHJvZ3JhbS1lcnJvcikpCj4gLQo+IDs7OyB2ZXJpZnkgdGhhdCB3ZSBjYW4gc3RpbGwgZGV0ZWN0
IG5vIHByaW1hcnkgbWV0aG9kcyBhbmQgaW52YWxpZCBxdWFsaWZpZXJzCj4KPiAoZGVmbWV0aG9k
IGdmLXdpdGgta2V5cy1hbmQtbm8tcHJpbWFyeS1tZXRob2QgOmFyb3VuZCAoKHggaW50ZWdlcikg
JmtleSBiKQo+Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPgo+Cj4gaG9va3MvcG9zdC1yZWNlaXZlCj4gLS0K
PiBTQkNMCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCj4gU2JjbC1jb21taXRzIG1haWxpbmcgbGlzdAo+IFNiY2wtY29tbWl0c0BsaXN0cy5zb3Vy
Y2Vmb3JnZS5uZXQKPiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5m
by9zYmNsLWNvbW1pdHMKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCj4gU2JjbC1jb21taXRzIG1haWxpbmcgbGlzdAo+IFNiY2wtY29tbWl0c0BsaXN0
cy5zb3VyY2Vmb3JnZS5uZXQKPiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9s
aXN0aW5mby9zYmNsLWNvbW1pdHMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpTYmNsLWNvbW1pdHMgbWFpbGluZyBsaXN0ClNiY2wtY29tbWl0c0BsaXN0
cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlz
dGluZm8vc2JjbC1jb21taXRzCg==