transit-lang-cmp VS µPickle

Compare transit-lang-cmp vs µPickle and see what are their differences.

transit-lang-cmp

Programming language comparison by reimplementing the same transit data app (by losvedir)

µPickle

uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala (by lihaoyi)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
transit-lang-cmp µPickle
15 4
421 693
- 0.7%
0.0 6.7
5 months ago 12 days ago
Elixir Scala
MIT License 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.

transit-lang-cmp

Posts with mentions or reviews of transit-lang-cmp. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-23.
  • Migrating from Warp to Axum
    4 projects | news.ycombinator.com | 23 Nov 2022
    > The axum::debug_handler macro is invaluable to debug type errors (there's some with axum too), like for example, accidentally having a non-Send type slip in.

    Heh, yeah. For my recent project where I explored implementing the same little app in a few different languages[0], I chose Axum for the rust version.

    The whole "extractor" system was pretty magical, and when I had this exact issue (non-Send argument), the compiler error was totally useless. I did see the docs about adding this extra macro crate for error messages but it seemed like a bit of a red flag that the framework was going against the grain of the language. Still, on the whole, I did enjoy working with Axum.

    [0] https://github.com/losvedir/transit-lang-cmp

  • Transit: A Code Comparison
    1 project | /r/elixir | 23 Oct 2022
  • Programming language comparison by reimplementing the same transit data app
    1 project | /r/patient_hackernews | 23 Oct 2022
    1 project | /r/hackernews | 23 Oct 2022
    1 project | /r/hypeurls | 23 Oct 2022
    6 projects | news.ycombinator.com | 23 Oct 2022
    This is great! Just pushed up a commit that uses it and updated the benchmarks[0]. I'm seeing a 1.6X - 2X improvement in overall performance. Not bad for a drop-in replacement. And since it's based on serde, I trust it, and I feel like trying out a different JSON library is within scope for me of not just "gaming the benchmarks", as this is actually something I'd now consider using at work.

    It's not quite as high as I was seeing with `jiffy` (3,800 req/sec here vs 4,000+ with jiffy), but I'm not confident that was a totally fair comparison. `jiffy` doesn't integrate as nicely with Phoenix, so I was just calling `:jiffy.encode(...)` in the controller and then doing a `text(...)` response. I need to double-check if `json(...)` is doing more work here.

    [0] https://github.com/losvedir/transit-lang-cmp/commit/140d693b...

  • Why does Scala seem to be slow at benchmark results?
    6 projects | /r/scala | 22 Oct 2022
    Nowadays, I reached out for some benchmark results. Scala is slower than Java and Kotlin. Can you explain it? https://github.com/losvedir/transit-lang-cmp https://github.com/kostya/benchmarks
  • Why is C#/dotnet outperforming rust in my simple benchmarks?
    6 projects | /r/rust | 21 Oct 2022
    I had a chance to update the Go code (commit) to pre-allocate the arrays based on the known length before all the appends, and saw ~30% increase in performance, with top requests per second going from about 8,600 to 11,000.
  • The RedMonk Programming Language Rankings: June 2022
    1 project | /r/programming | 21 Oct 2022
    I recently did a little project to compare several languages (https://github.com/losvedir/transit-lang-cmp) so I contributed to a bunch of those points!
  • Show HN: An informal comparison of several programming languages
    1 project | news.ycombinator.com | 21 Oct 2022

µPickle

Posts with mentions or reviews of µPickle. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-10-22.
  • Why does Scala seem to be slow at benchmark results?
    6 projects | /r/scala | 22 Oct 2022
    The upickle library has traditionally had great performance for handling json in Scala apps so is likely to be seen as a safe choice for someone starting a Scala project. It appears though that not just upickle, but other json library projects are having difficulties maintaining their old level of performance when they release using Scala 3's macros. uPickle currently has an open issue where you can see some of these issues: https://github.com/com-lihaoyi/upickle/issues/389 and here you can see the weePickle folks are also having the same performance problems. Looks like things changed up significantly enough between Scala 2 and Scala 3 so that in order to maintain the same functionality they have resorted to using runtime reflection for mapping to/from case classes.
  • Preparing for uPickle 2.0.0
    1 project | /r/scala | 6 Mar 2022
  • Updated benchmark results of JSON parsers for Scala - now with results for circe and play-json boosters based on jsoniter-scala.
    3 projects | /r/scala | 25 Jan 2022
    See here for sample code size numbers (not picking on upickle specifically, it's just what I'm using myself. I've heard similar reports about e.g. circe)
  • [help] Trouble with derivation and generics
    1 project | /r/scala | 5 Jun 2021
    A good starting point is the note in MacroImplicits.scala in upickle sources. "derives Writer" for a specific case class Foo simply adds a given Writer[Foo] to a companion object of the same specific class. However, this cannot be done automatically for a trait defining sum type - in this case trait Thing. The required given must be defined manually, and the ones automatically obtained for case classes can be used in it.

What are some alternatives?

When comparing transit-lang-cmp and µPickle you can also consider the following projects:

scotty - Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository)

ScalaPB - Protocol buffer compiler for Scala.

tapir - Declarative, type-safe web endpoints library

msgpack - MessagePack serializer implementation for Scala / msgpack.org[Scala]

plainchant - plainchant - a lightweight and libre imageboard

Pickling

template_rust_web_api

scodec - Scala combinator library for working with binary data

hashbrown - Rust port of Google's SwissTable hash map

Scrooge - A Thrift parser/generator

deno_std - deno standard modules

validation