Racket 6.7 最新版本:提供对 Android App 的支持及改进的 REPL 等等

  • Sergio De Simone
  • 刘嘉洋

2016 年 11 月 6 日

话题:移动函数式编程Android语言 & 开发

PLT Design 发布了新版本的 Racket,类 Scheme 通用多模式编程语言Racket 6.7可以支持在 Android 上构建图形类应用程序,它同时改进了 REPL、包管理器,还支持扩展的 Typed Racked。

Racket 6.7 对于 Android GUI 编程的支持是通过racked-android 项目所实现的。InfoQ 对话UMass Lowell副教授、racked-android 创建者Jay McCarthy,探讨了相关内容。

是否能请你介绍一下,这个项目是怎么应运而生的,它会被使用于哪种类型的应用程序开发?

Black Swan Learning, LLC (BSL) 是目前XPrize Global Learning竞赛中的一支队伍。他们使用 Racket 搭建了一个“学习操作系统”,并且 XPrize 竞赛要求参赛者必须将学习工具部署在 Android 平板电脑上,因此他们对于 Racket 的发展做出了很大的贡献。我在 RacketCon 上遇到了 BSL 的领袖 Byron Davies,他请求我帮助他搭建这个项目,嗯,其余的不用多说了。

从技术上来说,由于 CVM 的可移植性,以及 Matthew Flatt 甚至在好些年前就已经做出了 ARM JIT,所以自 Android 第一个版本以来,Racket 就开始在 Android 上运作了。对我们来说,我们必须解决连接 Java 至 Racket 的一些问题,才能实际构建 Android 应用程序。

Racket-android 旨在实现创建基于 OpenGL 的应用程序。这是否为你们路线图上其他的 Android APIs 提供了支持?

BSL 对于全屏基于画布布局的应用程序非常感兴趣,因此这就是我们要完成的第一个目标。由于 OpenGL 可以提供良好的性能,而且我已经有一个 2D 的 OpenGL 引擎可以实现需求,所以使用 OpenGL 是一个非常可行的选择。从此出发可以为 Android 的 Java API 搭建一个基于 Racket 的 FFI,这看起来没有任何的技术性挑战(从技术工作上来说)。我们目前尚没有计划实现它。

使用 Racket 给 Android 开发带来了什么优势和缺点?

你必须忽略大部分的系统 APIs(尽管不是所有的系统 APIs),这显然是一个劣势。在搭建的过程中,你需要时刻留心,避免使用不存在于 Android 上的库。目前来看,我并不认为使用 Racket 给 Android 开发带来了什么特别的好处,但如果你偏向于使用 Racket 编程(搭建 DSLs,大量使用函数式编程等等),那你将会受益于此。

Racket 6.7 中其他值得关注的内容:

  • Racket 的REPL现在使用racket/interactive来支持行编辑、命令及结果历史和元命令。元命令可以扩展 REPL 已知的命令集。元命令“开箱即用”,开发者可以使用 backtrace 回溯追踪到最后一个异常,使用 trace 追踪到命名的函数,使用 profile 更统计性地精确地分析代码等等。
  • Racket 的包管理器 (raco pkg) 允许当从 Git 仓库安装包的的时候,通过 git-checkout-credentials 配置选项指定验证凭证。此外,raco pkg 支持隧道使用HTTP CONNECT
  • 可以逐步指定类型信息的Typed Racket,作为 Racket 的扩展,目前已经扩展到包括 racket/os 和 racket/db/sqlite。

Racket 6.7 版本现在在 Racket 网上可供下载

查看英文原文Racket 6.7 Brings Android App Support, Improved REPL, and More

移动函数式编程Android语言 & 开发