Google Native Client
Google Native Client (NaCl) – bul toqtatılǵan qorǵanıw texnologiyası bolıp, ol Intel x86, ARM yamasa MIPS nativ (jergilikli) kodınıń bir bólegin, yamasa kóshpeli orınlanatuǵın fayldı qorǵanıw ortalıǵında orınlatıwǵa múmkinshilik beredi. Ol paydalanıwshınıń operaciyalıq sistemasına ǵárezsiz túrde veb-brauzerden jergilikli kodtı qáwipsiz orınlatıwǵa múmkinshilik beredi, bul veb-qosımshalardıń derlik jergilikli tezlikte islewine alıp keledi hám bul Google kompaniyasınıń ChromeOS boyınsha jobaları menen sáykes keledi. Ol sonday-aq brauzer plaginlerin, basqa qosımshalardıń bóleklerin yamasa tolıq qosımshalardı[1] mısalı ZeroVM sıyaqlılardı qorǵaw ushın qollanılıwı múmkin[2].
Texnologiyanıń tayarlıǵın kórsetiw ushın, 2011-jıldıń 9-dekabr kúni Google óziniń bay hám processordı kóp talap etetuǵın grafikası menen belgili oyınlardıń bir neshe jańa tek Chrome ushın versiyalarınıń jetkilikli ekenligin járiyaladı, sonıń ishinde Bastion (házirgi waqıtta Chrome Web Storeda qollap-quwatlanbaydı). NaCl apparatlıq tezletilgen 3D grafikanı (OpenGL ES 2.0 arqalı), qorǵalǵan jergilikli fayl saqlawdı, dinamikalıq júklewdi, tolıq ekran rejimin hám tıshqanshanı uslap turıwdı ámelge asıradı. Sonday-aq, NaCl di qol qurılmalarında jetkilikli etiw jobaları da bar edi[3][4].
Portable Native Client (PNaCl) - bul arxitekturadan ǵárezsiz versiya. PNaCl qosımshaları aldın ala kompilyaciya qılınadı. Kópshilik jaǵdaylarda PNaCl di NaCl den artıq qollanıw usınıladı[5]. NaCl dıń ulıwma koncepciyası (veb-brauzerde jergilikli kodtı orınlaw) burın ActiveX te ámelge asırılǵan, ol házirge shekem qollanılıp atırǵan bolsa da, sistemaǵa tolıq kiriw múmkinshiligine iye (disk, yad, paydalanıwshı interfeysi, reestr hám t.b.). Native Client qorǵanıw ortalıǵın paydalanıw arqalı bul máseleni sheshedi.
Mozilla tárepinen usınılǵan alternativa - bul asm.js, ol da C yaki C++ tilinde jazılǵan qosımshalardıń brauzerde islewi ushın kompilyaciya qılınıwına múmkinshilik beredi hám aldın ala kompilyaciyanı qollap-quwatlaydı, biraq ol JavaScript tiń ishki toparı bolıp, onı tikkeley qollap-quwatlamaytuǵın brauzerler menen de sáykes keledi.
2016-jıldıń 12-oktyabr kúni Chromium máseleler trekerindegi pikirde Google kompaniyasınıń Pepper hám Native Client komandalarınıń qısqartılǵanı kórsetilgen[6]. 2017-jıldıń 30-may kúni Google PNaCl dıń WebAssembly paydasına eskirip qalǵanın járiyaladı. Dáslep Google PNaCl di 2018-jıldıń birinshi kvartalında alıp taslawdı jobalastırǵan bolsa da[7], keyin 2019-jıldıń ekinshi kvartalına keyinge qaldırǵan[8], ol 2022-jıldıń iyun ayında (Chrome Apps penen birge) alıp taslandı[9][10].
Sholıw
Native Client - bul Google tárepinen islep shıǵarılǵan ashıq kodlı joybar[11]. Quake[12], XaoS, Battle for Wesnoth[13], Doom[14], Lara Croft and the Guardian of Light[15], From Dust[16], hám MAME sıyaqlı oyınlar, sonday-aq Csound sesti qayta islew sisteması Native Client ke kóshirilgen. Native Client Google Chrome veb-brauzeriniń 14-versiyasınan baslap qoljetimli bolǵan hám 31-versiyasınan baslap ádepki boyınsha iske qosılǵan, bul waqıtta Portable Native Client (PNaCl, aytılıwı: pinnacle) shıǵarılǵan[17][18][19]. Native Client jáne veb-brauzerlerden basqa programmalıq támiynatlarda, mısalı Dæmon oyın qozǵaltqıshında, júklep alınǵan kodtı qáwipsiz orınlatıw ushın qollanılǵan[20].
ARM implementaciyası 2010-jıldıń mart ayında shıǵarıldı[21]. x86-64, IA-32 hám MIPS te qollap-quwatlanǵan.
PNaCl astında qolaylı túrde qosımshanı orınlatıw ushın, ol LLVM aralıq kórsetiw baytkodınıń arxitekturadan ǵárezsiz hám turaqlı bólegine kompilyaciya etiliwi kerek[22]. Bul orınlanatuǵın fayllar PNaCl orınlanatuǵın faylları (pexes) dep ataladı. PNaCl Qural-úskeneler toplamı .pexe faylların jaratadı; al NaCl Qural-úskeneler toplamı .nexe faylların jaratadı. .nexe fayllarınıń sıyqırlı sanı 0x7F 'E' 'L' 'F' bolıp, bul ELF bolıp tabıladı. Chrome brauzerinde, olar arxitekturaǵa baylanıslı orınlanatuǵın fayllarǵa awdarıladı, solay etip olar iske qosıla aladı.
NaCl x86-64 hám ARM arxitekturalarında programmalıq qáte anıqlaw hám izolyaciyalaw arqalı qorǵawlı ornalastırıwdı qollanadı[23]. Native Client'tiń x86-32 implementaciyası óziniń jańasha qorǵawlı ornalastırıw usılı menen ayrıqsha, ol x86 arxitekturasınıń siyrek qollanılatuǵın segmentaciya múmkinshiligin paydalanadı[24]. Native Client x86 segmentlerin qorǵawlı ornalastırılǵan kodtıń kire alatuǵın yad aralıǵın sheklew ushın ornatadı. Ol sistemalı shaqırıwlardı orınlaytuǵın qáwipsiz emes buyrıqlardı paydalanıwdıń aldın alıw ushın kod tekseriwshini qollanadı. Kodtıń qáwipsiz buyrıqtıń ortasına jasırılǵan qáwipsiz emes buyrıqqa sekiriwiniń aldın alıw ushın, Native Client barlıq tikkeley emes sekiriwlerdiń 32 baytqa dál keletuǵın bloklardıń basına sekiriwin talap etedi, hám buyrıqlardıń bul bloklardan shıǵıp ketiwine jol qoyılmaydı. Bul sheklewler sebepli, C hám C++ kodı Native Client astında islewi ushın qayta kompilyaciya etiliwi kerek, ol GNU qural-úskeneler toplamınıń arnawlı versiyaların, atap aytqanda GNU Compiler Collection (GCC), GNU Binutils hám LLVM'di usınadı.
Native Client BSD stilindegi licenziya astında tarqatıladı.
Native Client óziniń C kitapxanası sıpatında Newlib-ti qollanadı, biraq GNU C Library (GNU libc) portıda qoljetimli[25].
Pepper
NaCl natriy xloridti, yaǵnıy ádettegi as duzın ańlatadı; sóz oyını retinde «pepper» (burısh) ataması da qollanılǵan. Pepper API - bul Native Client modullerin jaratıw ushın platformaǵa ǵárezsiz, ashıq kodlı API[26]. Pepper Plugin API, yamasa PPAPI[27][28] - bul Native Client arqalı qáwipsizlendirilgen veb-brauzer plaginleri ushın platformaǵa ǵárezsiz API bolıp, dáslep Netscape-tiń NPAPI tiykarında islengen, keyin tolıǵı menen qayta jazılǵan. Ol Chromium hám Google Chromeda Adobe Flashtıń PPAPI versiyasın[29] hám qurılǵan PDF kóriw quralın iske qosıw ushın qollanılǵan[30].
PPAPI
2009-jıldıń 12-avgustında Google Code betinde jańa joybar - Pepper hám oǵan baylanıslı Pepper Plugin API (PPAPI)[31], tanıstırıldı, ol «plaginlerdi kóbirek kóshpeli hám qáwipsiz etiw ushın NPAPIge kirgizilgen ózgerisler toplamı»[32] dep sıpatlanǵan. Bul keńeytiw ayrıqsha procesten tıs plagin orınlawın ámelge asırıwdı ańsatlastırıw ushın jobalanǵan. Bunnan tısqarı, joybardıń maqseti plaginlerdi tolıq platformaǵa ǵárezsiz etiw ushın freymvork usınıw bolıp tabıladı. Qarastırılǵan máseleler qatarına tómendegiler kiredi:
- Brauzerler arasında NPAPI ushın birdey semantika.
- Renderer-brauzerden ayırım proceste orınlanıw.
- Brauzerdiń kompoziciyalaw procesin paydalanıp renderlewdi standartlastırıw.
- Standartlastırılǵan hádiyselerdi hám 2D rastrlaw funkciyaların anıqlaw.
- 3D grafikaǵa kiriwdi támiyinlewdiń dáslepki háreketi.
- Plagin reestri.
Pepper API sonday-aq Gamepadlardı (19-versiya) hám WebSocketlerdi (18-versiya) qollaydı[33].
2010-jıl 13-may kúnine [jańalanǵan] Googledıń ashıq kodlı brauzeri Chromium jańa brauzer plagin modelin qollanǵan jalǵız veb-brauzer edi[34]. 2020-jılǵa kelip, Pepper Chrome, Chromium hám Opera hám Microsoft Edge sıyaqlı Blink maket qozǵaltqıshına tiykarlanǵan brauzerler tárepinen qollanıladı.
2020-jıldıń avgust ayında Google PPAPI qollawı 2022-jıldıń iyun ayında Google Chrome hám Chromiumnan alıp taslanatuǵının járiyaladı[35].
PPAPI in Firefox
Firefox baǵdarlamashıları 2014-jılı Pepperdi qollamaytuǵının bildirdi, sebebi APIdiń Chromeǵa implementaciyasınan tısqarı tolıq specifikaciyası joq edi, ol ózi tek Blink maket qozǵaltqıshı menen paydalanıw ushın dúzilgen edi hám hújjetlestirilmegen Flash Player plaginine tán jeke APIları bar edi[36]. 2016-jıldıń oktyabr ayında Mozilla qayta qarap shıqqanın hám Firefoxtıń keleshek versiyalarına Pepper API hám PDFiumdı kirgiziw múmkinshiligin izertlep atırǵanın járiyaladı[37], biraq bunday basqıshlar ámelge asırılmadı. 2017-jıldıń iyul ayında Adobe Flashtı eskirgen dep járiyaladı hám onıń 2020-jıldıń aqırında qollanıwdan shıǵarılatuǵının bildirdi[38]. 2021-jıldıń yanvar ayına kelip, Adobe Flash Player, Google Chrome, Firefox, Safari hám Windows[39] Flashti óshiretuǵın yamasa tolıǵı menen alıp taslaytuǵın jańalanıwlardı aldı.
Qosımshalar
Bir veb-sayt[40] paydalanıwshılarǵa óz brauzerlerinen Go programmalastırıw tilin sınap kóriwge múmkinshilik beriw ushın serverde NaCLdı qollanǵan[41].
Veb-brauzerlerden tısqarı qollanılıwı
Ashıq kodlı Unvanquished oyını Dæmon oyın qozǵaltqıshında[42] Q3VM (Quake III virtual mashinası) ornına Native Clientti qollanadı[43][44]. Bunday oyın qozǵaltqıshında, Native Client qorǵawlı ortalıǵı oyın serverlerinen júklep alınǵan qálegen oyın kodın (modlardı) qáwipsiz orınlaw ushın qollanıladı. Native Client texnologiyasın qollanıw oyın islep shıǵıwshılarǵa virtual mashinada jumıs isleytuǵın oyınlar ushın C++ tilin qollanıwǵa, C++ kitapxanaların paydalanıwǵa, oyın menen qozǵaltqısh arasında kodtı bólisiwge hám Q3VMge qaraǵanda jaqsıraq ónimdarlıqqa erisiwge múmkinshilik beredi.
Qabıllaw
Brauzer baǵdarlamashılarınıń geypara toparları Native Client texnologiyasın qollap-quwatlaǵan bolsa, basqaları qollap-quwatlamadı.
Qollap-quwatlawshılar
IMVU kompaniyasınıń Chad Ostin Native Client texnologiyasınıń joqarı ónimli qosımshalardı qáwipsiz túrde internetke alıp keliw usılın (nativlik kodqa salıstırǵanda shama menen 5% joǵaltıw menen) maqtadı, sonday-aq qollanılatuǵın programmalastırıw tilin tańlaw múmkinshiligin beriw arqalı (JavaScript tilinen tısqarı) klient táreptegi qosımshalardıń rawajlanıwın tezlestiriwin atap ótti[45].
Id Software kompaniyasınıń Djon D. Karmak 2012-jılǵı QuakeCon konferenciyasında Native Client haqqında bılay dep maqtadı: «eger siz brauzer ishinde bir nárse islewińiz kerek bolsa, Native Client ádewir qızıqlı, sebebi ol dáslep paydalanıwshı rejiminde bulardıń hámmesin qızıqlı túrde izolyaciyalay alatuǵın shınında da ájayıp aqıllı x86 xak sıpatında baslanǵan edi. Házir bul dinamikalıq qayta kompilyaciya, biraq siz C yaki C++ tilinde programmalasańız hám ol tolıq nativlik kod ushın -O4 optimizaciya dárejeńiz bolmaytuǵın, biraq nativlik kodqa júdá jaqın bir nársege kompilyaciya boladı. Siz ózińizdiń barlıq jawız kórsetkish quwıwlarıńızdı hám metalǵa shekemgi oyın baǵdarlamashısı sıpatında islegińiz kelgen hár qanday nárseni isley alasız.»[46]
Qarsılaslar
Basqa IT qánigeleri bul izolyaciyalaw texnologiyasına ádewir sın kóz benen qaradı, sebebi onıń aytarlıqtay yaki mánili óz-ara islesiw máseleleri bar edi.
Mozilla kompaniyasınıń ónimler boyınsha vice-prezidenti Djey Sallivan, Mozilla kompaniyasınıń brauzer ishinde nativlik kodtı orınlatıw boyınsha hesh qanday jobası joq ekenin ayttı, sebebi «Bul nativlik qosımshalar veb-bette tek kishi qara qutılar bolıp tabıladı. [...] Biz shın mánisinde HTML ge isenemiz hám usı baǵdarǵa itibar qaratqımız keledi.»[47]
Mozilla kompaniyasınıń Kristofer Blizzard NaCl di sınǵa alıp, nativlik kod derek kodı tiykarında isleytuǵın veb sıyaqlı rawajlana almaydı dep pikir bildirdi. Ol jáne de NaCl di Microsoft kompaniyasınıń ActiveX texnologiyasına salıstırdı, ol DLL Hell máselesine ushıraǵan edi.
Opera kompaniyasınıń bas texnologiya xızmetkeri Xokon Vium Li, «NaCl 'vebten aldınǵı eski jaman kúnlerdi saǵınıp atırǵanday' kórinedi» dep esapladı, hám «Native Client jańa platformanı qurıw – yaki eski platformanı vebke kóshirip ótkeriw haqqında [...] bul quramalılıq hám qáwipsizlik máselelerin alıp keledi, hám veb platformasınan dıqqattı alıp taslaydı.»
Ekinshi áwlad
Google da islep shıǵılǵan izolyaciyalawdıń ekinshi áwladı – gVisor[48][49]. Ol Google Cloud te, anıǵıraǵı Google App Engine de NaCl dıń ornın basıwǵa arnalǵan. Google jáne de WebAssembly di alǵa ilgerletip atır[50].
Derekler
- ↑ «ZeroVM Architecture». 2014-jıl 8-fevral sánesinde túp nusqadan arxivlendi. Qaraldı: 2014-jıl 16-mart.
- ↑ «ZeroVM Architecture». 2014-jıl 8-fevral sánesinde túp nusqadan arxivlendi. Qaraldı: 2014-jıl 16-mart.
- ↑ Rosenblatt. «Native Client turns Chrome into high-end gaming platform». CNET (2011-jıl 9-dekabr). 2012-jıl 28-avgust sánesinde túp nusqadan arxivlendi. Qaraldı: 2011-jıl 9-dekabr.
- ↑ «Google Code Blog: Games, apps and runtimes come to Native Client». Googlecode.blogspot.com (2011-jıl 9-dekabr). Qaraldı: 2012-jıl 25-aprel.
- ↑ «NaCl and PNaCl».
- ↑ «Bugs.chromium.org» (2016-jıl 12-oktyabr). Qaraldı: 2016-jıl 12-oktyabr.
- ↑ "Goodbye PNaCl, Hello WebAssembly!". https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html.
- ↑ «WebAssembly Migration Guide - Google Chrome». developer.chrome.com. Qaraldı: 2018-jıl 20-dekabr.
- ↑ «Changes to the Chrome App Support Timeline». Chromium Blog (2020-jıl 10-avgust).
- ↑ Li. «Google delays deprecation of Chrome Apps on all platforms» (en-US). 9to5Google (2020-jıl 10-avgust). Qaraldı: 2021-jıl 2-oktyabr.
- ↑ «Google Native Client on Google Code». Qaraldı: 2012-jıl 25-aprel.
- ↑ davemichael. «GitHub - davemichael/NaCl-Quake: Quake for Native Client (based on the SDL Quake port)». GitHub (2020-jıl 3-oktyabr).
- ↑ «The Battle for Wesnoth».
- ↑ «Index of /».
- ↑ «Chrome Web Store - Lara Croft and the Guardian of Light». 2013-jıl 8-dekabr sánesinde túp nusqadan arxivlendi. Qaraldı: 2013-jıl 26-noyabr.
- ↑ «From Dust». 2016-jıl 12-mart sánesinde túp nusqadan arxivlendi. Qaraldı: 2016-jıl 24-fevral.
- ↑ Chen. «Native Client: A Technology for Running Native Code on the Web». Google-code-updates.blogspot.com (2008-jıl 8-dekabr). Qaraldı: 2012-jıl 25-aprel.
- ↑ «The Chromium Blog: Native Client Brings Sandboxed Native Code to Chrome Web Store Apps». Blog.chromium.org (2011-jıl 18-avgust). Qaraldı: 2012-jıl 25-aprel.
- ↑ «Google Code Blog: Portable Native Client: The "pinnacle" of speed, security, and portability». blog.chromium.org (2013-jıl 12-noyabr). Qaraldı: 2014-jıl 16-mart.
- ↑ «Unvanquished Continues Work On Its PNaCl Support». Phoronix (2014-jıl 15-mart). — „PNaCl sandboxes allow game-play developers to use modern C++ and C/C++ libraries directly within their virtual machines and will allow for better code sharing between the engine code and game logic. PNaCl is also reported to offer better performance than the original Quake III virtual machines.“. Qaraldı: 2024-jıl 3-dekabr.
- ↑ «Google's Native Client goes ARM and beyond». The H (2010-jıl 18-mart). Qaraldı: 2010-jıl 19-may.
- ↑ «PNaCl: Portable Native Client Executables». 2012-jıl 2-may sánesinde túp nusqadan arxivlendi. Qaraldı: 2012-jıl 25-aprel.
- ↑ Sehr. «Adapting Software Fault Isolation to Contemporary CPU Architectures». 19th USENIX Security Symposium (2010). Qaraldı: 2011-jıl 31-iyul.
- ↑ Yee. «Native Client: A Sandbox for Portable, Untrusted x86 Native Code». IEEE Symposium on Security and Privacy (Oakland'09) (2009). Qaraldı: 2011-jıl 31-iyul.
- ↑ «Native Client: Building». developer.chrome.com. Qaraldı: 2014-jıl 16-mart.
- ↑ «Technical Overview». 2014-jıl 28-fevral sánesinde túp nusqadan arxivlendi.
- ↑ «Pepper Plugin API project at». 2016-jıl 9-sentyabr sánesinde túp nusqadan arxivlendi. Qaraldı: 2012-jıl 25-aprel.
- ↑ «Chrome Source: Index of /trunk/src/ppapi». Src.chromium.org. Qaraldı: 2012-jıl 25-aprel.
- ↑ «The road to safer, more stable, and flashier Flash» (2012-jıl 8-avgust). Qaraldı: 2013-jıl 10-avgust.
- ↑ Metz. «Google hugs Adobe harder with Chrome-PDF merge». The Register (2010-jıl 18-iyun). Qaraldı: 2012-jıl 25-aprel.
- ↑ «Getting Started: Background and Basics – The Chromium Projects». Chromium.org. Qaraldı: 2012-jıl 25-aprel.
- ↑ «Pepper.wiki» (2012-jıl 24-fevral). Qaraldı: 2012-jıl 25-aprel.
- ↑ «Release Notes».
- ↑ Metz. «Google heats up native code for Chrome OS». Theregister.co.uk (2010-jıl 13-may). Qaraldı: 2012-jıl 25-aprel.
- ↑ Anthony Laforge. «Changes to the Chrome App Support Timeline». Chromium Blog (2020-jıl 10-avgust).
- ↑ Zbarsky. «Bug 729481 - Support the "Pepper" Plugin api». Qaraldı: 2016-jıl 15-aprel.
- ↑ Metz. «Project Mortar». Mozilla (2016-jıl 3-oktyabr). Qaraldı: 2016-jıl 30-oktyabr.
- ↑ «Flash & The Future of Interactive Content». Adobe Inc. (2017-jıl 25-iyul). 2017-jıl 2-dekabr sánesinde túp nusqadan arxivlendi. Qaraldı: 2023-jıl 31-iyul.
- ↑ Salter. «Goodbye again, Flash—Microsoft makes removal from Windows 10 mandatory» (en-us). Ars Technica (2021-jıl 4-may). Qaraldı: 2023-jıl 1-avgust.
- ↑ «The Go Playground».
- ↑ «Inside the Go Playground - The Go Blog». blog.golang.org. Qaraldı: 2016-jıl 27-avgust.
- ↑ Larabel. «Unvanquished Alpha 41 Released, Still Moving Towards NaCl VM Usage». Phoronix (2015-jıl 9-iyul). — „They've continued moving along with their open-source game and Daemon engine. […] their libRocket implementation has moved into the NaCl VM.“. Qaraldı: 2024-jıl 3-dekabr.
- ↑ «Unvanquished Continues Work On Its PNaCl Support». Phoronix (2014-jıl 15-mart). — „Open-source Unvanquished developers continue working on support for using Google's Portable Native Client (PNaCl) to replace Quake III QVMs.“. Qaraldı: 2024-jıl 3-dekabr.
- ↑ «Unvanquished Alpha 34 Brings Fixes, Still Being Ported To PNaCl». Phoronix (2014-jıl 8-dekabr). — „Under the hood, they remain hard at work on porting the game logic from QVMs to Portable Native Client (PNaCl).“. Qaraldı: 2024-jıl 3-dekabr.
- ↑ Austin. «Chad Austin: In Defense of Language Democracy (Or: Why the Browser Needs a Virtual Machine)». Chadaustin.me (2011-jıl 8-yanvar). Qaraldı: 2012-jıl 25-aprel.
- ↑ Carmack. «QuakeCon 2012». youtube.com (2012-jıl 3-avgust). Qaraldı: 2012-jıl 26-avgust.
- ↑ Metz. «Mozilla: Our browser will not run native code». The Register (2010-jıl 24-iyun). Qaraldı: 2012-jıl 25-aprel.
- ↑ «Beta release of PHP 7.2 in the Google App Engine standard environment | Hacker News».
- ↑ «Google/Gvisor». GitHub (2021-jıl 15-oktyabr).
- ↑ Avram. «Google Is to Remove Support for PNaCl» (en). InfoQ (2017-jıl 31-may). — „As a replacement, Google is now pushing WebAssembly.“. Qaraldı: 2020-jıl 1-avgust.
| |||||||||||||||||||