Fork me on GitHub
#clojure-russia
<
2016-11-02
>
niwinz13:11:06

on 1.6.0-SNAPSHOT

niwinz14:11:40

you don't need convert promises to channels to have go like macro 😛, promesa 1.6.0-SNAPSHOT already comes with its own version of async (go like) macro that does that 😄

rkosenko15:11:18

@niwinz тянуть целую либу в зависимости вместо элементарной обёртки в несколько строчек? Не, уж лучше стандартными средствами cljs.core.async обходиться. Я так понимаю ничего такого же лаконичного как clojure-вый promise в clojurescript-е не придумаешь, придётся на channel-ах всё делать.

niwinz15:11:55

I don't understand your reasoning, but ok

ul15:11:19

так ведь dead code elimination работает на cljs библиотеках

ul15:11:27

это foreign-libs нет смысла тянуть

niwinz15:11:06

it depends on what you need, I prefer use better abstractions over thinking on adapting the existing ones just because they plays better in dead code elimination. channels are good abstraction but they are not silver bullet, and in my opinion are not very good for represent a eventual (future) value with a posibility of failure...

niwinz15:11:05

the go macro also is not well prepared for error handling (eg, if exception is happens in go block, the exception is ignored if you don't catch it manually...)

rkosenko16:11:17

@ul проблема не в размере кода, а в том, что clojure-вые либы обычно не сильно заботятся об обратной совместимости, в итоге у меня на проекте десятки вот таких вот мелких либ, половину из которых нет возможности обновить, т.к. всё ломается после этого. На рефакторинг и тестирование не хватит и недели, больше менеджмент не выделит. А старые версии, разумеется, не поддерживаются, баги в них не фиксятся. В итоге новая зависимость вызывает отвращение у все команды. Тем более если это из соображений "захотелось синтаксического сахара". @niwinz what is principal differences between go macros and alet macros from this library? Exception from alet body will not propagate upper, so it is the same, right?

niwinz16:11:20

concretly, the alet macro is much simplier and generates less code that the go, but it also limited to let bindings, there are also the async macro that uses the core.async machinary but with promise primitive instead of channel, that approach has the best of two: a general purpose go-like macro and better primitive for async result value with proper error handling

ul18:11:13

@rkosenko да, к сожалению, это известная болезнь clj(s) экосистемы =(

artemyarulin19:11:13

а почему так кста?

malch19:11:14

понимаю, что таких, как я, немного, но я обновляю зависимости в рабочем проекте каждый день - с этого начинаю утро simple_smile Не помню, чтобы у меня что-нибудь ломалось при переходе (чтение changelog занимает от силы минут пять)

malch19:11:34

Не видел ничего похожего на описанную “болезнь”, у меня скорее обратный опыт. Да, breaking changes бывают (а как без них, интересно?), но обычно они в том же changelog ярко выделены. Пример: https://github.com/ptaoussanis/sente/blob/master/CHANGELOG.md#v190---2016-jul-6

artemyarulin19:11:43

оффтоп со странички автора этой либы

Work exclusively with Clojure and ClojureScript these days, and have over 600k lines of production front and back end code committed in those languages since 2009 (before the release of Clojure 1.0).
хера се

ul19:11:54

ну, Петер как раз очень много внимания уделяет smooth upgrade своих либ

ul19:11:00

но далеко не каждый следует его примеру

malch19:11:41

возможно у меня просто наполовину полный стакан, спорить не буду 🙂

artemyarulin19:11:16

дак он небось скомпилил тока, типов нет, все норм и в прод troll