Size: a a a

2021 April 01

p

polunin.ai in Rust Async
Ilyas Gasanov
И он-то может делов натворить с инвариантом.)
Если вызывается дроп, то гарантированно нет больше ссылок на T
источник

IG

Ilyas Gasanov in Rust Async
Что не мешает тому же дропу вытащить std::mem::replace()-ом в другой Box::pin() и инвалидировать все селф-референсы. ))
источник

IG

Ilyas Gasanov in Rust Async
Хотя с другой стороны если любой дроп так делает, он по определению напрашивается на UB, т.к. он обещает дестроить инстанс, а вместо этого перемещает его.
источник

D

Denis in Rust Async
Ilyas Gasanov
Хотя с другой стороны если любой дроп так делает, он по определению напрашивается на UB, т.к. он обещает дестроить инстанс, а вместо этого перемещает его.
> он обещает дестроить инстанс
кому обещает? ничего такого нет

сделай минимальный пример плз, так сходу не очень понятно, что конкретно может пойти не так
источник

IG

Ilyas Gasanov in Rust Async
Вообще да, похоже что тут саунднесс в том, что невозможно без unsafe написать такой !Unpin тип, у которого и операции с селф-референсами через пины, и кастомный impl Drop.

Так-то можно написать без ансейфа:

struct Wtf {
  ...
  _pin: PhantomPinned
}

impl Drop for Wtf {
   fn drop(&mut self) {
       let wtf = Box::pin(std::mem::replace(self, ...));
       ... // use the new pin
   }
}


Формально инвариант здесь нарушается, и компилер «имеет право» сгенерировать фигню вместо ожидаемого поведения, но по факту он вряд ли это сделает даже с самой агрессивной оптимизацией. То есть саунднесс практический, пусть и с нарушением формального.
источник

IG

Ilyas Gasanov in Rust Async
Это примерно как с мувом классов, содержащих const члены, в плюсах. Но с другой стороны у плюсов куча compliant реализаций, и каждая подобную ситуацию может разбирать по-своему.
источник

в🧇

вафель 🧇 in Rust Async
Ilyas Gasanov
Вообще да, похоже что тут саунднесс в том, что невозможно без unsafe написать такой !Unpin тип, у которого и операции с селф-референсами через пины, и кастомный impl Drop.

Так-то можно написать без ансейфа:

struct Wtf {
  ...
  _pin: PhantomPinned
}

impl Drop for Wtf {
   fn drop(&mut self) {
       let wtf = Box::pin(std::mem::replace(self, ...));
       ... // use the new pin
   }
}


Формально инвариант здесь нарушается, и компилер «имеет право» сгенерировать фигню вместо ожидаемого поведения, но по факту он вряд ли это сделает даже с самой агрессивной оптимизацией. То есть саунднесс практический, пусть и с нарушением формального.
Тут всё ещё нет UB. Даже "формально".
источник

IG

Ilyas Gasanov in Rust Async
https://doc.rust-lang.org/std/pin/index.html#drop-guarantee

> Concretely, for pinned data you have to maintain the invariant that its memory will not get invalidated or repurposed from the moment it gets pinned until when drop is called. Only once drop returns or panics, the memory may be reused.

Хмм.. Ну как бы с одной стороны здесь replace считается за repurpose, а с другой из &mut self мы новый пин без ансейфа не сделаем, а без пина мы UB не вызовем. Так что point скорее чисто академический.)
источник
2021 April 06

E

Emily in Rust Async
Всем привет! :)
источник

E

Emily in Rust Async
EQ Lab устраивает Tech Polkadot
Meetup в Москве, посвящённый разработке на Rust, фреймворку Substrate (Polkadot) и блокчейнов на нем.

В программе только технические доклады от опытных разработчиков. Также будут нетворкинг, розыгрыш Xbox, пицца и напитки :)

Список спикеров и предварительную программу можно найти здесь: https://meetup.eqlab.io

📅 17 Апреля, 13:00
📍 Москва, Столешников пер. 6,корп.3, лофт “Авиатор”
❗️Вход бесплатный

Регистрация
источник

K

Kerrigan in Rust Async
эх, Москва
источник

M

Max in Rust Async
Трансляция вроде есть
источник

K

Kerrigan in Rust Async
не, чото про блокчейны неинтересно
источник

E

Emily in Rust Async
Да, будет трансляция https://www.crowdcast.io/e/tech-polkadot-meetup-moscow
источник

MS

Mikola Summer Duck in Rust Async
А почему в асинкоконфе а не в блокчейноконфе
источник

D

Denis in Rust Async
растомитапов слишком мало, чтобы не упоминать их
источник
2021 April 09

K

Kitsu in Rust Async
https://github.com/tokio-rs/tokio-uring/blob/design-doc/DESIGN.md

TLDR: The RFC proposes a new asynchronous Rust runtime backed by io-uring as a new crate: tokio-uring
источник

MB

Mikail Bagishov in Rust Async
О, круто
источник

MB

Mikail Bagishov in Rust Async
Кстати, получается что подход как в actix-rt - пул однопоточных рантаймов.
источник

KR

Kai Ren in Rust Async
Николай, вернись, мы все были неправы 😭

Новость - огонь) Спасибо)
источник