Go программалоо тили релиз 1.14

киргизилген программалоо тили чыгаруу Go 1.14, Google тарабынан коомчулуктун катышуусу менен иштелип чыккан гибриддик чечим катары компиляцияланган тилдердин жогорку натыйжалуулугун скрипт тилдеринин артыкчылыктары менен, мисалы, код жазуунун оңойлугу, иштеп чыгуу ылдамдыгы жана каталардан коргоо. Долбоор коду жайылуу BSD лицензиясы боюнча.

Go синтаксиси Python тилинен алынган кээ бир C тилинин тааныш элементтерине негизделген. Тили абдан кыска, бирок кодду окуу жана түшүнүү оңой. Go коду виртуалдык машинаны колдонбостон өз алдынча иштеген экилик аткарылуучу файлдарга түзүлөт (профильдөө, мүчүлүштүктөрдү оңдоо жана башка иштөө учурундагы көйгөйлөрдү аныктоочу подсистемалар катары интеграцияланган иштөө убактысынын компоненттери), бул C программалары менен салыштырууга болот.

Долбоор адегенде көп агымдуу программалоону жана көп ядролуу системаларда эффективдүү иштөөнү, анын ичинде параллелдүү эсептөөлөрдү жана параллелдүү аткарылуучу методдордун ортосундагы өз ара аракеттенүүнү уюштуруу үчүн оператор деңгээлиндеги каражаттарды камсыз кылуу менен иштелип чыккан. Тил ошондой эле ашыкча бөлүнгөн эстутум блокторуна каршы камтылган коргоону камсыз кылат жана таштанды жыйгычты колдонуу мүмкүнчүлүгүн берет.

негизги инновацияларGo 1.14 релизинде киргизилген:

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

Source: opennet.ru

Комментарий кошуу