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 ()

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

malloc()/free(), умеют в константное время?

gag ★★★★★ (18.02.2017 2:15:57)

★★★★★

ясно

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

LAPACK, FFTW3, GSL, Qt или GTK3, sqlite3, графопостроитель вменяемый, модуль для чтения всяких замороченных форматов типа neo.io

Так ведь это всё есть.

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

Но пример C тут нерелевантен совершенно, C — это язык из 60-х годов прошлого века

Во-первых из 70-х, во-вторых «Go is recognizably in the tradition of C, but makes many changes to improve brevity, simplicity, and safety».

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

Какой-то amd64 пишет

Чо правда? Это в каком дистрибутиве?

no-such-file ★★★★★ ()

The innovation the industry talks about so much is bullshit. Anybody can innovate. Don't do this big 'think different'... screw that. It's meaningless. Ninety-nine per cent of it is get the work done. Линусу понравился бы Go.

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

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

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

Просто вместо, грубо говоря, одной длинной паузы получаем сто коротких

Новости с дивана. А почитать про то, как на самом деле, не пробовал?

no-such-file ★★★★★ ()

А шем оно луше раста, насяльника?

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

В го нааледование реализуется через subclassing и duck typing , а вместо генериков type assertion

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

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

Vscode. Gotk+glade.

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

С таким синтаксисом Расту только Malbolge и Brainfuck закапывать.

В точку!

AUX ★★★ ()

Гораздо больше не хватает встроенных многопоточных ништяков, особенно, после джавы, у которой они на любой вкус. Ну и традиционное нытьё по поводу неиспользуемых импортов и переменных, которые воспринимаются как error, а не warning.
А так - вполне годный язык, когда джава умрёт, можно будет на него перейти.

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

Намного проще в освоении. В том числе и потому, что в Go есть GC вместо Rust-овских правил владения.

А вообще это языки из разных ниш. Вряд ли кто-то будет писать на Rust-е то, что можно делать на Go. И наоборот.

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

Десяток видов threadpool-ов, куча разных видов локов на любой вкус, куча потокобезопасных, блокирующих и неблокирующих коллекций и прочих.
В го, как я помню, разве что, семафоры и базовые атомарные типы.

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

Тем, что Rust мой скромный мозг не осиливает. А вот Go в самый раз. Первый язык, на котором мне приятно писать.

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

И читать чужой код, замечу в скобках.

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

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

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

Всяческие микросервисы, которые наружу RESTful API выставляют.

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

Хм, а мне приятно на Rust. Реально очень приятно писать на нём

А что вы на нем пишете?

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

Вы бы русский язык подтянули, перед тем как ЯП ругать.

В go реализовали именно накопленный опыт.

А в расте значит только новые и не обкатанные идеи? Почитали бы откуда у него ноги растут.

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

А что вы на нем пишете?

Я только недавно стал с ним знаком, сейчас делаю простенькие программки для того чтобы изучить. Но мне это доставляет большое удовольствие =)

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

Ну в го изи сделать любой пул рутин, на это и рассчитано, что даются самые базовые абстракции: сами рутины, каналы, sync.WaitGroup, а ты уже реализуешь, что тебе надо поверх них. Локи реализуются через мютексы - sync.Mutex и sync.RWMutex, а вот шарпе вообще только один оператор lock и все. Коллекции в го сделаны потоконебезопасными сознательно: https://golang.org/doc/faq#atomic_maps , рассчитано что данные будут синхронизироваться через мютексы (ну неблокирующих нет, выходит). В атомарных типах нет, кстати, bool и int (типа используй int64 или int32 явно), недавно столкнулся.

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

Попробуй тогда Malbolge. Вообще испытаешь оргазм

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

Попробуй тогда Malbolge. Вообще испытаешь оргазм

Нет мужчина, тут есть большая разница. Malbolge - это всего лишь эзотерика, а Rust - выглядит так как будто каждый элемент языка был тщательно продуман.

AntonyRF ★★★ ()

Пардон, Гоу готов для веб-разработки? Хотя бы для бэкенд части?

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

когда джава умрёт, можно будет на него перейти

Оптимистично. Я абсолютно уверен, что столько не проживу.

bread ()

Пакеты с версиями уже завезли? Или еще подождать лет 5, прежде чем тыкать палочкой?

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

Хм, здорово. А где почитать про минусы? Или вы можете рассказать?

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

Тем, что Rust мой скромный мозг не осиливает. А вот Go в самый раз. Первый язык, на котором мне приятно писать.

Утиные истории. Вероятно ты много ел паскаля и похапе в детстве. Я вот смотрю на го-код с некоторым содроганием: портянки-портянки-портянки и вездесущий CamelCase(). Ну бывает и похуже.

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

Может еще ассемблер закапывать будешь?

А его уже и без меня давно закопали.

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

«Go is recognizably in the tradition of C, but makes many changes to improve brevity, simplicity, and safety»

Что в переводе означает «В XXI веке мы сделали язык, лишь немногим лучше окаменелого говна мамонта под названием C»

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

Вероятно ты много ел паскаля и похапе в детстве.

Нет, то были Perl, Ruby, Python и (в особенности) Java.

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

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

Анон, ты упорот же!

Если вместо одной длинной сто коротких, то предельное время реакции системы на событие сокращается, нрубо говоря, до короткой паузы +лапоть, это лучше, чем длинная пауза +лапоть!

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

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

О Си-хейтеры такие Си-хейтеры.

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

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

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

/me .oO( интересно, вопрос вызван лицемерием или искренней тупостью? )

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

Не переходи на личности, ЛАЛКА!

Для тех, кто постоянно тупит и любит врать повторяю: ЯП - инструмент, отношусь я к нему, как к напильнику, отвертке и т.п. вещам; а вот евангелисты и фанбои - это совсем другое дело, они таки вызывают у меня эмоциональную реакцию.

shkolnick-kun ★★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 2)
Ответ на: комментарий от shkolnick-kun

Не переходи на личности, ЛАЛКА!

Почему нет?

Для тех, кто постоянно тупит и любит врать повторяю

С собой говоришь, штоле?

ЯП - инструмент, отношусь я к нему, как к напильнику, отвертке и т.п. вещам

Пока не вижу заявления «я не испытываю никаких эмоций по отношению к языкам программирования».

а вот евангелисты и фанбои - это совсем другое дело *BUTTHURT*

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

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

1. Первое, на что жалуются - отсутствие дженериков (соответственно, отсутствие статически типобезопасных filter(), map() и прочих атрибутов функционального программирования). Моя практика показывает, что они нужны нечасто (хотя иногда были бы полезны).

2. Многословность обработки ошибок (if err != nil { return err }). Понимание того, что это есть хорошо, приходит со временем. Кроме того, есть способы сократить количество таких блоков.

3. Отсутствие развитого общепринятого средства управления зависимостями из коробки (по умолчанию go get работает с HEAD репозиториев на GitHub, BitBucket и т.д.). Обещает решиться с появлением https://github.com/golang/dep

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

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

Все просто: ЯП не пытаются накормить меня сказками про серебряные пули, а фанбои и евангелиста - пытаются.

/me .oO( интересно, вопрос вызван лицемерием или искренней тупостью? )

дальше была моя фраза про инструменты, и тут:

Пока не вижу заявления «я не испытываю никаких эмоций по отношению к языкам программирования».

Перечитай поцт про инструменты ещё раз, а потом ещё и ещё... Пока не поймешь смысл.

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

ЯП не пытаются накормить меня сказками про серебряные пули, а фанбои и евангелиста - пытаются.

Хм. Если ты так воспринимаешь рекламу, то не понимаю, как ты до сих пор не умер от баттхерта.

Пока не вижу заявления «я не испытываю никаких эмоций по отношению к языкам программирования».

Перечитай поцт про инструменты ещё раз, а потом ещё и ещё... Пока не поймешь смысл.

Смысл поцта - выразить баттхерт, это вполне очевидно. Но я пытаюсь понять, чем вызван сам баттхерт.

tailgunner ★★★★★ ()

Бессмысленный язык, бессмысленная работа.

Пусть уж действительно новые нескучные шрифты делают, у них это лучше получается.

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