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==