FPC לאן

העבודה על FPC 2.4 נמצאת כבר שנתיים בפיתוח בערך. אחד הדברים שנראה בגרסה הזו היא התמיכה במערכות מרובי ליבות ומרובי חוטים, דבר שלא קיים היום.

מעניין אותי מה תהיה אז המהירות של FPC, אשר כיום לוקח לי 5 דקות להדר את לזרוס (על כל הקוד הנוסף של מצב דיבאג לכמעט כל דבר שנמצא בפרוייקט, כאשר בלעדיו זה לוקח 3 דקות). אם יקח לי 2.5 דקות להדר פרוייקט בסדר גודל של לזרוס (עם כל המידע הנוסף), אז זה אומר שאם פרוייקט כדוגמת KDE יומר לפסקל (אני יודע שאין סיכוי אמיתי כזה), יקח במקרה הרע כ 10 דקות להדר אותו במצב הנוכחי, אולי פחות מ 5 כאשר תהיה תמיכה בריבוי ליבות.

התמיכה בריבוי הליבות אומרת בין הייתר כי נקבל קוד בספריות ה RTL (אולי אפילו בגרסה מעט מאוחרת יותר) אשר יגרום לתוכנה שלנו מראש לעבוד עם ריבוי הליבות (כמובן בהתאם לתמיכת מערכת ההפעלה). מעניין איזה מהירות ויעילות זה יוסיף גם לתוכנה שאנחנו נבנה.

עוד תמיכה שתיכנס ל 2.4 היא מקשר (linker) פנימי של FPC, דבר שאף הוא יאיץ את הידור הקוד (כיום הצוואר בקבוק העיקרי של FPC ביוניקס הוא המקשר), ואולי אף יגרום לקוד להיות מהודר טוב יותר מאשר המקשר של gnu הקיים כיום.

שימו לב שהמקשר הפנימי של FPC קיים רק לWindows בגרסאות הקיימות, ולכן זה חידוש מאוד משמעותי.

אחד הפיתוחים שהכי חשובים עבורינו -> האנשים שמשתמשים בשפות שהם לא לטיניות, הוא הפיתוח של תמיכה בריבוי שפות, אשר כל הזמן מתקדם ומשתפר. למשל יש פיתוח של Florian (המפתח העיקרי ומי שהתחיל את הפיתוח של FPC) עבור תמיכה טבעית של UTF-16 בשפת פסקל, דבר שיוביל לטיפוס חדש בשם UnicodeString וזה בנוסף לתמיכה ב Widechar וב AnsiString (שתומכים בשפות מערכת) שקיימים כיום. כמו כן, בגלל התלות בסביבת עבודה, יהיו הבדלים בין Windows לבין יוניקס. למשל ביוניקס UnicodeString מצביע ל WideChar בעוד שב Windows הוא טיפוס משל עצמו אשר לא קשור לשום דבר אחר (עד כמה שאני מבין כרגע).

התמיכה ב UTF-16 אומרת גם ש RTL צריך לקבל כלי עזר לתמוך בקידוד הזה. כרגע גרסה 2.4 עד כמה שאני מבין, לא תתמוך ב UTF-16 מבחינת טיפוס חדש (אלא אם יותר אנשים יעזרו בבדיקות פיתוח ושימוש בגרסה הזו), אבל גרסאות מעל כן יתמכו ואולי תהיה גם גרסת Patch אשר תספק את התמיכה הזו.

כמובן שיש עוד הרבה מה לראות ולצפות מ FPC 2.4, אבל אלו השינויים הכי חשובים לדעתי שראוי לציין. בקיצור, יש למה לחכות🙂

8 מחשבות על “FPC לאן

  1. ארתיום

    העבודה על FPC 2.4 נמצאת כבר שנתיים בפיתוח בערך. אחד הדברים שנראה בגרסה הזו היא התמיכה במערכות מרובי ליבות ומרובי חוטים, דבר שלא קיים היום.

    הכוונה שלך זה יהיה כמו make -j 2?

    כאשר בנייה רצה במספר Jobs במקביל?

  2. ik_5 מאת

    אני מדבר גם על תמיכה בסגנון make -j2. הסביה שזה לא טוב לפסקל (בכלל) היא שבניגוד ל C, המהדר יותר לקחת את כל הקבצים שהתוכנה שלך עובדת איתם (יחידות ז"א) והיא יודעת להגיע גם אליהם לפי ההגדרות של ה PATH, והמיפוי שונה בהתאם לצורת השימוש השונות, כי יש לך הרבה יחידות שיכולות להשתמש באותן יחידות (בגלל namespace הן לא משפיעלות על מי שמשתמש ביחידה שמשתמשת בהם), וצריך לדעת למפות בצורה מסויימת קריאות לפונקציות. כרגע זה נעשה ב thread אחד בלבד. הכוונה היא שזה יתפרש על יותר מ thread אחד בסופו של דבר.

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

  3. ik_5 מאת

    קבצי ה PPU נועדו לתת בדיוק את המענה לזה. ויותר מזה, בניגוד לקבצי h מול קבצי C, כאן אשר הקוד משתנה, אז המהדר (שעובד עם checksum) יודע שהוא צריך ליצור קובץ חדש.

    המיפוי עצמו הוא לא כזה מסובך, הוא רק עובד בצורה שונה מהרעיון של include. ב include (ד"א בפסקל יש גם את זה), הוא פיזית שופך לך את המידע לאותו מקום, ככה שבC ו ++C בסופו של דבר יש לך קובץ אחד שמהודר, בפסקל הוא עובד עם המון קבצים שבסופו של דבר נכנסים לקובץ ריצה אחד (פרט לספריות משותפות).
    העניין הוא שעד היום ב FPC (למשל בדלפי זה מאז ומתמיד מרובה טרדים) היה תחת טרד אחד, והגיע הרצון אחרי שגרסה 2 יצאה, להעביר הכל לכמות גדולה יותר של טרדים, ואז נכנס הטרנד של ריבוי ליבות, והחליטו לתת תמיכה גם לזה. זה דורש פשוט גישה שונה מהפרוייקט (אם כי לא שיכתוב של הקוד שלו), וזו הסיבה להוספת התמיכה הזו.

  4. פינגבק: מגדל בבל או אפקט היוניקוד « לראות שונה

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s