News for hackers. Stuff that matters.
Re:Ruby 3.3 by IshKebab on Monday December 25, 2023 @04:15AM (#38761057)
> double digit performance improvements

You mean like 10% faster, or 10x faster?

Edit: clicked the link; it's 10%. I don't think that's going to make any difference to the perception of Ruby's slowness given that it's on the order of 50-200x slower than "fast" languages like Rust, Java, Go and C++.

Re:Ruby 3.3 by Alifatisk on Monday December 25, 2023 @04:43AM (#38761206)
I seriously don’t think it’s worth comparing Ruby to languages like C++ and the rest.

One is scripting language, the other compiled, the difference is huge already there.

Re:Ruby 3.3 by pdimitar on Monday December 25, 2023 @06:59AM (#38761902)
> I seriously don’t think it’s worth comparing Ruby to languages like C++ and the rest.

It is worth comparing any two languages and ecosystems if they are used for the same things, in this case -- web backends.

Anything and everything that has a web backend is a fair game for comparison.

Re:Ruby 3.3 by Alifatisk on Monday December 25, 2023 @07:47AM (#38762175)
> It is worth comparing any two languages and ecosystems if they are used for the same things, in this case -- web backends.

Right I see your point, but in this case it’s about Ruby, the language itself, not RoR.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:36AM (#38770537)
Not denying it, I just struggle to find any non-RoR usage of Ruby out there except maybe for Homebrew.
Re:Ruby 3.3 by Alifatisk on Tuesday December 26, 2023 @06:58AM (#38771030)
You're right about that, and that's something I believe the Ruby team is struggling with, to show where Ruby is useful outside the Web field. Everyones picture of Ruby is web related thanks to Rails, there is no question about it.

And I find that bit sad because Ruby is also good at other things like building cli apps (have a look at Metasploit for example) & gluing different moving parts together, creating your own DSL thanks to its flexible language structure.

I wouldn't say Ruby is better than any other languge though, all general purpose language could probably achieve the same result, it's just a matter of taste.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @07:07AM (#38771094)
We're venturing in the not exhaustively objectively proven benefits and virtues of strong static typing but nowadays I reach for Golang and not for shell scripts (or Ruby, or Python).

Why?

Just today I again had to do Homebrew cleanups so one recipe can install. Likely my fault, 100% sure about it, but I just need non-confusing tools in my life.

...Or I kept grooming my homemade cross-machine provisioning scripts (i.e. install baseline tools like git and a few others, and then bring my up entire environment along) and in the end it still couldn't source a script that is right there in the file system and even after I made sure it got sourced, it still couldn't find the stuff inside it... while all other 20+ such similar `source stuff.zsh` work just fine.

At one point you do get fed up. (And yes I know this is not strictly related to strong static typing; it's just one example of a thing that will reduce bug surface.)

Ruby is easy to write. And that's the problem. People tried to do too much with it. And it's early glory of including a gem that monkey-patches the core library APIs did not do it any favors either.

Nowadays I don't appreciate unbridled freedom as much. I appreciate and even enjoy constructive limitations. Truth is we can be very much like kids and should be protected from harming each other.

But yeah, that's venturing into philosophy which was not the topic.

TL;DR: Ruby is fine but is fairly limited for my taste. My needs are far bigger and they also include maximum 50ms of startup time.

Re:Ruby 3.3 by ksec on Tuesday December 26, 2023 @03:42PM (#38775836)
>But yeah, that's venturing into philosophy which was not the topic.

I guess you touch on something why many of the discussions on HN and Internet fail to get the point across, when you could have someone in their 10s or 20s who couldn't understand it. Just like how we were told when we were young.

>Nowadays I don't appreciate unbridled freedom as much. I appreciate and even enjoy constructive limitations. Truth is we can be very much like kids and should be protected from harming each other.

It is unfortunate this line of fine balance thinking is not well understood by many, young or old.

Re:Ruby 3.3 by CoolCold on Tuesday December 26, 2023 @03:27PM (#38775697)
Chef? Puppet?
Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @03:34PM (#38775757)
Oh oops. I used Chef years ago but forgot. Thanks for reminding me.
Re:Ruby 3.3 by chucke on Tuesday December 26, 2023 @04:02PM (#38776032)
Metasploit? Logstash? Docker-sync? Vagrant? Jekyll?
Re:Ruby 3.3 by ric2b on Monday December 25, 2023 @11:03AM (#38763662)
Building a web backend with C++ is a very dangerous and complex ordeal, you're extremely likely to expose memory based vulnerabilities to the entire world.
Re:Ruby 3.3 by pdimitar on Monday December 25, 2023 @11:13AM (#38763725)
I agree but people are doing it anyway. So technically Ruby on Rails and C++ are competitors in the web backend space.
Re:Ruby 3.3 by Alifatisk on Monday December 25, 2023 @12:35PM (#38764408)
RoR and whatever C++ based web backend there is count as a valid comparison in my book. But comparing the languages itself is maybe a bit off.

On a side note, you can actually compare their performance here if you’re really curious. But take it with a grain of salt since these are synthetic benchmarks.

https://www.techempower.com/benchmarks

Re:Ruby 3.3 by hello_moto on Monday December 25, 2023 @03:56PM (#38766040)
Who builds web backend in C++?
Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:24AM (#38770470)
The amount of companies who do that is greater than zero.
Re:Ruby 3.3 by jupp0r on Tuesday December 26, 2023 @09:09PM (#38778315)
Re:Ruby 3.3 by jupp0r on Monday December 25, 2023 @11:24AM (#38763820)
Google, Facebook, Amazon and Twitter beg to differ (not completely C++, but for services where it makes sense). Also nginx, passenger and other parts of your Ruby app.
Re:Ruby 3.3 by hello_moto on Monday December 25, 2023 @03:56PM (#38766032)
shrug the companies you mentioned do not use C++ for web-app.

Amazon is a huge Java shop.

Twitter used to be huge Rails app with Java/Scala services.

NGINX and Passenger are infrastructure pieces just like Memcached so I think you need to understand the context here...

Re:Ruby 3.3 by jupp0r on Tuesday December 26, 2023 @09:02PM (#38778280)
Shrug, you have no idea what you are talking about [1]. Also nginx and passenger are webservers and claiming they are not part of your web app is a pretty wild claim when they literally send http responses to browsers (unlike memcached).

[1] https://en.m.wikipedia.org/wiki/Programming_languages_used_i...

Re:Ruby 3.3 by hello_moto on Sunday December 31, 2023 @12:52AM (#38822133)
I think you're the one who got confused with the context here.

We're talking about web-app, not microservices.

We're talking about CRUD with DB migration, sessions, caching, etc.

I recalled Google's dl.google.com was implemented in C++ and Brad F rewrote it with Golang. We're not talking about microservice that serves file here. We're talking about the main web application that serves wikipedia, youtube original version (they might had revamped it sometime post acquisition with web gateway and bajillion microservices), Google Search (was Java servlet), Facebook original web-app (was PHP, became HVVM/H4CK.

So yes, I _know_ what I'm talking about in terms of the context of a web-application here. Do you?

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:25AM (#38770479)
Yes, but I haven't argued that. Let's not shift goal posts.
Re:Ruby 3.3 by cutler on Monday December 25, 2023 @11:36AM (#38763919)
Web backends in Rust and C++? Not saying web frameworks in these languages don't exist but to claim they're anything other than curiosities is misleading. In any case, good luck with the fraction of a millisecond such languages gain you while waiting on database i/o. There are use cases for switching to a compiled language like Rust or C++. Web back-ends isn't one of them.
Re:Ruby 3.3 by pdimitar on Monday December 25, 2023 @11:53AM (#38764061)
I am not interested in being put in a corner where I have to defend web backend creation that I don't even practice. I only said it's being done by people. Feel free to reject it or degrade it as being "a curiosity", from where I am standing reality disagrees with you though.
Re:Ruby 3.3 by wredue on Monday December 25, 2023 @01:09PM (#38764697)
Nah. One rust based server can power the same number of connections as 10-100 ruby based servers.

This is not just “pretend database IO” problem. This is actual cost that no business should accept on the basis of “but but but database IO (that I’ve never actually measured, but it’s an easy cop out because I read it on medium once).

Re:Ruby 3.3 by cutler on Monday December 25, 2023 @01:29PM (#38764840)
But you factored-out developer productivity. What you gain in reduced server costs is lost many times over in developer productivity. Companies who chose Rails for decades knew it was slower and more memory-hungry than rolling everything yourself in Rust or C++. They did the math and the business case for Rails was more compelling.
Re:Ruby 3.3 by wredue on Monday December 25, 2023 @04:24PM (#38766263)
Rails is no more productive than go, and a developer taking 20 extra minutes (frankly, not likely, even if we’re talking rust) to write go rather than Ruby is not going to cost more than the $1000 a month the extra Ruby servers cost you just to run.

“But but but developer productivity” is a myth.

Re:Ruby 3.3 by cutler on Monday December 25, 2023 @06:00PM (#38767132)
It sounds like you haven't worked with many startups which is where Rails has been the goto option for a very long time. Rails is a framework. Go is a programming language. Show me a Go command line which sets up a fully-baked MVC app complete with data model, migrations, CORS, caching, asset pipeline, mailer, mailbox, chat(Action Cable), job queue and a Hotwire equivalent. While you're baking all of that yourself I'm launching our MVP. There's Buffalo but you compared Go with Rails so I assume you meant rolling your own using just the Go standard library.
Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:23AM (#38770463)
> While you're baking all of that yourself I'm launching our MVP.

That's the only thing RoR wins at: speed of delivering first MVP.

Once you get into areas where companies don't die if they can't deliver a demo next week, RoR is not at all impressive or even consequential.

Re:Ruby 3.3 by wredue on Wednesday December 27, 2023 @08:41PM (#38789003)
I think that’s as far as the grand scheme of a project goes, coding productivity is a myth.

Can a python or ruby dev bang out Advent of Code faster than I can in zig or rust? Sure. Is advent of code representative of a multi-year long business system where coding is 15% of the time cost at the high end? Nah.

When you look at the actual bills and where the actual time goes, spending time on optimizing the code pace of a MVP is simply not valuable. You’re saving a small percent of a small percent of time at the beginning to accept using languages that are not know for their steady state support ability.

Re:Ruby 3.3 by pdimitar on Thursday December 28, 2023 @07:11AM (#38792680)
Yep, agreed on all accounts. People simply love their languages and will point out any area they "win" at, even if it's inconsequential and not at all important. And that's happening a lot, including TechEmpower benchmarks, speed-to-first-MVP, and many others.
Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:34AM (#38770525)
It's not a complete myth. But I'd agree that it's overblown and overly touted.
Re:Ruby 3.3 by hello_moto on Sunday December 31, 2023 @12:57AM (#38822155)
Oh gosh, stop it.

I skip Ruby hype but I know RoR and I use Golang professionally to build microservices serving Fortune 10,50,100,500, whatever and I wouldn't use Go to build a web-application.

Golang for microservice that relies on other microservices are great (i.e. my Golang service doesn't handle authN/authZ, but another service does), Golang for monolithic web-app that has to handle db migration (yeah I know something exist), implement multiple crud objects (remember, Golang microservices typically has smaller context and challenges than a medium size web-app) is pain in the ass!

PS: cut my teeth in Java servlet/jsp, moved on to Spring Framework+GWT, skipped RoR went straight to JS and ended up in Golang for the last 5+ years. I'm not Rails worshipers but I'd probably pick Java Spring ecosystem over Golang for monolithic web-app.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:19AM (#38770441)
> But you factored-out developer productivity.

Let's not act like everyone who tries Rust gives up. OK? Sure it's definitely more difficult but people are learning and practicing and the pool is slowly expanding (me included, though I am not at production-grade experience yet).

> What you gain in reduced server costs is lost many times over in developer productivity.

Are you exaggerating for dramatic effect? I'd say depending on your people's seniority the productivity loss is anywhere from -50% to -500%, which is hardly "many times over".

You absolutely do iterate slower with Rust writing web backends -- no two ways about it. But you also (a) exaggerate the multiplier and (b) underestimate the long-tail of gained productivity that a language like Rust brings to the table (strong static typing et. al.)

And even if we take into account your comparison between server costs and programmer productivity -- there are areas where correctness and speed are more important than Joe and Susan being able to crank out 17 CRUD endpoints this week. I feel that this nuance is often ignored.

> Companies who chose Rails for decades knew it was slower and more memory-hungry than rolling everything yourself in Rust or C++.

I have worked with Rails for 6.5 years and they knew no such thing. They treated server costs exactly like they treated programmers -- a necessary evil, a cost center that (currently) cannot be optimized away.

I am consistently blown away by the protected and downright pampering environments that some HN people have lived in. It's pretty brutal out there though, and somebody has to point that out to you every now and then, lest you forget it (which it seems that you did).

> They did the math and the business case for Rails was more compelling.

They did no math, except one: how easy it is to hire 5 new devs in the next 1-2 months. No other analysis was involved whatsoever. Again, I've looked from within, a good number of times.

---

I am all for an informed debate but that seems to be difficult with you as you resort to exaggerations and dramatic language.

For the record, I don't do my main work neither with Ruby on Rails nor with Rust (though I know both, or should I say I knew RoR because I haven't used it in a while now). I got no horse in the race, I am simply looking for an objective discussion based on merits that can hopefully ignore network effects and popularity. Technologies absolutely can and have won by utilizing network effects and popularity (see: Python) but that does not say much about their objective merits.

Re:Ruby 3.3 by ksec on Tuesday December 26, 2023 @03:10PM (#38775558)
>I have worked with Rails for 6.5 years and they knew no such thing. They treated server costs exactly like they treated programmers -- a necessary evil, a cost center that (currently) cannot be optimized away.

Luckily we now have company that is large enough with incentive to optimise it.

Re:Ruby 3.3 by hello_moto on Monday December 25, 2023 @03:57PM (#38766043)
I'd choose Go and Java any given day before Rust.

That language with C++ mindset is just... horrible.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:35AM (#38770532)
They all have their niches. Rust is difficult but rewards you for your persistence.

I do appreciate Rust a lot but nowadays find myself reaching for Golang more often. I simply don't have the extra time and energy to learn the final more advanced Rust pieces in my own leisure time so I'll learn it whenever I can but yeah, in the meantime: Golang to the rescue.

Re:Ruby 3.3 by hello_moto on Tuesday December 26, 2023 @02:17PM (#38774983)
> I simply don't have the extra time and energy to learn

Nobody does these days. Language is just a tiny piece of the whole Cloud ecosystem aside from k8s, docker, different storages (elastic, rdbms, mongo), different monitoring/metrics solution, etc.

I work for a company that is testing Rust and the complain was that the tooling wasn't there compare to Golang.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @02:41PM (#38775257)
> Nobody does these days.

Well I don't know if this is a shallow generalization or just observation but in case it's the latter: I am a senior dev with too much stuff in my hands already, and my personal life's list of pleasures comprises of 2 items: sex and sleep. I figured that at 40+ that is VERY NOT OKAY and I am working to change it.

So yes, I no longer will sacrifice personal time to hone my programming weapons.

Or as we say here in the Balkans: "The quality of the music depends on the tip to the musicians".

Re:Ruby 3.3 by ksec on Tuesday December 26, 2023 @03:16PM (#38775610)
I was going to ask if you had time to look at Crystal since you are using GO and wrote about not using any scripting language but I guess you dont :)
Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @03:23PM (#38775672)
But I did, some year and a half ago.

Found nothing that would impress me. Ruby syntax? Who cares? Compiled and with better performance? Well, what's wrong with Golang and Rust? They do fantastically well.

I don't see what niche is Crystal trying to cater to. Other languages have better compilers and a bigger, more developed ecosystem.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:24AM (#38770469)
Yes and no, some languages like Python and Ruby do introduce overhead even in conditions where waiting for the DB is 80-90% of the time spent on a web request -- that much is true. But the database I/O problem is definitely not pretend. It's very real.
Re:Ruby 3.3 by IshKebab on Tuesday December 26, 2023 @07:32AM (#38771241)
I would agree with C++, but not Rust. Describing Rust web backends as a curiousity is inaccurate.
Re:Ruby 3.3 by trealira on Monday December 25, 2023 @06:21AM (#38761709)
It may be worth comparing this new JIT to fast implementations of dynamic languages, like LuaJIT or SBCL for Common Lisp (SBCL is an AOT compiler and not a JIT though).
Re:Ruby 3.3 by ciconia on Monday December 25, 2023 @06:15AM (#38761662)
Note this is for a Ruby on Rails application. The slowness is I believe more due to the framework than the language runtime. In any case, it's still early to determine the impact on performance from upgrading to Ruby 3.3. I guess we'll be able to tell more in the coming months.
Re:Ruby 3.3 by pdimitar on Monday December 25, 2023 @07:00AM (#38761909)
> Note this is for a Ruby on Rails application. The slowness is I believe more due to the framework than the language runtime.

Hardly relevant, I'd think at least 80% of all Ruby usage everywhere is in Ruby on Rails applications.

Re:Ruby 3.3 by Alifatisk on Monday December 25, 2023 @07:57AM (#38762228)
It is relevant if the cause of the slowness is due to the framework rather than the language itself.

The performance can vary drastically depending on which Ruby framework you use, so it's not due to the language but the upper layer instead.

Note, even if Rails is the most popular framework, there is still other alternatives which makes it even more relevant to the performance impact.

Re:Ruby 3.3 by resonious on Monday December 25, 2023 @08:58AM (#38762628)
I suspect there's not just one cause of slowness here. Pure language benchmarks also tend to rank Ruby very low. So I'd wager that a fast Ruby framework would still lose to a fast Go framework.
Re:Ruby 3.3 by cutler on Monday December 25, 2023 @11:32AM (#38763876)
Apples to oranges again. A more relevant comparison would be Ruby to Python and in recent years Ruby has edged ahead in performance if you factor-out Python's C-based libraries such as Numpy.
Re:Ruby 3.3 by csjh on Monday December 25, 2023 @12:02PM (#38764148)
Isn’t factoring out C based libraries ignoring a large part of the Python ecosystem?
Re:Ruby 3.3 by cutler on Monday December 25, 2023 @12:35PM (#38764411)
Yes, but if you're comparing language performance that's important.
Re:Ruby 3.3 by Alifatisk on Monday December 25, 2023 @12:28PM (#38764367)
I haven’t used Python in years but from what I’ve understood by reading other comments, factoring out C-based libraries would rule out a large portion of what makes Python so popular. Especially on the scientific side.

So I think you’re right.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:30AM (#38770507)
How is a C codebase a part of the Python ecosystem?

More accurate statement would be: Python is piggy-backing on hugely successful C libraries and claims big performance on their backs, IMO.

Re:Ruby 3.3 by Lio on Tuesday December 26, 2023 @05:37AM (#38770548)
It's not that you should factor them out but if C is actually doing the work you can call the same excellent libraries from Ruby too.

e.g. Numo for NumPy or Ruby-Polars for python polars.

Re:Ruby 3.3 by resonious on Tuesday December 26, 2023 @05:50AM (#38770622)
If we're comparing "programming languages that can be used to make websites" then it's totally apples to apples. Ruby and Go (and Rust, Java, etc) are all valid options and so I think it's smart to compare them before starting a web project.
Re:Ruby 3.3 by Alifatisk on Monday December 25, 2023 @09:08AM (#38762704)
Absolutely, I should maybe clarify that I did not mean to say that we can fully rule out the language itself as a cause of the poor performance, Ruby always perform worse than Go in this example for obvious reasons.

But, saying that the frameworks using the language under the hood has almost no relevancy is wrong in my opinion! And that is what I was trying to point out.

Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:29AM (#38770501)
> But, saying that the frameworks using the language under the hood has almost no relevancy is wrong in my opinion!

I did not claim that in general sense, I said it with the context that even if Ruby got accelerated a lot then that's still kind of inconsequential because most Ruby usage is Rails.

Re:Ruby 3.3 by Alifatisk on Tuesday December 26, 2023 @06:41AM (#38770914)
Oh okey, that clarifies it!
Re:Ruby 3.3 by ajmurmann on Monday December 25, 2023 @12:53PM (#38764548)
How much of the time in a given request is even spent in Ruby code? The majority of web apps that were slow and I got a chance to analyze were spending much of the time in DB queries and slowness was usually due to unoptimized DB queries. Even endpoints that were fast, still spent a large percentage of their time not in Ruby but in DB and service requests
Re:Ruby 3.3 by pdimitar on Monday December 25, 2023 @01:09PM (#38764692)
That is true, yes, but still comparing e.g. Rust vs. Ruby I'd think Rust spends anywhere from 10ns to 100ns (outside of waiting on DB) and Ruby no less than 10 ms. Still pretty significant and can add up during times of big load.

Also I remember Rails' ActiveRecord having some pretty egregious performance footprint (we're talking 10ms to 100ms on top of DB waiting) but I hear that was fixed a while ago.

Re:Ruby 3.3 by ajmurmann on Monday December 25, 2023 @02:44PM (#38765483)
My point was that if we look at Rails performance going up 10%, what does that mean for time spent in Ruby. I'd believe anything from a 15% to a 80% reduction of time spent in Ruby code
Re:Ruby 3.3 by pdimitar on Tuesday December 26, 2023 @05:27AM (#38770491)
I haven't seen 80% anywhere in the linked article[0] so let's use facts and not beliefs.

It is possible Ruby itself got accelerated a lot, okay, I am just not sure that's relevant since almost all Ruby usage is Rails.

[0] https://railsatscale.com/2023-09-18-ruby-3-3-s-yjit-runs-sho...

Re:Ruby 3.3 by ajmurmann on Tuesday December 26, 2023 @11:34AM (#38773225)
I wasn't trying to say that Ruby indeed is 80% faster, but that it's pretty much impossible to drive actual Ruby speed up from Rails numbers, since we don't know nearly enough about the Rails app
[dead]
Re:Ruby 3.3 by ric2b on Monday December 25, 2023 @11:01AM (#38763645)
Java trades blows with Golang, depending on the use case.
Re:Ruby 3.3 by tomlin on Monday December 25, 2023 @11:00AM (#38763634)
I'm so glad that you said this and weren't downvoted into the ground. Honestly, Ruby needs to die. It performs like a go cart in a Formula 1 race. I'm actually just exhausted watching smart people tell me this is a language and toolchain worth dedicating brain cells to.
Re:Ruby 3.3 by aantix on Monday December 25, 2023 @11:23AM (#38763812)
Ruby and Python are the only two ecosystems that seem to prioritize developer happiness. They're a pleasure to work with. So they're not going to die anytime soon.
Re:Ruby 3.3 by cutler on Monday December 25, 2023 @11:45AM (#38763995)
Python might be popular but developer happiness isn't a concept I'd associate with the language. There's no joy in being limited to single statements in lambdas, for example.
Re:Ruby 3.3 by tomlin on Monday December 25, 2023 @06:35PM (#38767385)
Python is somewhat pleasure. Ruby might as well be sandscript as far as I'm concerned. The use of pipes is gross, uncoordinated and lacking direction.
Re:Ruby 3.3 by the_gastropod on Monday December 25, 2023 @12:10PM (#38764234)
What a bizarre take. Ruby is primarily used in web applications, where round-trip http requests, database queries, and other 10s-of-ms things are commonplace. Ruby is very rarely the bottleneck in these applications. Choosing to make your job significantly more challenging in order to maximize the performance of a small portion of the total response time of a web application is not, in my estimation, a smart decision.
Re:Ruby 3.3 by seabrookmx on Monday December 25, 2023 @02:05PM (#38765139)
There's always this rift between the "language is slow" crowd and the "but it's not the bottleneck" crowd. I think this comes from the types of applications you work on and their scale.

I work at what a company that's not particularly large. Our original API is a Django monolith that serves about 1000req/s.

While you could argue Python isn't the bottleneck, Django often is. I hear the same feedback from colleagues that work in Rails. Not only do we run into issues with latency per request but we have to run a significant number of Kubernetes pods to serve this workload. With c#, golang, java or a similar language we would only require a handful of pods and drastically cut our compute costs.

Even for web workloads, these slow interpreted languages and their developer experience optimized frameworks absolutely do become a bottleneck and claiming they don't (or that you need to be at Google/Facebook scale before they do) is false.

Everything is a tradeoff but the way I think of it: speed is a feature.

Re:Ruby 3.3 by ochoseis on Monday December 25, 2023 @02:41PM (#38765468)
Further, with a lot of the batteries-included web frameworks you end up with a ton of suboptimal database queries (e.g. unintentional query-in-loop). Some would argue that you can just profile your code and optimize the hot spots, but I would tend to think it still slows you down quite a bit overall.
Re:Ruby 3.3 by seabrookmx on Monday December 25, 2023 @02:58PM (#38765583)
So common that apps like sentry have special logic to detect these "N+1" queries. We find DRF is awful for this.
Re:Ruby 3.3 by neonsunset on Monday December 25, 2023 @05:41PM (#38766953)
One of the biggest breaking changes that EF Core did was to explicitly disallow such generated queries that required application-side evaluation and could not get compiled to pure SQL (you can get other behavior back with a toggle but it is discouraged).

I strongly believe it is wrong to do otherwise and is a source of numerous footguns unless you invest in tracking them down.

Re:Ruby 3.3 by seabrookmx on Monday December 25, 2023 @07:18PM (#38767684)
I will admit I'm behind the state of the art with EF, but I switched to dapper in the early days of dotnet core and never looked back. It gets out of my way so I can properly utilize postgres' advanced features like jsonb while cutting out a lot of the boilerplate associated with hand-rolled queries.
Re:Ruby 3.3 by neonsunset on Tuesday December 26, 2023 @05:09AM (#38770385)
Dapper is great. I'm very happy that there now exists an AOT-supporting flavour of it too: https://aot.dapperlib.dev/

As for EF Core - it very good as of today (has it ever been bad?). You can transparently compose your queries with `context.FromSql(...).SingleAsync()` which will use string interpolation API to consume your plain $"SELECT * FROM {myTable} ..." and make it injection-safe and transform passed arguments as appropriate. It's quite handy.

Re:Ruby 3.3 by fomine3 on Tuesday December 26, 2023 @12:20AM (#38769125)
It's 'resource usage' rather than 'speed'
Re:Ruby 3.3 by tomlin on Monday December 25, 2023 @06:33PM (#38767370)
You're literally the exact person I'm talking about. No serious application developer who's interested in speed is working in Ruby. This isn't my opinion. I don't care personally, it's just a fact if you care about reality. When Netflix announces that they use Ruby because it performs faster than Node.js, I'll change my opinion, because my opinion is based on facts and not feelings. I didn't make Ruby, so whether it does well or fails isn't personally important to me. If Ruby was the fastest interpreter, I'd be pro-Ruby but it absolutely isn't and pretending it is is depressing and shows you are making political or selfish decisions, not practical ones.
Re:Ruby 3.3 by the_gastropod on Monday December 25, 2023 @11:14PM (#38768862)
Nobody is pretending Ruby is the fastest interpreter. Who are you arguing against? Rubyists generally consider Ruby “fast enough”. Which it is, for many applications.

For every engineer insisting Ruby is fast enough in a situation where it is not, there are 1000s in environments where Ruby absolutely is more than sufficient, insisting it’s too slow.

Re:Ruby 3.3 by tomlin on Tuesday December 26, 2023 @09:42AM (#38772150)
It doesn't answer the question of why you would choose Ruby. Honestly, you all sound like you got a Sega Genesis for Christmas, while everyone else got a SNES. You can tell other kids on the playground that Genesis has better graphics, but the spec sheets don't lie.

You're trying to make it seem like it's a wash, because "scripted" but it's not. Node.js outperforms Ruby in every department. And it's based on one of the slowest scripting languages of all time. Ruby is a dead language in many countries.

In Canada, you would have to travel the country to find a Ruby job. And if you don't think in American-centric terms, that is meaningful.

Re:Ruby 3.3 by the_gastropod on Tuesday December 26, 2023 @10:02AM (#38772292)
Fine analogy. Plenty of people liked the Sega Genesis more than the SNES. (I think a more apt analogy is more contemporary consoles, where the lowly-spec’d Nintendo competes just fine against the competition’s higher performance units. People like Nintendo for reasons other than the spec sheet.)

I enjoy writing Ruby a heck of a lot more than I do writing JavaScript. I like the object model. I like Ruby’s standard library. I like the Ruby community. I like the tooling: irb is fantastic. Bundler is still one of the best package managers around—makes npm and yarn look silly by comparison.

The spec sheet just does not matter for virtually any of my work. Switching to a less enjoyable, more performant, language might make a 60ms response time average become 55ms. Who cares? That performance difference was even bigger 15 years ago, and it didn’t matter then. It matters less today.

GitHub, Shopify, Airbnb, Netflix (yes! Even Netflix!), Soundcloud, Kickstarter, etc. etc. all use Ruby today. It is a fantastic development environment when you’re more concerned with doing your job, and less concerned with performance pissing contests.

Re:Ruby 3.3 by tomlin on Friday January 05, 2024 @10:28AM (#38880040)
I'm a Nintendo die hard fan boy, I don't care about speed. I learned how to "code" in ColdFusion. I am all for the underdog POV.

We're talking about performance because of the context, which is – there aren't the jobs to support the language's continued growth and dedication. We're talking about speed because there needs to be a defining reason to continue using a language and develop in an ecosystem that isn't moving at the growth of other communities.

If Nintendo Switch had 4 games, and they all looked like dog piss - asking why would I bother wasting time with Switch is a valid opinion.

There's also this insect-minded logic of only being a "front end developer" or "back end developer", and that mindset is furthered by languages that don't bother speaking the language of the web. If I learn javascript, I can be both - pretty much on day 1. If I learn Ruby and Javascript, great. How easy is that to do for a junior developer just getting out of school? Not widely.

Re:Ruby 3.3 by Lio on Tuesday December 26, 2023 @06:02AM (#38770702)
I don't think you can argue that you personally don't care about ruby.

You wouldn't spend so much of your time reading and writing about ruby if you didn't care about it. You'd move to things you do care about.

Ruby, and scripting languages in general, are fast enough for the jobs they get used for. When they're not they get replaced.

Re:Ruby 3.3 by tomlin on Tuesday December 26, 2023 @09:37AM (#38772103)
Most of your comment is about what you think I think, and not a lot about metrics, data or examples where Ruby performs beyond my interpretation. I think that says a lot right there.
Re:Ruby 3.3 by cutler on Monday December 25, 2023 @11:29AM (#38763861)
Apples to oranges, no?
Re:Ruby 3.3 by ksec on Monday December 25, 2023 @12:48PM (#38764508)
If you compare pure Ruby without Rails to fast language like Rust, Go and Java. It is probably closer to 10-20x.

The 100x to 200x mainly comes from Rails.

Re:Ruby 3.3 by byroot on Monday December 25, 2023 @01:45PM (#38764955)
Can we stop with these useless comparisons? 10x-20x, 100x, 200x out of context means absolutely nothing.

All these micro-benchmarks shootouts means nothing either. Is anyone running a mandelbrot or pi-digits SaaS company? I'd think not.

Similarly saying Rails is slow out of context, means nothing, Rails is "slower" than Ruby micro-frameworks X because it does useful things the other doesn't like CSRF protection etc. If you don't need these features, turn them off and Rails will be about as fast as these frameworks.

If anything annoys me more than clueless people shitting on Ruby for bad reasons it's Rubyists spreading FUD about Rails.

Re:Ruby 3.3 by nsajko on Monday December 25, 2023 @02:05PM (#38765138)
Perhaps it's misleading to throw around specific numbers like 100x, but Ruby is certainly orders of magnitude slower than languages like Go or Java. Both of which are not exactly known for their speed (compared to C++ or Julia, for example).
Re:Ruby 3.3 by byroot on Monday December 25, 2023 @02:39PM (#38765450)
"speed" thrown without context is meaningless. It's one property of a tool among many others you generally have to trade for.

Some use cases with small margins call for the utmost efficiency to be viable business. Some use cases just need decent efficiency and are happy to trade some efficiency for some other properties.

Many successful people and companies are happy with Ruby, can we just give them a break? Or is there somehow some moral duty to use the "fastest" language available regardless of whether it makes any kind of business sense that nobody told me about?

Re:Ruby 3.3 by ksec on Tuesday December 26, 2023 @12:09AM (#38769083)
On the other hand, why is it wrong to say Ruby or Rails is slow? Especially in the context of Java or Go? What is wrong with accepting a simple ground truth that is compiled language is and will always be faster than an interrupted language, even with JIT.

For Rails I often compare to it another CRUD app, StackExchange [1] using ASP.net And the easiest real world comparison with Rails App would be Cookpad. Are we not seeing at least 10x difference if not more.

Is Rails fast enough? That depends on the context. Everyone's business model is different. It is almost definitely fast enough for most SaaS cases.

[1] https://stackexchange.com/performance

Re:Ruby 3.3 by byroot on Tuesday December 26, 2023 @02:00AM (#38769479)
> What is wrong with accepting a simple ground truth

Where am I denying that? Saying that one of the most dynamic language is slower than Java or Go it's such a truism it's pointless.

What annoys me is the figures quoted. I can craft you benchmarks were Ruby is barely any slower than these two, or benchmark where it's 1000x slower. So which is the correct number to quote?

> For Rails I often compare to it another CRUD app, StackExchange [1] using ASP.net

This makes zero sense. You said:

> If you compare pure Ruby without Rails to fast language like Rust, Go and Java. It is probably closer to 10-20x.

> The 100x to 200x mainly comes from Rails.

So somehow you are blaming Rails for making Ruby 10 times slower whatever that means. That is a stupid statement that you took out of your hats and that doesn't reflect any reality. Please stop doing that, it's really unnerving for the people who maintain these projects.

Re:Ruby 3.3 by ksec on Thursday December 28, 2023 @11:59AM (#38795493)
>So somehow you are blaming Rails for making Ruby 10 times slower whatever that means.

>That is a stupid statement that you took out of your hats and that doesn't reflect any reality.

I will leave it at that.