[英]Is there a way to run C program locally in a browser?
是的,有重復的問題,但是5年前問過,好久沒更新了。
2020年隨着WebAssembly的發展,有沒有辦法在瀏覽器本地編譯運行一個簡單的C程序?
有一個叫做WasmFiddle的平台,可以在瀏覽器中編譯 C 為 wasm,但缺乏標准庫的支持,例如 stdio.h。 我認為我們可以在 js 中實現標准庫並將其導出到 wasm? 但這需要大量的工作。
我最初的目標是構建一個基於 Web 的 IDE 供學生學習 C 編程,而無需在服務器上花費很多進行遠程運行。 因此,只需要像 stdio.h、math.h、string.h 這樣的庫。
更新:這似乎是 libc 到 wasm 的一個很好的實現。
不需要高性能,因此基於 wasm 的解決方案以及可能在 JS 中實現的運行 c 的 VM 都是很好的解決方案。
Emscripten和WASM是這里兩個流行的解決方案。
不要期望有很好的性能,但是您應該能夠將它與一點點 JavaScript、CSS 和 HTML 鏈接起來,以進行代碼編輯和控制台視圖。
如果你可以運行服務器,那么你可以使用這個Jupyter Notebook kernel: https://github.com/jupyter-xeus/xeus-cling
這是 WASM 中的一個示例,沒有服務器: https://github.com/tbfleming/cib
為了讓您對 emscripten 和其他相關技術可以做什么感到震驚,請查看Fabrice Bellard在Tiny C Compiler 、 Tiny Emu和JsLinux上的工作。
JsLinux,基本上在 JavaScript 中運行虛擬機,Bellard 有運行 Linux 和 Windows2000 的示例
您可以 go 核並將所有內容放入 VM,clang 作為二進制在一些輸入代碼上運行,並將一些二進制文件編譯為 output,然后再次在 VM 中運行所有客戶端,由於虛擬化而導致性能下降。
示例: https://twitter.com/alexpignotti/status/1261357985617469442?s=20 (我的一位同事正在研究這個問題)
您有 2 個選項,或者您獲得某種在瀏覽器中運行的 VM,該 VM 能夠運行 C 可以編譯到的某種架構,或者您使用 EMScripten 編譯為 WASM。
WASM 顯然是更好的選擇,因為它在所有(體面的)瀏覽器中都受到原生支持
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.