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

На Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° 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.

Основни Ρ†Π΅Π»ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

  • Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π½Π°ΠΉ-разпространСнитС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠΈ;
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Web;
  • CGo ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ стандартни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ‰ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠΎΠ΄, Π±Π΅Π· Π΄Π° Π³ΠΎ промСнятС.

    ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° многоядрСни систСми Π½Π΅ Π΅ срСд основнитС Ρ†Π΅Π»ΠΈ,
    Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ стартиранС Π½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ Π±Ρ€ΠΎΠΉ ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈ (самото стартиранС Π½Π° ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° напълно), постиганС Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° производитСлност Π½Π° рСфСрСнтния ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ gc (оптимизацията Π΅ оставСна Π½Π° LLVM ΠΈ Π² някои прилоТСния Tinygo ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎ-Π±ΡŠΡ€Π· ΠΎΡ‚ gc) ΠΈ пълно ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с всички Go прилоТСния.

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

    Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ във вСрсия 0.7 са внСдряванСто Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žtinygo testβ€œ, прСдоставянСто Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠΈ (Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ARM Cortex-M) ΠΈ WebAssembly, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π° HiFive1 rev B, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° RISC- V Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π° Arduino nano33,
    ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° (ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΈ ΠΈ сСтСри, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структури).

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

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