Π’ΠΈΡ ΠΎ ΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π½ΠΎΠ²Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ 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, ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΡΠΈΠ²Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΡΡΠ΅Π· C API β 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
