Π’ JavaScript ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Bun Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° C Π΅Π·ΠΈΠΊ.

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Bun, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° Node.js ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π·Π° самостоятСлно изпълнСниС Π½Π° прилоТСния, написани Π½Π° JavaScript, JSX ΠΈ TypeScript, Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° СкспСримСнтална функционалност Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ изпълнСниС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, написани Π½Π° C. По-Ρ€Π°Π½ΠΎ, Π·Π° Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ° ниско Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ΄, бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ N-API Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΊΠΎΠ΄ Π² WebAssembly (WASM/WASI) Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΡΠ²Π°ΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈ налагашС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ограничСния. Π‘Π΅Π³Π° ΠΊΠΎΠ΄ Π½Π° C ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Π³Ρ€Π°ΠΆΠ΄Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² JavaScript ΠΈ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° TinyCC, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. import { cc } from "bun:ffi"; export const { symbols: { hello }, } = cc({ source: ".\/hello.c", symbols: { hello: { returns: "void", args: [], }, }, }); hello();

Π—Π° Ρ€Π°Π±ΠΎΡ‚Π° с C Π΅Π·ΠΈΠΊΠ° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° прослойка bun:ffi, която ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° изходния ΠΊΠΎΠ΄ Π² машинни инструкции, вмъква Π³ΠΎ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΈ осигурява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° конвСрсия Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript ΠΈ C. Заявява сС, Ρ‡Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ C ΠΊΠΎΠ΄ са свСдСни Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈ водят Π΄ΠΎ закъснСниС ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 2 наносСкунди Π·Π° всяко ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° външни C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ FFmpeg Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΊΡ€Π°Ρ‚ΠΊΠΈ Π²ΠΈΠ΄Π΅Π° – Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ отдСлянС Π½Π° Π½ΠΎΠ² процСс ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° всяко Π²ΠΈΠ΄Π΅ΠΎ, ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС Π½Π° тСстовото Π·Π°Π΄Π°Π½ΠΈΠ΅ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° bun:ffi Π΅ успяло Π΄Π° бъдС Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ с Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ.

ОсвСн Ρ‚ΠΎΠ²Π°, Π² вСрсия Bun 1.1.29 Π·Π° C ΠΊΠΎΠ΄ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° N-API (napi), Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° която написанитС Π½Π° C ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²Ρ€ΡŠΡ‰Π°Ρ‚ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π½ΠΈΠ·ΠΎΠ²Π΅, масиви ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅ΠΏΡ€Π°ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΈ стойности Π½Π° JavaScript, освСн Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅, спСцифични Π·Π° C, ΠΊΠ°Ρ‚ΠΎ int ΠΈ float. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° C Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ ΠΏΡ€ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° всякакви Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с C ABI, нСзависимо ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ°, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ са написани ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ (C++, Rust, Zig ΠΈ Ρ‚.Π½.), ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ JavaScript Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, прСдоставСни ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π±Π΅Π· ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Π΅Ρ‚Π°ΠΏ Π½Π° рСкомпилация. НапримСр, сСга Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡ‚ JavaScript систСмни API.

НапомнямС, Ρ‡Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Bun сС Ρ€Π°Π·Π²ΠΈΠ²Π° с фокус Π²ΡŠΡ€Ρ…Ρƒ осигуряванСто Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ прилоТСния, написани Π·Π° Node.js, ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° част ΠΎΡ‚ API Π½Π° Node.js. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструмСнти Π·Π° създаванС ΠΈ изпълнСниС Π½Π° прилоТСния Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ JavaScript ΠΈ TypeScript, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ runtime Π·Π° изпълнСниС Π½Π° JavaScript прилоТСния Π±Π΅Π· Π±Ρ€Π°ΡƒΠ·ΡŠΡ€, ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ (ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с NPM), инструмСнти Π·Π° изпълнСниС Π½Π° тСстовС ΠΈ систСма Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° самостоятСлни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. По производитСлност Bun Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡ€Π΅Π²Π°Ρ€Π²Π° Deno ΠΈ Node.js (Π² тСстовС Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° React, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Bun Π΅ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·Π° ΠΎΡ‚ Deno ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠ΅Ρ‚ ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·Π° ΠΎΡ‚ Node.js). ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° Bun Π΅ написан Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Zig ΠΈ C++ ΠΈ сС разпространява ΠΏΠΎΠ΄ лицСнзия MIT. Π—Π° изпълнСниС Π½Π° JavaScript сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JavaScript двигатСлят JavaScriptCore ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° WebKit с Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠ°Ρ‡ΠΎΠ²Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster