Ruby 3.1.0 Preview 1 released with new experimental JIT

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • error_highlight

    The gem enhances Exception#message by adding a short explanation where the exception is raised

  • Enhanced error log messages are always welcome on the ground :)

    Reminded me of the work done in elm to explicitly improve their error reporting by deeply considering the user experience [1]

    Repo for the newly included error_highlight gem is interesting [2], anyone have more background on this ?

    1. Elm “the perfect big report”

    https://elm-lang.org/news/the-perfect-bug-report

    2. Error_highlight gem repo: https://github.com/ruby/error_highlight

  • typeprof

    An experimental type-level Ruby interpreter for testing and understanding Ruby code

  • Good to see IDE support for TypeProf type hints[1]. I've been doing a lot of work in statically typed languages lately. Ruby has been moving towards static types for a while, but the lack of IDE support has always been the dealbreaker for me to pick up Ruby again.

    [1] https://github.com/ruby/typeprof/blob/master/doc/ide.md

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • yjit

    Optimizing JIT compiler built inside CRuby

  • > I’m curious how the impact affects development, deployment, etc.

    YJIT is pretty much transparent in production, if not it's likely a bug.

    When we tried MJIT in production to compare it against YJIT, it causes lots of request timeouts on deploy, because the JIT warmup would take 10 to 20 minutes and it's much slower during that phase.

    But YJIT warms ups extremely fast and with a much lower overhead, it's seemless on deploy.

    The only thing you may need to tweak is `--yjit-exec-mem-size`, it defaults to `--yjit-exec-mem-size=256` (MB) which is not quite enough for larger apps.

    As for development, it would work, but with code reloading enabled, you'd likely exhaust the executable memory allocation pretty fast, because for now YJIT doesn't GC generated code [0]. It will come soon, hopefully before the 3.1.0 release, but that's one of the reason why it's not enabled by default.

    [0] https://github.com/Shopify/yjit/issues/87

  • ruby

    The Ruby Programming Language

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts