This articles was published on 2014-04-12
Due to the sudden allocation of my first born in the beginning of this year this summary comes a little bit later and is much longer than usual. But keep scrolling and investigate the individual commits! The changes in mruby are worth it.
So, what happened with mruby between November 2013 and March 2014?
During these five months 625 commits were pushed into the mruby repository (ignoring all merges). 106 of them I identified as Bugfixes, 92 were improvements to the Standard Library, 63 improved the test system, 57 of them were refactoring the code or just small cosmetic changes, 34 made changes to the build system and 11 changed the API.
Based on issue #1794 Takeshi Watanabe implemented the new API mrb_proc_new_cfunc_with_env
and mrb_cfunc_env_get(mrb_state*, mrb_int)
which allows to create a Proc with user data and interact with it.
The 9 month old issue #1269, was also closed by modifying the mruby API. Matz introduced mrb_fiber_yield(mrb_state *mrb, int argc, mrb_value *argv)
which allows to create a Fiber
from C.
A very small API addition is mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
, which was introduced by Fleurer to handle use-cases like the mirb
more elegant.
So many changes were done to the standard library. It is hard to pick the most important ones. In general mruby has stepped a big leap in the direction of being more compatible with CRuby. Lots of missing features were added:
Array
#fill
, #fetch
Kernel
#define_singleton
Object
#tap
#__method__
String
#oct
, #hex
Enumerable
#zip
, #find_index
, #cycle
, #reverse_each
, #each_with_object
, #one?
#none?, #minmax_by
, #minmax
, #min_by
, #max_by
, #flat_map
, #collect_concat
, #count
, #first
, #sort_by
ObjectSpace.each_object
Fiber
#transfer
, #==
, #current
Hash
#each_pair
Integer
#div
Float
#div
, #nan
?Random
Array
#sample
, #shuffle
, #shuffle!
(in Random
class)String
Here a list with all commits during this month.
singleton class needs to set __outer__; fixed #1983
revert #1974; ref #1979
Kernel#send should preserve nregs in callinfo; close #1970
initialize ci->target_class in mrb_toplevel_run; ref #1942 close mattn/mruby-require#20
an int literal may have multiple underscores inside
allow underscores in integer literals; close #1960
revert 813ba5 since #1949 fixed
should not over process ensure clauses; close #1949
Don’t use ensure to fix crash of mruby-eval test.
Remove redundant NULL checks. mrb_malloc causes an exception when memory was empty.
add new function mrb_toplevel_run to prevent running through C function boudaries on exceptions; close #1942
Fix Enumerable#cycle; ref #1933
fix multiple value handling; ref #1931
Hash#__update fix typo It’s called by create Hash of over 126 keys
Hash#{reject,reject!} fix yield value
Hash#{select,select!} fix yield value
fix multiple value support of max_by; ref #1912
Float#round fix bug for infinity and nan cases
Fix behavior of Comparable methods when <=> return nil
should be able to create hash with 127+ entries; close #1894
should restore proc after rescue; close #1891
revert MRB_FIBER_RESUMED as MRB_FIBER_RESUMING to fix recurive resume
should not use nil as default value for Enumerable#count since it prevent counting nil in enums; ref #1887
stricter check for double resume; close #1885
fix bug when `0 * other object`
fix bug when `0 + other object`
fix bool number to macro
fix self modifying bug
fix return value for with_index
fix mrb_funcall calling
fix sym_intern argument type
fix #1823
MSVC: fix C4146
Hash#== and eql? should not return fixnum; ref #1823
Fix behavior Hash#eql?
Fix build on mingw32
fixed broken gettimeofday implementation for Windows
fix and add test for Proc#source_location
fix mruby command returning EXIT_SUCCESS when program file can’t be opened.
fix argument spec setting of Kernel.exit method. this method requires 1 optional argument.
Fix #1803
fix off-by-one error in attrsym
Fix #1793
fix off-by-one error in String#rindex(fixnum)
Fix Float#divmod.
fix include guard style.
fix a memory leak in mruby-random.
fix compile error of min/max macro
fix compile error
allow send method not to call mrb_funcall if calling method is implemented in Ruby; fix #1680 ref #1765
revert changes to mrbconf.h
fix SEGV bug for mrb_str_new_static
fix SEGV bug for mrb_str_new
forget to break in the switch statement
fix bug for get_valid_iv_sym
Fix unused function warning when readline enabled (mirb)
fix the position of capitalize! and downcast!, and add test for upcase!
fix possible arena overflow
more mrb_flo_to_str fixes
fdigit may be negative due to error if mrb_float is 32bit (e.g. 10**36 on 32bit arch); ref #1713 #1714
fix mrb_flo_to_str() exponent problem
normalize NaN after division that may generate NaN; fix #1712
keep stack with nlocals instead of nregs; fix #1706
Fix Kernel#global_variables for $1-$9
Fix MRUBY_BIRTH_YEAR
Fix release date
Fiber.new{break} caused SEGV
fix NODE_SPLAT codegen
fix utf-8 codepage
escape non-ascii characters correctly in String#inspect
fix ISO reference number of String#=~.
dump.c: wrong filename table dump for multiple script files; close #1648
Fix extended arena check in gc_protect
fix some warnings emitted by ‘ruby -w’
adjust register position for return value; fix #1620
revert fix in #1620
Fix return when value expected
wrong operator precedence fixed
fix #1617
fix codegen bug in NODE_CASE
fix TypeError message
Fix typo from expornent to exponent
Fixed callinfo buffer overflow while calling ensure handlers
Avoid recursive instance variable inspections
Fix mod.constants cannot return the single character constant
avoid top-level pool release at codegen_error() and fixed some memory leaks
should not access scope after releasing memory pool
fix realloc error
Make mrb->arena variable sized. Use MRB_GC_FIXED_ARENA for old behavior. You will not see “arena overflow” error anymore, but I encourage gem authors to check your gems with MRB_GC_FIXED_ARENA to avoid memory broat.
clear ci->err after const set; revert 5b51b1; ref #1583
ci->err may be out of boud; close #1583
fix warning: “implicit conversion from enumeration type ‘enum mrb_vtype’ to different enumeration type ‘enum irep_pool_type’ [-Wenum-conversion]“
wrong size of filenames buffer
should not free buffer that is still accessed
wrong size of filenames buffer
fix irep memory leak
fix length check in read_section_debug(); fix #1572
remove possible free-after-realloc problem; close #1570
fixnum in irep->pool may overflow
cancel #1565 since it breaks mirb; instead add special treatment to heredocs
call_iseq will never be NULL
wrong return value from read_lineno_record()
forgot to free irep->reps
irep->pool not to be GCed
mirb: reset stack in the first command
small style fix
Add API to define cfunc Proc with userdata. The APIs are defined in mruby-proc-ext so include it before using this API. See mruby-proc-ext’s test code for usage. This should resolve #1794.
do not use “to_f” to retrieve floats in mrb_get_args(); close #1965
export mrb_yield_internal.
mrb_fiber_yield() is available now; you have to link mruby-fiber mrbgem to use the function; there’s no function available to create new fiber from C (countapart of Lua’s lua_newthread), but that’s because you cannot create a new fiber from C due to mruby C API design limitation. define your method to create fibers in Ruby; close #1269
revert 38e9ce21 and API changed; mrb_get_backtrace() -> renamed to mrb_exc_backtrace since this is a backtrace method implementation of Exception; mrb_get_backtrace_at() -> removed; mrb_get_backtrace() -> added to get backtrace in array (like caller)
add src/error.h for compatibility reason
move src/error.h to include/mruby/error.h
rename mrb_intern2() to mrb_intern(); huge API incompatibility; close #1513
rename API mrb_str_dup_static() -> mrb_str_pool()
add new function mrb_load_irep_file_cxt() and simplifies mruby.c
introduce mrb_context_run()
More tests for String#hex, String#oct as against 9434506035c3fc01de55ac0bc8b75497f8b5df5f
Use mrb_intern_lit instead of mrb_intern in test driver.
Add test for backquote. * Implement code generation of NODE_DXSTR. * Fix NOVAL NODE_XSTR.
add Numeric#/ tests; ref #1965
Add tests for mruby-eval.
Count crashed tests in total tests count.
should test Enumerable#first; close #1905
add tests for TrueClass
add root fiber resume test to know double resume checking is working
Add Enumerable#sort_by test
refactor Enumerable#{all?,any?} tests
add unit tests for NilClass
Add Enumerable#any?(&block) tests
Add Enumerable#all?(&block) tests
Add Fiber’s double resume test and fix it.
add test for Array#each_index if non block given
test split and to detail
add assertion method `assert_nothing_raised’
add embed string test
__FILE__ test: add support for \ as separator
add tests for Integer#divmod.
add test to check striped binary works correctly
run enabled gem’s bintest only
add tests for String#*
add cxx_abi travis test
should build “all” before “test”; close #1774
Test for UTF-8 as mattn suggests.
fix test for Array#[]
Refactor tests in kernel.rb
Update the Fixnum#chr test for UTF-8.
add test for Kernel#instance_variable_defined?
add test for __LINE__ and __FILE__
add test(requires MRB_GC_FIXED_ARENA enabled)
add tests for String#capitalize! and String#downcase!
add test for Hash#dup
add a regression test for #1706
disable LocalJumpError test since the code causes SyntaxError (not LocalJumpError) on CRuby
move Array#[] tests from mrbgems to test/t/array.rb
Increase test coverage of mruby-struct
Remove duplicate test
tests for “case” expression.
Test for raise in ensure
Test case statement with splat
Method missing and inspect tests
Test coverage of extending stack and overflow
More object_id test coverage
add some tests for [], delete_at, index, and rindex
When superclass isn’t a class tests
More singleton tests
remove unnecessary depedency in test build
Add more testing for singletons
Change :vattr= to :cattr= in respond_to? test
add some tests for case statements
modify test case to check #1606
Add is_a? test to cover issue 1477
add a comment for enable_bintest in build_config.rb
enable bintest for travis CI
add regression for #1563
add regression for #1572
add regression for #1564
add conf.enable_bintest and run_bintest
add test/bintest.rb
make test/assert.rb cruby compatible
Show error class name when raise Error
Fix a typo
use __svalue instead of ary2sv
Use CRuby compatible key in ObjectSpace.count_objects .
Fix unnecessary string macro
Use mrb_int instead of int
Use mrb_int instead of int
Use mrb_int instead of int
Use mrb_int.
Small correction to the test identification.
use the same error message
Use bool-macro instead of magic-number
add const qualifier to pacify warning; ref #1900
Reword mention of mrbtest in README
Fix typos in README
Fix literal asterisks in markdown
refactor and use assert_raise in fiber test checking exception raise
add a space after C reserved words
recover description in default.gembox
Refactor Enumerable#include?
Refactor Enumerable#any?
Refactor Enumerable#all?
Refactor assert_true
unify indent style
fix variable name typo
remove ambiguity warnings
remove invocation of strlen() on buffer of strings; with refactoring
refactoring mruby-random
small refactor
remove unused variable
s/\\”/”/g in mruby-config
chmod 755
fix indent.
fix typo
fix a comment end of include guard
use C style comments instead of C++ style comments
fix indent
fix missing spaces.
Add warning for C89-style variable declarations
Added spaces in version.h macros for complying with C++11
small refactoring; direct return
made mrb_define_class to return existing class, with heavy refactoring
remove unnecessary semicolon
Remove warning
use mrb_bool, FALSE and TRUE more
reindent parse.y
Happy new year! (update copyright year)
etc.c: small cleanup (delete unused functions)
refactor parser lineno adjustment; ref #1667
add semicolon after the statements
small refactoring (dedup mrb_vm_cv_set)
small cosmetic variable renaming
Updated the documentation to better match the way things work now that 172cd28 is merged.
renamed mrb_exc_new3 to mrb_exc_new_str
Change supress to suppress
refactor mrb_context_run()
remove scope->idx
according to JIS/ISO, Array is not Comparable
Fix ISO no in Array#* and Array#+
Add -C (–directory) option to minirake.
Catch up to latest Arduino IDE
don’t show version ’0.0.0′ in build summary since it’s default version
add summary to mrbgems without it
print gem summary in print_build_summary method
move summary of mrbgems in default gembox to its spec
Don’t redefine timeval on MingW64 environments
fix compile error check of Mrbc command
move dependency check from runtime to mrbgem.rake
Added a short description on how to add mruby gems to the compilation workflow.
Add comments to notify files are auto generated.
.PHONY should be placed after `all’
visualcpp toolchain: change compiler/linker flags
Don’t echo empty string. (Remove workaround for windows)
update compilation notes
compile assert.rb once
specialize C++ compiler in clang toolchain
Add target example for Intel Galileo board
Always include build_config.rb to compile dependency.
add -Werror=declaration-after-statement
remove -Werror=declaration-after-statement
support custom build_dir in CrossBuild
make mruby build directory customizable
add enable_debug to build_config.rb
Update the INSTALL information to be more accurate
Fix build error for MRB_WORD_BOXING
use mrbc of current build in non cross build
add enable_debug method to MRuby::Build and build debug version in travis-ci
Modify build script for gcc.
Automatically detect toolchain if it is visualcpp, and hence we drop vs2010.rake altogether – it’s no longer needed.
build with MRB_GC_FIXED_ARENA.
Fixed so that it builds with VS2013. VLA:s are not supported, because of its strict C89 world view.
GCC: add -std=gnu99 to CFLAGS
pacify some warnings on OpenBSD
Add Array#fill
Enumerator#initialize support duck-type
Array#reverse_each should return Enumerator; ref #1968
Add Array#fetch
Add to_enum unless block
Implement Kernel#define_singleton_method
Implement Object#tap
Implement Kernel#__method__
Enumerable#zip to use enumerator if mruby-enumerator gem is available
Enumerable#cycle to return enumerator
call to_a at the top of Enumerabl#zip; ref #1961
add String#oct
Support multiple values in Enumerable#zip
Add Enumerable#zip
Implement String#hex
Enumerable#find_index to support multiple values
Enumerable#find_index
Implement ObjectSpace.each_object .
Enumerable#reverse_each should not rely on mruby-array-ext gem
Add Enumerable#cycle
improve Enumerable#reverse_each to be efficient
Add Enumerable#reverse_each
Enumerable#each_with_object
Enumerable#one? to prune iteration when count > 1; ref #1926
Add Enumerable#one?
Hash#{reject,reject!} support return Enumerator
Hash#{select,select!} support return Enumerator if non block given
Support multiple values in Enumerable#none?
Add Enumerable#none?
Suppoert multiple values in Enumerable#minmax_by
Enumerable#minmax_by
Hash#each_{key,value} support return Enumerator if non block given
Support multiple values in Enumerable#minmax
Add Enumerable#minmax
add Enumerable#min_by as well; ref #1912
Support mulitple values in Enumerable#max_by
Add Enumerable#max_by
implement Fiber#transfer
flat_map to support multiple values; ref #1902
Add Enumerable#{flat_map,collect_concat}
add Hash#each_pair
Add Enumerable#count comment
enum methods to support multiple values; all?, any?, grep, include?, drop, drop_while, take, take_while, each_cons, each_slice, group_by, first, count
Add Enumerable#count test
Add Enumerable#count
add Fiber#== from #1865 patch
add fiber assertion from #1865 patch
Add Enumerable#first test
Enumerable#find_all return Enumerator if non block given
Enumrable#each_with_index return Enumerator if non block given
add Enumerable#sort_by
make Enumerable methods to support multiple values; collect, detect, each_with_index, find_all, inject, max, min, partition, reject, sort
Enumerable#entries to support multiple values; close #1868
add Enumerable#first to mruby-enum-ext
mruby-enumerator: move definitions in core_mod.rb to mrblib core
add mruby-enumerator
implement Array#sample in mruby-random gem
mruby-time: add gettimeofday(2) for Windows
mruby-time: fix indentation in mrb_time_asctime
mruby-time: store timezone name directly
mruby-time: timezone_names should be const
mruby-time: store strings directly instead of pointers to them
mruby-time: mrb_time_type should be const
mruby-time: fix two tiny typos in comments
mruby-time: rearrange header order
mruby-time: remove trailing whitespace
Add mruby-bin-mruby-config
add Integer#div and Float#div.
add mruby-strip tool to strip irep’s debug info
Implement sprintf(“%c”) for UTF-8.
Implement default Random instance.
use mrb_intern_lit in mruby-random
hash / hash-ext: various small changes
array implementation: several small changes
Rakefile: make bin directory
mruby-math: remove Cygwin compatibility macros
Add pluggable versioning by mruby-version
add Float#nan?
rework mruby-objectspace and gc.[ch]
Array#[]= is now range aware
move range aware aget to array.c from mruby-array-ext gem
String#length should be an alias of String#size
Added rewrite of Array#[] to mruby-array-ext gem, so that arrays can be sliced with Ranges (as a[1..-2])
add operator “!~”.
add String#reverse, String#reverse! for UTF-8
mruby-string-utf8: redefine String#size for UTF-8 string; #1646
mruby-string-utf8: UTF-8 string may contail NUL; #1646
Add mruby-string-utf8
add String#partition and String#rpartition.
add Fiber.current
Added support for Random as an argument to shuffle and shuffle!. Refactored random gem to use DATA instance type and hold mt_state inside the DATA_PTR instead of in an instance variable.
Added shuffle and shuffle! to the Array class in the Random gem.
Implement \u notation for strings and regexes.
Hash function to avoid funcalls if possible
Fix method name
use suitable type
Adapt for Float and Integer
Adapt TypeError Message for String to Integer Conversion.
use to_int to integer duck-type check
REnv uses obj->c as env link; no super
mrb_str_pool add string capa
src/string.c RESIZE_CAPA use safe name variables This has a possibility of naming conflicts
remove unnecessary operator method call; ref #1927
move conditional out of loop
mrb_str_pool use embed-string
Use MRB_ARGS_REST() instead of ARGS_REST()
need not to add assertion in STR_SET_LEN() where n is mrb_int
remove unnecessary mrb_get_args in fiber_switch
wrap expr with paren
use FiberError in vm.c
use mrb_get_args(“i”)
make Fiber#transfer compatible with CRuby
reduce object allocation in __update
Prevent accepting String value for mrb_get_args(“i”)
reduce hash creation by using update method
use File#directory? instead of File#exist?; ref c2d8b0
avoid Dir.exist? that is not available in Ruby1.8
make behavior of Fiber without block compatible with CRuby
use FiberError in fiber exception raise
remove size_t cast in mrb_assert() since ((size_t)n <= SIZE_MAX) is always true
rename mrb_yield_internal to mrb_yield_with_class since it’s no longer internal
self must be the newly created object in initialization block; close #1858
string functions arguments changed from mrb_int to size_t that would take strlen()
change mrb_int to size_t that would take strlen()
rescue StopIteration only.
Reduce implicit type casts.
mark root fiber object; close #1865
float + nil should be raise TypeError
calc hash value directly for strings, symbols and numbers
string length type to be mrb_int
symbol length type to be mrb_int
Hash#shift may return any entries
type of mrb_type() should be enum mrb_vtype when MRB_NAN_BOXING is on
optimize from each to enumerator_block_call
modify core method that return Enumerator object if not block given
make private method enumerator_block_call
remove new_label(s) where label position can be obtained from genop()
too much optimization
peephole optimization for OP_JMP{IF,NOT}
add including limits.h.
add mrb_strlen_lit which makes _lit macros safer
avoid mrb_string_value_cstr() to copy string between mrb_states in tests
add MRB_INT_BIT
remove deprecated register keyword
don’t use of anonymous unions
set bool macro
set bit field for mrb_bool
add comments at end of include guard
reduce mrb_open calls in mrbgem test
Use mrb_str_new_cstr() instead of mrb_str_new() with strlen().
use mrb_str_cat_lit for literals
MSVC: add NAN and INFINITY for older versions
use NAN and INFINITY
add data_type check to mruby-random
add “?” specifier to check if preceding optional argument is given
Make type casts safer.
pool: use mrb_malloc_simple instead of mrb_malloc
support linenoise in mirb
convert too much from size_t to uint32_t; mrb_sym2name_len() takes size_t*
use sizeof(void*) instead of mrb_int size and extend embed string size
ignore *.pdb
reduce integer type complexity from int/size_t/uint32_t by unifying them to uint32_t; close #1778
make embed string when create literals
embed small string use flags 4 for *this object is embed* use flags 8~64 for *embed string length*
error.h: add extern “C” for C++
use mrb_int instead of size_t since string length is represented by mrb_int; close #1810
Change the position of -L option from MRUBY_LIBS to MRUBY_LDFLAGS
should check crossing C boudary from resume
add existing include/ directory only
mruby command should not execute program on “syntax only option(-c)”.
Use mrb_exc_new_str_lit widely
introduce mrb_exc_new_str_lit for C string literals
add new macros for MRB_STR_SHARED operations, based on 0f7aecf from @ksss; ref #1782
use tempfile module
Kernel#send does not use mrb_funcall anymore for most cases; ref #1680
rescue clause should understand splats; close #1786
Add ssh protocol support for bitbucket.
remove explicit use of g++
use shallow clone in git gem
use c++ compiler to link when c++ abi is enabled
allow command like “ccache gcc”
wrap function prototype by extern “C”
add const to char* to pacify warnings for string litral to char* conversion
clear exc_catched before jumping to L_RAISE
define mrbconfs on all compiler
define __STDC_* macros in y.tab.cxx too
wrap scope with do {} while()
revert wrong build_config.rb
use g++ to link
name c++ abi build
move jmpbuf_id to generated file
support c++ exception
exception in fiber should make resume to raise in parent fiber context; close #1765
need to initialize flags for pooled strings; close #1768
add _FLAG to SET_SHARED macros; ref #1750
remove unnecessary .gitkeep
Please add me to the author.
cancel 313f6b; add fallthrough comment
support break from fiber block; fix #1766
restore proc after restoring from fiber; ref #1766
swap actual and expected; ref #1764
remove break altogether in ci loop
make mrb_str_dump a bit faster
move check condition to outside in while block
use mrb_str_cat_lit() intead of mrb_str_cat
should not continue loop when ci = NULL
Could you add me to AUTHORS?
boot_defclass: super may be NULL
Delete `!!Notice!!` intro paragraph from README
avoid recursion when method_missing happened in inspect; fix #1746
add new function mrb_get_backtrace_at() to get backtrace at ci and pc
add macro ARY_UNSET_SHARED
add macro ARY_SET_SHARED
use mrb_str_new_lit instead of mrb_str_new for C string literal
add macro ARY_SHARED_P
use mrb_intern_lit instead of mrb_intern_cstr for C string literals
use mrb_str_cat_lit() more widely
introduce mrb_str_cat_lit() to create strings from C string litrals
use mrb_str_new_lit instead of mrb_str_new for C string literals
Update README.md; The URL of the mruby home-page is accessible.
small-optimization2 for mrb_time_zone
small-optimization for mrb_time_zone
clarify fallthrough in the switch statement
initialize sname before interning
add ruby and C code execution order note
avoid accessing uninitialized string; ref ac936fc
add MRB_ prefix to STRINGIZE macro
Issue minor corrections and updates to INSTALL file.
limit preserved significand length
move declaration to the top of the block; ref #1727
preserve significands in float-string conversion
powered num may be infinite in float-string conversion
use ‘d’ format spec to get Random object
add ‘d’ format specifier to get data pointer directly from mrb_get_args
mrb_flo_to_str: internal linkage
iv_size (non-seglist): return 0 if t is NULL
use double instead of mrb_float (that may be single precision float) to reduce errors
remove trailing zeros from float string representation
define FLO_EPSILON depends on float/double
remove max_digit from mrb_flo_to_str()
use powf() instead of pow() on MRB_USE_FLOAT
modify mrb_to_str() in order to display big float number
Give the type ‘void’ to functions have no argument.
clearn up warning in hash.c
MRUBY_VERSION should be only numbers separated by dot, like JRUBY_VERSION or Rubinius::VERSION
mrb_str_cat2: deprecated since 0cedf8f
remove mrb_str_literal declaration
dump.h: parenthesize negative errnos
remove direct inclusion of mruby/version.h from version.c; #1698
include mruby/version.h in mruby.h
Clang and ICC/ICL: define DIRECT_THREADED
add RUBY_ENGINE; ref #576
initialize ci->stackent at the top; #1691
Store raw stack address in callinfo instead of offset from stbas
forget to add function prototypes
rename mrb_name_class and make it static
Add download link for stable version to README
Remove notice of early version
add MRUBY_RELEASE info in numbers
forgot to add new files
move version info from gems to core; ref #576 #1684
use mrb_str_new_lit() more widely
introduce mrb_str_new_lit() to create strings from C string litrals
Add global constant MRUBY_COPYRIGHT
replace Kernel.show_version with MRUBY_DESCRIPTION
pass gem_flags_after_libraries
add RUBY_VERSION to notify syntax compatible version
better codedump format
fibers cannot cross C function boundary; close #1680
add missing declaration of mrb_str_format
clean up external symbols
mruby.h: remove mrb_str_format declaration
more accurate backtrace lineno
clone Class/Module rightly
add callback invocation from OP_DEBUG
describe call stack overwritten problem of mrb_get_backtrace; close #1661
hash value of enumerable should be obtained from its elements; close #1658
hash value of enumerable should be obtained from its elements; close #1658
adjust lineno after continuing script files using mrb_partial_hook; close #1652
string.c: remove str_mod_check
remove superfluous includes
skip “trace:” header if no backtrace line exists
adjust proc->target_class according to surrounding proc->target_class; based on a patch from @Fleurer; close #1627
need not to initialize ci->err at toplevel
avoid decrimenting eidx out of ecall()
execute ensure clause correctly without OP_EPOP
object_id may not return Fixnum (ISO says Integer), since intptr_t may be bigger than Fixnum, so type check for Numeric; ref #1630
should splat and iterate elements when “*ary” speficied in the case-when clause; close #1627
pop ensure stack before execution; close #1638
always clear ci->err
quicker release of arena after ensure calls
mrb_ary_splat() to call #to_a
use macros for assignments to ci->err
use the same error msg as mrb_str_to_cstr/CRuby
remove various preprocessor conditionals
tiny word boxing optimization
NaN boxing: use uintptr_t for bit manipulations
codegen.c: remove superfluous return
return value from #object_id may not be Fixnum; ref #1630
successful recursion check to be shallower; ref #1630
return-value of mrb_run is invalid in top-level-scope
use static symbols for debug filename info
avoid copying when the original string comes with MRB_STR_NOFREE
clear STR_NOFREE flag on modify
zero copy str_new from static allocate irep
zero copy intern from static allocate irep
rename mrb_intern_litral -> mrb_intern_static
class/module body to honor whether value is required or not; reduce a few instructions for normal cases
zero copy C literal strings in symbol table
remove MRB_IREP_ARRAY_INIT_SIZE which is no longer used
string type check based on #to_str to encourage duck typing; #1616
verify the argument of String#=~
Remove ‘mrb_state’ field from ‘kh_xxx_t’ structure.
change behavior of mrb_sym2str
remove unnecessary keep size adjustment in stack_extend_alloc(); close #1602
Change scapa and rcapa to size_t, use scapa.
add mrb_intern_lit for creating symbol from string literal
inline mrb_gc_arena_restore() and stack_extend() in VM loop
float objects in pool are objects when MRB_WORD_BOXING is set
move debug record size assertion to correct position
append defines instead of assigning
add CFLAGS as a fallback from CXXFLAGS; ref #1594
remove MRB_PARSER_BUF_SIZE configuration; close #1596
Modify referenced environment variables.
declare struct mrb_irep.
need to free pooled string bodies as well
mrb format should be portable among configurations (e.g. MRB_NAN_BOXING)
irep->pool struct pool -> mrb_value
parser_dump() is not used in mrbc; close #1561
codegen_malloc/realloc: static + simple mem alloc
write_debug_record should dump info recursively; close #1581
check upper callinfo to call ensure block; close #1579
should output debug info for child ireps; close #1575
enum mrb_vtype varies on compile time configuration, namely MRB_NAN_BOXING
remove warning on NAN_BOXING
remove unnecessary jump
Changed a variable declaration to top of block
Changed a variable declaration to top of block
load_exec() no longer return fixnum value for no_exec; should close #1569
fclose input file
call codedump_all() from mirb if –verbose is set; close #1559
check for corrupted mrb file data
protect returning irep (in proc) from GC
allow irep to be GCed
nextc(): always return an ‘\n’ at end of input
type check before pool scan
create Proc object before releasing memory pool
modified to use irep->reps to reference child ireps. preparation for removing irep array from mrb_state. note that instructions OP_LAMBDA, OP_EXEC and OP_EPUSH are incompatible, and dumped mrb format has changed.
mrbc: add line break for -c option
codedump() to take irep structure
change return value from mrb_generate_code()
changed argument type of mrb_ary_modify(); ref #1554