programs-as-values
Source code of the programs as values presentation (by pslcorp)
natchez
functional tracing for cats (by typelevel)
Our great sponsors
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.
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
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?
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
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
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