The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка Go 1.20. SourceHut отменил блокировку зеркала модулей Go

02.02.2023 10:33

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

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Оберон. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Среди изменений в новом выпуске:

  • Предоставлена экспериментальная поддержка оптимизации на основе результатов профилирования кода (PGO - Profile-guided optimization), позволяющей учитывать особенности, определяемые во время выполнения программы. Учёт профиля выполнения при сборке позволяет повысить производительность приложений на 3-4%. Для включения PGO в go build, go install и другие сборочные команды добавлена опция "-pgo".
  • В пакет unsafe добавлены функции SliceData, String и StringData для низкоуровневых манипуляций со срезами (массивы динамического размера) и строками (например, для преобразования области памяти, на которую ссылается указатель в строку с типом string и наоборот).
  • Правила преобразования типов расширены возможностью прямого преобразования из среза (slice) в массив.
  • В спецификации явно определён порядок сравнения элементов массива и полей структур.
  • Утилита cover расширена возможностью построения coverage-профиля для всей программы, а не только unit-тестов. Для формирования coverage-профиля в go build, go install и другие сборочные команды добавлена опция "-cover".
  • Утилита go избавлена от привязки к размещаемым в каталоге $GOROOT/pkg заранее скомпилированным пакетам стандартной библиотеки, что позволило исключить их из поставки и добиться уменьшения размера загружаемых данных. Пакеты стандартной библиотеки, как и обычные пакеты, теперь собираются по мере необходимости и кэшируются в сборочном кэше.
  • В команде go по умолчанию отключено применение пакета cgo на системах без инструментария для сборки кода на языке Си. На подобных системах теперь используются варианты пакетов стандартной библиотеки на языке Go, вместо использования предварительно скомпилированных пакетов.
  • В утилите vet реализованы дополнительные предупреждения о проблемах с используемыми в циклах переменными, выявленными при параллельном запуске тестов.
  • В стандартную библиотеку добавлен пакет crypto/ecdh с поддержкой обмена ключами на основе эллиптических кривых ECDH (Elliptic Curve Diffie-Hellmann).
  • Добавлен новый тип http.ResponseController для создания расширенных обработчиков HTTP-ответов.
  • В тип httputil.ReverseProxy добавлена функция Rewrite для изменения запроса.
  • Добавлена функция context.WithCancelCause, позволяющая отменить вызов с указанием определённой ошибки.
  • В тип os/exec.Cmd добавлены поля Cancel и WaitDelay, определяющие поведение при отмене контекста или завершении процесса.
  • В компиляторе и сборщике мусора снижено потребление памяти и проведена оптимизация производительности (прирост скорости достигает 2%).
  • Проведена работа по ускорению компиляции - сокращение времени сборки может достигать 10%.
  • Добавлена экспериментальная поддержка платформы FreeBSD на системах с арихитектурой RISC-V (GOOS=freebsd, GOARCH=riscv64).

Дополнительно можно отметить решение проблем у платформы совместной разработки SourceHut с сервисом Go Module Mirror. Из-за слишком большой нагрузки, возникающей при импорте размещённых в репозиториях SourceHut модулей на языке Go, ранее было решено начиная с 24 февраля запретить доступ к git-репозиториям через Go Module Mirror (proxy.golang.org). Разработчики проекта Go урегулировали проблему отключив автоматическое обновление в proxy.golang.org для хостов SourceHut и предложив для утилиты go новый флаг "-reuse" для ручного управления обновлением. После предложенного решения трафик на SourceHut с proxy.golang.org снизился до разумных пределов и команда SourceHut отменила планируемую блокировку Go Module Mirror.

Проблема была связана с тем, что при выполнении команд, таких как "go get", импорт модулей из внешних репозиториев осуществляется не напрямую, а через кэширующий прокси proxy.golang.org, который периодически загружает содержимое репозитория (выполняет git clone) для проверки появления обновлений. Подобные загрузки выполняются независимо от выполнения пользователями "go get" и создают большую нагрузку на серверы (фиксируется примерно 2500 операций git clone в час для всего хостинга и до 100 запросов в час для отдельных git-репозиториев, при том что часть запросов поступает одновременно).

  1. Главная ссылка к новости (https://go.dev/blog/go1.20...)
  2. OpenNews: В инструментарий для языка Go добавлена возможность отслеживания уязвимостей в модулях
  3. OpenNews: Выпуск языка программирования Go 1.19
  4. OpenNews: Платформа совместной разработки SourceHut запрещает размещение проектов, связанных с криптовалютами
  5. OpenNews: Релиз языка программирования Go 1.17
  6. OpenNews: Выпуск языка программирования Go 1.18
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58586-go
Ключевые слова: go, golang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (147) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:04, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    посмотрим, возможно, на фоне увольнений гугол это последний релиз
     
     
  • 2.19, анон (?), 11:31, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 3.24, Аноним (24), 11:44, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 4.28, анон (?), 11:48, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 5.35, Аноним (1), 11:56, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 4.31, Аноним (31), 11:49, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 5.38, НяшМяш (ok), 12:00, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 6.41, Аноним (1), 12:02, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 6.43, Аноним (1), 12:03, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 6.48, Аноним (31), 12:09, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 7.77, Старший аноним (?), 12:37, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.68, RomanCh (ok), 12:18, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    А там всю команду уволили, или только массовиков-затейников с развитыми мягонькими навыками и высоким "эмоциональным интеллектом"?
     
  • 2.124, Аноним (124), 18:39, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Руководство Гугла - не эксцентричный Маск, дойную корову никто выгонять не будет. Внутри Гугла слишком много всего завязано на golang. Там люди прагматичные. В первую очередь под нож пойдут розовые пони, набранные ради diversity, экономическая польза от которых отрицательна.
     

     ....большая нить свёрнута, показать (12)

  • 1.3, Аноним (24), 11:07, 02/02/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     

     ....ответы скрыты (6)

  • 1.5, Аноним (5), 11:12, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для микроконтроллера можно скомпилировать?
     
     
  • 2.12, анон (?), 11:25, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    tinygo
     
  • 2.69, RomanCh (ok), 12:19, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Для микроконтроллера можно скомпилировать?

    Даже для Lego конструктора можно.

     
     
  • 3.84, ryoken (ok), 13:14, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Даже для Lego конструктора можно.

    чочо

     
     
  • 4.98, RomanCh (ok), 14:26, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >>>Даже для Lego конструктора можно.
    > чочо

    https://github.com/ev3go/ev3dev

     
  • 4.183, Аноним (-), 13:38, 04/02/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.18, Аноним (18), 11:30, 02/02/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     ....ответы скрыты (11)

  • 1.37, Аноним (37), 11:58, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Го отличный язык при разумном применении.
    Раст отличный язык при разумном применении.
     
     
  • 2.39, Аноним (1), 12:01, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +8 +/
    X_PROGRAMMING_LANGUAGE отличный язык при разумном применении.
     
     
  • 3.74, Аноним (74), 12:31, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    brainfack отличный язык при разумном применении.
    yoptascript отличный язык при разумном применении.
    HQ9+ отличный язык при разумном применении.
     
     
  • 4.136, anonist (?), 20:09, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Английский отличный язык при разумном применении.
     
     
  • 5.156, Аноним (156), 08:19, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это исключение
     
     
  • 6.193, RarogCmex (ok), 19:19, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Русский отличный язык при разумном применении
     
  • 3.192, Аноним (192), 19:11, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Разумное применение -- отличная штука, при наличии.
     
  • 2.207, Аноним (207), 22:53, 06/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Именно поэтому на го гораздо больше софта, чем на расте
     

  • 1.51, Аноним (51), 12:10, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Го с растом сравнивать как-то бредово. Они для разного. Но вместе они заменят плюсы. Го в веб-бэкэнде, раст - в системном программировании.
     
     
  • 2.54, Аноним (31), 12:12, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Никто не заменит плюсы, раст - это новый паскаль
     
  • 2.92, ihatenpm (?), 14:04, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Перепиши Qt, OpenCV и многое многое другое, заменятель близорукий.
     
     
  • 3.102, Прохожий (??), 14:37, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    У вас в работе много задач, которые требуют всего функционала QT?
     
     
  • 4.116, ihatenpm (?), 17:53, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > QT

    Разговор на этом можно заканчивать

     
     
  • 5.143, Michael Shigorin (ok), 00:32, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А на чём, кстати, написан QT? (что плюсовые привязки есть -- понимаю)
     
     
  • 6.151, Perlovka (ok), 04:54, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    QuickTime был написан на C и Objective C.
     
  • 3.115, Анонус (?), 17:36, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ЧятГПТ скоро перепишет. Уверен через год-два появятся инструменты транспайлинга с любого языка на любой.
     
     
  • 4.117, ihatenpm (?), 17:55, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Посмотрим, пока плохо получается.
     
  • 4.118, ihatenpm (?), 17:57, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И прикол кстати в том, что может быть наоборот он будет полезен в переводе с макак-языков на более быстрые, с просчётом всяких неуязвимостей.
     
     
  • 5.153, Аноним (153), 07:28, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Например, пишешь на модном расте, потом транспайлишь в классический си с сохранением гарантий безопастности. И все довольны.
     
  • 3.165, Советский инженер (?), 10:04, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Никто, конечно, не будет переписывать проекты которым по 20 и более лет.

    Раст выбрал другую стратегию: embrace, extend, and extinguish.

    Раст закрепился в файрфоксе, пролез в ядро, его одобрили для использования в хроме. Он уже в месе и гстимере. И т.д и т.п.

     
  • 2.106, Аноним (106), 15:38, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно, заменят. Всё в твоих руках :)
     
  • 2.208, Аноним (207), 22:54, 06/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не могу себе представить системное програмиирование на языке, hello world которого весит 10 Мб
     

  • 1.65, RomanCh (ok), 12:17, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > В пакет unsafe добавлены функции SliceData, String и StringData для низкоуровневых манипуляций со срезами (массивы фиксированной длины)

    Срезы, это "массивы" динамического размера, т.е. это достаточно низкоуровневая абстракция над массивами. А вот массивы в Go как раз имеют фиксированный размер.

    Отправил правку в статью.

     
     
  • 2.123, pashev.ru (?), 18:29, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Срезы, это "массивы" динамического размера

    Во-первых, не запятая, а тире. Во-вторых, размер ни разу не «динамический». Можно создавать несколько срезов разных размеров, но не срез «динамического» размера.

    Отправил в биореактор.

     
     
  • 3.128, RomanCh (ok), 18:55, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Во-первых, не запятая, а тире. Во-вторых, размер ни разу не «динамический». Можно
    > создавать несколько срезов разных размеров, но не срез «динамического» размера.

    Ну, с таким знанием предмета, вам только и остаётся, что до пунктуации докапываться.

    Просвещайтесь, вот тут для самых маленьких: https://go.dev/tour/moretypes/7
    >  A slice, on the other hand, is a dynamically-sized, flexible view into the elements of an array.

    А тут для тех, кто постарше: https://go.dev/src/runtime/slice.go
    Замечу, что фраза "низкоуровневая абстракция" была написано выше не просто так.

    PS Забавно, что ваш предыдущий бессмысленный комментарий удалили, но вы не сдаётесь и пытаетесь родить что-то более осмысленное. Комплексы?

     
     
  • 4.131, pashev.ru (?), 19:41, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/

    > Просвещайтесь, вот тут для самых маленьких: https://go.dev/tour/moretypes/7
    >>  A slice, on the other hand, is a dynamically-sized, flexible view into the elements of an array.

    Теперь с гошистами всё окончательно понятно.

     
     
  • 5.133, pashev.ru (?), 19:56, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Поясню: изменение полей структуры это не изменение размера структуры.

    И да, бардак в голове проявляется и в пунктуации.

     
  • 4.170, QrKot (?), 19:42, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ≥≥ Ну, с таким знанием предмета, вам только и остаётся, что до пунктуации докапываться.

    Мэн, сорян, конечно, но в этот раз не он о бо ср ался, а ты(

    ≥≥  A slice, on the other hand, is a dynamically-sized, flexible view into the elements of an array.

    И переводится это так: Слайс, с другой стороны - гибкое представление элементов массива динамической длины.

    Короче, поясню: Слайс - обёртка над массивом. Он имеет длину, вместимость (капасити) и нижележащий массив. Капасити - константна, т.е. Слайс НЕ УМЕЕТ в ресайз. append при превышении капасити создаёт НОВЫЙ слайс, а не изменяет ресайзит текущий.

     
     
  • 5.209, Аноним (207), 22:56, 06/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ошибаетесь, append не всегда будет выделять новый слайс. А если и будет, то "зарезервирует запас"
     
  • 2.127, Аноним (-), 18:50, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "Фиксированный размер" и "статически фиксированный размер" -- это разные вещи. Ты не можешь изменить размер слайса. Если в слайсе три элемента, ты не можешь добавить туда ещё один, чтобы их стало четыре.
     
     
  • 3.129, RomanCh (ok), 18:58, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Если в слайсе три элемента, ты не можешь добавить туда ещё один, чтобы их стало четыре.

    И откуда вас таких выпустили?.. См. соседний камент и вот это, специально для вас: https://go.dev/tour/moretypes/15


     
     
  • 4.130, Аноним (-), 19:35, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > И откуда вас таких выпустили?

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

    Откуда ты такой вылез неясно.

    Глянь на эту запись:

    s = append(s, 2, 3, 4)

    Ты видишь "функциональность" этого append'а? Он не меняет переданный ему слайс, он возвращает новый слайс, созданный на основе s и остальных аргументов.

    Функциональное программирование, ты слышал про него? Есть разница между императивным API вида s.append(2, 3, 4), которое подразумевает изменение s, и функциональным, которое изменения не предполагает, которое вместо изменений существующих объектов создаёт новые объекты.

     
     
  • 5.132, RomanCh (ok), 19:49, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну то есть, будучи пойманным на глупости, остаётся только перевести разговор на ... большой текст свёрнут, показать
     
     
  • 6.171, QrKot (?), 19:58, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Мэн, вам вдвоем с оппонентом надо таки в доку внимательно заглянуть Слайс таки ... большой текст свёрнут, показать
     
     
  • 7.174, RomanCh (ok), 22:19, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Аа, ну вот и объявился человек, который весь в белом пальто красивый, а все оста... большой текст свёрнут, показать
     
     
  • 8.178, cheshirekot (ok), 08:42, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, ссылаться на GoTour - мощный аргумент, конечно Особенно учитывая, что A sl... большой текст свёрнут, показать
     
     
  • 9.181, RomanCh (ok), 11:42, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нда Либо вы не умете считать до двух, т к смотреть надо было ВТОРУЮ ссылку, ... большой текст свёрнут, показать
     
     
  • 10.184, cheshirekot (ok), 13:42, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Отлично Из вашей фразы Да, переприсваиванием исходной переменной, в которой ук... большой текст свёрнут, показать
     
  • 10.185, cheshirekot (ok), 13:57, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Окей, короче, давайте просто сравним две абстракции плюсовый std vector динам... большой текст свёрнут, показать
     
     
  • 11.188, RomanCh (ok), 14:44, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Бегло прочитав данный пост, я вижу, что вы по прежнему пытаетесь использовать ко... текст свёрнут, показать
     
     
  • 12.189, cheshirekot (ok), 15:38, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Окей, перейдем к официальной терминологии языка Ну, как бэ, вот Это ваша фор... большой текст свёрнут, показать
     
     
  • 13.190, RomanCh (ok), 17:58, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Рад, что вы открыли для себя страницы спецификации Нет, в спеке написано то, чт... большой текст свёрнут, показать
     
     
  • 14.194, cheshirekot (ok), 20:21, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, действительно, неудобно очень читать до второго предложения и не видеть трет... большой текст свёрнут, показать
     
     
  • 15.196, RomanCh (ok), 21:09, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Отлично, я вас научил читать документацию Правда, похоже это без толку, потому ... большой текст свёрнут, показать
     
     
  • 16.197, QrKot (?), 22:01, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кроме срезы - это массивы динамического размера , что, по прежнему, неправда,... текст свёрнут, показать
     
  • 16.199, cheshirekot (ok), 22:56, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не, это было бы грустно Динамическим называется массив, размер которого може... большой текст свёрнут, показать
     
     
  • 17.202, RomanCh (ok), 10:58, 05/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Забавно, комментарий с нейросетью удалили Так вот, у нас с вами сугубо термин... большой текст свёрнут, показать
     
     
  • 18.206, cheshirekot (ok), 19:41, 06/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Разрешите воспользоваться вашей же аналогией с автомобилем Вот есть автомобиль ... большой текст свёрнут, показать
     
  • 14.198, cheshirekot (ok), 22:37, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    На что, простите намекает В effective Go слово object встречается 10 раз Напри... большой текст свёрнут, показать
     
  • 8.205, Аноним (205), 09:10, 06/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуй, ну, я даже не знаю, ковырнуть исходник и посмотреть что такое слайс и ... текст свёрнут, показать
     
  • 5.138, Neon (??), 21:50, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Функциональность - новая мода, с которой все носятся как дурни с писанной торбой
     
  • 5.140, morphe (?), 22:08, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Ты видишь "функциональность" этого append'а? Он не меняет переданный ему слайс, он возвращает новый слайс, созданный на основе s и остальных аргументов.

    Не обязательно, и это страшно
    append может изменить исходный слайс, т.к у слайсов есть capacity, это у них оптимизации такие :D
    Но да, если исходный слайс не имеет лишнее место - то новый слайс возвращается

    https://stackoverflow.com/questions/68042972/why-append-slice-in-go-change-the

     
     
  • 6.141, morphe (?), 22:15, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В отличии от языков с нормальным дизайном, разработчики golang решили сделать чтобы слайс работал как вектор, и футганов тут дофигища.

        package main
        
        import "fmt"
        
        func main() {
                a := []int{0}
                for i := 0; i < 40; i++ {
                        b := append(a, 0)
                        a[i] = 1
                        fmt.Printf("%d ", b[i])
                        a = b
                }
        }

    → 0 0 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1

     
     
  • 7.145, OpenEcho (?), 03:21, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что предполагалось увидеть на выхлопе Если заменить а int 0 на предска... большой текст свёрнут, показать
     
     
  • 8.146, morphe (?), 03:34, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Человек написал что append в golang функциональный, и исходный буфер не трогает ... большой текст свёрнут, показать
     
     
  • 9.150, OpenEcho (?), 04:32, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сорри, не понял, согласен, с append-om нужно быть осторожным, точнее просто знат... большой текст свёрнут, показать
     
  • 9.173, QrKot (?), 21:20, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    если места нет - то создаёт новый слайс, в котором в 2 раза больше места Прост... большой текст свёрнут, показать
     
     
  • 10.175, RomanCh (ok), 22:36, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А как на счёт посмотреть исходник, и не писать результаты своих гаданий Ведь за... текст свёрнут, показать
     
     
  • 11.180, cheshirekot (ok), 11:12, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А, ну да, в 2 раза, my bad При размере слайса до 256 элементов А дальше таки... текст свёрнут, показать
     
     
  • 12.182, RomanCh (ok), 11:56, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот нет бы тут остановиться, и было бы красиво Ну бывает, люди совершают ошибки... большой текст свёрнут, показать
     
     
  • 13.187, cheshirekot (ok), 14:27, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Дык, а давайте прямо комментарии в коде и почитаем Строка 126 growslice all... большой текст свёрнут, показать
     
     
  • 14.191, morphe (?), 18:27, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В старом изменяется длина, но остаётся прежним capacity Т е слайс таки имеет ди... текст свёрнут, показать
     
     
  • 15.195, cheshirekot (ok), 20:47, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот нет же s0 make int, 10, 10 fmt Printf len d 124 cap d ... большой текст свёрнут, показать
     
  • 10.177, morphe (?), 06:49, 04/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я пример кода скинул, который демонстрирует это Нули на позициях 2,4,8,16,32, им... большой текст свёрнут, показать
     
     
  • 11.211, qrKot (?), 10:57, 07/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Просто в качестве занудства это только до 256 элементов в массиве Дальше прира... большой текст свёрнут, показать
     
  • 9.176, RomanCh (ok), 22:42, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    У меня на Go код работает так, как я от него ожидаю, что я делаю не так Ах, да,... текст свёрнут, показать
     
  • 5.172, QrKot (?), 20:04, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    При чем тут, простите, функциональное АПИ? Слайс к функциональщине не имеет никакого отношения, ну вообще никакого, он императивный в хлам.
    А запись такая потому, что таки да, Слайс не умеет ресайзиться, Слайс вообще есть грязный хак по своей природе. В функциональном подходе за такое по рукам бьют.

    ≥≥ Он не меняет переданный ему слайс, он возвращает новый слайс, созданный на основе s и остальных аргументов

    Ну вот неправда же. Он МЕНЯЕТ переданный ему Слайс, именно меняет. А в случае, если капасити слайса не хватает, создаёт новый, чтобы дописать то, что в старый не влезло.
    А уже потом возвращает либо переданный Слайс, если влезло, либо новый, если в старый не поместилось

     
     
  • 6.204, Аноним (204), 00:46, 06/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    https://bluxte.net/musings/2018/04/10/go-good-bad-ugly/#slice-gotchas

    В go слайсы это полный треш, нихрена не такие удобные как их хорошо пропиарили, да и вообще языку нужны нормальные типы контейнеров, нормальный синтаксис для классов (можно хоть не вводить this). Они бы могли базироваться на llvm как rust, но в те древние времена в llvm не было сигментмрованного стека. Рефлексии для приватных объектов нет. Если написать свой тип данных то вся type safety исчезает. В одном его рантайме целый вагон различных моментов где можно словить panic. По сути нужно знать дофига моментов почему тут нужно делать не так, а вот здесь nil не nil. Абсолютно такие же "мелкие ляпы" там сям есть и в nim.

     
     
  • 7.210, qrKot (?), 10:10, 07/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В Go слайсы - это дескриптор непрерывного сегмента нижележащего массива, предос... большой текст свёрнут, показать
     

     ....большая нить свёрнута, показать (46)

  • 1.75, Аноним (75), 12:33, 02/02/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     

     ....ответы скрыты (3)

  • 1.83, Старший аноним (?), 13:10, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    В блоге есть, в статье пропущено:
    Начиная с версии  Go 1.21 не будет больше работать на Windows 7,8 и соответствующих им Windows Server 2008, 2012.

    За Windows 7 жалко - многие ее еще используют как для домашнего использования, так и для разработки.

     
     
  • 2.86, leap42 (ok), 13:26, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    тех кто пишет на Go под Win7 уж точно не жалко xD
     
     
  • 3.87, Старший аноним (?), 13:38, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Конечно, это же не Windows 10 c телеметрией "ис каропки". А чо - стальна, модна, маладежно. Так?
     
     
  • 4.88, анон (?), 13:49, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Телеметрия или 0-day эксплоиты для неподдерживаемой ос, что же выбрать старшему анону в этой непростой ситуации?
     
     
  • 5.89, Аноним (-), 13:55, 02/02/2023 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 5.94, ihatenpm (?), 14:07, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И кому нужна эксплутация зеродеев, если там одни неуловимые джо?
     
     
  • 6.101, анон (?), 14:34, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Удобно так думать, с такой логикой можно вообще наплевать на безопасность. А чо, кому я нужен-то, верно?
     
     
  • 7.110, Аноним (110), 15:57, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так и писать тогда можно на любом языке безопасность же не нужна.
     
  • 7.120, ihatenpm (?), 18:00, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для вашей уязвимости достаточно жить в крупном городе и смартфона.
     
     
  • 8.139, Neon (??), 21:51, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    От этого неуловимый джо только станет еще неуловимее ... текст свёрнут, показать
     
  • 4.114, leap42 (ok), 17:06, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Конечно, это же не Windows 10 c телеметрией "ис каропки". А чо
    > - стальна, модна, маладежно. Так?

    Нет, не так. Я уже 15 лет виндой не пользуюсь. Но вместо 7-ки взял бы 10-ку из-за WSL. Всю телеметрию из 10-ки кстати обновлениям встроили и в 7-ку ЕМНИП.

     
     
  • 5.148, OpenEcho (?), 03:51, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Но вместо 7-ки взял бы 10-ку из-за WSL

    А ты не пробовал WSL пользоваться то взрослому, как на никсах?

     
     
  • 6.152, leap42 (ok), 04:58, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Но вместо 7-ки взял бы 10-ку из-за WSL
    > А ты не пробовал WSL пользоваться то взрослому, как на никсах?

    Нет, я же уже лет 15 виндой не пользуюсь. Но я имел опыт с pussy.exe и попытал бы счастья с WSL.

     
  • 4.212, Annonim (?), 19:32, 14/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ой https://github.com/golang/go/discussions/58409
     
  • 3.95, ihatenpm (?), 14:08, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я на виртуалке запускаю, когда надо виндо-специфичное, т.к. она легковеснее, и в отличие от 11 не 5 FPS как в анимэ
     
     
  • 4.96, Аноним (96), 14:16, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    10 легковесней раз в 100, попробуй тот билд для банкоматов там практически весь мусор изкоробки отключен.
     
     
  • 5.119, ihatenpm (?), 17:59, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я и так без васяносборок не обхожусь. IoT попробую.
     
     
  • 6.122, Аноним (96), 18:15, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я имею в виду не васяносборку. Но МС её не продаёт в ритейле, она оемная. Кмс-активатор с ней работал по-моему, так что апдейты были.
     

  • 1.97, Аноним (97), 14:22, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Подобные загрузки выполняются независимо от выполнения пользователями "go get" и создают большую нагрузку на серверы

    Слабо рейтлимитер вкрутить?

     
     
  • 2.100, Аноним (100), 14:28, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    так и вкрутили, в новости об.этом и написали
     
     
  • 3.125, www2 (??), 18:40, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так это держателям веб-сервиса надо было самим сделать. А так получается, что после этой новости кто угодно сможет чисто ради прикола положить их сайт. Проблема же не ограничивается одним только криво сделанным go.
     
     
  • 4.135, Аноним (24), 20:07, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Т.е. надо сделать как в npm единую помойку, которую условно сложно положить?
     
  • 4.142, Аноним (100), 22:57, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Так это держателям веб-сервиса надо было самим сделать.

    Кстати да, почему-то другие хостинги, включая живущие исключительно на поддержку пользователей, сильно не жалуются. Может быть, ДеВольту стоило лишь порою возвращать на их запросы 304 Not Modified?

     

  • 1.126, Аноним (126), 18:40, 02/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Проблема была связана с тем, что при выполнении команд, таких как "go get", импорт модулей из внешних репозиториев осуществляется не напрямую...

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

    Идея язычка пропихнуть в базовые типы slice, map и т.д. напрашивается, но давайте спросим честно, что даст Golang когда эти типы наконец-то IEEE протащит в стандартную stdc библиотеку?

    Вообщем какой-то подмножество языка непонятно зачем нужное да еще и с зондами из коропки

     
     
  • 2.134, Аноним (24), 20:06, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Давай по-порядку
    1) Go простой
    2) Go безопасно работает с памятью
    3) Go быстрее питон чего достаточно

    Больше ему ничего не надо. Отсутствие гарбеджколлектора это плюс к простоте. Запиши в блокнотик заучивай каждый день.

     
     
  • 3.137, Вы забыли заполнить поле Name (?), 21:49, 02/02/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Отсутствие гарбеджколлектора это плюс к простоте

    Может присутствие?

     
     
  • 4.166, Аноним (24), 11:12, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Отсутствие необходимости иметь себе мозги гарбеджколлектором.  
     
     
  • 5.169, Аноним (169), 18:04, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Но ты им себе имеешь, когда привет энтерпрайз и хайлоад с конским RPS. Как-нибудь чекните докладчиков из Wildberries/Avito, как они увлекательно сидят профилируют, чтобы в узких местах писать сервачки в garbage free стиле, чтобы свести к минимуму stop-the-world сборщика мусора и поменьше аллоцировать в куче принципе.
     
  • 2.149, OpenEcho (?), 04:11, 03/02/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я не разобрался, но я точно знаю proxy пакетов сделан для того, что бы не б... большой текст свёрнут, показать
     

  • 1.154, Аноним (154), 07:34, 03/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Go хорош. На нем можно писать классные программы вроде VictoriaMetrics
     
  • 1.155, Аноним (155), 08:13, 03/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Самого вкусного в новости нет. Теперь можно врапать несколько типов ошибок... И выкинуть наконец-то сторонние библиотеки.
     
  • 1.164, анонимит (?), 10:02, 03/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    "Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python." и Pascal 🤭 C++ с модулями имеет схожий подход
     
  • 1.168, Аноним (168), 16:56, 03/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Go безопасный язык? Угу если не пользоваться библиотеками обёртками над си кодом, в которых тонны gc keepalive. А еще целый вагон не однозначно себя ведущих стандартных функций, прямо как в nim. Зато IDE для него очень шустрые да. В отличие от С++ которые зависят от clangd который тот еще тормоз.
     
  • 1.179, vadiml (ok), 10:18, 04/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > с отдельными заимствованиями из языка Python

    Питоном, к счастью, в нём и не пахнет, зато авторы говорили, что "заимстования" из Оберона, который врос из паскаля.

     
  • 1.186, anonbrain (?), 14:24, 04/02/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    достаточно бредовый язык. делал сравнения для оценки производительности, так вот он всего в полтора раза быстрее последних версий PHP, но это абсолютная шляпа, учитывая что он вобще то компилируемый. короче на помойку его, используйте C/C++
     
     
  • 2.203, Аноним (169), 15:28, 05/02/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Делать энтерпрайзу нечего, как микросервисы на C++ пилить для задач, которые в I/O упираются, а не вычисления. Go дубовый и прямолинейный, код плоский и очевидный, дебажить просто, но ценой многословности. По совокупной стоимости владения проект на гошке обходится в разы дешевле какой-нибудь джавы или С# или, тем более, С++.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру