Αλεχ
май инглиш из ту вронг
Αλεχ
Vladimir
Вообще бред какой-то говорить что iocp работает на 0 потоков. Разве там нет как в epoll одного потока который прерывается? Даже если спит - он существует
Αλεχ
Αλεχ
чтобы не тратить время на переключение
Vladimir
Поток существует?
Vladimir
Как объект ядра?
Αλεχ
прерывание вызывает обработчик на уровне драйвера
Αλεχ
обработчик естественно уже требует поток для выполнения
Αλεχ
но тут две фишки
Αλεχ
1. он ворует время чужого потока, а не переключает на себя
Αλεχ
2. он просто выполняет my_thread.wakeup() что быстро
Vladimir
Т.е. переключение контекста нет? И iocp работает в юзерспейс?
Αλεχ
как видишь, APC/IOCP уже в юзерспейсе
Αλεχ
Berkus
https://blog.rust-lang.org/2018/07/06/security-advisory-for-rustdoc.html это очень ехидно. " У нас CVE но поскольку язык игрушечный, то вот"
Денис
Денис
или что ты предлагаешь?
Berkus
Berkus
но комментарий ехидный "плагины все равно не работают, так что вот вам дискложур сразу"
Денис
а, в этом смысле
Berkus
ну старые версии патчить нет смысла т.к. нет плагинов )
Денис
https://t.me/rustlang_ru/144707
> они это и делают
Berkus
ага, фиксят
Berkus
не могу сказать будут ли они патчить старые версии или нет
Денис
короче да, игрушечный язык, игрушечные доки, игрушечные плагины, игрушечные CVE ))
Berkus
патч к старым версиям это технически новая версия энивей
Berkus
Berkus
безопасненько...
Berkus
https://www.reddit.com/r/rust/comments/8xdsx5/rust_actixweb_in_the_on_of_the_biggest_music/ а вот это вот круто
Денис
https://github.com/rust-lang/crates.io/issues/75
Денис
вот это прям угнетает
𝙽𝚒𝚌𝚔
Да, здóрово (это к теме maxfrai)
Денис
теме 4 года, подписи к пакетам так и не завезли
Alexander
Исходники с моей трансляции, если кому интересно: https://github.com/gabriel-fallen/rusty-krivine
Alexander
Да, я знаю что можно улучшить, ещё буду допиливать. 😊
Макс
Всем привет (снова). Не собирается на последнем stable библиотека mockers, кто-нибудь сталкивался?
https://github.com/kriomant/mockers/issues/34
Макс
(Или для моков надо что-то другое использовать)
Anonymous
Какой же failure сырой 🙁
https://github.com/rust-lang-nursery/failure/issues/108
𝙽𝚒𝚌𝚔
(Или для моков надо что-то другое использовать)
Если тебе нужно тестировать с помощью моков, то я могу порекомендовать подход без использования моков, а с помощью явного описания и изоляции побочных эффектов. Пример на скале здесь https://pastebin.com/gWpSYjAL , createMetadataBefore - это вариант, для тестирования которого мы вынуждены использовать мок, а createMetadataAfter - это вариант, который можно протестировать непосредственно. То что это скала непринципиально, важен сам подход.
Макс
𝙽𝚒𝚌𝚔
Мы берём функцию store и её заменяем на чистую функцию у которой все побочные эффекты выражены в типе возвращаемого значения. Затем всё до этого вызова заворачиваем в одну, после - в другую функцию. Всё, осталось эти все кусочки связать либо явными матчами, либо flatMap, он же bind в монаде Try.
𝙽𝚒𝚌𝚔
Try - это аналог Result
𝙽𝚒𝚌𝚔
Но в твоём случае наверное лучше пофиксить библиотеку :-)
Макс
𝙽𝚒𝚌𝚔
Если кода немного, то можно переписать так, что мок будет не нужен. Если кода уже написано много, то конечно рефакторить лучше не надо.
Vladimir
Макс
Andrew
не вижу тут ничего про шедулер, только прерывание
Ты либо неправильно рассказываешь, либо не до конца сам понимаешь.
Как виндузятник, ты возможно помнишь как безбожно тормозила виндовс 95/98 без драйвера DMA. Это из этой технологии ноги растут.
Суть (тм) такова, что ты можешь позволить pci-устройству читать/писать в произвольный кусок памяти напрямую без участия cpu. А когда запись завершится, устройство пришлёт прерывание.
Таким образом, cpu вообще не участвует в передаче данных. Устройство (сетевая карта) передаёт данные независимо от него. АСИНХРОННО
Вся эта ваша асинхроннность начиная с крестоблядства с его неблокирующим вариантом socket.read() и до async/await в .net - это просто абстракция над этим принципом. Именно поэтому вместо потока, у тебя хендлер соединения который потом в прерывании придёт либо более высокоуровневый шедулер.
Это неправильно говорить, что совсем нет потока - как минимум есть поток, акцептящий соединение и запускающий асинхронные операции. Еще опционально может быть поток шедулера. А ещё- всю работу выполняет устройство. Которое построено на другой архитектуре и в общем 100к соединений обработать вполне себе может.
Anonymous
гмммм
Anonymous
чота не соображу как голый поинтер отправить в поток
Anonymous
говорит !Send
Vladimir
struct Obviazka_nad_goliy_pointer(*mut ());
unsafe imp Send for Obviazka_nad_goliy_pointer
Anonymous
блджад... пару лет назад работало
Anonymous
потом работало в unique
Vladimir
Ну хз sendу в Русте поидее лет как русту
Anonymous
нет и тут поломали
Anonymous
изначально поломали в 2015
Anonymous
заявили что поинтеры не сенд
Vladimir
В унике поидее можго
Anonymous
у меня итак модуль на перл похож, ща еще и обвязки
Vladimir
потом работало в unique
Vladimir
В унике поидее можго
Anonymous
уник запретили вроде
(((Sergey(not seresha))
Cat
> вроже
Проорал
Anonymous
вроде баг закрыли и запретили
Anonymous
в последних доках нет
Cat
Anonymous
ну во времена 1.23 уник был в доках
Cat
Эх... трава была зеленее
Anonymous
почемуто еще нужен sync
Anonymous
теперь у меня весь модуль из нечитаемой лапши