LINUX.ORG.RU

Go 1.26

 , ,

Go 1.26

0

5

После полугода разработки состоялся выпуск 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)
Ответ на: комментарий от loz

А просто потому что эти ниши пересекаются,

Да что-то не очень. Единственное, я насчёт руста не уверен, бо, повторюсь, не знаю его. Но где используют Го, там плюсы это слишком много, а питон — слишком мало. Руст же для всякого околодевопсового инфраструктурного инструментария как-то не используется, наверное тому есть причина.

Ну теперь есть pep со статусом

Круто. Спасибо за информацию. Посмотрим, что выйдет.

А вот прикол в том что

Ну, сборщик мусора всё равно останется. Его библиотекой довольно сложно будет добавить.

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

Зачем вам borrow checker в синхронном однопоточном коде, например?

Чтобы не модифицировать случайно контейнер с живыми итераторами.

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

Шоры это полезная штука (иначе зачем бы их придумали).

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

Так то и наручники «полезны», и розги, если кто-нибудь здесь знает, что это и для чего. И пули тоже «полезны»... :)

Это тупо инструмент для работы работы на работе.

Для тупой РАБоты, да.

За деньги.

За еду тоже можно... :))

Для очарования есть более другие вещи.

Да. Женщины, например. ;) :) Очень «годные» «вещи» для очарования. И для последующего разочарования тоже. ;P ;)) Женщины — Go?? ;P ;)))

P.S. Это риторический вопрос, если что. Не будем тут... ;) :)

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

Я на Java начал писать примерно через 5 минут после знакомства с ней. Будучи студентом

А в Go можно через 5 минут запустить свой код на платке с арм процессором, например.

GOOS=linux GOARCH=arm go build .

И потом скопировав бинарник по scp.

А в Java как?

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

а в условном Cloudflare сидят дураки, сервят треть интернета

Они эту треть интернета положили луашкой недавно.

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

проблемы мироздания

А где Go пытается решить проблемы мироздания? Это ответственность философии.

У Go с самого начала была ограниченная целевая аудитория – крупномасштабная разработка ПО (сегодня идут споры о том, смог ли Go добиться этой цели).

Это тупо инструмент для работы работы на работе.

Для тупой РАБоты, да.

Это какой-то элитизм. Никто не говорит, что Линус занят тупой работой, хотя пишет на C – одним из худших языков, дошедших до наших дней.

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

Решение простое и в C# он сделано с помощью dynamic.

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

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

А в Java надо предварительно установить JVM на целевой компьютер. После этого можно копировать jar-файл каким угодно способом и запускать его.

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

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

Не видел такого решения в Go, не думаю, что там есть такая фича. Я её вообще нигде кроме C# не видел.

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

Ну это же по сути анмаршалинг в map[string]any и обращение к полям любой вложенности. Первое работает из коробки, второе можно сделать в виде дженерик функи, которая возвращает значение по ключу «x.y.z»

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

Интересная идея, но это ж несколько из пушки по воробьям.

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

А в Java надо предварительно установить JVM на целевой компьютер

Еще бы понимать, что ставить среди всяких jvm, jre и прочих j*. Оракл или опенсорс опять же.

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

PHP работает на ~73% всех сайтов в мире

Это потому, что 73% сайтов работает на Wordpress и прочем г. Там и JIT не поможет - дело в кривой архитектуре всех поделий на пыхе. Если бы писали грамотно - не было бы тормозов. Это же и к Java относится - куча тормозов в Java стеке в основном из-за кривого лапшекода, где на любой чих создаются фабрики фабрик, которые отдают чёрти что и через DI это всё настраивается при инициализации и гоняется в оперативе туда сюда на каждый запрос

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

Еще бы понимать, что ставить среди всяких jvm, jre и прочих j*

Практически все собраны из одних исходников проекта OpenJDK. Если отличия и есть, то ты их не заметишь. Большинство пользуются сборкой от AdoptOpenJDK, насколько я знаю. Лично я предпочитаю уже давно сборки от Azul, но каких-то отличий не назову. Есть дистрибутивные джавы, я их немного недолюбливаю, т.к. они потрошат всё на кучу кусков, но конечный результат такой же.

Иными словами ставь что угодно.

Оракл или опенсорс опять же.

Можно и оракл, это сборка ровно из тех же исходников.

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

второе можно сделать в виде дженерик функи, которая возвращает значение по ключу «x.y.z»

Весь язык можно сделать в виде какой-то функции, но это не то же, что прямая поддержка синтаксиса.

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

Еще один толстолобик клюнул. С самого дна знаний о PHP поднялся. Язь.

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

дело в кривой архитектуре всех поделий на пыхе
в основном из-за кривого лапшекода

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

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