1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust #rustreleasenotes

Вышла версия Rust 1.59.0!

(Об известных событиях есть короткая ремарка в начале блогопоста, но, в отличие от заметок к релизу Rust 1.44.0, почти полностью убирать пост не стали. Впрочем, не исключено, что это лишь из-за того, что дата публикации поста совпала с этим днём)

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

▪️ВАЖНО: из-за багов инкрементальную компиляцию по умолчанию отключили. Её всё так же можно активировать самостоятельно, но в таком случае готовьтесь к ICE. Хорошие новости: баг вроде пофиксили, так что в следующем релизе включат обратно.

▪️В присваиваниях (а не только в декларациях) теперь можно использовать паттерны. Пример из блога достаточно красноречив:

let (a, b, c, d, e);

(a, b) = (1, 2);
[c, .., d, _] = [1, 2, 3, 4, 5];
Struct { e, .. } = Struct { e: 5, f: 3 };

assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);

И да, присваивания в духе (a, b) = (b, a) работают, причём с не-Copy типами. Rust стал ещё чуть больше похож на Python (предыдущей фичей была f-строки).

▪️Изменения в const generics: их теперь можно объявлять вперемешку с ти́повыми параметрами, а сами значения const generics на объявлениях типов теперь могут иметь значения по умолчанию. И если вы думаете, что это нишевая штука, то я могу совершенно точно сказать, что на предыдущей работе мне из-за отсутствия значения по умолчанию для const generics пришлось отказаться от одного кусочка API, которое я разрабатывал, и сделать его менее эргономичным.

▪️Совершенно внезапно стабилизировали ассемблерные вставки! Я удивлён, не думал, что они уже настолько готовы. С другой стороны, пока что они работают лишь для архитектур x86/x86-64, ARM, AArch64 и RISC-V.

▪️Линт private-in-public ослабили: теперь не является ошибкой иметь на impl-е трейта в where clause ограничение публичного типа приватным трейтом и ограничение приватного типа публичным трейтом (в PR, который вносит это изменение, рассказывается, почему это ок).

▪️С части методов Hash{Map, Set} сняли лишние ограничения на типы.

▪️ Ну и традиционно "о-боже-почему-они-стабилизировали-эту-простую-вещь-только-сейчас"-часть. Всё перечислять не буду, укажу только на std::thread::available_parallelism (кстати, в отличие от аналогичного API в стандартной библиотеке C++, эта функция возвращает io::Result<NonZeroUsize>, так что с нулём разбираться не придётся), Result::{cloned, copied}, ops::ControlFlow::{is_break, is_continue} и is_power_of_two на NonZeroX типах.

А ещё в этот раз в подробных заметках о релизе довольно объёмная секция о совместимости. Советую на всякий случай прочитать, но, если вы не делаете ничего странного, то вас наверняка ничего не затронет (кроме, разве что, того, что split_inclusive на пустых слайсах возвращает пустое значение — и то это приведение в соответствие с аналогичным методом у str).
👍6👎3
Кстати, я тут понял, что посты с разбором нововведений сложно найти, так что сделал хештег rustreleasenotes и отредактировал все старые посты с ними, которые смог найти, чтобы они включали этот хештег
🔥12👍1👎1
Forwarded from Личные мыслишки Эмили
Я конечно против войны, и желаю Украине всего лучшего, но вот такие приколы не радуют
👎19👍2😐1
#prog #go #article

Optimizing GoAWK with a bytecode compiler and virtual machine

Не смотря на то, что, очевидно, статья про программу, написанную на Go, почти ничего из перечисленного не является специфичным именно для Go. Единственным исключением является ремарка насчёт switch: на момент написания статьи компилятор Go компилировал switch по набору числовых констант, идущих по значению, в бинарный поиск, а не в jump table.

(thanks @go_perf)
👍4
Тем временем Discord объявил об изменениях в Terms of Service, Privacy Policy и Community Guidelines, которые вступят в силу 28 марта, и насчёт изменений Community Guidelines там есть весьма занимательное добавление:

Off-platform behaviors. We will now consider relevant off-platform behaviors when making policy and enforcement assessments. This includes membership or association with a hate group, illegal activities, and hateful, violent sexual, or other types of violent acts.

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

Большой брат Дискорд следит за тобой, пчел.
😢7💩3👍1
Forwarded from Neural Machine
Меня тошнит от новостей
👍54👎4
В СМЫСЛЕ УЖЕ МАРТ
😱3
Forwarded from Life of Tau
15👍3
Forwarded from flexagoon
Есть Worlde с названиями библиотек в js

Это просто обычный wordle

Потому что на любое слово есть библиотека для js
😁10
Молодой динамично развивающийся блокчейн-стартап starter pack:

* "Мы строим будущее"
* претенциозное название, опционально включающее в себя "De" или ".io"
* команда — все, как один, passionate developer with big experience
* сайт — одностраничный лендинг, с отдельными секциями, которые появляются с анимациями при прокрутке
* продукт обязательно простой в использовании, автоматизируемый и работающий между различными чейнами
* в дорожной карте пункт реализации протокола отмечен, как запланированный, но деньги от инвесторов уже есть
* разработка ведётся на Rust поверх Substrate/Solana
* "Если не идёте к нам, то расскажите о нас друзьям, ну пжалста 🥺"
14🤮10👍3😁3
Блог* pinned a photo
#prog #rust #article

A Rust match made in hell

Или о крайне неочевидном способе получить ошибку в коде на Rust, против которого пока не ограждают ни компилятор, ни линтер.
👎1
Блог*
#prog #rust #amazingopensource diffstatic — инструмент для определения разницы между исходниками, который понимает синтаксис и потому отображает более адекватный дифф (см. пример). (thanks @rustawesome)
#prog #rust #rustlib

Dissimilar: diff library with semantic cleanup

This library is a port of the Diff component of Diff Match Patch to Rust. The diff implementation is based on Myers' diff algorithm but includes some semantic cleanups to increase human readability by factoring out commonalities which are likely to be coincidental.
#prog #rust #rustlib

halfbrown — библиотека, реализующая хэш-таблицу с гибридным бекендом: вектор для малого количества ключей и полноценная hashbrown для бо́льшего числа ключей