Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Elizabeth Mattijsen
Mainstreaming RakuAST
Hello Glad to see you, I am Kane Lim from Hong Kong. I have over 10 years of development experience. I am writing this because your post was interesting. RakuAST reaching the default path is a significant compiler architecture milestone. The most interesting aspect is not simply replacing the backend, but creating a cleaner intermediate representation that can support future optimization passes without depending on legacy grammar internals.
Governance and The Raku Foundation
(from an original draft by Richard Hainsworth) Establishing the Raku Foundation as a legal entity is just the first step in creating an organization dedicated to supporting the Raku Programming Language, that fits into the free-wheeling world of open source software development. This article is about some of the challenges being faced by the group of volunteers attempting to do this.
A Year Later: a TRF!
Almost a year later to the day that I posted Towards a Raku Foundation I'm glad to announce there is now The Raku Foundation in its bootstrapping phase: https://raku.foundation. The problem solving issue has been closed, and now the real work can begin. I hope that this blog post shows the process that we've been through in starting the Raku Foundation. And that lessons can be learned from it for other Open Source communities wanting to follow a similar path.
Definitely How What Where, Who?
This is part thirteen in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the various introspection methods that you can use on objects in the Raku Programming Language. Note that in some documentation these methods are also referred to as Metamethods. Turtles All The Way Down In Raku everything is an object, or can be thought of as an object.
Raku Resolutions #3
This is a third follow-up on Raku Resolutions series. The third meeting was held on 21 February 2026 at 19:00 UTC. Apart from 3 Raku Steering Council members, only 1 other person attended. In the end, 7 issues were discussed within the allotted time (1 hour). After some discussion, it became clear that this issue basically has gone stale in light of the new raku.org site. Richard Hainsworth will create a new issue, after which this one can be closed.
Store Proxy Fetch
This is part twelve in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the various aspects of containers in the Raku Programming Language. Containers and binding This may come as a shock to some, but Raku really only knows about binding (:=) values. Assignment is syntactic sugar. What?
This is part eleven in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the interface method that can be provided in a class to handle calls to methods that do not actually exist in this class (or its parents). Some background Method dispatch in the Raku Programming Language is quite complicated, especially in the case of multi-dispatch.
Associative Methods
This is part ten in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the interface methods that one can implement to provide a custom Associative interface in the Raku Programming Language. Associative access is indicated by the postcircumfix { } operator (aka the "hash indexing operator").
Positional Methods
This is part nine in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the interface methods that one can implement to provide a custom Positional interface in the Raku Programming Language. Positional access is indicated by the postcircumfix [ ] operator (aka the "array indexing operator"). Some background The Positional role is really just a marker.
The second two
This is a second follow-up on Raku Resolutions series. The second meeting was held on 7 February 2026 at 19:00 UTC. Apart from 4 Raku Steering Council members, up to 5 other people attended with a true worldwide spread: local times spanning from UTC-8 to UTC+11! Thank you all for your attendance and your feedback! In the end, 2 issues were discussed within the allotted time (1 hour). Both had extensive discussions, but no immediate resoluton.
This is part eight in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the interface methods that one can provide to tweak the creation of objects in the Raku Programming Language.
Doc Mirages
This is part seven in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the final set of (non-)existing phasers in the Raku Programming Language.
This is part six in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the phasers that catch exceptions of various kinds. CATCH Many programming languages have a try / catch mechanism. Although it is true that the Raku Programming Language does have a try statement prefix, and it does have a CATCH phaser, you should generally not use both at the same time. In Raku any scope can have a single CATCH block.
Last Close, and Quitting
This is part five in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the phasers related to concurrent and async structures, and will go into some of the mechanics behind the scenes.
First Next, then Last
This is part four in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. This part will discuss the phasers related to loop structures (the code between curly braces that is being repeatedly called) But first, a statement The second episode already saw the use of the state declarator in one of the examples, without going into it much.
Hello, Goodbye
This is part three in the "Cases of UPPER" series of blog posts, describing the Raku syntax elements that are completely in UPPERCASE. The first two parts discussed the four phasers linked to execution stages of the Raku Programming Language: BEGIN, CHECK, INIT and END. This part will discuss the phasers related to scopes (aka, the code between curly braces): ENTER and LEAVE and their special versions.
INIT to an END
This is part two in the "Cases of UPPER" series of blog posts. The first part of this series discussed the two phasers in the Raku Programming Language of which the code is executed at compile time: BEGIN and CHECK. This part will discuss the two phasers that are directly connected with the runtime of a Raku program: INIT and END. INIT The INIT phaser is executed before any actual execution of a program.
Cases of UPPER
The Raku Programming Language contains more than 50 syntax elements that are completely in UPPERCASE. Why are they in uppercase? Because they indicate "Something Very Strange" going on (hence the allcaps). These syntax elements provide quite a few ways of modifying the behaviour of code execution, and interfaces to classes and objects.
The first four
This is the first follow-up on Raku Resolutions The first meeting was had on the suggested time and date: 17 January 2026 at 19:00 UTC. Apart from 4 Raku Steering Council members, up to 8 other people attended: thank you for your attendance and your feedback. In the end, 4 issues were discussed within the allotted time (1 hour) and one other was explicitely moved to a next meeting at the request of the issuer.
Raku Resolutions
It's a new year and New Year's Resolutions abound. The Raku Steering Council is not impervious to that, and has come up with one of their own: "Reduce the backlog of open Problem Solving Issues". A Little History But first a little bit of history. In 2017 when it became clear that Larry Wall would not be around much more to decide on matters related to what is now the Raku Programming Language, a problem solving repository was created. Since then 456 issues have been opened.
Raku 2025 Review
This is an updated version of the Raku Advent Post. How time flies. Yet another year has flown by. Let's first start with the technical stuff, as nerds do! Rakudo Rakudo saw about 1650 commits (MoarVM, NQP, Rakudo, doc) this year, which is about 20% less than 2024. All of these repositories now have "main" as their default branch (rather than "master"). About 58% of the Rakudo commits were in the development of RakuAST (up from 33% in 2024), of which more than 95% were done by Stefan Seifert.
PURL Support
This is part 4 in the SBOM series of blog posts While working on the SBOM::CycloneDX one of the fields caught my eye: purl. Initially I thought: "what does that have to do with our sister language"? It quickly became clear that this was about a Package URL. Deeper into the rabbit hole From the README: A purl or package URL is an attempt to standardize existing approaches to reliably identify and locate software packages.
CycloneDX Support
This is part 3 in the SBOM series of blog posts As there was no support yet in Raku for any of the SBOM standards, it was a question for which standard I should be developing: SPDX 3.0.1 or CycloneDX 1.6. For better or worse, I selected CycloneDX because it was recommended (thanks Salve!) and because it had better readable / browsable specification.
CRA and Open Source
This is part 2 in the SBOM series of blog posts To start with giving credit where credit is due: Salve J. Nilsen has been instrumental in making me aware of the oncoming Cyber Resilience Act effects. Many presentations on this subject at various open source events have been given by him in the past years, and the videos and the slides and the chats have helped me a lot in trying to get a grip on the subject matter. A large part of this blog post has been derived from those presentations.
Towards more accountability of Raku programs
Shortly after the Second Raku Core Summit in June, it became clear to me that there had been one elephant in the room that hadn't been discussed enough: the gradual enforcement of the Cyber Resilience Act in Europe. And how that would affect Open Source, and the Raku Programming Language specifically.
The Second Raku Core Summit
Some background The Raku Core Summit was the culmination of several ideas I had after the Covid lockdowns took place. Having been involved in the organization of two European conferences (with 300+ people attending), many workshops and hackathons (with up to 100+ people attending), and many open source conference booths (most notably FOSDEM, OSCON, Froscon and T-Dose). We also attended several toolchain summits, where Wendy excelled in the catering needs of the attendees.
Towards a Raku Foundation
Drifting Apart: Some History The Raku Programming Language was originally started as the next version of the Perl Programming Language (then at version 5.6.0, now at 5.40.2). Unfortunately the implementation of this next version took much longer than expected. In the eyes of many Perl users the new version also changed the character of the language, which caused a rift in the Perl community.
Debugging by REPL
This is part 2 in the REPL Avalanche blog series. The REPL distribution also offers a repl subroutine apart from a command-line interface (CLI). A call to this subroutine can be placed in source code during development of a code-base, and then allows for some ad-hoc interactive debugging features. For the purpose of fun and taste, I will be calling such a (temporary) placement of a call to the repl sub a "sprinkle".
REPL Avalanche
Sometime in early November, I decided to have a look at re-imagining the REPL (Read, Eval, Print, Loop) that is provided by default by the Raku Programming Language. Little did I know that that work would in the end result in six new distributions. Each providing some useful sub-functionality of the REPL, but also providing useful functionality outside of the REPL context.
Test coverage in practice
This is part 4 in the "Towards more coverage" blog series. The first blog post showed the basic usage of the Test::Coverage distribution. But it can do more! All code covered? If you have a situation where all of the test in a distribution cover all of the executable code, you can simplify the test file to: use Test::Coverage; must-be-complete; This will set the plan to 1 test, and mark it ok if indeed all code is covered.
Creating coverage information
This is part 3 in the "Towards more coverage" blog series. The first blog introduced the new Test::Coverage module that allows a developer to test how well the tests of a distribution actually check the code of a distribtion. The second blog delved into the development process of making the Code::Coverable distribution that provides the logic to the determine the lines in a source-file that can be covered.
Finding the coverables
This is part 2 in the "Towards more coverage" blog series. The first blog described how to get a (big) file with all of the source locations that a particular Raku program executed. But that log does not tell yet which lines could be executed, but weren't. This blog post describes the development process of the logic to find out which lines of source-code can be executed, so that it's possible to report which lines were missed.
Towards more coverage
It was sometime in November (or was it December?) last year that my attention was drawn again to a feature of MoarVM that is sadly under-documented and its existence is really only visible if you run moar without any arguments: $ moar ERROR: Missing input file.
A path to paths
The other day, not one but two people tried to use my rak module to create a custom file system search utility. And had problems getting it to work. Now, truth be told: they were the first people to use that module other than myself for the App::Rak command line interface (as described in It's time to rak!). And apparently, the use of the plumbing of App::Rak was less straightforward than I expected, specifically with regards to the way results are returned.
Raku Fall Issue Cleanup
About 3 weeks ago I thought it was time to go through the outstanding Rakudo compiler issues (an implementation of the Raku Programming Language) to see how many of them would have been fixed by now with the new Raku grammar. Why? Because we have reached 85+% of test coverage of the new Raku Grammar in roast, the official Raku test-suite. Success as defined by the number of test files that completely pass without any test failures.
The End Of p6c
In the past 2 years, module distributions in the https://raku.org that were being published through the original (but deprecated) "p6c" ecosystem, were no longer being harvested by the default "zef" harvester. But they were still being harvested by the Raku Ecosystem Archive harvester. And thus, any updates to these distributions remained visible. But this harvesting stopped with the 0.0.26 release of Ecosystem::Archive::Update.
A gaze of iterators!
This blog post provides an introduction to iterators in the Raku Programming Language. It requires some basic understanding of Raku code. One could consider the Don't fear the grepper! series as a prerequisite for this series of blog posts. Iterator Central Iterators are at the basis of every type of iteration in the Raku Programming Language, except for loop (which uses a counter, or iterates indefinitely), while and until (which iterate while a condition is True / False).
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Elizabeth
Contact Elizabeth, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack