ג'וליה (באנגלית: Julia) היא שפת תכנות עילית מהירה ודינמית, לתכנות כללי, טכני ומדעי. השפה מצטיינת במיוחד בתכנות המדעי ובביצוע מהיר של אנליזות נומריות, אולם מתאימה גם לכתיבה של תוכנות לקוח ושרת באפליקציות רשת, לתכנות מערכות Low level[14], לשימוש כשפת מִפרט לפני מימוש[15] ולשאר שימושים כלליים.[16][17][18][19]
לג'וליה תחביר דומה לשפות אחרות מאותו תחום (MATLAB, R, פייתון, SciLab וכולי), והיא מספקת מהדר JIT מתקדם (ולמעשה Just Ahead Of Time, כי הקוד כולו מהודר מראש),[20][21] מערכת טיפוסים דינמית עם פולימורפיזם פרמטרי, עיבוד מקבילי מבוזר ויכולת לתקשר ישירות עם פונקציות בפורטרן, C ופייתון. בנוסף לאלו יש לג'וליה ספריה רחבת היקף של פונקציות מתמטיות, ויכולת לעבוד במבנה של מחברת דרך דפדפן, באמצעות IJulia, שהוא שיתוף פעולה עם קהילת IPython. קהילת המפתחים של ג'וליה תורמת דרך חבילות חיצוניות, ואלה משולבות בסביבת העבודה באמצעות מנהל חבילות מובנה.
תוכנות בשפת ג'וליה יכולות לרוץ בצורה שדומה לשפות סקריפט מתפרשות, כפי שניתן לראות ב־Julia REPL, אך ניתן גם לקמפל אותן לחבילות מוכנות להתקנה או הרצה, ואף לא לכלול בהן את קוד המקור כאשר מעוניינים למנוע הפצה שלו.[22] ג'וליה עצמה אף היא אופציונלית בחבילות שכאלו, אך כאשר היא אינה נכללת היכולות מוגבלות יותר.
לג'וליה יש מנגנון של איסוף זבל בטכניקה של חישוב ביטויים מוקדם (Eager evaluation). הספריות שלה ברובן כתובות גם הן בג'וליה, ביניהן ספריות לאלגברה ליניארית, ליצירת מספרים אקראיים, ל-התמרת פורייה מהירה (FFT) ולטיפול בביטויים רגולריים. כמה מהספריות, כגון זו של FFT, נכללו בעבר כחלק מהשפה, אך הופרדו מאוחר יותר לחבילות עצמאיות,[23] ובנוסף לאלו קיימות גם ספריות ב-C ובפורטרן. תוכנות בג'וליה מאורגנות בדרך כלל סביב הגדרות הפונקציות, ובמסגרת קונספט ה-Multiple dispatch, רוב המשקל הוא על הצירופים השונים של סוגי משתנים.[24]
ישנם מספר כלי פיתוח שתומכים בתכנות בג'וליה, כמו Visual Studio Code שפותחו לו הרחבות שמוסיפות תמיכה בג'וליה, כמו גם יכולות ניפוי שגיאות ו-Linting. בנוסף ישנם כלי שילוב כגון Profiler, מנפה שגיאות, וחבילת Rebugger.jl שמאפשרת ניפוי שגיאות בהפעלות חוזרות.
היסטוריה
העבודה על הפרויקט החלה בשנת 2009 על ידי ג'ף בזאנסון, סטפן קרפינסקי, ויראל ב. שאה ואלן אדלמן, במטרה ליצור שפה חופשית, עילית ומהירה. ב-14 בפברואר 2012 יצרו אתר בו הוסבר מדוע יצרו את השפה,[25] ובאותה שנה יצאה לאור גרסת קוד פתוח של השפה.[2] בריאיון ב-2012 הסביר קרפינסקי את הבחירה בשם "ג'וליה": "למעשה, אין ממש סיבה. זה פשוט נראה כמו שם טוב." הוא סיפר כי בחר את השם בהמלצת חבר.[26]
רציונל
הודעה מטעם יוצרי השפה על הסיבות ליצירתה, צוין כי הם משתמשים כבדים של Matlab עם ניסיון במגוון שפות תכנות, ואינם מרוצים מהכלים הקיימים לתכנות מדעי. הכלים הקיימים, לדבריהם, טובים כל אחד בתחומו, אך כושלים בתחומים אחרים. הם רצו תוכנה חופשית, שתהיה מהירה כמו C ודינמית כמו Ruby. שתהיה לה ההומואיקוניות (התייחסות זהה לקוד ומידע) של Lisp, עם הסימנים המתמטיים שיש ב-Matlab. שתהיה שפת דבק כמו Shell, קלה ללימוד, אבל לא משעממת להאקרים מנוסים. ומעבר לכל אלו, שתהיה בעלת יכולת לעבודה אינטראקטיבית, אבל גם תאפשר עבודה בתצורת עריכה והרצה.[27]
תפוצה
מאז ההכרזה, משתמשים ממעל 10,000 חברות כבר הורידו את ג'וליה, עם יותר מ-29 מיליון הורדות ביולי 2021 (עליה של 87%–113% בשנה), והיא נמצאת בשימוש ביותר מ-1,500 אוניברסיטאות. הכנס האקדמי JuliaCon למפתחי ומשתמשי ג'וליה נערך מדי שנה מאז 2014, ומשתתפים בו מעל 28,000 צופים.
JuliaHub
העניין ההולך וגובר של חברות שונות בג'וליה הביא ביולי 2015 להקמתה של חברת Julia Computing[28] בידי ויראל ב. שאה, דיפאק וינצ'הי, אלן אדלמן, ג'ף בזאנסון, סטפן קרפינסקי וקינו פישר.[29] החברה שינתה את שמה ל־JuliaHub בנובמבר 2022. JuliaHub עוסקת במתן שירותים בתשלום בתחומי התמיכה, ההכשרה והייעוץ, בהפצת סביבת JuliaPRO שמותאמת לתכנות מדעי, ובאינטגרציה עם טכנולוגיות ענן.[30]
ב-2017 גייסה Julia Computing השקעת גרעין של 4.6 מיליון דולר מקרנות ההשקעות ג'נרל קטליסט ופאונדר קולקטיב,[31] ובאותו חודש קיבלה מענק של 910,000 דולר מקרן אלפרד פ. סלואן לתמיכה בפיתוחי קוד פתוח של ג'וליה, ובהם 160,000 דולר לקידום גיוון באוכלוסיית ג'וליה.[32] בדצמבר 2019 קיבלה מימון של 1.1 מיליון דולר מהממשל האמריקאי כדי "לפתח כלי למידת מכונה מבוסס רכיבים נוירוניים להפחתת צריכת האנרגיה הכוללת של מערכות חימום, אוורור ומיזוג בבניינים."[33]
ביולי 2021 הודיעה Julia Computing שגייסה 24 מיליון דולר בסבב A שהובילה חברת Dorilton Ventures,[34] שבבעלותה גם צוות פורמולה 1 וויליאמס רייסינג שאף הוא חבר ל־Julia Computing. לדבריו של המנהל המסחרי של וויליאמס: "ההשקעה בחברות שבונות טכנולוגיית ענן עילית מהווה מיקוד אסטרטגי לדורילטון, והפלטפורמה המגוונת של ג'וליה, עם יכולותיה המהפכניות בסימולציה ומידול רלוונטית מאוד לעסק שלנו. אנו מצפים להטמיע את Julia COmputing בספורט המתקדם בעולם מבחינה טכנולוגית."[35]
ביוני 2023 גייסה החברה, תחת שמה החדש "JuliaHub", השקעה אסטרטגית חדשה של 13 מיליון דולר בהובלת AE Industrial Partners HorizonX ("AEI HorizonX"), פלטפורמת הון סיכון שהוקמה בהשתתפות חברת בואינג ומשתמשת בעצמה בג'וליה.[36]
שימושים מרכזיים
מספר גורמים בעלי מוניטין משתמשים בג'וליה, החל מבית ההשקעות בלאקרוק, שמשתמש בה לניתוח סדרות עתיות, ועד חברת הביטוח הבריטית אביבה, שמשתמשת בג'וליה לחישוב סיכונים. ב-2015 השתמש בנק הפדרל ריזרב של ניו יורק בג'וליה כדי לייצר מודלים של הכלכלה האמריקאית, וציינו שם כי השפה גרמה להערכות מבוססות המודל להיות מהירות פי עשרה מהמימוש הקודם ב-MATLAB. בכנס Juliacon של 2017[37] הכריזו ג'פרי רג'יר, קינו פישר ואחרים[38] שפרויקט סלסטה ליצירת קטלוגים אסטרונומיים השתמש בג'וליה כדי להשיג ביצועי שיא של 1.54 פטהפלופים תוך שימוש ב-1.3 מיליון תהליכונים[39] על 9,300 צמתי Knights Landing של מחשב העל Cray XC40, שהיה אז השישי ברשימת המחשבים המהירים בעולם.[40] בכך הצטרפה ג'וליה לרשימת השפות העיליות בהן נעשו חישובים ברמת הפטהפלופים, שכללה עד כה רק את C, C++ ופורטרן.
שלושה מהיוצרים של ג'וליה קיבלו ב-2019 את פרס ג. ה. וילקינסון לתוכנה נומרית (שניתן כל ארבע שנים) על "יצירת ג'וליה, סביבה חדשנית ליצירת כלים עתירי ביצועים שמאפשרים ניתוח ופתרון של בעיות במחשוב מדעי."[41] בנוסף, אלן אדלמן, פרופסור למתמטיקה יישומית ב-MIT, נבחר לקבל את פרס סידני פרנבאך של חברת המחשוב של ה-IEEE ב-2019 על "פריצות דרך ייחודיות במחשוב עתיר ביצועים, באלגברה ליניארית ובמחשוב מדעי, ועל תרומות לשפת התכנות ג'וליה."[42]
Julia Computing ו-Nvidia הודיעו על זמינות של ג'וליה כמיכל מוכן מראש ברשימת המיכלים של ענן ה-GPU של NVIDIA (שמוכר בשם NGC).[43] כאשר NVIDIA, כחלק מההצעה להשתמש בג'וליה על x86 ועל ARM מציינת "ג'וליה מציעה חבילה של אקוסיסטם מפורט למחשוב עתיר ביצועים, כולל למידת מכונה, מדעי המידע, תחומים מדעיים שונים וויזואליזציה."[44]
מאז 2014[61] מקיימת הקהילה של ג'וליה כנס שנתי המכוון למפתחים ומשתמשים. Juliacon הראשון התקיים בשיקגו, ומאז הכנס מתקיים מדי שנה. הכנס התארח במספר מקומות לאורך קיומו, בהם MIT[62] ואוניברסיטת מרילנד בבאלטימור,[63] ומספר המשתתפים בו עלה מעשרות בודדות בתחילתו לעשרות אלפים משתתפים בפועל בתחילת העשור השני של המאה ה-21.[64][65].
שנה
נרשמים
משתתפים בפועל (בכנסי האונליין: מספר צופים בהרצאות)
שפת ג'וליה הפכה לפרויקט ממומן על ידי המלכ"ר NumFOCUS (שמממן גם פרויקטים כמו NumPy, pandas ו-Ipython) ב-2014, כדי להבטיח את השרידות של הפרויקט לטווח ארוך.[89] באפריל 2024 התמנה לוגן קילפטריק, לשעבר מנהל קהילת ג'וליה, לנשיא NumFocus.[88]
ד"ר ג'רמי קפנר ממעבדת לינקולן ב-MIT היה המממן המייסד של פרויקט ג'וליה בימיו הראשונים. בנוסף, תרומות מקרן גורדון ובטי מור, מקרן אלפרד פ. סלואן, מאינטל ומסוכנויות שונות כגון NSF, DARPA, המכונים הלאומיים לבריאות, נאס"א ו-FAA סייעו רבות בהתפתחות הפרויקט.[90] מענקי המחקר של מוזילה, שמייצרת את הדפדפן פיירפוקס, מימנו ב-2019 חבר בצוות הרשמי של ג'וליה לפרויקט "מביאים את ג'וליה לדפדפן".[91][92][93][94][95] ג'וליה נתמכת גם על ידי תורמים פרטיים בגיטהאב.[96]
Multiple Dispatch (ידוע ב-Lisp כ"מולטי-מתודות") היא הכללה של Single Dispatch – המנגנון הפולימורפי על בסיס תורשה שמשמש בשפות מונחות אובייקטים. בג'וליה כל הטיפוסים הקונקרטיים הם תת-טיפוסים של טיפוסים מופשטים, ובצורה ישירה או עקיפה הם גם תת-טיפוסים של הטיפוס Any, שנמצא בראש היררכיית הטיפוסים. בניגוד לשפות אחרות, לטיפוסים קונקרטיים בג'וליה לא יכולים להיות תת-טיפוסים, ולצורך זה משתמשים בקומפוזיציה (ראו תחת ירושה (תכנות)).
ג'וליה הושפעה מאוד מניבים שונים של Common Lisp, ויש לה הרבה מן המשותף עם שפת Dylan, גם היא שפה דינמית מבוססת Multiple dispatch, ועם Fortress שגם היא שפה לתכנות נומרי. בג'וליה, Dylan ו-Fortress, היכולת להרחיב היא ברירת מחדל, והפונקציות המובנות במערכת כולן גנריות וניתנות להרחבה. ב-Dylan ה-Multiple Dispatch הוא יסודי כמו בג'וליה: כל הפונקציות שמגדיר המשתמש ואפילו פונקציות בסיסיות כמו + הן גנריות. ועם זאת, מערכת הטיפוסים ב-Dylan לא תומכת באופן מלא בטיפוסים פרמטריים, שאופייניים יותר לשפות מהענף של ML (כמו OCAML ו-F#). ב-Common Lisp, מערכת האובייקטים (CLOS) לא מאפשרת Dispatch על טיפוסים פרמטריים, ונדרש פרוטוקול הרחבה לשפה לשם כך. Fortress מאפשרת Multiple dispatch על טיפוסים פרמטריים, אך בניגוד לג'וליה הטיפוסים שלה סטטיים ולא דינמיים, ויש לה שלבים נפרדים לקומפילציה ולהרצה. הטבלה הבאה מספקת השוואה בין השפות:
כברירת מחדל, סביבת ההרצה של ג'וליה צריכה להיות מותקנת כאשר מריצים קוד שנכתב בשפה. בנוסף, ניתן ליצור גם קובץ הרצה עצמאי שאינו דורש את קוד המקור, בעזרת PackageCompiler.jl.[98]
המאקרואים התחביריים של ג'וליה, שמשמשים למטא-תכנות, דומים לאלו של Lisp בכך שהם חזקים יותר ממאקרואים של החלפת טקסט שאופייניים לקדם-מעבדים של שפות אחרות כמו C, בעיקר כי הם עובדים ברמת עצי תחביר מופשטים (Abstract Syntax Tree). מערכת המאקרואים של ג'וליה היא הגיינית, אך גם תומכת בלכידה מכוונת כשנדרש (כמו במקרה של מאקרואים אנאפוריים) באמצעות מבנהesc.
חישוב מקבילי
ג'וליה אינה כופה על המשתמש סגנון ספציפי לחישוב מקבילי, ובמקום זאת מספקת אבני בניין מרכזיות לחישוב מקבילי. אלו נותנות את הגמישות הנדרשת לשימוש בסגנונות השונים של מיקבול, כמו גם יכולת לייצר סגנונות חדשים. הדוגמה הבאה מראה לולאת for מקבילית שמתנקזת לבסוף ל-reduction:
ההפצה הרשמית של ג'וליה כוללת לולאת קריאה-פיענוח-הדפסה בשורת פקודה אינטראקטיבית (REPL),[99] עם היסטוריה, השלמת טאבים ומצבים ייעודיים לעזרה ולפקודות מעטפת,[100] כך שניתן יהיה להשתמש בה בשביל ניסויים בשביל לבדוק קוד במהירות.[101] המקטע הבא מציג סשן דוגמה המבצע חיבור מחרוזות[102]:
julia>p(x)=2x^2+1;f(x,y)=1+2p(x)yjulia>println("Hello world!"," I'm on cloud ",f(0,4)," as Julia supports recognizable syntax!")Hello world! I'm on cloud 9 as Julia supports recognizable syntax!
כאשר מוסיפים לפני פקודות ; למצב מעטפת או ? למצב עזרה, ה-REPL נותן למשתמש גישה למצבים השונים, וההיסטוריה של הפקודות נשמרת גם בין שימושים.[103] ניתן לבדוק קוד בצורה אינטראקטיבית, וניתן לשמור אותו ולהריץ מתוך קובץ עם סיומת .jl ואז להריץ משורת הפקודה בעזרת:[104]
$ julia<filename>
מחברות Jupyter אינטראקטיביות יכולות לתמוך בג'וליה (למעשה ג'וליה, פייתון ו־R הן ההשראה לשם Jupyter[105]), וישנו גם פרויקט בשם Pluto.jl שמוגדר "מחברת ריאקטיבית" (מחברות שנשמרות בקובצי ג'וליה טהורים), ומהווה תחליף אפשרי למחברות Jupyter.
שילוב עם שפות אחרות
ניתן לשלב את ג'וליה עם שפות רבות אחרות (ביניהן 10–20 השפות הנפוצות ביותר). הפקודה ccall משמשת כדי לקרוא לפונקציות מיוצאות ב-C, לקרוא פונקציות מספריות משותפות בפורטרן, לקרוא לחבילות שמאפשרות קריאה לשפות אחרות כמו פייתון, R, MATLAB, ג'אווה וסקאלה.[106] ישנן גם חבילות שמאפשרות לשפות אחרות לקרוא לג'וליה, כמו pyjulia של שפת פייתון.
לג'וליה יש תמיכה בגרסת יוניקוד 13.0,[107] כאשר UTF-8 משמש במחרוזות (כברירת מחדל) ולקוד המקור של ג'וליה, כך שניתן להשתמש בסימנים מתמטיים נפוצים כאופרטורים, למשל ∈ במקום אופרטור in.
לג'וליה יש ספריות שתומכות בשפות Markup כגון HTML, XML, JSON ו-BSON, וספריות למסדי נתונים ולשימוש ברשת בכלל (כמו ספריה לטיפול ב-HTTP).
קובצי הרצה מקומפלים
ניתן לקמפל תוכנות ג'וליה לקבצים בינאריים בעזרת PackageCompiler.jl.[98] ניתן ליצור גם קובצי הרצה קטנים יותר אם משתמשים בתת-סט סטטי של השפה דרך StaticCompiler.jl, שאינו תומך ב־dispatch בזמן ריצה או ב־garbage collection, מאחר ששני אלו דורשים את קובצי ההרצה של ג'וליה עצמה.[108]
מנהל החבילות
לג'וליה יש מנהל חבילות מובנה, והיא כוללת מערכת רישום כברירת מחדל.[109] חבילות בדרך כלל מופצות כקוד מקור שמנוהל ב-Github, אף על פי שישנן גם חלופות. ניתן גם להתקין חבילות בינאריות, בתור artifacts.[110] ניתן להשתמש במנהל החבילות של ג'וליה לתשאול והידור חבילות, וכן לניהול סביבות. ניתן גם להוסיף מערכות רישום נוספות שאינן מערכת הרישום הרשמית.[111]
מימוש
הגרעין של ג'וליה ממומש בג'וליה וב-C, ביחד עם C++ לתלויות של LLVM. ה-Parsing והנמכת הקוד (למבנה קרוב יותר לקוד מכונה) ממומשים ב-FemtoLisp, שהוא ניב של Scheme.[112] פרויקט תשתית המהדר של LLVM משמשת בתור ה-Back end שיוצר קוד מכונה אופטימלי ב-32 או 64 ביט, על פי הפלטפורמה בה הקוד רץ. מלבד כמה יוצאי דופן (כמו PCRE), הספרייה הסטנדרטית ממומשת בג'וליה. התכונה הבולטת ביותר של המימוש של ג'וליה היא המהירות, כך שקוד בג'וליה לרוב ירוץ לכל הפחות בחצי המהירות של קוד אופטימלי מקביל ב-C, ובמהירות גבוהה בכמה סדרי גודל מאלו של פייתון או R.[113][114][115]
פלטפורמות נוכחיות ועתידיות
מאחר שג'וליה משתמשת ב-JIT, היא מייצרת קבצים בינאריים ישירות, עוד לפני שהקוד רץ, ולא משתמשת ב-Bytecode. לג'וליה יש ארבע רמות תמיכה,[116] מ-tier 1 בה מובטח כי ג'וליה תצליח לרוץ, וישנם בינאריים רשמיים להתקנה, דרך tier 2 שם ג'וליה עובדת אך לא עוברת את כל הבדיקות ו-tier 3 הניסויית ועד tier 4 בה ג'וליה כפי הנראה פעלה לפחות פעם אחת בעבר, אך אינה פועלת כיום.
פלטפורמות של אינטל
כל מעבדי IA-32 שמממשים ארכיטקטורת i686 נתמכים, וכך גם x86-64 (ידועה גם כ-amd64).
פלטפורמות ARM
ג'וליה הותקנה עד כה בכמה פלטפורמות של ARM. ישנה תמיכה מלאה ב-tier 1 ב-ARMv8 AArch64, בעוד ARMv7 ו-ARMv6 AARCH32 נתמכים ברמה נמוכה יותר ובצורה פחות חלקה בג'וליה 1.0 אם כי יש להם קובצי התקנה רשמיים. התמיכה ב-ARM 32 ביט ירדה ל-tier 3 בגרסאות מאוחרות יותר,[117] אם כי עדיין יש קובצי התקנה לא רשמיים לגרסה 1.5.1.[118] ל-PowerPC 64 ביט יש תמיכה ב-tier 3, משמע "ייתכן שההידור יצליח".
יש פלטפורמות, כמו ראספברי פאי המקורי, להן צריך להדר את ג'וליה מקוד המקור עם דגלים ספציפיים. לחלקם יש בינאריים לא רשמיים שהודרו מראש והוראות כיצד להדר.[119][120] ג'וליה כיום נתמכת ב-Raspberry Pi OS,[121] עם תמיכה טובה יותר בפלטפורמות החדשות יותר בעלות מעבד ARMv7 ומעלה. קרן ראספברי פאי מקדמת כיום את התמיכה בג'וליה.[122]
פלטפורמות ווב
ג'וליה עובדת בדפדפנים ובג'אווה סקריפט באמצעות JSExpr.jl.[123] ישנו פרויקט רדום בשם Julia-wasm שמאפשר ריצה של REPL ג'וליה בסביבת WebAssembly.[124] וישנם כלים להידור תוכנות שכתובות בג'וליה ל-WASM.[125]
פלטפורמות מיקרוסופט
מערכת ההפעלה חלונות נתמכת בגרסאות 32 ו-64 ביט, מ-Windows 7 ומעלה. ב-Windows 10 גרסת ה-64 ביט נתמכת ברמה גבוהה יותר מגרסת 32 ביט.[126]Windows על מעבדי ARM אינו מוזכר כנתמך.[127]
פלטפורמות של אפל
לג'וליה יש תמיכת tier 1 ב-macOS (מחשבי מק מבוססי אינטל), אך לא מוזכרת שום תמיכה במעבדי Apple M1. ג'וליה נחשבת עובדת סביר, אם כי בביצועים פחותים, על מתרגם רוזטה 2 של אפל.[128] עבודה על גרסת ג'וליה מקומית למעבדי M1 (ללא אמולציה) נמצאת בשלבים מתקדמים.
פלטפורמת אנדרואיד
מאחר שג'וליה מתהדרת על ARM, בתיאוריה ניתן לכתוב אפליקציות אנדרואיד בעזרת ה-NDK, אך ג'וליה כיום מכוונת לרוץ על אנדרואיד רק בצורה עקיפה, משמע עם chroot של לינוקס,[129] או תחת termux.[130]
פלטפורמות GPU
פלטפורמת CUDA של Nvidia נתמכת ב-tier 1, בסיוע חבילות חיצוניות. ישנן גם חבילות נוספות לתמיכה במאיצים אחרים כמו TPU של גוגל[131] ו-GPU של AMD שנתמכים ב-OpenCL לדוגמה. ישנה גם תמיכה ניסיונית ב-ROCm של AMD.[132] דף ההורדות באתר של ג'וליה מספק קובצי התקנה בינאריים וגם קוד מקור לכל הפלטפורמות שנתמכות באופן רשמי.
רישיונות
השפה עצמה היא תחת רישיון MIT. ספריות שונות יוצאות תחת רישיונות שונים, כגון GPL, LGPL ו-BSD, כך שהסביבה עליה נשענת השפה מוגדרת כולה תחת רישיון GPL, אם כי ניתן להדר אותה גם ללא החלקים שתחת GPL. ניתן להדר את השפה גם כספריה משותפת, כדי לשלב אותה עם קוד של המשתמש ב-C או בפורטרן, או עם ספריות צד שלישי. ג'וליה מאפשרת שילוב עם ספריות שנכתבו ב-C או פורטרן ללא התאמות ואפילו ללא הידור מחדש – ניתן להתממשק ישירות לספריות האלו אפילו מן הממשק האינטראקטיבי ולנסות אותן עם תגובות מידיות. הפרטים המלאים על רישוי החלקים השונים נמצאים במסמכי הרישוי של ג'וליה.
גרסאות
גרסה
זמן שחרור
הערות
0.3
אוגוסט 2014
0.4
אוקטובר 2015
0.5
אוקטובר 2016
0.6
יוני 2017
0.7
8 באוגוסט 2018
גרסה לבדיקת חבילות ובדיקת עדכון שלהן לגרסה 1.0. כללה שינויים קלים בתחביר, לתחביר שמקובל גם ב-1.x.
1.0
8 באוגוסט 2018
יצאה לאור ביחד עם גרסה 0.7. הגרסה המועמדת ליציאה לאור כג'וליה 1.0 יצאה לאור ב-7 באוגוסט 2018, ויום אחריה יצאה לאור גרסת 1.0 הסופית.
1.1
ינואר 2019
כוללת "מחסנית חריגות".
1.2
אוגוסט 2019
כוללת תמיכה מובנית בדפדפנים.
1.3
דצמבר 2019
כוללת מיקבול מרובה תהליכונים שנשלט מהקוד.
1.4
מאי 2020
כוללת תחביר לעבודה עם מערכים על בסיס 0 ושינוי במודל הזיכרון.
כוללת שיפורים לשחרור תוכנות ג'וליה ללא קוד מקור, האצת קומפיילר (לעיתים ברמה של 25% שיפור), ושיפור של ה־Inlining שמאפשר להגדיר Inlining לפונקציה בזמן קריאה ולא רק בעת הגדרת הפונקציה.[136]
1.9
מאי 2023
יכולת קימפול מלא לקוד native, והאצת קדם-קימפול שמאיצה ריצה של חבילות.
1.10
דצמבר 2023
שיפור זמן טעינת חבילות, parser חדש, הודעות שגיאה משופרות.
הגרסה המוקדמת ביותר שנתמכת עדיין היא 1.6.7, עם תמיכה לטווח ארוך של שנה לפחות. תיקוני באגים משוחררים על בסיס חודשי.
חבילות שעבדו בגרסה 1.0.x עובדות גם ב-1.1.x ובגרסאות חדשות יותר, מתוך הבטחה מוצהרת לתאימות קדימה בתחביר. אמנם היו ממשקים לשפות אחרות שנתקלו בבעיה בהקשר של תהליכונים, למשל JavaCall.jl שמהווה ממשק לשפות JVM כמו ג'אווה או סקאלה, או Rcall.jl שמהווה ממשק לשפת R, אך יצרו מעקף לבעיה בגרסה 1.3.
דוגמאות
שימוש אינטראקטיבי ב-REPL
julia>println("hola mundo")holamundo
julia>x=1julia>y=2julia>ifx<yprintln("smaller")elseprintln("larger")endesmenorjulia>(x<y)?"x is smaller than y":(x>y)?"x is larger than y":"x is equal y""x is smaller than y"julia>comparison(x,y)=println((x<y)?"x=$x is smaller than y=$y":(x>y)?"x is larger than y":"x is equal to y")comparison(genericfunctionwith1method)julia>comparison(4,5)x=4issmallerthany=5
usingLinearAlgebra:trusingStatistics#importing std, mean etc.functionrandmatstat(t)n=5v=zeros(t)w=zeros(t)fori=1:ta=randn(n,n)b=randn(n,n)c=randn(n,n)d=randn(n,n)P=[abcd]Q=[ab;cd]v[i]=tr((P'*P)^4)w[i]=tr((Q'*Q)^4)endstd(v)/mean(v),std(w)/mean(w)end
^"Smoothing data with Julia's @generated functions". 5 בנובמבר 2015. נבדק ב-9 בדצמבר 2015. Julia's generated functions are closely related to the multistaged programming (MSP) paradigm popularized by Taha and Sheard, which generalizes the compile time/run time stages of program execution by allowing for multiple stages of delayed code execution.{{cite web}}: (עזרה)
^"Julia". Julia. NumFocus project. נבדק ב-9 בדצמבר 2016. Julia's Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for ...{{cite web}}: (עזרה)
^Claster, Andrew (12 בספטמבר 2017). "Julia Joins Petaflop Club". Julia Computing (הודעה לעיתונות). Celeste is written entirely in Julia, and the Celeste team loaded an aggregate of 178 terabytes of image data to produce the most accurate catalog of 188 million astronomical objects in just 14.6 minutes [..] a performance improvement of 1,000x in single-threaded execution.{{cite press release}}: (עזרה)
^Shah, Viral B. (2017-11-15). "Viral B. Shah on Twitter" (באנגלית). נבדק ב-2019-09-15. @KenoFischer is speaking on Celeste in the @Intel theatre at @Supercomputing. 0.65M cores, 56 TB of data, Cori - world's 6th largest supercomputer.
^Hobbs, Kerianne (בדצמבר 2022). "Year of Autonomy in Alaskan Glaciers, Flight, Earth Orbit, Cislunar Space and Mars". Aerospace America Year in Review. p. 48. The flight test team was able to demonstrate … a vertical takeoff and landing vehicle with both electric and conventional fuel propulsion systems onboard. The uncrewed aerial system was able to plan and execute these missions autonomously using onboard hardware. It was the first time the Julia programming language was flown on the embedded hardware - algorithms were precompiled ahead of time.{{cite web}}: (עזרה)
^Mikhasenko, Misha (ביולי 2021). "Julia for QCD spectroscopy"(PDF). indico.cern.ch. נבדק ב-2022-08-23. Summary: Julia is ready to be used in physics HEP analysis{{cite web}}: (עזרה).
^"Introducing Braket.jl - Quantum Computing with Julia". Julia Community 🟣 (באנגלית). 15 בנובמבר 2022. נבדק ב-2023-02-23. Almost all of the Python SDK's features are reimplemented in Julia — for those few that aren't, we are also providing a subsidiary package, PyBraket.jl, which allows you to translate Julia objects into their Python equivalents and call the Python SDK.{{cite web}}: (עזרה)
^"JuliaCon 2021 Highlights". julialang.org (באנגלית). נבדק ב-2022-03-03. This year's JuliaCon was the biggest and best ever, with more than 300 presentations available for free on YouTube, more than 20,000 registrations, and more than 43,000 unique YouTube viewers during the conference, up from 162 presentations, 10,000 registrations, and 28,900 unique YouTube viewers during last year's conference.
^"Mozilla Research Grants 2019H1". Mozilla (באנגלית). נבדק ב-2019-09-22. running language interpreters in WebAssembly. To further increase access to leading data science tools, we’re looking for someone to port R or Julia to WebAssembly and to attempt to provide a level 3 language plugin for Iodide: automatic conversion of data basic types between R/Julia and Javascript, and the ability to share class instances between R/Julia and Javascript.
^"Literate scientific computing and communication for the web: iodide-project/iodide". iodide. 2019-09-20. נבדק ב-2019-09-22. We envision a future workflow that allows you to do your data munging in Python, fit a quick model in R or JAGS, solve some differential equations in Julia, and then display your results with a live interactive d3+JavaScript visualization ... and all that within within a single, portable, sharable, and hackable file.
^ראו גם: docs.julialang.org/en/v1/manual/strings/ לאינטרפולציה של מחרוזות, וראו דוגמת string(greet, ", ", whom, ".\n") לדרכים מומלצות לחיבור מחרוזות. לג'וליה יש פונקציות println ו-print, אך גם את המאקרו @printf (שאינו פונקציה!) כדי לקצר את זמן הריצה של עיצוב המחרוזת (בניגוד לפונקציה המקבילה ב-C).