պլհկ
Завязывайте с офтопом
red75prime
одного иде мало
Alexander
Alexander
А вот линзы сплошь и рядом использовали... По ходу дела мало-мало их освоил.
red75prime
Думаю как реализовать stateful datagram oriented протокол, без использования tokio-proto, без оверхеда и без кучи комбинаторов футур. Ничего такого не встречалось?
Слава
На каждой из сторон будет висеть нечто вроде конечного автомата.
А датаграммы поверх чего будут ходить? Сразу udp?
պլհկ
red75prime
red75prime
mio... надо будет подумать.
պլհկ
Ну сделай одну большую футуру и крути в ней свой стейт
Денис
есть кстати крейт, облегчающий написание футурных стейт-машин, ща нагуглю
red75prime
Так оно сейчас и есть
պլհկ
Зачем комбинаторы, если можно все руками писать 🤔
Денис
во, https://docs.rs/state_machine_future/0.1.7/state_machine_future/
պլհկ
red75prime
Денис
պլհկ
red75prime
Я написал без кучи комбинаторов, хотя да, куча - понятие растяжимое
Vladimir
պլհկ
Депрекейтед же
Alexander
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e вот поновее стейт
Если кто ещё читает пост - автор не совсем прав насчёт Go GC. Благодаря активному использованию объектов по значению и escape analysis, эффективно получается, что Go использует стек в качестве нулевого поколения. К тому же, стек у горутин лежит в куче. А в GC-кучу получается промоутятся только "убежавшие" объекты. Так что в целом программы на Go (стиль кодирования + компилятор + GC) используют "гипотезу поколений".
Alexander
Насчёт фрагментации кучи автор тоже неправ - Go аллоцирует объекты в пулах, сгруппированных по размеру объектов.
Слава
Alexander
Alexander
Vladimir
Alexander
В C/C++/Rust (я думаю) разница между стеком и кучей - какой сегмент в какой регистр записали, там и будет.
Vladimir
Та нет, я про синтаксис
Vladimir
В русте Box<T> это куча
Alexander
Но можно догадаться - по значению кладёшь или создаёшь new/make, берёшь указатель и передаёшь куда-то или нет.
Vladimir
А ссылку на стек получить нельзя?
Vladimir
Или как работает это?
Vladimir
Взял ссылку на обьект - объект уходит в гц?
պլհկ
Vladimir
Я к тому, что стек реалоцируемый, и типа указатель на стек будет меняться, не сильно ли много компилятор умеет? Звучит как наебалово
Alexander
պլհկ
Alexander
Escape analysis называется. 😃
պլհկ
^^
Alexander
Ну, мы тут щас Go разрекламируем - половина чата переметнётся! 😂
Vladimir
Где будет x
Alexander
Cat
наверное вайпает C:\\
Vladimir
Vladimir
Реалокация это не просто увеличить размер, а возможное перемещение стека в другую область
Alexander
Alexander
Спагетти-стек. 😉
Vladimir
Это как, он состоит из многих частей?
Alexander
Да.
Слава
Vladimir
Тю, тогда какие проблемы такую херню организовать в Русте в рамках либ корутин?
Alexander
As far as I know. Может, за минувшие годы чего и поменялось.
Alexander
Alexander
Эти стеки из кучи тоже нужно собирать время от времени...
Слава
Ссылки нужно будет изменить.
Vladimir
Vladimir
В этом и вопрос, если стек не мувается, то какие ссылки менять нужно?
Alexander
Если запретить передачу ссылок между корутинами - то можно, но, думается, это будет слишком ограничивать как программистов, так и производительность.
Vladimir
Vladimir
Скопед гарантированно живёт меньше чем текущий стек, статик просит замувать объекты внутрь
Слава
В расте стек сегментированый? Насколько я знаю, нет.
Слава
А если он не сегментированый, то увеличить его размер может быть не всегда возможно без перемещения
Vladimir
𝙽𝚒𝚌𝚔
"Уточки памяти" term by @qnikst
Слава
А в го вроде от сегментирования отказались
Update: нет, не отказались.
Слава
Но им можно, у них gc