M1芯片下的Scheme开发环境搭建

805 阅读3分钟

闲聊几句

一直觉得这种how-to类型的文章没太大含金量,不过鉴于在M1芯片的MacBook Pro上配置好整套Scheme开发环境确实折腾了我一晚上,所以还是留个档吧。

如果你也遇到了:

  1. 在M1芯片下,不管是基于源码(configure/make/install)、github、brew、dmg、可执行文件… chez scheme/mit-scheme都安装不上。
  2. 不想被这篇文章(MIT Scheme on Apple Silicon (M1 Mac) )中如此复杂的步骤搞坏脑子。
  3. VS Code下载速度巨慢且时不时就网络异常。
  4. 传说中的Code Runner的配置入口在哪里?

那么,这篇水文或许可以帮助到你(不想看废话的,可以直接拉到后面的配置部分)。

其实关于M1芯片的问题,我并没有正面解决掉,而是用了这样一段自觉还蛮巧妙的推演给绕过去了:

我们知道chez scheme或者mit-scheme实际上都不过是Scheme解释器的一种实现罢了(这里的表述并不十分准确)。只不过呢,它俩都属于把Scheme源码编译成机器码来运行的,所以才有那么多硬件相关的问题。而这个问题,早在上古时代不就已经被Java解决掉了。那么,只要找到一个满足R7规范的、基于JVM来实现的解释器,不就可以愉快的敲括号了么?

于是,我打开了一个叫 scheme.org 的网站,里面的Implementations一栏中,有一个叫kawa的实现赫然在列。

image.png

赶紧按照指引试了下,果然,成了!那一刻,我感觉Java当年的那句“Write Once, Run Everywhere”真是大写的牛逼!

说起来,最近还是有不少灵光一闪的时刻的,希望后续The Little Schemer和SICP的学习过程也能充满灵感吧!

效果图

image.png

本文假设读者有基本的命令行知识、已经安装好了JDK/JRE。

安装Scheme解释器

# 假设把kawa安装在Library目录下
cd ~/Library

# 下载最新版本的kawa
wget ftp://ftp.gnu.org/pub/gnu/kawa/kawa-latest.zip

# 解压
unzip kawa-latest.zip

# 删除原始zip包
rm -rfv kawa-latest.zip

# 在/usr/local/bin下面建立一个kawa的软连接并改名为scheme
sudo ln -s ~/Library/kawa-3.1.1/bin/kawa /usr/local/bin/scheme

以上步骤完成后,Scheme的运行时就安装好了,不妨来个Hello World试试看?

image.png

VS Code及插件安装

VS Code的安装本身没有什么好说的,最坑的其实是网速问题,解决方案也很简单:

  1. 官网 找到下载地址。
  2. 复制下载链接,比如:az764295.vo.msecnd.net/stable/d045…
  3. 把域名部分替换成国内的CDN(vscode.cdn.azure.cn)。

差不多泡杯茶的功夫就好了。

接下来是下载Code Runner插件,并把如下下面这2段配置加入到settings.json中。其中,第3行要求源文件以.scm结尾,如果你喜欢用其他的后缀的话,请自行替换。

{
  "code-runner.executorMapByFileExtension": {
  	".scm": "scheme"
  },
  "code-runner.executorMap": {
    "scheme": "scheme"
  }
}

说实话,这个settings.json真的找的我好苦啊!

image.png

image.png

image.png