a

atgreen

atgreen 的个人站点。

文章

atgreen.github.io

Whistler:从 Common Lisp REPL 实时编程 eBPF

作者开发了一个名为 Whistler 的工具,允许在 Common Lisp REPL 中直接编写和加载 eBPF 程序。传统 eBPF 开发需要 C 语言和复杂的编译流程,而 Whistler 将编译器集成到 Lisp 宏展开阶段,实现了代码在内存中直接编译加载,无需生成磁盘文件。它支持内核结构自动导入、跨语言用户态代码生成,甚至可以通过设置权限实现非…

atgreen.github.io

SBCL Fibers:轻量级协作线程的深度实现解析

本文详细介绍了 SBCL(Steel Bank Common Lisp)中正在开发的轻量级用户态协作线程(Fibers)的实现细节。文章首先阐述了动机:相比昂贵的 OS 线程和高昂的事件驱动编程复杂度,Fibers 能在保持顺序编程模型的同时实现高并发 I/O 扩展性。核心设计目标包括:在 GC 下的绝对正确性、对现有 SBCL 代码的透明集成、亚微秒级的…

atgreen.github.io

利用 CLOS MOP 实现 Java 风格的单分发优化

作者在使用 OpenLDK 运行 Clojure 时发现启动极慢,原因是 CLOS 的多方法分发机制与 Java 的单分发模型存在阻抗不匹配。为了解决这个问题,作者深入 CLOS 元对象协议(MOP),自定义了一个新的泛函数元类,用哈希表缓存替代了昂贵的多方法排序逻辑,专门针对 Java 的单分发场景进行优化。这一改动将 Clojure 的启动时间从近三小…

atgreen.github.io

CL-Kawa:编程语言界的“火鸡包鸭包鸡”嵌套实验

作者展示了如何在 Common Lisp (SBCL) 进程中,不依赖外部 JVM,直接运行 Java 运行时,并在其上层运行 Kawa Scheme。核心在于 OpenLDK 项目将 Java 字节码即时转译为 Common Lisp 代码。这不仅实现了三层语言嵌套,还利用 Kawa 复杂的运行时特性(如动态类生成、异常控制流、反射和数值塔)对 Open…

atgreen.github.io

使用 pure-TLS/acme 为 Common Lisp 实现自动 TLS 证书管理

作者为 Common Lisp 开发了纯 Lisp 实现的 TLS 1.3 库及 ACME 自动证书管理模块。核心亮点是利用 TLS-ALPN-01 协议,在 443 端口直接完成域名验证,无需额外端口或 DNS 配置。文章详细解析了启动流程、多域名支持、证书持久化存储及后台自动续期机制,并展示了如何在实际部署中实现“开箱即用”的 HTTPS 服务,解决了…

atgreen.github.io

用纯Common Lisp构建TLS 1.3实现:摆脱OpenSSL依赖与AI辅助开发实录

作者为了解决Common Lisp应用依赖OpenSSL带来的跨平台证书验证难题,使用纯Lisp实现了TLS 1.3库pure-tls。该项目利用Ironclad处理底层加密,并通过CFFI和Security.framework分别对接Windows和macOS的系统信任库,解决了原生证书验证问题。开发过程中大量借助AI辅助代码生成,作者认为AI在处理有明…

atgreen.github.io

21 个补丁搞定 GNU 工具链移植:从零设计 CPU 架构的实验

作者 Anthony Green 重发了他 2008 年撰写的一篇关于从零开始设计 CPU 架构并移植 GNU 工具链的技术博客。文章核心观点是“自顶向下”的 ISA(指令集架构)设计方法:先不考虑硬件实现的难易,而是完全根据编译器(GCC)的需求来定义指令和架构特性。作者通过 21 个补丁,逐步构建了名为 'ggx'(后更名为 Moxie)的实验性架构,…