αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Tinygo 0.7.0, LLVM-based Go compiler

αž˜αžΆαž“ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‚αž˜αŸ’αžšαŸ„αž„ Tinygo 0.7.0αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αž—αžΆαžŸαžΆ Go αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž”αž„αŸ’αžšαž½αž˜αž“αŸƒαž€αžΌαžŠαž›αž‘αŸ’αž’αž•αž› αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž“αž’αžΆαž“αž‘αžΆαž” αžŠαžΌαž…αž‡αžΆ microcontrollers αž“αž·αž„ compact single-processor systemsαŸ” αž€αžΌαžŠ αž…αŸ‚αž€αž…αžΆαž™β€‹αžŠαŸ„αž™ αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ BSD αŸ”

αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαž‚αŸ„αž›αžŠαŸ…αž•αŸ’αžŸαŸαž„αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ LLVM αž αžΎαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸαžŸαŸ†αžαžΆαž“αŸ‹αž–αžΈαž‚αž˜αŸ’αžšαŸ„αž„ Go αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžšαž—αžΆαžŸαžΆαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž›αžΎ microcontrollers αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™ Go αž”αŸ’αžšαžΎαž‡αžΆαž—αžΆαžŸαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αŸ”

αž€αžΆαžšαž›αžΎαž€αž‘αžΉαž€αž…αž·αžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž˜αžΈαž‚αžΊαž€αžΆαžšαž…αž„αŸ‹αž”αŸ’αžšαžΎαž—αžΆαžŸαžΆ Go αžŠαŸ‚αž›αž’αŸ’αž›αžΆαž”αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαžαžΌαž… - αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αžΆαž“αž αŸαžαž»αž•αž›αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αŸ†αžŽαŸ‚ Python αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ microcontrollers αž“αŸ„αŸ‡αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž—αžΆαžŸαžΆαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžŸαžΆ Go αŸ” αž‘αŸ… αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ Rust αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžšαŸ€αž“ αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž―αž€αžšαžΆαž‡αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ coroutine αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžŠαž„αŸ‹αžŠαžΆαžšαž™αŸ‰αžΆαž„αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™ ("αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžαŸ’αž˜")αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžšαž”αžŸαŸ‹αžœαžΆ αž˜αŸ‰αžΌαžŒαŸ‚αž› microcontroller αž…αŸ†αž“αž½αž“ 15 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αŸ’αžαžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αž–αžΈ Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary αž“αž·αž„ PhytecαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ WebAssembly αž“αž·αž„αž‡αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αžΈαž“αž»αž…αŸ” αž‚αžΆαŸ†αž‘αŸ’αžšαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ ESP8266/ESP32 αž“αŸ…αž‘αžΎαž™αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αž˜αŸ’αžšαŸ„αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž” Xtensa αž“αŸ…αž€αŸ’αž“αž»αž„ LLVM αžŠαŸ‚αž›αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž˜αž·αž“αžŸαŸ’αžαž·αžαžŸαŸ’αžαŸαžš αž“αž·αž„αž˜αž·αž“αž‘αžΆαž“αŸ‹αžšαž½αž…αžšαžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™ TinyGoαŸ”

αž‚αŸ„αž›αžŠαŸ…αž‚αž˜αŸ’αžšαŸ„αž„αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  • αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž”αž„αŸ’αžšαž½αž˜αžαŸ’αž›αžΆαŸ†αž„;
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΌαžŠαŸ‚αž›αž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αžαž“αŸƒαž€αŸ’αžšαž»αž˜αž”αŸ’αžšαžΉαž€αŸ’αžŸαžΆ microcontroller;
  • αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžŽαŸ’αžαžΆαž‰;
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš CGo αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαž“αŸ…αž–αŸαž›αž αŸ…αž˜αž»αžαž„αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ C;
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž“αž·αž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž€αžΌαžŠαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžœαžΆαŸ”

    αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αž αž»αžŸαŸ’αž“αžΌαž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‚αŸ„αž›αžŠαŸ…αž…αž˜αŸ’αž”αž„αž‘αŸ
    αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž…αŸ†αž“αž½αž“αžŠαŸαž…αŸ’αžšαžΎαž“αž“αŸƒ coroutines (αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒ coroutines αžαŸ’αž›αž½αž“αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰) αžŸαž˜αž·αž‘αŸ’αž’αž·αž•αž›αž“αŸƒαž€αž˜αŸ’αžšαž·αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αž―αž€αžŸαžΆαžšαž™αŸ„αž„ gc (αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž»αž€αž’αŸ„αž™ LLVM αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž½αž™αž…αŸ†αž“αž½αž“ Tinygo αž’αžΆαž…αž›αžΏαž“αž‡αžΆαž„ gc) αž“αž·αž„αž”αž‰αŸ’αž…αž”αŸ‹αŸ” αž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆ αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

    αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžŸαŸ†αžαžΆαž“αŸ‹αž–αžΈαž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ emgo αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‚αŸ†αžšαžΌαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹ Go αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜ αž“αž·αž„αž”αŸ’αžšαžΎ LLVM αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αžœαžΆαž‘αŸ…αž‡αžΆαžαŸ†αžŽαžΆαž„ C αŸ” Tinygo αž€αŸαž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž“αžΌαžœαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž˜αžΈαžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž› αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ‚αž„αž…αŸ‚αž€αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαŸ’αžŸαŸ‚αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž„αŸ’αžšαž½αž˜αŸ” αž€αž‰αŸ’αž…αž”αŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž“αž·αž„αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžšαž™αŸˆαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž˜αžΈαŸ”

    αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ 0.7 αž‚αžΊαž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ "tinygo test" αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ’αžšαž»αž˜αž”αŸ’αžšαžΉαž€αŸ’αžŸαžΆαž‚αŸ„αž›αžŠαŸ…αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ (αž•αŸ’αž’αŸ‚αž€αž›αžΎ ARM Cortex-M) αž“αž·αž„ WebAssembly αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ’αžšαž»αž˜αž”αŸ’αžšαžΉαž€αŸ’αžŸαžΆαž—αž·αž”αžΆαž› HiFive1 rev B αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ RISC- αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ V αž“αž·αž„αž”αž“αŸ’αž‘αŸ‡ Arduino nano33,
    αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž—αžΆαžŸαžΆαž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ (αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαž›αž”αŸŠαžΈαžαžŠαŸ„αž™αž”αŸ’αžšαžΎ getters αž“αž·αž„ setters αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αž“αžΆαž˜αž·αž€) αŸ”

    αž”αŸ’αžšαž—αž–: opennet.ru

  • αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹