Может ли программа Native Client (NaCl) записываться на языках, отличных от C или C ++?

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

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

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

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

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


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

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

Цитата из Руководства по поддержке родного клиента Go 1.3 :

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

Цитата из Inside Go Go Game Go Blog:

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

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

См. Go 1.3 NACL fork .

если вы загрузите инструментальную цепочку 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.