The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз языка программирования Go 1.12"
Отправлено opennews, 26-Фев-19 14:22 
Представлен (https://blog.golang.org/go1.12) релиз  языка программирования Go 1.12 (http://golang.org), который развивается компанией  Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок.  Код проекта распространяется (https://golang.org/dl/) под лицензией BSD.

Синтаксис Go основан на привычных элементах  языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код  легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов (http://golang.org/pkg/runtime/)), что позволяет добиться производительности, сопоставимой с программами на языке Си.

Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и  взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.


Основные новшества (http://golang.org/doc/go1.12), представленные в выпуске Go 1.12:

-  В пакет crypto/tls добавлена реализация протокола  TLS 1.3 (https://www.opennet.ru/opennews/art.shtml?num=49126).
В реализации пока отсутствует поддержка режима 0-RTT, применяемого для устранения задержек при возобновлении ранее установленных защищённых соединений. Поддержка TLS 1.3 отключена по умолчанию и для включения требует установки опции "tls13=1" в переменной окружения GODEBUG. Включение TLS 1.3 по умолчанию ожидается в следующем выпуске;

-  Продолжена работа по усовершенствованию новой системы модулей, которую можно применять в качестве альтернативы GOPATH. Система модулей отличается интегрированной поддержкой версионирования, средствами доставки пакетов и улучшенной системой управления зависимостями.  При помощи модулей разработчики больше не привязаны к работе внутри дерева GOPATH, могут явно определять зависимости с учётом версий и создавать повторяемые сборки. Из улучшений по сравнению с прошлым выпуском отмечается реализация поддержки параллельного выполнения операций загрузки и извлечения модулей при помощи команды go. Директива "go" внутри файла go.mod теперь учитывает версию языка Go, используемую в коде модуля (по умолчанию используется текущий релиз).


По умолчанию систему модулей планируется предложить в выпуске Go 1.13. До этого требуется явная активация системы модулей через переменную GO111MODULE=on или использование контекста, в котором модули применяются автоматически (например, когда команда go выполняется не в каталоге  GOPATH/src и когда в корне текущего каталога присутствует файл go.mod). Начиная с текущего выпуска система модулей также автоматически используется при выполнении команд подобных "go run x.go" или "go get rsc.io/2fa@v1.1.0" без явного указания файла  go.mod;

-  В компиляторе улучшен анализ изменения переменных (live variable analysis (https://en.wikipedia.org/wiki/Live_variable_analysis)). Расширен спектр функций для которых по умолчанию применяется inline-развёртывание кода, в том числе данная оптимизация теперь применима для функций, работа которых ограничивается вызовом других функций.


Добавлен новый флаг "-lang" позволяющий выбрать конкретную версию языка, например, в процессе компиляции будет выведена ошибка, если запустить компилятор с флагом "-lang=go1.8" для программы, в которой используется функциональность более новых версий Go.


Улучшена генерация отладочной информации в формате DWARF, в том числе добавлены сведения о выводимых аргументах и местоположении переменных.

-  Значительно увеличена производительность сборки мусора в ситуациях, когда большая часть кучи остаётся активной, что позволяет уменьшить время выделения памяти сразу после сборки мусора. В Go runtime улучшена масштабируемость кода таймеров (timer и deadline) на системах с большим числом CPU;


Обеспечен более агрессивный возврат освобождённой памяти обратно операционной системе. Для возвращения неиспользуемой памяти в Linux  в задействован флаг MADV_FREE, который только помечает блок доступным для освобождения, но не освобождает сразу, что позволяет вернуть его без генерации "page fault", если обращение произошло до его фактического использования ядром.

-  В переменной окружения GODEBUG добавлена поддержка флага "cpu.extension=off", отключающего использования расширенных инструкций CPU в коде стандартной библиотеки и в  runtime;

-  Утилита godoc теперь не предоставляет интерфейс командной строки, а доступна только в форме web-сервера для просмотра документации через браузер. Для вывода подсказки в командной строке следует использовать команду "go doc". В "go doc" добавлена новая опция "-all" для вывода всех экспортируемых API и документации по ним;


-  Детектор состояний гонки (race detector) портирован для платформы  linux/arm64;

-  Прекращена поддержка команды "go tool vet", вместо которой рекомендуется использовать "go vet" с определением поддержки внешних анализаторов кода через модуль analysis (https://golang.org/x/tools/go/analysis);

-  Добавлена поддержка ОС AIX 7.2 и более новых выпусков на системах с архитектурой POWER8 (aix/ppc64);


-  Добавлена поддержка платформы Windows на системах с архитектурой ARM, например, Go теперь можно использовать на платах Raspberry Pi 3 с ОС Windows 10 IoT Core;

-  Для совместимости с будущими выпусками macOS и iOS задействована библиотека libSystem, выступающая прослойкой для выполнения специфичных для платформы Darwin системных вызовов;


Начиная с версии Go 1.13 будет прекращена поддержка macOS 10.10 "Yosemite", в качестве минимально поддерживаемой версии macOS станет 10.11 "El Capitan". В следующем выпуске также планируется прекратить поддержку ветки  FreeBSD 10.x.


URL: https://blog.golang.org/go1.12
Новость: https://www.opennet.ru/opennews/art.shtml?num=50210

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру