20

是否有可能用 Python 或 Go 编写一个可以在浏览器中运行的本机客户端应用程序?

4

4 回答 4

8

Go 曾经编译为 NaCl,但 NaCl 一直是一个移动的目标,以至于从 Go 中删除了支持。如果/当 NaCl 稳定下来,它可能会在某个时候复活。

于 2011-10-21T02:15:36.340 回答
6

从 Go 1.3 开始(再次)支持 NaCL。

请参阅Golang 1.3 发行说明


Go 1.2 的过时答案:

据报道,Go 1.3 将支持 NaCl:

引用Go 1.3 Native Client Support文档:

Go 1.3 将支持在 Google 的基于 SFI 的执行沙箱 Native Client 下运行命令行程序。

来自Go Playground Go 博客内部的引述:

Native Client(或“NaCl”),一种由 Google 开发的技术,允许在 Web 浏览器中安全执行 x86 程序。

(这个特殊的工具链将被合并到 Go 1.3 的核心中。要了解更多信息,请阅读设计文档。如果您想在此之前使用 NaCl,可以查看包含所有更改的 fork。)

请参阅Go 1.3 NACL 分叉

于 2014-04-17T16:05:14.150 回答
6

这在架构上是可行的,但据我所知,当前的 SDK 只有 C/C++ 工具链。他们将 Python REPL 作为基于浏览器的客户端运行(配有标准库和 sqlite http://lackingrhoticity.blogspot.com/2009/06/python-standard-library-in-native.html)。

于 2011-10-17T23:21:49.050 回答
5

如果你下载 NaCl 工具链,你会看到:

$ ls toolchain/linux_x86/bin
i686-nacl-addr2line  i686-nacl-objcopy      x86_64-nacl-gcc-4.4.3
i686-nacl-ar         i686-nacl-objdump      x86_64-nacl-gccbug
i686-nacl-as         i686-nacl-ranlib       x86_64-nacl-gcov
i686-nacl-c++        i686-nacl-readelf      x86_64-nacl-gfortran
i686-nacl-c++filt    i686-nacl-size     x86_64-nacl-gprof
i686-nacl-cpp        i686-nacl-strings      x86_64-nacl-ld
i686-nacl-g++        i686-nacl-strip        x86_64-nacl-nm
i686-nacl-gcc        x86_64-nacl-addr2line  x86_64-nacl-objcopy
i686-nacl-gcc-4.4.3  x86_64-nacl-ar     x86_64-nacl-objdump
i686-nacl-gccbug     x86_64-nacl-as     x86_64-nacl-ranlib
i686-nacl-gcov       x86_64-nacl-c++        x86_64-nacl-readelf
i686-nacl-gfortran   x86_64-nacl-c++filt    x86_64-nacl-size
i686-nacl-gprof      x86_64-nacl-cpp        x86_64-nacl-strings
i686-nacl-ld         x86_64-nacl-g++        x86_64-nacl-strip
i686-nacl-nm         x86_64-nacl-gcc

注意 gfortran 已经存在。同样,单声道支持可用(参见https://github.com/elijahtaylor/mono),因此任何 .net 语言原则上也是可行的。Unity3d 游戏引擎框架使用 C# 和 mono 并导出到 NativeClient。

于 2011-12-14T08:00:24.920 回答