ИзданиС Π½Π° 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 Π½ΡƒΠ΄ΠΈ ΠΈ Π½ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚Ρ€Π°Π΅ΡšΠ΅ која ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° распорСдувач, систСм Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈ Ρ€Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈ со стрингови ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ систСми. НСкои ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΈ Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡ˜Π°, сС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ создадСни Π²Ρ€Π· основа Π½Π° Π½ΠΎΠ²ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚Ρ€Π°Π΅ΡšΠ΅.

    ΠœΠ΅Ρ“Ρƒ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ 0.7 сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žtinygo testβ€œ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ“ΡƒΠ±Ρ€Π΅ Π·Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ Ρ†Π΅Π»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈ (Π²Ρ€Π· основа Π½Π° ARM Cortex-M) ΠΈ WebAssembly, ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΠ»ΠΎΡ‡ΠΊΠ°Ρ‚Π° HiFive1 rev B Π²Ρ€Π· основа Π½Π° RISC- V Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ ΠΏΠ»ΠΎΡ‡ΠΊΠ°Ρ‚Π° Arduino nano33,
    ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Ρ˜Π°Π·ΠΈΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° (ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π±ΠΈΡ‚ полиња со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‡ΠΈ ΠΈ поставувачи, ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структури).

    Π˜Π·Π²ΠΎΡ€: opennet.ru

  • Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€