#prog #rust #rustreleasenotes
Да, да, я знаю, что я лениваяжягодица, не напоминайте.
Вышел Rust 1.53.0! Как обычно, я не буду разбирать релиз целиком, а выделю лишь то, что привлекло лично моё внимание.
Но начну я, пожалуй, с парочки вещей, которые мне особенно примечательны по личным причинам. Как я уже рассказывал, я реализовал индексацию слайсов при помощи пар std::ops::Bound, и в этой версии моя реализация наконец докатилась до стабильной версии Rust. Очень приятно видеть изменение в release notes и осознавать, что ты непосредственно приложил руку к тому, чтобы этот пункт появился. Ещё одно примечательное изменение — это стабилизация Vec::extend_from_within, реализованного замечательным @WaffleLapkin. Жму руку, коллега!
Перейдём теперь к изменениям в языке. Самое, пожалуй, крутое — это то, что или-паттерны теперь могут быть вложенными (пример беззастенчиво стырю из блога):
Ещё одна не менее заметная вещь — теперь можно итерироваться напрямую по массивам, то есть наконец-то можно писать
А теперь перейдём к полезным плюшкам из стандартной библиотеки.
То, что, пожалуй, затронет почти всех — это то, что для чисел с плавающей точкой теперь реализованы парсинг и печать специальных значений в соответствии с тем, как того требует стандарт IEEE 754. Наиболее заметное изменение — это то, что теперь негативный ноль всегда печатается со знаком минус. На этом уже обожглись авторы различных численных библиотек.
В модуль
До сих пор я старательно обходил стороной слона в комнате, но теперь придётся представить и его: в Rust теперь можно писать идентификаторы из не ASCII символов. Честно, у меня с этого горит. Никакой реальной нужды в этом нет, в tracking issue всё ещё висит вопрос насчёт RTL, и само наличие этой фичи открывает возможность написания проектов, фактически, не на английском языке, что резко увеличивает порог входа внешних контрибуторов и потому вообще-то идёт вразрез с декларируемыми ценностями Rust-сообщества. Как и ожидалось, пропихнул это Центрил, который уже известен своими по меньшей мере сомнительными предложениями.
С другой стороны, когда Rust только вышел, хейтеры говорили, что все проекты поголовно будут в unsafe — и эти чаянья вы итоге не оправдались. Возможно, так же будет с юникодными идентификаторами, поживём — увидим.
Но у меня все ещё горит.
Да, да, я знаю, что я ленивая
Вышел Rust 1.53.0! Как обычно, я не буду разбирать релиз целиком, а выделю лишь то, что привлекло лично моё внимание.
Но начну я, пожалуй, с парочки вещей, которые мне особенно примечательны по личным причинам. Как я уже рассказывал, я реализовал индексацию слайсов при помощи пар std::ops::Bound, и в этой версии моя реализация наконец докатилась до стабильной версии Rust. Очень приятно видеть изменение в release notes и осознавать, что ты непосредственно приложил руку к тому, чтобы этот пункт появился. Ещё одно примечательное изменение — это стабилизация Vec::extend_from_within, реализованного замечательным @WaffleLapkin. Жму руку, коллега!
Перейдём теперь к изменениям в языке. Самое, пожалуй, крутое — это то, что или-паттерны теперь могут быть вложенными (пример беззастенчиво стырю из блога):
match result {
Ok(Some(1 | 2)) => { .. }
Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. }
_ => { .. }
}
Готов поспорить, через несколько релизов растоманы будут удивляться, как они раньше без этого жили (как раньше жили без pattern match ergonomics).Ещё одна не менее заметная вещь — теперь можно итерироваться напрямую по массивам, то есть наконец-то можно писать
for x in [1, 2, 3]
вместо жутко многословного array::IntoIter::new
. Но есть один нюанс: вызов .into_iter()
на массиве всё ещё возвращает итератор, возвращающий ссылки на элементы, как и раньше — и это при том, что IntoIter::into_iter(array)
работает нормально. Как и ожидалось, это поведение реализовано при помощи чудовищного костыля: трейт IntoIterator
(именно сам трейт, а не его реализация для массива) помечен специально созданным для этого атрибутом #[rustc_skip_array_during_method_dispatch]
с названием, которое говорит само за себя. И, более, этот атрибут работает (точнее, планируется) только в edition-ах ниже 2021. Хороший пример того, как обратная совместимость заставляет принимать отвратительные технические решения.А теперь перейдём к полезным плюшкам из стандартной библиотеки.
То, что, пожалуй, затронет почти всех — это то, что для чисел с плавающей точкой теперь реализованы парсинг и печать специальных значений в соответствии с тем, как того требует стандарт IEEE 754. Наиболее заметное изменение — это то, что теперь негативный ноль всегда печатается со знаком минус. На этом уже обожглись авторы различных численных библиотек.
В модуль
cmp
наконец-то добавлены функции {min, max}_by{, _key}
. Не самая часто нужная вещь, но ранее, когда она требовалось, отсутствие этого функционала вызывало недоумение.BTreeMap
и BTreeSet
получили по методу retain
, которые удаляют из коллекций элементы, которые не удовлетворяют переданному предикату. Опять-таки, отсутствие этого метода до этих самых выглядело странно с учётом того, что аналогичный метод на векторе был с самой первой версии, а у HashMap
и HashSet
— с версии 1.18.Option::insert
замещает значение в Option
и возвращает ссылку на него, и, в отличие от Option::get_or_insert
, делает это безусловно, а не только при отсутствующем значении.{integer}::BITS
у всех примитивных численных типов. Минус строчки с mem::size_of::<type>() * 8
.До сих пор я старательно обходил стороной слона в комнате, но теперь придётся представить и его: в Rust теперь можно писать идентификаторы из не ASCII символов. Честно, у меня с этого горит. Никакой реальной нужды в этом нет, в tracking issue всё ещё висит вопрос насчёт RTL, и само наличие этой фичи открывает возможность написания проектов, фактически, не на английском языке, что резко увеличивает порог входа внешних контрибуторов и потому вообще-то идёт вразрез с декларируемыми ценностями Rust-сообщества. Как и ожидалось, пропихнул это Центрил, который уже известен своими по меньшей мере сомнительными предложениями.
С другой стороны, когда Rust только вышел, хейтеры говорили, что все проекты поголовно будут в unsafe — и эти чаянья вы итоге не оправдались. Возможно, так же будет с юникодными идентификаторами, поживём — увидим.
Но у меня все ещё горит.
Forwarded from There will be no singularity
Все выпуски SQL-TIL (чтобы вы могли пошарить):
postgresql edition:
1) https://t.iss.one/nosingularity/535
2) https://t.iss.one/nosingularity/541
3) https://t.iss.one/nosingularity/548
4) https://t.iss.one/nosingularity/572
snowflake edition:
5) https://t.iss.one/nosingularity/582
6) https://t.iss.one/nosingularity/602
7) https://t.iss.one/nosingularity/753 и https://t.iss.one/nosingularity/754
8) https://t.iss.one/nosingularity/762
mix:
9) https://t.iss.one/nosingularity/755
10) https://t.iss.one/nosingularity/803 и https://t.iss.one/nosingularity/804
postgresql edition:
1) https://t.iss.one/nosingularity/535
2) https://t.iss.one/nosingularity/541
3) https://t.iss.one/nosingularity/548
4) https://t.iss.one/nosingularity/572
snowflake edition:
5) https://t.iss.one/nosingularity/582
6) https://t.iss.one/nosingularity/602
7) https://t.iss.one/nosingularity/753 и https://t.iss.one/nosingularity/754
8) https://t.iss.one/nosingularity/762
mix:
9) https://t.iss.one/nosingularity/755
10) https://t.iss.one/nosingularity/803 и https://t.iss.one/nosingularity/804
Forwarded from мне не нравится реальность (вафель 🧇🍓)
mod a {
use self::super::a::{self};
}
Forwarded from Mirror of Mind
Лайфхаки для ютуба
document.getElementsByTagName("video")[0].playbackRate =
3"И вообще, как известно, программисты делятся на две категории: тех, кто ненавидит C++ и пишет не на нём, и тех, кто ненавидит C++ и пишет на нём."
#prog #cpp #quotes
Источник
#prog #cpp #quotes
Источник
Хабр
Почему я всё ещё люблю C, но при этом терпеть не могу C++?
Мне на удивление часто приходится говорить о том, почему мне всё ещё нравится язык C, и о том, почему я плохо отношусь к C++. Поэтому я решил, что мне стоит об этом написать, а не снова и снова...
Forwarded from Backtracking (Дима Веснин)
Алексей Яковлев, художник из Moon Studios, выпустил бесплатный генератор панелек для блендера 2.93 и выше
в нём можно настраивать размеры панельки, частотность разных типов окон, подъездов и кучу ещё всего интересного
artstation, gumroad ($0+)
в нём можно настраивать размеры панельки, частотность разных типов окон, подъездов и кучу ещё всего интересного
artstation, gumroad ($0+)
Forwarded from oleg_log (Oleg Kovalov)
Странная планета
Photo
Оказывается, по этим комиксам планируют сделать мультсериал. К сожалению, видимо, будет эксклюзивом для Apple TV.
(thanks @hexawolf)
Кстати, это было в Чат*е, так что присоединяйтесь к дискурсу
(thanks @hexawolf)
Кстати, это было в Чат*е, так что присоединяйтесь к дискурсу
Deadline
Dan Harmon & Nathan Pyle Adapting Comic ‘Strange Planet’ As Animated Series Greenlit At Apple
Dan Harmon is teaming up with Nathan Pyle, creator of Strange Planet, to adapt the webcomic and graphic novels for Apple TV+.