Charles Oliver Nutter
@headius.bsky.social
1.6K followers 70 following 410 posts
JRuby co-lead, Java champion, Ruby hero, JavaOne Rockstar, international traveler and speaker. Book me for your next event! I depend on your donations and sponsorships! https://github.com/sponsors/headius
Posts Media Videos Starter Packs
headius.bsky.social
I posted this response twenty days ago at the beginning of the RubyGems drama. Timeline isn't clear but at least some of these possible theories seem to have been in play. Almost like people should let facts come out first. #RubyGems #security #lawyers

www.reddit.com/r/ruby/s/sC8...
headius's comment on "Ruby Central’s Attack on RubyGems"
Explore this conversation and more from the ruby community
www.reddit.com
headius.bsky.social
Probably using existing object header flags, but they'd need to be checked on every access I assume. No wonder it doesn't scale well yet. Probably easier to eliminate that overhead on JVM though.
headius.bsky.social
Implementing the API shouldn't be difficult, but I'm not sure I'm clear on the complexities of object access. If something is immutable, it just gets passed back and forth, right? And there's a case where you can hand objects off or something? I've lost track of it over the years.
headius.bsky.social
Ok, someone must have implemented Ruby's "Ractor" API in pure-Ruby on top of threads, right? I want to see what that looks like running with true parallelism on JRuby.

There's little demand for Ractors from JRuby folks because they already have shared-memory concurrency with few restrictions.
headius.bsky.social
Any reason why I shouldn't globally replace all bare "@Deprecated" annotations with "@Deprecated(since = 'first release after deprecation')"? Because I really want to do it. It won't be as easy to blame these edited lines, but now the release is right there.
Add "since" to bare Deprecated annotations by headius · Pull Request #9027 · jruby/jruby
The "since" attributes added here reflect the first release after each deprecation was added. We will use this to remove oldest deprecations (by some measure of oldest) in an upcoming rel...
buff.ly
headius.bsky.social
Spring Boot restful app in a one-line command? Love that Ruby magic sometimes...

jruby -Ilib -rboing -e 'Boing::Rest.run("HelloApp") do; get_string def hello; "Hello from Boing!"; end; end'
headius.bsky.social
GenAI is a ponzi scheme. Larger and larger investments are necessary to fund new models with diminishing returns and higher costs to run. Reliability is approaching a mathematical maximum. AI companies keep raising prices and still bleeding cash. It's all teetering on the edge.
headius.bsky.social
I've been away from Windows as a daily driver for 25 years, and every time I come back I'm just amazed that things have actually gotten worse.
headius.bsky.social
Example: doing a complete wipe and reinstall, downloading Windows progress immediately jumps to 30%, and then sits there for 10 minutes before creeping up randomly 5% at a time. Reset progress zooms to 62% and sits there for 30 minutes. 😡
headius.bsky.social
Whenever I'm forced to use Windows again, I'm shocked both by how slow everything feels, and by how many useless progress bars and "this won't take long" messages I get while installing or updating software.
headius.bsky.social
JDK 25 images are released!
headius.bsky.social
JRuby 10 officially supports Java 25 and it's green in CI!

Of course, we've been testing with 25 locally for months and this required zero changes... but now it's official. 🏆
headius.bsky.social
My favorite result when searching for a bug fix is to come across my own bug reports from years ago. "Oh yeah, I ran into this before and completely forgot about it. Still not fixed."
headius.bsky.social
I'm preparing to launch a new and exciting Ruby gem for JRuby and thought of the perfect name. So I went to rubygems.org to check if it had been claimed. Bad news: it had. Good news: it was a one-off experiment of mine that nobody ever used. I can just repurpose it!
RubyGems.org | your community gem host
222,877,093,181
rubygems.org
headius.bsky.social
Of course, RubyLLM works great on JRuby! And then you also have access to a world of AI and ML tooling on the JVM like Langchain4J and official TensorFlow bindings. I'm glad to see communities like Ruby's working to compete with Python in the AI space.
From the ruby community on Reddit: Ruby AI: Interview with Carmine Paolino, Creator of RubyLLM
Explore this post and more from the ruby community
buff.ly
headius.bsky.social
And I need to check on my OCA status. If I signed it it was a long time ago. I want to contribute more directly in the next year... but I say that every year. 🤦
headius.bsky.social
The numbers in my latest post are holding nothing back (full JIT capabilities and heavy indy use) but they also don't run long enough to JIT much at the JRuby level. Future exploration will "force JIT" more code, caching it to disk for AOTCache. That will bring us closer to booting 100% native code.
headius.bsky.social
There's some interest in reducing the warmup curve for JRuby apps, but by far the biggest issue is the startup time of small command lines in the typical Ruby development workflow. AppCDS and AOTCache are on pace to eliminate most of the cold boot overhead, but there's still room for improvement.
headius.bsky.social
At the end of my post on JRuby and JDK 25 startup time features, I teased a bit of the unreleased improvements from Project Leyden. It turns out the latest commits improve startup time even more, so it seems worth posting a quick follow-up!

www.reddit.com/r/ruby/comme...
From the ruby community on Reddit: JRuby and Leyden: Even Better Startup
Posted by headius - 1 vote and 0 comments
www.reddit.com
headius.bsky.social
For sure! My main reason for focusing on 25 was to show users what they can get today by upgrading. I'm aware how active Leyden is and I have been checking in periodically to see how things are going. I'd love to get some JRuby use cases into a test pipeline for y'all.
headius.bsky.social
Always happy to collab! Pretty sure I'm still on the J9 slack, I will engage y'all there. In my head, JITServer ought to be able to match AOTCache but without loading a giant data file at boot. I'd like to understand why it is Linux only and also revisit CRIU. JRuby ships support for the Azul API.
headius.bsky.social
Boo, JITServer only available on Linux. I'll see what I can do with SCC.