Можно ли написать собственное клиентское приложение в Python или Go, которое затем может быть запущено в браузере?
Может ли программа Native Client (NaCl) записываться на языках, отличных от C или С++?
Ответ 1
Go используется для компиляции NaCl, но NaCl была такой движущейся мишенью, что поддержка была удалена из Go. Вероятно, он будет воскрешен в какой-то момент, если/когда NaCl опустится.
Ответ 2
Это архитектурно возможно, но в текущем SDK есть только C/С++ toolchains, насколько я могу судить. У них Python REPL работает как клиент на основе браузера (в комплекте со стандартной библиотекой и sqlite http://lackingrhoticity.blogspot.com/2009/06/python-standard-library-in-native.html).
Ответ 3
NaCL (снова) поддерживается с Go 1.3.
Смотрите заметки о выпуске Golang 1.3.
Устаревший ответ по адресу Go 1.2:
NaCl будет поддерживаться в Go 1.3, как сообщается:
Цитата из Перейти 1.3 Поддержка собственного клиента:
Go 1.3 будет включать поддержку для запуска программ командной строки в Собственный клиент, песочница для исполняемого файла на основе SIP на основе Google.
Цитата из Внутри игровой площадки Go Go Go Go:
Собственный клиент (или "NaCl" ) - технология, разработанная Google для обеспечения безопасного выполнения программ x86 внутри веб-браузеров.
(Эта специальная цепочка инструментов будет объединена с базой для Go 1.3. Чтобы узнать больше, прочитайте проектный документ. Если вы хотите играть с NaCl до этого момента, вы можете проверить вилку, которая имеет все изменения.)
Ответ 4
если вы загрузите инструментальную цепочку 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 использует С# и моно и экспортирует в NativeClient.