Vladimir
Это его единственный чек
Маjко
Ну на то он и ансейф
Маjко
Там самому надо следить чтобы не было UB
Vladimir
Просто мне кажется, что основной уб, кроме конечно изменяемости неизменяемых сущностей, это то что компилятор расставляет специальные аттрибуты, для ллвм. Но если есть эта фича, то кажется что компилятор должен быть умным и не ставить аттрибуты
Маjко
Маjко
/вещаю с дивана/
Vladimir
Та же фигня, но вот про это и речь, если фичу ввели, то компилятор такой "опа, а к этой переменной теперь есть доступ, ну нафиг, лучше не буду расставлять атрибуты вообще"
Vladimir
Но понятное дело, что гонка данных и инвалидация итераторов никуда не пропадет.
Маjко
Маjко
Для отбитых/тестирования
Маjко
Ну а UB потому что инвалидация ссылок очень вероятна. Классический референс на элемент реаллоцировавшегося вектора, например
Маjко
https://github.com/rust-lang/rust/pull/13934
Маjко
Действительно была такая фича в языке (в stdlib)
Маjко
Но в 2014
Маjко
Что как бы намекает, что автор actix был уже в курсе что так делать нельзя
Маjко
Сейчас есть проверки мутабельности в кастах к raw pointers
Маjко
И не нужно трансмутить ссылки к поинтерам
Маjко
В том числе
Маjко
Короч, чтобы так выстрелить себе в ногу — надо намеренно стараться выстрелить себе в ногу)
Αλεχ
Αλεχ
бтв вопрос
Αλεχ
cargo build типа медленный
Αλεχ
cargo check типа быстрый, но он начинает чекать все зависимости
Αλεχ
можно совместить?
Маjко
Не начинает он чекать зависимости после 2го запуска
Маjко
Кэширует
Oleg
cargo build тоже собирает зависимости
Маjко
без первого анализа — как он твой код проанализирует с неизвестными параметрами?
Αλεχ
я думал они с билдом одно шарят
Αλεχ
и раз я собирал, то чек подберет артефакты
Маjко
Meh, нет
Loyd
Есть кто ещё на highload++ сейчас?
Kerrigan
нет, за меня не заплатили
Kerrigan
там есть что-то про раст?
պլհկ
О, сибиряки
Loyd
Loyd
Я тоже не про раст рассказывал
Loyd
Предатель
Loyd
Но я логотипом тут свечу
big
есть какой то способ нормальный способ обработки версионирования для macOS/iOS на расте?
big
тоесть в objc/swift есть идиома с #available. Кто нибудь знает что используют растеры?
Αλεχ
big
не совсем, #available это способ динамической проверки, в то время как cfg для статических проверок
Αλεχ
раст динамику не любит
Αλεχ
ятп rustish way будет в том, чтобы обвесить в cfg и дистрибутить отдельно для каждой версии приложение
big
big
ну или от минимальной версии
big
по сути, задача как раз написать библиотеку которая может использовать системный вызов, который доступен только на новых платформах
Αλεχ
Αλεχ
дергаешь какую-нибудь винапи/макосапи функцию
big
вот собственно да. Проблема в том, что для запроса версии нету прямо такого C API. Есть например несколько вариантов достать версию из objc )
big
но как то нету желания завязываться на clang + objc или дергать objc из rust'а
big
но походу стула всего два
Αλεχ
Αλεχ
вариантов-то там мало
Αλεχ
системное апи вряд ли предоставляет objc интерфейс
Αλεχ
все ОС предоставляют сишное апи
big
это то безусловно, objc_msgSend : ) но юзабельность его такая себе
Αλεχ
нужно просто узнать что там objc дергает и скопипастить себе
Berkus
Потому что базовая реализация абсолютно идентичная
Berkus
big
да, вообщем то понятно. Думал есть удобный крейт/макрос какой-нибудь
big
судя по всему - не особо
Berkus
Вероятно можно будет собрать с конкретной версией сдк вручную и это максимум
Berkus
Это поидее в юрисдикции cmdline wg, надо попинать их
big
ага )
big
только там еще проблемы есть, что типа самих этих функций может и не быть в objc рантайме
big
нужно сначала спросить isRespondingToSelector или как там у них
big
что превращается в полное ебобо для такого кейса
big
до 10.10 рекомендуют лесть в plist /System/Library/CoreServices/SystemVersion.plist
big
а это уже plist (хотя мб и xml parser сойдет)
big
и все это только чтобы узнать версию рантайма
big
NermaN 𓅂
Всем привет, решил попытаться сделать один из хоумпрожектов на расте, но никак не получается запустить компилятор или установщик
NermaN 𓅂
Всегда дедлок сразу же при старте, strace показывает readlink("/etc/malloc.conf", 0xbef40280, 4096) = -1 ENOENT (No such file or directory)
brk(NULL) = 0x15de000
futex(0xb6ae30ac, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xb6d6d904, FUTEX_WAIT_PRIVATE, 2, NULL
NermaN 𓅂
удавалось кому нибудь запустить компилятор и утилиты? как решить эту проблему?
NermaN 𓅂
не работает ни вариант с rustup.rs с sh скриптом
Cuno