Rakudo's behavior can be tweaked by a (growing) number of environment variables; this section attempts to
document all those currently in use. They are interpreter specific in all cases, except where some use
conventional names such as "PATH".
The underlying virtual machine is also sensitive to a series of environment variables; they are listed in
this wiki page <https://github.com/rakudo/rakudo/wiki/dev-env-vars#moarvm>.
Moduleloading
"RAKUDOLIB", "RAKULIB" (Str; src/core/Inc.pm)
"RAKUDOLIB" and "RAKULIB" append a comma-delimited list of paths to the search list for modules.
"RAKUDOLIB" is evaluated first. NOTE: These env vars were added in the Rakudo compiler in version
2020.05. The deprecated older env var "PERL6LIB" is still available.
"RAKUDO_MODULE_DEBUG" (Bool; src/Perl6/ModuleLoader.nqp)
If true, causes the module loader to print debugging information to standard error.
Errormessageverbosityandstrictness
"RAKU_EXCEPTIONS_HANDLER"
If present, the "print_exception" routine will use a class of that name to process the exception for
output. Rakudo currently ships with "Exceptions::JSON" (invoked by setting this variable to "JSON"),
to override the default output. NOTE: This env var was added in version 6.e. Early implementation
has been available in Rakudo compiler as of version 2019.12, and before that it was available as
"PERL6_EXCEPTIONS_HANDLER".
"RAKUDO_NO_DEPRECATIONS" (Bool; src/core.c/Deprecations.pm6)
If true, suppresses deprecation warnings triggered by the "is DEPRECATED" trait.
"RAKUDO_DEPRECATIONS_FATAL" (Bool; src/core.c/Deprecations.pm6)
If true, deprecation warnings become thrown exceptions.
"RAKUDO_VERBOSE_STACKFRAME" (UInt; src/core.c/Backtrace.pm6)
Displays source code in stack frames surrounded by the specified number of lines of context; for
instance "RAKUDO_VERBOSE_STACKFRAME = 1" will use one context line.
"RAKUDO_BACKTRACE_SETTING" (Bool; src/core.c/Backtrace.pm6)
Controls whether ".setting" files are included in backtraces.
Affectingprecompilation
"RAKUDO_PREFIX" (Str; src/core.c/CompUnit/RepositoryRegistry.pm6)
When this is set, Rakudo will look for the standard repositories (perl, vendor, site) in the
specified directory. This is intended as an escape hatch for build-time bootstrapping issues, where
Rakudo may be built as an unprivileged user without write access to the runtime paths in NQP's
config.
"RAKUDO_PRECOMP_DIST" (src/core.c/CompUnit/PrecompilationRepository.pm6) =item "RAKUDO_PRECOMP_LOADING"
(src/core.c/CompUnit/PrecompilationRepository.pm6) =item "RAKUDO_PRECOMP_WITH"
(src/core.c/CompUnit/PrecompilationRepository.pm6)
These are internal variables for passing serialized state to precompilation jobs in child processes.
Please do not set them manually.
"RAKUDO_LOG_PRECOMP"
If set to 1, diagnostic information about the precompilation process is emitted.
Lineeditor
"RAKUDO_LINE_EDITOR"
This specifies the preferred line editor to use; valid values are "Readline", "Linenoise",
"LineEditor", and "none". A value of "none" is useful if you want to avoid the recommendation message
upon REPL startup.
"RAKUDO_DISABLE_MULTILINE"
If set to 1, will disable multiline input for the REPL.
"RAKUDO_HIST"
This specifies the location of the history file used by the line editor; the default is
"~/.raku/rakudo-history". Before Rakudo version 2020.02 the default was "~/.perl6/rakudo-history".
If the older default file exists and the newer one does not, it will be automatically migrated.
Other
"RAKUDO_DEFAULT_READ_ELEMS"
This specifies the default number of characters to read on an LX"IO::Handle"|/type/IO::HandleX by
setting the LX"$*DEFAULT-READ-ELEMS"|/language/variables#$*DEFAULT-READ-ELEMSX dynamic variable.
"RAKUDO_ERROR_COLOR" (Bool; src/core.c/Exception.pm6)
Controls whether to emit ANSI codes for error highlighting. Defaults to true if unset, except on
Windows.
"RAKUDO_MAX_THREADS" (UInt; src/core.c/ThreadPoolScheduler.pm6)
Indicates the maximum number of threads used by default when creating a "ThreadPoolScheduler".
Defaults to 64.
"TMPDIR", "TEMP", "TMP" (Str; src/core.c/IO/Spec/)
The "IO::Spec::Unix.tmpdir" method will return $TMPDIR if it points to a directory with full access
permissions for the current user, with a fallback default of '/tmp'.
"IO::Spec::Cygwin" and "IO::Spec::Win32" use more Windows-appropriate lists which also include the
"%TEMP%" and "%TMP%" environment variables.
"PATH", "Path" (Str; src/core.c/IO/Spec/)
The "IO::Spec::Unix.path" method splits $PATH as a shell would; i.e. as a colon-separated list.
"IO::Spec::Cygwin" inherits this from "IO::Spec::Unix". "IO::Spec::Win32.path" will read the first
defined of either "%PATH%" or "%Path%" as a semicolon-delimited list.
"RAKUDO_SNAPPER"
Indicates the period in which the telemetry snapper will take a snapshot. Defaults to .1 for 10
snapshots per second.
"RAKUDO_HOME"
Allows to override the Raku installation path. Defaults to "[rakudo_executable_dir]/../share/perl6"
in relocatable builds and the absolute path to that folder in non-relocatable builds.
"NQP_HOME"
Allows to override the NQP installation path. Defaults to "[rakudo_executable_dir]/../share/nqp" in
relocatable builds and the absolute path to that folder in non-relocatable builds.