Shapeless VS ZIO

Compare Shapeless vs ZIO and see what are their differences.

Our great sponsors
  • talent.io - Download talent.io’s Tech Salary Report
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Truly a developer’s best friend
Shapeless ZIO
11 45
3,280 3,566
- 2.7%
7.2 8.9
9 days ago 1 day ago
Scala Scala
Apache License 2.0 Apache License 2.0
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.

Shapeless

Posts with mentions or reviews of Shapeless. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-22.
  • Fp libraries that target scala 3 exclusively?
    5 projects | reddit.com/r/scala | 22 Nov 2021
    I know that libraries like Scodec and shapeless were rewritten practically from scratch for Scala 3, taking advantage of the next syntax and internals, as well as protoquill - a Scala 3 implementation of Quill.
  • Delphi 11 Alexandria Has Been Released
    4 projects | reddit.com/r/programming | 23 Sep 2021
    please show me something like this: https://akka.io/ or this: https://zio.dev/ or this: https://github.com/milessabin/shapeless
  • 6 Years of Professional Clojure
    6 projects | news.ycombinator.com | 2 Aug 2021
    That largely depends on the type system. Languages like Haskell and Scala which have much more powerful type systems than C/Java/Go/etc absolutely do allow you to do those sorts of things. It is a bit harder to wrap your head around to be sure and there are some rough edges, but once you get the hang of it you can get the benefits of static typing with the flexibility of dynamic typing. See https://github.com/milessabin/shapeless or a project that I've been working on a lot lately https://github.com/zio/zio-schema.
  • Scala3: Does it provide a simplified way of doing n-term generic parameters?
    2 projects | reddit.com/r/scala | 6 Jun 2021
    Just use cats and use the apply syntax .mapN for this. Seriously. There isn't a way to do it without generating source code that I can see in the api. Scala 3's HList Tuples aren't like Shapeless 2's HLists and I can't figure out a way in the api to reduce the tuple members down from (A, B, C, D) into an E, generically, yet with Scala 3 poly functions, unlike what you could do in Shapeless 2 with HList
  • Scala: A Love Story
    4 projects | dev.to | 21 Apr 2021
    Scala has sparked a huge ecosystem of very high quality libraries (Cats, Scalaz, shapeless, to name but a few). I think a major reason for this is that Scala attracts developers who value the advantages of the JVM, but are fed up with the limitations of the Java programming language and understand the benefits of an expressive type system and functional programming.
  • Jam 0.0.4 got Scala 3 support
    3 projects | reddit.com/r/scala | 17 Apr 2021
    I also investigated shapeless3 macroses: https://github.com/milessabin/shapeless/tree/shapeless-3/modules, but they are more about derivation than reflection. And probably that is all I found.
  • Why Learn Haskell?
    2 projects | news.ycombinator.com | 1 Mar 2021
    I'm not sure where is the line between extensive and basic knowledge. Here is my more detailed exposure:

    In commercial context:

    * Of strongly typed ones only Scala (with [shapeless]). Can reluctantly throw in Kotlin as well for it's amazing structured concurrency.

    In non-commercial context:

    * Went through a few chapters of [Software Foundations] doing Coq proofs.

    * Worked through most of the [Types and Programming Languages] (writing typecheckers in Ocaml)

    * 3 services in Haskell (1 on Scotty, 2 on Servant). Loved persistent+esqueleto for the ORM layer, disliked Opaleye.

    * 2 projects in PureScript (1 with Halogen, 1 with React bindings).

    * 1 project in ReasonML (Ocaml).

    -

    > I am afraid there is no way back for me

    I see where you are coming from. In my case I can alternate between "I want all invariants properly expressed and checked" and "I just want to ship that barely-working piece of junk and iterate on it". I learned to adjust depending on organization needs. IMO, for many orgs, especially startups/scaleups, the latter is often the more fitting way. With that in mind, I'm willing to trade the guiding hand of great type systems for other productivity aspects (amazing runtime and cohesive web framework in Elixir's case).

    [shapeless]: https://github.com/milessabin/shapeless

    [Software Foundations]: https://softwarefoundations.cis.upenn.edu/

    [Types and Programming Languages]: https://www.cis.upenn.edu/~bcpierce/tapl/

ZIO

Posts with mentions or reviews of ZIO. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-09-21.
  • Next Steps for Rust in the Kernel
    8 projects | news.ycombinator.com | 21 Sep 2022
    I think "better Haskell on JVM" (in contrast to "worse Haskell") is a good identity for Scala to have. (Please note that this is an intentional hyperbole.)

    Of course, there are areas where Haskell is stronger than Scala (hint: modularity, crucial for good Software Engineering, is not one of them). And Scala has its own way of doing things, so just imitating Haskell won't work well.

    Examples of this "better Haskell" are https://typelevel.org/cats-effect/ and https://zio.dev/ .

    All together, Scala may be a better choice for you if you want to do Pure Functional Programming. And is definitely less risky (runs on JVM, Java libraries interop, IntelliJ, easy debugging, etc...).

    None of the other languages you mentioned are viable in this sense (if also you want a powerful type system, which rules out Clojure).

    I agree that Rust's identity is pretty clear: a modern language for use cases where only C or C++ could have been used before.

  • Java 19 Is Out
    4 projects | news.ycombinator.com | 20 Sep 2022
    I would use Scala. I like FP and Scala comes with some awesome libraries for concurrent/async programming like Cats Effect or ZIO. Good choice for creating modern style micro-services to be run in the cloud (or even macro-services, Scala has a powerful module system, so it's made to handle large codebases).

    https://typelevel.org/cats-effect/

    https://zio.dev/

    The language, the community and customs are great. You don't have to worry about nulls, things are immutable by default, domain modelling with ADTs and patter matching is pure joy.

    The tooling available is from good to great and Scala is big enough that there are good libraries for typical if not vast majority of stuff and Java libs as a reliable fallback.

  • Scala Isn't Fun Anymore
    9 projects | news.ycombinator.com | 13 Sep 2022
    I actually think Scala is in the best position it's ever been.

    There is a commitment to making the language simpler, easier and cleaner.

    On the backend, ZIO [1] is the best concurrency library on any platform. On the frontend you have really interesting Scala.js projects like Laminar [2].

    The biggest issue really is the tooling. SBT is simply awful.

    [1] https://zio.dev

  • A Python-compatible statically typed language erg-lang/erg
    27 projects | news.ycombinator.com | 13 Aug 2022
  • Ask HN: Any alternative to Java (OOP) which has the same ecosystem?
    5 projects | news.ycombinator.com | 11 Jul 2022
    Scala? With some help from additional libs such as Zio (https://zio.dev/) it allows you to write production quality programs like you would in Haskell on top of the JVM quite quickly...
  • Cats vs ZIO
    2 projects | reddit.com/r/scala | 10 Jul 2022
  • ZIO 2.0 Released
    2 projects | reddit.com/r/scala | 24 Jun 2022
    If you have experience using Future, and are looking for an introduction to "Why ZIO?", then you might enjoy my talk, Upgrade Your Future. The talk contains a bit of getting started material, and you can keep an eye on zio.dev for more tutorials geared at users of Future and Akka.
    2 projects | reddit.com/r/scala | 24 Jun 2022
    Release notes: https://github.com/zio/zio/releases/tag/v2.0.0
  • ZLayers in ZIO 2.0 are a totally different BEAST!
    3 projects | reddit.com/r/scala | 14 Jun 2022
    The reason why I have banned ZLayers from our code was triggered by this: https://github.com/zio/zio/issues/5339
  • A C++17 thread pool for high-performance scientific computing
    5 projects | news.ycombinator.com | 14 Jun 2022
    Coming from the Scala world this comment confuses me.

    We know actors very well and we've had a popular and solid implementation in Akka for years.

    But that hasn't mean that every other concurrency model has gone away. If anything with the advent of libraries like ZIO (http://zio.dev) we see concurrency being a hot space for interesting new takes and approaches.

What are some alternatives?

When comparing Shapeless and ZIO you can also consider the following projects:

cats - Lightweight, modular, and extensible library for functional programming.

cats-effect - The pure asynchronous runtime for Scala

Monix - Asynchronous, Reactive Programming for Scala and Scala.js.

Http4s - A minimal, idiomatic Scala interface for HTTP

fs2-kafka - Functional Kafka Streams for Scala

Vert.x - Vert.x is a tool-kit for building reactive applications on the JVM

Monocle - Optics library for Scala

magnolia - Easy, fast, transparent generic derivation of typeclass instances

Scala.Rx - An experimental library for Functional Reactive Programming in Scala

Reactor-Scala-Extensions - A scala extension for Project Reactor's Flux and Mono

Scalaz - Principled Functional Programming in Scala