This articles was published on 2014-08-04

[Apr.2014 to Jul.2014] mruby news

What happened with mruby between April 2014 and Juli 2014?


Jun Hiroe was very active in refactoring several parts of mruby like the Numeric, Symbol, String and Kernel C code. yui-knk was helping additionally with some work on the overall test code.


For one of my current projects I actually had quite some problems with the mruby-socket GEM from the IIJ team. Luckily the guys were very active and fixed these issues very fast. Yet it remind me that the code we have written here (mruby core code and external GEMs) is still not in wide usage and we probably have still a lot of bugs. So also in this period a really big amount of bugs were fixed like memory leaks, dead code (mainly found by clang-analyser and reported by Jose Narvaez), crashs and many minor typos and other issues.


As always many improvements were contributed to the standard library. Additionally to new methods we also received the mruby-enum-lazy gem which implements Enumerable::Lazy.

The following methods were added:


  • #module
  • #initialize


  • #parameters


  • #intern
  • #casecmp


  • #slice!
  • #clear
  • #lines
  • #chars
  • #each_char
  • #codepoints
  • #each_codepoint
  • #chr (utf-8)
  • #%
  • #ord (utf-8)
  • #split (utf-8)
  • #index (utf-8)
  • #uniq!


  • #to_h


  • #to_h


  • #to_h
  • #key
  • #keep_if
  • #invert
  • #flatten
  • #delete_if
  • #fetch


  • #to_h
  • #select!
  • #bsearch
  • #delete_if
  • #keep_if
  • #insert
  • #reject!
  • #rotate


  • #args


  • #size


  • #to_h
  • #size
  • #length


Takeshi Watanabe did an awesome job in finishing the dependency system in the mrbgems which I started something like a year ago. This dependency system is now also used in the standard library was (i.e. mruby-enum-lazy is depending on mruby-enumerator and mruby-enum-ext).


Here a list with all commits during these months.


Refactor sym_equal() in symbol.c

rewrite stripping

Use `mrb_parse_nstring` instead in eval.

call `mrb_malloc_simple` instead of `malloc`

rewrite stripping

rename boxing_nix.h to boxing_no.h

rename word boxing functions

rename SET_FIXNUM_VALUE to SET_INT_VALUE since it sets mrb_int value

Clean up value.h and mrb_value boxing

Use `mrb_print_error` to print exception instead of `mrb_p`.

Print error instead of printing return value of report.

Remove unnecessary out of memory check in `ary_expand_capa`. Since `mrb_realloc` raises when failed to allocate memory.

reformat else part; ref #2447

Use `MRB_ARGS_ARG(n, o)` instead of `MRB_ARGS_REQ(n) | MRB_ARGS_OPT(o)`.

Use `TRUE` instead of `1` in mirb code.

reduce mrb_funcall in exception allocation

Sacrifice some micro-optimization to remove duplicate code

OP_ENTER: Rewrite split aspec use macros

refacor mrb_open_core() to reduce a local variable

Reduce string creation in `Symbol#casecmp` by using `case!`.

Reduce string creation of `length`, `size`, `empty?` method of `Symbol` extension.

Reduce new string creation in `capitalize`, `downcase`, `upcase` method of `Symbol` class extension. Add test to check unmodified result is working.

Using ‘mrb_assert’ instead of an returning 0 while checking s->irep in codegen.c.

String#clear: use String#replace to simple

Refactor how to use RSTR_NOFREE_P macro

move String#clear to mruby-string-ext; ref #2370

Refactor variable definitions

Refactor mrb_utf8_strlen() in mruby-string-utf8

reimplement Range#size using double with fixing corner cases; ref #2293

Refactor mrb_str_intern() in string.c

Refactor mrb_str_equal_m in string.c

Refactor mrb_str_new() in string.c

mv opcode.h -> include/mruby/opcode.h and remove duplication from mruby-eval gem

Consolidate muliptlication into one place

Replace from include <>, to include “”.

Remove unnecessary newline in `OP_GETGLOBAL` codedump.

Refactor mrb_equal_m()

Refactor mrb_obj_equal_m()

Refactoring test to use assert_nothing_raised.

Replace from include <>, to include “”.

refactor fix_mod

Refactor read_lineno_record_1() in load.c

Refactor mrb_str_hash()

Refacotr mrb_str_substr()

Refactor mrb_str_upcase_bang

Refactor mrb_str_split_m()

Refactor mrb_str_downcase_bang()

Refactor mrb_str_capitalize_bang()

Refactoring exception test.

refactoring mruby-struct

Refactor rshift

use Kernel#__send__ insteard of Kernel#send

Remove `lv_len` and use `nlocals – 1` instead. Check that `lv`’s length is always `nlocals – 1`.

Refactor fix_xor()

Refactor fix_or()

Refactor fix_and()

Refactor flo_finite_p()

mruby-string-utf8: use mrb_int instead of size_t

Refactoring Comparable

Refactoring OP_CALL

Refactoring Array#__svalue

Array#fill use `kind_of?` instead of `respond_to?`

OP_SEND refactoring

Refactor fix_to_f in numeric.c

Refactor lshift in numeric.c

Refactor fix_shift_get_width in numeric.c

Refactor fix_rshift

Refactor fix_lshift

Refactor fix_rev

simplify Numeric#eql?

Refactor array test to use assert_xxx method

Refactoring for kh_put


Fix memory leak for test driver

check if block is given in eval_under(); fix #2486

exception in instance_eval should not exit mrb_run; fix #2483

since #1441, NaN boxing with 64bit pointer works; close #2476

avoid infinite recursion when error was happened in #inspect; fix #2474

fiber stack allocation size should be bigger than irep->nregs

backtrace supression condition was wrong; fix #2472

rescue SystemStackError that comes from inspecting self-referencing Hashes and Arrays; fix #2461

Fix rake failure since `mrbtest_objs` isn’t flattened. Append generated test object to `@test_objs` of mrbgem spec. Add method `custom_test_init?` to check whether mrbgem has custom test init function.

update expected error message in bintest

invalid base shouldn’t silently fail

Fix type checking in `mrb_flo_to_fixnum`.

fiber stack should not be cleared by zero when MRB_NAN_BOXING is set; close #2439

Ensure RVALUE is large enough for word boxing types.

time overflow check; ref #2337

Fix MRB_WORD_BOXING by correctly telling GC which mrb_value types are immediate.

ObjectSpace.each_object should filter out internal (i.e. obj->c == NULL) objects; ref #2429

Fix crash in method call in `ObjectSpace.each_object` block. * Filter `MRB_TT_ENV` and `MRB_TT_ICLASS`. * Set `mrb->string_class` in `mrb_init_exception` instead.

Fix typo in doc/api/

Fix to not print unnecessary comma.

revert #2344 because of #2395

Fix document of doc/compile/

Fix a document in doc/mrbgems/

Fix document of doc/mrbconf/

clear local variables for the first execution of mrb_context_run(); close #2405

fix conflict resolution mistake

Add fixed state atexit stack feature. Adds following macros: * MRB_FIXED_STATE_ATEXIT_STACK (not defined by default) * When defined enables fixed state atexit stack. * MRB_FIXED_STATE_ATEXIT_STACK_SIZE (default value: 5) * This macro will be ignored when `MRB_FIXED_STATE_ATEXIT_STACK` isn’t defined. * When `mrb_state_atexit` is called more than this value it will raise runtime error.

Rolling back change induced because of ‘clang-analizer’ report.

Fix conflict doc since there is only `add_conflict` method.

Fixed dead assignment in ‘parser.y’ reported by ‘clang-analyzer’

Fixed dead assignment in ‘parser.y’ reported by ‘clang-analyzer’

Fixed dead assignment in ‘parser.y’ reported by ‘clang-analyzer’

Revert “Fixed dereference to null pointer in ‘codegen.c’ reported by ‘clang-analyzer’”

Fixed dereference to null pointer in ‘codegen.c’ reported by ‘clang-analyzer’

Fixed dereference to null pointer in ‘codegen.c’ reported by ‘clang-analyzer’

Fixed dead increment in ‘dump.c’ reported by ‘clang-analyzer’

Fixed possible division by zero in ‘codegen.c’ reported by ‘clang-analyzer’

Fixed dead assignment in ‘vm.c’ reported by ‘clang-analyzer’

Fixed dead assignment in ‘parse.y’ reported by ‘clang-analyzer’

Fixed dead assignment in ‘backtrace.c’ reported by ‘clang-analyzer’

Fix `` args spec.

do not ignore negative characters (e.g. EOF and partial EOF); fix #2361 fix #2369

revert #2368 due to #2369

Treat partial hook success ‘\n’ to fix #2361 .

partially revert 1a5841b for mirb

fix String#lines comment; ref mattn@2e1855a

Fix indents in mruby-string-utf8

Fix mgem test args passing

Fix indent.

Fix typos in gc

Fix indent in String#casecmp comments

Fix mgem test args passing

Fix indent.

Fix typos in gc

Fix to not print unnecessary comma.

Fix invalid array initialize for VS2012

fix indent.

fix typo.

Exception#exception fix test

Fix assert_equal argument order in test/t/proc.rb

break in blocks cannot cross C function boundaries; fix #2298

allow NULL (no variable) in lvar section of mrb format; fix #2294

Fix indent in mrb_hash_to_hash()

Add comment to Fixnum Class.

Fix indents

include/mruby/opcode.h fix operation doc src/vm.c fix operation doc [ci skip]

Fix #2259 .


allow quit/exit to work within mirb; fix #2253 close #2254

Fix incorrect info in minirake’s help message — “-q” is the default, not “-v”

Make sure c is large enough if there is an overflow

fix overflow error like #2244 on MRB_WORD_BOXING

Fix ISO No.

convert &arg using to_proc; fix #2242

Fix Hash test

Fix indents

Fix document generator to remove trailing space in generated document. Update generated document.

OP_ENTER fix segmentation fault

fix typo

Fix build on mingw32/64: struct timeval isn’t defined in default. See: 642477ef6a92c553d7abb00051674f4b518046c3

OP_ENTER fix variable assignment

Fix indents in mrb_str_inspect() of string.c

fix memcpy-param-overlap

Don’t reset ridx,eidx. And fix for #1949

Fix typo.

Fix comment of exc_inspect (and adjust spaces)

Fix docs path.

fix char after `=end`

fix embedded documents

fix condition for the rest of input

add namespace prefix to `dump_irep`

Fix indent

Add doubling stack extend, as fix for #2016

fix disabled stdio (and remove trailing spaces)

Fix MSVC warning for symbol.c

fix OP_BLKPUSH dump format

Fix MSVC warnings for numeric.c

re-apply 3644f1b since we have fixed GC bug

area of implicit nil is not enough to nregs

The correct is to compare the MRB_STACK_GROWTH.

revert 3644f1b temporary since it caused SEGV only on Travis-CI

should use plain int for index, since i may be printed using %d; close #2127

Fix MSVC warnings for error.c

Fix lineno overwrite in parser_init_cxt. By reordering parsing string with mrb_parser_parse won’t always start with line 1.

Fix MSVC warning for backtrace.c

Array#fill fix bug when argument use range object

Fix MSVC warning for gc.c


bug fixed

fix optional block arguments in rhs

fix optional arguments in rhs

do not reuse deleted entry. fixed

Fix typos in tests for mruby-string-utf8

mruby-string-utf8: String#reverse! may leak memory when mrb_str_modify() raises exception

fixed typo in opcode.h

Fix and add test to Proc#inspect .

fixed wrong use of pointer reference found by @tsahara; ref #2059

mruby-time: fix check of `mktime`’s return value

Fix indent in bit_coerce

simplify Fixnum#==

Fix bug kh_put after kh_del report by @mirichi

revert b45e99 since a bug in khash.h was fixed

revert 40eaf705 for performance reason; ref #2022

Fix invalid hash type

fixed typos in operand descriptions

Fix build_config.rb for ArduinoDue

Fix wrong `mrb_bug` use found with mruby-clang-plugin.

Fix C++ files detection for automatic C++ ABI enabling.

Delete khash_mask macro. And fix expression to more simple and readable.

Fix ‘make test’ fail to build on Windows(MSVC)

Fix ObjectSpace.count_objects document.

Fix build fail for ‘make test’ with no mrbgems

fix else indentation style


add Module#module_function

Implement string compiling `instance_eval` method.

Add `SyntaxError` test and don’t print compilation error to stderr in eval.

Implement Proc#parameters

add a few const qualifier

add a few const qualifier

Add `Symbol#intern`.

add mrb_open_without_mrbgems API

Implement String#slice_bang

should not add extra stack space to callinfo->nregs; maybe related to #2375

Implement String#clear

mruby-struct: implement `mrb_is_(local|const)_id`

add nil#to_h; ref #2348

add Enumerable#to_h; ref #2348

add Hash#to_h; ref #2348

Add String#lines

Add String#chars, String#each_char, String#codepoints, String#each_codepoint

Implement String#chr for utf-8

Implement String#chr

add ‘String#%’.

Add Array#to_h

Implement `NoMethodError#args`.

add internal function mrb_toplevel_run_keep() to keep stack contents; close #2326 add test case

Implement Module#initialize (

Add Range#size

Suport block in Kernel#eval

adjust signedness in mruby-eval gem

Modify eval for access outer local variable

rename lv section header from LOCV to LVAR

support comments in user-input; also add checks for buffer overflow

Delete unused NameError#new. And add test.

Add Hash#key

Move Kernel#fail definition to mruby-kernel-ext mrbgem.

Implement and Kernel#fail .

Implement day of week methods.

add function for checked mrb_int subtraction

add function for checked mrb_int addition

Add Hash#keep_if

Add Hash#invert

add Mrbtest::FIXNUM_{MAX,MIN,BIT}

Add Hash#flatten

Add Hash comments

Add Hash#delete_if

mruby-math: define and use `Math::DomainError`

Implement Struct#values_at and Array#values_at . Add API `mrb_get_values_at()` to mruby/range.h .

Implement Struct#to_h .

Implement Kernel.local_variables for testing dumped local variables information.

Speed up Array#select! from O(n^2) to O(n).

add post mandatory argument test

Add Array#select_bang

Implement Struct#to_a and Struct#values .

add Hash#fetch; close #2134

Define eval as module function.

Support file name and line argument in Kernel.eval . Only a nil binding will be supported.

Add Array#keep_if

Add Array#delete_if

Add Array#bsearch

Array#insert: simpler (and faster) implementation; ref #2107

Add Array#insert

Add Array#reject_bang

Add Array#delete_if

Implement Struct#size and Struct#length .

Implement Symbol#casecmp

Implement String#ord, String#split for mruby-string-utf8

Implement String#index, fixes #2073

add kh_push2() to check if entry is added

Add Array#uniq_bang test

Add Array#rotate_bang


Numeric#round takes optinal argument; close #2042

add assert before write khash del flags

improve hash function based on #2027; close #2027

add tests for FalseClass

Add args in Enumerator#inspect

implement Hash#initialize in C

Hash#replace to preserve order; close #2001

add mruby-enum-lazy mrbgem for Enumerable::Lazy

add –help option to mruby-config

add assertion before casting

implement part of Array#<=> in C

implement Array comparisons by Ruby

implement Hash#== and eql? in Ruby

move Array#inspect implementation to mrblib/array.rb

move Hash#inspect implementation to mrblib/hash.rb


Run mrbgem and core tests on minimum dependencies. Solves #2355.

Run mrbgem and core tests on minimum dependencies. Solves #2355.

Implement `add_conflict`. Usage is similar to `add_dependency`.

Add more info about “include_paths and GEM dependency”.

Add include_paths in dependency gems.

Add generator script to dependency so that it will regenerate C codes when it’s modified.

add dependency from mruby-string-utf8 to mruby-string-ext to ensure loading order

add dependency information based on #2239; fix #2236, close #2239

Remove attention about mrbgem dependecy.

Update documentation of `MRuby::Gem::Specification#add_dependency`.

Implement default gem info to use when there is no depending gem is defined.

tests should not depend on `mruby-proc-ext`

Implement :checksum_hash mrbgem option.

Pass gem’s version information to compilers.

Refactor MRuby::Gem::List#check. * Create mrbgem table before dependencies check. * Topoligical sort gem list. * Check circular mrbgem dependency.


Silence “unused parameter” warnings in C++

restore mrb_get_args() in f_instance_eval to check arguments type

Use MRB_TT_EXCEPTION in exception object.

Move word boxing structs to “mruby/boxing_word.h”.

Print backtrace of crashed test in verbose mode.

Add field `allocf_ud` to replace current `ud`. Since some use it as `mrb_state` associated user data.

Check mrbgem.rake instead of directory to ignore empty directories in full-core.

need to call write_barrier on every fiber context switch

remove unused local variables; ref #2473

Set `$mrbtest_verbose` flag in `mrb_init_test_driver`.

Use `mrb_bool` as return type of `mrb_const_defined_at`.

use C style comments instead of C++ style comments

avoid print backtrace for SystemStackError

use SystemStackError instead of RuntimeError

check the return value of `fwrite`

remove spaces after open parens

initialize `args` in `parse_args`

coding style adjustments

update expected error message in bintest

check `mrb_open` return value

allocate `history_path` dynamically

check the return value of `fwrite`

remove spaces after open parens

initialize `args` in `parse_args`

coding style adjustments

check `mrb_open` return value

Add `SyntaxError` test and don’t print compilation error to stderr in eval.

Use `mrb_parse_nstring` instead in eval.

remove unused `mrb_str_body`

remove unused return_value

Add new API `mrb_ary_resize`(mruby implementation of `rb_ary_resize`).

Reduce allocation in shared RArray clearing.

Always return non-NULL in `mrb_hash_tbl`.

Use *_EMBED_* macro in state.c

Use RSTR_NOFREE_P in state.c

Add a caution to Your Pull Request document.

Add method `toolchains` and `primary_toolchain` to `MRuby::Build`. * To check imported toolchains for setting up toolchain specific things. * `primary_toolchain` returns the main toolchain name of the build.

Reduce warning for enumeration

remove String class initialization in error.c; ref #2429

initialize nomem_err->mesg->c before exposing to Ruby world; close #2428

Quote default value.

Document left mrbconfs.

Add notes about restriction of `DISABLE_STDIO`.

Add documentation of `mrb_value` config.

proc.h: MRB_ASPEC_REST() macro return 1 or 0

Proc#arity return 0 when opcode was not OP_ENTER

Not create local variables in scope_new

Add documentation of state atexit configuration.

Add documentation of memory pool configurations.

Start documenting C APIs.

Quote required mrbgem spec property.

Update documentation of `summary` property of mrbgem spec.

Syntax highlight code blocks with github flavored markdown.

Document GC mrbconfs.

Add primitive type configuration document.

Add notes about how to use mrbconf.

Modify return value of String#slice! if idx == self.size

update String#slice doc

remove superclass test for classes that do not exist in mruby (core)

Add mrbconf documentation.

[minor-fix]Minor cleanups on variable.c comments

arity for cfunc is not implemented yet

Proc class define before a first method

Unsupported Regex in mrb_str_aref_m()

Test all ISO defined classes direct superclass except `Object` class. Move mrbgems ISO direct superclass test to `superclass.rb`. Skips test if class isn’t defined. Close #2332.

Move direct superclass checking to `test/t/superclass.rb`.

update add_confict document; ref #2391

Update document by regenerating it.

Add :doc task to run document generator.

Add document for `add_conflict` and `add_conflicts`.

remove add_conflicts now; use add_conflict; ref #2390

need to call write barrier on hash keys; ref #2375

Implement `add_conflicts`. Solve #2383.

str_replace: self should not be shared and nofree

Add NOFREE macros

rename mrb_atexit to mrb_state_atexit to clarify a func will be called at the end of state, not process; ref #2211

reserve a register for a block parameter in a for statement body; ref #2375

NODE_FOR does not introduce new local variables

codedump should display proper L(n) for OP_STRING op

Do not export include/ dirs in mrbgems to core build.

Add a missing space after “,”

Find c++ files in tools/.

Add “.s” to source extensions.

Fallback to `mrb_assert` instead of dirty trick.

Check `RSTRING_EMBED_LEN_MAX` with static assert.

Use `_Static_assert` when C11 is available and use it in pointer size check.

Remove redundant substitutions.

Add test for end-of-program marker.

Add test for end-of-program marker.

remove UTF-8 strings from mruby-string-ext test

move STR_* macros to mruby/string.h with renaming

clear shared and nofree flags; ref #2370

inline str_discard(); ref #2370

Add bintest for `mrbc`.

Ignore outfile check when `-c`(check syntax only) flag is enabled.

reduce calling mrb_sym2name_len() from struct.c; ref #2365

use uppercase US-ASCII ctype macros

don’t (re-)define `ascii_isspace` and `isascii`

`ISSPACE` evaluates its argument multiple times

implement `ISASCII` correctly

Release `mrb->atexit_stack` on `mrb_close`.

move IS_EVSTR macro that should be private to src/string.c

remove mrblib/print.rb that only raise NotImplementedError; ref #2354

remove eval (that only raises NotImplementedError) from the core; ref #2354

update Kernel#raise/fail argument description

mruby-struct: remove unused functions

mruby-struct: use correct data types

mruby-struct: internal linkage for all functions

upcoming Visual Studio versions provide `snprintf`

mark pre-allocated exception

indent ISO section comments

use pre-allocated RuntimeError for out-of-memory

arena save/restore

use is_a? Array for String#% argument check as the original PR did in #2349

Add test

Special treatment for Hashes, not Arrays; ref #2349

Add comments in String#lstrip, rstrip, strip, lstring_bang, rstrip_bang and strip_bang

Remove space.

Remove space.

Add comments in String#lstrip, rstrip, strip, lstring_bang, rstrip_bang and strip_bang

Change to always use locals->car->car.

Remove space.

remove part of 9cd71916 test for same reason as 5306e47

Remove space.

Add invalid key type check in `Struct#[]=`.

Support string key in `Struct#[]=`.

no one uses Array.try_convert, so removed it that discourages duck typing; close #2317

Replace assert_true with assert_equal.

Change to use assert method.

Use `assert_*` method instead of using result value. Use `do … end` for test block.

Use `assert_kind_of` instead.

Should not call inherited method when class nothing

Update C++ extensions in build instruction document.

call Class#initialize from; ref ISO

allocate object after mrb_get_args()

remove unnecessary assignment; ref #2301 do not call `class_eval’ and set self for block argument

Module#initialize set created object for block argument

Reduce children filenames listing. It is executed per each debug filenames in irep to same ireps(children).

Reduce filename table creation in irep dumping to once.

direct invocation of instance_eval

Check mrbc_context is null

direct invocation of module_eval; ref #2298

Correct comment in exception test.

Support extension ‘.cc’ in globbing.

move prototype of mrb_format() from error.h to mruby.h; ref #2274

update raise in ensure test

correct comment; ref #2297

Add ‘Raise in rescue’ test to exception.

Move `Kernel.local_variables` to core.

mrb_include_module support class and module that not have methods each other

UINT16_MAX as symbol length is reserved; ref #2294

Add test for remove_instance_variable

Add ISO index to `Kernel.eval` and `Kernel#eval`.

Add ISO index to `Kernel.local_variables`.

support class define in singleton class

Add a space aftre bracket.

Use boolean macro in kernel.c

Use boolean macro in exc_equal.

Remove space.

Change range_check before mrb_obj_alloc.

instance method name use “#” instead of “.” for assert

Use boolean macro in mrb_range_initialize()

Use boolean macro

Delete unnecessary semicolon

Replace tab with spaces.

Add new line behind return type

Replace tabs with spaces in eval.c

const_missing error message more detail

compile mruby-bin-strip gem by default

move mrb_irep_remove_lv from etc.c to mruby-bin-strip gem

Implement `LVAR` section removing option in mruby-strip.

Support `LVAR` section removing.

print_r() and print_lv() should only be compiled in for ENABLE_STDIO

Kernel.local_variables to list UPVAR as well

resize register number in LVAR section from 32bits to 16bits

Add ISO No. to Integer#divmod test.

should use mrb_type() for the sake of MRB_WORD_BOXING

remove unnecessary semicolons from a38f8f

protect argument array from GC in OP_ENTER

should not use String#<< which is defined in mruby-string-ext; use Array#join instead; ref #2239

Rebuild no mrb_open mrbgems test when config file is modified.

Rename e to exception, scr_e to script_error.

Disable C++ exception for chipKIT Max32 example build_config

Add scr_e, to not reassign to e.

Refacotr mrb_obj_not_equal_m()

Pacify MSVC warnings for random.c

Update example build_config to include host build setting

Add comment to Hash#each_pair. And change the line

Add comments to Hash methods

Change to raise TypeError (Hash#merge, #merge!)

Add assert to Exception#inspect test.

Remove use of mruby-proc-ext method.

pacify MSVC warnings for time.c

Move `__method__` to mruby-kernel-ext since it’s not ISO method.

libreadline requires libtermcap on OpenBSD.

Add ISO No. to String#inspect test.

OP_ENTER clean block object in register

Add tests for Range#to_s Range#inspect.

Add API `mrb_atexit()`. `mrb_final_mrbgems` will be called as mrb_state atexit function. Maybe useful in #1844.

use mrb_field_write_barrier_value() in hash.c

use mrb_field_write_barrier_value() in array.c

Make Array#[]= raise IndexError.

Remove `Time` defined check in test.

Add mruby-kernel-ext to default gembox.

Add a comment to ObjectSpace.each_object.

temporary macros for checked arithmetic functions

test fixnum overflow for add, sub and mul

Add document of header searcher of compiler.

simply use `isfinite`

new macro mrb_int(mrb,x) to retrieve mrb_int from mrb_value with conversion if needed

use proper length for mrb_get_values_at()

Suppress warning when using readline in mirb.

reindent else

convert range edges to integers

do not raise error in mrb_range_beg_len()

raise TypeError instead of ArgumentError when argument of wrong type given to the values_at

remove each from range.c

count skipped line numbers

skip to the next line and reset column after `=end`

MSVC: treat implicit function decl. as error

Delete unused variable in Array#delete_if

Update time.c

goto STOP if ridx==0

On overflow, clear new stack space before mrb_raise

Remove use of define_singleton_method.

Use header searcher to find readline and linenoise.

Implement header search for gcc and clang.

Added dump_irep in header.

remove trailing spaces

adjust indent

Support local variables information dumping.

indent codedump when file/line info is not available; ref #2147

codedump for binary mrb files as well

turn on MRB_GC_STRESS for debug build on travis

remove `mrb_str_offset`

remove `DBL_DIG` fallback definition

include the missing header for `DBL_DIG`

define `resize_capa` as a function

make cioff in struct REnv from int to ptrdiff_t; close #2149

cast intptr_t to mrb_int to pacify compiler warning; close #2148

clear all stack everytime to prevent GC crash; ref #2109

stack may be uncleared

fiber context may be NULL

clear ci->proc to prevent GC crash

Add tests for multiline comment parsing

Accept =begin and =end with spaces after

make peek_n append p->pb to list

Use int32_t as line variable type.

Print file name and line number in codedump if available.

should care about the case that given arguments are less then mandatory formal arguments and optional arguments exist; close #2144

prevent printf warning

enable bintest on TravisCI to see how it works

better codedump formatting

presreve local variables names in irep->lv

rename `mrb_str_buf_append` to `mrb_str_cat_str`

NODE_SUPER should preserve stack region for block; ref #2136

NODE_DEF should preserve stack region for lambda; ref #2136

forgot to remove abort()

mark may be missed when eval() is called

Class.constants to take optional argument; close #2133

bit more peephole optimization for NODE_LVAR

check length before calling stack_copy(); based on a patch from @mirich; close #2129

Use mrb_int in mrbgem rest argument getting.

better integer size assertion suggested by usak

eliminate plain int except for a few cases like arena_index

remove -Wsign-compare warnings

Range#each fixnums are special

range_init argument for exclude_end use mrb_bool

mrb_range_new excl flag use mrb_bool insteard of int

reduce the init size of stack

Add test of $0 value in bin/mruby related to #2103 .

remove `mrb_str_buf_cat`

Also set $0 for binary files

Remove unnecessary `require ‘fiber’` note in Fiber.current document.

Add document to Fiber#transfer .

Remove `Struct` defined check in test.

adjust indent

allow method definition in cmdarg

use `stack_type` instead of raw `unsigned int`

Use boolean macro in is_valid_c_symbol_name()

Suppress test script syntax warning.

Add AUTHORS “Yuki Kurihara”

String#casecmp should be call `to_str` when non String object sent And should be raise TypeError when can not responsed to `to_str`

Symbol class include Comparable module.

Add Rake command ‘deep_clean’ which cleans everything including the mrbgems clone directories.

Use boolean macro instead of integer literal in `is_debug_info_defined`.

Allow parenthesed do-block in cmdarg

Sort out the variables which belongs to ‘mrb_callinfo’ to improve ‘cipush’ performance.

Add tests for utf8-string#rindex

mruby-string-utf8: update UTF-8 tests; ref #2076

mruby-string-utf8: str_subseq takes UTF-8 index, not byte index; ref #2076

Use RARRAY_* macro instead of accessing RArray field.

Add a block argument with Array#uniq

Add a block argument with Array#uniq_bang

Add one more test

Add test for String#ord, String#split for mruby-string-utf8

Cosmetic change

Handle utf-8 code in index/rindex

Use mrb_regexp_p to check regexp.

Add mrb_regexp_p to check whether mrb_value is Regexp.

Symbol#to_proc to support block call.

raises an ArgumentError when calling #call

various functions should have internal linkage

get classname and concatenate “: ” only once

convert exception message to string

Use mruby/re.h instead of duplicate definition.

Move src/re.h to include/mruby/re.h .

resolve conflict

Add test for UTF-8 string String#size .


merge @mattn’s win-compatibility

Improve generator to output status

Update language documentation without line number to reduce update interval in the future

Implement switch for line numbers

Update Language Documentation

should always initialize header flags for pooled strings

exc_inspect: dup file and check mesg only once

reduce RSTRING_PTR usage

mruby-time: remove unnecessary `tzset` call

disable fragile bintest on travis-ci

use quadratic probing in khash.h

use kh_put2 in mrb_hash_set for performance improvement

avoid function style parens after “return”; ref #2055

disable bintest for now

khash.h: use first found k_del

remove mirb regression test that fails on travis-ci only

Restore arena index since large struct may create many Proc objects; a patch from @take-cheeze; ref #2052

Add test cases to ‘large struct’ test; a patch from @take-cheeze; ref #2052

remove num_equal() that potentially cause infinite loop

replace memcpy() with a magic number by two assignments as suggested by @cremno; close #2048

mrb_str_dup use sheard string instead of new string

Delegate irep string free to mrb_gc_free_str

retrieve values in Hash#each to handle modified keys

kh_put return value should be found index

Qualify argv argument of API `const`.

Qualify mrb_yield_*’s argv `const`.

kh_put in khash.h should work when direct bucket is deleted one

call kh_get before kh_put to avoid potential key lost; reported by @mirichi

Add MRB_TT_HAS_BASIC_P macro to check whether a typetag has MRB_OBJECT_HEADER.

Make bintest enabling like other `enable_xxx` methods.

mention 1.9 compatibility in; close #2031

Add documentation of MRuby::Build#disable_cxx_exception .

Add MRuby::Build#disable_cxx_exception to force C++ ABI disable.

Hash#replace should copy default from original even when the default value of the original is not set

Use kh_end instead to n_buckets

should have passed args to to_enum

wrap args by parens

Always increment `total` field of `os_count_struct` in callback. Check sum of `ObjectSpace.count_objects` values is twice of total objects count. (Which is CRuby’s behavior.)

remove tests for unicode chars in regular expression literals.

Add detection of VC++2010 in build_config.rb

Update mruby-head installed on Travis CI

backslash escapes in regexp should be addressed by Regexp processor; close #2005

Hash#replace should copy default as well; close #2004

simplify string equality check

merge test code from #2003

call to_hash before replacing hash

protect NoMethodError from calling to_hash in ==/eql?; close #2002

should not access proc->body.irep if proc is PROC_CFUNC; close #1999

space adjustment in khash.h

delete khash member upper_bound

downto, upto, step to return Enumerator

Support :T_FIBER in ObjectSpace.count_objects .

test fails when we don’t have Enumerator.

too much peephole optimization; close #1992

Delete khash member mask and inc because there can be substituted by n_buckets


use size_t instead of int

delete unused indexes __m_* masks

remove some empty lines

handle CR before LF; close #1781

simpler escape handling in ?c strings

Hash#keys to update memory region directly

should adjust hash value order at deletion

function expansion in hash.c

Hash to preserve order as Ruby1.9 does