Издање програмског језика Го 1.18

Представљено је издање програмског језика Го 1.18, који развија Гоогле уз учешће заједнице као хибридно решење које комбинује високе перформансе компајлираних језика са таквим предностима скриптних језика као што је једноставност писања кода , брзина развоја и заштита од грешака. Код пројекта се дистрибуира под БСД лиценцом.

Го-ова синтакса је заснована на познатим елементима језика Ц са неким позајмицама из језика Питхон. Језик је прилично концизан, али код се лако чита и разуме. Го код се компајлира у самосталне бинарне извршне датотеке које се покрећу нативно без коришћења виртуелне машине (профилисање, модули за отклањање грешака и други подсистеми за откривање проблема током извршавања су интегрисани као компоненте времена извршавања), што омогућава перформансе упоредиве са Ц програмима.

Пројекат је иницијално развијен са циљем вишенитног програмирања и ефикасног рада на системима са више језгара, укључујући обезбеђивање средстава на нивоу оператера за организовање паралелног рачунарства и интеракцију између паралелно извршаваних метода. Језик такође обезбеђује уграђену заштиту од претерано додељених меморијских блокова и пружа могућност коришћења сакупљача смећа.

Нова верзија додаје подршку за генеричке функције и типове (генерике), уз помоћ којих програмер може дефинисати и користити функције дизајниране за рад са неколико типова одједном. Такође је могуће користити интерфејсе за креирање комбинованих типова који обухватају више типова података. Подршка за генеричке лекове је имплементирана без нарушавања компатибилности са постојећим кодом. // Збир вредности скупа, ради за типове инт64 и флоат64 фунц СумИнтсОрФлоатс[К цомпарабле, В инт64 | флоат64](м мап[К]В) В { вар с В фор _, в := опсег м { с += в } ретурн с } // Друга опција са генеричком дефиницијом типа: типе Нумбер интерфаце { инт64 | флоат64 } фунц СумНумберс[К упоредиви, В број](м мапа[К]В) В { вар с В за _, в := опсег м { с += в } ретурн с }

Остала побољшања:

  • Услужни програми за тестирање фузинг кода су интегрисани у стандардни комплет алата. Током фузинг тестирања генерише се ток свих могућих случајних комбинација улазних података и евидентирају се могући кварови током њихове обраде. Ако се секвенца сруши или не одговара очекиваном одговору, онда је велика вероватноћа да ово понашање указује на грешку или рањивост.
  • Додата подршка за мулти-модуларне радне просторе, омогућавајући вам да извршавате команде на више модула одједном, што вам омогућава да истовремено правите и покрећете код у више модула.
  • Значајне оптимизације перформанси су направљене за системе засноване на Аппле М1, АРМ64 и ПоверПЦ64 процесорима. Омогућена је могућност коришћења регистара уместо стека за прослеђивање аргумената функцијама и враћање резултата. Побољшано инлине одвијање петљи од стране компајлера. Провера типа у компајлеру је потпуно редизајнирана. Неки тестови показују повећање перформанси кода за 20% у поређењу са претходним издањем, али сама компилација траје око 15% дуже.
  • Током рада, повећана је ефикасност враћања ослобођене меморије у оперативни систем и побољшан рад сакупљача смећа чије је понашање постало предвидљивије.
  • Нови пакети нет/нетип и дебуг/буилдинфо су додати стандардној библиотеци. Подршка за ТЛС 1.0 и 1.1 је подразумевано онемогућена у коду клијента. Модул црипто/к509 је престао да обрађује сертификате потписане помоћу СХА-1 хеша.
  • Захтеви за окружење у Линук-у су повећани да бисте функционисали, сада морате да имате Линук језгро од најмање верзије 2.6.32. У следећем издању, сличне промене се очекују за ФрееБСД (подршка за грану ФрееБСД 11.к ће бити укинута) и најмање ће бити потребно да ФрееБСД 12.2 ради.

Извор: опеннет.ру

Додај коментар