Në platformën JavaScript Bun është shtuar mbështetje për thirrjen e kodit në gjuhën C.

Në platformën Bun, e cila po zhvillohet si një alternativë ndaj Node.js dhe është e destinuar për ekzekutimin e ndarë të aplikacioneve të shkruara në gjuhët JavaScript, JSX dhe TypeScript, është implementuar një mundësi eksperimentale për kompilimin dhe ekzekutimin e trajtesave të shkruara në gjuhën C. Më parë, për të thirrur kodin me nivel të ulët, duhej ose të krijoheshin shtesa N-API, ose të kompiloheshin kodet në formatin WebAssembly (WASM/WASI), e cila e ndërlikonte zhvillimin dhe vendoste disa kufizime. Tani kodi në gjuhën C mund të inkorporohet direkt në JavaScript dhe të kompilojë në flakë duke përdorur kompilatorin TinyCC, si dhe të lidhë dynamikisht bibliotekat e lidhura. import { cc } from "bun:ffi"; export const { symbols: { hello }, } = cc({ source: ".\/hello.c", symbols: { hello: { returns: "void", args: [], }, }, }); hello();

Për të punuar me gjuhën C përdoret një ndërfaqe bun:ffi, e cila kompilon kodin burimor në udhëzime makinerie, e përfshin atë në memorje gjatë ekzekutimit dhe siguron konvertimin automatik të tipeve të të dhënave midis JavaScript dhe C. Vihet në dukje se shpenzimet për të thirrur kodin e komiluara në C janë minimizuar dhe çojnë në një vonesë në nivelin e rreth 2 nanosekondave për çdo thirrje të funksioneve të jashtme në C. Si një shembull, tregohet si mund të thyhen direkt bibliotekat FFmpeg për transformimin e videove të shkurtra — duke përjashtuar operacione të tilla si shpërndarja e një procesi të veçantë dhe alokimi i memorjes për çdo video, koha totale për ekzekutimin e detyrës testuese me përdorimin e bun:ffi është arritur të reduktohet me tre herë.

Për më tepër, në versionin Bun 1.1.29 për kodin në gjuhën C është shtuar mbështetje për N-API (napi), falë së cilës trajtesat e shkruara në gjuhën C mund të kthejnë objekte, vargje, lista dhe vlera të tjera jo primitive JavaScript, përveç tipeve karakteristike të gjuhës C, si int dhe float. Mekanizmi i thirrjes së trajtesave në gjuhën C vepron gjithashtu gjatë ngarkimit dinamik të çdo biblioteke me C ABI, pavarësisht nga gjuha me të cilën janë shkruar ato nga fillimi (C++, Rust, Zig, etj.), që lejon thirrjen nga kodi JavaScript të funksioneve të ofruara nga këto biblioteka pa një fazë të veçantë ri-kombinimi. Për shembull, tani mund të thirret nga JavaScript API-të sistemike.

Kujtojmë se projekti Bun po zhvillohet me qëllimin e sigurimit të pajtueshmërisë me aplikacionet serverike të shkruara për Node.js, dhe mbështet shumicën e API-ve të Node.js. Një grup mjetesh për krijimin dhe ekzekutimin e aplikacioneve në gjuhët JavaScript dhe TypeScript, si dhe një runtime për ekzekutimin e aplikacioneve JavaScript pa shfletues, një menaxher paketash (të kompatibilisë me NPM), mjete për ekzekutimin e testeve dhe një sistem ndërtimi për paketa të vetë-mjaftueshme, janë të përfshira në platformë. Në rendiment, Bun e tejkalon dukshëm Deno dhe Node.js (në testet bazuar në framework-un React, platforma Bun tejkalon Deno me 2 herë dhe gati 5 herë Node.js). Kodi i Bun është shkruar në gjuhët Zig dhe C++, dhe shpërndahet nën licencën MIT. Për ekzekutimin e JavaScript-it përdoret motori JavaScriptCore dhe komponentë nga projekti WebKit me patches të shtuar.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster