Languages and Architecture

RSS: https://verdagon.dev/rss.xml
Evan Ovadia(Vale 语言创建者)关于编程语言设计、软件架构和系统工程的博客。

Ante:一种融合借用检查与引用计数的新路径

Ante语言提出了一种结合借用检查和引用计数的新方法,旨在解决Rust和Swift在内存安全与运行时崩溃风险之间的权衡难题。 作者展示了Ante如何通过“形状稳定性”和独特的“uniq转换”机制,在不引入运行时开销的情况下实现安全的可变共享,这为系统级编程语言的设计提供了新的思路。
评论点赞收藏48 天前

如何挺过项目代码量破十万行的阶段

作者基于开发 Vale 编译器的经验,建议代码量增长后优先使用端到端测试而非单元测试,以保持开发速度。 提倡选择编译快、内存安全的语言,并通过依赖注入和解耦来维持架构灵活性。
评论点赞收藏163 天前

Vale的内存安全策略:代际引用与区域管理

介绍Vale语言使用代际引用实现内存安全的机制。通过在指针中记录对象代数,在解引用时检查对象是否存活,从而替代传统的垃圾回收或借用检查。 文章展示了如何通过单所有权、线性风格和区域(Regions)来消除运行时检查开销,并提供基准测试数据证明其性能优于引用计数,接近C++水平。
评论点赞收藏290 天前

不可能的优化:利用元编程实现十倍加速

作者展示了如何利用 Mojo 语言的元编程能力,将正则表达式解析和匹配逻辑完全移至编译期。通过将运行时递归转换为编译期生成的内联代码,消除了函数调用开销,实现了比手写代码快十倍的极致性能优化。 这种方法本质上是多阶段编程的应用,通过编译期特化 Interpreter,让通用正则引擎达到手写硬编码的速度。文章详细拆解了从编译期解析到参数化模板展开的全过程,展示了现代语言元编程的强大威力。
评论点赞收藏291 天前

加入 Mojo 编译器团队这一年:内存安全、线性类型与初创公司见闻

Vale 作者 Evan Ovadia 宣布加入 Modular 负责 Mojo 编译器开发。他分享了因线性类型和内存安全理念与 Chris Latner 结缘的经历,并介绍了 Nick Smith 在 Mojo 中创新的内存安全模型。 作者对比了 Vale 与 Mojo 的设计差异,分享了在初创公司工作的文化冲击,以及从“业余编译器极客”转变为职业编译器工程师的独特体验。
评论点赞收藏352 天前

分组借用:限制更少的零成本内存安全方案

文章介绍了由 Mojo 团队成员 Nick Smith 提出的“Group Borrowing”内存安全方案。该方案试图在保持零运行时开销的同时,解决 Rust 借用检查器过于保守的问题,允许更灵活的可变别名。 作者详细对比了传统单所有权模型与 Rust 的借用规则,并通过代码示例展示了现有方案在处理复杂状态管理时的局限性。Group Borrowing 通过引入“组”的概念,为构建高性能、高灵活性的系统级语言提供了新的技术路径。
评论点赞收藏352 天前

追逐零开销内存安全的迷思

作者通过构建玩具语言 Arrrlang 以及分析 Rust 和 Vale 的实践,论证了“零开销内存安全”在现实中并不存在。 任何内存安全机制都会带来某种运行时成本,如边界检查、克隆或哈希开销。 文章指出虽然无法达到绝对的零开销,但不同方法的成本差异巨大。作者建议开发者应停止追求极致的性能优化,转而关注代码的简洁性与实际问题的解决,根据场景选择最合适的内存管理策略。
评论点赞收藏602 天前

内存安全指南:借用检查、RC、GC与十一种其他技术全景

作者以“考古发现”为隐喻,盘点并介绍了十四种内存安全技术。除了常见的垃圾回收、引用计数和借用检查外,还详细解析了移动语义、区域管理、生成式引用等进阶方案。 文章对比了各技术在性能、安全性和复杂度上的权衡,并探讨了线性类型等前沿方向。这对深入理解Rust等语言底层机制及探索未来内存安全设计极具参考价值。
评论点赞收藏607 天前

借用检查、引用计数、垃圾回收与另外十一(!)种内存安全方案

作者整理了一份包含14种内存安全技术的清单,包括借用检查、引用计数、垃圾回收等主流方案,以及区域管理、线性类型等前沿探索。文章以考古发现为引子,详细对比了各技术的优劣与组合可能性,并提及了Vale、Austral等新兴语言的设计思路。 这不仅是技术综述,更是对未来内存安全方向的深度思考。作者分享了自己对混合技术(如区域与引用计数结合)的工程实践与困惑,适合对系统编程底层机制感兴趣的开发者阅读。
评论点赞收藏656 天前

探索新语言与 Rust 的无缝互操作

作者提出一种无需编写绑定代码即可让新语言直接调用 Rust 库的方法。通过将 Rust 类型作为不透明结构体按值传递,实现了 C 和 Rust 之间的无缝互操作。 这一尝试旨在解决新语言缺乏生态系统的痛点,虽然目前仍有挑战,但为跨语言调用提供了新思路。
评论点赞收藏811 天前

分层推理与批处理:小显存不再限制大模型吞吐量

作者通过在一台内存有限的Mac上运行大型LLM的实验,验证了“分层推理结合批处理”技术的可行性。 通过将模型层从磁盘流式加载到显存,并对多个提示词进行并行处理,成功将吞吐量提升至每秒约一个答案。 这一发现表明,普通消费者硬件也能以合理的速度运行大语言模型,特别适用于对延迟不敏感但需要高吞吐量的场景,如批量文档处理或夜间本地AI任务,无需昂贵的高显存显卡。
评论点赞收藏823 天前

高级RAII与线性类型的七种隐秘用法

作者提出“Higher RAII”概念,利用线性类型强制开发者显式销毁对象,从而解决缓存不一致、事务未提交等常见编程错误。文章对比了C++和Rust在资源管理上的局限,展示了如何在Vale语言中实现这一机制。 文中列举了七种具体应用场景,包括保证缓存同步、确保线程结果获取、防止未来状态遗漏等。作者认为这种模式能显著提升API的正确性,减少重构时的恐惧感,是向程序正确性迈进的关键一步。
评论点赞收藏823 天前

借用检查、引用计数、垃圾回收与另外十一(!)种内存安全方案

作者整理了一份包含十四种内存安全技术的清单,涵盖借用检查、引用计数、垃圾回收及区域管理等。 文章以考古发现为引子,深入对比了各技术在性能、安全性和实现复杂度上的权衡。 文中重点介绍了作者对混合使用这些技术的探索,如将区域管理与引用计数结合以减少缓存缺失,以及线性类型在确保程序正确性方面的潜力。
评论点赞收藏843 天前

Vale语言首个不可变区域借用原型及零开销基准测试

Vale语言作者展示了首个支持不可变区域借用的编译器原型,并通过细胞自动机程序验证了零代际检查开销。 基准测试显示其安全模式性能与C风格的unsafe模式相当,证明了该内存安全方案在理论之外的可行性。
评论点赞收藏1132 天前

无需借用检查、引用计数或垃圾回收的单一所有权与内存安全

作者提出一种基于“单一所有权”和移动语义的内存管理方案,无需借用检查、引用计数或垃圾回收即可实现内存安全。 核心创新在于利用编译器强制要求显式释放资源(Higher RAII),从而在编译期保证如缓存清理、事务回滚等后续操作不会被遗漏。
评论点赞收藏1158 天前

泛型、编译时间、类型擦除与云构建的关联

作者提出在Vale语言中引入泛型类型擦除,以加速开发时的编译速度。通过减少LLVM的工作量和支持并行编译,甚至实现云端预编译和热重载。 这主要是一种针对开发体验优化的思路,虽然可能牺牲运行时性能,但能显著提升程序员在编码时的流畅度和效率。
评论点赞收藏1164 天前

实现 Vale 区域借用的意外之旅:为了优化不得不造出的泛型轮子

Vale 语言作者分享在实现区域借用(Region Borrowing)时遇到的代码膨胀问题。为解决多导出函数导致的实例重复,作者被迫从零实现完整的泛型系统。 这一过程比预想的艰难得多,耗时 81 天并编写了大量代码。文章详细对比了模板与泛型的类型检查差异,并记录了实现中的技术挑战与心路历程。
评论点赞收藏1194 天前

内存安全方案如何加速或延缓开发速度

本文探讨了不同内存安全方案对开发速度的影响。作者通过对比手动管理、借用检查、垃圾回收和引用计数,分析了它们在原型设计和迭代中的表现。 文章指出,虽然借用检查能提升安全性,但在快速原型设计中可能因约束过多而降低效率。同时,现代手动内存管理结合静态分析也能保持较高速度。
评论点赞收藏1307 天前

实现全新内存安全方案(一):从灵感到“Regions”技术

作者讲述在开发游戏时,因需要处理时间旅行状态管理,意外发现了一种无需垃圾回收或借用检查器即可实现内存安全的新技术“Regions”。 这一灵感源于对不可变数据的临时性观察,最终演变为一种能跳过运行时安全检查的新范式。文章分享了从灵感到初步实现的历程,以及如何在长期项目中保持动力的经验。
评论点赞收藏1362 天前

登录芦苇

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