Маjко
Там она пишется как обычный многопоточный код
Маjко
Без ебли с фьючами, ивентлупами и ручным маппингом фьюч на потоки
Сережа
как обычный блокирующийся*
Сережа
а ивентлуп встроен в рантайм
Маjко
Ну да
Маjко
Я о том и говорю
Маjко
Туда бы систему типов раста и borrowck
Маjко
Был бы идеальный язык для веба
Маjко
Ну точнее в раст бы рантайм го
Маjко
Если уж переносить — то то, что меньше
Сережа
и сборщик мусора через макрандсвип?
Сережа
они вроде бы говорили, что причина появления сборщика мусора в го - горутины с растущим стеком
Сережа
типо без сборщика вообще сложна такое делать
Loo
в расте тоже очень простая асинхронность
ne_on
вот ipfs-go я постоянно вырубаю, потому что он разрастается до гиг памяти и больше.... я щитаю это много дя сервиса, будь он написан на Rust, такого бы небыло
Сережа
её нет!
Loo
на FUTURES-CPUPOOL
Loo
Loo
Сережа
как напишут так и будет работать
ne_on
я думаю на Rust надо очень сильно умудриться написать сетевой сервис, чтобы он поджирал гиг+ памяти
Маjко
и сборщик мусора через макрандсвип?
Не, сборщик можно убрать и сделать фиксированный стек, не облезут
պլհկ
Еее стек оверфлоу
պլհկ
ne_on
там их целая толпа программистов и им сочувствующих в go-ipfs, и недавно они даже выпускали оптимизирующее обновление, но нифига, они не могут написать лёгкий сервис на go
Сережа
https://news.ycombinator.com/item?id=8245076
Tomato
на реддите был пост что на си сделали ипфс
Сережа
один из контрибуторов го на си делал либу корутин с фиксированным стеком
Сережа
оно не зашло и как они там все придумали именно из-за фиксированного стека (маленького)
Сережа
потом го написали - зашло (из-за того что гугель)
Сережа
вывод: раст не гугель
Marat
А зачем вообще корутины со стеком?
Vladimir
Не, сборщик можно убрать и сделать фиксированный стек, не облезут
Да с виртуальной памятью можно ж стеки и так ростить, не?
Сережа
для простоты реализации
Сережа
зачем вообще стек?
Сережа
на хипе выделяй и используй
Маjко
на хипе выделяй и используй
Указатели где держать будешь?
Сережа
в хипе
Сережа
по определенному адресу
Сережа
очевидно же
Сережа
на ассемблере не программировал?
Маjко
Программировал
Маjко
Без стека не получится
Vladimir
Определенное место в хипе, это и есть виртуальный стек
Vladimir
Доброе утро
Маjко
Виртуальная память просто у ОС, а горутины целиком в юзерспейсе со своим рантаймом.
Маjко
Ну
Маjко
Это стек твоего ОСного потока
Маjко
Дальше то?)
Vladimir
К чему ты это
Маjко
Хз, я засыпаю
Маjко
Проснусь -- перечитаю, пойму где тупил
Cuno
Есть ощущение, что без костыля в ОС такое не заимплементить
Vladimir
Ну да, скорее всего
Vladimir
Просто идея в том, что если иметь умный аллокатор, который сможет выделять по определенному сисколу память с разными старшими адресами, то поидее разброса адресов хватит чтоб расти стеку довольно большого количества потоков довольно долго
Cuno
А как ты поймешь, что стек нужно увеличить?
Vladimir
Ну как и сейчас
Vladimir
Сейчас основной стек может расти
Vladimir
По запросу яп, я так понимаю
Vladimir
Хотя я не уверен
Vladimir
Кто запрос делает
Vladimir
Но слышал, что есть какая-то команда типа more_space
Vladimir
Так реаллок же будет в том же месте
Vladimir
Или ты о чем?
Маjко
/stat@combot
Combot
combot.org/chat/-1001082778544
Vladimir
Чё им висеть?
Маjко
Так реаллок же будет в том же месте
Почему он будет в том же месте?
Маjко
Ты не можешь этого гарантировать
Vladimir
Ну потому что виртуальная память большая
Vladimir
А ты выделил куски с большим расстоянием между
Маjко
Ну мб
Vladimir
Просто я к тому это, что в процессоре же есть mmu который по сути роль того сборщика и берет на себя
Маjко
Ну TLB таки маленький. С большим количеством корутин может быть не особо эффективно
Маjко
Хотя сейчас это никого не останавливает