Raku Language Documentation

Tutorials, general reference, migration guides and meta pages for the Raku language.

At the beginning

Brief introduction Using Raku™ official documentation
About the docs How to contribute to Raku and to the documents, how to generate the docs locally
Raku™ by example 101 A basic introductory example of a Raku program
Filename extensions The extensions recommended for files with Raku content.

Migration guides

Perl to Raku guide - in a nutshell How do I do what I used to do? (Raku in a nutshell)
Haskell to Raku - nutshell Learning Raku from Haskell, in a nutshell: what do I already know?
JavaScript (Node.js) to Raku - nutshell Learning Raku from Node.js, in a nutshell
Ruby to Raku - nutshell Learning Raku from Ruby, in a nutshell: what do I already know?
Perl to Raku guide - operators Operators in Perl to Raku: equivalencies and variations
Perl to Raku guide - functions Builtin functions in Perl to Raku
Perl to Raku guide - syntax Syntactic differences between Perl and Raku
Perl to Raku guide - overview How do I do what I used to do?
Perl to Raku guide - special variables A comparison of special variables in Perl and Raku
Python to Raku - nutshell Learning Raku from Python, in a nutshell


Modules How to create, use, and distribute Raku modules
Core modules Core modules that may be useful to module authors
Input/Output File-related operations
Concurrency Concurrency and asynchronous programming
Classes and objects A tutorial about creating and using classes in Raku
Iterating Functionalities available for visiting all items in a complex data structure
Regexes: best practices and gotchas Some tips on regexes and grammars
Module packages Creating module packages for code reuse
Module development utilities What can help you write/test/improve your module(s)
Grammar tutorial An introduction to grammars
Command line interface Creating your own CLI in Raku
Doing math with Raku Different mathematical paradigms and how they are implemented in this language
Creating operators A short tutorial on how to declare operators and create new ones.
CompUnits and where to find them How and when Raku modules are compiled, where they are stored, and how to access them in compiled form.
Entering unicode characters Input methods for unicode characters in terminals, the shell, and editors
Inter-process communication Programs running other programs and communicating with them

Fundamental topics

Pragmas Special modules that define certain aspects of the behavior of the code
Packages Organizing and referencing namespaced program elements
Syntax General rules of Raku syntax
Regexes Pattern matching against strings
Unicode versus ASCII symbols Unicode symbols and their ASCII equivalents
Quoting constructs Writing strings, word lists, and regexes in Raku
Subscripts Accessing data structure elements by index or key
Sets, bags, and mixes Unordered collections of unique and weighted objects in Raku
Operators Common Raku infixes, prefixes, postfixes, and more!
Metaobject protocol (MOP) Introspection and the Raku object system
System interaction Working with the underlying operating system and running applications
Performance Measuring and improving runtime or compile-time performance
Newline handling in Raku How the different newline characters are handled, and how to change the behavior
Containers A low-level explanation of Raku containers
Lists, sequences, and arrays Positional data constructs
Date and time functions Processing date and time in Raku
Exceptions Using exceptions in Raku
Type system Introduction to the type system of Raku
Grammars Parsing and interpreting text
Traits Compile-time specification of behavior made easy
Functions Functions and functional programming in Raku
Variables Variables in Raku
Object orientation Object orientation in Raku
Control flow Statements used to control the flow of execution
Input/Output the definitive guide Correctly use Raku IO
Native calling interface Call into dynamic libraries that follow the C calling convention
Statement prefixes Prefixes that alter the behavior of a statement or a set of them
Data structures How Raku deals with data structures and what we can expect from them
Raku native types Using the types the compiler and hardware make available to you
Phasers Program execution phases and corresponding phaser blocks
Hashes and maps Working with associative arrays/dictionaries/hashes
Unicode Unicode support in Raku
Contexts and contextualizers What are contexts and how to switch into them
Enumeration An example using the enum type
Numerics Numeric types available in Raku

General reference

Terms Raku terms
Glossary Glossary of Raku™ terminology
Traps to avoid Traps to avoid when getting started with Raku™
Community Information about the people working on and using Raku
Pod6 tables The good, the bad and the ugly
Pod6 An easy-to-use markup language for documenting Raku modules and programs
Testing Writing and running tests in Raku
Opener graphemes Valid opening paired delimiters
FAQ Frequently asked questions about Raku™

Advanced topics

Experimental features Preview of upcoming new language features available for user evaluation