Sign in

Yaroslav Markin

@yaroslav.bsky.social
38 followers 121 following 44 posts

@yaroslav elsewhere. yaroslav.io

PostsRepliesMedia
Yaroslav Markin @yaroslav.bsky.social · 02/09/2026
Also, updated all benchmarks, old and new.
000
Yaroslav Markin @yaroslav.bsky.social · 02/09/2026
Kino, the ractor server, 0.6.0, is out with native HTTP/2! Surprising benchmark results: +79% over HTTP/1.1 on the same server, 2× over TLS, +50% vs nginx-terminated h2.
100
Yaroslav Markin @yaroslav.bsky.social · 01/09/2026
And if you maintain a gem, try Audition on your own code. You might get your code running under Ractors on the cheap!
000
Yaroslav Markin @yaroslav.bsky.social · 01/09/2026
Audition is written by AI agents, and every now and then I have it re-learn its rules from the latest ractorization work in Rails and the Ractor team's findings. If you have better recipes, please send a PR.
100
Yaroslav Markin @yaroslav.bsky.social · 01/09/2026
That's why I'm invested in Audition. I believe the answer is a tool to analyze your code, statically and dynamically, and tell you whether it runs under Ractors; most importantly, fix most of the problems automatically; and, for everything else, give detailed instructions on what to try.
100
Yaroslav Markin @yaroslav.bsky.social · 01/09/2026
I suspect that for most gem maintainers, ractorizing a gem looks hard enough that it's simply not worth it. And that is how the Ractor dream could end before it even begins: a Ractor-ready Rails, a handful of core gems, and that's it.
100
Yaroslav Markin @yaroslav.bsky.social · 01/09/2026
But Rails is just a bunch of gems, and most production Rails applications rely on dozens, if not hundreds, of third-party gems. Even if you're running a Ractor-ready Rails, your gems need to be Ractor-ready too.
100
Yaroslav Markin @yaroslav.bsky.social · 01/09/2026
On gem Audition. github.com/yaroslav/aud... Ractors are probably the topic for Ruby in 2026, if we don't count the AI boom for a second. It looks like they will finally be stable in Ruby 4.1. The main battle now is Ractor-safe Rails, and many amazing engineers are on it.
github.com
GitHub - yaroslav/audition: Auditions Ruby scripts, gems, Rack apps, and Rails applications for the ability to run under Ractors: static analysis of Ractor-isolation violations plus dynamic in-Ractor ...
Auditions Ruby scripts, gems, Rack apps, and Rails applications for the ability to run under Ractors: static analysis of Ractor-isolation violations plus dynamic in-Ractor probing, with explanation...
100
Yaroslav Markin @yaroslav.bsky.social · 29/08/2026
Kino (the ractor server) 0.5.0 is out with optimizations from Patrik Wenger: on some requests, there is now an up to 40% performance gain because of sharded I/O mode. github.com/yaroslav/kin...
github.com
Release Kino 0.5.0 · yaroslav/kino
Add opt-in io_shards true: accepted HTTP connections can run on current-thread Tokio I/O shards instead of Tokio's shared multi-thread runtime, reducing scheduler contention on very fast handlers. ...
010
Yaroslav Markin @yaroslav.bsky.social · 22/08/2026
Audition (auditions Ruby code and Rails applications for the ability to run under Ractors: static analysis, dynamic probing, with explanations and fixes!) just got updated with the latest Ractor-ization solutions from Rails `main`. github.com/yaroslav/aud...
github.com
GitHub - yaroslav/audition: Auditions Ruby scripts, gems, Rack apps, and Rails applications for the ability to run under Ractors: static analysis of Ractor-isolation violations plus dynamic in-Ractor ...
Auditions Ruby scripts, gems, Rack apps, and Rails applications for the ability to run under Ractors: static analysis of Ractor-isolation violations plus dynamic in-Ractor probing, with explanation...
000
Yaroslav Markin @yaroslav.bsky.social · 20/08/2026
Lots of monitoring- and ops-related updates to Kino, a high-performance Ractor server for Ruby 4. Per-worker stats and metrics, control plane, ready/live probes, stuck-worker quarantine, lifecycle hooks. github.com/yaroslav/kino
github.com
GitHub - yaroslav/kino: A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front-end and Ractor-parallel Ruby workers and threaded fallback mode.
A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front-end and Ractor-parallel Ruby workers and threaded fallback mode. - yaroslav/kino
000
Yaroslav Markin @yaroslav.bsky.social · 20/08/2026
Just updated bundlebun (a gem including a fast JavaScript runtime, package manager, and builder for Ruby and Rails applications) to Bun 1.4.0, the Claude-Rust-rewrite! github.com/yaroslav/bun... If you are afraid to test it out, just make sure to freeze bundlebun to 0.5.0.1.3.14.
github.com
GitHub - yaroslav/bundlebun: bundlebun bundles Bun, a fast JavaScript runtime, package manager, and builder, with your Ruby and Rails applications
bundlebun bundles Bun, a fast JavaScript runtime, package manager, and builder, with your Ruby and Rails applications - yaroslav/bundlebun
010
Yaroslav Markin @yaroslav.bsky.social · 28/07/2026
- It has file APIs for most operations, so you can read data faster with memory-mapping and skip stringifying it. - It is a joy to debug with: friendly, detailed error messages and document statistics.
000
Yaroslav Markin @yaroslav.bsky.social · 28/07/2026
- It does splicing edits on the fly and supports JSON patch/merge. - It has JSON lines/NDJSON support. - It has fast validation mode and it can minify and format JSON without parsing.
100
Yaroslav Markin @yaroslav.bsky.social · 28/07/2026
- Faster at parsing and generation than json and other gems. - It has a drop-in support mode for gem json, and Rails support mode which significantly accelerates Rails JSON operations. - It has a lazy API: parses values only when you touch them. - It has partial parsing / JSON pointer support.
100
Yaroslav Markin @yaroslav.bsky.social · 28/07/2026
Meet gem nosj, gem json's evil twin. github.com/yaroslav/nos... Faster, drop-in support for gem json and Rails, lazy and partial parsing, splicing, JSON lines. Validation, minification and formatting without parsing. File APIs with memory mapping. Friendly error messages and doc statistics. 🧵
github.com
GitHub - yaroslav/nosj-ruby: gem nosj is a very fast, json-gem-compatible JSON parser and generator for Ruby: Rust and SIMD via the first-party nosj crate, partial parsing via JSON Pointer, lazy docum...
gem nosj is a very fast, json-gem-compatible JSON parser and generator for Ruby: Rust and SIMD via the first-party nosj crate, partial parsing via JSON Pointer, lazy documents that parse only what ...
110
Yaroslav Markin @yaroslav.bsky.social · 20/07/2026
Warnings: - It's vibe coded. - It's not magic—don't expect the auto-fixer to make Sinatra Ractor-ready.
000
Yaroslav Markin @yaroslav.bsky.social · 20/07/2026
It also ships a Skill for agents: the idea is that an agent (Claude Code and friends) can drive the tool to help you Ractorize—audit, fix, verify, repeat.
100
Yaroslav Markin @yaroslav.bsky.social · 20/07/2026
Some of the checks and auto-fixes were trained on the real thing—actual Ractor-izing commits from Rails core.
100
Yaroslav Markin @yaroslav.bsky.social · 20/07/2026
I've vibe coded a useful thing for Rubyists over the weekend. Audition is a linter/fixer that gets your code Ractor-ready: static analysis powered by Shopify's rubydex, plus dynamic probes that actually run your code inside Ractors and report what breaks. github.com/yaroslav/audition
github.com
GitHub - yaroslav/audition: Auditions Ruby scripts, gems, Rack apps, and Rails applications for the ability to run under Ractors: static analysis of Ractor-isolation violations plus dynamic in-Ractor ...
Auditions Ruby scripts, gems, Rack apps, and Rails applications for the ability to run under Ractors: static analysis of Ractor-isolation violations plus dynamic in-Ractor probing, with explanation...
110
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
Ractors are experimental in Ruby 4.0, and so is Kino. This is software for experimenters, but one can dream of Ractor support in Rails. github.com/yaroslav/kino
github.com
GitHub - yaroslav/kino: A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front-end and Ractor-parallel Ruby workers and threaded fallback mode.
A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front-end and Ractor-parallel Ruby workers and threaded fallback mode. - yaroslav/kino
000
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
So is Kino useless for Rails? Well, Rails runs on Kino today in :threaded mode — parallel for I/O, GVL-serialized for CPU; you just don't get the numbers above.
100
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
Kino also ships `kino --check` to find Ractor incompatibilities for you.
100
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
Rails can't run on Ractors though, blocked upstream. Rails holds global mutable state a non-main Ractor can't touch → Ractor::IsolationError. Most gems aren't Ractor-safe yet either.
100
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
Instead of forking a process per core (a full app copy each), Kino runs your Rack app on every core in one small process. Rust (tokio/hyper) owns the network; parallel Ractors run your Ruby.
100
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
Performance: when your app *IS* fully Ractor-shareable, on AWS (Ruby 4.0 + YJIT) vs a Puma fork cluster: • ~15× less RAM — 80 MB vs 1,256 MB • +32% on pure CPU • 1.5–2× on I/O-light routes
100
Yaroslav Markin @yaroslav.bsky.social · 15/06/2026
Rubyists who experiment with Ractors, put them to work! Meet Kino, an experimental performant Ractor web server (with a threading fallback). github.com/yaroslav/kino Note that Ractors are experimental, and so is this server. Rails cannot run on Ractors yet, but it will, sometime in the future. 🧵
github.com
GitHub - yaroslav/kino: A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front-end and Ractor-parallel Ruby workers and threaded fallback mode.
A high-performance Ractor web server for Ruby 4.0+: Rack 3-based, with a Rust Tokio/Hyper front-end and Ractor-parallel Ruby workers and threaded fallback mode. - yaroslav/kino
120
Yaroslav Markin @yaroslav.bsky.social · 11/06/2026
I am finally a Ruby contributor, I guess. In the next version, Array#join—most of the time—would work up to 2.5x faster. github.com/ruby/ruby/pu...
github.com
Speed up Array#join with a byte-copy fast path [Feature #22094] by yaroslav · Pull Request #17240 · ruby/ruby
Duplicating from https://bugs.ruby-lang.org/issues/22094, please let me know if this is excessive. Original idea What if we treat Array#join(" "), Array#join("\n") and Array#joi...
020
Yaroslav Markin @yaroslav.bsky.social · 19/05/2026
AI features include: two chunking primitives: heading-based with breadcrumbs and per-chunk char/word counts, and sliding-window with overlap for size-bounded chunks; block-aware or word-aware truncation for context-window budgeting; Markdown-to-Markdown pipeline.
000
Yaroslav Markin @yaroslav.bsky.social · 19/05/2026
Written in Rust. CommonMark+GFM. Features: strong security with host/protocol whitelists for links and images, syntax highlighting, frontmatter, ToC, plain text export, structured extraction of headings/images/links/code, statistics with char/word count and language detection, emoji shortcodes.
100
Yaroslav Markin @yaroslav.bsky.social · 19/05/2026
Markdown is the lingua franca of the AI internet. Meet Inkmark, a very fast Markdown processor for Ruby, with features galore, and first-class support for LLM/RAG pipelines. 🧵 yaroslav.io/posts/inkmar...
yaroslav.io
Inkmark: a very fast, feature-packed, AI-first Markdown gem for Ruby
Markdown is the lingua franca of the AI internet. Inkmark is a very fast Rust-backed Ruby Markdown gem, has features galore, and comes with first-class support for LLM/RAG pipelines.
111
Yaroslav Markin @yaroslav.bsky.social · 15/05/2026
Attention bundlebun users. We have version pinning for a reason. The latest version of Bun might also be the last truly stable version of Bun in the nearest future. Pin it like this: # Gemfile gem "bundlebun", "= 0.5.0.1.3.14" To freeze the Bun version.
010
Yaroslav Markin @yaroslav.bsky.social · 11/05/2026
Unlike other integrations, this one is fully featured (llms.txt *and* markdown *and* link rel *and* content negotiation). Instead of the "one size fits all" config that fails in real-world applications, it uses the bottom-to-top approach where you fully customize your markdown export pages.
000
Yaroslav Markin @yaroslav.bsky.social · 11/05/2026
Meet astro-slop, the most complete and flexible @astro.build integration for LLMs and generating markdown. Features include per-page .md siblings, llms.txt/llms-full.txt, link injection and content negotiation. github.com/yaroslav/ast... Support, share, and try it out on your Astro sites! 🧵
github.com
GitHub - yaroslav/astro-slop: The most complete and flexible Astro integration for LLMs and generating markdown versions of pages. Per-page .md siblings, llms.txt index, content negotiation, and link ...
The most complete and flexible Astro integration for LLMs and generating markdown versions of pages. Per-page .md siblings, llms.txt index, content negotiation, and link rel=alternate. - yaroslav/a...
100
Yaroslav Markin @yaroslav.bsky.social · 08/05/2026
(and thank-you-very-much goes to Claude Code and Codex)
000
Yaroslav Markin @yaroslav.bsky.social · 08/05/2026
It's a plug-and-play Fiber Scheduler that is designed to make your fibers faster out of the box. Works with pure Ruby code and with gem async. Ask me about Fiber Schedulers, if you're interested.—apparently this is still arcane magick for most Rubyists.
100
Yaroslav Markin @yaroslav.bsky.social · 08/05/2026
Carbon Fiber is a high performance Ruby Fiber Scheduler powered by Zig and libxev (same as used in Ghostty). I've just released a new version: updated to Zig 0.16, latest libxev. Some optimizations, too—it's now faster! (benchmarks in README) github.com/yaroslav/car...
github.com
GitHub - yaroslav/carbon_fiber: High performance Ruby Fiber Scheduler powered by Zig and libxev.
High performance Ruby Fiber Scheduler powered by Zig and libxev. - yaroslav/carbon_fiber
100
Yaroslav Markin @yaroslav.bsky.social · 07/05/2026
... MyMegaComponent.HASH.css becomes my_mega_component.HASH.css. Just something to see a nice source code and Network tab.
000
Yaroslav Markin @yaroslav.bsky.social · 07/05/2026
Astro @astro.build users, were you ever annoyed by how it names your packed assets? Now there is an integration for that: github.com/yaroslav/ast... MyComponent.astro_astro_type_script_index_0_lang.HASH.js becomes my_component.HASH.js...
github.com
GitHub - yaroslav/astro-nice-asset-filenames: Astro integration for short, readable asset URLs.
Astro integration for short, readable asset URLs. Contribute to yaroslav/astro-nice-asset-filenames development by creating an account on GitHub.
100
Yaroslav Markin @yaroslav.bsky.social · 07/05/2026
The fonts used on yaroslav.io are Unifora by @yeptype.bsky.social (main font) and Berkeley Mono "TX-02" (mono) by U.S. Graphics Company. They make a great pair, WDYT? Both available as variable fonts. Unifora pricing is a steal.
yaroslav.io
Yaroslav Markin
Entrepreneur, fractional CTO, consultant
041
Yaroslav Markin @yaroslav.bsky.social · 06/05/2026
The right way to address this is to make fonts a bit ligher (20 or 50 points) when switching to/if using a dark theme. CSS variables to the rescue. Looks much better!
010
Yaroslav Markin @yaroslav.bsky.social · 06/05/2026
Did you know that if your site has a dark theme, fonts may seem bold-er than what they really are? Thanks @romanshamin.bsky.social for the hint! css-tricks.com/dark-mode-an...
css-tricks.com
Dark mode and variable fonts | CSS-Tricks
Not so long ago, we wrote about dark mode in CSS and I’ve been thinking about how white text on a black background is pretty much always harder to read than
121
Yaroslav Markin @yaroslav.bsky.social · 05/05/2026
Introducing Bundlebun: a gem that packs @bun.sh by @jarredsumner.com—runtime, package manager, build tool—right into your Gemfile, with version pinned. Plus: Rails' history with asset pipelines and JS, and why #nobuild doesn't work most of the time. yaroslav.io/posts/bundlebun-bundles-bun
yaroslav.io
Bundlebun bundles Bun, and a tour of asset pipelines and JavaScript runtimes Rails has been through
Bundlebun is a Bun bundler for Rails. The why, the how, and a tour of every asset pipeline and JavaScript runtime Rails has been through to get here.
021
Yaroslav Markin @yaroslav.bsky.social · 05/05/2026
So I've finally got a blog of my own! I'll be sure to post the articles here as well—or you can subscribe to a feed. yaroslav.io/posts In the near future, I'll mostly write about open source projects I've done lately and continue doing. Staying away from "thought leadership" BS.
yaroslav.io
Yaroslav Markin's posts
Yaroslav Markin's posts
040