Ruby 3.2.0 Is from Another Dimension

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

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

    The Ruby Programming Language

  • While the original Wasm PR description is a useful historical snapshot of the cross-build instructions, the copy in the official documentation is being updated over time: https://github.com/ruby/ruby/blob/master/wasm/README.md

  • vim-matchup

    vim match-up: even better % :facepunch: navigate and highlight matching words :facepunch: modern matchit and matchparen. Supports both vim and neovim + tree-sitter.

  • > To be fair though, my vim-memory of using % to bounce between start/end brackets doesn't work in Ruby because of the begin/end words instead of matched symbols :(

    Put "runtime macros/matchit.vim" into your .vimrc. Or for even better support add the matchup plugin. https://github.com/andymass/vim-matchup

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • sorbet

    A fast, powerful type checker designed for Ruby

  • Sorbet[1] is currently the most robust tooling available. It has a few rough edges and limitations but it otherwise works great for 90% of use cases.

    [1]: https://sorbet.org

  • WASI

    WebAssembly System Interface

  • Annoying to use WASI and assume that anyone knows what it means. Apparently it’s Web Assembly System Interface. But what does _that_ mean? To quote from https://github.com/WebAssembly/WASI:

    > The WebAssembly System Interface is not a monolithic standard system interface, but is instead a modular collection of standardized APIs. None of the APIs are required to be implemented to have a compliant runtime. Instead, host environments can choose which APIs make sense for their use cases.

    Uhh… OK, I guess. So it’s a collection of APIs to allow Web Assembly programs to make system calls? Why not just say that?

  • artichoke

    💎 Artichoke is a Ruby made with Rust

  • The java based ruby, removes the GIL, which provides us real multithreading.

    Truffleruby is "A high performance implementation of the Ruby programming language, built on GraalVM." If you prefer there is even a rust based ruby https://github.com/artichoke/artichoke

    again, IMO, the microbenchmark, doesn't matter. What matters is the problem domain, whole stack and the whole "speed", including development, deployment and etc, and for some domains, ruby is the best and fast choice.

  • benchmarks

    Some benchmarks of different languages

  • In all the language comparisons I've found over the years, Python consistently comes out slightly slower, for example:

    https://github.com/kostya/benchmarks

    Bearing in mind these are probably not even using YJIT, which makes Ruby considerably faster in some scenarios.

  • RE2

    RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library.

  • Yes, but there is an interesting clarification here. RE2 has used the "caching" approach documented in the Ruby bug ticket linked for quite some time (since its birth?): https://github.com/google/re2/blob/954656f47fe8fb505d4818da1...

    It is mentioned only briefly in Cox's article on regex matching in the wild. Look for the word "bitstate": https://swtch.com/~rsc/regexp/regexp3.html

    I didn't know Perl had implemented this trick too.

    The paper[1] cited in the Ruby bug ticket was published very recently. When I first read the Ruby bug ticket, I immediately wondered how they sidestepped the memory use problem. The paper's abstract seems to suggest there is some technique for doing so, as it rebuffs the idea of doing "full" memoization. Alas, I do not have access the paper. (Which is fucking ridiculous.)

    [1]: https://ieeexplore.ieee.org/abstract/document/9519427

  • 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
  • pitchfork

  • Depends what you are after and what you are constrained by.

    Some people might be struggling with memory usage and may not see it as worth it, but for others who may have some extra RAM sitting around, it might come as a free perf increase.

    As for memory usage, proper use of CoW can reduce it dramatically: https://github.com/Shopify/pitchfork/blob/master/benchmark/R...

  • rubyinstaller2

    MSYS2 based RubyInstaller for Windows

  • I've been doing Ruby on Rails since the early 2.x days. (I dabbled with 1.x, but gave up to let it "age" a little.) For the first 5 years, I was on Linux full time, and it was great.

    Then I moved to Mac, and it was almost as great. (The terminal situation and general integration of the command line is still more cohesive in Linux.)

    For about the past 10 years, I've been at a standard Fortune 250 Windows-is-the-entire-world kind of place. I've been able to do my work on my personal Mac, but I've always made sure that I can do all of my Rails work on my corporate Windows laptop. There are times my code needs to access file locations and other applications inside the corporate firewall.

    Obviously, people are correct that Ruby is not a "first-class" citizen on Windows, but RubyInstaller (https://rubyinstaller.org) has been a lifesaver. Not only does it "just work," and compile all the gems I've used, but it also includes a neat little script that addresses the common "corporate" practice of having to install custom SSL certificates so that IT can decode all traffic going through their firewall. (They install these certs directly into the Windows networking stack, but bundler doesn't use the stack.) The SSL bundle their script creates is also useful for use with Postgres database connections. You just need RubyInstaller, NodeJS, and a better terminal application (or maybe RubyMine), and you're GTG on Windows.

    I've tried to use WSL, both version 1 and 2. If you need to support many Rails apps, and switch Ruby versions (with RVM or rbenv), that might be the way to go, but for just one (big) project, I prefer to stay inside the native environment. And even if I were tempted to use WSL, I'd rather just use an actual VM software like VMWare or OpenBox, and control the details of the virtualization myself. YMMV.

  • distribution

    Probability distributions for Ruby. (by SciRuby)

  • http://sciruby.com is working towards lowering that barrier

  • Flask

    The Python micro framework for building web applications.

  • This says much more about you and the developers and codebases you work with than anything to do with Python list comprehensions.

    Coming from a point of zero knowledge of the codebase, I picked Flask. I picked the cli.py module in Flask. And what do I find?

    https://github.com/pallets/flask/blob/main/src/flask/cli.py#...

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