LINUX.ORG.RU

Go 1.9

 


1

6

Команда разработчиков Go представила релиз Go 1.9. Релиз доступен на странице загрузки. В данном релизе имеется много изменений в языке, стандартной библиотеке, среде выполнения и инструментарии. Большая часть усилий разработчиков была положена на усовершенствование среды выполнения и инструментария.

Наиболее важным изменением языка является введение псевдонимов типов. Объявление псевдонима типа выглядит следующим образом:

type T1 = T2

Это объявление вводит псевдоним Т1 для типа Т2, таким же образом, как byte всегда был псевдонимом для uint8. Дизайн-документ псевдонимов типов и статья о рефакторинге объясняют это дополнение более детально.

Новый пакет math/bits предоставляет функции подсчета и обработки битов для целых беззнаковых чисел, которые, когда это возможно, реализуются специальными инструкциями CPU. Например, в системах x86-64 bits.TrailingZeros(x) использует инструкцию BSF.

Пакет sync добавил новый тип Map, безопасный для многопоточного доступа. Важно понимать, что это не общая замена типа Map; обратитесь к документации, чтобы узнать, когда она должна использоваться.

В пакет testing также добавлено дополнение. Новый метод Helper, добавленный к testing.T и testing.B, отмечает вызывающую функцию в качестве тестовой вспомогательной функции. Когда тестовый пакет печатает информацию о файле и строке, он показывает местоположение вызова вспомогательной функции вместо строки в самой вспомогательной функции.

Пакет time теперь прозрачно отслеживает монотонное время в каждом временном значении, делая вычисление длительности между двумя временными значениями безопасной операцией.

Наконец, в рамках усилий, направленных на ускорение работы компилятора, Go 1.9 компилирует функции в пакете одновременно.

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

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

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



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

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

но си, растом и плюсами

А ничего что это языки решающие очень схожие задачи, и причины выбора скорее идеологические чем по приспособленности к задаче?

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

Почему rust не способен заменить c?

Потому что С++ уже заменил Си.

Замена лучше не придумаешь - толстые бинарники, сборка мусора...

GC не отменяет работу без VM. Это ортогональные вещи.

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

Go - структурно-ориентированный язык

Сами придумали? Или это новый гоферский термин для процедурной парадигмы? Кстати, хорошо помню, что ранее евангелисты топили что го это ООП язык, что у вас там случилось?

это его роднит с Си

Да, особенно сборка мусора роднит, или проверка границ роднит. Или указатели, которые не указатели. У меня еще большие сомнения во что он там компилируется, если там ГЦ живет и что-то там ловит панику.

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

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

А ничего что это языки решающие очень схожие задачи, и причины выбора скорее идеологические чем по приспособленности к задаче?

Ничего, но лучше бы вы написали «очень схожие задачи» го с Си и С++. А мы все вместе посмотрим ваш кругозор по этим языкам.

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

Для Си разработаны GC. Удивлён?

Для Си можно написать вирт машину и даже интерпретатор. И что? Очень гибкий язык, да?

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

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

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

Вопрос не в ненужности(хотя и тут можно не согласится), вопрос в том что эти люди пересекаются. Если кто-то напишет сайт на ассемблере(есть такие люди), то обсуждение этого превратится в холивар - ассемблер vs php(или что-то другое). Первопричина в разности взглядов.

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

Напиши мне драйвер на Go.

Была статья как один деятель начал делать операционную систему на go плюс ассемблерные вставки. Так что это не совсем показатель. Правда потом он её забросил.

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

. Миссия Go - замена Си с управлением памятью и потоками.

Осталось только поднатореть в структурно-ориентированном программирование. рука_лицо.jpg

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

Потому что С++ уже заменил Си.

gtk уже на крестах?

GC не отменяет работу без VM

Я не говорю спасибо, так как я и без тебя это прекрасно знаю.

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

Была статья как один деятель начал делать операционную систему на go плюс ассемблерные вставки. Так что это не совсем показатель. Правда потом он её забросил.

Вот видишь, а на сях не забрасывают. Я бы с гоферским типом мышления тут бы задумался сильно ;)

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

но лучше бы вы написали «очень схожие задачи» го с Си и С++

Лично я понял твою фразу как то что ты сравниваешь c, rust, c++ и точка. Я не правильно тебя понял, да?

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

Вот видишь, а на сях не забрасывают

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

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

Там фактически от го осталось 5%, если не меньше, т.к. реализация большей части библиотеки го требует рантайма (т. е. даже банальные срезы будут требовать реализовать менеджер памяти уровня ядра), не говоря уже про defer, горутины, всякое io и т.д.

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

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

Таки ни чего интересного не было про Go, где киллер-фичи? Ни одного упоминания

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

Рантайм можно реализовать. И судя по всему автор сего поделия осозновал это ещё до того как начать писать. Почему он не доделал? Хороший вопрос, но я не дам ответа.

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

Напиши мне драйвер на Go.
Нет ничего проще. Тебе для чего?

Для линукса. Ну или бзд, не важно. Модуль ядра который создает символьное устройство, при чтении из которого читается физическая память. Типа как /dev/mem. Слабо?

pftBest ★★★★
()

Соглашусь с тем, что Го это больше про Python/Ruby/Node может местами Жаба и совсем чуть С, где просто сисколы подергать.

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

А в противовес что ставится? Какой язык? А то это же можно сказать и про C/C++/Java/C#/etc...

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

Сами придумали? Или это новый гоферский термин для процедурной парадигмы? Кстати, хорошо помню, что ранее евангелисты топили что го это ООП язык, что у вас там случилось?

И в каком месте он не ООП? Только сегодня жанглировал объектами или у меня лругой Гоу?

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

Раньше писал на пистоне, но как заюзал Гоу, почти полностью забросил. Юзаю Си и Гоу и доволен как слон, ну и под андроид естественно жаба.

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

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

Отсюда можно сделать вывод - что го, с его обработкой ошибок (точнее её отсутствием вообще), может идти лесом вместе с таким же «разработчиками», которые считают это нормальным.

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

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

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

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

с хера ли вдруг мало?

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

Потому что пистон не умеет зеленые потоки.

AUX ★★★
()
Ответ на: Нытьё моё от iZEN

Кстати, ты вот тут Компилятор Clang включён в базовую поставку OpenBSD (комментарий) спрашивал, как я собираю mesa без llvm. А я, аноним, как-то твой вопрос пропустил.

Могу ответить сейчас, если ещё актуально. Вот так:

    CONFIG_SHELL=/bin/bash ./configure \
        --prefix=/usr \
        --sysconfdir=/etc \
        --enable-gbm \
        --enable-gles1 \
        --enable-gles2 \
        --enable-glx \
        --enable-glx-tls \
        --enable-texture-float \
        --enable-dri3 \
        --enable-vdpau \
        --disable-va \
        --disable-dependency-tracking \
        --disable-valgrind \
        --with-platforms=x11,drm \
        --with-dri-drivers=radeon \
        --with-gallium-drivers=r600 \
        --with-vulkan-drivers=
Это для линукса и заточено под мой радеон. Если в системе есть llvm (у меня нет), то, видимо, надо добавить --disable-llvm.

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

А ты - того что тебе напишут! Уот так уот! :D
Нашёл, блин, чем гордиться, собиратель пакетов руками.

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

Rust собирается из порта lang/rust системой сборки make (посредством portmaster - это не так важно, он добавляет удобства). Как и с любым портом, сборка и установка осуществляется парой связанных команд, например для актуального в этой теме ЯП Go:

cd /usr/ports/lang/go/ && make clean install clean
При этом вытягиваются недостающие зависимости и для них осуществляется выполнение таких же команд, но без ручного вмешательства - руки нужны, если в порте есть опции, чтобы отметить нужные.

При сборке порта lang/rust система сборки сама пропатчила порт devel/llvm40, пересобрала его и переустановила пакет llvm-4.0.1. И только после этого принялась за сборку и установку Rust.

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

Сравнимый по эффективности с драйвером на Си?

Почему нет? И потом, приторможенность многих драйверов никто не заметит, а багованность - вполне.

Без непредсказуемых пауз на GC?

Есть такие GC, но мы их вам не покажем. И см. выше.

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

Rust - это замена С++.

Go - это замена C.

Другими словами, go безнадежно устарел, а rust уже изначально был не нужен.

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

Началось все с того, что товарищ утверждал будто Go — замена сишке.

И см. выше.

И ты смотри, там было предложение написать /dev/mem на Go модулем ядра. Удачи.

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

Другими словами, Си безнадежно устарел, а C++ уже изначально был не нужен.

Пофиксил. Не благодари.

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

Абсолютно верно. Нужны не замены, а новые парадигмы.

AVL2 ★★★★★
()

Рад за гоферов

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

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

Писал парсер на go, получилось в 11 раз (!) больше строк кода, чем на питоне. Забросил go после этого парсера, моё время дороже.

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