【发布时间】:2011-12-09 16:25:42
【问题描述】:
是否可以用 Python 或 Go 编写本机客户端应用程序,然后在浏览器中运行?
【问题讨论】:
标签: python google-chrome google-chrome-extension go google-nativeclient
是否可以用 Python 或 Go 编写本机客户端应用程序,然后在浏览器中运行?
【问题讨论】:
标签: python google-chrome google-chrome-extension go google-nativeclient
这在架构上是可行的,但据我所知,当前的 SDK 只有 C/C++ 工具链。他们将 Python REPL 作为基于浏览器的客户端运行(包含标准库和 sqlite http://lackingrhoticity.blogspot.com/2009/06/python-standard-library-in-native.html)。
【讨论】:
Go 曾经编译为 NaCl,但 NaCl 一直是一个移动的目标,以至于从 Go 中删除了支持。如果/当 NaCl 稳定下来,它可能会在某个时候复活。
【讨论】:
如果您下载 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。
【讨论】:
Go 1.2 的过时答案:
据报道,Go 1.3 将支持 NaCl:
引用Go 1.3 Native Client Support文档:
Go 1.3 将支持在 Native Client,Google 基于 SFI 的执行沙箱。
引用Inside the Go PlaygroundGo 博客:
Native Client(或“NaCl”),一种由 Google 开发的技术,允许在网络浏览器中安全执行 x86 程序。
(这个特殊的工具链将被合并到 Go 1.3 的核心中。要了解更多信息,请阅读设计文档。如果您想在此之前使用 NaCl,可以查看包含所有更改的 fork。)
【讨论】: