← History

Raku 2015

The kitchen-sink language that bends to the way you think

Paradigmsmulti-paradigm, object-oriented, functional, procedural, declarative, concurrent
Typinggradual: dynamic by default, with optional static type annotations
Extensions.raku .rakumod .rakutest .rakudoc
Created byLarry Wall, the Raku community

Influenced by: Perl Python OCaml

Raku (formerly Perl 6) is a gradually typed, multi-paradigm language designed by Larry Wall to be the deliberate, decades-long redesign of Perl rather than a quick patch. It is maximalist by intent: grammars and rules for parsing, junctions and lazy lists, multiple dispatch, roles, a rich operator algebra, and first-class Unicode all live in one coherent system. It is a language, not the language — it ships with mutable syntax and the motto that there should always be more than one way to do it.

What makes it distinctive

History

Raku began life in July 2000 as Perl 6, announced by Larry Wall at the Perl Conference after the Perl community submitted hundreds of RFCs asking for everything they wished Perl could be. Wall's response was the now-famous series of Apocalypses — design documents that worked through the requests one by one — later distilled into Exegeses by Damian Conway and the running Synopses that became the de facto specification. Crucially, Perl 6 was not meant to replace Perl 5; Wall framed it as a sister language, a clean-room reimagining freed from backwards-compatibility constraints.

The redesign was famously, almost mythically, slow. An early implementation effort targeted the Parrot virtual machine, but the language's ambition repeatedly outran its tooling. The Pugs project (Audrey Tang's Haskell-based interpreter, started 2005) proved the design was implementable and pulled functional-programming sensibilities — lazy lists, immutability, strong typing — deeper into the language. Over time the effort consolidated around Rakudo, the compiler that gives the language its eventual name.

The long-promised milestone arrived on Christmas Day, 25 December 2015, with the 6.c "Christmas" release: the first official, versioned language specification with a conforming Rakudo implementation. This is the date Raku is generally said to have "appeared." By then Rakudo ran primarily on MoarVM, a virtual machine purpose-built for Raku (with secondary backends for the JVM and, historically, JavaScript), replacing the Parrot era.

For years the name Perl 6 caused real friction: newcomers assumed it was simply the next Perl, while it was in fact a different language with different semantics, and the shared brand confused adoption for both siblings. In 2019 Elizabeth Mattijsen opened a now-celebrated issue proposing a rename. In October 2019, Larry Wall approved renaming Perl 6 to Raku — "Raku" being a nod to the Rakudo compiler (and meaning, roughly, "comfort" or "ease" in Japanese). Wall blessed the change by quoting the parable of new wine and old wineskins. The use v6 pragma stayed valid, but the language had its own identity at last.

Post-rename, Raku governs itself through a community Raku Steering Council, and Rakudo ships regular releases. The toolchain settled into a friendly shape: rakudo as the compiler, zef as the module installer, and the Raku ecosystem of community modules. New filename extensions (.raku, .rakumod, .rakutest, .rakudoc) replaced the old .pl6/.pm6 set, while legacy extensions kept working.

What distinguishes Raku's history is its refusal to compromise the design for the schedule. Wall's stated philosophy — "we decided it would be better to fix the language than fix the user" — produced a language that absorbed ideas from Perl's pragmatism, Haskell's laziness and types, Smalltalk and Ruby's object models, and the parsing-grammar tradition, and welded them into one expressive whole. It arrived late, but it arrived as a complete and unusually internally consistent design.

Resources

See it in Code Compare →