Eshtë prezantuar gjuha programuese Solod (So), që ofron një nënset të gjuhës Go, i cili transpilohet në një përfaqësim në gjuhën C (C11), i përshtatshëm për ndërtimin nga kompajlerët GCC, Clang dhe zig cc. Dallimi kryesor i Solod nga Go dhe Tinygo është përdorimi i menaxhimit të dorës së memories, që funksionon pa përdorimin e mbledhësit të mbetjeve, pa alokim automatik të memories dhe pa numërim të referencave. Transpaileri për Solod është shkruar në gjuhën Go dhe shpërndahet nën licencën BSD. Mbështetet funksionimi në Linux, macOS dhe Windows.
Gjuha mbështet struktura, metoda, ndërfaqe, slice, kthim të funksioneve me shumë vlera (p.sh., rezultati + kodi i gabimit), gjenerikë dhe thirrje të vonuara (defer). Me qëllim thjeshtësimi, gjuha nuk mbështet kanale, bashkëprograme dhe mbyllje. Gjatë zhvillimit në gjuhën Solod, mund të përdoren serverë LSP ekzistues, linters, ambiente të integruara zhvillimi dhe redaktues kodi që mbështesin gjuhën Go, si dhe mjetin "go test".
Kodi i shkruar në Solod mund të integrohet me aplikacione në gjuhën C (gjuhë C mund të thërrasë funksione në Solod dhe anasjelltas) dhe nuk kërkon ngjitje runtime. Disa nga fushat kryesore të aplikimit përfshijnë programimin sistemor me mundësi të ngjashme me C, por me sintaksë në stilin Go dhe siguri verifikimi të tipeve. Solod gjithashtu mund të përdoret për të portuar bibliotekat Go për t'u përdorur në projekte në gjuhën C. Paketat Go strings, io, bytes, mem, slices etj. janë portuar në gjuhën C. Përveç grumbullit të bibliotekave Go të portuara, në programet në gjuhën Solod mund të përdoren gjithashtu mbështetje mbi bibliotekën standarde të C libc.
Për default, të gjitha kujtesat alokohen në radhë, por përmes funksioneve Alloc / Free të bibliotekës standarde, mund të alokoni kujtesë në grumbull. Gjejarja e plehrave dhe numërimi i referencave nuk përdoren, por në Solod ofrohen mundësi për verifikimin e tipave dhe përfundimin e papritur në rastin e kërkesës jashtë kufijve të vargjeve. Në këtë rast, nuk kryhen kontrollime për kthimin e treguesve të mbetur (dangling pointer) dhe për mungesën e çlirimit të kujtesës. Si një nga mënyrat kryesore për identifikimin e problemeve që lidhen me kujtesën, përmendet përdorimi i AddressSanitizer (-fsanitize=address) në kompajlerët modernë.
Në përgjithësi, programet e kompiluar në Solod janë më të shpejtë se ato të shkruara në Go. Për shembull, performanca e funksioneve nga paketa Byte është 1.5 herë më e shpejtë me të njëjtin konsum memorjeje. Puna me buferat e bajtave është më e shpejtë 1.3 herë gjatë leximit dhe 2-4 herë gjatë shkruajtjes. Në paketën Map, kërkimi me çelësa të plotë është 3.4 herë më i shpejtë, por modifikimi i çelësave është më i ngadaltë 1.6 herë. Kërkimi me çelësa string është në të njëjtën nivel me gjuhën Go, por modifikimi është më i ngadaltë 1.5 herë. Analiza dhe formatimi i numrave të plotë janë 2 herë më të shpejtë, ndërsa për numrat me pikë është 1.5/1.2 herë më shpejtë. Funksionet e stringeve janë 1.3 herë më të shpejtë, dhe krijimi i stringeve është 2-4 herë më i shpejtë me një reduktim të konsumit të memorjes nga 10-20%.
Burimi: opennet.ru
