ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° Tinygo 0.7.0, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° LLVM Go ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€

На Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π’ΠΈΠ½ΠΈΠ³ΠΎ 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 прилоТСния.

    ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π΅ΠΌΠ³ΠΎ Tinygo сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ оригиналния ΠΌΠΎΠ΄Π΅Π» Π½Π° Go Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Ρ‡Ρ€Π΅Π· ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LLVM Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄, вмСсто Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² C прСдставянС. Tinygo ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΈ Π½ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° изпълнСниС, която ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ, систСма Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ систСми. Няколко ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ sync ΠΈ reflect, са ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° срСда Π·Π° изпълнСниС.

    ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ във вСрсия 0.7 Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ имплСмСнтацията Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "tinygo test", ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠΈ (Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ARM Cortex-M) ΠΈ WebAssembly, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π° HiFive1 rev B, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° RISC-V Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°, ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π° Arduino nano33.
    ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° (ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ getters ΠΈ setters, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структури).

    Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

  • ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€