Presented gjuhë programimi Solod (So), i cili ofron një nënbashkësi të gjuhës Go, e transpajluar në paraqitje në gjuhën C (C11), e përshtatshme për ndërtim me kompajlerët GCC, Clang dhe zig cc. Dallimi kryesor i Solod nga Go është përdorimi i menaxhimit manual të memories, që funksionon pa përdorur garbage collector, pa alokim automatik të memories dhe pa numërim referencash. Transpajleri 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 strukturat, metodat, ndërfaqet, slices, kthimin e disa vlerave nga funksionet (për shembull, rezultat + kod gabimi), gjenerikë dhe thirrje të shtyra (defer). Për thjeshtësi, gjuha nuk mbështet channels, coroutines dhe closures. Gjatë zhvillimit në gjuhën Solod mund të përdoren serverët ekzistues LSP, linter-at, mjediset e integruara të zhvillimit dhe redaktorët e kodit që mbështesin gjuhën Go, si edhe veglat «go test».
Kodi i shkruar në Solod mund të integrohet me aplikacione në gjuhën C (gjuha C mund të thërrasë funksione në Solod dhe anasjelltas) dhe nuk kërkon bashkëngjitjen e runtime. Ndër fushat kryesore të përdorimit përmendet programimi sistemor me mundësi të afërta me C, por me sintaksë në stilin Go dhe me kontroll tipesh. Solod mund të përdoret gjithashtu për portimin e bibliotekave Go për përdorim në projekte në C. Në gjuhën C janë portuar paketat Go:
- strings
- io (antonz.org)
- bytes
- mem
- slices
dhe etj. Përveç koleksionit të bibliotekave Go të portuara në programet në gjuhën Solod mund të përdoren mbështjellësa mbi bibliotekën standarde C libc.
Si parazgjedhje, e gjithë memoria alokohet në stack, por përmes funksioneve Alloc / Free të bibliotekës standarde mund të alokohet memorie në heap. Garbage collector dhe numërimi i referencave nuk përdoren, por në Solod ofrohen mekanizma për kontrollin e tipeve dhe për ndërprerje emergjente kur bëhet qasje jashtë kufijve të një array. Megjithatë, nuk kryhen kontrolle për kthimin e dangling pointer dhe për mungesën e çlirimit të memories. Si mënyra kryesore për zbulimin e problemeve gjatë punës me memorien përmendet përdorimi i AddressSanitizer -fsanitize=address në kompajlerët modernë.
Për nga performanca, programet e kompiluara të shkruara në Solod në shumicën e rasteve janë më të shpejta se programet në Go:
- Performanca e funksioneve nga paketa Byte është 1.5 herë më e shpejtë me konsum identik të memories;
- Puna me buffer-at e bajteve Ă«shtĂ« 1.3 herĂ« mĂ« e shpejtĂ« nĂ« lexim dhe 2â4 herĂ« mĂ« e shpejtĂ« nĂ« shkrim;
- Në paketën Map, marrja sipas çelësit të plotë është 3.4 herë më e shpejtë, por modifikimi i çelësave është 1.6 herë më i ngadaltë;
- Marrja sipas çelësave tekstualë është në të njëjtin nivel me gjuhën Go, por modifikimi është 1.5 herë më i ngadaltë;
- Parsimi dhe formatimi i numrave të plotë është 2 herë më i shpejtë, ndërsa i numrave me presje lundruese 1.5/1.2 herë më i shpejtë;
- Funksionet e vargjeve janĂ« 1.3 herĂ« mĂ« tĂ« shpejta, ndĂ«rsa krijimi i vargjeve Ă«shtĂ« 2â4 herĂ« mĂ« i shpejtĂ«, me ulje tĂ« konsumit tĂ« memories prej 10â20%.
Burimi: linux.org.ru
