Tinygo 0.7.0 рдХреЛ рд░рд┐рд▓реАрдЬ, LLVM-рдЖрдзрд╛рд░рд┐рдд Go рдХрдореНрдкрд╛рдЗрд▓рд░

рдЙрдкрд▓рдмреНрдз рдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░рд┐рд▓реАрдЬ Tinygo реж.рен.реж, рдЬрд╕рд▓реЗ рдкрд░рд┐рдгрд╛рдо рдХреЛрдбрдХреЛ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд░ рдХрдо рд╕реНрд░реЛрдд рдЦрдкрдд, рдЬрд╕реНрддреИ рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╣рд░реВ рд░ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдПрдХрд▓-рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Go рднрд╛рд╖рд╛ рдХрдореНрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫред рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд BSD рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрддред

рд╡рд┐рднрд┐рдиреНрди рд▓рдХреНрд╖рд┐рдд рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдХрд▓рди LLVM рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ Go рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдореБрдЦреНрдп рдЯреБрд▓рдХрд┐рдЯрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрд▓рд╛рдИ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдорд▓рд╛рдИ рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╣рд░реВрдорд╛ рд╕реАрдзреИ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ, рд╕реНрд╡рдЪрд╛рд▓рди рд▓рд┐рдкрд┐рд╣рд░реВ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ Go рд▓рд╛рдИ рднрд╛рд╖рд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред

рдирдпрд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЗрд░рдгрд╛ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдкрд░рд┐рдЪрд┐рдд рдЧреЛ рднрд╛рд╖рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЗрдЪреНрдЫрд╛ рдерд┐рдпреЛ - рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рддрд░реНрдХ рдЧрд░реЗ рдХрд┐ рдпрджрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдерди рд╕рдВрд╕реНрдХрд░рдг рдерд┐рдпреЛ рднрдиреЗ, рддреНрдпрд╕реЛ рднрдП рдХрд┐рди рдЧреЛ рднрд╛рд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдирдЧрд░реНрдиреЗред рдЬрд╛рдиреБрд╣реЛрд╕реН рдЪрдпрди рдЧрд░рд┐рдпреЛ Rust рдХреЛ рд╕рдЯреНрдЯрд╛ рдХрд┐рдирднрдиреЗ рдпреЛ рд╕рд┐рдХреНрди рд╕рдЬрд┐рд▓реЛ рдЫ, coroutine-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдирд╛рдиреНрддрд░рдХреЛ рд▓рд╛рдЧрд┐ рдереНрд░реЗрдб-рд╕реНрд╡рддрдиреНрддреНрд░ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп ("рдмреНрдпрд╛рдЯреНрд░реА рд╕рдорд╛рд╡реЗрд╢") рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рдпрд╕рдХреЛ рд╣рд╛рд▓рдХреЛ рд░реВрдкрдорд╛, Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary рд░ Phytec рдмрд╛рдЯ рд╡рд┐рднрд┐рдиреНрди рдмреЛрд░реНрдбрд╣рд░реВ рд╕рд╣рд┐рдд 15 рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░ рдореЛрдбреЗрд▓рд╣рд░реВ рд╕рдорд░реНрдерд┐рдд рдЫрдиреНред рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ WebAssembly рдврд╛рдБрдЪрд╛рдорд╛ рд░ Linux рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред ESP8266/ESP32 рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рдЕрдЭреИ рдЫреИрди, рддрд░ LLVM рдорд╛ Xtensa рдЪрд┐рдкрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЫреБрдЯреНрдЯреИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдЫ, рдЬреБрди рдЕрдЭреИ рдкрдирд┐ рдЕрд╕реНрдерд┐рд░ рднрдиреА рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ рд░ TinyGo рд╕рдБрдЧ рдПрдХреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫреИрдиред

рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рдХреНрд╖реНрдпрд╣рд░реВ:

  • рдзреЗрд░реИ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рдЙрддреНрдкрд╛рджрди;
  • рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░ рдмреЛрд░реНрдбрд╣рд░реВрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди;
  • рд╡реЗрдм рдХреЛ рд▓рд╛рдЧреА рдЖрд╡реЗрджрди рдХреЛ рд╕рдВрднрд╛рд╡рдирд╛;
  • C рдорд╛ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдХрд▓ рдЧрд░реНрджрд╛ рдиреНрдпреВрдирддрдо рдУрднрд░рд╣реЗрдбрдХреЛ рд╕рд╛рде CGo рд╕рдорд░реНрдерди;
  • рдзреЗрд░реИ рдорд╛рдирдХ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд░ рдпрд╕рд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА рдорд╛рдирдХ рдЕрд╡рд╕реНрдерд┐рдд рдХреЛрдб рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ред

    рдмрд╣реБ-рдХреЛрд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдпрд╣рд░реВ рдордзреНрдпреЗ рд╣реЛрдЗрди,
    рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдХреЛрд░рд╛рдЙрдЯрд┐рдирд╣рд░реВрдХреЛ рдХреБрд╢рд▓ рдкреНрд░рдХреНрд╖реЗрдкрдг (рдХреЛрд░реБрдЯрд┐рдирд╣рд░реВрдХреЛ рд╕реБрд░реБрд╡рд╛рдд рдЖрдлреИрдВрдорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдорд░реНрдерд┐рдд рдЫ), рд╕рдиреНрджрд░реНрдн рдХрдореНрдкрд╛рдЗрд▓рд░ рдЬреАрд╕реАрдХреЛ рдкреНрд░рджрд░реНрд╢рди рд╕реНрддрд░рдХреЛ рдЙрдкрд▓рдмреНрдзрд┐ (рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди LLVM рдорд╛ рдЫреЛрдбрд┐рдПрдХреЛ рдЫ рд░ рдХреЗрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдЯрд┐рдирд┐рдЧреЛ gc рднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рд╣реБрди рд╕рдХреНрдЫ) рд░ рдкреВрд░реНрдгред рдЕрдиреБрдХреВрд▓рддрд╛ рд╕рдмреИ рдЧреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд╕рдБрдЧред

    рд╕рдорд╛рди рдХрдореНрдкрд╛рдЗрд▓рд░рдмрд╛рдЯ рдореБрдЦреНрдп рднрд┐рдиреНрдирддрд╛ emgo рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Go рдХреЛ рдореМрд▓рд┐рдХ рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдореЛрдбреЗрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рд╣реЛ рд░ рдпрд╕рд▓рд╛рдИ C рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рдХреБрд╢рд▓ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдЧрд░реНрди LLVM рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред Tinygo рд▓реЗ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рдЕрдиреБрд╕реВрдЪрдХ, рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдкреНрд░рдгрд╛рд▓реА, рд░ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реНрдЯреНрд░рд┐рдЩ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред рдХреЗрд╣реА рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ, рдЬрд╕реНрддреИ рд╕рд┐рдЩреНрдХ рд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯ, рдирдпрд╛рдБ рд░рдирдЯрд╛рдЗрдордХреЛ рдЖрдзрд╛рд░рдорд╛ рдкреБрди: рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред

    рд░рд┐рд▓реАрдЬ 0.7 рдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдордзреНрдпреЗ "tinygo test" рдЖрджреЗрд╢рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рдХреНрд╖рд┐рдд рдмреЛрд░реНрдбрд╣рд░реВ (ARM Cortex-M рдорд╛ рдЖрдзрд╛рд░рд┐рдд) рд░ WebAssembly рдХреЛ рд▓рд╛рдЧрд┐ рдлреЛрд╣реЛрд░ рд╕рдВрдХрд▓рди рд╕рдорд░реНрдердирдХреЛ рдкреНрд░рд╛рд╡рдзрд╛рди, RISC-рдорд╛ рдЖрдзрд╛рд░рд┐рдд HiFive1 rev B рдмреЛрд░реНрдбрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердиред V рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд░ Arduino nano33 рдмреЛрд░реНрдб,
    рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди (рдЧреЗрдЯрд░ рд░ рд╕реЗрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрд┐рдЯ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди, рдмреЗрдирд╛рдореА рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди)ред

    рд╕реНрд░реЛрдд: opennet.ru

  • рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди