LINUX.ORG.RU

Go 1.8

 


3

6

Представлен стабильный выпуск Go 1.8. Этот релиз содержит значительные улучшения производительности и изменения в стандартной библиотеке.

Бекенд компилятора, впервые представленный для x86_64 в Go 1.7, теперь применяется на всех архитектурах, что даст ощутимый прирост производительности. Благодаря этому, например, на 32-битных системах ARM программы для измерения производительности затрачивают на 20-30 % меньше процессорного времени. Для 64-битных x86-систем также сделаны некоторые улучшения производительности. Компилятор и компоновщик стали быстрее, по сравнению с Go 1.7 время компиляции должно уменьшиться примерно на 15 %.

Паузы сборки мусора в новом релизе должны стать значительно короче: как правило, ниже 100, и чаще, ниже 10 микросекунд.

Улучшения также коснулись и HTTP-сервера. Добавлена поддержка HTTP/2 Push, что позволит серверам заранее отправлять ответы клиенту и минимизировать задержки в сети. Добавлена поддержка мягкого завершения (graceful shutdown), когда сервер завершает работу после обработки всех своих текущих запросов.

В контекстах добавлен механизм лимитов времени и отмены. В Go 1.8 поддержка контекстов добавлена во многих частях стандартной библиотеки, включая пакеты database/sql и net, и в Server.Shutdown из пакета net/http.

Благодаря новой функции Slice в пакете sort, стало проще сортировать срезы. Например, следующим образом можно отсортировать срез структур по полю Name:

sort.Slice(s, func(i, j int) bool { return s[i].Name < s[j].Name })

Go 1.8 содержит много других улучшений и исправлений. Полный список изменений можно посмотреть в информации о выпуске Go 1.8.

Пользователи Go по всему миру собираются вместе на этой неделе, чтобы отпраздновать данный выпуск. Это стало доброй традицией в сообществе Go. Если вы не успели отпраздновать в этот раз, впереди ещё будет Go 1.9.

>>> Подробности

★★★★★

Проверено: leave ()
Последнее исправление: sudopacman (всего исправлений: 3)

Ответ на: комментарий от anonymous

Что у нас в случае Go ? Zip архив на гитхабе ? И если нет твоего glide (то есть файла glide.yml), то надо руками качать.

Держите наркомана.

И это не говоря уже о том, что Go не умеет в динамические библиотеки

И эта информация тоже устарела.

go help buildmode

anonymous
()
Ответ на: комментарий от anonymous

Go не умеет в динамические библиотеки

На x86 уже умеет.

нужны _обязательно_ сорцы

А где не нужны и кто этим пользуется? На всяких js и ruby вообще без вариантов.

И если нет твоего glide (то есть файла glide.yml), то надо руками качать

Ты видимо никогда не пользовался ничем сложнее npm install cool_lib. Ничего руками качать не надо.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

А если я не хочу предоставлять сорцы ? Что тогда ?

Тогда тебе нехрен делать в open source repo.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

А если я не хочу предоставлять сорцы ? Что тогда ?

Тогда ты идешь лесом сраный проприетарщик

Siado ★★★★★
()
Ответ на: комментарий от no-such-file

Ничего руками качать не надо.

Каким образом ты избежишь ручного менеджмента кода если нет поддержки glide у либы ?

anonymous
()
Ответ на: комментарий от no-such-file

Сходика ты , прочитай что такое go plugins технически. Это не те «плагины» которые в общем смысле. https://github.com/golang/go/issues/13751

c-shared

Вообще не в тему, мы не про cишные либы говорим.

-buildmode=shared

Что-то в доках говорят что сорцы требуются. Кто-нибудь уже запилите пример хелло ворда с линковкой бинарных гошных либ. А то в гугле все через сорцы компиляют.

anonymous
()
Ответ на: комментарий от anonymous

А туда ли ты зашел петушок ?

anonymous
()
Ответ на: комментарий от anonymous

А если я не хочу предоставлять сорцы ? Что тогда ?

Вообще-то, Go умеет собирать с binary only библиотекой. Специально для таких, как ты, было запилено год или полтора назад. Помню, очень огорчился, когда в release note прочитал.

Технолония проста: в pkg кладется *.a , как будто его go build собрал, а в src файл-заглушка с датой более давней, чтобы go build при сборке не пытался пересобрать бинарную либу.

До какой то версии, go build все равно учитывал содержимое файла в src. Но по просьбе «проприетарщиков», сделали чтобы если файлы в src старше, то использовать только бинарь из pkg.

Так что, скрывай сырцы на здоровье, ни кто тебе не мешает.

anonymous
()
Ответ на: комментарий от anonymous

Сорри, в первой фразе перепутал go build и go install.

anonymous
()
Ответ на: комментарий от anonymous

Звучит как лютый костылище, а не как штатная возможность

makoven ★★★★★
()
Ответ на: комментарий от bread

Конечно сложно, всего лишь какой-то гуголь его раскручивал. Столько рекламы и агиток в блогах я в жизни не видал.

Это твоё ущербное восприятие. Dart - раскручивают, даже штатные должности есть: можешь увидеть, если зайдёшь на jobs портал Гугла. В Go ничего подобного не было, все восторженные отзывы, если таковые имеются, добровольны. Хотя я таких не много наблюдал, в тренде больше «ыкспертная» критика в тренде была. Можешь поглядеть тут подборку (от нормальной критики, до совсем трешовой): https://github.com/ksimka/go-is-not-good

anonymous
()
Ответ на: комментарий от anonymous

Ну и Фрейда пригласите в тред: если тысячи критиков отовсюду жрать не могут, всё посты с критикой ЯП пишут, что ими движет?

anonymous
()
Ответ на: комментарий от anonymous

Да то всё упоротые оопшники-джависты, которые открывают пример Hello World-а на Go и хватаются за сердце, когда не находят слова class.

anonymous
()
Ответ на: комментарий от anonymous

Плюсую. Любят такие люди обмазаться абстракциями и классами, особенно там где это ненужно.

AUX ★★★
()
Ответ на: комментарий от anonymous

Чтобы я мог через glide отрезолвить любую версию

Ну ты и дебил

../bin/glide get github.com/valyala/fasthttp                                                                                    15:39:17 19.02.2017
[INFO]  Preparing to install 1 package.
[INFO]  Attempting to get package github.com/valyala/fasthttp
[INFO]  --> Gathering release information for github.com/valyala/fasthttp
[INFO]  The package github.com/valyala/fasthttp appears to have Semantic Version releases (http://semver.org). 
[INFO]  The latest release is v20160617. You are currently not using a release. Would you like
[INFO]  to use this release? Yes (Y) or No (N)
Y
[INFO]  The package github.com/valyala/fasthttp appears to use semantic versions (http://semver.org).
[INFO]  Would you like to track the latest minor or patch releases (major.minor.patch)?
[INFO]  Tracking minor version releases would use '>= 20160617.0.0, < 20160618.0.0' ('^20160617.0.0'). Tracking patch version
[INFO]  releases would use '>= 20160617.0.0, < 20160617.1.0' ('~20160617.0.0'). For more information on Glide versions
[INFO]  and ranges see https://glide.sh/docs/versions
[INFO]  Minor (M), Patch (P), or Skip Ranges (S)?
P
[INFO]  --> Adding github.com/valyala/fasthttp to your configuration with the version ~20160617.0.0
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Fetching github.com/valyala/fasthttp.
[INFO]  Resolving imports
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Detected semantic version. Setting version for github.com/valyala/fasthttp to v20160617.
[INFO]  Exporting resolved dependencies...
[INFO]  --> Exporting github.com/valyala/fasthttp
[INFO]  Replacing existing vendor dependencies
no-such-file ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Ответь на вопрос, почему ты эмоционально воспринимаешь языки программирования?

C как раз у меня совершенно никаких эмоций не вызывает. В работе я его использую в гомеопатических количествах, он был разработан задолго до моего рождения и может считаться тупо исторической данностью. А вот с Go другая история. Это одна из худших вещей, которая могла случиться с индустрией, в которой я работаю. Поэтому мне и припекает. А с другой стороны, любой фанбой Go по фанатизму с лёгкостью переплюнет весь отряд упоротых лоровских лисперов, что само по себе весьма впечатляет. И бывает очень весело смотреть на то, как они исходят пеной изо рта, когда тыкаешь их рожей в недостатки объекта их обожания.

Zenom ★★★
()
Ответ на: комментарий от anonymous

Во-первых — само наличие такого документа. Во-вторых — расплывчатые формулировки и отсутствие списка патентов.

P.S. Если бы я мог ответить ясно на твой вопрос, то не спрашивал форум. Может, кто-то прояснит.

Deleted
()
Ответ на: комментарий от anonymous

Технолония проста: в pkg кладется *.a , как будто его go build собрал, а в src файл-заглушка с датой более давней, чтобы go build при сборке не пытался пересобрать бинарную либу.

Понятно, нанотехнологии) Не, лучше даже палочкой в это не тыкать.

bread
()
Ответ на: комментарий от Zenom

Ты просто дрищ неосилятор. Дрочи на свою жабу, жООПа, головного мозга. GO божественный, тебе, петушок, не понять.

anonymous
()
Ответ на: комментарий от anonymous

Можешь поглядеть тут подборку (от нормальной критики, до совсем трешовой)

О, спасибо! Ждал, что кто-то подкинет такого)

bread
()
Ответ на: комментарий от no-such-file

Это ты дебил. Твой glide попытался отгадать версию, но не смог и поэтому присвоил _свою_ версию в _твоей_ вендоринг директории. Автор библиотеки ни про какие такие версии ничего не знает.

$ glide get github.com/valyala/fasthttp#^20160617.0.0
[ERROR] Failed to find glide.yaml file in directory tree: Cannot resolve parent of /

Ты жидко обосрался

Осиль хотя бы гугол, не позорься http://blog.ralch.com/tutorial/golang-sharing-libraries/

Слив номер два, ты даже не понял о чем я говорил. Ты поди еще и на Go за деньги пишешь и не знаешь нифига об его инфраструктуре. В статье речь идет во первых о _сишной_ либе в том числе, во вторых, в ней через _сорцы_ компилирование идет. Вот единственный кто понял о чем я говорил Go 1.8 (комментарий) . Но это звездец, такое даже в бейсике не делают.

anonymous
()
Ответ на: комментарий от anonymous

А, это у меня glide не был проинициализирован. Короче glide берет релизы с гитхаба и по дате релиза выставляет версию. Как я и говорил качает zip архив, только в этом случае не ты это делаешь, а glide.

anonymous
()
Ответ на: комментарий от Deleted

Во-первых — само наличие такого документа.

Это ж гугол, второй раз влететь как с далвиком им видимо не хочется.

Во-вторых — расплывчатые формулировки и отсутствие списка патентов.

Ты его вообще читал? Он вообще не про это, а про то что если ты найдёшь в исходниках что-то на что у тебя есть патент, то гугол полностью признает твой патент.

Распространяется оно только на гугловские тулзы, к gccgo как я понимаю это всё не относится.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

и по дате релиза выставляет версию

Не по дате, а по тегу/ветке, идиота ты кусок.

только в этом случае не ты это делаешь

Что и требовалось от пакетного менеджера - автоматом скачивать и обновлять нужную версию.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

В статье речь идет во первых о _сишной_ либе в том числе

Не о сишной, а го-либе, собранной в формате для использования в си. И да, это в том числе, помимо собирания просто динамической го-либы.

через _сорцы_ компилирование идет

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

Вот единственный кто понял о чем я говорил

Ты хочешь чтобы я тебе это повторил? С одного раза не понятно?

Но это звездец, такое даже в бейсике не делают

Да ты чо? А покажи как в бейсике линкуют бинарные либы? Вообще покажи как хоть где-нибудь линкуют .a/.so без хедеров или каких-нибудь примочек во время компиляции?

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

Паузы сборки мусора в новом релизе должны стать значительно короче: как правило

идиоты сперва делают гарбадж коллектор, а потом всю жизнь маются с ним.

rsync ★★
()
Ответ на: комментарий от rsync

как будто они это забесплатно делают...

anonymous
()

Очередной язык программирования, как питон, быстрый яркий и короткий (век).

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от gag

Накопленный к середине 80х опыт, полезное дело, полезное.

qnikst ★★★★★
()
Ответ на: комментарий от Vudod

Вот когда сделают вменяемые ГУИ

gtk и qt уже есть.

ИДЕ

отладчик есть, автодополнение есть, автоформатирование есть.

обёртки для популярных библиотек

для чего конкретно? к примеру для llvm уже есть.

NextGenenration ★★
()
Ответ на: комментарий от anonymous

Уупс!

Прочитал выигрыш, как проигрыш! Счас перечитал твой пост и проиграл на всю комнату.

Сорян.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Zenom

А вот с Go другая история. Это одна из худших вещей, которая могла случиться с индустрией, в которой я работаю.

Ты путаешь причину и следствие!

Качество используемых кадров повсеместно падает, ибо искусство превращается в ремесло.

В эпоху индус-триального IT всё чаще и с большей охотой используется труд «программистов-стажеров», под них и создаются вот такие языки: простые, с низким порогом вхождения плавной кривой обучения.

весь отряд упоротых лоровских лисперов

Уже не торт! Сейчас торт - отряд ЛОРовских rust-еров!

когда тыкаешь их рожей в недостатки объекта их обожания.

относится к любым фанбоям и евангелистам, вот взять хотябы intelfx и его принцип сегрегации людей по отношению к одному известному ванаби стандарту систем инициализации.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от bread

Нет.

Мне просто не нравятся визгливые фанбои, переносящие свои личные качества на ЯП (искать по ключевой фразе «беспомощное говно»).

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

его принцип сегрегации людей по отношению к одному известному ванаби стандарту систем инициализации.

Протрезвей.

intelfx ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.