Seems like most of the Ruby gains are related to memory usage.
Seems like most of the Ruby gains are related to memory usage.
Ruby 3.2 and production-ready YJIT feel like a big deal as someone who has been in the Rails and Ruby ecosystem for 15 years.
Rails in particular has seemed to be very difficult to optimize for performance in Ruby, and YJIT seems to have done it.
That would be a welcome addition, especially with Rails where you typically end up running your web app, background worker and action cable as separate processes. That's (3) running services each booting up your application to some degree.
Combine that with most apps using very little CPU and more and more memory, it's nice to be able to reduce memory when you can to optimize the machines you host things on. It always feels dirty having a server using 60% memory and 5% CPU.
Python has gotten significantly faster, has static typing built in with an ecosystem of static typecheckers, and async is an ergonomic first class language feature - sure async can have rough edges but the 99.9% case is dead simple with no surprises.
Obviously packaging for Python is still a pain but I don’t see Ruby being better
Did you mean this the other way around?
Rails and Django are both still super popular from scanning job listings, so e-commerce employment wise they’re both great.
FastAPI is also growing a lot.
Big Data leans heavily Python
IIWM I'd go with Ruby hands down.
Julia, though, if you're looking for a language that isn't OO in addition to functional.
All the synthetic benchmarks I've seen claim that Ruby is at least on par with Python's speed if not faster. Like this https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
But then speed in a dynamic language is often very context dependent. If I want to do Rails I won't choose Python. If I want to do machine learning, Python is the obvious choice.
> Obviously packaging for Python is still a pain but I don’t see Ruby being better
Ruby packaging just works whereas Python's is a pain. Can't see how you don't see it being better.
> The Python 3.11 release announcement cites 10~60% improvements over Python 3.10 and a 1.22x speed-up for its standard benchmark suite.
Python 3.11.1
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
The recent Python benchmarks all seem to use the same benchmark suite (which is incredibly complex to the point that it's unclear what is actually being measured) or hype the Microsoft involvement.
Even if you believe them, it is just 10-60% speedup for a very slow language. It won't show up in web applications.
Python has no static typing. It has type annotations, which a few 3rd party static analysers such as mypy use. Ruby has had the same since 3.0 with rbs. The ecosystem may be less mature, but it exists, and Python's isn't necessarily perfect.
Python async is terrible. You have to colorize functions, opt out from a significant part of the ecosystem which either does not support async, or is very unstable, and completely relearn how to do debugging / performance measurement. Ruby has smth better since ruby 3.0, via the fiber scheduler, which supports running network related code asynchronously with *no changes or special function annotations*.
Ruby packaging has been figured out since 2007, and has been influencial for other ecosystems, being the first mainstream language adopting lockfiles.
If you prefer using Python, you are entitled to your opinion and choice. But those arguments are all FUD.
Microsoft is also one of the best language/compiler company in the world.
PHP gains were independent of FB.