Projekti Solod zhvillon një nëngrup të gjuhës Go, i përkthyer në gjuhën C

E prezantuar gjuha e programimit Solod (So), e cila ofron një nëngrup të gjuhës Go, e transpiluara në një përfaqësim në gjuhën C (C11), e përshtatshme për ndërtimin nga kompilatorët GCC, Clang dhe zig cc. Dallimi kryesor i Solod nga Go dhe Tinygo është përdorimi i menaxhimit manual të memories, i cili funksionon pa përdorimin e mbledhësit të mbetjeve, pa alokim automatike të memories dhe pa numërimin e referencave. Transpajleri për Solod është shkruar në gjuhën Go dhe shpërndahet nën licencën BSD. Mbështetet puna në Linux, macOS dhe Windows.

Gjuha mbështet struktura, metoda, ndërfaqe, slice, kthim funksionesh me vlera të shumta (për shembull, rezultati + kodi i gabimit), gjenerikë dhe thirrje të vonuara (defer). Me qëllim thjeshtësimin, gjuha nuk mbështet kanalet, kooperative dhe mbylljet. Gjatë zhvillimit në gjuhën Solod, mund të përdoren serverë ekzistues LSP, linters, ambiente të integruara të zhvillimit dhe redaktues kode 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 lidhje runtime. Nga fushat kryesore të aplikimit përmendet programimi sistemor me mundësi të ngjashme me C-në, por me një sintaksë në stilin e Go dhe duke siguruar verifikimin e llojeve. Solod gjithashtu mund të përdoret për portimin e bibliotekave Go për t'u përdorur në projekte në C. Paketat Go strings, io, bytes, mem, slices dhe të tjera janë portuar në gjuhën C. Përveç setit të bibliotekave të portuara të Go, në programet në gjuhën Solod mund të përdoren mbështetje nga biblioteka standarde C libc.

Në mënyrë default, e gjithë memoria alokohet në stack, por nëpërmjet funksioneve Alloc / Free të bibliotekës standarde mund të alokohet memoria në heap. Mbledhja e mbetjeve dhe numërimi i referencave nuk përdoren, por në Solod ofrohen mundësi për verifikimin e llojeve dhe përfundimin e emergjencës kur kërkohet jashtë kufijve të array. Në të njëjtën kohë, nuk bëhen verifikime për rikthimin e treguesve të varur (dangling pointer) dhe mungesën e lirimit të memories. Si mënyra kryesore për identifikimin e problemeve në punën me memorien përmendet përdorimi i AddressSanitizer (-fsanitize=address) në kompiluese moderne.

PĂ«r sa i pĂ«rket performancĂ«s, programet e kompiluar, tĂ« shkruara nĂ« Solod, nĂ« shumicĂ«n e rasteve janĂ« mĂ« tĂ« shpejtĂ« se programet nĂ« Go. PĂ«r shembull, performanca e funksioneve nga paketa Byte Ă«shtĂ« 1.5 herĂ« mĂ« e shpejtĂ« me konsum tĂ« njĂ«jtĂ« tĂ« memories. Puna me buferat e byte-ve Ă«shtĂ« mĂ« e shpejtĂ« 1.3 herĂ« gjatĂ« leximit dhe 2-4 herĂ« gjatĂ« shkrimit. NĂ« paketĂ«n Map, marrja e mostrave sipas çelĂ«sit tĂ« numrave Ă«shtĂ« 3.4 herĂ« mĂ« e shpejtĂ«, por modifikimi i çelĂ«seve Ă«shtĂ« mĂ« i ngadaltĂ« 1.6 herĂ«. Marrja e mostrave sipas çelĂ«sve tĂ« vargjeve Ă«shtĂ« nĂ« tĂ« njĂ«jtin nivel me gjuhĂ«n Go, por modifikimi Ă«shtĂ« mĂ« i ngadaltĂ« 1.5 herĂ«. Analiza dhe formatimi i numrave tĂ« tĂ«rĂ« janĂ« 2 herĂ« mĂ« tĂ« shpejtĂ«, ndĂ«rsa pĂ«r numrat me pikĂ« tĂ« lĂ«vizshme — 1.5/1.2 herĂ« mĂ« tĂ« shpejtĂ«. Funksionet pĂ«r vargjet janĂ« 1.3 herĂ« mĂ« tĂ« shpejta, ndĂ«rsa krijimi i vargjeve Ă«shtĂ« 2-4 herĂ« mĂ« i shpejtĂ« me njĂ« ulje tĂ« konsumit tĂ« memories prej 10-20%.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster