такое
Он еще жив? Чем он лучше Graal?
чисто скловыми оптимизация, да и банарь поменьше
Класс!!!
Очень лёгкий (супер важно для мира в кубернетесе где каждый чих - это отдельный докер контейнер, на граалей памяти не напасешься). Очень легко интегрировать с сишными библиотеками. При этом довольно продвинутый. Scalaz на нём отлично работал. Ещё бы релиз чтобы все эти чудеса использовать... Особенно из чудес хотелось бы... поддержку аллокаций из разных тредов. Грустно же в одном потоке работать.
а зачем scalaz?
А есть что почитать о сравнении скала-натива и грааля относительно легкости и интегрируемости
Вместо котов
Просто cats пока что нет для Scala Native, а Scalaz есть, причём официально.
В Scala Native сишные библиотеки можно просто... вызывать и они сходу работают. Только правильный binding сделать: https://scala-native.readthedocs.io/en/v0.3.9-docs/user/interop.html А для тех кто не хочет делать байндинг вручную, есть крутейший https://scala-native.github.io/scala-native-bindgen/ По опыту: работает из коробки даже для довольно сложных библиотек.
Т.е. сетевой стек у вас сишный?
Сетевой стек? Какой ещё сетевой стек? 😂
У вас сферическое приложение в вакууме или RPC over file system?
А у грааля как?
Scala Native ещё очень сырой. Там тредов нет. Всё что не на Скале - не работает. Там кое-чего из джавы портировали на Скалу, но я не помню были ли в этом числе классы для работы с семью. Сомневаюсь. Нативные сервера люди прикручивали и они хорошо работают, особенно на libuv, но это всё грустно без тредов.
Жабоскриптеры без тредов живут как-то
Нормально живут, но а) нужен правильный рантайм и б) такое приложение не сможет загрузить больше одного ядра.
Жаваскриптеры? Нормально? Серьезно?
Я бы не стал утверждать, что "перепишем все node приложения на скалу" сделает мир лучше.
Ну грааль мало памяти ест, да и с Сишкой тоже легко интегрировать
Это уже другая крайность
Фиг с ним с тредами, мне бы хотя бы возможность объекты создавать в тредах которые извне созданы и чтобы потом garbage collector не умирал.
В принципе, можно обеспечить "псевдомногопоточность", если все асинхронные операции возложить на сишный код. Например, написав свой интепретатор для IO или самодельной монады попроще
Там, пока что, нельзя создавать объекты в Скале если вас вызвал код из C. То есть никаких колбеков, только ожидание из единственного рабочего треда. Судя по комитам, это чинят. Как только починят - это будет суперпрорыв.
Это можно обойти, если заморочиться. коллбэк из сишного кода должен только добавить новую таску в Executor. Таску можно аллоцировать заранее, gc-free executor можно написать.
Можно обойти. Я обходил. Делаешь глобальную переменную доступную статически из нативного кода, и через неё разговариваешь. Но это очень неуютно. 😂
Так это выглядит как отличное применение фп - сконструировать монаду и интерпретатор, прячущие этот костыль внутри, оставляя снаружи нормальные тайпклассы)
Обсуждают сегодня