Anton
Αλεχ
есть определение которым пользуются нормальные люди
Vladimir
Αλεχ
и трейты на них не похожи
Anton
Осталось оптимизаторы запилить (ох гад плиз но, но!!!!)
Cat
шо?
Nikita
Разница между трейтами и интерфейсами небольшая, если она вообще есть. Но если попробовать поискать разницу относительно языков, где применяются терминологии, то интерфейс - это больше про диспетчеризацию через виртуальные функции, а трейты - про тайпчекинг при компиляции
Nikita
Потому и в скале используют трейты, а не интерфейсы, потому что там более мощная система типов, чем в джаве, которая еще и поддерживает кучу проверок во время компиляции
Cat
а как эти две вещи противоречат друг другу?
Nikita
а как эти две вещи противоречат друг другу?
Никак, честно говоря, я просто выражаю субъективное мнение на области применения обоих терминов. Как по мне, так это идентичные понятия
Αλεχ
когда мне говорят "интерфейс" я мысленно автоматом добавляю "как в жабе"
Αλεχ
и уверен не я один
Αλεχ
так что логично выбрать термин. который с жабой не ассоциируется
Nikita
Я тут это, поизучал токио, и у меня пара вопросов. futures - это же крейт, который просто дефайнит апишку футур, а токио - это уже конкретная имплементация исполнителя этих футур с их комбинаторами, правильно?
Vladimir
Именно, по сути как я и сказал, только по-русски
Во во, все представляют жабу, но по определению интерфейс более широкое понятие, и вроде как не связан с реализацией (виртуальные функции)
Vladimir
Я тут это, поизучал токио, и у меня пара вопросов. futures - это же крейт, который просто дефайнит апишку футур, а токио - это уже конкретная имплементация исполнителя этих футур с их комбинаторами, правильно?
Футурес это крейт который дефайнит апишку и их комбинаторы, как итераторы в стд. Токио реализует базовые фьючи для асинхронных операций
Vladimir
Ну и екзекьютор этих фьюч тоже создает
Αλεχ
если все думают про жабу
Αλεχ
то что там у Даля че-то подругому написано - поебать
Nikita
А почему выходит так, что все крейты с асинхронщиной зависят от токио? Им нужны эти базовые футуры или они жестко прикручены к токийскому экзекутеру?
Vladimir
А почему выходит так, что все крейты с асинхронщиной зависят от токио? Им нужны эти базовые футуры или они жестко прикручены к токийскому экзекутеру?
Потому что футуры не про асинхронщину, а про отложенное вычисление, асинхронщина появляется там где есть асинхронный екзекутор
Vladimir
с реактором
Nikita
Потому что футуры не про асинхронщину, а про отложенное вычисление, асинхронщина появляется там где есть асинхронный екзекутор
Что мешает либам предоставлять апишку используя футуры, которые потом вручную исполняются на твоём экзекуторе?
Vladimir
Что мешает либам предоставлять апишку используя футуры, которые потом вручную исполняются на твоём экзекуторе?
Смотри, асинхроннщина требует какого-то системного ивентлупа под капотом, в простейшем случае на базе select Именно это api представляет возможность неблокировать выполнение при обработке IO. Ивентлуп в реакторе, реактор связан с екзекутором общим контекстом (для того чтоб менеджить таски). Т.е. ты не можешь взять свой екзекутор и подружить его с фьючами из токио, так как они неявно пробрасывают контекст через пертредный сторедж, и если нарушить эти инварианты все сломается
պլհկ
Что мешает либам предоставлять апишку используя футуры, которые потом вручную исполняются на твоём экзекуторе?
Ну допустим TcpStream асинхронный в токио определен. Обычно сетевые либы от него пляшут.
պլհկ
Теоретически можно определять протоколы отдельно от ио, но это не очень удобно пользователю будет
Berkus
чот нипахож
Vladimir
чот нипахож
let есть, значит похож
պլհկ
чот нипахож
Даже чувак тот же делал
պլհկ
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
/
Loyd
http://venge.net/graydon/talks/intro-talk-2.pdf ехех, неплохо
то есть вначале лайфтаймов не было?
Loyd
ранво как и типажей?
Berkus
ну вот как-то так да
Маjко
Особенно смешны пункты про no research and novelty
Маjко
Когда после язык поменялся полностью и туда таки добавили лайфтаймы
Berkus
https://github.com/markschl/seq_io ыхыхы, попался таки мне парсер фасты под раст
Anton
fn main() { log “hello, world”; } Кто бы мог подумыть, при чем туту JavaScript😁
Alex
кстати, такие счетчики медленнее работают?
Cat
Работают ли счётчики медленнее, чем их отсутствие?
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
Chebyrash
actix-web?
Видимо она самая адекватная
Αλεχ
ну, гитхаб показывать отказывается :D
Kerrigan
Видимо она самая адекватная
она даёт апгрейд соединения на том же порте