InfoQ技术大会双节活动折上折,限时特惠,满10000-1000>> 了解详情
写点什么

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

2016 年 11 月 06 日

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

2016 年 11 月 06 日 19:002890
用户头像

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

关注

评论

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

Python最会变魔术的魔术方法,我觉得是它!

Python猫

访问者模式及其在Java Parser中的应用

maijun

金融科技 | 建设中台能力,助力开放生态

xcbeyond

金融科技 中台战略 中台架构

《逻辑和计算机设计基础》第五版(英文原版)PDF免费下载

计算机与AI

计算机基础 计算机组成原理

区块链技术在旅游业中的应用探索

CECBC区块链专委会

旅游

ISP芯片:如何让数字之眼“看清”真实世界?

脑极体

新增原创标签相关改动

yinhaixiang

aa bb cc

学习笔记4

Qx

还在手写Operator?是时候使用Kubebuilder了

Java架构师迁哥

【架构师训练营 1 期】第十二周学习总结

诺乐

架构之书:传道与《设计模式》

lidaobing

架构 设计模式

你心目中高级程序员的印象是什么样子的?

Java架构师迁哥

跨越“数字鸿沟”,日本老年智能化服务的解法

脑极体

FORSAGE智能合约矩阵系统软件APP开发

开發I852946OIIO

系统开发

阿里P8大佬带你全面了解—MySQL锁:03.InnoDB行锁

比伯

Java MySQL 编程 架构 程序人生

无可限量的数字经济

CECBC区块链专委会

数字经济

Python进阶——什么是描述符?

Kaito

Python

Java虚拟机科普系列—元空间Metaspace的内存结构

Java老k

Java JVM Java虚拟机 metaspace

【架构师训练营 1 期】第十二周作业

诺乐

数据类型· 第1篇《元组和列表的性能分析、命名元组》

清菡

测试开发

shell脚本的使用该熟练起来了,你说呢?(篇四)

良知犹存

shell脚本编写

Java并发编程:任务执行器Executor接口

码农架构

Java并发

记一次神奇的MySQL死锁

废材姑娘

spring MySQ

Spring Boot 过滤器

噜噜猫

Spring Boot

第八周课后练习

jizhi7

甲方日常 67

句子

工作 随笔杂谈 日常

生产环境全链路压测建设历程之九 淘宝网全链路压测的原理

数列科技杨德华

mongodb 源码实现系列 - mongodb详细表级操作及详细时延统计实现原理(快速定位表级时延抖动)

杨亚洲(专注mongodb及高性能中间件)

数据库 mongodb 性能调优 源码刨析 分布式数据库mongodb

第八周-总结

jizhi7

新增原创标签相关改动

yinhaixiang

测试 个人 aa bb

Week_12 作业

golangboy

极客大学架构师训练营

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