Advertisement · 728 × 90

Posts by Vinicius Stock

There are a few things behind. In summary, it's higher accuracy, more features, significantly better performance and with a Ruby API that can be reused by multiple tools.

1 week ago 1 0 1 0
Preview
Blazing-fast Code Indexing for Smarter Ruby Tools RubyKaigi 2026, #rubykaigi

Hey, Jared! We are heads down working to get Rubydex integrated into the Ruby LSP. We'll publish a blog post once the work itself is finished.

In terms of talks, my colleague will present one at RubyKaigi rubykaigi.org/2026/present...

1 week ago 2 0 1 0
Preview
Engineering Manager- Ruby and Rails Infrastructure ARE YOU READY? Join the fully-remote rocketship. Find your next quest to make commerce better for everyone. Unlimited growth. Crafters and hard workers only. Apply within.

My team is hiring a manager to lead one of our team of engineers working in the infrastructure for the Ruby language and the Rails framework. Come work with us! www.shopify.com/careers/engi...

2 weeks ago 12 9 0 0

First Ruby LSP beta got released with partial migration to Rubydex 👀

github.com/Shopify/ruby...

Indexing our Rails application (+ dependencies) currently takes 12s with Ruby LSP's internal indexer.

Rubydex does it in 2s 💯 And I think it's even doing more work.

2 weeks ago 15 4 1 0

The Ruby LSP’s indexer already does that as long as the editor has support for watching files. Do you mean built-in file watching for editors that don’t provide it?

The incremental aspect will definitely be a part of Rubydex too

4 weeks ago 0 0 1 0

Ruby LSP is now an official Claude Code plugin. With it, Claude queries the language server directly - same as your editor does. Without it, Claude reads the file and tries to extract the structure manually.

1 month ago 19 2 4 0

This is a huge release for TruffleRuby. It’s our first under our new org.

If you’ve been hesitant about contributing because of the CLA, please note that we no longer have one. We can also release more frequently so please report bugs or open PRs.

3 months ago 12 5 0 0
Preview
Implement moving Immix in MMTk by peterzhu2118 · Pull Request #15744 · ruby/ruby This commit implements moving Immix in MMTk, which allows objects to move in the GC. The performance of this implementation is not yet amazing. It is very similar to non-moving Immix in many of the...

Ruby has a new moving GC. I just merged moving Immix in the MMTk Ruby binding. This is exciting as its the first GC that dynamically detects fragmentation in the heap and performs defragmentation. Performance isn't too great yet but I'm working on it! github.com/ruby/ruby/pu...

3 months ago 27 6 0 0
Preview
Introducing Aliki: A Modern Theme for Ruby Documentation Ruby’s documentation gets a fresh look. Starting with RDoc 7.0.0, Aliki is the new default theme—bringing dark mode, better search, and a modern layout to docs.ruby-lang.org and gem documentation.

#rubyrelease30th I’d like to introduce Aliki, RDoc and docs.ruby-lang.org’s new theme 😄
railsatscale.com/2025-12-22-i...

3 months ago 30 7 1 0
Post image

Finally, www.ruby-lang.org/en/ has a new design.

4 months ago 100 29 4 7
Advertisement

Ah, true. They allowed any DocumentTextEdit to be a snippet, but on type formatting still accepts only text edit.

I assume they’d be open to making it TextEdit | Snippet. Maybe we can propose it?

4 months ago 2 0 0 0
Preview
Allow CodeActions to specify cursor position · Issue #724 · microsoft/language-server-protocol EDIT: We now documented this as a proper extension: https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/lsp-extensions.md#snippet-textedit. lsp-mode for emacs implements it: emacs-l...

My understanding is that this was already implemented and will be available once the spec v3.18 is out github.com/microsoft/la...

Of course, clients will need to add support for it so that it works, but it's coming

4 months ago 1 0 1 0
Video

Ever forget whether it's "change_table" or "alter_table", "remove_column" or "drop_column", "set_column_null" or "change_column_null"?

You don't? Well, I do 😄 So, I thought it would be cool if Ruby LSP could autocomplete schema statements in migrations ✨

github.com/Shopify/ruby...

4 months ago 17 3 3 0

For example, Sorbet uses a rewriter to bake the logic into the implementation and that allows it to figure out the right class at the indexing phase, without requiring inference

4 months ago 2 0 0 0

You’d also need to delay the ability to infer any types on definitions of that nature until other inference managed to figure out what it means.

For these cases, we generally need to introduce more annotations or some built-in mechanism to help

4 months ago 0 0 1 0

In this case, we don’t know exactly what exists because the indexing results depend on inferring the correct return on the [] method.

It’s a tough problem to solve with decent performance because you’d need to go back and forth between inferring and indexing as you discover more information

4 months ago 0 0 1 0

I don’t believe there’s a way to solve this right now. The challenge here is that the parent class is a method call (the [] method). This type of code creates a dependency between inference and indexing in the analysis.

We ideally want to discover what exists in the codebase and then run the rest

4 months ago 1 0 2 0
Video

Workspace symbol search on Ruby LSP should be working much smoother now on 0.26.3, @vinistock.bsky.social and I made a bunch of fixes recently 🤘

github.com/Shopify/ruby...
github.com/Shopify/ruby...
github.com/Shopify/ruby...

5 months ago 11 1 0 0
Herb v0.8 Release Summary

Herb v0.8 Release Summary

Herb v0.8 is here! 🚀

The biggest release yet, packed with new language bindings, Linter Autofix support, Linter Fix-on-Save, a new `.herb.yml` config file, formatter improvements, Tailwind Class Sorting integration, and a ton of performance, tooling and LSP improvements! 🌿

5 months ago 41 13 1 2
Advertisement
Ruby Prize 2025 | 最終ノミネート者決定 | RubyPrize

🎉 Incredibly honored to be a Ruby Prize 2025 finalist! Thank you to everyone who has supported my work on IRB, RDoc, debug, ZJIT, and other Ruby projects.
See you in Matsue!

rubyprize.jp

6 months ago 42 5 4 0

We just publicly posted about the Rubygems.org AWS root-access security incident from September 2025, what occurred, what we verified, and the actions we’ve taken to strengthen our security processes.

6 months ago 26 7 0 1
Dear Rubyists: Shopify Isn’t Your Enemy I’ve been meaning to write a post about my perspective on Open Source and corporate entities. I already got the rough outline of it; however, I’m suffering from writer’s block, but more importantly, t...

I tried to explain why I don't believe the recent accusations toward my former teammates, as well as how the Ruby and Rails Infra team at Shopify operates and why it can be trusted.

byroot.github.io/opensource/r...

6 months ago 93 35 11 6
The Herb Linter annotating the linter offenses in the GitHub Pull Request "Files Changed" tab.

The Herb Linter annotating the linter offenses in the GitHub Pull Request "Files Changed" tab.

Herb v0.5.0 is here! 🌿

Lots of fixes & improvements, plus a new `--github` flag so the Linter can annotate the offenses right on GitHub in the pull request!

Plenty more is cooking, which wasn't quite ready for prime time yet 👀

8 months ago 29 3 1 0
What’s wrong with the JSON gem API? As I mentioned at the start of my Optimizing Ruby’s JSON series of posts, performance isn’t why I candidated to be the new gem’s maintainer.

Beyond performance work, I deprecated a bunch of APis in the JSON gem, and added others, so I figured it would be a good occasion to talk about API design: byroot.github.io/ruby/json/20...

8 months ago 26 8 2 0

ruby-lsp now has CLAUDE.md: github.com/Shopify/ruby... (generated by Claude and vetted by our team)

Not sure how much it'll help the team and external contributors but I'm excited to find out 😁

9 months ago 7 3 1 0

You don’t need to add it to your Gemfile. In fact, we advise against that in our docs

9 months ago 5 0 0 0
Preview
jruby installation broken since 0.17.3 · Issue #2292 · Shopify/ruby-lsp Description Reproduction steps Install the latest jruby (e.g. rbenv install jruby-9.4.8.0) Try to install the latest ruby-lsp: gem install ruby-lsp It will fail building the native extension Code s...

So it turns out all that is needed to support RBS and ruby-lsp on JRuby is for someone to write an FFI binding to the new "pure C" RBS parser! I challenge y'all to make that happen this week. So exciting to get these key Ruby tools working on JRuby! github.com/Shopify/ruby...

10 months ago 4 2 0 0
Advertisement
Unlocking Ractors: class instance variables In a previous post about ractors, I explained why I think it’s really unlikely you’d ever be able to run an entire application inside a ractor, but that they could still be situationally very useful t...

I wrote a post to braindump what I'm currently working on: allowing lock-free access to class instance variables from Ractors.

byroot.github.io/ruby/perform...

10 months ago 27 6 1 0
A thumbnail that reads "Your open source AI editor Powered by GitHub Copilot" with the VS Code logo and a blue gradient background

A thumbnail that reads "Your open source AI editor Powered by GitHub Copilot" with the VS Code logo and a blue gradient background

Today, we're announcing plans to make VS Code an open source AI editor.

We believe AI development should stay true to VS Code's core principles: open, collaborative, and community-driven. Let's build the future of software development together.

aka.ms/open-source-...

11 months ago 123 54 13 12

BTW, I’ve opened a draft PR for this: github.com/Shopify/ruby...
We’re now waiting on a new VS Code API to let extensions configure the MCP connection, which will make the setup simpler & more robust.

11 months ago 15 4 2 0