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.