This articles was published on 2014-08-04
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
Proc
Symbol
String
nil
Enumerable
Hash
Array
NoMethodError
Range
Struct
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/mruby.h.md
Fix to not print unnecessary comma.
revert #2344 because of #2395
Fix document of doc/compile/README.md
Fix a document in doc/mrbgems/README.md
Fix document of doc/mrbconf/README.md
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 `Time.at` 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 .
register
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
fixed.
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
Class.new add test case
Implement Module#initialize (15.2.2.4.31)
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 Kernel.fail 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
Array#rotate
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 Class.new; ref ISO 15.2.3.3.1
allocate object after mrb_get_args()
remove unnecessary assignment; ref #2301
Class.new 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 .
OP_EQ系が速くなった
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 README.md; 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 bool macro KHASH_DEFINE and KHASH_DECLARE
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