You can use mrbconfs with following ways:
- Write them in
mrbconf.h
. - Using compiler flags is preferred when building a cross binaries or multiple mruby binaries
since it's easier to use different mrbconf per each
MRuby::Build
. - Most flags can be enabled by just commenting in.
- Pass them as compiler flags.
- Make sure you pass the same flags to all compilers since some mrbconf(e.g.,
MRB_GC_FIXED_ARENA
) changesstruct
layout and cause memory access error when C and other language(e.g., C++) is mixed.
MRB_DISABLE_STDIO
- When defined
<stdio.h>
functions won't be used. - Some features will be disabled when this is enabled:
mrb_irep
load/dump from/to file.- Compiling mruby script from file.
- Printing features in src/print.c.
MRB_ENABLE_DEBUG_HOOK
- When defined code fetch hook and debug OP hook will be enabled.
- When using any of the hook set function pointer
code_fetch_hook
and/ordebug_op_hook
ofmrb_state
. - Fetch hook will be called before any OP.
- Debug OP hook will be called when dispatching
OP_DEBUG
.
MRB_DEBUG
- When defined
mrb_assert*
macro will be defined with macros from<assert.h>
. - Could be enabled via
enable_debug
method ofMRuby::Build
.
MRB_STACK_EXTEND_DOUBLING
- If defined doubles the stack size when extending it.
- Else extends stack with
MRB_STACK_GROWTH
.
MRB_STACK_GROWTH
- Default value is
128
. - Used in stack extending.
- Ignored when
MRB_STACK_EXTEND_DOUBLING
is defined.
MRB_STACK_MAX
- Default value is
0x40000 - MRB_STACK_GROWTH
. - Raises
RuntimeError
when stack size exceeds this value.
MRB_USE_FLOAT
- When defined single precision floating point type(C type
float
) is used asmrb_float
. - Else double precision floating point type(C type
double
) is used asmrb_float
.
MRB_INT16
- When defined
int16_t
will be defined asmrb_int
. - Conflicts with
MRB_INT64
.
MRB_INT64
- When defined
int64_t
will be defined asmrb_int
. - Conflicts with
MRB_INT16
. - When
MRB_INT16
orMRB_INT64
isn't definedint
(most of the times 32-bit integer) will be defined asmrb_int
.
MRB_GC_STRESS
- When defined full GC is emitted per each
RBasic
allocation. - Mainly used in memory manager debugging.
MRB_GC_TURN_OFF_GENERATIONAL
- When defined turns generational GC by default.
MRB_GC_FIXED_ARENA
- When defined used fixed size GC arena.
- Raises
RuntimeError
when this is defined and GC arena size exceedsMRB_GC_ARENA_SIZE
. - Useful tracking unnecessary mruby object allocation.
MRB_GC_ARENA_SIZE
- Default value is
100
. - Ignored when
MRB_GC_FIXED_ARENA
isn't defined. - Defines fixed GC arena size.
MRB_HEAP_PAGE_SIZE
- Defines value is
1024
. - Specifies number of
RBasic
per each heap page.
POOL_ALIGNMENT
- Default value is
4
. - If you're allocating data types that requires alignment more than default value define the largest value of required alignment.
POOL_PAGE_SIZE
- Default value is
16000
. - Specifies page size of pool page.
- Smaller the value is increases memory overhead.
MRB_FIXED_STATE_ATEXIT_STACK
- If defined enables fixed size
mrb_state
atexit stack. - Raises
RuntimeError
whenmrb_state_atexit
call count to samemrb_state
exceedsMRB_FIXED_STATE_ATEXIT_STACK_SIZE
's value.
MRB_FIXED_STATE_ATEXIT_STACK_SIZE
- Default value is
5
. - If
MRB_FIXED_STATE_ATEXIT_STACK
isn't defined this macro is ignored.
MRB_ENDIAN_BIG
- If defined compiles mruby for big endian machines.
- Used in
MRB_NAN_BOXING
. - Some mrbgem use this mrbconf.
MRB_NAN_BOXING
- If defined represent
mrb_value
in boxeddouble
. - Conflicts with
MRB_USE_FLOAT
.
MRB_WORD_BOXING
- If defined represent
mrb_value
as a word. - If defined
Float
will be a mruby object withRBasic
.
MRB_USE_IV_SEGLIST
- If defined enable segmented list in instance variable table instead of khash.
- Segmented list is a linked list of key and value segments.
- It will linear search instead of hash search.
MRB_SEGMENT_SIZE
- Default value is
4
. - Specifies size of each segment in segment list.
- Ignored when
MRB_USE_IV_SEGLIST
isn't defined.
MRB_IVHASH_INIT_SIZE
- Default value is
8
. - Specifies initial size for instance variable table.
- Ignored when
MRB_USE_IV_SEGLIST
is defined.
MRB_UTF8_STRING
- Adds UTF-8 encoding support to character-oriented String instance methods.
- If it isn't defined, they only support the US-ASCII encoding.
MRB_FUNCALL_ARGC_MAX
- Default value is
16
. - Specifies 4th argument(
argc
) max value ofmrb_funcall
. - Raises
ArgumentError
when theargc
argument is bigger then this valuemrb_funcall
.
KHASH_DEFAULT_SIZE
- Default value is
32
. - Specifies default size of khash table bucket.
- Used in
kh_init_ ## name
function.
MRB_STR_BUF_MIN_SIZE
- Default value is
128
. - Specifies initial capacity of
RString
created bymrb_str_buf_new
function..