Utgivelse av programmeringsspråket Go 1.14

Introdusert utgivelse av programmeringsspråk Gå 1.14, som utvikles av Google med deltakelse fra fellesskapet som en hybridløsning som kombinerer den høye ytelsen til kompilerte språk med fordelene med skriptspråk som enkel skriving av kode, utviklingshastighet og feilbeskyttelse. Prosjektkode distribuert av under BSD-lisens.

Gos syntaks er basert på kjente elementer fra C-språket med noen lån fra Python-språket. Språket er ganske kortfattet, men koden er lett å lese og forstå. Go-kode er kompilert til frittstående binære kjørbare filer som kjører naturlig uten å bruke en virtuell maskin (profilering, feilsøking og andre undersystemer for registrering av kjøretidsproblem er integrert som kjøretidskomponenter), som lar deg oppnå ytelse som kan sammenlignes med C-programmer.

Prosjektet er i utgangspunktet utviklet med tanke på flertrådsprogrammering og effektiv drift på flerkjernesystemer, inkludert å tilby midler på operatørnivå for å organisere parallell databehandling og interaksjon mellom parallellutførte metoder. Språket gir også innebygd beskyttelse mot overtildelte minneblokker og gir muligheten til å bruke en søppeloppsamler.

Den viktigste innovasjonerintrodusert i Go 1.14-utgivelsen:

  • Новая система модулей в команде «go» объявлена готовой для повсеместного использования, включена по умолчанию и рекомендована для управления зависимостями вместо GOPATH. Новая система модулей отличается интегрированной поддержкой версионирования, средствами доставки пакетов и улучшенной системой управления зависимостями. При помощи модулей разработчики больше не привязаны к работе внутри дерева GOPATH, могут явно определять зависимости с учётом версий и создавать повторяемые сборки.
  • La til поддержка встраивания интерфейсов с перекрывающимся набором методов. Методы из встроенного интерфейса теперь могут иметь те же имена и одинаковые сигнатуры, что и у методов в уже присутствующих интерфейсах. Явно объявленные методы как и раньше остаются уникальными.
  • Увеличена производительность выражения «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.

Kilde: opennet.ru

Legg til en kommentar