Skip to content
MasterDuke17 edited this page Aug 19, 2017 · 7 revisions

Rakudo

The following environment variables can impact Rakudo's behavior:

RAKUDO_DEFAULT_READ_ELEMS

Defaults to 65536; the default number of characters to read on an IO::Handle

RAKUDO_DISABLE_MULTILINE

Set to 1, will disable multiline input for the REPL

RAKUDO_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.

RAKUDO_HIST

This specifies the location of the history file used by the line editor; the default is ~/.perl6/rakudo-history.

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_LOG_PRECOMP

If set to 1, diagnostic information about the precompilation process is emitted.

MoarVM

If you're using the MoarVM backend for Rakudo, the following variables also have an impact:

MVM_SPESH_DISABLE

Disables all dynamic optimization

MVM_SPESH_BLOCKING

Make threads pause while dynamic optimization work is performed; this effectively makes the optimization work take place synchronously rather than in the background, which means bugs will manifest themselves more predictably.

MVM_SPESH_NODELAY

Run dynamic optimization even for cold frames. Useful in conjunction with MVM_SPESH_BLOCKING for stress-testing the dynamic optimizer.

MVM_SPESH_INLINE_DISABLE

Disables inlining

MVM_SPESH_OSR_DISABLE

Disables on-stack replacement

MVM_JIT_DISABLE

Disables JITting to machine code

MVM_SPESH_LOG

Specifies a dynamic optimizer log file

MVM_JIT_LOG

Specifies a JIT-compiler log file

MVM_JIT_BYTECODE_DIR

Specifies a directory for JIT bytecode dumps

MVM_CROSS_THREAD_WRITE_LOG

Log unprotected cross-thread object writes to stderr

MVM_COVERAGE_LOG

Specifies a line coverage log file

MVM_COVERAGE_CONTROL

When set to 1, line coverage is not de-duplicated, and it must be started with a call to nqp::coveragecontrol(1). When set to 2, line coverage is not de-duplicated, but starts without requiring a call to nqp::coveragecontrol(1). Line coverage can be stopped/restarted with calls to nqp::coveragecontrol(0|1).