Things I like about Raku and things I don't

The pros:

Designed for humans

Audrey Tang coined the phrase that Raku is optimised for fun, or -Ofun for short. In an age of AI and vibecoding, something that's explicitly designed for the programmer's comfort and expressiveness instead of a LLM's is exactly what we need. It also inherits Perl's "more than one way to do things" philosophy. I'm not saying Raku or its community is inherently anti-AI or that LLM's can't generate it, it just happens to be designed in an age before that.

The modules

The ecosystem isn't the biggest of course but what is there is high quality and the people making them tend to be pretty cracked from what I've seen. And there's always the option of Inline::Perl5 if there isn't a Raku module for something.

The features

However you don't need to use third-party modules for a lot of things you would with Perl, because it's all built into the language. I generally prefer this over a small language that you have to extend, like Lua or Scheme. Often there's multiple different implementations of something with no consensus what to use. But Raku is really an "everything and the kitchen sink" language.

It's easy to use C libraries and such with NativeCall, there's great concurrency and the grammars are an unique and powerful feature. It's the best language to deal with text.

The addition of static types is an improvement over Perl in my opinion and the Rat type is a great feature, not having to worry about floating point errors.

Then there's the Unicode support, some people may think using Unicode in variable names or having Unicode operators is cursed but I think it's neat. As well as being able to use proper Unicode math symbols for groups for example.

The community

I don't have too much experience with the community yet but so far it's pretty chill and LGBT-friendly too.

The zef package manager

It's nice to work with and I find it easy to submit new packages, it does most of the work for you.


The cons:

The zef package manager

On the other hand, I generally prefer that you can manage a programming language's packages with your system's own package manager. With Perl you have the choice of doing this or using something like cpanm. Technically Raku has raku-install-dist but it isn't really done. I think this can be attributed to Raku's lack of popularity though. You also kinda have less system integration with binaries going to /usr/share/perl6/site/bin instead of /usr/bin but this is fixed by just adding it to your $PATH. zef is also slow. Which leads me to...

Raku is slow

For a lot of things it's fast enough once it gets started but the startup time is the biggest problem. For example for programs where the objective is to print something and do it as fast as possible, like a neofetch or cowsay type of program, I'd pick Perl or Python or anything else really. You couldn't use Raku in your shell's rc without getting annoyed. Hopefully this will get better in the future.

Program distribution

Let's say I made a game in Raku, it's going to be a tough sell to get someone to install the interpreter just to play my game. Currently there's no way to make self-contained Raku binaries. You could solve this with an AppImage but this still leaves Windows and macOS.