{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/railsatscale.com\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/railsatscale.com\/","rel":"alternate","type":"text\/html"}}],"updated":"2026-08-14T15:35:52+00:00","id":"https:\/\/railsatscale.com\/feed.xml","title":"Rails at Scale","subtitle":"The Ruby and Rails Infrastructure team at Shopify exists to help ensure that Ruby and Rails are 100-year tools that will continue to merit being our toolchain of choice.","author":{"name":"Shopify Engineering"},"entry":[{"title":"The inliner is yielding benefits for ZJIT","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-07-28-the-inliner-is-yielding-benefits\/","rel":"alternate","type":"text\/html","title":"The inliner is yielding benefits for ZJIT"}},"published":"2026-07-28T00:00:00+00:00","updated":"2026-07-28T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-07-28-the-inliner-is-yielding-benefits\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Max Bernstein"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-07-28-the-inliner-is-yielding-benefits"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"How I Think About Tests: Skips","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-06-08-how-i-think-about-tests-skips\/","rel":"alternate","type":"text\/html","title":"How I Think About Tests: Skips"}},"published":"2026-06-08T00:00:00+00:00","updated":"2026-06-08T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-06-08-how-i-think-about-tests-skips\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Hartley McGuire"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-06-08-how-i-think-about-tests-skips"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"A new Register Allocator for ZJIT","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-05-27-a-new-register-allocator-for-zjit\/","rel":"alternate","type":"text\/html","title":"A new Register Allocator for ZJIT"}},"published":"2026-05-27T00:00:00+00:00","updated":"2026-05-27T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-05-27-a-new-register-allocator-for-zjit\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Aaron Patterson"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-05-27-a-new-register-allocator-for-zjit"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"One engine, many tools \u2014 Introducing Rubydex","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-05-12-one-engine-many-tools\/","rel":"alternate","type":"text\/html","title":"One engine, many tools \u2014 Introducing Rubydex"}},"published":"2026-05-12T00:00:00+00:00","updated":"2026-05-12T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-05-12-one-engine-many-tools\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Vinicius Stock"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-05-12-one-engine-many-tools"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Hitting a Reverted Breaking Change in Rust","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-04-20-hitting-a-reverted-breaking-change-in-rust\/","rel":"alternate","type":"text\/html","title":"Hitting a Reverted Breaking Change in Rust"}},"published":"2026-04-20T00:00:00+00:00","updated":"2026-04-20T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-04-20-hitting-a-reverted-breaking-change-in-rust\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Alan Wu"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-04-20-hitting-a-reverted-breaking-change-in-rust"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Using Perfetto in ZJIT","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-03-27-using-perfetto-in-zjit\/","rel":"alternate","type":"text\/html","title":"Using Perfetto in ZJIT"}},"published":"2026-03-27T00:00:00+00:00","updated":"2026-03-27T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-03-27-using-perfetto-in-zjit\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Max Bernstein"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-03-27-using-perfetto-in-zjit"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Engineering Rigor in the AI Age: Building a Benchmark You Can Trust","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-03-18-engineering-rigor-in-the-ai-age-building-a-benchmark-you-can-trust\/","rel":"alternate","type":"text\/html","title":"Engineering Rigor in the AI Age: Building a Benchmark You Can Trust"}},"published":"2026-03-18T00:00:00+00:00","updated":"2026-03-18T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-03-18-engineering-rigor-in-the-ai-age-building-a-benchmark-you-can-trust\/","content":{"@attributes":{"type":"html"}},"author":{"name":"[\"Eileen Alayce\"]"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-03-18-engineering-rigor-in-the-ai-age-building-a-benchmark-you-can-trust"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"How ZJIT removes redundant object loads and stores","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-03-18-how-zjit-removes-redundant-object-loads-and-stores\/","rel":"alternate","type":"text\/html","title":"How ZJIT removes redundant object loads and stores"}},"published":"2026-03-18T00:00:00+00:00","updated":"2026-03-18T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-03-18-how-zjit-removes-redundant-object-loads-and-stores\/","content":{"@attributes":{"type":"html"}},"author":{"name":"Jacob Denbeaux"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-03-18-how-zjit-removes-redundant-object-loads-and-stores"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Faster bundler","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2026-03-09-faster-bundler\/","rel":"alternate","type":"text\/html","title":"Faster bundler"}},"published":"2026-03-09T00:00:00+00:00","updated":"2026-03-09T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2026-03-09-faster-bundler\/","content":{"@attributes":{"type":"html"}},"author":{"name":"[\"Edouard Chin\", \"Eileen Alayce\"]"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2026-03-09-faster-bundler"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"ZJIT is now available in Ruby 4.0","link":{"@attributes":{"href":"https:\/\/railsatscale.com\/2025-12-24-launch-zjit\/","rel":"alternate","type":"text\/html","title":"ZJIT is now available in Ruby 4.0"}},"published":"2025-12-24T00:00:00+00:00","updated":"2025-12-24T00:00:00+00:00","id":"https:\/\/railsatscale.com\/2025-12-24-launch-zjit\/","content":{"@attributes":{"type":"html"}},"author":{"name":"[\"Max Bernstein\"]"},"category":[{"@attributes":{"term":"posts"}},{"@attributes":{"term":"2025-12-24-launch-zjit"}}],"summary":{"@attributes":{"type":"html"}}}]}