Tinygo 0.7.0, LLVM මත පදනම් වූ Go සම්පාදක නිකුත් කිරීම

ඇත ව්යාපෘති නිකුතුව Tinygo 0.7.0, ක්ෂුද්‍ර පාලක සහ සංයුක්ත තනි-ප්‍රොසෙසර පද්ධති වැනි ප්‍රතිඵල සහිත කේතය සහ අඩු සම්පත් පරිභෝජනය අවශ්‍ය වන ප්‍රදේශ සඳහා Go භාෂා සම්පාදකයක් සංවර්ධනය කරයි. කේතය විසින් බෙදා හරිනු ලැබේ BSD බලපත්‍රය යටතේ.

විවිධ ඉලක්ක වේදිකා සඳහා සම්පාදනය LLVM භාවිතයෙන් ක්‍රියාවට නංවනු ලබන අතර, Go ව්‍යාපෘතියේ ප්‍රධාන මෙවලම් කට්ටලයේ භාවිතා කරන පුස්තකාල භාෂාවට සහාය වීමට භාවිතා කරයි. සම්පාදනය කරන ලද වැඩසටහන සෘජුවම ක්ෂුද්‍ර පාලක මත ධාවනය කළ හැකි අතර, ස්වයංක්‍රීය ස්ක්‍රිප්ට් ලිවීමේ භාෂාවක් ලෙස Go භාවිතා කිරීමට ඉඩ සලසයි.

නව ව්‍යාපෘතියක් නිර්මාණය කිරීමේ අභිප්‍රේරණය වූයේ සංයුක්ත උපාංගවල හුරුපුරුදු Go භාෂාව භාවිතා කිරීමට ඇති ආශාවයි - සංවර්ධකයින් තර්ක කළේ ක්ෂුද්‍ර පාලක සඳහා Python අනුවාදයක් තිබේ නම්, Go භාෂාව සඳහා සමාන එකක් නිර්මාණය නොකරන්නේ මන්ද යන්නයි. යන්න තෝරාගත් රස්ට් වෙනුවට එය ඉගෙනීමට පහසු නිසා, coroutine මත පදනම් වූ සමාන්තරකරණය සඳහා නූල්-ස්වාධීන සහාය සපයයි, සහ පුළුල් සම්මත පුස්තකාලයක් ("බැටරි ඇතුළත්") පිරිනමයි.

එහි වත්මන් ස්වරූපයෙන්, Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary සහ Phytec වෙතින් විවිධ පුවරු ඇතුළුව ක්ෂුද්‍ර පාලක මාදිලි 15ක් සහය දක්වයි. WebAssembly ආකෘතියෙන් සහ Linux සඳහා ක්‍රියාත්මක කළ හැකි ගොනු ලෙස බ්‍රවුසරයක ධාවනය කිරීමට වැඩසටහන් සම්පාදනය කළ හැක. ESP8266/ESP32 පාලක සඳහා සහය දක්වයි තවමත් නෑ, නමුත් LLVM හි Xtensa චිපය සඳහා සහය එක් කිරීමට වෙනම ව්‍යාපෘතියක් සංවර්ධනය වෙමින් පවතී, එය තවමත් අස්ථායී ලෙස සලකුණු කර ඇති අතර TinyGo සමඟ ඒකාබද්ධ වීමට සූදානම් නැත.

ව්යාපෘතියේ ප්රධාන අරමුණු:

  • ඉතා සංයුක්ත ක්‍රියාත්මක කළ හැකි ගොනු උත්පාදනය කිරීම;
  • ක්ෂුද්ර පාලක පුවරු වල වඩාත් පොදු ආකෘති සඳහා සහාය;
  • වෙබ් සඳහා අයදුම් කිරීමේ හැකියාව;
  • C හි කාර්යයන් ඇමතීමේ දී අවම පොදු කාර්ය සමඟ CGo සහාය;
  • බොහෝ සම්මත පැකේජ සඳහා සහය සහ පවතින සාමාන්‍ය කේතය වෙනස් නොකර සම්පාදනය කිරීමේ හැකියාව.

    බහු-core පද්ධති සඳහා සහය ප්රධාන අරමුණු අතර නොවේ,
    coroutines විශාල සංඛ්‍යාවක් කාර්යක්ෂමව දියත් කිරීම (coroutines දියත් කිරීම සම්පුර්ණයෙන්ම සහය දක්වයි), reference compiler gc හි කාර්ය සාධන මට්ටම සාක්ෂාත් කර ගැනීම (ප්‍රශස්තකරණය LLVM වෙත ඉතිරි වන අතර සමහර යෙදුම්වල Tinygo gc ට වඩා වේගවත් විය හැක) සහ සම්පූර්ණයි ගැළපුම සියලුම Go යෙදුම් සමඟ.

    සමාන සම්පාදකයෙකුගෙන් ප්රධාන වෙනස emgo කසළ එකතු කිරීම භාවිතයෙන් Go හි මුල් මතක කළමනාකරණ ආකෘතිය සංරක්ෂණය කිරීමට උත්සාහ කිරීම සහ එය C නිරූපණයකට සම්පාදනය කිරීම වෙනුවට කාර්යක්ෂම කේතයක් ජනනය කිරීමට LLVM භාවිතා කිරීමකි. Tinygo විසින් නව ධාවන කාල පුස්තකාලයක් ද පිරිනමයි, එය උපලේඛකයක්, මතක වෙන් කිරීමේ පද්ධතියක් සහ සංයුක්ත පද්ධති සඳහා ප්‍රශස්තිකරණය කරන ලද නූල් හසුරුවන්නක් ක්‍රියාත්මක කරයි. සමමුහුර්ත කිරීම සහ පරාවර්තනය වැනි සමහර පැකේජ නව ධාවන කාලය මත පදනම්ව ප්‍රතිනිර්මාණය කර ඇත.

    නිකුතුවේ 0.7 හි වෙනස්කම් අතර “tinygo test” විධානය ක්‍රියාත්මක කිරීම, බොහෝ ඉලක්ක පුවරු සඳහා කසළ එකතු කිරීමේ සහාය සැපයීම (ARM Cortex-M මත පදනම්ව) සහ WebAssembly, RISC- මත පදනම් වූ HiFive1 rev B පුවරුව සඳහා සහාය වේ. V ගෘහ නිර්මාණ ශිල්පය සහ Arduino nano33 පුවරුව,
    වැඩි දියුණු කරන ලද භාෂා සහාය (Getters සහ setters භාවිතා කරන bit ක්ෂේත්‍ර සඳහා සහය, නිර්නාමික ව්‍යුහයන් සඳහා සහය).

    මූලාශ්රය: opennet.ru

  • අදහස් එක් කරන්න