Anton
Αλεχ
есть определение которым пользуются нормальные люди
Vladimir
Αλεχ
и трейты на них не похожи
Anton
Осталось оптимизаторы запилить (ох гад плиз но, но!!!!)
Cat
шо?
Nikita
Разница между трейтами и интерфейсами небольшая, если она вообще есть. Но если попробовать поискать разницу относительно языков, где применяются терминологии, то интерфейс - это больше про диспетчеризацию через виртуальные функции, а трейты - про тайпчекинг при компиляции
Nikita
Потому и в скале используют трейты, а не интерфейсы, потому что там более мощная система типов, чем в джаве, которая еще и поддерживает кучу проверок во время компиляции
Cat
а как эти две вещи противоречат друг другу?
Αλεχ
когда мне говорят "интерфейс" я мысленно автоматом добавляю "как в жабе"
Αλεχ
и уверен не я один
Αλεχ
так что логично выбрать термин. который с жабой не ассоциируется
Nikita
Roma
Αλεχ
Nikita
Я тут это, поизучал токио, и у меня пара вопросов. futures - это же крейт, который просто дефайнит апишку футур, а токио - это уже конкретная имплементация исполнителя этих футур с их комбинаторами, правильно?
Vladimir
Vladimir
Ну и екзекьютор этих фьюч тоже создает
Αλεχ
Αλεχ
если все думают про жабу
Αλεχ
то что там у Даля че-то подругому написано - поебать
Nikita
А почему выходит так, что все крейты с асинхронщиной зависят от токио? Им нужны эти базовые футуры или они жестко прикручены к токийскому экзекутеру?
Vladimir
Vladimir
с реактором
Nikita
Vladimir
Что мешает либам предоставлять апишку используя футуры, которые потом вручную исполняются на твоём экзекуторе?
Смотри, асинхроннщина требует какого-то системного ивентлупа под капотом, в простейшем случае на базе select
Именно это api представляет возможность неблокировать выполнение при обработке IO.
Ивентлуп в реакторе, реактор связан с екзекутором общим контекстом (для того чтоб менеджить таски). Т.е. ты не можешь взять свой екзекутор и подружить его с фьючами из токио, так как они неявно пробрасывают контекст через пертредный сторедж, и если нарушить эти инварианты все сломается
Nikita
պլհկ
պլհկ
Теоретически можно определять протоколы отдельно от ио, но это не очень удобно пользователю будет
Berkus
чот нипахож
պլհկ
https://www.reddit.com/r/rust/comments/7qels2/i_wonder_why_graydon_hoare_the_author_of_rust/?st=JJ0BO1WH&sh=b2d87392
Alex
ничего страшного, у меня ща rm --rm dir не сработал
Berkus
http://venge.net/graydon/talks/intro-talk-2.pdf ехех, неплохо
Sergey
/
Kerrigan
Loyd
Loyd
ранво как и типажей?
Berkus
ну вот как-то так да
Маjко
Маjко
Особенно смешны пункты про no research and novelty
Маjко
Когда после язык поменялся полностью и туда таки добавили лайфтаймы
Berkus
https://github.com/markschl/seq_io ыхыхы, попался таки мне парсер фасты под раст
Anton
fn main() {
log “hello, world”;
}
Кто бы мог подумыть, при чем туту JavaScript😁
Alex
кстати, такие счетчики медленнее работают?
Cat
Работают ли счётчики медленнее, чем их отсутствие?
Alex
Alexander
Счётчики по идее быстрее gc конечно.
Alexander
Gc, ну если наверное какой-то примитивный, по-любому должен что-то вроде циклического обхода делать для вычищения. Просто счётчики сами чистятся.
Mykyta
Чистить сейчас, или потом - влияет на latency кмк
Alexander
Ну чистка сейчас - это норм для realtime по сути, чистить чем-то и хз сколько - это не rt
Alexander
=> rust и swift вроде как rt. Всё что Gc - нет.
Mykyta
может ты хочешь не чистить мусор в realtime т.к. занимает время, но вызывать gc/sigterm раз в N времени, переключив траффик на ближайшую ноду которая еще работает?
Alexander
Ну это вполне норм. Например k изначально вообще не освобождал память, что не мешало ему работать в банках. Сейчас gc есть, но, до сих пор часто gc отключают принудительно и дёргают раз в день например.
Cat
> но вызывать gc/sigterm раз в N времени
это как раз уже и становится не-реалтаймом
Alexander
Ну да, это не rt по определению как бы, но если дёргать , например раз в день и ты знаешь когда, то считай остальное время у тебя rt
Alexander
эээ, ну тогда я не в курсе. gc есть конечно разные, но суть gc ref counter и просто ref counter одна по идее
Alexander
и тогда вопрос - как gc может меньше съедать, если он проходит по всему обычно, а ref count только от того что обнулилось как бы вроде
Alexander
ну ok, да, я понимаю что gc конечно разные есть и насколько их сейчас накрутили даже тяжело представить, так что просто на веру приму :)
Alexander
но если брать простой gc-счётчик-ссылок, то мне кажется что всё же ref-counter победит
Αλεχ
Αλεχ
есть нагрузка в которой GC лучше даже ручного управления памятью
Αλεχ
не говоря про подсчет ссылок
Αλεχ
конечно сильно искусственный сценарий, но бывает
Alexander
ну в общем надо лучше мне в gc разбираться похоже
Αλεχ
один из примеров - GC занимается компактификацией кучи что приводит к лучшему cache locality
Αλεχ
больше данных которые рядом влезают в кэш - быстрее алгоритмы, которым это важно
Alexander
ну это кстати да, я всё же просто про самый примитивный gc
Αλεχ
примитивных GC уже давно не осталось
Αλεχ
я как-то глянул что исходник шарпового весит 5 МЕГАБАЙТ кода
Αλεχ
было забавно
Αλεχ
а не, наврал
Αλεχ
всего лишь полтора
Αλεχ
https://github.com/dotnet/coreclr/blob/master/src/gc/gc.cpp
Αλεχ
ну, гитхаб показывать отказывается :D