Могут ли программы Native Client (NaCl) быть написаны на других языках, кроме C или C ++? - PullRequest
20 голосов
/ 18 октября 2011

Можно ли написать собственное клиентское приложение на Python или Go, которое затем можно будет запустить в браузере?

Ответы [ 4 ]

8 голосов
/ 21 октября 2011

Go раньше компилировался в NaCl, но NaCl была настолько движущейся целью, что поддержка была удалена из Go. Вероятно, он воскреснет в какой-то момент, если / когда осядет NaCl.

6 голосов
/ 17 апреля 2014

NaCL (снова) поддерживается начиная с версии 1.3.

См. Замечания к выпуску Golang 1.3 .


Устаревший ответ на Go 1.2:

Как сообщается, NaCl будет поддерживаться в Go 1.3:

Цитата из Go 1.3 Поддержка собственных клиентов документ:

Go 1.3 будет включать поддержку запуска программ командной строки под Собственный клиент, песочница выполнения Google на основе SFI.

Цитата из На игровой площадке Go Go Blog:

Native Client (или «NaCl»), технология, разработанная Google для обеспечения безопасного выполнения программ x86 в веб-браузерах.

(Эта специальная цепочка инструментов будет объединена с ядром для Go 1.3. Чтобы узнать больше, прочитайте проектную документацию. Если вы хотите поиграть с NaCl до этого, вы можете проверить вилку, в которой есть все изменения.)

См. Go 1.3 NACL fork .

6 голосов
/ 18 октября 2011

Это архитектурно возможно, но, насколько я могу судить, текущий SDK имеет только наборы инструментов C / C ++. У них есть Python REPL, работающий как клиент на основе браузера (в комплекте со стандартной библиотекой и sqlite http://lackingrhoticity.blogspot.com/2009/06/python-standard-library-in-native.html).

5 голосов
/ 14 декабря 2011

Если вы загрузите набор инструментов 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 # и моно и экспортирует в NativeClient.

...