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.
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/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.
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_WITHOUT_FLOAT * When defined removes floating point
numbers from mruby. * It makes mruby easier to handle in “Microcontroller
without FPU” and “Kernel Space”.
MRB_INT16 * When defined int16_t will be defined
as mrb_int. * Conflicts with MRB_INT32 and
MRB_INT64.
MRB_INT32 * When defined, or both MRB_INT16 and
MRB_INT64 are not defined on 32-bit CPU mode,
int32_t will be defined as mrb_int. * Conflicts
with MRB_INT16 and MRB_INT64.
MRB_INT64 * When defined, or both MRB_INT16 and
MRB_INT32 are not defined on 64-bit CPU mode,
int64_t will be defined as mrb_int. * Conflicts
with MRB_INT16 and MRB_INT32.
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
and MRB_WITHOUT_FLOAT.
MRB_WORD_BOXING * If defined represent mrb_value
as a word. * If defined Float will be a mruby object with
RBasic.
MRB_IV_SEGMENT_SIZE * Default value is 4. *
Specifies size of each segment in segment list.
MRB_USE_LINK_TIME_RO_DATA_P * Only available on ELF platforms.
* If you specify the address of a read-only section when creating a symbol
or string, that string will be used as it is. * Heap memory can be saved. *
Uses __ehdr_start and __init_array_start. * It
must be __ehdr_start < data_addr < __init_array_start.
MRB_USE_CUSTOM_RO_DATA_P * Takes precedence over
MRB_USE_LINK_TIME_RO_DATA_P. * Please try if
MRB_USE_LINK_TIME_RO_DATA_P is not available. * The
mrb_ro_data_p() function is implemented by the user in an
arbitrary file. * The prototype declaration is mrb_bool
mrb_ro_data_p(const char *ptr). * Return TRUE if
ptr is in read-only section, otherwise return
FALSE.
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 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..
MRB_METHOD_CACHE * Improve performance for method dispatch.
MRB_METHOD_CACHE_SIZE * Default value is 128. *
Ignored if MRB_METHOD_CACHE is not defined. * Need to be the
power of 2.
MRB_METHOD_T_STRUCT * Use C struct to represent
mrb_method_t * No MRB_METHOD_T_STRUCT requires
highest 2 bits of function pointers to be zero * Define this macro on
machines that use higher bits of pointers
MRB_ENABLE_ALL_SYMBOLS * Make it available
Symbols.all_symbols in mrbgems/mruby-symbol-ext *
Increase heap memory usage.