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
) changes struct
layout and
cause memory access error when C and other language(e.g., C++) is mixed.
ENABLE_STDIO
* Will be defined automatically if
DISABLE_STDIO
isn't defined. * Uses
<stdio.h>
functions.
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.
ENABLE_DEBUG
* 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/or debug_op_hook
of
mrb_state
. * Fetch hook will be called before any OP. * Debug
OP hook will be called when dispatching OP_DEBUG
.
DISABLE_DEBUG
* Will be define automatically if
ENABLE_DEBUG
isn't defined.
MRB_DEBUG
* When defined mrb_assert*
macro will
be defined with macros from <assert.h>
. * Could be
enabled via enable_debug
method of MRuby::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 as mrb_float
. * Else
double precision floating point type(C type double
) is used as
mrb_float
.
MRB_INT16
* When defined int16_t
will be defined
as mrb_int
. * Conflicts with MRB_INT64
.
MRB_INT64
* When defined int64_t
will be defined
as mrb_int
. * Conflicts with MRB_INT16
. * When
MRB_INT16
or MRB_INT64
isn't defined
int
(most of the times 32-bit integer) will be defined as
mrb_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
exceeds MRB_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
when mrb_state_atexit
call count to same
mrb_state
exceeds
MRB_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_value
configuration.¶ ↑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 boxed double
. * Conflicts with MRB_USE_FLOAT
.
MRB_WORD_BOXING
* If defined represent mrb_value
as a word. * If defined Float
will be a mruby object with
RBasic
.
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_FUNCALL_ARGC_MAX
* Default value is 16
. *
Specifies 4th argument(argc
) max value of
mrb_funcall
. * Raises ArgumentError
when the
argc
argument is bigger then this value
mrb_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 by
mrb_str_buf_new
function..
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.