HackerTube ?

"Unison: a new distributed programming language" by Paul Chiusano

Strange Loop Conference在 YouTube 播放 ↗

字幕解读

Paul Chiusano 介绍 Unison:一门静态类型函数式语言,核心设计是用代码内容的哈希而非名字标识定义,并在代码库中保存序列化语法树。由此可支持安全重命名、按哈希复用类型检查和测试结果、并存不同依赖版本及类型化持久数据。演讲还演示交互式代码管理,并设想通过能力和解释器把普通函数部署到远端节点,实现弹性并行计算;其中部分分布式能力仍在研究中。

自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。

内容要点

  • 内容哈希固定了定义及其依赖版本,名称可以作为独立元数据重命名,而不会破坏引用方。
  • 代码库以追加新定义为主,纯函数测试可按哈希缓存;共享已处理的 AST 与类型信息也减少重复解析和类型检查。
  • 远程执行被设计成库层的能力接口,可用解释器选择本地模拟或真实计算节点;状态型、高并发分布式服务仍属后续研究方向。
视频章节 6
  1. Unison 的目标与设计动机
  2. 内容哈希标识代码定义
  3. 重命名、构建与增量检查
  4. 测试缓存和不可变代码库
  5. 依赖冲突与类型化持久存储
  6. 以能力抽象实现分布式执行
具体观点与证据 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 阶段的语言及设计愿景,部分远程计算抽象和状态型服务尚未完成;字幕未包含演示代码、类型签名及屏幕内容,不能单凭文本复现实现细节。

相关视频与证据 2

问题到设计方案模块名称限制多版本,内容哈希允许共存

Python演讲指出sys.modules以模块名定位对象,现有代码与pickle依赖这一语义,因此同库多版本难共存;Unison则把引用绑定到内容哈希,区分同名但不同定义,使多版本依赖无需争夺全局名字。

关联视频

How Python was Shaped by leaky Internals, Armin Ronacher, Flask framework ↗

以模块名为键的共享模块缓存阻碍同一解释器加载同库多个版本。

we would have to make S modules also have a version identifier
▶ 39:11–39:16 · 观看片段
当前视频

"Unison: a new distributed programming language" by Paul Chiusano

以类型内容哈希区分版本,可让不同版本共存而非强制解决全局命名冲突。

then it would be perfectly fine to allow as many different versions of the same library in our code base

适用边界 Unison不是对Python问题的补丁;类型在边界相遇时仍需要转换,运行时与生态不同。

设计原则到实例让用户库承担语言增长

Steele要求用户定义构造像语言原语一样自然,以少数增长机制容纳多种领域需求;Unison的分布式能力与解释器让用户自行实现执行策略,把分布式编程抽象交给库作者。

关联视频

Growing a Language, by Guy Steele ↗

用户定义的扩展与内建构造应具有一致使用形式,才能平滑扩展语言。

the new words defined by a library should look just like the primitives
▶ 23:25–23:32 · 观看片段
当前视频

"Unison: a new distributed programming language" by Paul Chiusano

分布式编程抽象可由用户通过能力及解释器构造成库,而不必固定在语言核心。

the idea is that distributed programming should just be a library

适用边界 Unison未被证明直接源自该演讲;远端批计算示例不等于完整解决状态型分布式服务。

Hacker News 评论

查看 HN 原评论 ↗