Vinicius Stock's Avatar

Vinicius Stock

@vinistock

Staff engineer at Shopify working on the Ruby developer experience team | Ruby LSP creator | Speaker Developer tooling, static analysis and type checking

782
Followers
170
Following
24
Posts
31.10.2024
Joined
Posts Following

Latest posts by Vinicius Stock @vinistock

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.

13.01.2026 20:50 👍 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...

29.12.2025 14:18 👍 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...

23.12.2025 16:47 👍 30 🔁 7 💬 1 📌 0
Post image

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

20.12.2025 08:07 👍 100 🔁 29 💬 4 📌 7

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?

18.12.2025 21:20 👍 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

17.12.2025 21:45 👍 1 🔁 0 💬 1 📌 0
Video thumbnail

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...

10.12.2025 23:22 👍 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

01.12.2025 22:39 👍 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

01.12.2025 22:39 👍 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

01.12.2025 22:39 👍 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

01.12.2025 22:39 👍 1 🔁 0 💬 2 📌 0
Video thumbnail

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...

13.11.2025 11:42 👍 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! 🌿

12.11.2025 16:05 👍 41 🔁 13 💬 1 📌 2
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

15.10.2025 15:27 👍 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.

09.10.2025 17:38 👍 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...

09.10.2025 14:15 👍 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 👀

18.08.2025 01:14 👍 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...

02.08.2025 16:19 👍 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 😁

17.07.2025 21:55 👍 7 🔁 3 💬 1 📌 0

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

24.06.2025 13:12 👍 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...

17.06.2025 22:42 👍 4 🔁 2 💬 0 📌 0
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...

24.05.2025 13:35 👍 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-...

19.05.2025 16:10 👍 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.

17.05.2025 12:15 👍 15 🔁 4 💬 2 📌 0

Thank you!

08.05.2025 12:04 👍 1 🔁 0 💬 0 📌 0

Can you please open an issue?

07.05.2025 20:37 👍 0 🔁 0 💬 1 📌 0

We didn’t roll anything out yet. Did you enable it yourself?

07.05.2025 11:29 👍 0 🔁 0 💬 1 📌 0

We’re literally about to release our reimplementation of the explorer, which fixes this and many other shortcomings

06.05.2025 13:35 👍 7 🔁 0 💬 2 📌 0
Preview
Inline RBS comments support for Sorbet How Sorbet and RBS can work together to elevate your Ruby development experience

My teammate Alexandre Terrasa wrote a great post about using inline RBS with Sorbet.
We’ve been slowly adopting it at Shopify. And while we’re still improving Sorbet and all the supporting projects, it’s already working well!

railsatscale.com/2025-04-23-r...

01.05.2025 10:28 👍 19 🔁 6 💬 3 📌 0
Post image

EN:
VINICIS STOCK TALK AVAILABLE NOW - Strategic Standardization: Driving Innovation 🚀🌴

🔗youtu.be/Syfa0wSzqdE

PT-BR:
PALESTRA DO VINICIUS STOCK DISPONÍVEL -
Strategic Standardization: Driving Innovation🚀🌴

🔗youtu.be/Syfa0wSzqdE

30.04.2025 22:02 👍 3 🔁 1 💬 0 📌 0