Warper؛ ورچوالایز لیست با Rust و WebAssembly
خلاصهٔ کاملتر
سایت پروژه Warper رو اینطور معرفی میکنه: یه کتابخونهٔ ورچوالایزیشن برای ریاکت با لایسنس MIT. ورچوالایزیشن یعنی بهجای رندر کردن کل ردیفهای یه لیست بلند، فقط اون چندتایی که تو دید کاربرن ساخته میشن. فرقش با بقیه اینه که بخش حساس محاسبات، مثل سرچ باینری و حساب کردن آفستها، با Rust نوشته و به WebAssembly کامپایل شده تا سرعتش به کد نیتیو نزدیک باشه.
قلب ماجرا درخت Fenwick ـه (یه ساختار داده که جمع تجمعی رو سریع نگه میداره). با کمکش، آفست هر ایندکس بدون پیمایش خطی به دست میاد و ارتفاع متغیر ردیفها هم با هزینهٔ O(log n) دوباره حساب میشه. کنارش از TypedArray و مموریپول از پیش تخصیصدادهشده استفاده شده تا موقع اسکرول گاربیج کالکتور وسط کار مکث ایجاد نکنه، و رندر هم با transform3d و contain: strict میافته رو دوش GPU.
نسخهٔ 7.2 که تازه اومده، مسیرهای داغ رو به TypedArray منتقل کرده، صف زمانبندی فریمها رو با بافر حلقوی ثابتزمان جایگزین کرده و سازگاری با Vite، Webpack، Rollup، esbuild، Parcel و Next.js رو بدون تنظیم اضافه اعلام کرده.
عددهایی که سایت میده رو باید بهعنوان بنچمارک خود سازنده خوند: 120 فریم بر ثانیه در برابر 90 برای react-window، 80 برای tanstack-virtual و 70 برای react-virtualized، رندر اولیهٔ زیر 10 میلیثانیه و 40 درصد مصرف حافظهٔ کمتر. حجم باندل هم حدود 8.7 کیلوبایت gzip اعلام شده که از react-window (حدود 6 کیلوبایت) بیشتر ولی از react-virtualized (حدود 25 کیلوبایت) کمتره. نصبش با npm install @itsmeadarsh/warper انجام میشه.
نکات کلیدی:
- هستهٔ محاسباتی با Rust نوشته و به WebAssembly کامپایل شده
- درخت Fenwick آفست ثابتزمان و ارتفاع متغیر با هزینهٔ O(log n) رو ممکن میکنه
- حجم باندل حدود 8.7 کیلوبایت gzip اعلام شده
- نسخهٔ 7.2 سازگاری با Vite، Webpack، Rollup، esbuild، Parcel و Next.js داره
- ادعای 120 فریم بر ثانیه در برابر 90 فریم react-window، بنچمارک خود پروژهست
- لایسنس MIT و نصب با پکیج @itsmeadarsh/warper




