即将发布的 RFC 的游览

主要观点:为成为百年编程语言,Hare 语法和语义在达到 1.0 版本时将冻结,之前会进行偶尔的破坏性更改以引入新功能和修复不足,同时开发工具帮助迁移代码库。通过请求评论(RFC)流程规划这些更改,分享了已接受的导致破坏性变化的 RFC。
关键信息

  • 处理内存分配失败(Handling allocation failure with nomem):Hare 0.25 前alloc等内置函数在分配失败时通常会中止程序,Pasta 设计并实现了让用户安全处理的方式,操作结果类型调整为返回nomem错误,标准库也进行了更新。
  • 切片和动态数组(Slices and dynamic arrays):Hare 中切片有两种用途,一是动态数组,需用alloc创建等操作,有容量字段;二是数组的“切片”,不能通过特定操作改变大小,容量字段无意义,Sebastian 提议区分这两种切片,新语法未确定。
  • 可变性 overhaul:Hare 的const运算符未正确实现且语义不明确,Sebastian 提议基于可变性是对象属性而非类型的原则对类型系统进行 overhaul,具体语法和语义未确定,但基本想法已获批准,可能会破坏现有代码库。
  • 线性类型(Linear types):Hare 已具备空间内存安全,未具备时间内存安全,怀疑线性类型是解决方案,但在 Hare 中基于函数线程值编写线性类型检查器规则较简单,编程框架限制过多,尚未确定 RFC 及该功能是否会加入 Hare。
    重要细节
  • Request for Comments (RFC) process用于规划语言的较大更改,在hare-rfc邮件列表上讨论以达成共识。
  • Sebastian 在多个 RFC 中提出相关提议,如[https://lists.sr.ht/~sircmpwn...]等。
  • 文中提到的各种代码示例,如type slice = struct {data: nullable *opaque, length: size, capacity: size;}等,用于说明切片的结构和操作。
  • 提到 Austral 语言对线性类型的描述[https://austral-lang.org/line...],用于帮助理解线性类型。
阅读 12
0 条评论