BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Scala 2.11.0 发布

| 作者 郭蕾 关注 8 他的粉丝 发布于 2014年4月25日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

在经过4个RC版本之后,Scala 2.11.0正式发布,该版本主要针对Java 6,并开始试验性支持Java 8,比如读取Java 8字节码、解析Java 8源代码。另外,在2.10.x系列版本上构建的没有过时警告Scala的代码可以在2.11平台正常构建。Scala 2.11.0修复了2.10.x中的613个BUG,并在2.10系列的基础上做了大幅改进,官方宣称Scala 2.11的设计目标是更小、更快、更稳健。

Scala 2.11.0主要在集合、反射、宏和编译器等方面进行了改进,具体如下:

1. 集合

提高了Immutable HashMap、HashTable的filters、unions、like方法的执行速度,增加了LongMap、AnyRefMap以提升在Key为Long或者AnyRef时的性能,BigDecimal的round操作语义更加明确,并且通过减少不必要的BigInt转换以提升性能。另外List的map、flatMap、collect性能也得到了提升。

2. 模块化

从Scala核心jar中拆分出xml、解析、swing等模块,这些模块都已经单独提供,另外也对编译器进行了模块化。

3. 反射、宏以及quasiquotes

请读者参考此文档来了解这部分的变化以及兼容性。

4. 编译器后端

引入新的字节码生成方案GenBCode,采用新的方案编译闭包并引入独立的项目scala.js

5. 编译器优化

增量编译性能得到了明显提升,读者可以升级sbt到0.13.2版本并添加incOptions := incOptions.value.withNameHashing(true)参数来体验此特性。另外还优化了反射的性能

6. REPL

字节码反编译命令:javap已经支持Java 7,新加了:kind命令。

7. 改进-Xlint警告

新版本的Scala会在未使用的private/local的terms或者类型以及未使用的imports时给予警告。

8. 编译器瘦身

移除了.net编译器后端,重新实现了Pattern Matcher的Bytecode Emitter,还删除了无用的代码。

另外,Scala 2.11.0对应的IDE基于Eclipse 4.2/4.3(Juno/Kepler)构建,读者可以参考这篇指南来安装Eclipse和Scala IDE。

相对于2.10.x,Scala 2.11.0主要做了一些性能优化、Bug修复以及过时标记的改进,但对Java 8的支持多少有点令人失望,相信Scala会在2.12系列中增强此部分的功能。读者可以从这里下载最新版本的Scala。如果不了解Scala,可以看看由Scala的作者亲自录制的视频教程

参考文档:

  1. SCALA 2.11.0 IS NOW AVAILABLE

  2. Hacker News


感谢方腾飞对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

不错 by 张章 鸥翔鱼游

好文章。总是要支持一下

by Li Seijin

好文 赞

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT