Platfòm nan Bun, devlope kòm yon altènativ a Node.js epi ki fèt pou egzekisyon otonòm aplikasyon ki ekri nan JavaScript, JSX ak TypeScript, gen yon kapasite eksperimantal pou konpile ak egzekite moun kap okipe yo ekri nan C. Anvan sa, rele kòd ba-nivo te mande swa kreye N-API ajoute-ons oswa konpile kòd la nan fòma WebAssembly (WASM/WASI), ki te konplike devlopman ak enpoze sèten restriksyon. Koulye a, kòd C ka dirèkteman entegre nan JavaScript ak konpile sou vole lè l sèvi avèk du TinyCC la, osi byen ke bibliyotèk lye dinamik. enpòte { cc } soti nan "bun:ffi"; ekspòte const { senbòl: { bonjou }, } = cc ({ sous: "./hello.c", senbòl: { bonjou: { retounen: "anile", args: [], }, }, }); bonjou();
Pou travay ak langaj C a, yo itilize kouch bun:ffi, ki konpile kòd sous nan enstriksyon machin, mete li nan memwa pandan ekzekisyon, epi li bay konvèsyon otomatik kalite done ant JavaScript ak C. Li te note ke sou tèt la lè w ap jwenn aksè nan kòd konpile C minimize ak mennen nan yon reta nan apeprè 2 nanosegond pou chak apèl nan fonksyon C ekstèn. Kòm yon egzanp, li montre ki jan ou ka dirèkteman jwenn aksè nan bibliyotèk FFmpeg konvèti videyo kout - pa elimine operasyon sa yo tankou forking yon pwosesis separe ak allocation memwa pou chak videyo, tan an total ekzekisyon nan travay la tès lè w ap itilize bun:ffi te redwi. pa twa fwa.
Anplis, nan liberasyon an nan Bun 1.1.29, sipò pou N-API (napi) te ajoute pou kòd C, gras a ki moun kap okipe yo ekri nan C ka retounen objè, fisèl, etalaj ak lòt valè JavaScript ki pa primitif, anplis de kalite yo nannan nan lang C a, tankou int ak float. Mekanis pou rele moun kap okipe yo nan lang C a travay tou lè wap chaje dinamik nenpòt bibliyotèk ak C ABI, kèlkeswa lang yo te ekri yo (C++, Rust, Zig, elatriye), ki pèmèt ou rele nan kòd JavaScript. fonksyon bibliyotèk sa yo bay san yo pa yon etap resanblaj separe. Pou egzanp, kounye a ou ka jwenn aksè nan API sistèm nan JavaScript.
Sonje byen, pwojè Bun a ap devlope ak yon je pou asire konpatibilite ak aplikasyon sèvè ekri pou Node.js, epi li sipòte pi fò nan API Node.js. Platfòm nan gen ladann yon seri zouti pou kreye ak kouri aplikasyon nan JavaScript ak TypeScript, osi byen ke yon ègzekutabl pou kouri aplikasyon JavaScript san yon navigatè, yon manadjè pake (konpatib NPM), zouti pou fè tès, ak yon sistèm pou konstwi pwòp tèt ou-. ki genyen pakè yo. An tèm de pèfòmans, Bun se notables devan Deno ak Node.js (nan tès ki baze sou fondasyon an React, platfòm la Bun se 2 fwa pi vit pase Deno ak prèske 5 fwa pi vit pase Node.js). Kòd Bun a ekri nan Zig ak C++, epi li distribye anba lisans MIT. Pou egzekite JavaScript, yo itilize motè JavaScriptCore JavaScript ak eleman pwojè WebKit ak plak adisyonèl.
Sous: opennet.ru
