programs-as-values VS natchez

Compare programs-as-values vs natchez and see what are their differences.

programs-as-values

Source code of the programs as values presentation (by pslcorp)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
programs-as-values natchez
2 2
5 318
- 1.3%
3.2 8.8
over 1 year ago 3 days ago
Scala Scala
- MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

programs-as-values

Posts with mentions or reviews of programs-as-values. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-09-10.
  • typelevel
    2 projects | /r/scala | 10 Sep 2022
    Go straight to the "programs as values" paradigm and its main data type; IO - I have a small repo with concrete examples and resources here: https://github.com/pslcorp/programs-as-values note however it is not intended as a tutorial on its own since I use it as support for my talks, but the linked resources are helpful.
  • How can effect system ever become mainstream?
    1 project | /r/scala | 26 Jan 2022
    Finally, while I get the point / joke, I just want to show how easy is to write something like a high-low priority scheduler using IO just because we can manipulate programs as values: https://github.com/pslcorp/programs-as-values/blob/main/src/main/scala/example/priority/HighLowPriorityRunner.scala

natchez

Posts with mentions or reviews of natchez. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-07-01.
  • The wonder of context functions
    1 project | dev.to | 21 Dec 2021
    Regarding real-world uses of this concept, I used it today to put natchez tracing in my http4s project. While the project is still small, I was shocked at the lack of invasiveness of this approach compared to usage of Kleisli to achieve the same effect.
  • Question on implementing open tracing with Scala Futures
    2 projects | /r/scala | 1 Jul 2021
    It's never going to work with a ThreadLocal-based implementation because Future (and other Scala async stuff like cats.effect.IO) hop from thread to thread in an unpredictable way. The only way to do it is to jettison the magical "current span" thing and pass the span explicitly. You can hide this in the plumbing if you program with abstract effects (this is what Natchez Trace does) but with Future I think you're going to have to pass everything around in the open.

What are some alternatives?

When comparing programs-as-values and natchez you can also consider the following projects:

MacWire - Lightweight and Nonintrusive Scala Dependency Injection Library

wiringbits-scala-newbie-warts - A collection of WartRemover warts for Scala newbies used by Wiringbits

pencil - Simple smtp client

cats-effect-testing - Integration between cats-effect and test frameworks

toolkit - A Scala 3, lightweight and functional non-intrusive library to build typed and declarative Scala application with managed resources and dependencies

trace4cats-sttp - Integration for Trace4Cats and Sttp/Tapir

axiom-honeycomb-proxy - A log forwarder/multiplexer for Axiom and Honeycomb.

newrelic-java-agent - The New Relic Java agent

scache - Cache in Scala with cats-effect