توسعه دهندگان SQLite در حال توسعه پروژه ای برای پیاده سازی توانایی کامپایل کتابخانه در کد میانی WebAssembly هستند که قابلیت اجرا در یک مرورگر وب را دارد و برای سازماندهی کار با پایگاه داده از برنامه های کاربردی وب در جاوا اسکریپت مناسب است. کد پشتیبانی از WebAssembly به مخزن اصلی پروژه اضافه شده است. برخلاف WebSQL API که مبتنی بر SQLite است، WASM SQLite کاملاً از مرورگر جدا شده است و بر امنیت آن تأثیری نمیگذارد (گوگل تصمیم گرفت پشتیبانی از WebSQL در کروم را پس از اینکه چندین آسیبپذیری در SQLite از طریق WebSQL برای حمله به مرورگر مورد سوء استفاده قرار گرفت، قطع کرد) .
هدف این پروژه ارائه یک چارچوب جاوا اسکریپت کارآمد است که از نظر عملکرد با API SQLite یکسان باشد. به توسعه دهندگان وب یک رابط شی گرا سطح بالا برای کار با داده ها به سبک sql.js یا Node.js، یک اتصال به C API سطح پایین و یک API مبتنی بر مکانیسم Web Worker ارائه می شود، که اجازه می دهد تا شما برای ایجاد کنترل کننده های ناهمزمان که در رشته های جداگانه اجرا می شوند. برای پنهان کردن پیچیدگیهای سازماندهی کار با جریانها در بالای API مبتنی بر Web Worker، نسخهای از رابط برنامه بر اساس مکانیسم Promise نیز در حال توسعه است.
دادههایی که برنامههای کاربردی وب در نسخه WASM SQLite ذخیره میکنند را میتوان در جلسه جاری (از بین رفتن پس از بارگیری مجدد صفحه) محلی کرد یا در سمت مشتری ذخیره کرد (ذخیره بین جلسات). برای ذخیرهسازی دائمی، پشتیبانهایی برای قرار دادن دادهها در سیستم فایل محلی با استفاده از OPFS (Origin-Private FileSystem، پسوندی برای File System Access API، در حال حاضر فقط در مرورگرهای مبتنی بر WebKit و Chromium در دسترس است) و در ذخیرهسازی مرورگر محلی آماده شدهاند. در window.localStorage API و window.sessionStorage. هنگام استفاده از localStorage/sessionStorage، دادهها در فروشگاههای مربوطه در قالب کلید/مقدار منعکس میشوند و هنگام استفاده از OPFS، دو گزینه وجود دارد: شبیهسازی یک FS مجازی با استفاده از WASMFS و اجرای جداگانه sqlite3_vfs، ارائه یک لایه SQLite VFS بر اساس در OPFS
برای ساخت SQLite در نمای WASM، از کامپایلر Emscripten استفاده می شود (برای ساختن پسوند ext/wasm کافی است: "./configure —enable-all; make sqlite3.c; cd ext/wasm; make"). خروجی فایل های sqlite3.js و sqlite3.wasm است که می تواند در پروژه جاوا اسکریپت شما گنجانده شود (مثال HTML و جاوا اسکریپت).
منبع: opennet.ru