Programmēšanas valodas Go izlaišana 1.14

Iesniedzis programmēšanas valodas izlaidums Iet 1.14, ko izstrādā Google ar kopienas līdzdalību kā hibrīdu risinājumu, kas apvieno kompilēto valodu augsto veiktspēju ar skriptu valodu priekšrocībām, piemēram, koda rakstīšanas vieglumu, izstrādes ātrumu un kļūdu aizsardzību. Projekta kods izplata saskaņā ar BSD licenci.

Go sintakse ir balstīta uz pazīstamiem C valodas elementiem ar dažiem aizguvumiem no Python valodas. Valoda ir diezgan kodolīga, bet kods ir viegli lasāms un saprotams. Go kods tiek apkopots atsevišķos bināros izpildāmos failos, kas darbojas sākotnēji, neizmantojot virtuālo mašīnu (profilēšanas, atkļūdošanas un citas izpildlaika problēmu noteikšanas apakšsistēmas ir integrētas kā izpildlaika komponenti), kas ļauj sasniegt veiktspēju, kas salīdzināma ar C programmām.

Projekts sākotnēji tika izstrādāts, ņemot vērā daudzpavedienu programmēšanu un efektīvu darbību daudzkodolu sistēmās, tostarp nodrošinot operatora līmeņa līdzekļus paralēlās skaitļošanas organizēšanai un paralēli izpildītu metožu mijiedarbībai. Valoda nodrošina arī iebūvētu aizsardzību pret pārmērīgi piešķirtiem atmiņas blokiem un nodrošina iespēju izmantot atkritumu savācēju.

Galvenais jauninājumiemieviests Go 1.14 laidienā:

  • Новая система модулей в команде «go» объявлена готовой для повсеместного использования, включена по умолчанию и рекомендована для управления зависимостями вместо GOPATH. Новая система модулей отличается интегрированной поддержкой версионирования, средствами доставки пакетов и улучшенной системой управления зависимостями. При помощи модулей разработчики больше не привязаны к работе внутри дерева GOPATH, могут явно определять зависимости с учётом версий и создавать повторяемые сборки.
  • Pievienots поддержка встраивания интерфейсов с перекрывающимся набором методов. Методы из встроенного интерфейса теперь могут иметь те же имена и одинаковые сигнатуры, что и у методов в уже присутствующих интерфейсах. Явно объявленные методы как и раньше остаются уникальными.
  • Увеличена производительность выражения «defer», использование которого теперь почти не отличается по скорости от прямого вызова отложенной функции, что позволяет применять отсроченный запуск функции в коде, чувствительном к производительности.
  • Обеспечена асинхронное вытеснение сопрограмм (goroutine) — циклы, не содержащие вызова функций, теперь потенциально не могут привести к взаимной блокировке планировщика или задержке начала сборки мусора.
  • Повышена эффективность системы распределения страниц памяти, в которой теперь наблюдается значительно меньше конфликтов блокировок в конфигурациях с большими значениями GOMAXPROCS. Как результат уменьшились задержки и повысилась пропускная способность при параллельном интенсивном распределении больших блоков памяти.
  • Оптимизированы блокировки и снижено число переключений контекста при работе внутренних таймеров, используемых в функциях time.After, time.Tick, net.Conn.SetDeadline.
  • В команде go по умолчанию активирован флаг «-mod=vendor», если в корне имеется каталог vendor, предназначенный для поставки внешних зависимостей, привязанных к определённому поставщику. Добавлен отдельный флаг «-mod=mod» для загрузки модулей из кэша модулей, а не из каталога «vendor». Если файл go.mod доступен только для чтения по умолчанию обеспечено выставление флага «-mod=readonly», если отсутствует верхний каталог «vendor». Добавлен флаг «-modfile=file» для задания альтернативного файла go.mod вместо имеющегося в корневом каталоге модуля.
  • Добавлена переменная окружения GOINSECURE, при установке которой команда go не требует использования HTTPS и пропускает проверку сертификатов при загрузке модулей напрямую.
  • В компилятор добавлен включённый по умолчанию флаг «-d=checkptr» для проверки кода на соответствие правилам безопасного использования unsafe.Pointer.
  • В поставку включён новый пакет hash/maphash с некриптографическими хэш-функциями для создания хэш-таблиц для произвольных байтовых последовательностей или строк.
  • Добавлена экспериментальная поддержка 64-разрядной платформы RISC-V в Linux.
  • Добавлена поддержка FreeBSD на 64-разрядных системах ARM.

Avots: opennet.ru

Pievieno komentāru