atgreen

atgreen 的个人站点。

Whistler:从 Common Lisp REPL 实时编程 eBPF

作者开发了一个名为 Whistler 的工具,允许在 Common Lisp REPL 中直接编写和加载 eBPF 程序。传统 eBPF 开发需要 C 语言和复杂的编译流程,而 Whistler 将编译器集成到 Lisp 宏展开阶段,实现了代码在内存中直接编译加载,无需生成磁盘文件。它支持内核结构自动导入、跨语言用户态代码生成,甚至可以通过设置权限实现非 root 用户运行。这极大地简化了 eBPF 的开发调试流程,提供了极快的反馈循环。
评论点赞收藏145 天前

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

本文详细介绍了 SBCL(Steel Bank Common Lisp)中正在开发的轻量级用户态协作线程(Fibers)的实现细节。文章首先阐述了动机:相比昂贵的 OS 线程和高昂的事件驱动编程复杂度,Fibers 能在保持顺序编程模型的同时实现高并发 I/O 扩展性。核心设计目标包括:在 GC 下的绝对正确性、对现有 SBCL 代码的透明集成、亚微秒级的上下文切换开销、以及基于 Chase-Lev 无锁双端队列的工作窃取多核调度机制。文中深入探讨了寄存器保存、栈管理、动态变量绑定(TLS)处理、GC 集成以及 I/O 复用等底层工程挑战,并提供了具体的 API 参考和性能基准测试数据。这是一篇面向 Lisp 社区和系统编程爱好者的硬核技术文档。
评论点赞收藏154 天前

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

作者在使用 OpenLDK 运行 Clojure 时发现启动极慢,原因是 CLOS 的多方法分发机制与 Java 的单分发模型存在阻抗不匹配。为了解决这个问题,作者深入 CLOS 元对象协议(MOP),自定义了一个新的泛函数元类,用哈希表缓存替代了昂贵的多方法排序逻辑,专门针对 Java 的单分发场景进行优化。这一改动将 Clojure 的启动时间从近三小时缩短至两分四十秒,展示了 MOP 在底层系统定制中的强大威力和灵活性。
评论点赞收藏174 天前

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

作者展示了如何在 Common Lisp (SBCL) 进程中,不依赖外部 JVM,直接运行 Java 运行时,并在其上层运行 Kawa Scheme。核心在于 OpenLDK 项目将 Java 字节码即时转译为 Common Lisp 代码。这不仅实现了三层语言嵌套,还利用 Kawa 复杂的运行时特性(如动态类生成、异常控制流、反射和数值塔)对 OpenLDK 进行了极限压力测试。文章提供了具体的代码示例和底层实现细节,属于典型的高技术深度工程实践分享。
评论点赞收藏175 天前

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

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

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

作者为了解决Common Lisp应用依赖OpenSSL带来的跨平台证书验证难题,使用纯Lisp实现了TLS 1.3库pure-tls。该项目利用Ironclad处理底层加密,并通过CFFI和Security.framework分别对接Windows和macOS的系统信任库,解决了原生证书验证问题。开发过程中大量借助AI辅助代码生成,作者认为AI在处理有明确测试向量(如RFC标准)的密码学协议实现上表现优异,尽管在Lisp语法处理上仍有瑕疵。该库作为cl+ssl的替代品,虽性能不及高度优化的OpenSSL,但具备零C依赖、易审计、跨平台部署简单的优势,目前已在作者维护的包管理器ocicl中投入使用。
评论点赞收藏224 天前

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

作者 Anthony Green 重发了他 2008 年撰写的一篇关于从零开始设计 CPU 架构并移植 GNU 工具链的技术博客。文章核心观点是“自顶向下”的 ISA(指令集架构)设计方法:先不考虑硬件实现的难易,而是完全根据编译器(GCC)的需求来定义指令和架构特性。作者通过 21 个补丁,逐步构建了名为 'ggx'(后更名为 Moxie)的实验性架构,包括定义 ELF 格式、编写汇编器、链接器以及指令编码。虽然代码基于旧版 GCC,但这种以编译器需求驱动硬件设计的逆向思维,对于嵌入式系统开发者、编译器工程师以及对体系结构感兴趣的技术人员来说,具有极高的教学价值和讨论意义。Moxie 架构后来成为了一个真实的开源项目。
评论点赞收藏506 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。