ג'וליה, שפת התכנות חוצת הפלטפורמות מגיעה לגרסה 1.9 שלה

ג'וליה לאנג

ulia היא שפה דינאמית, ברמה גבוהה, בעלת ביצועים גבוהים עבור מחשוב טכני.

לפני מספר ימים הוכרזה שחרורה של ג'וליה 1.9, הגרסה החדשה של שפת התכנות . היא משלבת תכונות כמו ביצועים גבוהים, תמיכה בהקלדה דינמית וכלים משולבים לתכנות מקבילי. התחביר של ג'וליה דומה ל-MATLAB, עם כמה אלמנטים שאולים מ-Ruby ו-Lisp.

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

החדשות העיקריות של יוליה 1.9

גרסה חדשה זו של ג'וליה 1.9 כוללת מספר שיפורים בזמן ריצה/מהדר, כולל הפחתה משמעותית בזמן עד לביצוע ראשון. קומפילציה מוקדמת של חבילות שומרת כעת קוד מקורי בקובץ "pkgimage", כלומר קוד שנוצר במהלך קומפילציה מוקדמת לא יצטרך לעבור קומפילציה מחדש לאחר טעינת החבילה. ניתן להשבית את השימוש במצב pkgimages באמצעות האפשרות "--pkgimages=no".

שינוי בולט נוסף הוא שניתן כעת למטב קריאות עם ארגומנטים שאינם ספציפיים לסוג באמצעות פיצול איחוד לצורך הזרקה או פתרון סטטי, גם אם ישנם מספר סוגים שונים של מועמדים להגשה. זה יכול לשפר את הביצועים במצבים מסוימים שבהם סוגי אובייקטים אינם פתורים במלואם באופן סטטי, על ידי פתרון סטטי של האתרים של קריאות " @nospecialize-d" ומניעת קומפילציה מחדש.

מילות תווים בודדות תומכות כעת באותו תחביר כמו מילולי מחרוזת; התחביר הזה יכול לייצג רצפי UTF-8 לא חוקיים, כפי שמותר על ידי סוג Char.

בנוסף, בלינוקס ובחלונות, האפשרות " --threads=auto " מנסה כעת לקבוע את מספר המעבדים הזמין בהתבסס על זיקת המעבד, שהיא מסכה המוגדרת בדרך כלל בסביבות HPC וענן.

האפשרות " --math-mode=fast " בוטלה , ומומלץ להשתמש במקרו " @fastmath " במקום זאת , בעל סמנטיקה מוגדרת היטב. בנוסף, לפרמטר " --threads " יש כעת את הפורמט "auto | N[,auto|M]" , כאשר M מציין את מספר השלבים האינטראקטיביים שיש ליצור.

האפשרות " -heap-size-hint=<size> " נוספה כדי לקבוע את הסף שאחריו מתחיל איסוף האשפה הפעיל. ניתן לציין את הגודל בבייטים, קילובייטים (1000 KB), מגהבייטים (300 MB) או ג'יגהבייטים (1,5 GB).

המאקרו "@invoke" שהוצג בגרסה 1.7 מיוצא כעת וזמין לשימוש. בנוסף, הוא משתמש כעת בשיטת "Core.Typeof(x)" במקום " Any " כאשר ביאור הסוג עבור הארגומנט "x" מושמט. זה הכרחי כדי שסוגים המועברים כארגומנטים יעובדו כראוי.

יתר על כן, ל-`Threads.@spawn` יש כעת ארגומנט ראשון אופציונלי של `:default` או `:interactive`. משימה אינטראקטיבית דורשת תגובה בעלת השהייה נמוכה ומתוכננת להיות קצרה או לרוץ לעתים קרובות. משימות אינטראקטיביות יפעלו על גבי הליכים אינטראקטיביים אם צוין הדבר בעת הפעלת ג'וליה.

שינויים בולטים נוספים כוללים:

  • שלילת פונקציית הפרדיקט "!f" מחזירה כעת פונקציה מורכבת "(!) ∘ f" במקום פונקציה אנונימית.
  • פונקציות פיצול ממדים עובדות כעת על מספר ממדים: «כל פרוסה", "כל אחד" ו"כל אחד" להחזיר אובייקט"פרוסות» מה שמאפשר למשלוח לספק שיטות יעילות יותר.
  • המאקרו «@kwdef» נוסף ל-API הציבורי.
  • תוקנה בעיה בסדר הפעולות ב-"fld1".
  • המיון כעת תמיד יציב לאורך זמן (QuickSort מעוצב מחדש).
  • מספר ברירת המחדל של פתילי BLAS שווה כעת למספר פתילי מעבד בארכיטקטורת ARM ומחצית ממספר פתילי מעבד בארכיטקטורות אחרות.
  • Printf: הודעות שגיאה שעובדו מחדש עבור מחרוזות עם צורה שגויה לקריאות טובה יותר.
  • פרופיל: פונקציה חדשה "Profile.take_heap_snapshot(file)" הכותבת קובץ בפורמט ".heapsnapshot" מבוסס JSON הנתמך על ידי Chrome.
  • נוספה תמיכה במפרט Unicode 15.
  • כעת ניתן להשתמש בשילובים מקוננים של tuples ו-tuples בעלי שם כפרמטרי סוג.

לבסוף, אם אתם מעוניינים ללמוד עוד, תוכלו למצוא פרטים נוספים בקישור הבא.


הוסף כמקור מועדף בגוגל