Лоиҳаи Solod як зермаҷмӯи забони Go-ро таҳия мекунад, ки ба забони C тарҷума шудааст.

Забони барномасозии Solod (So) пешниҳод карда мешавад. Он зермаҷмӯи забони Go-ро пешниҳод мекунад, ки ба намояндагии C (C11) табдил дода шудааст, ки барои тартибдиҳӣ бо компиляторҳои GCC, Clang ва zig cc мувофиқ аст. Фарқи асосии байни Solod, Go ва Tinygo истифодаи идоракунии дастӣ дар хотира мебошад, ки бе ҷамъкунандаи партов, тақсимоти автоматии хотира ва ҳисобкунии истинод кор мекунад. Транспилер барои Solod бо забони Go навишта шудааст ва тибқи иҷозатномаи BSD паҳн карда мешавад. Он дастгирӣ мекунад Linux, macOS и Windows.

Забон сохторҳо, усулҳо, интерфейсҳо, буришҳо, функсияҳоеро, ки арзишҳои сершуморро (масалан, натиҷа + рамзи хато) бармегардонанд, генерикӣ ва зангҳои таъхиршуда (defer)-ро дастгирӣ мекунад. Барои соддагӣ, забон каналҳо, корутинҳо ё бастани онҳоро дастгирӣ намекунад. Таҳияи Solod метавонад серверҳои мавҷудаи LSP, линтерҳо, муҳитҳои таҳияи муттаҳидшуда ва муҳаррирони рамзро, ки забони Go-ро дастгирӣ мекунанд, инчунин занҷири абзорҳои "go test"-ро истифода барад.

Коде, ки бо забони Solod навишта шудааст, метавонад бо барномаҳои C ҳамгиро карда шавад (C метавонад функсияҳои Solod-ро даъват кунад ва баръакс) ва вақти иҷроро талаб намекунад. Самтҳои асосии татбиқ барномасозии системаҳоро дар бар мегиранд, ки қобилиятҳои ба забони C монанд доранд, аммо синтаксиси услуби Go ва санҷиши намудро доранд. Solod инчунин метавонад барои интиқоли китобхонаҳои Go барои истифода дар лоиҳаҳои C истифода шавад. Бастаҳои Go, ба монанди strings, io, bytes, mem, slice ва дигарон ба забони C интиқол дода шудаанд. Илова бар маҷмӯи китобхонаҳои портшудаи Go, барномаҳои Solod метавонанд аз пайвастшавӣ барои китобхонаи стандартии C, libc, истифода баранд.

Бо нобаёнӣ, тамоми хотира дар стек ҷудо карда мешавад, аммо тақсимоти тӯда бо истифода аз функсияҳои Alloc / Free китобхонаи стандартӣ имконпазир аст. Ҷамъоварии партовҳо ва ҳисобкунии истинодҳо истифода намешаванд, аммо Solod хусусиятҳоро барои санҷиши намудҳо пешниҳод мекунад ва ҳангоми дастрасӣ ба массив аз маҳдудиятҳо суқут мекунад. Нишондиҳандаи овезон бармегардад ва нодуруст озод кардани хотира тафтиш карда намешавад. Истифодаи AddressSanitizer (-fsanitize=address) дар компиляторҳои муосир ҳамчун усули асосии муайян кардани мушкилоти хотира зикр шудааст.

Аз нигоҳи иҷроиш, барномаҳои компилятсионӣ, ки дар Solod навишта шудаанд, одатан нисбат ба барномаҳои Go тезтаранд. Масалан, функсияҳо аз бастаи Byte бо истеъмоли якхелаи хотира 1.5 маротиба тезтар иҷро мешаванд. Амалиёти буферии байт барои хондан 1.3 маротиба ва барои навиштан 2-4 маротиба тезтар аст. Дар бастаи Map, ҷустуҷӯи калиди бутун 3.4 маротиба тезтар аст, аммо тағир додани калид 1.6 маротиба сусттар аст. Ҷустуҷӯи калиди сатрӣ бо Go баробар аст, аммо тағир додан 1.5 маротиба сусттар аст. Таҷзия ва форматкунии ададҳои бутун 2 маротиба тезтар аст ва таҳлили нуқтаи шинокунанда 1,5/1.2 маротиба тезтар аст. Функсияҳои сатрӣ 1.3 маротиба тезтаранд ва эҷоди сатр 2-4 маротиба тезтар аст ва истеъмоли хотира 10-20% кам мешавад.

Манбаъ: opennet.ru

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster