上海架构师集结!4月25-26日,全球架构师峰会首次落地上海,吴翰清、汪源、叶绍志等大咖确认出席 了解详情
写点什么

Racket 6.5 改善了 Typed Racket,提供更快迭代并添加更多新功能

2016 年 5 月 15 日

Ryan Culpepper 在 Racket 博客上宣布,属于Lisp/Scheme 家族的多范式编程语言Racket 已经发布了6.5 版本。这个新版本中添加了许多新功能,包括typed/untyped 代码之间交互的改进,对哈希表和集合更快的迭代以及更多内容。

Culpepper 提出,如前所述,Racket 6.5 加快了很多渐进类型程序中 typed/untyped 代码之间的交互速度。通过对 Typed Racket 和 racket/contract 库的改进产生较低开销的代码,实现了这个功能。

现在,当使用 in-hash, in-hash-pairs, in-mutable-hash 和in-mutable-set 函数时,哈希表和集合可以提供更快的迭代。根据Culpepper 所述,微基准测试显示现在迭代速度提高了最多100%。

另外,Racket 优化器检测到更多可优化机会,比如当变量始终用来保存数字的情况下,运行时检查可以省略。

Racket 6.5 的更多变更包括:

  • syntax-parse 一种用来编写宏命令和特定的语法的领域特定语言,产生更好的诊断结果。
  • Contracts 具有更好的覆盖率分析工具以及性能提升。
  • 添加了对 MySQL 中多结果语句的支持。

Racket 基于 LGPL 许可证发布,其官方 6.5 版本现在可以下载 tarball 或是在 GitHub 上下载。Racket设计目标之一便是为语言的创建、设计和实现提供一个平台。 Typed Racket 是 Racket 静态类型变更版本,支持 typed 和 untyped 代码可以共存的渐进类型范式。

InfoQ 采访了 Ryan Culpepper 有关于 Racket 6.5 发布的问题。

可以提供 Racket 6.5 中渐进类型改进的更多细节吗?你怎么评价它?

作为 Asumu Takikawa 研究工作的一部分,他开发了 typed/untyped 交互的度量框架。在 POPL
2016 一篇题为“渐进类型逐渐消失了吗? ”的论文中对此进行了描述。自那以后,Sam Tobin-Hochstadt 和其他人一起改进了 Typed Racket 的 contract 生成,Robby Findler 对 contract 库本身进行了改进,并使用度量框架来查看是否还有提升空间,以及测量改进后的效果。如果想了解更多,可以阅读 Takikawa 的文章。

你是 syntax-parse 的编写者。你可以向读者介绍一下它对 Racket 宏系统进行了什么改变以及它给编写宏命令提供了什么方便吗?

Syntax-parse 可以让宏命令编写者写出描述性、模块化的语法规范,包括上下文相关检查。它会自动生成无效使用宏命令的错误提示,宏命令编写者不必再为此烦恼。同时,与 syntax-case 相比它支持更多表达模式以及模板,它还提供了一个“属性”机制,可以让宏命令编写者整合一部分宏命令,根据语法规范生成代码。简言之:给编写好的、健壮的宏命令带来了方便。

查看英文原文 Racket 6.5 Brings Improved Typed Racket, Faster Iteration, and More


感谢张龙对本文的审校。

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

2016 年 5 月 15 日 19:001182
用户头像

发布了 217 篇内容, 共 51.8 次阅读, 收获喜欢 69 次。

关注

评论

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

典型的大型互联网应用方案

garlic

极客大学架构师训练营

Week 3学习总结

balsamspear

极客大学架构师训练营

架构师训练营第四周学习总结

听夜雨

极客大学架构师训练营

架构师训练营第四周作业

听夜雨

极客大学架构师训练营

week04总结

追风

架构师一期

WEEK4 学习总结

陈勇

极客大学架构师训练营

Week 3命题作业

balsamspear

极客大学架构师训练营

第四课系统架构课后作业

Geek_michael

极客大学架构师训练营

迭代开发中的微服务拆分

码猿外

架构 微服务 微服务拆分 架构演进

十六、深入Python字符串

刘润森

Python

架构师训练营第 1 期 - 第四周作业提交

Todd-Lee

极客大学架构师训练营

第四周总结

Geek_ac4080

给新入职工程师的10条建议

supernova

管理 职场 工作方式

用Python绘制地理图

计算机与AI

Python 绘图

聊聊「测试分工和测试时间」

清菡

测试

会用Docker的人都别装了,这多简单呐

MySQL从删库到跑路

MySQL Docker Linux yum redhat

视读——沟通的艺术,看入人里,看出人外(第四章)

双儿么么哒

B站真题:如何判断括号是否有效?

王磊

Java 数据结构 算法

WEEK4 一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

陈勇

自学编程,看书还是视频?

沉默王二

程序员 读书 自学编程 视频

一次用户故事地图之旅

Bruce Talk

敏捷开发 用户故事 Product Owner 用户故事地图

十五、深入Python输入和输出

刘润森

Python

Spring 事务,你真的用对了吗(上篇)?

双儿么么哒

Spring MVC

极客时间架构师培训 1 期 - 第 4 周作业

Kaven

LeetCode题解:22. 括号生成,递归生成同时过滤,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

每天都要写吗?

Nydia

手把手教你分析Mysql死锁问题

捡田螺的小男孩

MySQL 死锁

架构师训练营 1 期 -- 第四周总结

曾彪彪

极客大学架构师训练营

架构师训练营 1 期 -- 第四周作业

曾彪彪

极客大学架构师训练营

week04作业

追风

架构师一期

架构师训练营第 1 期 - 第四周总结

Todd-Lee

极客大学架构师训练营

OCR技术的未来发展与演进

OCR技术的未来发展与演进

Racket 6.5改善了Typed Racket,提供更快迭代并添加更多新功能-InfoQ