Whistler:从 Common Lisp REPL 实时编程 eBPF
作者开发了一个名为 Whistler 的工具,允许在 Common Lisp REPL 中直接编写和加载 eBPF 程序。传统 eBPF 开发需要 C 语言和复杂的编译流程,而 Whistler 将编译器集成到 Lisp 宏展开阶段,实现了代码在内存中直接编译加载,无需生成磁盘文件。它支持内核结构自动导入、跨语言用户态代码生成,甚至可以通过设置权限实现非…
atgreen 的个人站点。
作者开发了一个名为 Whistler 的工具,允许在 Common Lisp REPL 中直接编写和加载 eBPF 程序。传统 eBPF 开发需要 C 语言和复杂的编译流程,而 Whistler 将编译器集成到 Lisp 宏展开阶段,实现了代码在内存中直接编译加载,无需生成磁盘文件。它支持内核结构自动导入、跨语言用户态代码生成,甚至可以通过设置权限实现非…
本文详细介绍了 SBCL(Steel Bank Common Lisp)中正在开发的轻量级用户态协作线程(Fibers)的实现细节。文章首先阐述了动机:相比昂贵的 OS 线程和高昂的事件驱动编程复杂度,Fibers 能在保持顺序编程模型的同时实现高并发 I/O 扩展性。核心设计目标包括:在 GC 下的绝对正确性、对现有 SBCL 代码的透明集成、亚微秒级的…
作者在使用 OpenLDK 运行 Clojure 时发现启动极慢,原因是 CLOS 的多方法分发机制与 Java 的单分发模型存在阻抗不匹配。为了解决这个问题,作者深入 CLOS 元对象协议(MOP),自定义了一个新的泛函数元类,用哈希表缓存替代了昂贵的多方法排序逻辑,专门针对 Java 的单分发场景进行优化。这一改动将 Clojure 的启动时间从近三小…
作者展示了如何在 Common Lisp (SBCL) 进程中,不依赖外部 JVM,直接运行 Java 运行时,并在其上层运行 Kawa Scheme。核心在于 OpenLDK 项目将 Java 字节码即时转译为 Common Lisp 代码。这不仅实现了三层语言嵌套,还利用 Kawa 复杂的运行时特性(如动态类生成、异常控制流、反射和数值塔)对 Open…
作者为 Common Lisp 开发了纯 Lisp 实现的 TLS 1.3 库及 ACME 自动证书管理模块。核心亮点是利用 TLS-ALPN-01 协议,在 443 端口直接完成域名验证,无需额外端口或 DNS 配置。文章详细解析了启动流程、多域名支持、证书持久化存储及后台自动续期机制,并展示了如何在实际部署中实现“开箱即用”的 HTTPS 服务,解决了…
作者为了解决Common Lisp应用依赖OpenSSL带来的跨平台证书验证难题,使用纯Lisp实现了TLS 1.3库pure-tls。该项目利用Ironclad处理底层加密,并通过CFFI和Security.framework分别对接Windows和macOS的系统信任库,解决了原生证书验证问题。开发过程中大量借助AI辅助代码生成,作者认为AI在处理有明…
作者 Anthony Green 重发了他 2008 年撰写的一篇关于从零开始设计 CPU 架构并移植 GNU 工具链的技术博客。文章核心观点是“自顶向下”的 ISA(指令集架构)设计方法:先不考虑硬件实现的难易,而是完全根据编译器(GCC)的需求来定义指令和架构特性。作者通过 21 个补丁,逐步构建了名为 'ggx'(后更名为 Moxie)的实验性架构,…