A compatibility layer that rectifies missing or incorrect CLOS MOP features across many Common Lisp implementations.
Closer to MOP is a compatibility layer for Common Lisp that fixes missing or incorrect features in the CLOS Metaobject Protocol (MOP) across multiple Common Lisp implementations. It ensures that MOP-dependent code behaves consistently and portably, regardless of the underlying Lisp environment. The project addresses implementation-specific quirks and gaps in MOP support, providing a unified interface for metaobject programming.
Common Lisp developers who write metaobject-dependent code, library authors needing portable MOP features across implementations, and projects relying on advanced CLOS capabilities like custom metaclasses or generic function protocols.
Developers choose Closer to MOP because it eliminates the headache of MOP incompatibilities across Common Lisp implementations, offering a single, reliable layer for writing portable metaobject code. Its design balances performance by using native metaclasses where possible while providing replacement classes for subclassing and advanced MOP features.
Closer to MOP is a compatibility layer that rectifies many of the absent or incorrect CLOS MOP features across a broad range of Common Lisp implementations.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Rectifies missing or incorrect MOP features across seven major Common Lisp implementations like Allegro CL and SBCL, enabling portable metaobject code as detailed in the README's supported list.
Adds support for advanced protocols such as COMPUTE-EFFECTIVE-METHOD-FUNCTION and MAKE-METHOD-LAMBDA in most implementations, improving generic function invocation consistency.
Uses each implementation's internal metaclasses by default for performance, while providing replacement classes like STANDARD-CLASS for subclassing, optimizing without sacrificing compatibility.
Includes utilities like SUBCLASSP and ENSURE-FINALIZED, which aid in metaobject programming and class finalization, simplifying common tasks.
Provides packages such as CLOSER-MOP and CLOSER-COMMON-LISP with proper symbol shadowing to handle conflicts and ensure consistent symbol access, as explained in the README.
Some features are not fully supported across all implementations; for example, MAKE-METHOD-LAMBDA is unsupported in ECL, limiting portability in specific use cases.
The README warns that shadowed symbols may require fine-grained distinctions between original and shadowed versions, adding cognitive load and potential for symbol resolution errors.
Active support for older implementations is on hold, and the historical list suggests it might not work with newer versions without updates, risking compatibility issues.
The repository has moved to Codeberg, and with historical support focus, maintenance might be slower or less active compared to projects on mainstream platforms like GitHub.