"Unison: a new distributed programming language" by Paul Chiusano
Strange Loop ConferenceYouTube ↗
延伸阅读 2
字幕解读
Paul Chiusano 介绍 Unison:一门静态类型函数式语言,核心设计是用代码内容的哈希而非名字标识定义,并在代码库中保存序列化语法树。由此可支持安全重命名、按哈希复用类型检查和测试结果、并存不同依赖版本及类型化持久数据。演讲还演示交互式代码管理,并设想通过能力和解释器把普通函数部署到远端节点,实现弹性并行计算;其中部分分布式能力仍在研究中。
自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。
内容要点
- 内容哈希固定了定义及其依赖版本,名称可以作为独立元数据重命名,而不会破坏引用方。
- 代码库以追加新定义为主,纯函数测试可按哈希缓存;共享已处理的 AST 与类型信息也减少重复解析和类型检查。
- 远程执行被设计成库层的能力接口,可用解释器选择本地模拟或真实计算节点;状态型、高并发分布式服务仍属后续研究方向。
视频章节 6
- Unison 的目标与设计动机
- 内容哈希标识代码定义
- 重命名、构建与增量检查
- 测试缓存和不可变代码库
- 依赖冲突与类型化持久存储
- 以能力抽象实现分布式执行
具体观点与证据 5
使用内容哈希标识定义并将名称作为元数据,可使重命名不破坏依赖者。
Unison所述代码库模型,哈希包含依赖的具体版本。
this doesn't actually break anyone's code including like our downstream library users不可变内容寻址代码与无IO单元测试允许永久缓存确定性测试结果。
不适用于执行IO的集成测试或环境相关计算。
they are by definition going to be deterministic以类型内容哈希区分版本,可让不同版本共存而非强制解决全局命名冲突。
不同类型在业务边界相遇时仍可能需要显式转换。
allow as many different versions of the same library in our code base节点间发送函数哈希并按需同步缺少定义,可形成动态代码部署协议。
演讲区分已实现能力与未来弹性分布式系统研究。
that hash that sort of gives us this nice efficient dynamic deployment protocol分布式编程抽象可由用户通过能力及解释器构造成库,而不必固定在语言核心。
演示remote面向批计算,状态服务仍在研究中。
distributed programming should just be a library so we don't补充字幕原文 2
Unison 用定义内容的哈希而非名称作为身份,使实现及其依赖版本可以被精确引用。
definitions not by their name but by a hash讲者主张把远程执行抽象为可组合的库能力,由不同解释器选择本地模拟或真实弹性计算资源。
distributed programming should just be a library解读边界
演讲介绍的是仍在 alpha 阶段的语言及设计愿景,部分远程计算抽象和状态型服务尚未完成;字幕未包含演示代码、类型签名及屏幕内容,不能单凭文本复现实现细节。