目前,墨干已经将“Scheme-langserver兼容Goldfish Scheme+R7RS”项目在“开源之夏2025”上线, 作为该项目的导师,我希望借助论坛的力量召集在读本科生/研究生踊跃报名参与。此处在读包括本科生、研究生以及已经录取但尚未入学的学生。
参与项目的学生将获得什么?
- 我作为Scheme-langserver的开源开发者,每周至少两次通过email方式指导你在任务中遇到的问题。墨干也将组织在线途径(飞书等)随时答疑;
- 完成项目的学生将获得税前12000RMB的奖金;
- 综合往年情况,我有一定信心帮助学生拿到2025年的最佳质量奖,帮助学生获得在技术社区、公共话语中的曝光度。
基本情况
Scheme-langserver兼容Goldfish Scheme+R7RS”项目
Goldfish Scheme是墨干理工套件生态的一部分。Scheme-langserver是专为Scheme语言设计的LSP(Language Server Protocol)服务器,使用一些非常简单的Abstract Interpretation、Partial Evaluation和Type Inference技术为开发者提供现代集成开发环境(IDE)的核心功能,如代码补全、定义跳转、类型推断等。 本项目的目标是让Scheme-langserver服务墨干理工套件生态,这包括:
- 兼容R7RS-small标准;
- 兼容Goldfish Scheme的集合库(liii lang)和标准库,特别是集合库、标准库和一些独特的语法;
- 增强fault tolerance能力,这意味着要建立一个测试集以充分探及边缘情况。
更多详情请参考此页面。
Scheme-langserver
Scheme-langserver是一款使用Chez Scheme编写的、用于R6RS标准Scheme编程的语言服务器(Language Server)。其核心功能是使用一些静态分析技术(如简单的Abstract Interpretation和Partial Evaluation)通过LSP协议(Language Server Protocol)向编辑器提供IDE服务,如auto-complete,goto definition,type inference等。下面这个视频展示了Scheme-langserver+Magic-scheme在VScode下的使用效果。
比较特别的是,Scheme-langserver对Scheme代码的处理采取了一种近似方法(论文已经发在European Lisp Symposium 2025,但尚未放出),打破了Scheme其他语言服务器由于Interactive Programming传统导致的一些限制。如let
在未完成的情况下,不可在其body中补全局部变量。尽管tree-sitter也可以实现类似效果,但tree-sitter实际上是对“同名”的S表达式做处理,而不考虑identifier的有效性问题。此外Scheme-langserver额外实现的type inference能够在语言缺少类型标注的情况下有效提高自动推荐质量。
墨干
墨干的收费版本为三鲤理工套件,已经获得天使轮投资。他们决定通过“开源之夏2025”为完成项目的学生提供税前12000元人民币的奖金。其核心产品为墨干理工套件,包含三大自由软件产品:
中文名 | 英文名 | 产品定位 | 状态 |
---|---|---|---|
墨干 | Mogan Research | 墨干是结构化的科技编辑器平台——GNU TeXmacs的发行版之一 | 成熟 |
墨码 | Mogan Code | 基于GNU TeXmacs内核的代码编辑器 | 研发中 |
墨板 | Mogan Beamer | 基于GNU TeXmacs内核的幻灯片产品 | 研发中 |
GNU TeXmacs 是法国国家科学研究中心的数学家 Joris van der Hoeven 从上世纪九十年代末开始研发的一款结构化编辑器,旨在利用直观易用的图形界面编写高质量的技术文档,效果可达到与 LaTeX 相同的水准。目前它的主要用户集中于大学生、中小学教师及高校科研人员。
Goldfish Scheme
Goldfish Scheme是一个 Scheme 解释器,它作为插件内置在墨干理工套件中,Goldfish Scheme本身不提供REPL的实现,墨干理工套件中提供了Goldfish Scheme的结构化REPL。
它在语言上的特性包括:
- 兼容 R7RS-small 标准;
- 提供类似 Scala 的函数式集合库;
- 提供类似 Python 的功能丰富的标准库;
- 小巧且快速。
难点
- 畏难情绪,以为abstract interpretation、静态分析、 partial evaluation什么的很难,实际上我们的任务针对Goldfish scheme的情况做了优化,根据你的工作量和能力可以调整难度;
- Scheme语言的各方面设施不是很完善,甚至编译Scheme-langserver并使用对很多人来说都存在困难。但是请相信,只要你用Linux、Windows WSL,这些问题都没有难到哪里去,它只是比较复合2000年代的编程习惯而已——我们正是在解决这个问题;
- 工作量和期望的平衡。我可以承诺,我反对做无用功,在你智力的付出足够的情况下,你会发现整个工作量并不是很大。但同时,我们的能力毕竟是有限,本质上只是帮助学生焕发出他原本的能力,而不是托举成功。谁也不像董小姐有个好爹。
Final
Emacs-china社区作为中国计算机社区的一个小小的分支,在精神上是某种灯塔,在这里的朋友代表着某种正待喷薄的力量。《大学》说:“一家仁,一国兴仁;一家让,一国兴让;一人贪戾,一国作乱;其机如此。此谓一言偾事,一人定国。”诚如是,再次恳请朋友们的指导和帮助!