How to run Rakudo, a Raku implementation, and modify its behavior with environment variables.
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.
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.
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.
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)
RAKUDO_PRECOMP_LOADING
(src/core.c/CompUnit/PrecompilationRepository.pm6)
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.
RAKUDO_LINE_EDITOR
This specifies the preferred line editor to use; valid values are Readline
, Linenoise
, 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
.
RAKUDO_DEFAULT_READ_ELEMS
This specifies the default number of characters to read on an IO::Handle
by setting the $*DEFAULT-READ-ELEMS
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.
On Windows programs are compiled to either be console applications or non-console applications. Console applications always open a console window. There is no straightforward way to suppress this window.
Rakudo provides a separate set of executables suffixed with a 'w'
(rakuw.exe
, rakudow.exe
, ...) that are compiled as non-console applications. These do not spawn this console window.
WARNING By default these non-console applications will silently swallow everything that is printed to STDOUT
and STDERR
.
To receive the output of the program it suffices to redirect it externally:
rakuw.exe script.raku >stdout.txt 2>stderr.txt
Written by the Rakudo contributors, see the CREDITS file.
This manual page was written by Reini Urban, Moritz Lenz and the Rakudo contributors.