You can use mrbconfs with following ways:
- Write them in mrbconf.h.
- Using compiler flags is prefered 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.
-
stdio setting.
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.
Debug macros.
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.
Stack configuration
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.
Primitive type configuration.
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.
Garbage collector configuration.
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.
Memory pool configuration.
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.
State atexit configuration.
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 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_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.
Instance variable configuration.
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.
Other configuration.
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..
|