JavaScript platformu Node.js 22.0.0 mevcut

Ağ uygulamalarını JavaScript'te çalıştırmaya yönelik bir platform olan Node.js 22.0 piyasaya sürüldü. Node.js 22.0, uzun vadeli bir destek dalı olarak sınıflandırılıyor ancak bu durum ancak Ekim ayında stabilizasyondan sonra atanacak. Node.js 22.x, 30 Nisan 2027'ye kadar desteklenecektir. Node.js 20.x'in önceki LTS şubesinin bakımı Nisan 2026'ya kadar, önceki yılın son LTS şubesi 18.x'in bakımı ise Nisan 2025'e kadar sürecek. Node.js 21.x'in hazırlama şubesi 1 Haziran 2024'te kullanımdan kaldırılacak.

Ana iyileştirmeler:

  • V8 motoru, Chromium 12.4'te kullanılan 124 sürümüne güncellendi. V21 8 motorunu kullanan Node.js 11.8 şubesine kıyasla yapılan değişiklikler arasında şunlar belirtiliyor:
    • Çöp toplayıcı (Kotlin, PHP, Java vb.) kullanan programlama dillerinde yazılan programların WebAssembly'ye taşınmasını kolaylaştıran WasmGC uzantısı desteği. WasmGC, doğrusal olmayan bellek ayırmayı kullanabilen yeni türde yapılar ve diziler ekler.
    • Dizi benzeri, yinelenebilir veya eşzamansız yinelenebilir bir nesneden kopyalanan bir Array nesnesinin yeni bir örneğini eşzamansız olarak döndüren Array.fromAsync() yöntemi desteği.
    • .map, .filter, .find, .take, .drop, .forEach ve .reduce gibi yineleyici yöntemler için destek.
    • Bir değerler koleksiyonunu tanımlayan ve kesişim, birleşim, fark ve toplama gibi ortak küme işlemlerini uygulayan yöntemler sunan Set nesnesi desteği.
  • Maglev optimize eden JIT derleyicisi, yoğun olarak kullanılan JavaScript kodu için hızlı bir şekilde yüksek performanslı makine kodu oluşturmayı amaçlayan, varsayılan olarak etkindir. Maglev'in etkinleştirilmesi, uzun vadeli işlemler gerçekleştirmeyen kısa ömürlü CLI uygulamalarını önemli ölçüde hızlandırabilir; örneğin, Jetstrea testini tamamlama süresi %7.5, Hız Ölçer testi ise %5 oranında azalır.
  • HighWaterMark seçeneğinin değeri 16 KB'tan 65 KB'ye (kaydın ara belleğe alınacağı sınırı tanımlar) yükseltilerek akışlarla çalışma hızlandırıldı. Değişiklik, bellek tüketiminin artmasına neden olduğundan, sınırlı RAM ile çalışacak şekilde tasarlanan uygulamaların setDefaultHighWaterMark() çağrısı yoluyla eski değeri döndürmesi gerekebilir.
  • AbortSignal örneklemesini daha verimli hale getirerek fetch() ve test çalıştırıcı API'lerinin performansı iyileştirildi. Dosya sistemleriyle senkronize çalışmaya ilişkin API'lerin performansı iyileştirildi.
  • JavaScript ESM modüllerini (ECMAScript Modülleri) senkronize modda yüklemek için "require()" çağrısının kullanılmasına yönelik deneysel bir özellik sağlanmıştır. ESM modülleri tarayıcılarda kullanılır ve Node.js'ye özgü CommonJS modüllerinin yerine geçer. "Require()" aracılığıyla yükleme yapmak için ESM modülünün senkronize modda (en üst düzeyde bekleme olmadan) çalıştırılması gerekir. Destek, “--experimental-require-module” bayrağı aracılığıyla etkinleştirilir.
  • package.json dosyasında tanımlanan komut dosyalarını "--run" komutunu kullanarak çalıştırmaya yönelik deneysel yetenek eklendi "
  • İçe aktarılan dosya değiştiğinde işlemin yeniden başlatılmasını sağlayan bir izleme modunun uygulanmasıyla “node –watch” komutu kararlı kategoriye taşındı (örneğin, “node –watch index.js” yürütülürse, index.js değiştiğinde işlem otomatik olarak yeniden başlatılacaktır).
  • WebSocket API'nin yerel uygulaması stabilize edilerek WebSocket'in ek bağımlılıklar kurulmadan istemci modunda kullanılmasına olanak sağlandı.
  • Navigator API'si için kısmi destek eklendi.
  • Webstreams API, deflate-raw sıkıştırma formatı için destek ekledi.
  • Dosya yollarının desen eşleşmesi için node:fsmodule'a glob ve globSync işlevleri eklendi.
  • Yanlış yapılandırılmış IPv6 yığınlarının işlenmesi iyileştirildi. IPv6 işleminde sorun olması durumunda hızlı geri dönüş için Happy Eyeballs algoritması uygulandı.
  • Util API'si kullanımdan kaldırıldı.
  • Güncellenen bağımlılık sürümleri: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson'dan 3.8.0'a, ada 2.7.7 ve undici 6.6.0 .

Node.js platformu, hem web uygulamalarının sunucu tarafı desteği hem de standart istemci ve sunucu tarafı ağ programları oluşturmak için kullanılabilir. Node.js uygulamalarının işlevselliğini genişletmek için, aşağıdakileri uygulayanlar da dahil olmak üzere çok sayıda modül hazırlanmıştır: sunucular HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 istemcileri, çeşitli web çerçeveleriyle entegrasyon modülleri, WebSocket ve Ajax işleyicileri, DBMS (MySQL, PostgreSQL, SQLite, MongoDB) bağlantıları, şablon motorları, CSS motorları, kriptografik algoritmaların ve yetkilendirme sistemlerinin (OAuth) uygulamaları, XML ayrıştırıcıları.

Çok sayıda paralel isteği işlemek için Node.js, engellemeyen olay işlemeyi ve geri çağrı işleyicilerini tanımlamayı temel alan eşzamansız bir kod yürütme modeli kullanır. Bağlantıları çoğullamak için desteklenen yöntemler arasında epoll, kqueue, /dev/poll ve select bulunur. Bağlantı çoğullaması için, Unix sistemlerinde libev'e ve Windows'ta IOCP'ye bir eklenti olan libuv kitaplığı kullanılır. Libeio kütüphanesi bir iş parçacığı havuzu oluşturmak için kullanılır ve c-ares, DNS sorgularını engellemeyen bir modda gerçekleştirmek için entegre edilir. Engellemeye neden olan tüm sistem çağrıları iş parçacığı havuzunda yürütülür ve daha sonra sinyal işleyiciler gibi çalışmalarının sonucunu isimsiz bir kanaldan geri iletir.

JavaScript kodunun yürütülmesi, Google tarafından geliştirilen V8 motorunun kullanılmasıyla sağlanır (ayrıca Microsoft, Chakra-Core motoruyla Node.js'nin bir sürümünü geliştirmektedir). Node.js, özünde Perl AnyEvent, Ruby Event Machine, Python Twisted çerçeveleri ve Tcl'deki olayların uygulanmasına benzer, ancak Node.js'deki olay döngüsü geliştiriciden gizlenir ve bir web uygulamasındaki olay işlemeye benzer. tarayıcıda çalışıyor.

Kaynak: opennet.ru

Yorum ekle