Π’ΠΈΡ ΠΎ ΠΈ Π½Π΅Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Bun β 1.1.30.
Bun Π΅ ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ECMAScript / JavaScript, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ nodejs. Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° Bun ΡΡΠΎΠΈ JavaScriptCore ΠΎΡ Apple, Π½ΠΎ ΡΠ°ΠΌΠΈΡΡ Bun, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΠΌΡ, Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° zig. Bun ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ nodejs ΠΏΠΎ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ECMAScript (ESM) ΠΈ CommonJS ΠΌΠΎΠ΄ΡΠ»ΠΈ. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ npm ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° typescript ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π½Π° typescript ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
ΠΠΎ Bun Π½Π΅ Π΅ ΠΏΡΠΎΡΡΠΎ "ΠΊΠΎΠΏΠΈΠ΅" Π½Π° nodejs ΠΏΠΎ ΡΠ²ΠΎΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠ²Π΅Π½ ΠΏΠΎ-Π±ΡΡΠ·Π° ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ΅Π΄ΠΈΡΠ° ΡΡΠ΅Π½Π°ΡΠΈΠΈ (Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΡΡΠ°ΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ) ΠΈ ΠΏΠΎΡΡΠΈ ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΈΡ Π² nodejs API, Bun ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΡΠΎΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ° β ΠΎΡ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΄ΠΎ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° HTML-Π΄Π΅ΡΠ΅Π²ΠΎ (HTMLRewriter), ΠΌΠΎΠ΄ΡΠ» Π·Π° ΡΡΠ°Π½ΡΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° typescript (Bun.Transpiler), Π²Π³ΡΠ°Π΄Π΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ sqlite, ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΡΠΈΠ²Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΡΡΠ΅Π· API Π½Π° C Π΅Π·ΠΈΠΊ β ffi, Π²Π³ΡΠ°Π΄Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Bun ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ C ΠΊΠΎΠ΄ ΡΡΠ΅Π· ΠΏΡΠΎΠ·ΡΠ°ΡΠ΅Π½ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° tcc:
hello.c: int hello() { return 42; } hello.js: import { cc } from "bun:ffi"; import source from ".\/hello.c" with { type: "file" }; const { symbols: { hello }, } = cc({ source, symbols: { hello: { args: [], returns: "int", }, }, }); console.log("ΠΠ°ΠΊΡΠ² Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ Π½Π° Π²ΡΠ΅Π»Π΅Π½Π°ΡΠ°?", hello()); $ bun hello.js ΠΠ°ΠΊΡΠ² Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ Π½Π° Π²ΡΠ΅Π»Π΅Π½Π°ΡΠ°? 42
Π ΡΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ Π΄ΡΡΠ³ΠΎΡΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°ΡΡΠ΅Ρ CSS, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° LightningCSS , ΠΊΠΎΠΉΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° ΡΠΎΠ²Π° Π΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ ΠΎΡ ΡΡΠ°ΡΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°ΡΠΎ rust Π½Π° zig, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° css ΠΈ typescript, ΠΈ ΡΠ΅Π³Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ° css ΡΠ°ΠΉΠ» Π² ΠΌΠΎΠ΄ΡΠ» typescript:
index.ts: import ".\/style.css"; import Component from ".\/MyComponent.tsx"; \/\/ β¦ ΠΎΡΡΠ°Π½Π°Π»Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ style.css: \/* ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ ΡΠ±ΠΎΡΠΊΠ°ΡΠ°: *\/ \/* style.css *\/ .hello { background: red; } \/* MyComponent.css *\/ .MyComponent { color: green; }
Bun ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ±Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π² Π΅Π΄ΠΈΠ½Π΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
