fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Блог*

Блог*

رفتن به کانال در Telegram

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

نمایش بیشتر
1 987
مشترکین
-124 ساعت
-77 روز
+530 روز
آرشیو پست ها
#prog #rust #rustasync #article Unlocking Tokio's Hidden Gems: Determinism, Paused Time, and Local Execution О менее известных фичах tokio

True #justrustaceanthings
True #justrustaceanthings

photo content
+2

#c #meme Source
#c #meme Source

Repost from commit -m "better"
Давненько не рассказывал про #ANGLE. Это смешно, но у меня, до сих пор, не получилось скачать его исходник. Первая проблема, с которой я столкнулся - часть submodules c https://github.com/google/angle ведет на приватные, запаролленые, гуглорепы. Ладно, как-то я это обошел, точечно вырезав эти submodules. Но вот то, что у меня произошло прямо сейчас:
Cloning into 'third_party/dawn/third_party/angle'...
Ну вы поняли, да? Angle хочет в своем third_party Dawn, а Dawn в своем third_party хочет Angle. Никто такого не ожидал, но они смогли - рекурсивно сослаться на себя же, в цепочке загрузки submodules. Этот процесс, очевидно, не имеет шансов сойтись. В этот момент я заплакал (честно), и отложил это говно, на неопределенный срок.

#justrustaceanthings Source
#justrustaceanthings Source

photo content

#meme про... Разносторонних мужчин

кофейку выпить не забудьте #трудовыебудни
кофейку выпить не забудьте #трудовыебудни

Google Logo Ligature Bug У одного из популярных гугловских шрифтов, который использует по умолчанию в Android — Google Sans — есть лигатура googlelogoligature, которая отображается в виде логотипа Google (со стилизованной буквой G). Автор считает это проблемой безопасности из-за потенциала для фишинга.

photo content

Repost from Kwaliteit
photo content

#rust #meme про Linux

photo content

▪️Парочка изменений, связанных с fmt-макросами. Во-первых, в одной из версий из-за изменений внутреннего представления стало возможным использовать format_args! (в том числе не напрямую, а через panic!) вида format_args!("{}", "a") в const-контекстах. Эта было ненамеренно, поэтому в 1.87.0 эту возможность прикрыли. Во-вторых, значения для указания максимальной ширины форматирования и максимальной точности теперь ограничены 16 битами. Звучит смешно, но некоторые либы это сломало.

#prog #rust #rustreleasenotes Вышла версия Rust 1.87.0! Как всегда, тут только выдержки, всё остальное — в полных заметках о релизе. ▪️Не фича, но: прошло ровно 10 лет с момента релиза Rust 1.0 🎉 ▪️В качестве продолжения темы из предыдущего релиза очень много интринсиков из std::arch теперь можно вызывать без unsafe-блоков в функциях, на которых есть #[target_feature], включающая набор инструкций с этими интринсиками. Это всё, впрочем, инструкции, не принимающие указатели. В блогопосте есть пример кода, показывающий, как теперь можно написать векторизованную функцию суммирования. ▪️Точное указывание захватываемых обобщённых параметров (use<...>) теперь работает и для impl Trait в методах трейтов. К сожалению, опускать обобщённые типовые и const-овые параметры всё ещё нельзя. ▪️При написании impl-а трейта на dyn Trait теперь необязательно реализовывать методы с Self: Sized, так как их всё равно нельзя вызвать. ▪️Однажды в компиляторе был баг, из-за которого dyn A + B и dyn B + A считались разными типами и, как следствие, для них можно было написать две разные реализации одного трейта. Баг поправили, но, так как это номинально слом обратной совместимости, оставили это предупреждением. С версии 1.87.0 это теперь ошибка компиляции. ▪️Унарные операторы теперь корректно парсятся при применении к диапазонам с открытой нижней границей. Как следствие, эта синтаксическая конструкция теперь корректно матчится с макро-фрагментом expr в декларативных макросах, что может привести к тому, что некоторые макросы теперь могут раскрываться иначе. ▪️В стандартную библиотеку добавили поддержку каналов (в смысле pipes). Из неприятного: так как это тонкая обёртка над примитивами OS, указать ёмкость этих каналов нельзя. ▪️Для примитивных чисел добавили методы unbounded_shl и unbounded_shr. Обычные битовые сдвиги сдвигают числа не на указанное число бит, а на число бит, равное остатку от деления указанного числа на битовую ширину. Это хорошо ложится на команды процессора, но это — крайне неполезная для программиста семантика. unbounded_* методы лишены этой проблемы: при сдвиге на значение, большее битовой ширины, методы возвращают 0 для сдвига влево, 0 для сдвига вправо у беззнаковых чисел и размноженный знаковый бит для знаковых чисел (то есть 0 для положительных и -1 для отрицательных). ▪️У знаковых чисел добавили метод cast_unsigned, а у беззнаковых — cast_signed (включая NonZero). Да, это полностью аналогично использованию кастов через as, но эти методы позволяют убедиться, что битовая ширина не меняется. ▪️Ещё беззнаковым числам добавили метод is_multiple_of. Казалось бы, зачем?
This function is equivalent to self % rhs == 0, except that it will not panic for rhs == 0. Instead, 0.is_multiple_of(0) == true, and for any non-zero n, n.is_multiple_of(0) == false.
▪️Из несколько более значимого: стабилизировали extract_if для вектора и для связного списка. Оба итератора извлекают из коллекции элементы, соответствующие предикату, и оба позволяют модифицировать переданные элементы. Версия для вектора ещё и позволяет указать диапазон, на котором применяется фильтрация. ▪️Также коллекцию методов take_* на слайсах для извлечения указанных частей (со странными на первый взгляд типами self: &mut &{,mut}[T]) стабилизировали с именами split_off_* ▪️OsStr{, ing} теперь имеют методы display, которые возвращают реализующую Display обёртку. По очевидным причинам обёртка может при выводе терять данные из-за невозможности представить некоторые элементы в UTF-8. ▪️Целую пачку API стабилизировали для использования в const-контекстах. Наиболее значимым, пожалуй, является <[T]>::copy_from_slice. ▪️Вывод Debug для сырых указателей теперь включает не только адрес, но и метаданные, при наличии.