Oleh: Till Schneidereit
Hari ini kami berbesar hati untuk mengumumkan ketersediaan JavaScript SDK kami yang serba baharu. SDK ini ialah penulisan semula lengkap SDK JavaScript kami yang terdahulu, dengan keserasian ekosistem yang lebih baik, pematuhan piawai, keteguhan dan ciri baharu utama.
Keluaran ini juga menetapkan kami pada laluan ke arah peningkatan prestasi yang ketara dan penambahbaikan berterusan untuk keserasian dengan aplikasi JavaScript sedia ada.
Pada masa yang sama, kami mengekalkan tahap keserasian yang tinggi dengan SDK sebelumnya, jadi peningkatan haruslah mudah untuk kebanyakan pengguna.
Mari kita mendalami lebih terperinci tentang perkara baharu dan berbeza tentang keluaran ini.
Membina di atas asas teguh SpiderMonkey, StarlingMonkey dan ComponentizeJS
Di mana SDK sebelumnya dibina di atas enjin JavaScript QuickJS dan masa jalan Javy, SDK baharu dibina di atas enjin SpiderMonkey penyemak imbas Firefox, dan masa jalan StarlingMonkey dan penjana pengikatan ComponentizeJS WIT Bytecode Alliance.
Bersama-sama, projek ini menyediakan asas yang hebat untuk SDK kami:
-
SpiderMonkey ialah enjin JavaScript yang menggerakkan pelayar Firefox. Ia telah dibangunkan selama lebih 20 tahun, digunakan oleh berjuta-juta pengguna setiap hari, dan boleh menuntut tahap kematangan yang sebenarnya hanya enjin penyemak imbas yang besar boleh.
-
StarlingMonkey ialah masa jalan JavaScript yang telah kami bina bersama rakan kami di Fastly dan menyumbang kepada Bytecode Alliance. Ia dibina di atas SpiderMonkey dengan cara yang sangat modular, menjadikannya mudah untuk mengkonfigurasi seperti yang diperlukan untuk kes penggunaan kami. Yang penting, ia disertakan dengan pelaksanaan API web utama yang meningkatkan keserasian dengan ekosistem web dengan ketara, seperti API pengambilan untuk mengendalikan permintaan HTTP keluar, bahagian penting spesifikasi Pekerja Perkhidmatan untuk mengendalikan permintaan masuk, pemprosesan penstriman permintaan dan badan respons menggunakan aliran API StreamssetTimeout dan setInterval web.
- **ComponentizeJS **adalah alat yang membolehkan penggunaan antara muka luaran yang ditakrifkan dalam bahasa penerangan antara muka WIT dalam JavaScript. Itu menjadikannya mudah untuk menggunakan bukan sahaja antara muka yang disediakan oleh Spin sebagai tambahan kepada perkara yang disertakan dalam WASI, tetapi juga kefungsian yang dilaksanakan dalam komponen WebAssembly yang lain, termasuk yang ditulis dalam bahasa lain seperti Rust, Go, Python atau C/C .
Perubahan Radikal Di Bawah Hud, Tweak Kecil pada Permukaan
Seperti yang diterangkan di atas, pelaksanaan baharu sokongan JS kami hampir tidak berbeza daripada yang lama. Berita baiknya ialah, terima kasih kepada fakta bahawa JavaScript mempunyai spesifikasi yang sangat mantap, kami boleh melakukan semua ini tanpa mengambil risiko kerosakan halus kod sedia ada. Walaupun SDK baharu didatangkan dengan API yang diubah suai sedikit yang memerlukan sedikit perubahan yang sama semasa menaik taraf projek sedia ada, menggantikan sepenuhnya platform asas sebaliknya tidak mempunyai sebarang kesan keserasian.
Dari situ, mereka boleh mula memanfaatkan ciri baharu yang dibawa oleh SDK baharu. Terutama, kami mengubah suai API untuk memudahkan penyepaduan badan HTTP penstriman tanpa perlu menulis semula kod sedia ada sepenuhnya.
API berasaskan standard baharu
Kami melaksanakan sokongan untuk (versi yang diubah suai sedikit) API sedia ada di atas API pengambilan dan piawaian spesifikasi Pekerja Perkhidmatan. Pembangun boleh memilih untuk bekerja secara langsung dengan piawaian ini jika mereka mahu, memberikan mereka keserasian yang dipertingkatkan dengan ketara dengan web yang lebih luas dan ekosistem JS.
Standard juga membantu dalam cara yang sama sekali berbeza: memandangkan semua sokongan HTTP kini dibina menggunakan wasi-http, aplikasi yang dibina dengan SDK baharu yang tidak menggunakan API khusus Spin yang kami turut sokong boleh dijalankan dalam mana-mana persekitaran yang menyokong wasi-http, seperti Wasmtime dan Node.js (melalui JCO).
Hanya permulaan
Dengan keluaran ini, kami menumpukan pada mengubah platform asas untuk sokongan JavaScript kami dengan cara yang serasi drop-in, sementara sudah mendapat sokongan untuk standard web moden, kebolehkomposisian dengan komponen WebAssembly yang lain dan asas yang lebih teguh dan matang untuk masa hadapan pembangunan.
Melangkah ke hadapan, kami akan melihat peningkatan pesat dalam prestasi, keserasian dan ciri baharu. Sebagai imbasan, beberapa perkembangan paling menarik dalam kerja-kerja itu ialah:
-
Peningkatan prestasi: pasukan Fastly telah mengusahakan peningkatan prestasi yang ketara untuk pelaksanaan JavaScript dalam WebAssembly. Lelaran pertama kerja ini baru sahaja disepadukan ke dalam StarlingMonkey dan sudah membuat pelaksanaan beberapa kali lebih pantas, bergantung pada beban kerja yang tepat. Penyepaduan ini mendarat baru semalam dan oleh itu belum lagi disepadukan ke dalam SDK JS kami, tetapi akan segera.
-
Keserasian yang lebih baik dengan ekosistem web dan JavaScript: kami hampir mencapai peningkatan penting kepada StarlingMonkey: keupayaan untuk melaksanakan bahagian masa jalan itu sendiri dan API web yang disediakannya, dalam Rust dan bukannya C . Ini akan menjadikannya lebih mudah untuk mengikuti perkembangan terkini dalam ekosistem web dan menyediakan pelaksanaan API web yang lebih lengkap dan serasi yang penting untuk keserasian dengan aplikasi JavaScript sedia ada. Tidak semua kod JS menggunakan API berasaskan (web) standard: banyak kod di luar sana menggunakan API Node.js. Kami sedang berusaha untuk menyediakan lapisan keserasian untuk API ini, supaya pembangun boleh menggunakannya dalam aplikasi Spin mereka.
-
Sokongan untuk lebih banyak jenis pencetus: pada masa ini, JavaScript SDK baharu hanya menyokong pencetus HTTP. Kami sedang berusaha untuk menambah sokongan untuk lebih banyak jenis pencetus, seperti pencetus Cron dan Redis.
## Kekal Berhubung
Kami teruja untuk dapat berkongsi SDK baharu ini dengan anda dan kami menantikan maklum balas serta sumbangan anda sambil kami terus memperbaikinya. Sila sertai sembang dalam pelayan Fermyon Discord atau mesyuarat projek mingguan kami, dan ikuti kami di X (dahulunya Twitter) @fermyontech dan @spinframework!
Atas ialah kandungan terperinci Memperkenalkan SDK JavaScript Generasi Seterusnya kami. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!