Tinygo 0.7.0, LLVM-рдЖрдзрд╛рд░рд┐рдд рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

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

рд╡рд┐рд╡рд┐рдз рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рд╕рдВрдХрд▓рди LLVM рд╡рд╛рдкрд░реВрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ 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 рд╕рдкреЛрд░реНрдЯ;
  • рдмрд╣реБрддреЗрдХ рдорд╛рдирдХ рдкреЕрдХреЗрдЬреЗрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЖрдгрд┐ рддреЗ рди рдмрджрд▓рддрд╛ рдЬреЗрдиреЗрд░рд┐рдХ рд╡рд┐рджреНрдпрдорд╛рди рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛.

    рдорд▓реНрдЯреА-рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рд╕рдорд░реНрдерди рд╣реЗ рдореБрдЦреНрдп рдЙрджреНрджрд┐рд╖реНрдЯрд╛рдВрдкреИрдХреА рдирд╛рд╣реА,
    рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдХреЛрд░реЛрдЯреАрдирдЪреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдкреНрд░рдХреНрд╖реЗрдкрдг (рдХреЛрд░реЛрдЯреАрдирдЪреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рд╕реНрд╡рддрдГрдЪ рдкреВрд░реНрдгрдкрдгреЗ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ), рд╕рдВрджрд░реНрдн рдХрдВрдкрд╛рдЗрд▓рд░ рдЬреАрд╕реАрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреА рдкрд╛рддрд│реА рдЧрд╛рдардгреЗ (рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдПрд▓рдПрд▓рд╡реНрд╣реАрдПрдорд╡рд░ рд╕реЛрдбрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рдЯрд┐рдирд┐рдЧреЛ рдЬреАрд╕реАрдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд╡рд╛рди рдЕрд╕реВ рд╢рдХрддреЗ) рдЖрдгрд┐ рдкреВрд░реНрдг рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕рд░реНрд╡ рдЧреЛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╣.

    рд╕рдорд╛рди рдХрдВрдкрд╛рдЗрд▓рд░рдордзреАрд▓ рдореБрдЦреНрдп рдлрд░рдХ emgo рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди Go рдЪреЗ рдореВрд│ рдореЗрдорд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдореЙрдбреЗрд▓ рдЬрддрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдЖрд╣реЗ рдЖрдгрд┐ LLVM рдЪрд╛ рд╡рд╛рдкрд░ C рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рдХрд╛рд░реНрдпрдХреНрд╖рдо рдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗ. Tinygo рдПрдХ рдирд╡реАрди рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдпрдмреНрд░рд░реА рджреЗрдЦреАрд▓ рдСрдлрд░ рдХрд░рддреЗ рдЬреА рд╢реЗрдбреНрдпреВрд▓рд░, рдореЗрдорд░реА рдНрд▓реЛрдХреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдЖрдгрд┐ рдХреЙрдореНрдкреЕрдХреНрдЯ рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣рдБрдбрд▓рд░реНрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ. рдХрд╛рд╣реА рдкреЕрдХреЗрдЬреЗрд╕, рдЬрд╕реЗ рдХреА рд╕рд┐рдВрдХ рдЖрдгрд┐ рд░рд┐рдлреНрд▓реЗрдХреНрдЯ, рдирд╡реАрди рд░рдирдЯрд╛рдЗрдордЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд.

    рд░рд┐рд▓реАрдЭ 0.7 рдордзреАрд▓ рдмрджрд▓рд╛рдВрдкреИрдХреА "рдЯрд┐рдирд┐рдЧреЛ рдЯреЗрд╕реНрдЯ" рдХрдорд╛рдВрдбрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдмрд╣реБрддреЗрдХ рд▓рдХреНрд╖реНрдп рдмреЛрд░реНрдб (рдПрдЖрд░рдПрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо рд╡рд░ рдЖрдзрд╛рд░рд┐рдд) рдЖрдгрд┐ рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реАрд╕рд╛рдареА рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рди рд╕рдорд░реНрдердирд╛рдЪреА рддрд░рддреВрдж, RISC- рд╡рд░ рдЖрдзрд╛рд░рд┐рдд HiFive1 рд░реЗрд╡реНрд╣ рдмреА рдмреЛрд░реНрдбрд╕рд╛рдареА рд╕рдорд░реНрдерди. V рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЖрдгрд┐ Arduino nano33 рдмреЛрд░реНрдб,
    рд╕реБрдзрд╛рд░рд┐рдд рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди (рдЧреЗрдЯрд░реНрд╕ рдЖрдгрд┐ рд╕реЗрдЯрд░ рд╡рд╛рдкрд░реВрди рдмрд┐рдЯ рдлреАрд▓реНрдбрд╕рд╛рдареА рд╕рдорд░реНрдерди, рдирд┐рдирд╛рд╡реА рд╕рдВрд░рдЪрдирд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди).

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

  • рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛