uz
Feedback
Блог*

Блог*

Kanalga Telegram’da o‘tish

Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here

Ko'proq ko'rsatish
1 922
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
-1130 kunlar
Postlar arxiv
▪️rustdoc теперь предупреждает о возможно пропущенных бектиках в док-комментах. Но линт для этого нужно включать явно. Пример:
#![warn(rustdoc::unescaped_backticks)]

/// `add(a, b) is the same as `add(b, a)`.
pub fn add(a: i32, b: i32) -> i32 { a + b }

Вывод:
warning: unescaped backtick
 --> src/lib.rs:3:41
  |
3 | /// `add(a, b) is the same as `add(b, a)`.
  |                                         ^
  |
help: a previous inline code might be longer than expected
  |
3 | /// `add(a, b)` is the same as `add(b, a)`.
  |               +
help: if you meant to use a literal backtick, escape it
  |
3 | /// `add(a, b) is the same as `add(b, a)\`.
  |                                         +

▪️cargo new/cargo init внутри воркспейса теперь автоматически подтягивает поля из воркспейса выше. ▪️Гомогенные кортежи и массивы той же длины до 12 элементов включительно теперь можно конвертировать между собой через From/Into. ▪️Очередная пачка API из разряда "стоп, почему такую элементарную вещь стабилизировали только сейчас": * CStr::is_empty() * BuildHasher::hash_one * Пачка методов для обращения знака у NonZero*-типов (во всех вариациях). ▪️read{, _unaligned} на сырых указателях теперь можно использовать в const-контексте — как методы, так и свободные функции в модуле std::ptr. Также в const-контексте теперь можно вызывать split_at (но почему-то всё ещё нельзя split_at_mut :/)

Ну а теперь серьёзно. #prog #rust #rustreleasenotes Вышла версия Rust 1.71.0! Как обычно, тут только избранные куски, а все изменения в ченджлоге. ▪️Новый вариант опции атрибута #[link] — конкретно kind="raw-dylib" — позволяет на Windows линковаться с динамическими библиотеками, не требуя их наличия во время компиляции. Кросс-компиляция стала немного проще. А, и ещё атрибуты для импорта и экспорта символом из/в DLL, но я недостаточно в этом разбираюсь, чтобы понять разницу. ▪️ Уже имеющиеся варианты ABI обзавелись "*-unwind" вариантами (полный список). Как нетрудно догадаться, паники и исключения, вызывающую раскрутку стека, могут проходить границу между языками. В частности, это означает, что исключения из C++ могут проходить через фреймы Rust-кода, а растовая паника может проходить через фреймы C++-кода. Ловить раскрутку стека, впрочем, можно лишь в фреймах того языка, в котором она была начата. Это изменение сделает более удобным разработку проектов, смешивающих код на Rust с кодом на других языках. Не *-unwind варианты ABI, как и раньше, абортят процесс, если раскрутка стека пытается пройти по FFI. ▪️Ещё одно изменение, связанное с паниками, но уже исключительно в рамках Rust. Ранее паника во время паники приводила к немедленному аборту процесса. Теперь это ограничение несколько ослабили: паника во время паники не приводит к аборту при условии, что она перехватывается на границе реализации drop. Иными словами, паники внутри деструкторов — которые сами могут быть вызваны из-за паники — могут быть перехвачены и корректно обработаны, не приводя к немедленному прекращению работы. Но в одном аспекте требования к паникам, наоборот, сделали строже: паника внутри хука на панику сразу ведёт к аборту. В реальном коде это приводило к дедлоку из-за того, что рантайм держал блокировку на глобальный лок для бектрейса. ▪️Стало возможным включать в бинарники скрипты для визуализации значений пользовательских типов в отладчиках. Без этих скриптов в отладчике значение, скажем, Vec<i32> выглядело бы не как последовательность чисел, а как набор из адреса, длины и ёмкости — что, очевидно, не слишком-то полезно. Такими скриптами для визуализации укомплектовывается std. Новый механизм позволяет использовать этот же механизм и пользователям Rust. ▪️Обновлена версия MUSL, используемая для *-linux-musl. Главным образом это означает, что 64-битная версия time_t, позволяющая избежать проблемы 2038 года, используется безусловно для всех систем, включая 32-битные. ▪️Макрос format_args! (на который опираются куча макросов как в std, так и вне её) теперь инлайнит форматируемые значения в форматные строки, если они являются литералами или вложенными format_args!. Если наглядно, то следующие пары вызовов теперь эквивалентны даже не на уровне бинарного кода, а ещё на уровне HIR:
println!("Hello, {}!", "World");
println!("Hello, World!");

println!("[info] {}", format_args!("error"));
println!("[info] error");

println!("[{}] {}", status, format_args!("error: {}", msg));
println!("[{}] error: {}", status, msg);

println!("{} + {} = {}", 1, 2, 1 + 2);
println!("1 + 2 = {}", 1 + 2);

Из того, на что на это влияет: * в этих случаях в результирующем коде теперь меньше виртуальных вызовов fmt-методов; * как следствие, макросы вроде log::info! теперь не вредят производительности из-за пробрасывания аргументов через format_args!; * core::fmt::Arguments::as_str() теперь чаще возвращает Some(_); * в бинаре теперь может сильно распухнуть секция .text из-за большего количества уникальных строк — особенно, если в коде активно используется макрос dbg!. Не то, чтобы это было большой проблемой, но может выйти боком, если проект компилируется, скажем, под embedded, где каждый байт на счету. ▪️Несколько изменений докатились до стейбла: улучшения расчёта раскладки типов, фикс расчёта приватности для Self-конструктора у кортежных структур, документация для const-инициализации thread local статиков, стабилизация BuildHasher::hash_one.

Внемлите мне, люди, ибо есть единственная наиважнейшая причина обновиться до Rust 1.71.0: стабилизация CStr::is_empty() drops mic

Короче Я нашёл комикс, который начинается, как slice of life с тупыми гэгами, но постепенно перерастает в удивительно трогательную историю отношений дружбы (при этом, что удивительно, не перерастающей в романтические отношения). Я вот только что дочитал последний, пятисотый эпизод, и я тронут, у меня глаза на влажном месте. Почитать можно тут: webtoons.com/en/slice-of-life/waffles-and-pancakes/list?title_no=1310 Единственное: это совсем не детский комикс. Нет, какой-то особой жести там, но ругательств и некоторой небольшой дичи там хватает. И не говорите, что я вас не предупреждал.

Все реакции на посте понимаю, кроме этой
Все реакции на посте понимаю, кроме этой

Фразу "я бы вдул" по отношению к женщине можно применять, только если женщина — надувная

Классики немножко
Классики немножко

Девушка с татуировкой дайкона #шитпостдлярепостапопячечной

Yuriosity> А представьте, назвать сына Лжедмитрием Oleg K> Двоих

Удивительно, как много людей пишут скрипты на sh/bash — языках, которые вставляют палки в колёса везде, где только можно, и в которых самый прямолинейный способ что-то сделать всегда неправильный

В десятые мы были в шаге от отмены для граждан РФ виз в Европу. Сейчас мы тоже в шаге от отмены для граждан РФ виз в Европу, НО ЕСТЬ НЮАНС.

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

photo content

#meme про инопланетян

photo content

Играть в Baba is you — довольно странный опыт. Ты как будто бы постоянно хакаешь игру. А в экстра-уровнях (помеченных точками в различных количествах вместо чисел) ты ещё и используешь второстепенные отличия и способности блоков, которые вроде как не важны для решения.

Апхахахаха
Апхахахаха

🗳🧖🤟

😒🤚 Фотожоп 😏👉 Фото жоп

Блог* - Telegram kanali @dereference_pointer_there statistikasi va tahlili