DEV Community

Cover image for Stability
Patrick Böker
Patrick Böker

Posted on

Stability

It's been three years since I announced the Rakudo CI bot project (then still called the Raku CI bot) I am working on and almost two years since I last published a grant report. It's high time to publish another. But in this post I want to focus on a milestone that's not part of the grant: Stability.

In my last two reports (6, 7) I started added a paragraph dedicated solely to bugs I found and fixed in third party components. Quoting one of those reports:

I do hope that instead of evading bugs in third party software by utilizing workarounds or switching the library, but instead golfing, reporting and fixing bugs, the quality of our software ecosystem will improve and future users will be able to enjoy a more reliable ecosystem.

I had less time working on the CI bot than I liked (one of the happy reasons being my families head count increasing). But I did not expect that getting the bot stable would take me two more years, 39 pull requests, two problem-solving issues and a dozen more bug reports that were solved by others. In the last year when I was asked what my go-to programming language of choice was, I would say "Raku. But I honestly can't recommend using it yet. It's lacking in stability."

Over the course of the last years the CI bot always somehow worked, but within a few minutes, at most one or two hours after starting it, it would:

  • Segfault in multiple ways
  • Deadlock in multiple ways
  • Infini-loop
  • Error out in various ways (and - depending on the error class - recover. Remember that stability was one of the key goals of the CI bot.)

Well, I'm happy to report, that since last week the CI bot manages to run for multiple days without dying and without logging a single unexpected error.
To be honest it still manages to hit an out of memory condition roughly every two days on a system with 4GB of RAM. This is worth looking into, but not the kind of failure that makes me not recommend using Raku in general.

Lets look at the dependencies of this project (showing only the larger ones):

  • Cro::HTTP
    • IO::Socket::Async::SSL
  • Cro::WebApp
  • LibXML
  • OO::Monitors
  • Red
    • DB::Pg
  • Log::Async
  • JSON::JWT
    • OpenSSL
  • YAMLish
  • WebService::GitHub
    • HTTP::Tiny
    • IO::Socket::SSL

So when you want to build an application that

  • has a web frontend,
  • uses PostgreSQL,
  • sends webrequests
  • including uploading larger files and
  • using XML and JSON APIs and
  • has things happening concurrently,

I can now recommend Raku as a language to do so.

Yay! \o/

The Bug Rooster

Do note that not all of the below PRs are merged yet. I'll keep pushing to get the remaining lot merged in due time.

Cro

Red

Rakudo

MoarVM

Other

Top comments (0)