QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 2016-05-15
  • 本文字数:1135 字

    阅读完需:约 4 分钟

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-05-15 19:002410
用户头像

发布了 218 篇内容, 共 71.3 次阅读, 收获喜欢 76 次。

关注

评论

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

让AI发展避开“暗礁”,索信达控股推出自研区块链+联邦学习解决方案

索信达控股

区块链 金融科技 联邦学习 金融监管 风控

英特尔院士Johanna Swan:极致的异构集成是半导体封装未来趋势

E科讯

Vue Conf关于Vite的分享给我带来的启发

前端森林

vite esm Vue 3

华为云数据库GaussDB(for Cassandra)揭秘:内存异常增长的排查经历

华为云开发者联盟

nosql 云原生 Cassandra 华为云数据库 GaussDB(for Cassandra)

用超出行业平均薪资招人?

石云升

职场经验 管理经验 6月日更

使用高级视频质量工具 AVQT 评估视频 | WWDC 演讲实录

网易云信

机器学习 算法 音视频

深度学习分类任务常用评估指标

华为云开发者联盟

机器学习 深度学习

在北鲲云超算平台上做球体落入水中的流固耦合仿真模拟记录

北鲲云

云管理平台建设,这项功能必不可缺 ↓

BoCloud博云

云管理平台

🏆「终」【JVM 性能调优】「CMS 垃圾回收器」优化实战分析(补充版)

码界西柚

CMS JVM GC调优 6月日更

透过 3.0 Preview 看 Dubbo 的云原生变革

try catch

oneAPI开启新征程 英特尔拥抱开源打造软件生态

E科讯

Android快速转战Kotlin教程,附详细答案

欢喜学安卓

android 程序员 面试 移动开发

今天带你详细了解各组件原理!面试建议

欢喜学安卓

android 程序员 面试 移动开发

云小课 | MRS基础入门之HDFS组件介绍

华为云开发者联盟

hadoop hdfs 分布式文件系统 MapReduce服务 数据读写

Facebook Chat真的是世界第三大即时通讯客户端吗?

BeeWorks

作为后端开发者的思考:如何看待如今的前端架构

吴脑的键客

大前端 后端

一步一步实现 Vue 3 Reactivity

Geek_z9ygea

JavaScript Vue 响应式 Vue 3

Rust从0到1-自动化测试-运行测试

rust 自动化测试 Automated Tests 运行测试

听说一代数据库大侠都是这样练成的?

华为云数据库小助手

数据库 GaussDB 华为云数据库

Spring @Transactional 注解是如何执行事务的?

程序员小航

Java MySQL spring 事务 代理

法国政府的"安全 "WhatsApp替代品在短短90分钟内被破解

BeeWorks

技术解密 |阿里云多媒体 AI 团队拿下 CVPR2021 5 冠 1 亚成绩的技术分享

阿里云CloudImagine

阿里云 AI 计算机视觉 经验分享 CVPR

WICC 2021来袭 融云领衔探索互联网通信云技术新方向

融云 RongCloud

电梯“惊魂”事故频频发生,可视化全平台覆盖,远程值守高效监控

一只数据鲸鱼

数据可视化 智慧城市 智慧园区 智慧电梯

存储大师班:NFS 的诞生与成长

青云技术社区

存储 分布式存储 NFS

怎么办,linux的常用命令就是记不住?于是每天推一些linux指令实践总结

李阿柯

面试 操作系统 linux运维

什么是SSD Sanitize数据擦除技术?

怀瑾握瑜

存储 SSD 数据保护 备份 删除

JAVA 面向对象 (十二)-- 关键字this

加百利

Java 关键字 this 6月日更

英特尔拥抱开源,岂能没有杀手锏?

E科讯

CloudQuery 使用教程之《No.2数据查询(上)》

BinTools图尔兹

sql dba 数据库管理工具 国产数据库 开发运维

Racket 6.5改善了Typed Racket,提供更快迭代并添加更多新功能_后端_Sergio De Simone_InfoQ精选文章