网易首页 > 网易号 > 正文 申请入驻

追平 Chez Scheme:gopurs 编译器让 PureScript 跑出 Go 原生速度

0
分享至

把一门纯函数式语言的绝对安全与优雅,和一门现代底层语言的原始执行速度放在一起,会打开一个此前难以触及的维度。此前我介绍过 phpurs,一个把 PureScript 的数学级安全带到仍由 PHP 驱动的七成网络世界的编译器后端。那一次的目标是证明:即使目标运行时乍看并不自然,也不必牺牲现代安全性与开发体验。

这一次要看的正好是光谱的另一端。如果 PHP 代表极致的可移植性与遗留兼容,那么当我们追求纯粹的、接近裸金属的速度时会发生什么?当我们想要真正的多核并发、静态原生二进制,以及为极端高吞吐设计的垃圾回收器时,答案会是什么?


这就是我最近的项目之一:gopurs,一个高度优化的 PureScript 到 Go 编译器。先把结论说在前面:把 PureScript 的高层语义纯度与 Go 的原始执行力结合起来之后,最终编译出的代码在纯计算基准上追平了 Chez Scheme。Chez Scheme 是函数式提前编译领域历史上的绝对冠军之一,背后是数十年的编译器优化积累。

突破提前编译天花板:TAST 如何改变局面

历史上,把动态或高度多态的函数式语言编译到 Go 这类静态类型语言,一直是个难题。早期尝试往往把所有东西映射到 Go 的 interface{},也就是 any。这样做能跑通,但代价是性能。每个赋给 interface{} 的原始值都会被装箱并逃逸到堆上,给 Go 的垃圾回收器带来巨大压力。

为了解决这个问题,gopurs 最初使用了一个扁平的 Value 结构体,这是一种受 V8 启发的带标签联合体,尽量把数据留在栈上。这已经快了很多,但仍然不够。真正的瓶颈在于缺少结构类型信息:PureScript 标准的 CoreFn AST 会擦除类型。

这正是类型化抽象语法树发挥作用的地方。gopurs 依赖 PureScript 编译器的一个定制分支,以及出色的 purescript-backend-optimizer,把深层类型信息一路保留到代码生成阶段。这让编译器能够执行严格的单态化。热路径上零装箱、零开销。抽象在编译期直接消融,只留下 Go 编译器可以激进优化的高速命令式循环。

无惧并发:Aff 遇上 Goroutine

PureScript 最强大的特性之一是 Aff 单子,一种强大且可组合的异步效果处理方式。在 JavaScript 世界里,Aff 被小心翼翼地映射到单线程事件循环上。而在 gopurs 的目标环境中,情况完全不同:Go 原生提供 Goroutine,这让 PureScript 的异步模型有机会直接落到真正的多核并发之上。

这种结合的意义在于,开发者仍然用 PureScript 的高层抽象编写异步逻辑,不需要手动管理线程或锁,但编译产物却可以利用 Go 运行时的调度器,把工作分布到多个核心上。最终得到的是静态原生二进制,启动快、部署简单,同时保留了函数式语言在组合异步操作时的表达能力。

从 phpurs 到 gopurs,这条路线展示的是同一种思路的两个方向:一端是兼容与普及,另一端是速度与并发。两者共同说明,PureScript 的语义安全并不必然以牺牲运行环境为代价。相反,通过保留足够的类型信息,编译器可以在完全不同的目标上释放出接近手写底层代码的性能。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
82年商谈两岸统一,蒋经国提出要求,邓小平:不切实际的事不要谈

82年商谈两岸统一,蒋经国提出要求,邓小平:不切实际的事不要谈

大运河时空
2026-08-22 16:30:04
中签赚48万没卖,现在倒亏十几万!人形机器人给所有人上了一课

中签赚48万没卖,现在倒亏十几万!人形机器人给所有人上了一课

砚底沉香LIU
2026-08-26 23:18:31
跟队:阿莫林的米兰与阿莱格里完全不同,前者战术更具主动性

跟队:阿莫林的米兰与阿莱格里完全不同,前者战术更具主动性

懂球帝
2026-08-26 23:16:23
从16亿跌到0.4亿,耗资超两亿结果连《牛来》都不如,《姜子牙》导演新作血扑

从16亿跌到0.4亿,耗资超两亿结果连《牛来》都不如,《姜子牙》导演新作血扑

娱乐故事
2026-08-25 14:10:00
访谈女主持的“母子恋”!富贵花想退圈了!

访谈女主持的“母子恋”!富贵花想退圈了!

八卦疯叔
2026-08-25 09:40:09
睡前默念这5个字,百岁高僧开示:这是最简单的“修心聚能”法

睡前默念这5个字,百岁高僧开示:这是最简单的“修心聚能”法

温情邮局
2026-03-31 09:34:25
数据显示,超15%的中青年夫妻处于“干婚”状态,68%的中年人拥有固定深交的异性网友

数据显示,超15%的中青年夫妻处于“干婚”状态,68%的中年人拥有固定深交的异性网友

舒山有鹿
2026-07-25 09:57:20
1600年前的修仙实录出土!考古学家不敢公开,上古史可能是假的?

1600年前的修仙实录出土!考古学家不敢公开,上古史可能是假的?

历史教堂
2026-08-25 16:30:15
谁都没能料到,局势竟会出现如此石破天惊的反转!

谁都没能料到,局势竟会出现如此石破天惊的反转!

扶苏聊历史
2026-08-24 14:27:20
265人失联3人遇难,吉隆口岸仍然失联,道路全毁

265人失联3人遇难,吉隆口岸仍然失联,道路全毁

观察者网
2026-08-26 22:51:06
工信部文件:关乎摩托车,10月1日实施!取消13年强制报废也将提速

工信部文件:关乎摩托车,10月1日实施!取消13年强制报废也将提速

周哥一影视
2026-08-25 12:40:19
美前乌克兰问题特使:即使俄罗斯占领整个顿巴斯,也不会结束战争

美前乌克兰问题特使:即使俄罗斯占领整个顿巴斯,也不会结束战争

像梦一场a
2026-08-26 09:45:24
歼-20歼-35要小心了,美国突然公开新型导弹,射程远超霹雳-15

歼-20歼-35要小心了,美国突然公开新型导弹,射程远超霹雳-15

影孖看世界
2026-08-25 20:45:04
罗马诺:马尔穆什明天与热刺签约,先租后买总价6000万镑

罗马诺:马尔穆什明天与热刺签约,先租后买总价6000万镑

懂球帝
2026-08-26 17:37:35
宇宙中最耐烧的恒星,一万亿年都不会熄灭,红矮星到底有多离谱

宇宙中最耐烧的恒星,一万亿年都不会熄灭,红矮星到底有多离谱

兔斯基聊科学
2026-08-25 19:30:06
为什么人人都在喷星巴克这位准备考公的姑娘?原来是激起了民愤啊

为什么人人都在喷星巴克这位准备考公的姑娘?原来是激起了民愤啊

西楼知趣杂谈
2026-08-24 06:23:52
发现没:只要孩子考上外地公务员,不管多远,父母都舍不得拦着

发现没:只要孩子考上外地公务员,不管多远,父母都舍不得拦着

户外阿毽
2026-08-14 01:57:50
老年人过夫妻生活时,要注意哪些问题?医生提醒:4件事不能大意

老年人过夫妻生活时,要注意哪些问题?医生提醒:4件事不能大意

周哥一影视
2026-08-26 11:50:13
恭喜!中国女篮27岁2米01王牌首进WNBA季后赛:契合美女状元

恭喜!中国女篮27岁2米01王牌首进WNBA季后赛:契合美女状元

李喜林篮球绝杀
2026-08-26 13:42:50
韩女子失踪104天后遗体在住处400米处发现,警察曾谎称联系到人2小时后直接结案

韩女子失踪104天后遗体在住处400米处发现,警察曾谎称联系到人2小时后直接结案

红星新闻
2026-08-25 18:00:38
2026-08-27 00:39:00
字节漫游指南
字节漫游指南
有态度网友ytd
305文章数 111关注度
往期回顾 全部

科技要闻

DeepSeek被曝前七个月收入4.75亿元

头条要闻

央视:政务App日活用户仅60人 当地投4670万"打水漂"

头条要闻

央视:政务App日活用户仅60人 当地投4670万"打水漂"

体育要闻

兑现五年之约,含梗量最高的世界冠军诞生

娱乐要闻

包文婧当初担心包贝尔出轨,预言成真

财经要闻

洪灏:人民币是全球最被低估的货币

汽车要闻

北京现代吴周涛:艾尼氪V,中国定义专为年轻人打造

态度原创

旅游
亲子
本地
手机
公开课

旅游要闻

不止网红打卡!这座边境古塔,藏着云南最温柔的岁月沉淀

亲子要闻

预制娃,跑不动了…

本地新闻

无印良品竟是桐乡造?这座小城藏着一个刀具帝国

手机要闻

延续纵向三摄布局,三星Galaxy S27标准版渲染图曝光

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版