This articles was published on 2012-12-01

[November 2012] mruby news

First of all I want you to point to a patch I’m working on for the last 2 month. It is about an easy and standardized way to integrate extensions into mruby with the working title mrbgems. Some people have tried it out and it worked well for them. So I’m looking forward if you also could have a look at it and give me some feedback to make it better. So that maybe beginning of next year I can report about a successful merge of this feature :)

What happened else on the mruby front in November 2012?

Module improvements

skandhas has done an incredible awesome job in improving Module. Including the following parts:

  • Module#class_eval
  • Module#module_eval
  • Module#instance_methods
  • Module#include?
  • Module#class_variables

Module misc

f6c44d0dffb6d82206ee894eefee24262878ba93, 52f7e8372651036847dc3a4a765f4d25d2bb4665

Module#class_eval

053c104f2ba6aa0e94bd2c9e9fd17123746a8f43, 1311c828c687e5d192ed6a14d50bd1864faf8df9

Module#module_eval

3fbeb298a6943c59567b0b3a8b8d50104858d8c1, 861bcad53a4f4c47942ba5ab0155c1594829ebd1, 940eb786e4bfcd747480b2d3bffe541b537fb3fd

Module#instance_methods

1f3c5125648e10ac5d9dc90be66025b4741fa24d, 5e8dc8cd44f501943acbd58229eb6b97894aecaf, 6fb74ac167f6b7e55d126159764ed7dca0c400d5

Module#include?

25a02a5b8b7954fa197d42d208ee257a4a8d9c96, cd8e9c14636fbef835328e50834d0baa41a0e0cf, 59035eb33d5e1b276a1269a38f2cce421a528470

Module#class_variables

40aa8e99e11404e00030b511fa8e9e037ddf6939, 38ce9516aa4611110b3084699db6c18cf7e99ad9, 9dbbd02ac5e57a2b135642784f75665f8afe229b, 1cc44cfd78e00879e983ffa320e16a2d99558067

String improvements

Several parts of String were improved. Mainly bufixes.

String#each_byte

b9cf5045b7e10ad722475a432db4fe1b38987cbd, 8d9f5628eda4f1353c2578900b6396a7e06f281b, 57910ca5353e1feba1fb069a876b84a52f33d39f, fe36bdb7f12050254f02a5f2c3a75623dfd289c0

adjust string length after String#chomp!

d090f3eedb89e64b57765c86eb5bc916abf8b054

delete needless output in String#[]=

8a43ec75a0ce6088d1c2ae96f33fe9fed193b1b8

fix the issue String#slice with Range may return broken String

b1f5840aefe0c4edac9dc3f238bdb757521eb67c

Cleanup MRI left-overs

Considering that mruby is still quite alpha and still quite young it already has some kind of legacy. Mainly due to the reason that some parts of the current implementation were taken over from the CRuby implementation (aka MRI). Mostly they are EASYRECOGNISABLE. Matz took some time this month and clean up quite a lot of these parts and replaced them with a more mrb_fitting style.

remove ROBJECT_{IVPTR,NUMIV}

3e1dd77b16c3ade7d1c84cb5ec84c4748ed9415c

replace RBASIC by mrb_basic

c903910c6b8f82b7f158a189b1671296618b0fe0

remove NUM2CHR macro

3e22c939e6f1968c46e251c363de49c1fd0fd9f1, a354aca8b4897278a0a0d5681a09aec458ce89d1

remove FL_XXX macros

902dd6380317e73b7dc99b64e04a75ac47fa5db0

replace SYM2ID() by mrb_symbol()

e429905597bff1e0fefb426ef22d5b3ea80e76f5

remove reference to ruby_verbose and ruby_debug

ca7c662be5debb85b38063807c6f3034d1156d5f

replace RTEST() by mrb_test_p()

15304c194d86544cc7cc7138cec1bf4bdcbcaeb5

replace SYMBOL_P() by mrb_symbol_p()

051777dc5de7e16ab28d39530fc0bb8101323e2c

replace FIXNUM_P() by mrb_fixnum_p()

3ba521ae9e238c91198404845e4f213ce541b13d

add new predicates mrb_string_p(),mrb_array_p(),mrb_hash_p()

d2d2e9f5f9267c2583aa542b4066d109a07b742e

add mrb_float_p()

da88627a37cb1d5ca8d31bb14f3b3d8bb4d7e33e

Test improvements

mruby is currently using an own testing framework called mrbtest. These are some additions and changes to the current test framework.

add test for ‘Abbreviated variable assignment as returns’

a100352595794ec1f1a1aaa5ae1654bc29d21192

New Bootstrap Block Asserts

6c8d2ca3995bbefa00ca04e5275b103f7e59dcd6, 385f129acaa1c84f2d61026b5b240e5f3f70058a, a316e92da3d9e54c09806f2e231a4c0eed5a8c7d

add test for issue#547; close #554

ac0233bcd08358b35edce76171929121f8ee656f

typo fix on test/report.rb

fdefaf9f7d02a2b43d25bccaecca7ec530f77384

fix mrubytest dependencies

8d3baf62294ce9bd15b4c24d67d69d289776f5c9

add mruby/mrbc tests

cd2c7c7532b91818b57e7f54ce5ed4553ae3964c

add test for 8cf42709

308b41c12b3095a5dec85ca89d32a5b196434141

Compilation improvements

Due to the reason that one target of mruby is a platform independent usage, all the time we need to fix the compatibility for different platforms and compilers. This is what was done here.

Fix build on c++ compiler

4bbf7a3e12af8a8c4d7a34c19b3147bd0ade4eed

fix compilation

650008bf9e25e4076937e8377185c69e5f7d5a53

compatible with MSVC

922d50a694c31917da58348857856f65e6e46062

mirb

Fix compile warnings in mirb Change last_char type to int Warnings mirb.c:174:7: warning: comparison is always false due to limited range of data type [-Wtype-limits] warning: comparison is always false due to limited range of data type [-Wtype-limits]
83ecb2f078234bca084b934bb086e9f13cb967f6