שחרור של Tinygo 0.7.0, מהדר Go מבוסס LLVM

זמין שחרור הפרויקט Tinygo 0.7.0, אשר מפתחת מהדר שפת Go עבור אזורים הדורשים ייצוג קומפקטי של הקוד המתקבל וצריכת משאבים נמוכה, כגון מיקרו-בקרים ומערכות קומפקטיות של מעבד יחיד. קוד מופץ על ידי תחת רישיון BSD.

הידור עבור פלטפורמות יעד שונות מיושם באמצעות LLVM, וספריות המשמשות בערכת הכלים הראשית מפרויקט Go משמשות לתמיכה בשפה. ניתן להריץ את התוכנית הקומפילטית ישירות על מיקרו-בקרים, מה שמאפשר להשתמש ב-Go כשפה לכתיבת סקריפטים לאוטומציה.

המניע ליצירת פרויקט חדש היה הרצון להשתמש בשפת Go המוכרת במכשירים קומפקטיים – המפתחים טענו שאם יש גרסת Python עבור מיקרו-בקרים, אז למה לא ליצור דומה לשפת Go. ללכת נבחר במקום Rust מכיוון שקל יותר ללמוד, מספק תמיכה בלתי תלויה בחוט עבור הקבילה מבוססת קורוטין, ומציע ספרייה סטנדרטית נרחבת ("סוללות כלולות").

В текущем виде поддерживается 15 моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary и Phytec. Программы также могут быть собраны для запуска в браузере в формате WebAssembly и в виде исполняемых файлов для Linux. Поддержки контроллеров ESP8266/ESP32 עדיין לא, אך פותח פרויקט נפרד להוספת תמיכה בשבב Xtensa ב-LLVM, שעדיין מסומן כלא יציב ואינו מוכן לשילוב עם TinyGo.

יעדי הפרויקט העיקריים:

  • יצירת קבצי הפעלה קומפקטיים מאוד;
  • תמיכה בדגמים הנפוצים ביותר של לוחות מיקרו-בקר;
  • אפשרות ליישום עבור האינטרנט;
  • תמיכת CGo עם תקורה מינימלית בעת קריאה לפונקציות ב-C;
  • תמיכה ברוב החבילות הסטנדרטיות ויכולת להדר קוד קיים סטנדרטי מבלי לשנות אותו.

    תמיכה במערכות מרובות ליבות אינה בין המטרות העיקריות,
    השקה יעילה של מספר עצום של קורוטינים (ההשקה של קורוטינים עצמה נתמכת במלואה), השגת רמת הביצועים של מהדר הייחוס gc (האופטימיזציה נשארת ל-LLVM ובאפליקציות מסוימות Tinygo עשויה להיות מהירה יותר מ-gc) והשלמה תאימות עם כל יישומי Go.

    ההבדל העיקרי מהדר דומה אמגו הוא ניסיון לשמר את מודל ניהול הזיכרון המקורי של Go באמצעות איסוף זבל ולהשתמש ב-LLVM כדי ליצור קוד יעיל במקום להדר אותו לייצוג C. Tinygo מציעה גם ספריית זמן ריצה חדשה המיישמת מתזמן, מערכת הקצאת זיכרון ומטפלי מחרוזות המותאמות למערכות קומפקטיות. חלק מהחבילות, כגון סינכרון ו-reflection, נוצרו מחדש על סמך זמן הריצה החדש.

    בין השינויים במהדורה 0.7 ניתן למנות את יישום הפקודה "מבחן tinygo", מתן תמיכה לאיסוף אשפה עבור רוב לוחות היעד (מבוסס על ARM Cortex-M) ו-WebAssembly, תמיכה בלוח HiFive1 rev B המבוסס על RISC- ארכיטקטורת V ולוח Arduino nano33,
    תמיכה משופרת בשפה (תמיכה בשדות סיביות תוך שימוש ב-getters ו-seters, תמיכה במבנים אנונימיים).

    מקור: OpenNet.ru

  • קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster