Zig. Что за зверь?

Давно не было новых постов в этом блоге. За время тишины у меня накопились презентации с внутренних докладов, которые я собираюсь здесь опубликовать, чтобы не пропадать добру

Ускоряем реализацию fs2 стримов для reactive-streams

Если вы, как и я, не в восторге от текущих инструментов для коммуникации с MongoDB, и меньшим злом выбрали для себя выбрали MongoDB Reactive Streams Java Driver, в надежде на существующую интеграцию reactive-streams с fs2, то вероятно, вас ждет разочарование. Официальная интеграция оооооооооооооооооооооооочень медленная. Если вы не собираетесь запускать ваше добро на JS, то возможно вам пригодится мое решение: https://github.com/dokwork/fast-reactive-fs2.
Просто оставлю результат замеров здесь:

Benchmark                                      Mode  Cnt      Score      Error  Units
ReadOneMillionNumbers.dokworkStreamSubscriber  avgt   25     39.377 ±    2.749  ms/op
ReadOneMillionNumbers.fs2StreamSubscriber      avgt   25  11189.737 ± 2213.225  ms/op

Разбор реализации актора из книги FP in Scala

cover of the book В книге Functional Programming in Scala, в главе Purely functional parallelism, в конечной реализации Par[a], авторы ссылаются на акторную модель вычислений и приводят в пример ее реализацию: Actor.scala. В основе реализации приводимого актора лежат идеи Non-intrusive MPSC node-based queue, которые не могут не вызывать восторга! В своей статье хочу попытаться разъяснить для себя и всех, кому это будет интересно, эти идеи.

Шаблонные проекты с Giter8

Надоело копировать build.sbt, plugins.sbt, .travis.yml и прочие шаблонные файлы каждый раз, когда садитесь за новый проект? Тогда у меня для вас есть хорошая новость: забудьте об этом и встречайте giter8!