close

Yerli Müşteri

Navigasyona git Aramaya git
Yerli Müşteri
Geliştirici Google
Yazılmış C ve C++
İşletim sistemi çapraz platform
İlk baskı 16 Eylül 2011 [1]
donanım platformu x86 , x86_64 , ARM [2] ve MIPS
En son sürüm
Durum Gelişmiş
Lisans değiştirilmiş BSD lisansı [d]
İnternet sitesi geliştirici.chrome.com/doc…

Yerel İstemci ( NaCl ), x86 , x86-64 , ARM ve MIPS platformlarında kod çalıştırmak için bir sanal alan teknolojisidir ve yerel kodu, işletim sisteminden bağımsız olarak, çalışmaya yakın bir hızda doğrudan tarayıcıda güvenli bir şekilde çalıştırmanıza olanak tanır. yerli kod Bu teknoloji ayrıca güvenli tarayıcı eklentileri , bir uygulamanın parçaları veya ZeroVM [en] gibi uygulamaların kendileri [4] oluşturmak için kullanılabilir .

Teknolojinin hazır olduğunu göstermek için 9 Aralık 2011'de Google, zengin grafiklere sahip bir oyun [5] tanıttı (oyun şu anda mevcut değil). NaCl, tam ekran özelliği ve fare etkileşimi ile yerel bir depolama sanal alanında çalışan OpenGL ES 2.0 aracılığıyla donanım hızlandırmalı 3B grafikler kullanır . [6] [7]

Portable Native Client ( İngilizce  Portable Native Client , kısaltılmış PNaCl ) , bu teknolojinin mimariden bağımsız bir sürümüdür. PNaCl uygulamaları, AOT derleme teknolojilerini kullanır . NaCl'nin (bir tarayıcıda yerel kod çalıştırma) temel fikri , birçok güvenlik sorunu olan ActiveX'te uygulandı. NaCl teknolojisi, bir sanal alan kullanarak bunu önler.

C veya C++ uygulamalarını doğrudan tarayıcıda ( yerel hıza yakın) çalışacak şekilde derlemenize izin veren, AOT derlemesini destekleyen ve JavaScript dilinin bir alt kümesi olan asm.js adlı bir NaCl alternatifi vardır , örn. Yerel desteği olmayan tarayıcılarla geriye dönük uyumludur. NaCl'ye başka bir alternatif (başlangıçta PNaCl'ye dayalı olsa da) WebAssembly'dir .

12 Ekim 2016'da, Chromium proje hata izleyicisinde , Google'ın Pepper ve Native Client üzerinde çalışan ekiplerin dağılmasından bahseden bir yorum [8] çıktı.

30 Mayıs 2017'de Google, WebAssembly lehine PNaCl'yi kullanımdan kaldırdıklarını duyurdu . [9]

Açıklama

Native Client, açık kaynaklı bir projedir . Bugüne kadar Quake [10] , XaoS [en] , Battle for Wesnoth , Doom , Lara Croft and the Guardian of Light , From Dust ve MAME ile Csound yazılımı ses sentezleme sistemi Native Client'a taşınmıştır . Teknoloji, Google Chrome tarayıcısında sürüm 14'ten [11] itibaren mevcuttur ve Portable Native Client'ın (PNaCl) resmi olarak tanıtıldığı sürüm 31'den itibaren varsayılan olarak etkinleştirilir. [12]

Teknolojinin bir ARM uygulaması Mart 2010'da yayınlandı. [13] x86-64, IA-32 ve MIPS platformları yerel olarak destekleniyordu.

PNaCl teknolojisini kullanarak çalıştırmak için uygulamanın mimariden bağımsız LLVM biçiminde bir bayt kodunda derlenmesi gerekir . [14] Bu şekilde oluşturulan yürütülebilir dosyalar PNaCl yürütülebilir (pexe) olarak adlandırılır. PNaCl derleme araçları .pexe dosyaları üretir; NaCl - .nexe. .nexe dosyaları 0x7F 'E' 'L' 'F' imzasına sahiptir (yani bunlar ELF dosyalarıdır). Chrome , pexe'yi çalıştırmak için mimariye özgü yürütülebilir dosyalara çevirir .

NaCl, x86-64 ve ARM platformlarında yazılım hatası tespiti ve korumalı alan koruması kullanır. [15] x86-32'deki uygulama, yeni bir sanal alan oluşturma yöntemi sunar. [16] Yerel İstemci sanal alanı, bellek segmentlerini x86 mimarisine ayarlar . Güvenli olmayan sistem çağrılarının çağrılmasını önlemek için bir kod doğrulayıcı da kullanılır. Native Client, çağrının korumasız kısmına atlamayı önlemek için tüm dolaylı atlamaların 32 baytlık hizalanmış bloklarda başlamasını gerektirir ve talimatların bu blokları terk etmesine izin verilmez. [16] Bu sınırlamalar nedeniyle, C veya C++ ile yazılmış kod, Native Client teknolojisi kullanılarak çalıştırılmak üzere özel bir şekilde yeniden derlenmelidir; bu, GNU araç zincirinin özel sürümleri, özellikle GNU Derleyici Koleksiyonu , GNU Binutils ve LLVM .

Yerel İstemci , standart C kitaplığı olarak Newlib'i kullanır , ancak GNU C Kitaplığının bir bağlantı noktası da mevcuttur. [17]

Biberler

Pepper API, Native Client için modüller oluşturmak için platformlar arası ücretsiz bir API'dir . Plugin Pepper API ( eng.  Pepper Plugin API , kısalt. PPAPI) , NPAPI tabanlı , ancak tamamen yeniden yazılmış Native Client teknolojisi tarafından korunan eklentiler için platformlar arası bir API'dir . Şu anda Chromium benzeri tarayıcılarda Adobe Flash'ın PPAPI sürümünü [18] ve dahili PDF görüntüleyiciyi [19] çalıştırmak için kullanılmaktadır .

PPAPI

12 Ağustos 2009'da, Pepper API eklentisinin [20] geliştirilmesiyle ilgili Pepper projesi , PPAPI'nin bu tür eklentileri daha taşınabilir ve güvenli hale getirmek için bir dizi NPAPI modifikasyonu olduğunu belirten Google Code sayfasında sunuldu [21] . Eklenti, işlem dışı başlatmayı kolayca uygulamak için oluşturuldu. İleriye dönük olarak, projenin amacı tamamen platformlar arası eklentiler oluşturmak için bir çerçeve sağlamaktı. Bu teknolojilerin uygulanması planlandı:

  • Tüm tarayıcılar için evrensel NPAPI semantiği .
  • Tarayıcının kendisinden ayrı bir işlemde çalıştırın.
  • Tarayıcı kullanarak işleme sürecinin standardizasyonu .
  • Standart olayların tanımı ve 2D fonksiyonların rasterleştirilmesi.
  • 3D grafiklerin temeli.
  • Kayıt eklentisi.

Daha sonra, PPAPI'nin kullanımı, oyun kumandaları ve WebSocket için desteğin uygulanmasına yardımcı oldu .

13 Mayıs 2010'dan itibaren Chromium , yeni eklenti modelini destekleyen tek tarayıcı oldu. [22] Mozilla Firefox , yalnızca Blink tarayıcı motoru için oluşturulan Chrome'daki uygulamasının dışında eksiksiz bir API spesifikasyonu olmadığı için Pepper'ı desteklemez . 2016 itibariyle Pepper, Chrome, Chromium ve Opera gibi Blink tabanlı tarayıcılarda desteklenmektedir .

Yerel İstemcideki Projeler

Doğrudan tarayıcıda Go ile deney yapılmasına izin vermek için bu teknolojiyi kullanan Wayback Machine'de 17 Kasım 2021'de Arşivlenen The Go Playground adlı bir site var .

Halkın tepkisi

Chad Austin , Native Client'ın yüksek performanslı web uygulamaları oluşturma yöntemini ( makine  kodundan yalnızca % 5 daha az performansla ) övdü ve istemci uygulamalarının dil programlama seçeneği sunarak (JavaScript hariç) gelişmesine izin verdi. [23]

Id Software'in ortak sahibi John Carmack , QuakeCon 2012'de Native Client'tan bahsetti :

Image
Tarayıcıda bir şey yapmanız gerekiyorsa, kullanıcı erişim düzeyi sanal alanından çıkmadan istediğinizi yapmanıza izin veren gerçekten akıllı bir x86 hack'i olarak başlayan Native Client çok daha ilgi çekicidir. Artık dinamik yeniden derleme var ve C veya C++'da yazdıklarınız, yüksek düzeyde optimize edilmiş makine kodu olmayan ancak makine koduna son derece yakın bir şeyde derleniyor. İşaretçilerle her türlü çılgın işlemi ve oyun geliştiricilerin donanım düzeyinde yapmaya alışkın olduğu diğer her şeyi yapabilirsiniz.
Carmak, John [24]
 

Mozilla başkan yardımcısı Jay Sullivan , Mozilla'nın tarayıcıda yerel kod çalıştırmayı planlamadığını söyledi  çünkü

Image
Bu yerel uygulamalar, bir web sayfasındaki kara kutulardır . […] HTML teknolojisine inanıyoruz ve enerjimizi buna harcayacağız.
Jay Sullivan [  25 ] _
 

Mozilla yazarı Christopher Blizzard , yerel kodun web'de asla kullanılmaması gerektiğini savunarak NaCl teknolojisini eleştirdi. Ayrıca NaCl'yi Microsoft'un DLL cehennemi noktasına ulaşan ActiveX teknolojisiyle karşılaştırdı . [dört]

Opera'nın teknik direktörü Håkon Wium Lie ( Norveççe:  Håkon Wium Lie ) buna inanıyor

Image
NaCl "web'den önceki o eski kötü günleri hedefliyor" gibi görünüyor […] Native Client'ın özü, karmaşıklık ve güvenlik sorunları ortaya çıkaracak ve web dikkat platformu.
Håkon Wium Lie ( Norveç  Håkon Wium Lie ) [4]
 

Mozilla CTO'su Brendan Eich , ECMAScript 6'nın tüm web uygulaması geliştirme ihtiyaçları için yeterli olduğunu söyledi. [26]

Ayrıca

Notlar

  1. Google'ın Yerel İstemcisi Chrome'da yayına giriyor - 2011.
  2. ARM - 2013'te Yerel İstemci desteği.
  3. https://developer.chrome.com/native-client/sdk/release-notes#chrome-pepper-49
  4. 1 2 3 Metz, Cade . Google Yerel İstemcisi: Geleceğin ağı mı yoksa geçmişin mi?  (İngilizce)  (12 Eylül 2011). 6 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  5. Khodakovsky, Konstantin . Yeni Google Chrome Teknolojisi Bastion'u Tarayıcıya Getiriyor  (13 Aralık 2011). 21 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  6. Stefansen, Christian . Oyunlar, uygulamalar ve çalışma zamanları Native Client'a geliyor  (  9 Aralık 2011). 19 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  7. Rosenblatt, Seth . Native Client, Chrome'u üst düzey oyun platformuna dönüştürüyor  (  9 Aralık 2011). 27 Nisan 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  8. Bugs.chromium.org  ._ _ bugs.chromium.org (12 Kasım 2016). Erişim tarihi: 7 Mart 2018. 18 Ağustos 2017 tarihinde kaynağından arşivlendi .
  9. Elveda PNaCl, Merhaba WebAssembly!  (eng.) , Chromium Blog  (30 Mayıs 2017). 30 Mayıs 2017 tarihinde kaynağından arşivlendi . 7 Mart 2018 alındı.
  10. Humphries, Matthew . Google, Yerel İstemcide çalışan Quake klonunu gösterir  (  13 Mayıs 2010). 21 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  11. Chen, Brad . Web'in sınırlarını genişleten yeni bir Kararlı Chrome sürümü  (  16 Eylül 2011). 20 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  12. Şehr, David . Taşınabilir Yerel İstemci: Hız, güvenlik ve taşınabilirliğin "zirvesi"  (  12 Kasım 2013). 13 Mayıs 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  13. Şehr, David . ARM'de Native Client desteği  (eng.)  (22 Ocak 2013). 27 Temmuz 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  14. Alan Donovan, Robert Muth, Brad Chen, David Sehr. PNaCl: Portable Native Client Yürütülebilir Dosyaları  (İngilizce) (22 Şubat 2010). 12 Mart 2016 tarihinde kaynağından arşivlendi .
  15. David Sehr, Robert Muth, Cliff L. Biffle, Victor Khimenko, Egor Pasko, Bennet Yee, Karl Schimpf, Brad Chen. Yazılım Arıza İzolasyonunu Çağdaş CPU Mimarilerine Uyarlama  ( 2010). Erişim tarihi: 6 Ağustos 2016. 24 Temmuz 2016 tarihinde kaynağından arşivlendi .
  16. 1 2 Bennet Yee, David Sehr, Greg Dardyk, Brad Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar. Native Client: A Sandbox for Portable, Güvenilmeyen x86 Native Code  (İngilizce) (2009). Erişim tarihi: 6 Ağustos 2016. 12 Eylül 2016 tarihinde kaynağından arşivlendi .
  17. Bina  ._ _ Erişim tarihi: 6 Ağustos 2016. 9 Kasım 2016 tarihinde kaynağından arşivlendi .
  18. Shuh, Justin . Daha güvenli, daha kararlı ve daha gösterişli Flash'a giden yol  (  8 Ağustos 2012). 29 Temmuz 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  19. Metz, Cade . Google, Chrome-PDF birleştirmesiyle Adobe'ye daha sıkı sarılıyor  (  18 Haziran 2010). 6 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  20. ppapi  ._ _ Erişim tarihi: 6 Ağustos 2016. 6 Ekim 2016 tarihinde kaynağından arşivlendi .
  21. ppapi -  Concepts.wiki . Erişim tarihi: 6 Ağustos 2016. 6 Ekim 2016 tarihinde kaynağından arşivlendi .
  22. Metz, Cade . Google, Chrome OS için yerel kodu ısıtıyor  (  13 Mayıs 2010). 17 Ocak 2019 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  23. Çad Austin. In Defence of Language Democracy (veya: Why the Browser Needs a Virtual Machine)  (İngilizce) (8 Ocak 2011). Erişim tarihi: 6 Ağustos 2016. 16 Ağustos 2016 tarihinde kaynağından arşivlendi .
  24. YouTube'da 2:36:18'de başlayan QuakeCon 2012 videosu (2 saat, 36 dakika, 18 saniyede başlar)
  25. Metz, Cade . Mozilla: Tarayıcımız yerel kodu çalıştırmayacak  (  24 Haziran 2010) . 26 Ağustos 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.
  26. Çırpın, Paul . JavaScript kurucusu, Google Native Client'ı reddeder, ECMAScript 6'yı zorlar  (  31 Mayıs 2012). 20 Eylül 2016 tarihinde kaynağından arşivlendi . Erişim tarihi: 6 Ağustos 2016.

Bağlantılar