This month has been productive. I spent some time on the West Cost of New Zealand with my family enjoying a lack of internet and daily lake swimming.
A fruitful collaboration between Canterbury University, Courtney Bracefield and myself, we have updated the Programming Dojo, a website for school students to learn more about programming languages.
This site hosts a number of fun tools, including a register machine interpreter and a truth table generator. You can also download and print out the programming language posters.
Rack is a critical piece of infrastructure in most Ruby web applications. For almost 5 years, Rack has not had a non-patch level release. In the past two months, many useful pull requests have been merged. We have removed the website which was sevearly out of date, and started working on updated documentation.
As you can imagine, the recent v2.1 release which included many unreleased changes on the master branch, caused a bit of a headache, including breaking SideKiq and ActiveStorage. The next release, v2.2 will include almost all outstanding pull requests along with improvements to efficiency and memory usage.
Big thanks to Aaron Patterson who has managed the releases and Jeremy Evans who has helped triage issues and brought an extra dimension to the future of Rack.
This month saw the release of Falcon v0.35 which brings the new
falcon host and
falcon virtual commands.
This release incorporates updates to async-container, which provides abstractions for parallelism in Ruby using either multi-process (CRuby) or multi-thread (JRuby/TruffleRuby). Graceful reloading and restarting are supported, along with the systemd process readiness protocol for better system integration.
This command is the designated entry point for hosting a web application in production. It opportunistically uses
GC.compact and application pre-loading to reduce memory usage. It uses a
falcon.rb configuration file which defines all services, which can include things like process supervisors, watchdog timers, background job processing, etc.
Best practice virtual hosting of multiple applications requires a front-end proxy/load balancer, and a HTTP to HTTPS redirection.
falcon virtual will launch and manage
falcon redirect, along with
falcon host for each individual application.
This work is supported by my GitHub sponsors. If you are a company and you depend on Ruby, I invite you to support my work. I also provide commercial support agreements and contracting for businesses that want to improve their infrastructure using Falcon and Async.