The OpenNET Project / Index page

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

Релиз языка программирования Go 1.12

26.02.2019 13:27

Представлен релиз языка программирования Go 1.12, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.

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

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

Основные новшества, представленные в выпуске Go 1.12:

  • В пакет crypto/tls добавлена реализация протокола TLS 1.3. В реализации пока отсутствует поддержка режима 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). Расширен спектр функций для которых по умолчанию применяется 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;
  • Добавлена поддержка ОС 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.



  1. Главная ссылка к новости (https://blog.golang.org/go1.12...)
  2. OpenNews: Обновление языка Go 1.11.5 и 1.10.8 с устранением уязвимости
  3. OpenNews: Уязвимости в системе загрузки модулей для языка Go
  4. OpenNews: Релиз языка программирования Go 1.11
  5. OpenNews: Релиз языка программирования Go 1.10
  6. OpenNews: Проект Go опубликовал собственный шрифт для программистов
Лицензия: CC-BY
Тип: Программы
Ключевые слова: golang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.2, Аноним (2), 14:27, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]
  • +7 +/
    > Начиная с версии Go 1.13 будет прекращена поддержка macOS 10.10 "Yosemite", в качестве минимально поддерживаемой версии macOS станет 10.11 "El Capitan". В следующем выпуске также планируется прекратить поддержку ветки FreeBSD 10.x.

    ну теперь можно переключатся обратно на использование perl
    там хоть работать будет вечно

     
     
  • 2.20, Аноним (20), 17:00, 26/02/2019 [^] [ответить]     [к модератору]
  • +1 +/
    Это косается только рефиренсной реализации компилятора Есть еще gccgo Если нуж... весь текст скрыт [показать]
     
     
  • 3.33, Аноним (33), 18:48, 26/02/2019 [^] [ответить]    [к модератору]  
  • +/
    А кстати, как заставить собираться проекты, которые требуют Google Go посредством gccgo?
     
  • 3.74, Онаним (?), 12:37, 01/03/2019 [^] [ответить]    [к модератору]  
  • +/
    > И никто же не жалуется что новый x-code не работает в 10.10.

    Я жалуюсь. Доколе?!

     
  • 1.3, Аноним (3), 14:30, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Кажется еще вчера обновлялся на Йосемити, а оно уже скоро все...
     
  • 1.6, Аноним (6), 14:46, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    > Утилита godoc теперь не предоставляет интерфейс командной строки, а доступна только в форме web-сервера для просмотра документации через браузер

    Шёл 2019 год...

     
     
  • 2.13, Аноним (13), 15:38, 26/02/2019 [^] [ответить]    [к модератору]  
  • +6 +/
    >> Утилита godoc теперь не предоставляет интерфейс командной строки, а доступна только в форме web-сервера для просмотра документации через браузер
    >
    > Шёл 2019 год...

    Для альтернативно одарённых:
    'Для вывода подсказки в командной строке следует использовать команду "go doc"'

     
  • 1.7, Аноним (7), 14:56, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    GNU/Hurd они добавили в GOOS почему и зачем?
     
  • 1.8, Аноним (8), 14:57, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А на go можно dllку создать?
     
     
  • 2.22, Аноним (22), 17:06, 26/02/2019 [^] [ответить]    [к модератору]  
  • +/
    можно, гугли go plugin, но зачем?
     
     
  • 3.27, Аноним (27), 18:24, 26/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    go plugin — это крайне вырожденный случай. можно и обычные динамические библиотеки с сишным ABI делать.
     
     
  • 4.70, Аноним (70), 19:19, 28/02/2019 [^] [ответить]    [к модератору]  
  • +/
    А как на Golang сделать обычную DLL с внешним ABI? Что-то я не слышал о такой возможности.
     
     
  • 5.76, Аноним (27), 18:20, 01/03/2019 [^] [ответить]    [к модератору]  
  • +/
    $ go help buildmode
     
  • 1.11, Аноним (11), 15:35, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >сочетающее высокую производительность компилируемых языков

    Что-то по бенчмарку он даже медленнее Явы:

    https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are

     
     
  • 2.17, evkogan (?), 16:13, 26/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Интересный ресурс И результаты интересные Явы он не медленнее, скорее на одном... весь текст скрыт [показать]
     
     
  • 3.19, asdf (?), 16:29, 26/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Абсолютно ничего интересного, на самом деле Все бенчмарки сводятся к тому умеет... весь текст скрыт [показать]
     
     
  • 4.21, evkogan (?), 17:00, 26/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Не согласен Не надо в коробку тащить все подряд И переизобретать велосипеды Е... весь текст скрыт [показать]
     
  • 3.23, Аноним (23), 17:18, 26/02/2019 [^] [ответить]     [к модератору]  
  • +2 +/
    А кому нужна абстрактная быстрота самого языка Меряться количеством NOP-инструк... весь текст скрыт [показать]
     
  • 3.29, Аноним (27), 18:27, 26/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    Он не пихается на замену плюсам и, тем более, сям. Он, скорее целится в области применения python-а, предлагая при этом статическую типизацию, компиляцию и более простой ffi в C.
     
     
  • 4.31, имя (?), 18:38, 26/02/2019 [^] [ответить]    [к модератору]  
  • +/
    > более простой ffi в C

    Спорное утверждение: cgo только и умеют что поливать помоями за неудобства, вызванные, насколько я понимаю, слишком умным менеджером памяти в go.

     
     
  • 5.77, Аноним (27), 18:24, 01/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Там проблемы с тем, что у go свой ABI из-за pascal-строк и, разумеется, своих в... весь текст скрыт [показать]
     
  • 4.37, evkogan (?), 20:20, 26/02/2019 [^] [ответить]     [к модератору]  
  • +1 +/
    Вот только на нем пытаются писать системный софт Я понимаю демоны написанные на... весь текст скрыт [показать]
     
     
  • 5.39, имя (?), 21:17, 26/02/2019 [^] [ответить]    [к модератору]  
  • +3 +/
    > Что выигрывается?

    Скорость деплоймента: опустим pip install в серную кислоту, а статичный гоферный бинарь в дистилированную воду…


     
     
  • 6.46, Буратино (?), 00:16, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    >опустим pip install в серную кислоту, а статичный гоферный бинарь в дистилированную воду

    олдфаг в треде

     
     
  • 7.60, Аноним (60), 12:29, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    И не один. И таки что ?
     
  • 5.59, YetAnotherOnanym (ok), 12:03, 27/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    Скорость не нужна, когда вы на своей персоналке один прогон сделали и обрадовали... весь текст скрыт [показать]
     
  • 5.78, Аноним (27), 18:26, 01/03/2019 [^] [ответить]    [к модератору]  
  • +/
    На нем пытаются писать тот системный софт, который иначе писали бы на питоне. Модули ядра на нем никто не пишет, ясное дело.
     
  • 4.38, evkogan (?), 20:22, 26/02/2019 [^] [ответить]    [к модератору]  
  • +/
    И вот цитата
    >что позволяет добиться производительности, сопоставимой с программами на языке Си.
     
     
  • 5.62, Аноним (62), 14:06, 27/02/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    А на каких операциях там не говорится :-)
     
  • 5.79, Аноним (27), 18:31, 01/03/2019 [^] [ответить]     [к модератору]  
  • +/
    При минимальном использовании heap-а 8212 таки позволяет Попробуй каким-нибу... весь текст скрыт [показать]
     
  • 2.18, freehck (ok), 16:19, 26/02/2019 [^] [ответить]    [к модератору]  
  • +/
    > Что-то по бенчмарку он даже медленнее Явы:

    Разве ж это медленнее? Это примерно на одном уровне.

     
  • 2.25, YetAnotherOnanym (ok), 18:03, 26/02/2019 [^] [ответить]     [к модератору]  
  • +3 +/
    Вообще-то, если пройтись по списку тестов вот с этой странички https benchmar... весь текст скрыт [показать]
     
     
  • 3.51, Аноним (51), 07:17, 27/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Кичиться тем что язык слегка обогнал жирную Яву в некоторых задачах, когда он заявляет:
    "что позволяет добиться производительности, сопоставимой с программами на языке Си" - как-то глупо.
     
     
  • 4.58, YetAnotherOnanym (ok), 11:46, 27/02/2019 [^] [ответить]     [к модератору]  
  • +/
    А где тут гордость Комментатору 1 11 просто указали на фактическую ошибку ... весь текст скрыт [показать]
     
  • 1.12, Аноним (13), 15:35, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    > До этого требуется явная активация системы модулей через переменную GO111MODULE=on

    А почему GO111MODULE, а не GO123MODULE? Или G0000M0DULE?

     
     
  • 2.16, Аноним (16), 16:12, 26/02/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    Go 1.11
     
  • 2.26, Нанобот (ok), 18:18, 26/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    GO!!111MODULE
     
  • 2.40, Stas (??), 21:36, 26/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    Попробуйте:
    https://gocenter.jfrog.com/
    https://jfrog.com/blog/go-at-full-speed-with-gocenter/
     
  • 1.24, Аноним (24), 17:46, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Go vN+0
     
  • 1.28, Аноним (28), 18:26, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > Начиная с версии Go 1.13 будет прекращена поддержка macOS 10.10

    Что вообще означает - язык не поддерживает ОС? Бред какой-то. Впрочем, укладывается в логику всего, что делает Google.

     
     
  • 2.30, Аноним (27), 18:29, 26/02/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    Версия языка — "1", "1.13" — это версия референсного компилятора.
     
  • 2.36, Пользователь Debian (?), 20:15, 26/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Потому что когда язык 8212 и его стандартная библиотека 8212 скомпилирован... весь текст скрыт [показать]
     
     
  • 3.43, 1 (??), 23:26, 26/02/2019 [^] [ответить]    [к модератору]  
  • +/
    И в тех ОС - какой-то неправильный POSIX ?
     
     
  • 4.53, Nexmean (?), 08:01, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Go не использует glibc, у них свой велосипед через который они напрямую к ядру обращаются, в этом траблы.
     
     
  • 5.55, йкЛще (?), 08:14, 27/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Вот это поворот! И давно?

    У Go, как бэ, в зависимостях одна glibc и есть... Странно не использовать свою единственную зависимость, КМК.

     
     
  • 6.57, x (?), 11:28, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    нет там glibc, может для пары функций опционально. Для линукса одна зависимость: kernel 2.6.23+
     
     
  • 7.65, Аноним (65), 14:56, 27/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    oh, rly Разве что для какого-то HelloWorld https github com docker docker-ce... весь текст скрыт [показать]
     
     
  • 8.71, Аноним (70), 19:34, 28/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Как только подключаете работу с сетью, то сразу сборка становиться зависимой от libc и libpthread, но существует и статическая реализация сети в golang. Просто ее нужно включать флагом -tags netgo.
     
  • 4.80, Аноним (27), 18:37, 01/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Внезапно, posix описывает API, но не регламентирует ABI, потому программа, вызыв... весь текст скрыт [показать]
     
  • 2.56, Аноним (56), 10:20, 27/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Не поддерживает - и хрен с ним. ОС первична, остальное шелуха (кроме C).
     
  • 1.32, Аноним (32), 18:40, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Дженерики.
     
     
  • 2.34, Аноним (13), 20:01, 26/02/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    >  Дженерики.

    I'm sorry but the princess is in another castle

     
  • 2.48, Аноним (48), 01:43, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Не нужно.
     
  • 1.35, Аноним (35), 20:13, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    Годный язык, мне прям нравится, тем кто знаком с СИ языком Golang заходит прям на ура. А главное в нем сразу есть большинство того что в СИ так не хватает.
    Рекомендую.
     
     
  • 2.61, Аноним (61), 13:16, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    CaMeLCaSe что ли?
    нафиг нада
     
  • 2.63, Аноним (62), 14:09, 27/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    > тем кто знаком с СИ языком Golang заходит прям на ура

    не надо за всех говорить

     
  • 1.41, Аноним (41), 21:50, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Кто знает когда будет go2 и какие там будут изменения?
     
     
  • 2.44, Аноним (35), 23:31, 26/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    А какие изменения вам нужны? Го язык молодой, он сразу был создан как работа над ошибками других языков.
    Или вам нужна боль и унижение древнего Python-а?
     
     
  • 3.64, Аноним (62), 14:10, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    > По умолчанию систему модулей планируется предложить в выпуске Go 1.13

    Ага, смешно.

     
     
  • 4.72, Аноним (72), 21:45, 28/02/2019 [^] [ответить]    [к модератору]  
  • +/
    а try-catch то когда подвезут?
     
  • 3.69, Аноним (69), 16:52, 28/02/2019 [^] [ответить]     [к модератору]  
  • +/
    например мне лично нужно более удобное общение с JSON то что есть сейчас полный... весь текст скрыт [показать]
     
  • 2.73, Rob Pike (?), 01:36, 01/03/2019 [^] [ответить]    [к модератору]  
  • +/
    Го 2 будет не скоро. Будет 1.13, 1.14, 1.15 с постепенным внедрением фич. Где-то в районе 1.15, можно будет считать, что это 2.0, только об этом не скажут, чтобы не взрывались пукальники
     
  • 1.42, Аноним2 (?), 21:53, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Add your company... https://github.com/golang/go/wiki/GoUsers
     
  • 1.45, анон (?), 23:37, 26/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    дженерики завезли?
     
     
  • 2.54, Анон Михайлович (?), 08:01, 27/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Генерики для слабаков.
     
  • 2.67, Аноним (67), 01:35, 28/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Проходите не задерживайтесь. Вас много, go один. Следующий.
     
  • 1.47, Аноним (47), 00:51, 27/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > В "go doc" добавлена новая опция "-all" для вывода всех экспортируемых API и документации по ним

    А в PAGER это скармливать оно так и не? Как и zfs команды в случае опечатки и проч.

     
  • 1.75, Pike (?), 12:38, 01/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    lol no generics
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


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