לאחר שנה של פיתוח ו-26 גרסאות ניסיוניות, הוצגה מהדורה יציבה של ההטמעה הפתוחה של ה-API של Win32 - Wine 9.0, ששילבה יותר מ-7000 שינויים. ההישגים המרכזיים בגרסה החדשה כוללים הטמעת ארכיטקטורת WoW64 להפעלת תוכניות 32 סיביות בסביבת 64 סיביות, שילוב דרייברים לתמיכה ב-Wayland, תמיכה בארכיטקטורת ARM64, הטמעת ה-API של DirectMusic ותמיכה בכרטיסים חכמים.
אושר כי תוכנות 5336 (5266 לפני שנה, 5156 לפני שנתיים, 5049 לפני שלוש שנים) פועלות כראוי ב-Wine. Windows4397 תוכנות נוספות (4370 לפני שנה, 4312 לפני שנתיים, 4227 לפני שלוש שנים) פועלות מצוין עם הגדרות נוספות וקבצי DLL חיצוניים. 3943 תוכנות (3888 לפני שנה, 3813 לפני שנתיים, 3703 לפני שלוש שנים) סובלות מבעיות קלות שאינן מפריעות לפונקציונליות הבסיסית של היישומים.
חידושים מרכזיים ב-Wine 9.0:
- מנהל ההתקן winewayland.drv נוסף, המאפשר שימוש ב-Wine בסביבות מבוססות Wayland ללא שימוש ברכיבי XWayland או X11. פיתוח זה נועד לספק סביבת Wayland טהורה עם תמיכה בהשקה. Windows- יישומים שאינם דורשים התקנת חבילות הקשורות ל-X11, מה שמאפשר ביצועים ותגובתיות גבוהים יותר במשחקים על ידי ביטול שכבות מיותרות. שימוש בסביבת Wayland טהורה עבור Wine מבטל גם בעיות אבטחה הטמונות ב-X11 (לדוגמה, משחקי X11 לא מהימנים יכולים לרגל אחר יישומים אחרים מכיוון שפרוטוקול X11 מאפשר גישה לכל אירועי הקלט ולבצע החלפת הקשות מקשים).
הדרייבר מסומן כניסיוני ובפיתוח, אך עם זאת, יש לו כבר תמיכה בתכונות רבות, כגון ניהול חלונות, עבודה עם צגים מרובים, תמיכה בהגדלת הפלט במסכי צפיפות פיקסלים גבוהה (High-DPI), עבודה עם קואורדינטות יחסיות בעת מעקב אחר תנועת העכבר ותמיכה בממשק API הגרפי של Vulkan. כברירת מחדל, הדרייבר אינו פעיל וכדי להפעיל אותו יש להוסיף "wayland" לפרמטר הרישום "HKCU\Software\Wine\Drivers" ולוודא שמשתנה הסביבה DISPLAY לא מוגדר: wine reg.exe add HKCU\ \Software\\Wine\\Drivers /v Graphics /d x11,wayland
- כל המודולים הומרו לממשק הקריאה של מערכת NT, במקום לבצע שיחות ישירות בין שכבות PE ו-Unix, מה שמסמן את השלמת שנים רבות של עבודה להמרת כל קבצי ה-DLL לשימוש בפורמט קובץ ההפעלה PE (Portable Executable).
- פיתוח שכבת WoW64 (64 סיביות) נמשך Windows-עַל-Windows), מה שמאפשר לך להריץ 32 סיביות Windows- יישומים במערכות יוניקס של 64 סיביות. כל המודולים הניגשים לספריות יוניקס משתמשים במתרגמי קריאות מערכת של WoW64 (thunks), המאפשרים למודולים של 32 סיביות בפורמט PE לגשת לספריות יוניקס של 64 סיביות.
מצב ההפעלה החדש של WoW64 שופר, ומאפשר לקוד של 32 סיביות לפעול בתוך תהליך של 64 סיביות (במצב WoW64 הישן, יישומים של 32 סיביות רצו בתהליכי יוניקס של 32 סיביות). נוספה תמיכה בשימוש במצב WoW64 החדש בפלטפורמה. macOSמאחר שמצב WoW64 החדש מכיל כמה באגים קלים, כגון חוסר תמיכה ב-16 סיביות וביצועי OpenGL מופחתים עקב חוסר תמיכה בהרחבה ARB_buffer_storage, הוא עדיין לא מופעל כברירת מחדל ודורש בנייה עם האפשרות "--enable-archs=i386,x86_64" בסקריפט ההגדרות.
- נוספה היכולת להריץ קבצי הפעלה קיימים Windows במערכות עם ארכיטקטורת ARM64. כעת ניתן לבנות את Wine עבור ARM64EC (תואם לאמולציית ARM64) ABI, וניתן לטעון מודולי ARM64EC. מודולים אלה משמשים לפישוט הניוד של יישומים שנכתבו במקור עבור ארכיטקטורת x86_64 למערכות ARM64 על ידי מתן אפשרות להרצת מודולי קוד x86_64 בודדים בסביבת ARM64 באמצעות אמולטור. נוספה תמיכה בפורמט הקובץ ARM64X PE, המאפשר טעינת קובץ הפעלה יחיד הן בתהליכי x64/Arm64EC והן בתהליכי ARM64. יושם ממשק לאמולציה של מערכות x86 של 32 סיביות, אך ספריית האמולטור עדיין אינה כלולה בהפצת Wine הראשית (ניתן להשתמש באמולטור FEX חיצוני כדי להריץ קוד x86 בסביבת ARM64).
- תת מערכת גרפית
- מנהל ההתקן של PostScript עוצב מחדש כדי לתמוך בקבצי spool בפורמט Windows, אשר מאחסנים נתונים אודות עבודות הדפסה. קריאות ישירות למנהל ההתקן מסביבת יוניקס אינן נכללות.
- תמיכה במצב כהה נוספה לנושאים של WinRT. נוספה הגדרה ל-WineCfg כדי לאפשר עיצוב ממשק כהה.
- מנהל ההתקן עבור ה-API הגרפי של Vulkan הוסיף תמיכה במפרט Vulkan 1.3.272 (8.0 נתמך ב-Wine 1.3.237).
- הפונקציות של ספריית GdiPlus עברו אופטימיזציה, מה שמאפשר ביצועים גרפיים מוגברים.
- Direct3D
- הניתוח של זרם פקודות מרובה הליכי מושעה כאשר אין פקודות רינדור בעיבוד, מה שמאפשר להפחית את צריכת האנרגיה לרמה של עיבוד פתיל בודד בעת ביצוע תוכניות שאינן תופסות את כל רוחב הפס של זרם הפקודה.
- Direct3D 10 כולל תמיכה באפקטים נוספים.
- ביצע אופטימיזציות של ביצועים לקוד WineD3D ול-backend באמצעות ה-API הגרפי של Vulkan.
- קוד העיבוד מבוסס Vulkan API בודק כעת באילו יכולות המכשיר תומך ואומר לאפליקציה איזו רמת פונקציונליות Direct3D זמינה.
- הפונקציות D3DXFillTextureTX ו-D3DXFillCubeTextureTX יושמו.
- הקצה האחורי הקלאסי של OpenGL ARB shader הוסיף תמיכה להגדרת צללים באמצעות סיומת ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX ופונקציות דומות הוסיפו תמיכה בטעינת נתוני משתמש באמצעות ממשק ID3DXLoadUserData.
- קול ווידאו
- הוצע יישום ראשוני של DirectMusic API. נוספה תמיכה באוספים, כלים ודגימות סאונד בפורמט SoundFont. נוספה תמיכה באפקט הדופלר. בדיקות יושמו כדי לאמת את היישום הנכון בעת הפעלת ה-dmime sequencer וה-dmsynth MIDI סינתיסייזר.
- ספריית FluidSynth מובנית בממשק ה-API של DirectMusic לשימוש.
- הטמעת תמיכה בטעינת גופני צליל (SoundFont - פורמטים לסינתזה מבוססת דגימות המשמשים להשמעת קבצי MIDI) בפורמטים DLS1 ו-DLS2, כמו גם בפורמט SF2 המשמש ב- Linux.
- נוספה את היכולת לנגן תוכן MIDI באמצעות ספריית dmsynth, באמצעות סינתיסייזר התוכנה FluidSynth ו-DirectSound API עבור פלט אודיו.
- נוסף מפענח לווידאו בפורמט Indeo IV50 video codec.
- DirectShow
- רכיב ה-DMO (DirectX Media Object) עם מפענח פורמט WMV יושם (Windows וידאו מדיה).
- נוסף מסנן לכידת אודיו (DirectShow Audio Capture Filter).
- בנוסף לזרמי אודיו, MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) תומך כעת בזרמי וידאו וזרמי שירות.
- מסנן לפענוח וידאו בפורמט MPEG-1 (DirectShow MPEG-1 Video Decoder) יושם.
- התקני קלט
- DirectInput תומך במיפוי פעולה, המאפשר לך לקשור כפתורים בבקר משחק לפעולות ספציפיות במשחקים.
- אינטגרציה של שולחן העבודה
- כריכות יוצאו לסביבת המשתמש הראשית, מה שמאפשר לאפליקציות הפועלות תחת Wine להיקרא כמטפלי פרוטוקול בעת פתיחת כתובת URL (לדוגמה, הפעלת spotify.exe בעת פתיחת קישורים כמו "spotify:user:spotify:playlist:848218482355482821").
- יישם חילוץ של נתוני EDID (Extended Display Identification Data) עם מידע על הפרמטרים של הצג המחובר, כגון שם ודגם המכשיר.
- אפשר לסגור חלון שולחן עבודה שנפרס במצב מסך מלא באמצעות כפתור "צא משולחן העבודה" בתפריט "התחל".
- בִּנאוּם
- הורחבה התמיכה בעורכי שיטות קלט (IME). בוצעה עבודה כדי להבטיח תאימות עם מערכות מקוריות. Windows יישומי IME ושילוב משופר עם Linux IME
- יצירת מסדי נתונים מקומיים בפורמט locale.nls ממסד הנתונים של Unicode CLDR (Unicode Common Locale Data Repository) גרסה 44 ניתנה תמיכה עבור מקומות נוספים bew-ID, blo-BJ, csw-CA, כלומר-EE, mic-CA. , prg-PL נוספו , skr-PK, tyv-RU, vmw-MZ, xnr-IN ו-za-CN.
- הממשק תורגם לגיאורגית. תרגומים מלאים מסופקים ל-16 שפות, ותרגומים חלקיים ל-31 שפות.
- טבלאות התווים של Unicode עודכנו לגרסה סטנדרטית 15.1.0. מסד הנתונים של אזורי הזמן עודכן.
- ליבה (ממשקי ליבה Windows)
- כגרסה שהונפקה Windows מוגדר כברירת מחדל Windows 10.
- עבור קבצי הפעלה בפורמט PE, מיושמת תמיכה באקראי של מרחב כתובות (ASLR), אך הכתובות לטעינת קוד לזיכרון עדיין אינן אקראי לחלוטין.
- הוטמעה תמיכה בערימה מפוצלת חלשה (LFH, Low Fragmentation Heap), מה שהגדיל את הביצועים של פעולות הקצאת זיכרון.
- תמיכה בשמירת זיכרון (מציין מיקום) נוספה למנגנון הקצאת זיכרון וירטואלי, המאפשרת לאפליקציה לשמור אזור ספציפי של זיכרון וירטואלי לשימוש עתידי.
- מעמיסים של 64 סיביות (מטעין ומטעין מראש) של קבצי הפעלה וספריות מורכבים בפורמט PIE (קובצי הפעלה בלתי תלויים במיקום) כדי לפנות חלק ממרחב הכתובות של 32 סיביות.
- ניתוק מחסניות נכון עבור שיחות מערכת NT ושיחות התקשרות חוזרת של משתמשים.
- תכונות רשת
- מנוע MSHTML תומך במנגנון איסוף האשפה "מחזור איסוף".
- MSHTML הוסיפה תמיכה בעיבוד סינכרוני של בקשות XMLHttpRequest.
- jscript.dll מוסיף תמיכה לאובייקט WeakMap לעבודה עם אוסף של צמדי מפתח/ערך שבהם המפתח הוא אובייקט שיכול להיות מחובר אליו ערך שרירותי. הטמיע שיטות WeakMap.get(), WeakMap.delete(), WeakMap.clear() ו- WeakMap.has() .
- מנוע הדפדפן Gecko עודכן לגרסה 2.47.4.
- הוטמעה תמיכה בהודעות על שינויים במצב ממשק הרשת.
- קריפטוגרפיה ואבטחה
- תמיכה בכרטיסים חכמים נוספה לספריית Winscard.dll, המיושמת באמצעות ספריית המערכת PCSClite.
- BCrypt הוסיפה תמיכה בפרוטוקול החלפת מפתחות Diffie-Hellman.
- חבילת ה-Negotiate הוטמעה, ומספקת שכבה לשימוש בממשק SSPI (Security Support Provider Interface) כדי לגשת לספקי SSP (Security Support Provider).
- יישומים משובצים
- Wine Debugger (winedbg) משתמש בספריית Zydis כדי לפרק את הוראות המכונה X86.
- ממשק WineCfg עודכן כדי לתמוך בגרסאות ישנות יותר בפלטפורמות 64 סיביות. Windows (לפני XP), המאפשר לך להפעיל יישומים מדור קודם באמצעות מצב WoW64.
- כל היישומים הגרפיים המובנים מציגים כעת מידע שגיאה בתיבת דו-שיח נפרדת, במקום להציג אותם במסוף.
- תוכנת systeminfo מספקת תצוגה של מידע ממסד הנתונים של WMI (Windows מכשור ניהולי).
- נוספה אפליקציית klist להצגת כרטיסי Kerberos.
- אפליקציית taskkill מיישמת את היכולת להפסיק בכוח תהליכי ילדים.
- נוספה אפשרות "/machine" לכלי ההפעלה כדי לבחור את הארכיטקטורה המשמשת בעת הפעלת קובצי הפעלה היברידיים התומכים ב-x86 ו-ARM.
- רוב הפונקציונליות של תוכנית רשימת המשימות יושמה.
- נוסף יישום בסיסי של היישום findstr.
- כלי פיתוח
- לכלי WineDump יש את היכולת להציג את תוכן קבצי הרישום. Windows (פורמט REGF), וכן הצגת נתונים עבור כל הארכיטקטורות (x86/ARM64) הנתמכות בקבצי PE היברידיים.
- מהדר IDL הוסיף תמיכה בתכונות "composable", "default_overload", "deprecated" ו-"protected".
- הוסר libwine.so, שהוצא משימוש ב-Wine 6.0 וכבר מזמן לא נעשה בו שימוש ב-Wine. תוכניות בפורמט ELF שנבנו בגרסאות ישנות יותר של Wine (5.0 ומעלה) עם libwine.so דורשות בנייה מחדש כדי לפעול ב-Wine 9.0.
- ספריות מובנות ותלות חיצונית
- הספריות FluidSynth 2.3.3, Musl 1.2.3 (פונקציות מתמטיות בלבד) ו-Zydis 4.0.0 משולבות בחבילה.
- הרכיבים Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, גרסה חדשה של LibXslt ו-Zlib.1.1.38. מנוע Wine Mono עם הטמעת פלטפורמת NET עודכן לגרסה 1.3.
- מנהל ההתקן winewayland.drv משתמש בספריית הלקוחות של Wayland כתלות חיצונית, כמו גם בספריות xkbcommon ו-xkbregistry.
- כדי לתמוך בכרטיסים חכמים, נעשה שימוש בספריית PCSClite החיצונית (ב macOS (— PCSC).
- בניית קובצי PE בפלטפורמות שאינן ב-i386 דורשת כעת מהדר צולב עם תמיכה בהנחיות ".seh" כדי לטפל בחריגים.
מקור: OpenNet.ru
