大规模尊重隐私的类型错误遥测
Author
Venue
编程的艺术、科学与工程
Abstract
背景:Roblox Studio 允许数百万创作者通过一种名为 Luau 的 Lua 变体进行编程,从而构建交互式体验。创作者群体非常广泛,从编写第一个脚本的新手到专业开发者都有;因此,Luau 必须支持广泛的受众。作为支持各类程序员努力的一部分,Luau 包含了一个可选的渐进式类型系统,并竭尽全力将误报错误降至最低。 研究背景:鉴于 Luau 目前已被众多创作者使用,我们希望收集数据以改进该语言,特别是其类型系统。收集数据的标准方法是部署客户端遥测系统;然而,我们不能抓取个人数据或专有信息,这意味着我们无法收集源代码片段、错误信息,甚至文件路径。 因此,研究问题在于如何开展非侵入式的遥测,并从中获取关于类型错误的洞察。方法:我们为 Luau 设计并实现了一个采用假名化、随机采样的遥测系统。遥测记录包含时间戳、会话 ID、发送原因以及最近一次类型分析的数值摘要。这些信息使我们能够在不泄露私有数据的情况下,研究类型错误随时间的变化趋势。 我们在 2023 年春季将该系统部署于 Roblox Studio,并从超过 34 万个会话中收集了 150 多万条遥测记录。研究成果:我们提出了关于 Luau 的若干发现,所有发现均表明遥测是研究类型错误语用学的有效途径。 其中一个并不令人意外的发现是,可选的渐进式类型并不受欢迎:无类型 Luau 会话的数量与有类型会话的数量之间存在 100 倍的差距。一个意外发现是,类型分析的严格模式在与数据资产的交互方面过于保守。一个令人放心的发现是,类型分析极少触及其内部的问题规模限制。 数据支撑:我们的发现基于超过150万条遥测记录的数据集。相关数据及分析脚本已发布在项目成果中。重要性:除了对Luau的直接益处外,我们关于类型和类型错误的研究发现,对TypeScript、Elixir和Typed Racket等其他渐进式语言的采用和易用性也具有重要意义。我们的遥测设计具有广泛的参考价值,因为它能在不泄露敏感信息的情况下报告类型错误。
