上一篇文章写的是 Judge0。这篇写 Piston——同类产品,但设计哲学几乎相反。放在一起看有个好处:同一件事(安全地跑陌生代码),两个项目给出的答案完全不同,而这恰好能说明哪些是「必须」,哪些是「选择」。Piston 由 engineer-man 维护,MIT 协议,2842 星、475 fork。它的自述只有一句话:高性能通用代码执行引擎,擅长运行不可信、甚至可能恶意的代码而不受其害...
上一篇文章写的是 Judge0。这篇写 Piston——同类产品,但设计哲学几乎相反。放在一起看有个好处:同一件事(安全地跑陌生代码),两个项目给出的答案完全不同,而这恰好能说明哪些是「必须」,哪些是「选择」。Piston 由 engineer-man 维护,MIT 协议,2842 星、475 fork。它的自述只有一句话:高性能通用代码执行引擎,擅长运行不可信、甚至可能恶意的代码而不受其害...
有个问题看起来简单,做起来极难:如何在一个你不信任的代码片段跑起来之后,还能保证自己的服务器不被搞坏?用户提交的代码可以无限循环、可以 fork 炸弹、可以吃光内存、可以尝试读你的文件系统、可以发起对外连接。在线判题系统、编程教学平台、招聘笔试、乃至现在让 AI 生成代码后「真的跑一下看看」,全都要解决这个问题。Judge0 就是干这个的。它 2016 年 8 月由 Herman Zvoni...