Octane؛ جانشین اینفرنو با همون API ریاکت
خلاصهٔ کاملتر
تو مخزن پروژه اومده که Octane یه فریمورک UI جاوااسکریپتیه و خودشو جانشین Inferno میدونه؛ همون کتابخانهٔ ریاکتمانندی که هدفش نزدیک موندن به سرعت کد دستی DOM بود. Octane همون هدف رو نگه داشته ولی همهچیز دورش رو مدرن کرده: تو با همون API آشنای ریاکت کد میزنی، اما یه کامپایلر قبل از اینکه اپ منتشر بشه ویرچوال دام، آبشار Suspense، دفترداری rules-of-hooks و آرایههای وابستگیِ دستساز رو از مسیر برمیداره.
جذابترین بخشش برای توسعهدهنده همین آرایهٔ وابستگیه: میتونی آرایه رو از useEffect، useMemo، useCallback و بقیه حذف کنی و کامپایلر خودش از روی متغیرهایی که کلوژر گرفته حسابش میکنه. آرایهٔ صریح همچنان حرف آخر رو میزنه و null یعنی «هر رندر». قانون hooks هم عملاً کنار رفته، چون هوکها بر اساس محل فراخوانی ردیابی میشن نه ترتیب اجرا — پس یه هوک میتونه داخل if یا بعد از یه return زودهنگام بشینه. تنها قانون باقیمونده اینه که هوک تو حلقهٔ ساده خطای کامپایل میده و باید از @for استفاده کنی.
سینتکس دو حالت داره: همون .tsx/.jsx استاندارد که بدون تنظیمات کار میکنه، یا .tsrx که دایرکتیوهای قالبی (@if، @for، @switch، @try) و شورتهند @{ … } رو اضافه میکنه تا کد آمادهسازی درست کنار خروجی بشینه. این دو تا رو میشه تو یه اپ قاطی کرد و آزادانه بینشون import زد:
export function Counter() @{
const [count, setCount] = useState(0);
<button onClick={() => setCount(count + 1)}>
{'Count: ' + count}
</button>
}Octane بهجای بازپیادهسازی مرورگر، خود پلتفرم رو به کار میگیره: رویدادهای واقعی delegated، فرمهای کنترلشده روی رویدادهای بومی (onInput برای هر ویرایش و onChange بومی موقع commit) و ref بهعنوان prop بدون forwardRef. ویرچوال دام هم اصلاً وجود نداره؛ کامپوننتها مثل ریاکت دوباره رندر میشن ولی مسیر رندر کامپایلشده و یه reconciler کلیددار مبتنی بر LIS سربار زمان اجرا رو کم نگه میداره.
سمت سرور هم SSR استریمی با flush خارج از ترتیب Suspense و هیدریشن بایتبهبایت داره و نقطههای ورودش عمداً آینهٔ ریاکته: octane/server برای رندر لحظهٔ درخواست و octane/static برای تولید ایستا. در عوض عمداً باریکتر از ریاکته و کامپوننت کلاسی، Server Components و سیستم رویداد سینتتیک نداره — که به گفتهٔ سازنده انتخابه، نه کمبود. پروژه فعلاً آلفاست، بیش از ۳۹۰۰ تست رفتاری داره و ساختهشدهٔ Dominic Gannaway، سازندهٔ Inferno که روی React، Lexical، Ripple و Svelte هم کار کرده.
نکات کلیدی:
- همون API ریاکت (هوکها، context، portal، Suspense) بدون ویرچوال دام
- کامپایلر آرایهٔ وابستگی رو از روی کلوژر حدس میزنه؛ آرایهٔ صریح همچنان اولویت داره
- قانون hooks برداشته شده چون هوکها با محل فراخوانی ردیابی میشن
- دیالکت اختیاری TSRX با @if/@for/@switch/@try و شورتهند @{ … }
- SSR استریمی و هیدریشن تأخیری؛ بدون کامپوننت کلاسی و Server Components
- فعلاً آلفا، با پشتیبانی از Vite، Rspack و Rsbuild و نیاز به Node.js 22 به بالا




