שחרור שפת התכנות V 0.4.3

לאחר 40 ימי פיתוח, פורסמה גרסה חדשה של שפת התכנות V (vlang), שפת התכנות הסטטית. המטרות העיקריות ביצירת V היו קלות למידה ושימוש, קריאות גבוהה, קומפילציה מהירה, אבטחה מוגברת, פיתוח יעיל, שימוש חוצה פלטפורמות, אינטראקציה משופרת עם שפת C, טיפול טוב יותר בשגיאות, תכונות מודרניות ותחזוקת תוכניות נוחה יותר. קוד המהדר, הספריות והכלים הקשורים פתוח תחת רישיון MIT.

בגרסה החדשה:

  • שיפורי שפה:
    • מודול חדש "encoding.xml" עם מנתח, אימות ומבחני יחידה.
    • תמיכה משופרת בקורוטינות (IO, רשת).
    • הפחתת פעולות הקצאת זיכרון ביישומי vweb ב-80%.
    • יישום של "@VCURRENTHASH" להחלפת "C.V_CURRENT_COMMIT_HASH".
    • החל קידום של סוג int חדש, המשויך לסוג i64 (בעבר סוג ה-int זוהה עם סוג i32).
    • תיקון כללי בדיקת סוגים עבור סוג int החדש ואופטימיזציה של יצירת קוד.
  • שינויים ב-API שמפריעים לתאימות:
    • המילון "Request.cookies" הוצא משימוש והוחלף ב-"Request.cookie()" ו-"Request.add_cookie()".
    • כללים מחמירים יותר עבור סוגי C, אשר כעת יש להצהיר עליהם תמיד.
  • שינויים במערכת בדיקת הסוגים:
    • אזהרת פיצול אפשרות/תוצאה הועברה לקטגוריית שגיאה.
    • תיקון קריאה ל-"fn" עם ארגומנט אופציונלי במצב autofree.
    • בדיקת מתן שמות הוחזרה: אותיות גדולות וקטנות בפסקל עבור כינויים.
    • C.xx = כינויים של C.yy.
    • אפשר שימוש בטיפוסי מספרים שלמים כטווחים בבלוקים מתמטיים.
    • אזהרה לגבי הוצאה משימוש של סוג בייט (לטובת סוג u8) כאשר משתמשים בו כפרמטר fn.
    • תקן את שיטת ההוספה עבור מערכים גנריים.
    • בדיקת שגיאת יישום של ממשק פרטי של מודול אחר.
    • תוקנה בדיקה של ערכים שליליים של cap ו-len בעת אתחול מערך.
    • הפכו את האזהרה לגבי שמות מודולים כפולים, var ו-param, לשגיאה.
    • לאפשר הקצאה מחדש של משתנה משותף בכללותו (תוך שמירה על המצב הקודם של ה-mutex).
  • שיפורי מנתח:
    • הקצאה קבועה של מתודה סטטית לפונקציות אנונימיות.
    • ast: עיצוב תוקן של הצהרת struct עם מבנה מקונן.
    • נוספו שיטות set_all + clear_all לשדות סיביות של "[flag]".
    • אזהרה לגבי ייבוא שאינו בשימוש, גם אם הוצהר באמצעות "import math { sin, cos }".
  • שינויים מהדר:
    • בודק, בונה, העדפה: תמיכה בדגל "-dump-defines" כדי להציג את כל הגדרות המשתמש והמערכת הזמינות עבור תוכנית נתונה.
    • מפות: נוספו הפונקציות maps.merge() ו- maps.merge_in_place().
  • ספרייה סטנדרטית:
    • מובנה: נוספה שיטת "unsafe { a.reset() }" כדי להגדיר במהירות את כל הבייטים במערך ל-0.
    • math.fractions: שימוש בעומס יתר של אופרטורים והוצאת פונקציות ישנות משימוש.
    • gg: תוקן יישור הגבול התחתון של draw_rounded_rect_empty במערכות מק ו-linux.
    • crypto.bcrypt: תוקן באג ב-bcrypt.
    • סוקול: עודכן לגרסה האחרונה
    • מובנה: גודל קבוע של (C.BOOL) (ספציפי לחלונות).
    • math.big: תיקון חילוק שגוי עם מספרים שליליים.
    • מערכת הפעלה: נוספה דרך נוחה להתעלם מאותות מערכת מסוימים.
    • מערכת הפעלה: תיקון os.ls (תיקייה) בחלונות כאשר לא ניתן לפתוח ספרייה מוגנת.
    • crypto.sha/md5/: תוקן חישוב של אותם ערכי גיבוב בעת קריאה לפונקציה .sum() מספר פעמים עבור sha1/256/512.
    • מערכת הפעלה: os.fd_is_pending/1, os.Process.pipe_read/1, os.Process.is_pending/1 יושמה.
    • json2: נוספה תמיכה במבנים מקוננים.
  • אינטרנט
    • vweb: נוספו סוגי mime עבור קבצי .md סטטיים.
    • net.conv: נוספו פונקציות varinttou64 ו-u64tovarint לקידוד משתנים שלמים לא חתומים כמתואר ב-rfc-9000 (עבור QUIC).
    • net.http: תמיכה בציון פונקציות callback on_running, on_stopped ו-on_closed ב-http.Server{}, ו-show_startup_message: false.
    • net.http: תמיכה במעבר פרוקסי HTTPשרת ב-http.fetch.
    • net.http: הוספת מנגנון ניסיון חוזר ל- http.fetch() עבור שגיאות שקע בלתי נמנעות.
    • wasm: יישם הרכבה מוטבעת.
    • net.http: ערך max_redirects עלה ל-16.
    • פיקוב: יישום של מצב גולמי לעבודה ישירה עם מתארי קבצים.
    • net.http: נוספה תמיכה עבור socks5 ו-http(s) proxy עבור מערכות דמויות יוניקס.
  • ORM:
    • orm: נוספה טיפול בערכי null ובשדות אופציונליים.
    • orm: פעולות is_null/is_not_null יוצרות אותן באופן אונרי.
  • מנהלי התקנים של מסד נתונים:
    • pg: קריאות C הועברו לקבצי .cv.
  • קצה אחורי מקורי:
    • מקורי: תמיכה בדגל -no-builtin (יצירת קבצי הרצה של לינוקס בנפח < 1KB עם "v -no-builtin -b native examples/hello_world.v").
    • native: השתמש ב-i32 במקום int.
  • C-backend:
    • ast, native, cgen: נוספה תמיכה עבור "$if native {}".
  • vfmt:
    • כעת מסיר מעברי שורה נוספים לאחר call_expr ולפני ארגומנטי מבנה.
    • תוקן יישור ערכים בעת שימוש במקשים עם סמלי uft8.
    • יישור של ביטויים טרנריים בבלוקים של קבועים.
  • כְּלֵי עֲבוֹדָה:
    • נוספה תמיכה ב-@LOCATION, לאיתור שגיאות קל יותר מבלי צורך לשלב את @FILE ו-@LINE בזמן ריצה.
    • מדד ביצועים: נוספו שיטות חדשות b.record_measure/1 ו- b.all_recorded_measures/0.
    • ci: זרימת עבודה מעודכנת של github c2v.
    • מחרוזות: נוספה שיטת Bulder.write_decimal/1 (לכתיבת מספר עשרוני, ללא הקצאות נוספות).
    • תוקנה התקנה של מודול קיים באמצעות vpm (Windows).
    • tools.vpm: טיפול משופר בכתובות URL המסתיימות ב-".git".
    • נוספה דרישה לקובץ v.mod להתקנת מודולים דרך קישורים חיצוניים באמצעות vpm.

מקור: OpenNet.ru

הוספת תגובה