LINUX.ORG.RU

Go 1.26

 , ,

Go 1.26

0

4

После полугода разработки состоялся выпуск 1.26 компилятора и стандартной библиотеки языка программирования Go.

Основные изменения:

  • Встроенная новая функция, создающая новую переменную, позволяет использовать в качестве операнда выражение, указывающее начальное значение переменной. Простой пример такого изменения — это код, подобный этому:
    x := int64(300)
    ptr := &x
    

    Можно упростить до:
    ptr := new(int64(300))
    
  • Обобщенные типы могут ссылаться сами на себя в собственном списке параметров типа. Это изменение упрощает реализацию сложных структур данных и интерфейсов.

Улучшение производительности:

  • Экспериментальный сборщик мусора Green Tea теперь включен по умолчанию.
  • Накладные расходы на CGO были сокращены примерно на 30%.
  • Компилятор может выделять резервную память для Slice-структур в стеке в большем количестве ситуаций, что повышает производительность.

Инструментарий:

  • Команда go fix была полностью переписана с использованием фреймворка analysis и теперь включает в себя несколько десятков «модернизаторов», которые предлагают безопасные исправления, помогающие вашему коду использовать преимущества новых возможностей языка и стандартной библиотеки.

Добавлены экспериментальные дополнения, доступные только при явном включении:

  • Пакет archsimd для доступа к архитектурно-зависимым операциям SIMD. На данный момент поддерживается только AMD64.
  • Пакет secret со вспомогательными функциями для обнуления памяти.
  • В пакет профилирования pprof добавлена поддержка опции GOEXPERIMENT=goroutineleakprofile для обнаружения утечек goroutine.


>>> Полный список изменений

>>> Подробности на go.dev/blog

★★★★★

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

ну а что не так-то? вот источник:

https://go.dev/doc/


Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

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

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

Zhbert ★★★★★
()

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

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

Не, это понятно.
Я про первоисточник этого определения.

Zhbert ★★★★★
()
Последнее исправление: Zhbert (всего исправлений: 1)

Ништяк, заодно и пачку разных мелких дыр поправили.

zabbal ★★★★☆
()

Можно упростить до

Интересно, а в чем проблема

‘’’ X := &int64(30) ‘’’

Мне кажется это и проще и явнее

FishHook
()

Слайсы на стеке - мякотка. Кто-нибудь уже вникал критерии попадания в стек?

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

Интересно, а в чем проблема

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

Даже так

func some(a, b int) {
    var ap = &a

    // ...
}

запрещено, потому что аргумент гарантированно на стеке.

Короче, это всё, чтобы не было говна как в Си.

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

а не грационзное как джава, скажем

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

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)

Интересная картинка.

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

firkax ★★★★★
()

лучше бы сделали возможность к API Kafka из коробки, без кривого confluent

virxak
()

Отлично! Go обновляться)

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

Хороший язык, нужно брать (ц) :) он не топорный, а ограниченный. Специально для того, чтоб талантливые программисты не креативили.

Ну а про Яву так это ты настолько толсто набросил, что даже я промолчу

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

не грационзное как джава

На java Ницше мог бы писать, если бы еще жил и умел. Go же язык рукастых автослесарей. За что его мы и любим.

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

Помилусердствуйте. Java и Go созданы с одним и тем же намерением: дать тупой язык для тупых программистов. И у Go получилось лучше (дожен же быть хоть какой-то прогресс в этих наших ИТ).

ugoday ★★★★★
()

А где он находится с т.з. кастовой иерархии пишущих на нём программистов?

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

Джава выстрелила уже в 2000х, когда всё, что можно было переводить с С++ переводилось на неё. Все знали про джаву, и её даже преподавали на курсах по программированию в т.ч. для неайтишных специальностей. Как джава захавала приличный кусок рынка гошке даже не снилось. А вот Гошка уже шла параллельно с тем же растом, и монопольно отбирать задачи уже не могла. До сих пор мы читаем суксесс сториз, как чуваки переписали свой сервис с задыхающейся от сборки мусора гошки на Раст+Токио, и у них всё стало существенно быстрее.

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

Как джава захавала приличный кусок рынка гошке даже не снилось.

Жаль что Sun это не спасло.

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

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

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

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

Переписывание с Go на Go тоже дало бы серьёзный прирост производительности.

Нет, не дало бы, если они уже упёрлись в ограничения гошного рантайма.

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

почти вся инфра сейчас на решениях написанных на го. докер - это лишь совсем ничтожная часть. мне кажется сейчас проще перечислять что НЕ написано на го в инфрах.

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

Переписывание чего угодно на что угодно всегда идёт в плюс

Нифига, есть языки, вроде PHP, Си/С++ и прочие бейсики с пёрлами, которые как не переписывай всё равно будет «фрактал плохо дизайна» с гоняемыми по кругу багами. Ну и да, если оно упирается в намертво вкоряченную в язык фичу вроде рантайм GC или динамическую типизацию, тоже не особо выкрутишься

zurg
()
Последнее исправление: zurg (всего исправлений: 3)
Ответ на: комментарий от seiken

они уже упёрлись в ограничения гошного рантайма.

В рамках старой архитектуры — возможно. Именно для этого и нужно выбросить прототип и переписать по-нормальному.

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

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

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

Может быть, сам слышал слухи что современный пых уже не тот что во времена 4-ой и ранее версий, но верится с трудом. А обратная совместимость есть с первобытным злом? А то получится как в плюсах

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

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

А можно набить шишек и провести анализ, как Cloudflare с их Pingora и понять, что Go будет слабым звеном и с самого начала выбрать Rust для высоконагруженного приложения, ничего не переписывая. Потому что уже был опыт переписывания с Go их собственного tableflip на Rust (shellflip).

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

А можно набить шишек и …

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

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

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

Нельзя, при одинаковой квалификации переписывающего.

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

джава запредельно переусложненная

Приведёшь пример? По-мне Java вполне себе минималистичная и простая.

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

Приведёшь пример? По-мне Java вполне себе минималистичная и простая.

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

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

было бы так, не было бы Vala, Тьфу блин, Groovy.

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

но так уж работает репутация

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

Многие застряли в парадигме PHP 5.6, забывая, что за последние годы язык пережил настоящий ренессанс. Сегодня это не просто «скриптуха», а мощный инструмент корпоративного уровня.

С выходом восьмой ветки (8.0–8.5) и внедрением JIT-компиляции, PHP совершил качественный скачок став в 2–3 раза быстрее старых версий и в некоторых задачах вплотную приближается к компилируемым языкам.

Современный движок Zend Engine настолько оптимизирован по памяти, что высоконагруженные системы на PHP теперь обходятся дешевле в обслуживании, чем аналоги на Python или Ruby.

Помимо этого, PHP перестал быть языком «пиши как хочешь». Появилась строгая типизация, аннотации, промоушены, объединенные типы и много чего еще, для описания всех улучшений понадобиться написать не одну статью.

Ну и цифры говорят сами за себя, пока конкуренты хайпуют, PHP работает на ~73% всех сайтов в мире.

Из личного опыта, куча международных проектов в eCommerce (продажи, черные пятницы и прочее) с бекендом на PHP без каких-либо проблем.

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

А обратная совместимость есть с первобытным злом?

Переписал большой проект с php 7.4.6 на php 8.5.2 за два часа. Было 11 предупреждений уровня «динамическое объявление свойств класса устарело». Больше времени все тесты и проверки заняли, я ожидал более сложный переход если честно.

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

Не буду спорить. Лучше анекдот расскажу:

Старый конунг, король викингов стоит на скале фьорда и говорит сам себе:
— Я, конунг Олаф, построил два прекрасных города. Но никто не называет меня "Олаф — Градостроитель!"
— Я, конунг Олаф, имею под своим начальством пять тысяч воинов! Но никто не называет меня "Олаф — военачальник!"
— Я, конунг Олаф, завоевал все земли от Британии до Греции, но никто не называет меня "Олаф — завоеватель!"
— Но стоило мне один раз трахнуть овцу…
ugoday ★★★★★
()
Ответ на: комментарий от Obezyan

разве зло не в версии php4? там ООП было сбоку приколочено, такие проекты скорее всего надо как с нуля переписывать.

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

Последний раз я видел php 4 в реальной разработке больше 15 лет назад.

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

Зло в людях, которые с php4 не эволюционировали и пропустили весь прогресс в разработке по принципу «и так сойдёт».

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

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

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

а ты его в зло записываешь.

По временам нашим скорбным, детей не насилует и ладно. Выписываем его из сил зла. Однако очков репутации для php этот копролит не добавляет.

ugoday ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.