לואה (שפת תכנות) – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ הוספת {{תב|ויקישיתוף בשורה}} בקישורים חיצוניים במידה וחסר (תג)
Matanyabot (שיחה | תרומות)
מ בוט החלפות: \1מאחר ש, לעיתים, בדרך כלל, \1על ידי, זיכרון
שורה 34:
 
== LuaRocks ==
[[מערכת ניהול חבילות|מערכת ניהול החבילות]] של Lua (הופיעה לראשונה ב־2007, הכתובה גם היא בשפה עצמה{{הערה|{{קישור כללי|כתובת=https://github.com/luarocks/luarocks/wiki/Release-history|הכותב=Hisham Muhammad (יזם LuaRocks)|כותרת=מעקב שינויים רשמי של מערכת ניהול החבילות של Lua באתר GitHub.|אתר=github.com|תאריך=}}}}) נקראת LuaRocks והיא מאפשרת שיתוף ספריות וקוד הכתובים ב־Lua. החבילות עצמן מכונות „rocks” בצירוף פירוש שם השפה Lua בפורטוגזית „ירח”, נגזר המונח „אבני ירח” לתאר פיסות קוד הכתובות בשפה שהם בד"כבדרך כלל רכיבי Lua או אסופות של רכיבים המספקים פונקציונליות ממוקדת מטרה.
 
המערכת יודעת לטפל בתלותיות בין החבילות עצמן, בגרסאות שלהן, ושל מפרש ה־Lua הזמין במחשב ויוצרת סביבה נוחה לפיתוח יציב ושיתופי ב־Lua. החבילות מסודרות במקום מרוכז בכל מחשב וכך חוסכות הכלה מיותרת של אותם רכיבים בכל פרויקט Lua חדש.
שורה 210:
 
== מימושים עיקריים ==
מהיותה שפה זעירה ו[[קוד פתוח|חופשית]] שנועדה ל[[מערכת משובצת מחשב|שיבוץ]], ל־Lua קיימים [[מימוש|מימושים]] רבים שפותחו במשך השנים למגוון מטרות שונות ע"יעל ידי מפתחים וצוותים עצמאים.{{הערה|שם=הערה מספר 25046745:0|{{קישור כללי|כתובת=https://www.lua.org/about.html|הכותב=|כותרת=Lua is small|אתר=עמוד הבית של Lua|תאריך=|ציטוט=The source contains around 24000 lines of C. Under 64-bit Linux, the Lua interpreter built with all standard Lua libraries takes 247K and the Lua library takes 421K.}}}}{{הערה|{{קישור כללי|כתובת=http://lua-users.org/wiki/LuaImplementations|כותרת=lua-users wiki: Lua Implementations|אתר=lua-users.org|תאריך_וידוא=2019-02-28}}}} בין המימושים קיימים הבדלים ואי־תאימויות לאור המגבלות שמולן הם נעמדו או עקב שינויים ללא תאימות לאחור שחלו במימוש ה[[קאנון ספרותי|קנוני]] של Lua מהאוניברסיטה הקתולית (PUC Rio).{{הערה|שם=הערה מספר 25046745:1|{{קישור כללי|כתובת=https://www.lua.org/versions.html|הכותב=|כותרת=Version history|אתר=עמוד הבית של Lua|תאריך=|ציטוט=Different versions are really different. The API is likely to be a little different (but with compatibility switches), and there is no ABI compatibility: applications that embed Lua and C libraries for Lua must be recompiled.}}}}
 
מצב זה העמיד אתגר ל[[קוד פתוח|קהילת החופשית]] של Lua ולמיזם מערכת ניהול החבילות שלה ([[#LuaRocks|LuaRocks]]) לנסות ליצור שיתוף פעולה ותיאום בין החבילות הזמינות שהציעו חברי הקהילה מול הגרסאות השונות של השפה שחלו במימושים המועדפים עליהם.{{הערה|{{קישור כללי|כתובת=https://realmensch.org/2016/05/28/goodbye-lua/|הכותב=Tim Mensch|כותרת=Fragmentation of Lua|אתר=RealMensch|תאריך=|תאריך_וידוא=2019-02-28|ציטוט=The major breaking changes in Lua in 5.3 seem to be fragmenting the already sparse Lua library ecosystem. Anyone who creates a library needs to now support LuaJIT (a 5.1/5.2 hybrid)}}}}
שורה 219:
 
==== Lua (PUC Rio) ====
זהו המימוש המרכזי והנפוץ ביותר של Lua ונהוג לעתיםלעיתים לכנות אותו ''PUC Lua''. הוא מפותח ב[[האוניברסיטה הקתולית (ריו דה ז'ניירו)|אוניברסיטה הקתולית]] (PUC Rio) שב[[ריו דה ז'ניירו]] ב[[ברזיל]] מאז 1993 ומופץ תחת [[רישיון MIT]].{{הערה|שם=הערה מספר 25046745:1}} PUC Lua הוא [[מפרש (תוכנה)|מפרש]] זעיר ו[[מערכת טיפוסים#טיפוסיות דינמית|דינמי]] הכתוב ב[[C (שפת תכנות)|שפת C]]{{הערה|שם=הערה מספר 25046745:0}}, ומצטיין בצריכה חסכונית של [[זיכרון גישה אקראית|זכרוןזיכרון]] וכוח [[מעבד|עיבוד]] למרות ביצועיו המעולים ביחס לשפות מפורשות אחרות.{{הערה|{{קישור כללי|כתובת=https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/lua-python3.html|כותרת=Lua vs Python 3 - Which programs are faster? {{!}} Computer Language Benchmarks Game{{!}}אתר=benchmarksgame-team.pages.debian.net{{!}}תאריך_וידוא=2019-02-28}}}}
 
PUC Lua ממיר קוד מקור של Lua ל־[[bytecode]] הסטנדרטי של השפה תוך כדי שהקוד עובר בדיקות ראשוניות כגון חוקיות תחביר לפני הריצה שלו. ניתן לייצא את ה־bytecode שנוצר לתוך קבצים מתוך הקוד בעזרת ה[[שגרה (תכנות)|פונקציה]] <code>()string.dump</code> או מחוץ לקוד בעזרת הפקודה <code>luac</code> [[מדמה מסוף|במסוף]].{{הערה|{{קישור כללי|כתובת=https://www.lua.org/manual/5.2/luac.html|כותרת=luac man page|אתר=www.lua.org|תאריך_וידוא=2019-02-28}}}}
שורה 230:
LuaJIT מעודדת את המתכנת להיעזר ב[[שגרה (תכנות)|פונקציות]] ו[[ספרייה (תכנות)|ספריות]] הכתובות בשפת C במקום להיעזר בספריות [[צד שלישי]] הכתובת ב־Lua. ממשק ה־FFI של LuaJIT מאפשר גישה ושימוש טבעי עם ספריות, [[מבנה נתונים|מבני נתונים]] ופונקציות מספריות בשפת C בלי לגרוע בביצועים שלה וגם מבלי צורך להיעזר ב־Lua C API כפי שדרוש במימוש הסטנדרטי של PUC Lua.
 
הביצועים של LuaJIT לעתיםלעיתים קרובות מהירים משל PUC Lua 5.1 עשרות מונים.{{הערה|{{קישור כללי|כתובת=http://luajit.org/performance_x86.html|כותרת=Performance: x86/x64|אתר=luajit.org|תאריך_וידוא=2019-02-28}}}} מה שהפך את המימוש לאטרקטיבי עבור מפתחים שנשענים על [[גרפיקה ממוחשבת|ספריות גרפיות]], [[יישום רשת|יישומי רשת]], [[תוכנה כשירות|טכנולוגיות ענן]]{{הערה|{{קישור כללי|כתובת=https://blog.cloudflare.com/tag/lua/|כותרת=LUA|אתר=The Cloudflare Blog|שפה=en|תאריך_וידוא=2019-02-28}}}}, וחברות תקשורת גדולות.{{הערה|{{קישור כללי|כתובת=http://luajit.org/sponsors.html|כותרת=LuaJIT Sponsorship Program|אתר=luajit.org|תאריך_וידוא=2019-02-28}}}}
 
==== eLua ====
שורה 237:
תכונות מרכזיות:{{הערה|{{קישור כללי|כתובת=http://www.eluaproject.net/overview|כותרת=Overview - eluaproject|אתר=www.eluaproject.net|תאריך_וידוא=2019-03-05}}}}
 
* שליטה מלאה וישירה בחומרה שעליה היא רצה, מאחר ואיןשאין אף נוכחות של [[מערכת הפעלה]] במערכות משובצות. עם זאת המימוש נמנע מלהפוך לתחליף עבור מערכת הפעלה.
* תאימות הקוד על מערכות משובצות בעלי [[סט פקודות|ארכיטקטורה]] שונה וחומרה מגוונת. המימוש של eLua דואג למגר כל הבדל אפשרי בהתנהגות השפה על גבי מעבדים עם סט פקודות שונה.
* המימוש מתוכנן בקפדה כך כדי לאפשר החלפה ושדרוג מזדמן של החומרה מבלי לגרום לאי־תאימויות בקוד שנכתב עד כה.
* [[מעטפת (מחשבים)|מעטפת]] המאפשרת אינטראקציה נוחה בתהליך הפיתוח בין הקוד [[מערכת משובצת מחשב|המשובץ]] לקוד שנערך ע"יעל ידי המשתמש, כמו למשל שיבוץ וניסוי הקוד וקבלת משוב על [[שגיאה#תכנות מחשבים|שגיאות]] בקוד תוך כדי זמן הריצה בלי צורך ב[[סימולציה|סימולציות]] לפני השיבוץ.
 
<br />