The provided material covers the developmental history, architectural philosophy, and recent technical milestones of McCLIM, the Free Software implementation of the Common Lisp Interface Manager (CLIM) specification.
Recommended Reviewers
A review of this material would be most relevant to:
Common Lisp Systems Architects: To evaluate the modernization of the CLIM specification.
GUI Framework Maintainers: To analyze the implementation of thread-safe drawing and "idealized" geometry in a dynamic language environment.
Open Source Governance Analysts: To study the project's transition from bounty-based development to community-funded models and its migration to Codeberg for licensing protection.
Abstract:
McCLIM is a sophisticated GUI toolkit for Common Lisp that has undergone a significant revitalization between 2017 and 2025. This period is characterized by the transition from a decade-long hiatus to a consistent release cycle (0.9.7, 0.9.8, and 0.9.9). Architecturally, the project has focused on achieving thread-safety in stream operations, refactoring the rendering stack to support modern backends like XRender and SDL2, and resolving deep-seated issues in input processing and geometry management. Philosophically, the framework maintains a distinction between "Sheets" (idealized regions) and "Grafts" (physical device representations). The project also executed a strategic migration to Codeberg to protect its codebase from unauthorized AI training, while transitioning its financial model toward sustainable community sponsorship via Patreon.
Detailed Technical Summary and Milestones
2017–2018: Resurrection and Release 0.9.7 (Imbolc)
Feb 16, 2018: Released version 0.9.7, the first major update in 10 years. Key additions included TrueType rendering as the default for CLX, a new PDF backend, and the integration of the Drei text-editing substrate.
Architectural Concept (Sheets/Grafts): The framework defines "Sheets" as ideal forms with infinite resolution. Coordinate transformations occur at the "Graft" level to map these forms to physical device pixels (e.g., MDPI vs. HDPI displays).
2018–2023: Progress Toward Version 0.9.8 (Yule)
Dec 31, 2018: Introduced significant font rendering refactors, including support for kerning, tracking, and arbitrary text transformations in the native TTF renderer.
Jul 13, 2021: Discontinued use of BountySource due to changes in Terms of Service regarding fund retention; reported $18,700 total collected over 46 months to support development.
Mar 13, 2023: Migrated the repository to Codeberg. The move was a response to concerns over GitHub Copilot using code without attribution or license respect.
Dec 27, 2023: Release 0.9.8 "Yule" (Modernization)
Rendering Rewrite: Full rewrite of the CLX renderer to utilize XRender, enabling transparency, high-performance transformations, and double buffering.
New Tools: Integrated "Clouseau," a new object inspector, and added mcclim-dot for Graphviz-based layouts.
Internal Refactors: Overhauled event distribution, pointer tracking, and space requirements (padding/margins).
Mar 11, 2025: Release 0.9.9 "Ostara" (Concurrency and Robustness)
Thread-Safety: Implemented thread-safe output history and drawing contexts. Users can now draw and write to McCLIM streams concurrently from multiple threads without graphical glitches or cursor corruption.
Performance Optimization: Introduced batched geometry updates via STREAM-FINISH-OUTPUT, reducing visual flickering during rapid state changes.
Text Rendering: Refactored text rendering for better performance and added support for alternative line/page directions (Right-to-Left, etc.) in DRAW-TEXT.
Future Development Roadmap
Repaint Queue: A work-in-progress branch aims to decouple input processing from sheet repainting, potentially increasing performance to 400+ FPS.
SDL2 Backend: Development of a backend for platforms without X11, focusing initially on software rendering followed by hardware acceleration.
Input Editing: A pending rewrite of input editing streams to improve command completion and text editing integration.