לאחר כמעט 6 חודשים מאז המהדורה הקודמת, הגרסה החדשה של Wasmer 3.0 שוחררה, הגרסה הגדולה השלישית של הפרויקט שמתפתחת זמן ריצה לביצוע מודולי WebAssembly שניתן להשתמש בהם ליצירת אפליקציות אוניברסליות שיכולות לפעול על מערכות הפעלה שונות, כמו גם ביצוע קוד לא מהימן.
La היכולת להפעיל את אותה אפליקציה בפלטפורמות שונות הוא מסופק על ידי קומפילציה של הקוד לקוד ביניים WebAssembly ברמה נמוכה שיכול לפעול בכל מערכת הפעלה או להיות מוטמע בתוכנות בשפות תכנות אחרות. תוכניות הן מיכלים קלים שמריצים פסאודוקוד WebAssembly.
קונטיינרים אלו אינם קשורים למערכת ההפעלה ויכולים להכיל קוד שנכתב במקור בכל שפת תכנות.
כדי לתרגם את WebAssembly לקוד מכונת הפלטפורמה הנוכחי, אתה תומך בחיבור רכיבי בנייה אחוריים שונים (Singlepass, Cranelift, LLVM) ומנועים (באמצעות JIT או הפקת קוד מכונה). בקרת גישה ואינטראקציה עם המערכת מסופקים על ידי WASI (WebAssembly System Interface) API, המספק ממשקי תכנות לעבודה עם קבצים, שקעים ופונקציות אחרות המסופקות על ידי מערכת ההפעלה.
הפלטפורמה מאפשר לך להשיג ביצועי ביצוע של יישומים קרובים לאלו של בנייה מקורית.
החידושים העיקריים של Wasmer 3.0
בגרסה החדשה הזו של Wasmer 3.0, ה היכולת ליצור קבצי הפעלה מקוריים עבור כל פלטפורמה. הפקודה "wasmer create-exe» עוצב מחדש לחלוטין כדי להמיר קובץ קוד ביניים של WebAssembly לקובצי הפעלה עצמאיים עבור פלטפורמות Linux, Windows ו-macOS שניתן להפעיל ללא התקנת Wasmer.
חידוש נוסף שמוצג הוא שה יכולת להפעיל חבילות WAPM ממוקם בספריית wapm.io באמצעות הפקודה "wasmer run". לדוגמה, בצע את "wasmer run python/python» יוריד את חבילת python ממאגר wapm.io ויריץ אותה.
ה-API של Wasmer Rust עוצב מחדש לחלוטין, שינוי האופן שבו הוא מטפל בזיכרון ומספק את היכולת לאחסן אובייקטי Wasm בבטחה במבנה החנות.
כמו כן, מודגש בגרסה החדשה הזו של Wasmer 3.0 יישום משופר של WASI API (WebAssembly System Interface), בנוסף לתיקון בעיות ב-WASI API לעבודה עם מערכת הקבצים. הסוגים הפנימיים עוצבו מחדש באמצעות WAI (ממשקי WebAssembly), שיאפשרו יישום שורה של פונקציונליות חדשות בעתיד.
בנוסף לכך, המנועים גם פשטו, שכן במקום מנועים נפרדים ל-JIT, כריכה דינמית וסטטית (Universal, Dylib, StaticLib), מציע כעת מנוע נפוץ וטוען ושומר קוד אשר נשלט ברמת הגדרת הפרמטר.
כדי לנטרל חפצים, נעשה שימוש במסגרת rkyv, אשר מספקת פעולת העתקה אפס, כלומר אינה דורשת הקצאת זיכרון נוספת ומבצעת דה-סריאליזציה תוך שימוש רק במאגר שסופק בתחילה.
של שינויים אחרים הבולטים מהגרסה החדשה הזו:
- השימוש ב-rkyv הגביר את מהירות האתחול באופן משמעותי.
- המהדר Singlepass שופר כדי לתמוך בפונקציות רב-ערכים, לשפר את האמינות ולהוסיף תמיכה במסגרות לטיפול בחריגים.
- סט הרכיבים wasmer-js יושם כדי להריץ את Wasmer בדפדפן אינטרנט ולקיים איתו אינטראקציה מ-JavaScript באמצעות הספרייה wasm-bindgen.
- הוצע מבנה חדש. MemoryView המאפשר קריאה וכתיבה של נתונים באזור זיכרון ליניארי.
לבסוף, יש להזכיר כי התוכניות מופצות בצורה של מודולי WebAssembly רגילים, אותם ניתן לנהל באמצעות מנהל החבילות WAPM. Wasmer זמין גם כספרייה שניתן להשתמש בה להטמעת קוד WebAssembly בתוכניות Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ו-Java.
הקוד של הפרויקט כתוב ב-Rust ומופץ תחת רישיון MIT ותוכלו לבדוק עליו עוד, בקישור הבא.