Руслан
26.10.2018
10:01:26
Что я вижу - они делают те же корутины, только в java, при этом трогают рантайм, а это всегда больно и опасно
Alexandr
26.10.2018
10:01:29
Руслан
26.10.2018
10:02:06
Вангую, что они перестанут через годик запихивать это в рантайм и в лучшем случае сделают как в котлине, или забьют и скажут что пользуйтесь котлином
Alexandr
26.10.2018
10:02:24
Google
Руслан
26.10.2018
10:03:28
Kirill
26.10.2018
10:03:58
С рантаймом всё как раз просто - слизывай с Go, грубо говоря. А вот JDK потом подкрутить соответственно, не нарушив святую обратную совместимость - вот это ой
Руслан
26.10.2018
10:03:59
Куча всего сейчас асинхронного на java хорошо работает, и отлично живет без поддержки рантайма
Kirill
26.10.2018
10:05:37
Слизывать work-stealing. Корутины - внешняя приблуда, а Loom может позволить "блокирующее" IO сделать неблокирующим, изнутри JVM. Ну т. е. на 100500 лайт-тредов JVM юзает 10 тредов ОС, и этого хватает - если упрощать
Alexandr
26.10.2018
10:05:48
#holywarmodeon
Руслан
26.10.2018
10:06:22
Kirill
26.10.2018
10:06:28
Да не получится квазар )
Quantum Harmonizer
26.10.2018
10:06:40
Kirill
26.10.2018
10:06:58
Это тоже отдельная приблуда в JDK, а не кусок рантайма
Sergey
26.10.2018
10:08:05
ну щас довольно элегантно решили проблему с IO на котлиновских корутинах. а так из блокирующего разве что всякие jdbc остались
Google
Sergey
26.10.2018
10:08:12
и легаси код с Thread.sleep
Руслан
26.10.2018
10:08:14
Kirill
26.10.2018
10:08:40
Не автомагически
Sergey
26.10.2018
10:08:40
Alexander
26.10.2018
10:09:43
Положительное отличие Loom от корутин только в том, что можно будет избежать явного копирования контекста, то есть производительность немного улучшится. Все.
Руслан
26.10.2018
10:09:56
Там сама реализация корутин в loom копированием стека вызывает вопросы. А стоит ли это делать, и не лучше ли state машина
Kirill
26.10.2018
10:09:59
и легаси код с Thread.sleep
Пофантазируем. Thread.sleep не блокирует тред ОС, а говорит: так, я тут потуплю чутка, тред свободен, можете его спереть себе кому надо. Это и есть work-stealing. Никакой магии, очень простая идея.
Дьявол, как всегда, в деталях. Как это подружится с API JDK - большой вопрос
Руслан
26.10.2018
10:10:12
Алексей
26.10.2018
10:10:46
Kirill
26.10.2018
10:10:48
yield()
Дополнительная сущность. Можно без неё обойтись
Руслан
26.10.2018
10:11:14
она просто у тебя неявно будет, как и suspend неявный
Sergey
26.10.2018
10:11:23
Kirill
26.10.2018
10:11:43
Ну т. е. грубо говоря, блокирующий код перестаёт быть "не делай так никогда!!!". Потому что блокируются не треды ОС (дорогие), а абстракция JVM (относительно дешёвая)
Руслан
26.10.2018
10:12:35
Sergey
26.10.2018
10:12:36
Алексей
26.10.2018
10:13:13
она просто у тебя неявно будет, как и suspend неявный
(боюсь ошибиться в фамилии) Роман Елизаров именно о том и говорил, что корутины котлиновские имеют suspend слово, которое как бы намекает, как это будет работать. А когда ты совершаешь махинации с JDK - ты фактически встаёшь на скользкий путь, особенно когда речь о такой большой штуке, как многопоточность
Руслан
26.10.2018
10:13:56
Алексей
26.10.2018
10:13:58
Kirill
26.10.2018
10:14:39
Google
Sergey
26.10.2018
10:14:52
Kirill
26.10.2018
10:15:18
Ладно, попробуем с другой стороны. Почему блокировки тредов - плохо? Или плодить 100500 тредов на каждый чих - плохо?
Алексей
26.10.2018
10:15:33
Sergey
26.10.2018
10:15:41
Kirill
26.10.2018
10:16:30
Алексей
26.10.2018
10:16:35
Kirill
26.10.2018
10:16:48
Я не троллинга ради спросил
Руслан
26.10.2018
10:17:14
Sergey
26.10.2018
10:17:49
Алексей
26.10.2018
10:17:56
Я не троллинга ради спросил
1. Создание треда - дорогая операция
2. Создавать тредов больше, чем позволяет окружение - просто накладно с точки зрения производительности
3. Любой простаивающий тред - это ресурс, который ты не можешь использовать
Kirill
26.10.2018
10:18:21
Это верно, если у нас тред JVM == тред ОС
Руслан
26.10.2018
10:18:58
Алексей
26.10.2018
10:19:05
Суммируя вышесказанное - корутины не болеют многими проблемами тредов потому что это и не треды:) во всяком случае, так это понимаю я
Kirill
26.10.2018
10:21:19
Корутины есть только в котлин, ребята. JDK ими воспользоваться не может
Sergey
26.10.2018
10:21:33
Алексей
26.10.2018
10:21:40
Руслан
26.10.2018
10:22:11
Kirill
26.10.2018
10:22:55
почему?
Ну вот пишет Doug Lea новый java.util.concurrent.SuperPuperClass, и такой: о, а дай-ка я из него корутины заюзаю
Руслан
26.10.2018
10:23:55
Google
Kirill
26.10.2018
10:24:48
Руслан
26.10.2018
10:25:47
Sergey
26.10.2018
10:26:51
Vladimir
26.10.2018
10:27:00
Sergey
26.10.2018
10:27:55
Руслан
26.10.2018
10:28:02
Kirill
26.10.2018
10:28:06
Alexander
26.10.2018
10:28:41
Менять реализацию Thread низя. Все поламается.
Vladimir
26.10.2018
10:29:02
Руслан
26.10.2018
10:30:49
Денис
26.10.2018
10:30:57
Alexander
26.10.2018
10:31:46
Вообще, спор довольно пустой. До Loom мы не факт, что доживем. Это еще лет 10 будет в разработке.
Sergey
26.10.2018
10:32:07
на OracleOne его активно пиарили)
Kirill
26.10.2018
10:32:17
Alexander
26.10.2018
10:32:41
Денис
26.10.2018
10:33:00
Andrey
26.10.2018
10:33:54
Денис
26.10.2018
10:34:18
Google
Andrey
26.10.2018
10:34:32
Так а кто и о чём спорит?
Предмет спора какой? Какие есть точки зрения? Кто их высказал? Какие аргументы?
Я ничего этого пока в обсуждении не увидел.
Sergey
26.10.2018
10:35:48
Уже лет 5 как.
в последние пару лет когда начали активно форсить асинхронные апи, реактивщину и тд, уже многое под это адаптировалось.. а они только вот прототипы делают, а через 5 лет если они прийдут и скажут "чуваки, мы вот сделали классную штуку", то она уже никому и не будет нужна в принципе, даже котлину
Beholder
26.10.2018
10:35:55
как всегда тут какой-то срачь...
Alexander
26.10.2018
10:36:53
А еще сейчас почти готов Graal. Он с человеческим языком внутри, так что я думаю, что это откроет простор для экспериментов.
Vladimir
26.10.2018
10:40:34
Sergey
26.10.2018
10:41:06
пока в корутинах напрягает только одно - то что нужно париться о том чтобы блокирующие запросы ушли в другой контекст. Loom вроде как поможет решить эту проблему, если ее не решат раньше в самом котлине другими способами
Alexander
26.10.2018
10:41:58
Руслан
26.10.2018
10:42:47
У нас появился мета чат. Это такой чат чтобы обсуждать чат. @kotlin_meta
Alexander
26.10.2018
10:45:36
Kirill
26.10.2018
10:46:00
Руслан
26.10.2018
10:46:22
-> @kotlin_meta please
Sergey
26.10.2018
10:47:05
Kirill
26.10.2018
10:58:36
Andrey
26.10.2018
11:48:12
Если по предмету спора, то рантайм поддержка сопрограмм в JVM (fiber) нужна всем языкам, которые компилируются в JVM байт код.
Точно так же, как нужна поддержка в JVM оптимизации хвостовых вызовов.
Без этого, как первое, так и второе реализуется в Kotlin хитрой генерацией байт кода, которая при этом не для всех случаев сможет нормально работать.
Для хвостовых вызовов не работает при взаимной рекурсии, для сопрограмм не вникал, но думаю тоже будут всякие особые случаи, когда не получится на генерации байт кода обойти ограничения JVM.