"Пусть всё пройдёт, как по маслу"
А ничего, что масло вообще-то довольно плохая смазка?
А ничего, что масло вообще-то довольно плохая смазка?
🤡11💩5🤔4😐4😁3💯1
Forwarded from Евгений Касперский
Telegram
Kaspersky
⚡️Зиродей в Chrome: один клик – и все данные под угрозой
Эксперты Kaspersky GReAT обнаружили уязвимость нулевого дня в Google Chrome, которая позволяла атакующим обходить защиту браузера и заражать устройства буквально одним кликом. Всё, что нужно было жертве…
Эксперты Kaspersky GReAT обнаружили уязвимость нулевого дня в Google Chrome, которая позволяла атакующим обходить защиту браузера и заражать устройства буквально одним кликом. Всё, что нужно было жертве…
Почему надо обновлять не только Chromium.
Прямо вслед за новостью об уязвимости в Chrome и Chromium, свой браузер Firefox пропатчила Mozilla.
Да, Хромиума нет, а уязвимость, получается, есть (была), и она находилась в логике взаимодействия песочницы с ОС, которая у разных браузеров имеет (имела) схожую ошибку.
Напомню, мы недавно обнаружили дыру в Chrome и лежащем в его основе Chromium ( который также используется в Яндекс.Браузере, MS Edge и т.д.).
Уязвимость использовали в реальных атаках на цели в России, судя по всему, достаточно продвинутые хакеры.
В общем, обновляйте и Firefox тоже.
Прямо вслед за новостью об уязвимости в Chrome и Chromium, свой браузер Firefox пропатчила Mozilla.
Да, Хромиума нет, а уязвимость, получается, есть (была), и она находилась в логике взаимодействия песочницы с ОС, которая у разных браузеров имеет (имела) схожую ошибку.
Напомню, мы недавно обнаружили дыру в Chrome и лежащем в его основе Chromium ( который также используется в Яндекс.Браузере, MS Edge и т.д.).
Уязвимость использовали в реальных атаках на цели в России, судя по всему, достаточно продвинутые хакеры.
В общем, обновляйте и Firefox тоже.
👍4
Что ж
Номинально мне нужно ждать ещё четыре часа, но календарно —
С днём рождения меня, с днём рождения меня.
27 лет. Пора в клуб.
Номинально мне нужно ждать ещё четыре часа, но календарно —
С днём рождения меня, с днём рождения меня.
27 лет. Пора в клуб.
🎉39❤🔥5🤡4
Админ
@test_channel_grammers
, не пересылай все посты Блог*а подряд, пожалуйста🤡2👍1👎1😢1
Forwarded from Toil Thoughts
Несколько недель назад на GitHub, наконец-то, появилась возможность отсоединить свои публичные форки без потери всех метаданных (issues, stars, releases, etc) репозитория.
Работает примерно так же, как и на Gitlab — нажимаешь на кнопку "отсоединить" в настройках репозитория, и все готово. Единственное отличие, что если репозиторий форка слишком большой (1 GB+ или имеет другие дочерние форки), то для отсоединения все-таки нужно будет написать в саппорт и объяснить причину отсоединения.
Я давно хотел преобразовать один из своих форков в самостоятельный репозиторий, поэтому не мог пройти мимо и не проверить перенос через саппорт лично. На удивление, мне довольно быстренько ответили и отсоединили форк без лишних вопросов. Теперь репозиторий отображается в поиске на GitHub, а в моем профиле стала показываться даже вся старая статистика коммитов из репозитория🐈⬛
Работает примерно так же, как и на Gitlab — нажимаешь на кнопку "отсоединить" в настройках репозитория, и все готово. Единственное отличие, что если репозиторий форка слишком большой (1 GB+ или имеет другие дочерние форки), то для отсоединения все-таки нужно будет написать в саппорт и объяснить причину отсоединения.
Я давно хотел преобразовать один из своих форков в самостоятельный репозиторий, поэтому не мог пройти мимо и не проверить перенос через саппорт лично. На удивление, мне довольно быстренько ответили и отсоединили форк без лишних вопросов. Теперь репозиторий отображается в поиске на GitHub, а в моем профиле стала показываться даже вся старая статистика коммитов из репозитория
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🤡2
#rust
Add panic_unreachable_unchecked feature flag to the standard library
Add panic_unreachable_unchecked feature flag to the standard library
This is similar to panic_immediate_abort except that all panics are considered immediate UB and can therefore be optimized away as unreachable by the compiler.
This has been tested on regalloc3 where it resulted in a 10% speedup compared to using a normal standard library, mainly due to the elimination of bounds checks.
While it may seem that this feature merely to satisfy those with a reckless thirst for performance at any cost, it is also useful for saner heads as a profiling tool to investigate the impact of unnecessary safety check and find places where unsafe code could be used to avoid them.
❤🔥9🤡3👍1
Умному мальчику Антону было 27 лет, когда до него дошло, что "сантехника" — это сокращение от "санитарная техника".
🤡20🤯16🎉6🌚4😁2
#prog #rust #rustreleasenotes
Вышла версия Rust 1.86.0! Как всегда, тут только примечательное для меня, а остальное — в полных заметках о релизе.
В этот раз релиз, по большому счёту, состоит из одной фичи (двух, если вы пишете код с SIMD).
▪️Как я уже писал, стабилизировали апкаст трейтов:
Этот апкаст также работает и через сырые указатели, поэтому пока что — до тех пор, пока не определились с точными гарантиями — создавать сырые указатели на
▪️По умолчанию компилятор Rust генерирует исполняемые файлы, которые могут работать на всех процессорах целевой платформы. Это означает, помимо всего прочего, невозможность использования процессорно-специфичных наборов инструкций (на практике важнее всего расширения для SIMD). Для того, чтобы обойти эти ограничения и заставить компилятор генерировать код с использованием дополнительного конкретного набора инструкций, в языке есть атрибут
Так как использование на процессоре инструкций, которые он не распознаёт — неопределённое поведение, вызов подобных функций должен быть только в unsafe блоке. Программист при вызове обещает, что этот код недостижим на платформах, на которых указанный набор инструкций не поддерживается.
Это логичное поведение, но у начальной реализации был заметный эргономический недостаток: вызов функции с, скажем,
▪️Продолжая тему, начатую в Rust 1.70.0, компилятор теперь при компиляции в отладочном профиле (и с флагом
Эта проверка уже нашла ошибки в реальных проектах, как во время crater run, так и после мерджа.
▪️Ошибка
▪️Теперь можно получить мутабельные ссылки по нескольким индексам/ключам из слайса и хэшмапы одновременно с новыми методами <[_]>::get_disjoint_mut и HashMap::get_disjoint_mut, вместе с unsafe *
Что мне не очень нравится в этих методах — неконсистентность. Именно, версия для слайсов возвращает массив ссылок или ошибку, причём как в случае пересекающихся индексов, так и в случае индексов, выходящих за длину слайса. Версия же для мапы возвращает массив опциональных ссылок (с
▪️
▪️В const-контексте теперь можно, помимо всего прочего, разбивать строку по индексу (включая мутабельно и с опциональным возвратом) и проверять, что индекс лежит между отдельными char-ами.
▪️Компилятор для Linux на ARM теперь компилируется с ThinLTO и PGO, что ускоряет его на бенчмарках на 10-20%, в некоторых случаях — даже на 30%!.
Вышла версия Rust 1.86.0! Как всегда, тут только примечательное для меня, а остальное — в полных заметках о релизе.
В этот раз релиз, по большому счёту, состоит из одной фичи (двух, если вы пишете код с SIMD).
▪️Как я уже писал, стабилизировали апкаст трейтов:
trait Super1 {}
trait Super2 {}
trait Combined: Super1 + Super2 {}
fn foo(x: &dyn Combined) {
let _: &dyn Super1 = x;
let _: &dyn Super2 = x;
}
Этот апкаст также работает и через сырые указатели, поэтому пока что — до тех пор, пока не определились с точными гарантиями — создавать сырые указатели на
dyn Trait
с невалидной vtable-частью запрещено и считается UB. В miri на этот счёт уже есть соответствующие проверки.▪️По умолчанию компилятор Rust генерирует исполняемые файлы, которые могут работать на всех процессорах целевой платформы. Это означает, помимо всего прочего, невозможность использования процессорно-специфичных наборов инструкций (на практике важнее всего расширения для SIMD). Для того, чтобы обойти эти ограничения и заставить компилятор генерировать код с использованием дополнительного конкретного набора инструкций, в языке есть атрибут
#[target_feature(enable = "...")]
. Он позволяет компилятору генерировать код с использованием расширенного набора инструкций. Так как использование на процессоре инструкций, которые он не распознаёт — неопределённое поведение, вызов подобных функций должен быть только в unsafe блоке. Программист при вызове обещает, что этот код недостижим на платформах, на которых указанный набор инструкций не поддерживается.
Это логичное поведение, но у начальной реализации был заметный эргономический недостаток: вызов функции с, скажем,
#[target_feature(enable = "avx")]
из другой функции с #[target_feature(enable = "avx")]
также требовал unsafe-блока, даже не смотря на то, что требование на корректный вызов в этом случается удовлетворяется автоматически и это можно проверить статически. Начиная с этой версии подобные функции можно вызывать друг из друга без unsafe-блока при условии, что наборы включённых фич совпадают.▪️Продолжая тему, начатую в Rust 1.70.0, компилятор теперь при компиляции в отладочном профиле (и с флагом
-C debug-assertions
) вставляет паникующие проверки на null при разыменовывании сырых указателей. К сожалению, так как std поставляется только в release-сборке, на коде из std это не сказывается. (Это можно обойти, но требует nightly).Эта проверка уже нашла ошибки в реальных проектах, как во время crater run, так и после мерджа.
▪️Ошибка
FromBytesWithNulError
, которая может быть возвращена из CStr::from_bytes_with_nul
, теперь является enum
и позволяет в случае nul внутри данных получить его позицию.▪️Теперь можно получить мутабельные ссылки по нескольким индексам/ключам из слайса и хэшмапы одновременно с новыми методами <[_]>::get_disjoint_mut и HashMap::get_disjoint_mut, вместе с unsafe *
_unchecked
вариантами, дающими UB при пересечении. Версия для слайсов при этом также позволяет индексировать диапазонами, а не только единичными индексами.Что мне не очень нравится в этих методах — неконсистентность. Именно, версия для слайсов возвращает массив ссылок или ошибку, причём как в случае пересекающихся индексов, так и в случае индексов, выходящих за длину слайса. Версия же для мапы возвращает массив опциональных ссылок (с
None
для ключей без значений) и паникует на пересекающихся ключах.▪️
Once
и OnceLock
обзавелись методами для блокировки в ожидании инициализации.▪️В const-контексте теперь можно, помимо всего прочего, разбивать строку по индексу (включая мутабельно и с опциональным возвратом) и проверять, что индекс лежит между отдельными char-ами.
▪️Компилятор для Linux на ARM теперь компилируется с ThinLTO и PGO, что ускоряет его на бенчмарках на 10-20%, в некоторых случаях — даже на 30%!.
👍9❤3🔥1