用Rust重写Bun
4.0本文探讨了将JavaScript运行时Bun用Rust语言重写的可能性。Bun最初是用Zig编写的,但Rust在性能、安全性和生态系统方面具有优势。重写可能带来更好的内存安全性和更广泛的社区支持,但也面临兼容性和迁移成本的挑战。
30 条相关内容
本文探讨了将JavaScript运行时Bun用Rust语言重写的可能性。Bun最初是用Zig编写的,但Rust在性能、安全性和生态系统方面具有优势。重写可能带来更好的内存安全性和更广泛的社区支持,但也面临兼容性和迁移成本的挑战。
作者记录了自己第四次参加 PLDI 会议的旅程。文章以日记形式详细描述了在博尔德期间与众多研究者、开发者的交流,包括关于 e-graphs、Knuth-Bendix 算法、寄存器分配、Datalog 等多种技术话题的深入讨论。作者还参与了多项活动,如 BYOEG 教程和与 Yannis Smaragdakis 合作用 Datalog 实现线性扫描寄存器分配,以及跟随 Slava Pestov 学习 Knuth-Bendix 补全算法的实现。文章不仅展现了技术会议的学术交流氛围,也记录了因编程语言(Ruby)切片语义导致的调试趣事。
Van Wijngaarden 文法(也称为 W-文法)是一种形式文法,由荷兰计算机科学家 Adriaan van Wijngaarden 在 1960 年代为定义 ALGOL 68 编程语言而开发。它通过引入两级语法(上下文无关的元语法和上下文相关的超语法)来生成无限的语言集合,能够描述那些上下文无关文法无法处理的语言特性,是计算机语言形式化描述的重要工具。
本文探讨了 OxCaml 编程语言中一项值得其他语言借鉴的独特特性。该特性通过创新的方式解决了现有语言中的常见痛点,展示了如何将函数式编程的优雅与系统语言的性能相结合。作者认为,这一设计思路若被主流语言采纳,将显著提升开发效率和代码安全性。
本文深入浅出地解析了 MLsub 类型系统的核心原理——代数子类型(Algebraic Subtyping)。作者通过简洁的数学推导和直观的示例,展示了如何在保持 ML 风格类型推断简洁性的同时,引入表达力更强的子类型机制,并揭示了其背后统一的代数结构。无论你是类型系统研究者还是函数式编程爱好者,都能从中理解子类型化与参数多态如何优雅共存的本质。
本文探讨了低级编程语言(如C、C++和Rust)在开发效率、安全性和维护成本方面隐藏的“昂贵幻象”。作者指出,尽管这些语言在性能上具有优势,但它们带来的内存管理复杂性、安全漏洞风险和冗长的开发周期往往被低估。文章呼吁开发者重新权衡低级语言的实际成本与收益,尤其是在现代应用开发中,高级语言的性价比可能更高。
LLVM(低级虚拟机)是一个模块化、可重用的编译器基础设施项目,旨在支持各种编程语言的编译、优化和代码生成。它提供了一套中间表示(IR)和工具链,使开发者能够构建高效、灵活的编译器前端和后端。LLVM的模块化设计使其广泛应用于学术界和工业界,成为现代编译器开发的重要基础。
本文探讨了 Lean 4 编程语言和定理证明器在大规模软件工程中的扩展性规律。通过分析 Lean 4 在不同规模项目中的表现,作者总结了代码库规模增长时性能、编译时间和证明效率的变化趋势,并提出了适用于 Lean 4 的软件扩展定律,为形式化验证项目的规模化管理提供了指导。
这篇论文提出了一种系统化方法,用于消除由多层解释器(如元循环求值器或语言虚拟机)堆叠带来的性能开销。作者展示了如何通过部分求值和编译技术,将堆叠的解释器层"折叠"为高效的目标代码,从而在保留模块化设计的同时获得接近原生的执行效率。该方法在多种解释器组合(包括类型系统、作用域规则和基于语言的虚拟机)上进行了实验验证,显著减少了运行时间。
本文指出,尽管 Rust 被广泛宣传为一种内存安全的系统编程语言,但实际上它并不能完全保证内存安全。作者通过多个示例展示了 unsafe 代码块、内部可变性、生命周期标注等问题可能导致的内存错误,提醒开发者不要对 Rust 的内存安全承诺过于乐观,而应保持警惕并深入理解其底层机制。
本视频探讨了在机器学习快速发展的背景下,编程语言设计与实现面临的新挑战和机遇。内容涵盖如何将机器学习技术融入编程语言的设计中,以及如何利用机器学习来优化编译器和语言实现,为编程语言研究者与开发者提供前沿视角。
Rhombus 是 Racket 生态系统中的一种新型语言,旨在提供更灵活、更直观的元编程能力。它通过引入新的语法和宏系统,降低了宏编写的复杂度,同时保持了与 Racket 的兼容性。本文深入探讨了 Rhombus 的设计理念及其在元编程领域的创新应用。
本文探讨了Futamura投影——三个与程序转换相关的深刻定理,它们通过部分求值技术将解释器、编译器和编译器的编译器相互联系起来。作者以清晰易懂的方式解释了这些概念,并展示了它们如何为理解程序执行、编译和自优化提供统一的数学框架。
部分求值是一种程序优化技术,通过在编译时对已知输入进行预先计算,将程序的部分计算工作提前完成,从而生成针对特定输入更高效的专用化程序。该方法在编译器设计、程序分析和元编程等领域有广泛应用,能够显著提升程序运行效率。
Phantom type(幻影类型)是 Haskell 中一种类型参数在运行时没有对应值的技术,仅用于在编译期进行类型约束和检查。它常用于编码状态机、单位量纲验证等场景,能在不引入运行时开销的情况下增强程序的安全性。
本书是一本实用指南,帮助开发者将现有的C代码库逐步迁移到Rust。它涵盖了从评估迁移可行性、处理FFI边界、数据类型转换,到最终实现完全Rust化改造的完整流程与最佳实践。
本文探讨了在复杂系统中,如何通过局部推理(仅关注局部状态和交互)来推导和保证全局属性(如系统整体的一致性、安全性或正确性)。作者分析了这一方法在编程语言理论、分布式系统和形式化验证中的应用,并讨论了其优势与局限性。
本文探讨了提高编译器正确性的实用方法,结合理论与实践,旨在减少编译器错误并提升软件可靠性。研究重点放在易于实施且效果显著的务实策略上。
本文批判性地分析了低级编程语言(如C和C++)中常见的一些“虚构”观念,例如“开发者能完全控制硬件”或“低级语言天然更高效”。作者指出,这些信念往往导致更高的开发成本、更多的安全漏洞和更差的性能优化,实际上是一种昂贵的错觉。文章呼吁重新评估语言选择背后的真实成本与收益。
来自不同阵营的人会喊出那些流行名字:Python、R、SQL。但如今,数据语言其实就是你所说的自然语言。AI——这个超级编译器——在技术栈中增加了一个新层次。就像很多人不必学习汇编语言一样,未来的数据工程师也未必需要学习SQL。事实上,AI把你所说的话翻译成的目标语言很可能是JavaScript,因为它可以在浏览器和服务器上同时运行。
本文探讨了在分布式系统或复杂软件架构中,如何通过局部推理(即基于有限、本地的信息)来推导和保证全局属性的正确性。作者分析了局部性与全局性之间的矛盾,并提出了若干设计原则与模式,帮助开发者在不掌握全局状态的情况下,仍能对系统整体行为做出可靠推断。文章结合具体案例,展示了局部推理在提高系统可扩展性和可维护性方面的实际价值。
本文探讨了 Rhombus 语言中的元编程能力,展示了其如何通过灵活且可扩展的语法机制实现代码生成和变换。Rhombus 的宏和语法规则系统允许开发者以更直观的方式编写能够操作自身代码结构的程序,从而提升表达能力和抽象层次。文章通过具体示例说明了这种元编程范式的实际应用场景。
本文探讨了编程语言设计如何直接影响软件安全性。从类型系统、内存管理、编译时检查等角度出发,分析了不同语言特性(如Ada的强类型和Rust的所有权模型)在防止缓冲区溢出、空指针解引用等常见漏洞方面的优劣。文章强调,好的语言设计可以在编译阶段消除大量安全风险,减少运行时攻击面。
本文探讨了Ante编程语言中一种融合借用检查(borrow checking)与引用计数(reference counting)的新型内存管理方法。该方法旨在结合两种技术的优势:借用检查提供编译时安全性,引用计数则简化运行时内存管理。文章详细介绍了这种混合方案的设计思路及其在性能和安全性之间的平衡点。
本文探讨了如何通过局部推理(即仅关注程序局部代码的行为)来保证全局性质(如安全性、正确性等)的方法。作者分析了形式化验证中常见的挑战,提出了一种基于组合推理的技术框架,使开发者能够在不掌握整个系统全貌的情况下,依然可靠地推导出系统的整体属性。文章为编程语言理论和软件工程实践之间架起了一座桥梁。
本文讲述了T语言的历史,这是一种由Paul Graham和Robert Morris在20世纪90年代初开发的编程语言。作为对Lisp方言Scheme的重新实现,T语言旨在同时保持速度与表达力,其设计影响了后来的编程语言和编译技术。尽管T语言从未广泛流行,但它在编程语言研究的小圈子中产生了重要影响。
本文介绍了Prism,一种将类型化效应系统与不纯函数式编程相结合的实验性语言。Prism通过类型系统显式跟踪副作用(如状态、异常和I/O),同时保留函数式编程的表达能力。文章详细阐述了Prism的核心设计、类型系统及效应处理机制,展示了如何在保证安全性的前提下实现灵活的副作用管理。
假设AI生成的代码始终有效且遵循良好的编程实践,我们是否还有必要创造新的或更好的网络技术和编程语言?这似乎触及了一个临界点,让人思考是否该停止学习和创造新技术了。
本文介绍了 Prism 语言的设计,这是一种融合了类型效应(typed effects)的非纯函数式编程语言。Prism 通过在类型系统中显式标记副作用,使程序员能够精确控制和管理计算中的效应,如状态、异常和输入/输出操作,从而在保持函数式编程表达能力的同时,增强了代码的可推理性和安全性。
Flap 提出了一种将词法分析与语法解析过程相融合的确定性解析器设计。通过消除传统的词法分析阶段,该方法在保持解析确定性的同时提升了处理效率。本文详细介绍了 Flap 的设计原理与实现方式,展示了其在简化解析流程方面的优势。