关于其它语言

本站在「能不能纯浏览器运行」这件事上做过逐项实测,结论是适合的才上,不适合的不硬凑:

语言实现方式体积状态
JavaScript浏览器原生,无需引擎0已上线
TypeScriptsucrase 剥离类型后按 JS 执行约 0.2MB已上线
Luawasmoon(Lua 5.4 → WebAssembly)约 0.42MB已上线
SQLsql.js(SQLite → WebAssembly)约 0.70MB已上线
PythonPyodide(CPython → WebAssembly)约 12MB已上线
C / C++浏览器内需下载完整 Clang/LLVM 工具链约 95MB暂不支持

C/C++ 之所以暂不支持:浏览器内编译需要下载约 95MB 的工具链(编译器 43MB + 链接器 23MB + 标准库头文件 29MB),且该方案基于 WASI 接口,不支持 C++ 异常与多线程, 会导致部分正常代码编译不过 —— 与其提供一个会莫名其妙报错的工具,不如先不提供。 如果你的代码需要 C/C++,建议使用本机安装的编译器。

为什么代码不会上传

本站的代码运行器把对应语言的引擎(编译成 WebAssembly 格式)下载到你的浏览器里运行。 你写下的代码、输入的测试数据、程序打印的结果,全部只在你的设备上, 服务器只负责把引擎文件发给你,不接收也不执行任何代码。 断网后(页面已打开、引擎已加载的前提下)依然可以运行代码。

顺带一提:这也是为什么这些工具不会因为别人写了死循环而变慢 —— 消耗的是每个访客自己电脑的算力。