הכירו את הגרסה החדשה של Cosmopolitan 2.0, ספריית C סטנדרטית חוצת פלטפורמות

ההשקה של הגרסה החדשה של הפרויקט "קוסמופוליטן 2.0", אשר מפתחת ספריית C סטנדרטית ופורמט קובץ הפעלה אוניברסלי שניתן להשתמש בו להפצת תוכניות עבור מערכות הפעלה שונות ללא שימוש במתורגמנים ומכונות וירטואליות.

המכולה ליצירת קבצי הפעלה אוניברסליים מסתמך על שילוב של פלחים וכותרות ספציפיות ממערכות שונות מערכות הפעלה לקובץ אחד, המשלב מספר פורמטים שונים המשמשים ב-Unix, Windows ו-macOS.

להבטיח ש קובץ הפעלה יחיד לרוץ על מערכות חלונות ויוניקס, נעשה שימוש בטריק כדי לקודד קבצי Windows PE כסקריפט מעטפת, מנצל את העובדה שה-Thompson Shell אינו משתמש בסמן הסקריפט "#!".

כדי ליצור תוכניות הכוללות קבצים מרובים (השילוב של כל המשאבים לקובץ אחד), זה נתמך כדי ליצור קובץ הפעלה בצורה של ארכיון ZIP בעל מבנה מיוחד. קווי מתאר של הפורמט המוצע (דוגמה ליישום hello.com):

השיחה qemu-x86_64 ניתנת לניידות נוספת ומאפשרת לקוד הידור עבור ארכיטקטורת x86_64 לפעול על פלטפורמות שאינן x86, כגון לוחות Raspberry Pi ומכשירי אפל המצוידים במעבדי ARM. ניתן להשתמש בפרויקט גם ליצירת יישומים עצמאיים הפועלים ללא מערכת הפעלה (מתכת חשופה). ביישומים כאלה מצורף טוען אתחול לקובץ ההפעלה, והתוכנית פועלת כמערכת הפעלה הניתנת לאתחול.

החידושים העיקריים של Cosmopolitan 2.0

בגרסה החדשה הזו מודגש כי הסכימה לגישה למשאבים פנימיים שונתה בתוך מקובץ zip (בעת פתיחת קבצים, נעשה כעת שימוש בנתיבי /zip/… הרגילים במקום להשתמש בקידומת zip:..). באופן דומה, כדי לגשת לדיסקים ב-Windows, אפשר להשתמש בנתיבים כמו "/c/…" במקום "C:/…".

מוצע מעמיס APE חדש (למעשה Portable Executable), המגדיר את הפורמט של קבצי הפעלה אוניברסליים. טוען האתחול החדש משתמש ב-mmap כדי להקצות את התוכנית לזיכרון וכבר לא משנה את התוכן תוך כדי תנועה. במידת הצורך, ניתן להמיר את קובץ ההפעלה האוניברסלי לקובצי הפעלה רגילים הקשורים לפלטפורמות בודדות.

ב-Linux, אפשר להשתמש במודול ליבת binfmt_misc כדי להפעיל תוכניות APE. יצוין כי השימוש ב-binfmt_misc הוא שיטת האתחול המהירה ביותר, בנוסף ל יישום של את הפונקציונליות של קריאות מערכת pledge() ו- unveil(), שפותחו על ידי פרויקט OpenBSD, כמו גם מתן API לשימוש בנתוני שיחות בתוכניות C, C++, Python ו-Redbean, כמו גם כלי עזר מ-pose.com לבודד תהליכים שרירותיים.

אנחנו יכולים גם למצוא את זה עבור Linux, הביצועים של שיחות clock_gettime ו-gettimeofday הוגדלו עד 10 פעמים עקב שימוש במנגנון vDSO (Virtual Dynamic Shared Object), המאפשר העברת מטפל שיחות המערכת למרחב המשתמש ועקיפת הקשר המתג.

המבנה משתמש ב-Landlock Make, מהדורה של GNU Make עם בדיקת תלות מחמירה יותר ושימוש בקריאה למערכת Landlock כדי לבודד את התוכנית משאר המערכת ולשפר את יעילות האחסון במטמון. כאופציה נשמרות יכולת המהדר ו-GNU Make הרגיל.

מצד שני, זה גם מדגיש את הטמעה פונקציות עבור ריבוי הליכי שרשור: _spawn() ו-_join(), שהן כריכות אוניברסליות על ממשקי API ספציפיים למערכות הפעלה שונות. כמו כן, מתבצעת עבודה להטמעת תמיכה עבור שרשורי POSIX.

משאר השינויים הבולטים:

  • נוספה תמיכה באפשרויות "–ftrace" ו- "–strace" לקבצי הפעלה כדי לשלוח מידע על כל קריאות הפונקציות וקריאות המערכת ל-stderr.
  • נוספה תמיכה בקריאה למערכת closefrom() התואמת ל-Linux 5.9+, FreeBSD 8+ ו-OpenBSD.
  • פונקציות מתמטיות לעבודה עם מספרים מרוכבים הועברו מספריית Musl.
  • פונקציות מתמטיות רבות הואצו.
  • הפונקציה nointernet() מוצעת, אשר משביתה את יכולות הרשת.
  • נוספו פונקציות חדשות להוספה יעילה של מחרוזות: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf ו-vappendf.
  • נוספה גרסה מוגנת של משפחת הפונקציות kprintf(), המיועדת לעבודה עם הרשאות גבוהות.
  • ביצועים משופרים באופן משמעותי של יישומי SSL, SHA, curve25519 ו-RSA.

לבסוף, אם אתה מעוניין ללמוד יותר על זה, אתה צריך לדעת את קוד הפרויקטאו מופץ תחת רישיון ISC (גרסה פשוטה של ​​MIT/BSD).


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.