11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

Twitter 启动新 Scala 编译器开源项目,旨在提高编译速度

  • 2017-08-20
  • 本文字数:1289 字

    阅读完需:约 4 分钟

Twitter 在 GitHub 上启动了一个全新的 Scala 编译器开源项目,编译器的名字叫作 Reasonable Scala Compiler (简称 rsc),旨在提升编译速度。

Twitter 目前几乎拥有世界上最多的 Scala 代码,从整体来看,在公司层面提升 Scala 代码的编译速度对于他们来说是很有意义的。

项目的目标如下。

  • 大幅度提升 Scala 代码的编译速度
  • 研究 Scala 各种特性的编译时间开销
  • 找出可以使用 rsc 进行编译的 Scala 特性子集
  • 分享经验给其他 Scala 编译器

项目的目标不包括以下几点。

  • 完全向后兼容(可以考虑 Lightbend Scala
  • 新语言特性(可以考虑 Dotty Typelevel Scala
  • 类型系统的改进(可以考虑 Dotty 或 Typelevel Scala)
  • 运行时性能(视情况而定)

据悉,新编译器有望把一般 Scala 代码的编译速度提升 5 到 10 倍。首先,新编译器类型检测器受 Kentucky Mule 项目的启发,Kentucky Mule 是由 Grzegorz Kossakowski 开发的一个旨在探索如何改进 Scala 编译器速度的项目,主攻类型检测器。其次,新编译器的编译管道只需要遍历 4 遍语法树,相比其他编译器有了大幅改进,比如 Lightbend Scala 和 Typelevel Scala 需要 20 多次,Dotty 需要 15 次以上。再则,新编译器只支持 Scala 的一个子集,这样就可以专注于提升子集的编译速度。这个子集被叫作“Reasonable Scala”,而这也就是为什么他们把编译器叫作“Reasonable Scala Compiler”。新编译器将从 Scala 的一些小特性着手,在保持性能达标的同时,逐步支持更多的特性。

社区对此也展开了热议。

提升编译速度对于开发者来说总是有好处的,尽管它不一定是最大的关注点。不过新编译器只支持 Scala 的一个子集,而且不保证完全兼容性,所以有人担心 Scala 生态系统会因此变得支离破碎,比如有些包只能与特定的编译器协同工作。

也有人解释说,新编译器不会造成 Scala 生态系统的支离破碎,因为官方已经声明,所有的 Reasonable Scala 都将与标准 Scala 兼容。

至于提升编译速度究竟会给开发者带来什么实质性的好处,项目负责人 Eugene Burmako 解释说,如果把编译时间从 10 到 20 分钟降到 1 到 2 分钟,不仅可以提升效率,还为在每次提交代码时运行代码分析工具带来了可能性。而对于增量编译来说,如果把时间从 3 到 5 秒降到 0.3 到 0.5 秒,那么就有可能随时随刻运行代码分析工具,可以立即得到编译反馈。

对项目持怀疑态度的人主要还是担心新编译器只支持部分 Scala 特性以及存在兼容性问题,因此可能不会被太多人所采用。对此,Eugene Burmako 回应说:

我们不想通过采用率来衡量新编译器成功与否。

我们将会把我们的经验分享给 Lightbend Scala 和 Dotty 的开发者,来帮助他们一起改进他们的编译器。如果能做到这样,我们就很开心了。

Grzegorz Kossakowski 的 Kentucky Mule 项目也只支持 Scala 的一个子集,甚至没有人把它应用在生产项目上。尽管如此,它仍然算是一个很成功的项目,因为在这个项目之前,我们甚至都不知道原来 Scala 的类型检测器可以是并行的。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-20 19:001561
用户头像

发布了 321 篇内容, 共 123.4 次阅读, 收获喜欢 132 次。

关注

评论

发布
暂无评论
发现更多内容

跟我学Python图像处理丨获取图像属性、兴趣ROI区域及通道处理

华为云开发者联盟

Python OpenCV 图像处理 图像 ROI区域

[Day36]-[二叉树]-在每个树行中找最大值

方勇(gopher)

LeetCode 二叉树 数据结构算法

架构师成长路线

汤师爷

软件架构 架构师 成长路线

区块链 重塑不良资产互信机制

CECBC

一个学渣对于stack的顿悟(1):从CPU的视角说起

Richard

堆栈

《数字经济全景白皮书》Z世代用户洞察篇 完整版 发布

易观分析

Z世代

13-注解增删改查

爱好编程进阶

Java 程序员 后端开发

15 个优秀开源的 Spring Boot 学习项目,一网打尽!

爱好编程进阶

Java 程序员 后端开发

2021-11-9【数据结构平时实验】

爱好编程进阶

Java 程序员 后端开发

2021年4月23号,成功斩获阿里(Java岗

爱好编程进阶

Java 程序员 后端开发

(JavaSE)数据类型变量与运算符

爱好编程进阶

Java 程序员 后端开发

耗时三年终于整理出了SSM+微服务+Nginx+Redis+MySQL的PDF了!

Java架构追梦

Java 后端开发

让 Rust 的 CI 加速 2~3倍速度

非凸科技

rust 构建 cl cithub 缓存空间

Apache ShardingSphere 企业行|走进汽车之家

SphereEx

数据库 企业 ShardingSphere SphereEx apache 社区

不愧是字节跳动技术官,算法精髓全写这本666页笔记里了

Java架构追梦

Java 程序员 数据结构与算法、

OpenHarmony 3.1 Beta版本关键特性解析——分布式DeviceProfile

OpenHarmony开发者社区

OpenHarmony OpenHarmony 3.1 Release DeviceProfile

显卡只是为游戏而生吗?GPU服务器了解一下

Finovy Cloud

GPU服务器 GPU算力

微服务实战文档分享,阿里内部的Spring cloud微服务精髓都在里面

Java架构追梦

Java 微服务 阿里

7Z命令行

爱好编程进阶

Java 程序员 后端开发

云原生 on nLive:云上 Nebula Graph

NebulaGraph

数据库 图数据库 原生云

网站开发进阶(二十五)JS实现将html表格导出为excel文件

No Silver Bullet

5月月更 表格导出

云图说 | 华为云医疗智能体EIHealth,AI赋能基因组研究

华为云开发者联盟

华为云 云图说 EIHealth 医疗智能体 基因组

元宇宙核心技术--脑机接口

CECBC

2021全网最全Activiti7教程02(Activiti7入门使用-欢迎收藏)

爱好编程进阶

Java 程序员 后端开发

终于有人把tomcat讲清楚了!阿里大牛推荐的tomcat架构解析文档

Java架构追梦

Java 后端开发 JVM’

2年工作经验的Java程序员面试经历

爱好编程进阶

程序员 后端开发

What?构造的查询语句会导致堆栈溢出

华为云开发者联盟

neo4j 图数据库 堆栈溢出 查询语句 查询语言

内存不超过5M,datop 在识别冷热内存及跨 numa 访存有多硬核?| 龙蜥技术

OpenAnolis小助手

cpu 内存 datop 轻量级 muma

动手实操丨RC522射频卡模块与IC卡完成充值消费查询的技术实现思路

华为云开发者联盟

stm32 RC522射频卡模块 IC卡 RC522

维权思考

成周

4年JAVA外包终上岸,我只能说避雷这些公司

爱好编程进阶

Java 程序员 后端开发

Twitter启动新Scala编译器开源项目,旨在提高编译速度_语言 & 开发_薛命灯_InfoQ精选文章