【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:002174
用户头像

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

关注

评论

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

携程DBA负责人俞榕刚:OceanBase在携程的落地和实践

OceanBase 数据库

数据库 分布式 OceanBase 开源 携程 客户实践

在线YAML转TOML工具

入门小站

工具

“在线设计”网络资源管理的源头活水

鲸品堂

通信运营商 在线设计平台

五步实现HarmonyOS应用(ets)【鸿蒙开发 07】

坚果

鸿蒙 1月月更

微信的业务架构图和学生管理系统的毕业设计

Geek_8d5fe5

架构实战营

恒源云(GPUSHARE)_attention decoder效果不佳时如何应对

恒源云

深度学习 计算机视觉

SparkSQL的入门实践教程

华为云开发者联盟

sql spark 编程 Sparksql 结构化数据

来自未来的交互设计!当电影中的一切变为现实,设计师要如何进化?

博文视点Broadview

恒源云(GPUSHARE)_AdderSR: Towards Energy Efficient Image Super-Resolution学习笔记

恒源云

人工智能 深度学习 计算机视觉

用 docker 快速搭建 kafka(qbit)

qbit

kafka zookeeper docker image

第三方测评:GaussDB(for Redis)稳定性与扩容表现

华为云开发者联盟

redis 华为云 GaussDB(for Redis) NoSQL数据库 云原生NoSQL数据库

☕【Java深层系列】「并发编程系列」让我们一起探索一下CompletionService的技术原理和使用指南

洛神灬殇

Java 线程池 CompletionService 异步执行 1月日更

“以终为始”的正确使用方式

石云升

思维模型 1月月更

高并发环境下,6个构建缓存服务需要注意的问题

华为云开发者联盟

缓存 高并发 开发 并发 缓存服务

从智能汽车到智慧出行,区块链能打通车联网的任督二脉吗?

CECBC

2022年保障企业内网安全就用行云管家!免费试用!

行云管家

云计算 云平台 内网 云管平台

流批一体技术框架探索及在袋鼠云数栈中的实践

袋鼠云数栈

Flutter启动流程分析之插件化升级探索

得物技术

flutter Weex Google 框架 原生

必读!如何有效的进行沟通

观测观测

基于Calcite的分布式多数据源查询

麒思妙想

MySQL 数据库 Apache Calcite gbase8a

前端工程师 2022 年必备的 7 个工具

开源之巅

JavaScript node.js

Linux之wc命令

入门小站

Linux

一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台-Axelor

马农驾驾驾

Java 系统开发 BPM 开发框架 智能管理

直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术

OpenAnolis小助手

Linux 开源

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源 社群 合作伙伴

企业上云后,不容忽视的管理工具-云管平台

行云管家

云计算 企业上云 云管平台 云管理

异步调用如何使用是最好的方式?

CRMEB

手把手教你丨小熊派移植华为 LiteOS-M

华为云开发者联盟

华为 鸿蒙 LiteOS 小熊派 移植

农业掀起“上链”潮 区块链等数字技术正成为乡村振兴新动力

CECBC

全栈工程师?你知道全流程工程师吗?

蜜糖的代码注释

Java 开发 后端技术

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源

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