JavaScripti platvormil Bun on lisatud tugi C-koodide kutsumiseks

Bun platvorm, mis on vĂ€lja töötatud Node.js alternatiivina ning mĂ”eldud rakenduste iseseisvaks kĂ€itamiseks JavaScripti, JSX-i ja TypeScripti keeltes, on rakendanud eksperimentaalse vĂ”imaluse C keeles kirjutatud töötlejate kompileerimiseks ja kĂ€itamiseks. Varasemalt nĂ”udis madala taseme koodi kutsumine kas N-API laienduste loomist vĂ”i koodi kompileerimist WebAssembly (WASM/WASI) formaati, mis keerukusi tekitas ja teatud piiranguid seadis. NĂŒĂŒd saab C keeles kirjutatud koodi otse JavaScripti sisse embedida ja kompileerida reaalajas TinyCC kompilaatoriga, samuti siduda dĂŒnaamiliselt ĂŒhendatavaid teeke. import { cc } from "bun:ffi"; export const { symbols: { hello }, } = cc({ source: "./hello.c", symbols: { hello: { returns: "void", args: [], }, }, }); hello();

C keele kasutamiseks on olemas bun:ffi vahetĂŒkki, mis kompileerib lĂ€htekoodi masina juhisteks, paigutab selle mĂ€lu ajal sisse ja tagab automaatse andmetĂŒĂŒpide konversiooni JavaScripti ja C vahel. MĂ€rgitakse, et C keele kompileeritud koodi kutsumisega seotud kulud on minimaalseteks vĂ€hendatud, mis toob kaasa umbes 2 nanosekundi viivituse igal vĂ€lisel C funktsioonide kutsumisel. NĂ€iteks on nĂ€idatud, kuidas saab otse FFmpeg teegiga lĂŒhikeste videote konverteerimiseks suhelda - kĂ”rvaldades sellised tegevused nagu eraldi protsessi kĂ€ivitamine ja iga video jaoks mĂ€lu eraldamine, Ă”nnestus bun:ffi kasutamisel testĂŒlesande koguaega kolmandiku vĂ”rra lĂŒhendada.

Lisaks on Bun 1.1.29 vĂ€ljaandes C keele koodile lisatud N-API (napi) tugi, mille abil saavad C keeles kirjutatud töötlejad tagastada JavaScriptis objekte, stringe, massiive ja muid mitte-primitivseid vÀÀrtusi, lisaks C keele tĂŒĂŒpidele nagu int ja float. C keeles töötlejate kutsumise mehhanism toimib ka igasuguste C ABI teekide dĂŒnaamilise laadimise korral, sĂ”ltumata sellest, millisest keeles need esmakordselt kirjutatud on (C++, Rust, Zig jne), mis vĂ”imaldab JavaScripti koodist nende teekidega pakutavate funktsioonide kutsumist ilma eraldi uuesti kompileerimise etapita. NĂ€iteks nĂŒĂŒd on vĂ”imalik JavaScriptist kutsuda sĂŒsteemi API-d.

Tulet meenutama, et projekt Bun areneb, silmas pidades ĂŒhilduvust serveri rakendustega, mis on kirjutatud Node.js jaoks, ning toetab suuremat osa Node.js API-st. Platvorm sisaldab komplekti tööriistu rakenduste loomiseks ja kĂ€itamiseks JavaScripti ning TypeScripti keeltes, samuti JavaScripti kĂ€itusaega, mis vĂ”imaldab JavaScripti rakenduste kĂ€itamist ilma brauserita, pakihaldurit (ĂŒhilduv NPM-iga), testimisinstrumente ja iseseisvate paketihaldussĂŒsteemide koostamisvahendeid. Suutlikkuse poolelt ĂŒletab Bun mĂ€rkimisvÀÀrselt Deno ja Node.js (testides, mis pĂ”hinevad React raamistikul, on Bun platvorm Deno's 2 korda kiirem ja Node.js'ist peaaegu 5 korda kiirem). Kood Bun on kirjutatud Zig ja C++ keeltes ning seda levitatakse MIT litsentsi alusel. JavaScripti kĂ€itamiseks kasutatakse JavaScripti mootorratast JavaScriptCore ja WebKiti projekti komponente koos tĂ€iendavate plaastritega.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster