【问题标题】:Can Native Client (NaCl) programs be written in languages other than C or C++?Native Client (NaCl) 程序可以用 C 或 C++ 以外的语言编写吗?
【发布时间】:2011-12-09 16:25:42
【问题描述】:

是否可以用 Python 或 Go 编写本机客户端应用程序,然后在浏览器中运行?

【问题讨论】:

    标签: python google-chrome google-chrome-extension go google-nativeclient


    【解决方案1】:

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

    【讨论】:

    • 如果您对用 Python 编写的浏览器应用程序感兴趣,可以使用一些 Python-to-JavaScript 编译器。pyjs.org
    【解决方案2】:

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

    【讨论】:

    • 既然 PNaCl 已经投入生产,为什么 Go 还没有恢复对 NaCl 的支持?
    【解决方案3】:

    如果您下载 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。

    【讨论】:

      【解决方案4】:

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

      Golang 1.3 release notes


      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。)

      Go 1.3 NACL fork

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多