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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#meme про работу
🤬11😁5🍌1
#prog #rust #article

Важная веха в развитии rustc_codegen_gcc: теперь он в состоянии компилировать Rust for Linux

It was announced last year that rustc_codegen_gcc can compile Rust for Linux with very few hacks. Today, I’m happy to announce that it can compile Rust for Linux without any patches! (Well, we still need patches to GCC itself like the rest of rustc_codegen_gcc, but those will be merged upstream eventually.)

Также автор провёл тесты на нескольких крейтах (полный список в статье) из числа широко используемых. Все компилируются и проходят тесты.
🔥16👍1
#prog #rust хайлайты

▪️Примитивным числовым типам добавили метод для вычисления целочисленного квадратного корня.

▪️В случае, если тип в выражении в break отличается от типа loop в целом, компилятор теперь указывает на места в коде, из-за которых типы не совпадают (1, 2) (Эстебан, кто ж ещё).

▪️Добавили функцию для сравнения только адресов указателей (без сравнения метаданных).

▪️Метод Result::unwrap_or_else получил атрибут #[track_caller]. Код вида .unwrap_or_else(|| panic!(...)) часто используется, когда unwrap и expect не подходят (из-за ненужных ограничений на E или недостаточно внятных сообщений). Сообщение о панике для такого кода теперь даже при отсутствии стектрейса будет указывать на место вызова метода, а не на кишки core.

▪️Линты, указывающие на невалидные UTF-8 значения, теперь стараются указывать на выражение, которое содержит исходный невалидный литерал.

▪️Добавлен макрос cfg_match!, который как cfg_if!, но мимикрирует под синтаксис match.
❤‍🔥5👍21
#prog #rust #amazingopensource

svgbob — это библиотека и утилита для перевода ASCII-диаграмм в SVG. На сайте проекта можете посмотреть эти и другие примеры (серьёзно, посмотрите, их там предостаточно, я заскринил лишь небольшую часть), причём в веб-редакторе вы можете отредактировать текстовые исходники и увидеть, как изменения сказываются на отрендеренном SVG.

В пару к нему — mdbook-svgbob, плагин к mdbook для использования svgbob-диаграм прям в исходниках.
🔥12👍42
#prog #rust #rustreleasenotes

Вышла версия Rust 1.73.0! Как обычно, тут только выдержки, а полный ченджлог — для компилятора, для cargo и для clippy.

В целом довольно минорный релиз, сильных причин обновлять нету.

▪️Текущее поведение компилятора — считать impl-ы трейтов неперекрывающимися, если попытка их унифицировать приводит к циклу в логике. Теперь на это поведение выдаётся предупреждение, поскольку, возможно, это могут поменять в будущем.

▪️В макросах теперь можно вставлять метапеременные типа block после ключевых слов try и async. Пример кода, который не работал раньше, но работает теперь (результат раскрытия второго макроса, конечно, всё ещё требует активации фичи):


macro_rules! create_async {
($body:block) => {
async $body
};
}

macro_rules! create_try {
($body:block) => {
try $body
};
}

▪️Как я уже писал, компилятор теперь ловит безусловную рекурсию в дропах.

▪️Как и обещано, линт cast_ref_to_mut (на касты из &T в &mut T — в том числе и не напрямую) теперь deny по умолчанию.

▪️Задокументирована текущая (v0) используемая rustc версия манглинга имён.

▪️Строку теперь можно индексировать парами core::ops::Bound

▪️Немного поменяли формат сообщений паник по умолчанию для assert! и assert_eq!/assert_ne!. Примеры:

Код:

fn main() {
let file = "ferris.txt";
panic!("oh no! {file:?} not found!");
}

До:

thread 'main' panicked at 'oh no! "ferris.txt" not found!', src/main.rs:3:5

После:

thread 'main' panicked at src/main.rs:3:5:
oh no! "ferris.txt" not found!

Код:

fn main() {
assert_eq!("🦀", "🐟", "ferris is not a fish");
}

До:

thread 'main' panicked at 'assertion failed: `(left == right)`
left: `"🦀"`,
right: `"🐟"`: ferris is not a fish', src/main.rs:2:5

После:

thread 'main' panicked at src/main.rs:2:5:
assertion `left == right` failed: ferris is not a fish
left: "🦀"
right: "🐟"

По моему, стало более читаемо.

▪️Для LocalKey<Cell<T>> и LocalKey<RefCell<T>> (LocalKey — тип, в который заворачиваются значения в макросе thread_local!) добавили несколько методов для прямой манипуляции с значениями, без использования общего with. Мало того, что это позволяет сделать код нагляднее, так ещё и позволяет в некоторых случаях избежать инициализации thread local переменной значением, которое будет тут же перезаписано. При этом в общности API не теряет, поскольку на практике почти всегда из-за требований внутренней изменяемости значение и так было завёрнуто в Cell или RefCell.

▪️Для примитивных беззнаковых числовых типов доступны методы div_ceil (деление с округлением вверх, наконец-то!), next_multiple_of и checked_next_multiple_of. Все из них работают в cosnt-контексте.

▪️Ещё в const-контексте теперь можно создавать слабые ссылки (и Arc-сорта тоже) и переводить NonNull в ссылку.
👍91
Блог*
Photo
В Чат*е советуют ещё Wysiwyg-редакторы для ASCII-диаграмм:

asciiflow.com
textik.com

(thanks @tech_b0lt_Genona)
2👍1
Forwarded from partially unsupervised
AI, который мы заслужили
Forwarded from Jokes++ (Dmitry Alimov)
😁303
Forwarded from Jokes++ (Dmitry Alimov)
😁23
Блог*
Хочешь почувствовать себя старым? Первый фильм про Гарри Поттера вышел в 2001 году.
А "Ледниковый период" — годом позже, в 2002.

То есть 21 год назад.
🤯10🤡1
15👍1
Forwarded from Ahoy Senpai~
👍4🌚4😁3
Forwarded from Ahoy Senpai~
👎8❤‍🔥3🤮1🌚1
Подписчики, чат канала подвёргся внезапному наплыву новых пользователей. Обычно это означает массированную спам-атаку. Во избежание неудобств я временно закрыл публичный доступ к Чат*у.

Также я скопом удалил всех новых участников чата. Если вдруг я удалил кого-то из реальных людей, не ботов — пишите в личку (ссылка в описании канала), разберёмся в частном порядке

UPD: волна вроде кончилась, Чат* снова открыт
👍5😢1