Implementing a Game Boy emulator in Ruby
(sacckey.dev)
I created a Game Boy emulator in Ruby and released it as a gem called rubyboy! (I’d be happy if you could give it a star!)
I created a Game Boy emulator in Ruby and released it as a gem called rubyboy! (I’d be happy if you could give it a star!)
Ruby “Thread Contention” Is Simply GVL Queuing
(island94.org)
For the longest time, I’ve misunderstood the phrase “thread contention”. It’s a little embarrassing that given I’m the author of GoodJob (👍) and a maintainer of Concurrent Ruby and have been doing Ruby and Rails stuff for more than a decade. But true.
For the longest time, I’ve misunderstood the phrase “thread contention”. It’s a little embarrassing that given I’m the author of GoodJob (👍) and a maintainer of Concurrent Ruby and have been doing Ruby and Rails stuff for more than a decade. But true.
Ruby Source Parsing
(alchemists.io)
One powerful tool in your debugging arsenal is the ability to quickly obtain an object’s source location and/or the original source code itself.
One powerful tool in your debugging arsenal is the ability to quickly obtain an object’s source location and/or the original source code itself.
Ruby Falcon is 2x faster than asynchronous Python, as fast as Node.js
(reddit.com)
Ruby Falcon is 2x faster than asynchronous Python, as fast as Node.js, and slightly slower than Go. Moreover, the Ruby code doesn’t include async/await spam.
Ruby Falcon is 2x faster than asynchronous Python, as fast as Node.js, and slightly slower than Go. Moreover, the Ruby code doesn’t include async/await spam.
Better Know a Ruby Thing: Singleton Classes
(noelrappin.com)
It is time to Better Know what is perhaps the Ruby-iest of Ruby things, a feature that didn’t even have an official name for several years, despite being critical to Ruby’s Object-Oriented semantics. (It only just now occurs to me that there was no official name in English, I wonder what the Japanese name for it was…).
It is time to Better Know what is perhaps the Ruby-iest of Ruby things, a feature that didn’t even have an official name for several years, despite being critical to Ruby’s Object-Oriented semantics. (It only just now occurs to me that there was no official name in English, I wonder what the Japanese name for it was…).
Supercharge SQLite with Ruby Functions
(julik.nl)
An interesting twist in my recent usage of SQLite was the fact that I noticed my research scripts and the database intertwine more. SQLite is unique in that it really lives in-process, unlike standalone database servers. There is a feature to that which does not get used very frequently, but can be indispensable in some situations.
An interesting twist in my recent usage of SQLite was the fact that I noticed my research scripts and the database intertwine more. SQLite is unique in that it really lives in-process, unlike standalone database servers. There is a feature to that which does not get used very frequently, but can be indispensable in some situations.
The Mythical IO-Bound Rails App
(byroot.github.io)
When the topic of Rails performance comes up, it is commonplace to hear that the database is the bottleneck, so Rails applications are IO-bound anyway, hence Ruby performance doesn’t matter that much, and all you need is a healthy dose of concurrency to make your service scale.
When the topic of Rails performance comes up, it is commonplace to hear that the database is the bottleneck, so Rails applications are IO-bound anyway, hence Ruby performance doesn’t matter that much, and all you need is a healthy dose of concurrency to make your service scale.
The Mythical IO-Bound Rails App
(byroot.github.io)
When the topic of Rails performance comes up, it is commonplace to hear that the database is the bottleneck, so Rails applications are IO-bound anyway, hence Ruby performance doesn’t matter that much, and all you need is a healthy dose of concurrency to make your service scale.
When the topic of Rails performance comes up, it is commonplace to hear that the database is the bottleneck, so Rails applications are IO-bound anyway, hence Ruby performance doesn’t matter that much, and all you need is a healthy dose of concurrency to make your service scale.
Optimizing Ruby's JSON, Part 7
(byroot.github.io)
In the previous post, we started covering some parser optimizations. There’s just a handful more to cover until we reached what’s the state of the currently released version of ruby/json.
In the previous post, we started covering some parser optimizations. There’s just a handful more to cover until we reached what’s the state of the currently released version of ruby/json.
Glimmer: DSL Framework for Ruby GUI and More
(github.com/AndyObtiva)
DSL Framework consisting of a DSL Engine and a Data-Binding Library used in Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), Glimmer DSL for Opal (Pure Ruby Web GUI), Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development GUI Library), Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library), Glimmer DSL for GTK (Rub…
DSL Framework consisting of a DSL Engine and a Data-Binding Library used in Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), Glimmer DSL for Opal (Pure Ruby Web GUI), Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development GUI Library), Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library), Glimmer DSL for GTK (Rub…
A visual demo of Ruby's lazy enumerator
(joyofrails.com)
In this article, we'll explore a simple visual trick to help understand how lazy enumeration works in Ruby.
In this article, we'll explore a simple visual trick to help understand how lazy enumeration works in Ruby.
A visual demo of Ruby's lazy enumerator
(joyofrails.com)
In this article, we'll explore a simple visual trick to help understand how lazy enumeration works in Ruby.
In this article, we'll explore a simple visual trick to help understand how lazy enumeration works in Ruby.
Optimizing Ruby's JSON, Part 5
(byroot.github.io)
In the previous post, we showed how we eliminated two malloc/free pairs of calls when generating small JSON documents, and how that put us ahead of Oj when reusing the JSON::State object.
In the previous post, we showed how we eliminated two malloc/free pairs of calls when generating small JSON documents, and how that put us ahead of Oj when reusing the JSON::State object.
HTML_slice: Enable Ruby classes the ability to generate reusable pieces of HTML
(github.com/henrique-ft)
Enable Ruby classes the ability to generate reusable pieces of html
Enable Ruby classes the ability to generate reusable pieces of html
Ruby 3.4 Highlights
(sinjakli.co.uk)
Alright, you know the drill. The Ruby team do the hard work of putting together a new version packed with features and I pick my favourites and write about them.
Alright, you know the drill. The Ruby team do the hard work of putting together a new version packed with features and I pick my favourites and write about them.
Dissecting Puma: Anatomy of a Ruby Web Server
(dansvetlov.me)
Puma is the most popular1 web server for running Ruby applications. If you’ve recently started working on a new Rails application, chances are you’re using Puma to serve HTTP traffic, as it is the default Ruby on Rails server. Puma has stood the test of time, having gone through three major Ruby versions and been around for over 15 years, making it a treasure trove of interesting and mature design decisions.
Puma is the most popular1 web server for running Ruby applications. If you’ve recently started working on a new Rails application, chances are you’re using Puma to serve HTTP traffic, as it is the default Ruby on Rails server. Puma has stood the test of time, having gone through three major Ruby versions and been around for over 15 years, making it a treasure trove of interesting and mature design decisions.
Lightstorm: Minimalistic Ruby Compiler
(llvm.org)
Some time ago I was talking about an ahead-of-time Ruby compiler. We started the project with certain goals and hypotheses in mind, and while the original compiler is at nearly 90% completion, there are still those other 90% that needs to be done.
Some time ago I was talking about an ahead-of-time Ruby compiler. We started the project with certain goals and hypotheses in mind, and while the original compiler is at nearly 90% completion, there are still those other 90% that needs to be done.
Optimizing Ruby's JSON, Part 4
(byroot.github.io)
In the previous post, we established that as long as ruby/json wasn’t competitive on micro-benchmarks, public perception wouldn’t change. Since what made ruby/json appear so bad on micro-benchmarks was its setup cost, we had to find ways to reduce it further.
In the previous post, we established that as long as ruby/json wasn’t competitive on micro-benchmarks, public perception wouldn’t change. Since what made ruby/json appear so bad on micro-benchmarks was its setup cost, we had to find ways to reduce it further.
Ruby-refrigerator: Freeze all core Ruby classes
(github.com/jeremyevans)
Refrigerator offers an easy way to freeze all ruby core classes and modules. It’s designed to be used in production and when testing to make sure that no code is making unexpected changes to core classes or modules at runtime.
Refrigerator offers an easy way to freeze all ruby core classes and modules. It’s designed to be used in production and when testing to make sure that no code is making unexpected changes to core classes or modules at runtime.
Peephole optimizations: adding `opt_respond_to` to the Ruby VM, part 4
(jpcamara.com)
In The Ruby Syntax Holy Grail: adding opt_respond_to to the Ruby VM, part 3, I found what I referred to as the “Holy Grail” of Ruby syntax. I’m way overstating it, but it’s a readable, sequential way of viewing how a large portion of the Ruby syntax is compiled.
In The Ruby Syntax Holy Grail: adding opt_respond_to to the Ruby VM, part 3, I found what I referred to as the “Holy Grail” of Ruby syntax. I’m way overstating it, but it’s a readable, sequential way of viewing how a large portion of the Ruby syntax is compiled.
RubyConf 2024: Cloud Native Buildpack Hackday (and other Ruby deploy tools, too)
(schneems.com)
I’ve spent the last decade+ working on Ruby deploy tooling, including (but not limited to) the Heroku classic and upcoming Cloud Native Buildpack. If you want to contribute to a Ruby deployment or packaging tool (even if it’s not one I maintain), I can help. If you want to learn more about Cloud Native Buildpacks (CNBs) and maybe get a green square on GitHub (or TWO!), keep reading for more resources.
I’ve spent the last decade+ working on Ruby deploy tooling, including (but not limited to) the Heroku classic and upcoming Cloud Native Buildpack. If you want to contribute to a Ruby deployment or packaging tool (even if it’s not one I maintain), I can help. If you want to learn more about Cloud Native Buildpacks (CNBs) and maybe get a green square on GitHub (or TWO!), keep reading for more resources.
Ruby 3.4.0
(ruby-lang.org)
We are pleased to announce the release of Ruby 3.4.0. Ruby 3.4 adds it block parameter reference, change Prism as default parser, adds Happy Eyeballs Version 2 support to socket library, improves YJIT, adds Modular GC, and so on.
We are pleased to announce the release of Ruby 3.4.0. Ruby 3.4 adds it block parameter reference, change Prism as default parser, adds Happy Eyeballs Version 2 support to socket library, improves YJIT, adds Modular GC, and so on.
News for Ruby 3.4.0
(ruby-lang.org)
This document is a list of user-visible feature changes since the 3.3.0 release, except for bug fixes.
This document is a list of user-visible feature changes since the 3.3.0 release, except for bug fixes.
The intricacies of implementing memoization in Ruby
(denisdefreyne.com)
In the never-ending quest to write code that is performant, we have many techniques at our disposal. One of those techniques is memoization,111 That’s memoization, not memorization — there’s no “r”! which boils down to storing the results of expensive function calls, so that these expensive functions do not need to be called more than absolutely necessary.
In the never-ending quest to write code that is performant, we have many techniques at our disposal. One of those techniques is memoization,111 That’s memoization, not memorization — there’s no “r”! which boils down to storing the results of expensive function calls, so that these expensive functions do not need to be called more than absolutely necessary.
Litestack: All your data infrastructure, in one Ruby gem
(github.com/oldmoe)
Litestack is a Ruby gem that provides both Ruby and Ruby on Rails applications an all-in-one solution for web application data infrastructure. It exploits the power and embeddedness of SQLite to deliver a full-fledged SQL database, a fast cache , a robust job queue, a reliable message broker, a full text search engine and a metrics platform all in a single package.
Litestack is a Ruby gem that provides both Ruby and Ruby on Rails applications an all-in-one solution for web application data infrastructure. It exploits the power and embeddedness of SQLite to deliver a full-fledged SQL database, a fast cache , a robust job queue, a reliable message broker, a full text search engine and a metrics platform all in a single package.
Optimizing Ruby's JSON, Part 1
(byroot.github.io)
I was recently made maintainer of the json gem, and aside from fixing some old bugs, I focused quite a bit on its performance, so that it is now the fastest JSON parser and generator for Ruby on most benchmarks.
I was recently made maintainer of the json gem, and aside from fixing some old bugs, I focused quite a bit on its performance, so that it is now the fastest JSON parser and generator for Ruby on most benchmarks.
Ruby Video – On a mission to index all Ruby conferences
(rubyvideo.dev)
On a mission to index all Ruby conferences
On a mission to index all Ruby conferences