New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

performance improvement patch #7

Merged
merged 3 commits into from Dec 26, 2012

Conversation

Projects
None yet
2 participants
@cubicdaiya
Contributor

cubicdaiya commented Dec 24, 2012

Hi, this patch makes ngx_mruby run greatly faster.
Previous ngx_mruby parses a mrb file or string with processing each request.
This patch makes each handler has one mrb_state and init mrb_state only at first.

The following is the benchmark report with ab.

my environment

  • OS -> Linux Mint 13(Linux bokko-mint 3.2.0-35-generic #55-Ubuntu SMP Wed Dec 5 17:42:16 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux)
  • GCC 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)
  • nginx-1.3.8

nginx configuration

worker_processes  4;

events {
    worker_connections  1024;
}

http {
    server { 
        listen       8000;
        server_name  localhost;
        location /mruby {
            mruby_post_read_handler /home/bokko/workspace/nginx/ngx_mruby/example/post_read.mrb;
        }
    }
}

not applied this patch

$ ab -n 10000 -c 2 "http://localhost:8080/mruby"                                                                                          (git)-[improvements/mrb_singleton]
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        nginx/1.2.6
Server Hostname:        localhost
Server Port:            8080

Document Path:          /mruby
Document Length:        323 bytes

Concurrency Level:      2
Time taken for tests:   6.166 seconds
Complete requests:      10000
Failed requests:        5972
   (Connect: 0, Receive: 0, Length: 5972, Exceptions: 0)
Write errors:           0
Non-2xx responses:      5964
Total transferred:      3977276 bytes
HTML transferred:       2447996 bytes
Requests per second:    1621.86 [#/sec] (mean)
Time per request:       1.233 [ms] (mean)
Time per request:       0.617 [ms] (mean, across all concurrent requests)
Transfer rate:          629.94 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     1    1   4.4      1     312
Waiting:        1    1   4.4      1     312
Total:          1    1   4.4      1     312

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      1
  98%      1
  99%      2
 100%    312 (longest request)
$

applied this patch

$ ab -n 10000 -c 2 "http://localhost:8080/mruby"                                                                                          (git)-[improvements/mrb_singleton]
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        nginx/1.2.6
Server Hostname:        localhost
Server Port:            8080

Document Path:          /mruby
Document Length:        282 bytes

Concurrency Level:      2
Time taken for tests:   1.346 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Non-2xx responses:      10000
Total transferred:      4740000 bytes
HTML transferred:       2820000 bytes
Requests per second:    7428.93 [#/sec] (mean)
Time per request:       0.269 [ms] (mean)
Time per request:       0.135 [ms] (mean, across all concurrent requests)
Transfer rate:          3438.78 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:     0    0   0.1      0       4
Waiting:        0    0   0.1      0       4
Total:          0    0   0.1      0       4

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%      0
  95%      0
  98%      0
  99%      0
 100%      4 (longest request)
@matsumotory

This comment has been minimized.

Show comment
Hide comment
@matsumotory

matsumotory Dec 25, 2012

Owner

Thank you for your contribution. but, This pull-request include other patch like my patch(add9771). I think your commit is 2c7da2a and 44b3ad7. Could you pull last code of ngx_mruby and arrange your commit? Then Could you send pull-request again?

Owner

matsumotory commented Dec 25, 2012

Thank you for your contribution. but, This pull-request include other patch like my patch(add9771). I think your commit is 2c7da2a and 44b3ad7. Could you pull last code of ngx_mruby and arrange your commit? Then Could you send pull-request again?

@cubicdaiya

This comment has been minimized.

Show comment
Hide comment
@cubicdaiya

cubicdaiya Dec 25, 2012

Contributor

I fixed and arranged my commits. please check!

Contributor

cubicdaiya commented Dec 25, 2012

I fixed and arranged my commits. please check!

@matsumotory

This comment has been minimized.

Show comment
Hide comment
@matsumotory

matsumotory Dec 25, 2012

Owner

Why did you removed ngx_mrb_raise_file_error?

Owner

matsumotory commented Dec 25, 2012

Why did you removed ngx_mrb_raise_file_error?

@cubicdaiya

This comment has been minimized.

Show comment
Hide comment
@cubicdaiya

cubicdaiya Dec 25, 2012

Contributor

Why did you removed ngx_mrb_raise_file_error?

ngx_mrb_raise_file_error is the function for ngx_mrb_run_file.
But ngx_mrb_run_file is the inefficient funtion and this patch makes ngx_mrb_run_file unneeded.
So I removed it.

Contributor

cubicdaiya commented Dec 25, 2012

Why did you removed ngx_mrb_raise_file_error?

ngx_mrb_raise_file_error is the function for ngx_mrb_run_file.
But ngx_mrb_run_file is the inefficient funtion and this patch makes ngx_mrb_run_file unneeded.
So I removed it.

@matsumotory

This comment has been minimized.

Show comment
Hide comment
@matsumotory

matsumotory Dec 25, 2012

Owner

ngx_mrb_raise_file_error is not for ngx_mrb_run_file but for which ruby scripts raise error. For example,

2012/12/25 17:47:11 [error] 15317#0: *204 mrb_run failed. file: /usr/local/nginx122/html/redis.rb error: NoMethodError: undefined method 'r' for nil, client: 123.151.148.188, server: localhost, request: "GET / HTTP/1.1",

If ngx_mrb_raise_file_error is removed, we don't know the file which has raised error.

Owner

matsumotory commented Dec 25, 2012

ngx_mrb_raise_file_error is not for ngx_mrb_run_file but for which ruby scripts raise error. For example,

2012/12/25 17:47:11 [error] 15317#0: *204 mrb_run failed. file: /usr/local/nginx122/html/redis.rb error: NoMethodError: undefined method 'r' for nil, client: 123.151.148.188, server: localhost, request: "GET / HTTP/1.1",

If ngx_mrb_raise_file_error is removed, we don't know the file which has raised error.

@matsumotory

This comment has been minimized.

Show comment
Hide comment
@matsumotory

matsumotory Dec 25, 2012

Owner

Your patch don't run fclose() after fopen(). That is a frequent cause of lack of fd on a worker process. So you should add fclose() bellow the mrb_parse_file() line in this patch.

Owner

matsumotory commented Dec 25, 2012

Your patch don't run fclose() after fopen(). That is a frequent cause of lack of fd on a worker process. So you should add fclose() bellow the mrb_parse_file() line in this patch.

@cubicdaiya

This comment has been minimized.

Show comment
Hide comment
@cubicdaiya

cubicdaiya Dec 25, 2012

Contributor

I see. How is that?

Contributor

cubicdaiya commented Dec 25, 2012

I see. How is that?

@cubicdaiya

This comment has been minimized.

Show comment
Hide comment
@cubicdaiya

cubicdaiya Dec 25, 2012

Contributor

Your patch don't run fclose() after fopen(). That is a frequent cause of lack of fd on a worker process. So you should add fclose() bellow the mrb_parse_file() line in this patch.

Sorry. I added fclose().

Contributor

cubicdaiya commented Dec 25, 2012

Your patch don't run fclose() after fopen(). That is a frequent cause of lack of fd on a worker process. So you should add fclose() bellow the mrb_parse_file() line in this patch.

Sorry. I added fclose().

@matsumotory

This comment has been minimized.

Show comment
Hide comment
@matsumotory

matsumotory Dec 26, 2012

Owner

Thanks! Your approach for performance improvement is very nice. This approach was used by mod_mruby. If I have time, I have been implementing it. You helped me a great deal.

Owner

matsumotory commented Dec 26, 2012

Thanks! Your approach for performance improvement is very nice. This approach was used by mod_mruby. If I have time, I have been implementing it. You helped me a great deal.

matsumotory added a commit that referenced this pull request Dec 26, 2012

Merge pull request #7 from cubicdaiya/master
performance improvement patch

@matsumotory matsumotory merged commit e0c5379 into matsumotory:master Dec 26, 2012

@matsumotory

This comment has been minimized.

Show comment
Hide comment
@matsumotory

matsumotory Dec 26, 2012

Owner

In my environment, the following benchmark result by ab is cool.

  • nginx.conf
worker_processes  4;

events {
    worker_connections  1024;
}
        location / {
            root   html;
            index  index.html index.htm;
            mruby_content_handler_code "Nginx.rputs 'hello mruby world!'";
        }
  • ab
ab -k -c 100 -n 100000 http://127.0.0.1/
  • result
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/1.2.2
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /
Document Length:        18 bytes

Concurrency Level:      100
Time taken for tests:   2.187498 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99046
Total transferred:      16397198 bytes
HTML transferred:       1800216 bytes
Requests per second:    45714.33 [#/sec] (mean)
Time per request:       2.187 [ms] (mean)
Time per request:       0.022 [ms] (mean, across all concurrent requests)
Transfer rate:          7319.78 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       8
Processing:     0    1   6.6      1     189
Waiting:        0    1   6.6      1     189
Total:          0    1   6.6      1     189

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      2
  80%      3
  90%      4
  95%      6
  98%      9
  99%     12
 100%    189 (longest request)
Owner

matsumotory commented Dec 26, 2012

In my environment, the following benchmark result by ab is cool.

  • nginx.conf
worker_processes  4;

events {
    worker_connections  1024;
}
        location / {
            root   html;
            index  index.html index.htm;
            mruby_content_handler_code "Nginx.rputs 'hello mruby world!'";
        }
  • ab
ab -k -c 100 -n 100000 http://127.0.0.1/
  • result
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/1.2.2
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /
Document Length:        18 bytes

Concurrency Level:      100
Time taken for tests:   2.187498 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99046
Total transferred:      16397198 bytes
HTML transferred:       1800216 bytes
Requests per second:    45714.33 [#/sec] (mean)
Time per request:       2.187 [ms] (mean)
Time per request:       0.022 [ms] (mean, across all concurrent requests)
Transfer rate:          7319.78 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       8
Processing:     0    1   6.6      1     189
Waiting:        0    1   6.6      1     189
Total:          0    1   6.6      1     189

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      2
  80%      3
  90%      4
  95%      6
  98%      9
  99%     12
 100%    189 (longest request)

yyamano added a commit to yyamano/ngx_mruby that referenced this pull request Jan 10, 2018

Squashed 'mruby/' changes from 7f9e333..6234362
6234362 Merge pull request #3916 from mimaki/mruby-socket-cygwin-test
f55df0d addrinfo.ai_protocol was not set on Cygwin.
bce811a Disabled UNIXSocket test on Cygwin
6b09692 Add `Integer#{allbits?,anybits?,nobits?}. [Ruby2.5]
3d7141b Move `Intefer#chr` to `Integral#chr`.
ad17ba0 `KeyError` from `Hash#fetch` should inspect key.
e4a9b4a `Enumerable#{one?,none?,all?,any?} to take pattern argument [Ruby2.5]
421819d Add `Hash#slice` [Ruby 2.5]
df68a33 `assert_equal()` takes result as the first argument
2a5545c Update `Kernel#method_missing` tests for new `NoMethodError` message.
6999e45 Do not include object string representation in `NoMethodError` message.
ca0f32a `super` should raise `TypeError` when the receiver is switched; fix #3911
aa8786f Do not initialize a local variable soon to be assigned.
7e52083 Avoid infinite recursion in `method_missing`; ref #3908
44b4f69 May need more stack space in `mrb_funcall_with_block`; fix #3908
8d7e952 Add `#module_exec` and `#class_exec` in `mruby-class-ext` gem.
7fbbd7a Should not overwrite `ci->target_class` in `mrb_exec_irep()`.
7990bb7 Merge pull request #3913 from llothar/master
06f90a3 Make source compilable with C++17 Changes applied:
100f0e6 Do not need to take `target_class` from the upper proc.
73b05f0 Should not overwrite `MRB_PROC_TARGET_CLASS(p)` if `p` has env; fix #3905
165e7b1 Fixed method look-up for `method_missing` in OP_SUPER; ref #3905
d0f6018 The superclass info should be taken from `TARGET_CLASS(ci->proc).
d9049c1 Merge pull request #3904 from ksss/mruby-method
bba6c9a Fix descriptor leakage; ref #3903
e5056d0 Fix `fptr` leakage; ref #3903
83d02bc Use `_dup2` instead of `dup2` on Windows; ref #3903
5e22e8e `open` on Windows takes `int` 3rd argument instead of `mode_t`.
c0914db mruby/data.h doesn't need
b4dcb8f Use `_dup` instead of `dup` on Windows; ref #3903
615f296 Clean up some files and docs
ae786b1 Shouldn't use alloca
a510564 Merge pull request #3903 from ksss/io-dup
b83ff8c Add mrbgems/mruby-method
35185e6 Implement IO#initialize_copy
ddb1aae Need to set `ci->proc` before calling methods; fix #3902
03614ed Need to clear exception handler on `return`; fix #3898
05129ab Check if destinations are too distant; fix #3900 fix #3901
7ecb96a Merge pull request #3897 from mimaki/initialize-is_socket
4103952 Initialized mrb_io.is_socket
5b304c1 On Windows, `_S_IREAD` and `_S_IWRITE` is defined in `sys/stat.h`.
7ac3933 Use `_open` and `_close` on Windows.
ebf4993 Merge pull request #3895 from mattn/fix-mkstemp
e7e5db5 fix mkstemp implementation for MSVC
f0379c8 Merge pull request #3892 from mimaki/ipproto-winsock
16e473c Rename `BasicSocket#is_socket=` to `#_is_socket`; ref #3878
69ad12d Exclude `UNIXSocket` tests again; ref #3878
d2163d1 Declare super class in socket.rb.
949bf6c Fix socket closing by using `closesocket` API in windows instead.
2300c9f Merge pull request #3893 from mimaki/add-mrbgem-summary
dc5de38 Merge pull request #3894 from mattn/mirb-locale
1a150a6 Merge pull request #3891 from mimaki/set-addrinfo-protocol
0ab9ac6 fix locale in mirb
584e4e4 Added mrbgem's summary.
9fac1a3 Use IPPROTO enum values on WinSock.
398da99 Set protocol of AddrInfo
55fced3 Use `_tempnam` instead of `tempnam` on Windows.
a3925f3 Merge pull request #3889 from mattn/fix-crash
aec65f2 Merge pull request #3890 from mimaki/mruby-socket-windows-test
4353623 Skip tests on Windows platform
6123d65 fix crash bug on Windows
fa33bd8 Remove VC++ compiler warnings.
7d940e3 Merge pull request #3888 from mattn/fix-locale
16c2ac2 fix path locales
e143874 Skip `test/t/float.rb` tests; ref #3827
11b6696 Retrieve operands at the beginning of `OP_SCLASS`.
e647b16 Should not define `Float` class in `mrblib/00class.rb`; ref #3828
ad06781 Fixed wrong `MRB_WITHOUT_FLOAT` condition; ref #3827
c669785 Reduce VC++ type mismatch warnings.
5a5adaf Merge pull request #3886 from mattn/io-windows
b072695 fix build for MSVC
e0e23b1 close file descriptors
7c8c9f9 mingw have mkstemp
7ff907f fix test
f1ea7a3 implement flock on Windows
df2c377 fix compilation error
f6f8bb2 fix compilation error
06ec17d add definition for pid_t on MSVC
d549603 close handle
b8ca0b7 implement popen on Windows
c863e0d Merge pull request #3885 from Shokuji/cygwin_mruby_io_test
c6ea948 Revert "Update `.travis.yml` to use `gcc-6`"
346ebfb Merge pull request #3882 from mattn/fix-filename
25bee35 Merge pull request #3884 from mimaki/mruby-io-test-on-windows
17cd7a6 fix wrong variable name
bceb664 fix compilation error
977f794 use filename in locale
bbb0882 Modifying frozen objects will raise `FrozenError`.
d4ff92b Do not use `FIXABLE` when `mrb_int` is big enough.
3d98fa2 Reduce type mismatch warnings in pack.c.
a5b8603 Winsock uses `int` where UNIX uses `size_t`.
a9e434e Merge pull request #3883 from mattn/fix-ssize_t
e71a6a7 fixed mruby-io so that the test passes on cygwin
5ef8f18 Fixed mruby-io test failure on Windows platform.
9932869 fix build on mingw
9c0426c Winsock does not provide `ssize_t`; Use `int` instead.
2db06c4 Revert "Update .travis.yml"
08a508c Fixed the mixture of `int` and `long` in `mruby-pack`.
5bf60b4 Merge pull request #3881 from mame/mrb_without_float-for-mruby-io-and-mruby-pack
d96b2c9 Support MRB_WITHOUT_FLOAT to mruby-io and mruby-pack
85fc9b8 Merge pull request #3880 from mruby/matz-patch-1
f73ac41 Update .travis.yml
0e452a7 Update .travis.yml
b763759 Reduce VC++ compiler warnings.
c76631d Update `.travis.yml` to use `gcc-6`
6d42195 Add `enable_sanitizer` method for clang and gcc.
274884a Reduce VC++ compiler warnings.
761218e Skip socket tests on Windows platform.
b103fa2 `File.symlink` may not be implemented on some platforms; ref #3877
bda273f Merge pull request #3877 from bamchoh/patch-3
6bc38f4 Merge pull request #3876 from bamchoh/patch-2
0ded91c Skip "File.readlink fails" test on MSVC
81dc383 Use same format between Fail and Skip
550c878 Use `RL_READLINE_VERSION` to determine `rl_free` existence; fix #3875
e17092d Merge pull request #3874 from mimaki/fix-mingw-compile-error
c47a198 Merge pull request #3873 from take-cheeze/fix_socket_test_leak
7f3bda5 Fixed compile error of `mruby-io` gem on MinGW.
5de7dc2 Fix memory leak found by leak sanitizer.
83065df Reduce compiler warnings from `mruby-io` gem.
f9d1d72 Avoid VC++ reserved word `template`.
36a0b86 Reduce VC++ compiler warnings.
f120757 Uninitialized value returned.
6ebcb74 AppVeyor compile errors resolution.
9df7bce AppVeyor compiler does not proved some POSIX functions.
b724e06 Avoid uninitialized local variables in `mruby-pack`.
bc9e3e6 Add type cast to `readline(2)` return value.
764a568 Remove unused variable `usock` from `mruby-socket/src/socket.c`.
ff1194c fixup! Fix type casting errors when `mruby-socket` compiled by C++.
a5412d4 Add 'mrbgems/mruby-pack/' from commit '383a9c79e191d524a9a2b4107cc5043ecbf6190b'
842e694 Fix type casting errors when `mruby-socket` compiled by C++.
73ef548 Add 'mrbgems/mruby-socket/' from commit 'ab54185005ec87fe4f5b10df95ad29659884141b'
d75266d Add 'mrbgems/mruby-io/' from commit '3c8e1f94c44252c836f79a48bb17726da28e2756'
10ed730 Cancel df3507660 that does not do any good.
cdf173d Avoid updating to reallocated stack in `OP_RETURN`; fix #3870
0e46b14 The `ci` should not be equal to `cibase` with `OP_R_BREAK`; #3871
6975258 The proc with top-level env must be 'proc-closure'; fix #3871
ae44e80 Limit `ecall()` depth to 32 (default).
b00d45b `mrb_method_search_vm()` should gives the defined class.
4a99f49 Need to set `ci->proc` when we have `RProc` structure.
cbb6f29 Merge pull request #3868 from bamchoh/patch-1
940133b Revise MRB_METHOD_PROC macro's argument
1fea634 Some OS uses `libedit` that does not provide `rl_free()`.
0b5d97e Need to unshare env stack on `break`; fix #3866
6f4d4bb Remove temporary objects from GC arena in `mrb_vformat()'; #3863
5d04e33 Check if `ci->proc` is not `NULL` and `MRB_PROC_CFUNC_P()`; fix #3867
ff8b608 Free read lines using the deallocation function from the library.
cd9f53d Pop exception objects from the bottom of GC arena; fix #3863
c35a402 The stack shift width should be determined by `p->upper`; fix #3864
86ef9a2 Avoid calling `mrb_env_unshare()` when `env` is `NULL`.
2b9f762 Avoid double free() of env stack; fix #3860
d3e273b Wrong stack adjustment in `ecall()` (f35f975 #3859); fix #3862
f3279b4 Stop infinite recursion in `Class#to_s`; fix #3861
5f7cdec Clear `c->prev` on fiber termination.
b746a0f Need to free contexts when freeing fibers.
9c78a9b Set `MRB_FIBER_TERMINATED` flag on exception termination of a fiber.
b7c3a87 Add `most recent call last` message to the backtrace.
3e67a11 Call all ensure clauses pushed at `OP_STOP`.
afa5380 No need to use `ecall_adjust()`.
f35f975 Fixed stack address adjustment in `ecall()`; fix #3859
d4fc980 Need to evaluate ensure clauses at fiber termination.
6bb5ad7 Remove unnecessary code; ref #3711
597149a Change newline style of test/t/lang.rb (from DOS)
b4f9b03 Some cosmetic changes
284a1d1 Provide shortcut comparison methods for numbers for performance.
0ab21a9 Stack adjustment should be based on `p->upper`; fix #3857
fbafa78 Clear ensure stack after calling in `OP_EPOP`; #3855 3856
4665b07 No need to pop ensure stack if `eidx` is smaller than `epos`; #3855 #3856
fe3ac50 fixup! Remove fixed argument of `ecall()`; ref #3855 #3856
cb4b042 Remove fixed argument of `ecall()`; ref #3855 #3856
393133e Should have marked all ensure stack entries; fix #3855 fix #3856
8b7a897 Reduce the size of `struct RBreak` to reduce memory usage.
8f2c624 Add `MRB_METHOD_TABLE_INLINE` option.
6c06e77 Add `MRB_METHOD_CACHE` description to `include/mrbconf.h`
6a9efd6 Invoke `mrb_full_gc()` before `ObjectSpace.count_objects`.
9b2454c Leave `hash->ht` to be `NULL` if initial capacity is zero.
7405821 doc/limitaions.md: Remove infinite recursion entry.
86f9254 doc/limitaions.md: Remove `Kernel.binding` entry.
825e93e Assign operands to local variables.
31ce73d Merge pull request #3853 from ukrainskiysergey/variable_c_cosmetic_changes
a2d0ee5 Removed useless condition
269f9f2 Merge pull request #3852 from dabroz/feature-array-transpose
e65fa4d implement Array.transpose
d01003c Merge pull request #3851 from ukrainskiysergey/variable_c_cosmetic_changes
ddd32d7 Changed the assignment of a variable in variable.c
74714c8 Changed numbers to TRUE and FALSE for mrb_bool in variable.c
c8da602 Need to save stack space by number of registers from the current proc,
03a3bd9 The number of argument should be retrieved by `mrb_get_argc`; fix #3848
c210a8a Fixed wrong stack extend size; fix #3847
181f980 Need to clear stack region for local variables in eval; fix #3844
41c8c41 Use proper target_class to define class/module; fix #3843
f723832 Should allocate memory region before updating `len`; fix #3842
7ae20e0 Simplify `MRB_WITHOUT_FLOAT` condtion
37f6e42 Removed redundant function prototype.
d6cb4f9 Merge branch 'pandax381-mrb_without_float'
a751f7f Make `mirb` to print warnings; ref #3827
fef4b39 Avoid compiling `fmt_fp.c` if `MRB_WITHOUT_FLOAT` is set; #3827
de2363a Merge branch 'mrb_without_float' of https://github.com/pandax381/mruby into pandax381-mrb_without_float
388d26d Reimplement `block_given?`; ref #3841
ab27abe The `bidx` saved in `env` may be useless; fix #3841
625f9f6 Merge branch 'master' of github.com:mruby/mruby
e7fe6ee Avoid pointer arithmetic in backtrace.c; #3816
12e3859 Always check division-by-zero to avoid undefined behavior; fix #3816
d489b41 Reduce memory leaks from `mirb`.
e4662d7 Should not use `FSHARED` state for string from `irep` pools; fix #3829
13a318b Merge pull request #3840 from iij/keep-backtrace-rethrown-exc
f689675 don't overwrite backtrace info.
ddfb249 Fixed constant (and class variable) reference bug; fix #3839
022570a Call stack may not reference the destination `proc`; fix #3838
b6598e0 Need to mark fibers referenced from `env`; fix #3837
77edafb Need to check number of argument of `Struct#new`; fix #3823
59dc7d0 Removed a debug printf; fix #3834
1b45e03 Remove one of the lines that did the same thing; fix #3836
6316e0c Should clear ensure stack at `OP_RETURN break`; #3715
92e24f8 Should check if `callinfo` stack is popped before updating the stack.
c7c9543 Fixed UPVAR gotchas; fix #3835
57dad6e Remove a debug variable
23d18bb Add parentheses to pacify a warning.
93f5f22 Heavily refactored how lexical scope links are implemented; fix #3821
3f9d00d comment out `bench` build from standard `build_config.rb`
4614b9d remove `inline` from replacement `memcpy`&`memset`
5405b47 Update test for `Kernel#local_variables`
1487746 Remove MRB_API from `mrb_env_unshare()`
07cf7b1 Add some peephole optimizations
6c966a1 Change the order of "expected" and "actual" in test
0cf5a0e Use alias to implement `attr` method
fda64be Flush stdout after every print from tests
71eeb86 Format codedump for OP_{LE,LT,GE,GT}.
d08205b Merge pull request #3833 from bggd/appveyor_winbison_ruby24
7f4cc0d Turn on method cache for AppVeyor CI
7a13e89 Use Ruby 2.4 instead of AppVeyor's Default(Ruby 1.9)
8a9b6c4 Use win_bison instead of Cygwin's bison. Use YACC environment variable instead of global PATH
0c3ee0b Add `Array#{permutation,combination}.
f239485 Add `main.define_method`
3c8e1f9 Merge pull request #94 from kazuho/kazuho/rename-compatibility
fc93070 Add `Kernel#itself`; CRuby2.2
ce916b9 Add `Hash#to_proc`; CRuby2.3
b5dfbce Add `Numeric#{positive?,negative?}`; CRuby2.3
44f0704 Add `Hash#fetch_values`; CRuby2.3
913b83d Merge branch 'dabroz-fix-get-argc'
3c20c96 Use a new function: `mrb_get_argc()`; ref #3826
b890528 Remove `mrb_vm_get_argc`; ref #3826
344a7ce Merge branch 'fix-get-argc' of https://github.com/dabroz/mruby into dabroz-fix-get-argc
4122c32 Add `{String,Symbol}#casecmp?`; CRuby2.4
db8265f Add `Comparable#uniq`; CRuby2.4
4e36515 Add `Comparable#clamp`; CRuby2.4
061d804 Add `Numeric#{finite?,infinite?}`; CRuby2.4
332d8d2 Add `String#delete_{prefix,suffix}`; CRuby2.5
1519616 Add `Kernel#yield_self`; CRuby2.5
c96def7 Remove top-level constant lookup; CRuby2.5
e59ad60 `do/end` blocks to work with `rescue/ensure/else`; CRuby2.5
fb85855 Add more checks before accessing struct pointer; ref #3831
be2c159 Check struct-array pointer before accessing; fix #3831
1988bec Need to adjust the stack length of the top-level environment; fix #3819
c3710db Fix a compile error on zero mrbgem case.
6b0c22e Merge pull request #3830 from dearblue/fix-alias-for-struct-accessors
b70d69d Support MRB_WIHTOUT_FLOAT to mruby-kernel-ext
9afd376 Support MRB_WIHTOUT_FLOAT to mruby-object-ext
b0cdb93 Support MRB_WIHTOUT_FLOAT to mruby-numeric-ext (test only)
9c1f21a Support MRB_WIHTOUT_FLOAT to mruby-string-ext
44e2c97 fix alias for Struct accessors
5d78131 Support MRB_WIHTOUT_FLOAT to mruby-sprintf
fa974a1 Merge pull request #3828 from asfluido/master
af3d5d6 Correct a small error in parse.y, which causes the reading of unassigned memory (triggers an error when address sanitizer is active)
0d92431 make the behavior consistent with MRI
81ea81e Fix typo
3eebe81 Upadte AUTHORS
dcd5d0f Test for MRB_WITHOUT_FLOAT
acdc2d1 Add MRB_WITHOUT_FLOAT
679dfd7 Use division expression instead of some floating point literals
be86d8b correctly handle *splat arguments in mrb_get_argc, also add mrb_vm_get_argc and mrb_get_argv
80e03f3 Merge pull request #3824 from nobu/bug/paren_arg
8298333 Fix parse error on TRICK2013/yhara
1c2a282 Replace lvar_defined with local_var_p
f812195 Merge pull request #92 from palkan/master
43795cb Remove useless mrb_str_modify
4c255c7 Handle shared/frozen strings in IO#sysread
c3c882f Use `uint32_t` to avoid signed integer overflow warning; #3816
8c40837 Add `cscope.files` to `.gitignore`.
7edbe42 Add new type of shared string: `RSTR_FSHARED`.
473b7d0 Cut links from `irep` in heaps finalization.
7b01b96 `codedump` to display `OP_CALL`.
29a9e69 Merge pull request #3815 from dabroz/fix-warnings
999ce87 fix: src\vm.c(2631): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
77d6a95 fix: src\vm.c(1757): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
ebd45b1 fix: src\vm.c(1744): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
0bff4b6 fix: src\vm.c(1702): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
885916c fix: src\vm.c(708): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
e88fc10 fix: src\vm.c(704): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
ec7f478 fix: src\vm.c(457): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
67ab840 fix: src\vm.c(445): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
23cc698 fix: src\vm.c(438): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
5ede90c fix: src\vm.c(438): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
53f934a fix: src\string.c(2219): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
ef8df49 fix: src\string.c(1924): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
027b8d8 fix: src\string.c(1130): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
46ccaba fix: src\string.c(497): warning C4244: '=': conversion from 'mrb_int' to 'long', possible loss of data
6cde950 fix: src\state.c(66): warning C4200: nonstandard extension used: zero-sized array in struct/union
0e2976b fix: src\range.c(136): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
b7e71e4 fix: src\proc.c(96): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
490de9d fix: src\print.c(22): warning C4244: 'initializing': conversion from 'mrb_int' to 'int', possible loss of data
220c628 fix: src\pool.c(33): warning C4200: nonstandard extension used: zero-sized array in struct/union
f0c1074 fix: src\numeric.c(1215): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
4a0c9c9 fix: src\numeric.c(954): warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
332a04a fix: src\numeric.c(897): warning C4244: 'function': conversion from 'mrb_int' to 'mrb_float', possible loss of data
971a4f9 fix: src\kernel.c(874): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
0e0c960 fix: src\kernel.c(861): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
7d98055 fix: src\hash.c(139): warning C4244: 'function': conversion from 'mrb_int' to 'khint_t', possible loss of data
8cef3f9 fix: src\hash.c(40): warning C4244: '=': conversion from 'mrb_int' to 'khint_t', possible loss of data
3e1d60a fix: src\hash.c(27): warning C4244: '=': conversion from 'mrb_int' to 'khint_t', possible loss of data
c7b663f fix: src\gc.c(1425): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
b406e9f fix: src\gc.c(1392): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
1dcf8ba fix: src\gc.c(559): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
7a2391b fix: src\error.c(76): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
4d6b8db fix: src\dump.c(710): warning C4244: 'function': conversion from 'mrb_int' to 'uint16_t', possible loss of data
f4a17dd fix: src\dump.c(657): warning C4244: 'function': conversion from 'mrb_int' to 'uint16_t', possible loss of data
5ed76e3 fix: src\class.c(949): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
9c5db48 fix: src\class.c(949): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
d8b37d0 fix: src\class.c(583): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
4146b5c fix: src\backtrace.c(83): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
7507d46 fix: src\array.c(86): warning C4244: '=': conversion from 'mrb_int' to 'uint32_t', possible loss of data
be81504 fix: mrbgems\mruby-time\src\time.c(641): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
0848407 fix: mrbgems\mruby-time\src\time.c(372): warning C4244: 'function': conversion from 'mrb_int' to 'double', possible loss of data
d713f8d fix: mrbgems\mruby-test\driver.c(67): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2640896 fix: mrbgems\mruby-string-ext\src\string.c(49): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
8d816fa fix: mrbgems\mruby-string-ext\src\string.c(30): warning C4244: '=': conversion from 'mrb_int' to 'long', possible loss of data
d381962 fix: mrbgems\mruby-string-ext\src\string.c(38): warning C4244: '=': conversion from 'mrb_int' to 'char', possible loss of data
a94525d fix: mrbgems\mruby-sprintf\src\sprintf.c(1052): warning C4244: '+=': conversion from 'mrb_int' to 'int', possible loss of data
1e2c962 fix: mrbgems\mruby-sprintf\src\sprintf.c(623): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
897eabb fix: mrbgems\mruby-sprintf\src\sprintf.c(646): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
e10b329 fix: mrbgems\mruby-sprintf\src\sprintf.c(618): warning C4244: 'initializing': conversion from 'mrb_int' to 'int', possible loss of data
861077f fix: mrbgems\mruby-sprintf\src\sprintf.c(516): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
553dbad fix: mrbgems\mruby-math\src\math.c(660): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
49e96a2 fix: mrbgems\mruby-math\src\math.c(491): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
536b95e fix: mrbgems\mruby-kernel-ext\src\kernel.c(114): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
9d89f8c fix: mrbgems\mruby-fiber\src\fiber.c(215): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
377d6a4 fix: mrbgems\mruby-exit\src\mruby-exit.c(10): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
f632bad fix: mrbgems\mruby-eval\src\eval.c(301): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
49db1db fix: mrbgems\mruby-eval\src\eval.c(214): warning C4244: '=': conversion from 'mrb_int' to 'short', possible loss of data
2e239a2 fix: mrbgems\mruby-compiler\core\parse.y(3455): warning C4244: 'function': conversion from 'intptr_t' to 'int', possible loss of data
f1a02df fix: include\mruby/gc.h(43): warning C4200: nonstandard extension used: zero-sized array in struct/union
3818502 The `[]` special method call should be able to take a block.
e98823f The `lex_state` after literals should be `EXPR_ENDARG`.
e01d35e The symbols should not take brace blocks.
298177f Merge pull request #3813 from dabroz/feature-fix-date
e00b48b change DISABLE_STDIO to MRB_DISABLE_STDIO in mruby-time/time.c
7450a77 The first instruction was skipped mistakenly in ensure clause; fix #3811
0ceaa09 `OP_EPOP` operand may be bigger than `mrb->c->eidx`; fix #3810
5760226 Remove temporary limitation of `OP_EPOP`.
ab54185 receiver variables must be "mrb_int" for mrb_get_args("i").
a809d42 remove whitespaces at the end of line.
d6e41c3 The callinfo stack may be reallocated in `cipush`; fix rest of #3809
3d8c1a7 The ensure stack may be empty at `OP_EPOP`; fix 1st part of #3809
2a1e616 Avoid calling `mrb_funcall` to invoke `#initialize` from `Class.new`.
cbfa2b3 Avoid recursion from `mark_context()`.
f68f5f6 Avoid crossing C function boundary from `OP_EPOP`; ref #3789
7f4b57b Restrict `OP_EPOP` operand to `1`; ref #3789
15f4bdb Merge pull request #37 from udzura/fix-types
5b6e4ed Fix type int to mrb_int
3acaa44 Restructure `irep->outer` chain; fix #3804
8a5d783 Call `initialize` only when it's not empty.
5d7e495 Merge pull request #3806 from flaviommedeiros/master
da97715 Merge pull request #3805 from fl0l0u/patch-1
e03042e Update print.c
9f677b7 Trying to make the source code more understandable by removing mixing of ternary if statements with attributions.
476af3c Merge pull request #3802 from christopheraue/proc_break_tests
ab99e2c Avoid copying over initialized procs using `initialize_copy`; fix #3803
5761009 Update method cache clearing.
f0f4a10 Make the default integer size to be `MRB_INT64` on 64bit systems; close #3800
35deaae Tested LocalJumpErrors caused by break in a proc
71357ff Merge pull request #3801 from christopheraue/assert_raise_refactoring
bf32265 Allowed to pass multiple exceptions to assert_raise
fe3227c Set the ORPHAN flag in `Proc.new`; fix #3798
483a038 Fixed a critical typo; ref #3798
2c85213 Need to mark `mrb->range_class`; fix #3797
79b4f61 Merge pull request #3799 from christopheraue/assert_raise_refactoring
4b0b8f7 Refactored #assert_raise and #assert_nothing_raised
8976f47 Need to update `ci` after `callinfo` stack reallocation; fix #3796
c082249 Exclude the top-level closure from `each_object`; fix #3793
786cbf0 Revert "Clear `irep->outer` when no `Proc` reference the `irep`; fix #3793"
1260d3b Add `__ENCODING__' support.
f1fa5bf Remove integer type mismatch warnings from parse.y.
15d48ef Clear `irep->outer` when no `Proc` reference the `irep`; fix #3793
fd927d7 Merge pull request #3795 from christopheraue/array_refactoring
c956e17 Replaced Array#each with while loop for performance reasons
6c9013e Removed unneeded block check in Array#uniq
f3fb43c Reimplemented Array#flatten with #flatten!
ccd5554 Merge pull request #3794 from dabroz/fix-flt-epsilon
01b9b71 fix mrbgems/mruby-range-ext/src/range.c:142:71: error: use of undeclared identifier 'FLT_EPSILON'
85a400e Reimplement `Array#shift` to be faster.
cec53ff `Array#first` to treat 1 argument case specially to improve performance.
1b545a6 Check for ability to skip optional argument parsing.
60104ce Silence compiler warning regarding float condition; fix #3790
43ec918 Remove unused `mrb_obj_iv_ifnone()` from API.
0e10a23 Add checks if `iv_tbl` is NULL.
0c52112 Keep `Range` class in `mrb_state` structure for performance.
04dbbff Use `khash` for instance variables tables instead of segment list.
f2cc123 Turn on method cache for Travis CI.
f7f1aca Merge pull request #3792 from dabroz/fix-test-int16
5f2c7e4 Merge pull request #3791 from dabroz/fix-msvc-warning
17c2497 fix `String#% %d` test with `MRB_INT16` set
5d9b84e fix fmt_fp.c(329) : warning C4244: 'return' : conversion from 'ptrdiff_t' to 'int', possible loss of data
78b13b3 fix fmt_fp.c(251) : warning C4244: '=' : conversion from '__int64' to 'int', possible loss of data
ef6a762 fix fmt_fp.c(224) : warning C4244: '=' : conversion from 'ptrdiff_t' to 'int', possible loss of data
bac37a9 fix fmt_fp.c(220) : warning C4244: '=' : conversion from '__int64' to 'int', possible loss of data
b2a16d6 fix fmt_fp.c(206) : warning C4244: 'initializing' : conversion from 'ptrdiff_t' to 'int', possible loss of data
c8341db fix fmt_fp.c(178) : warning C4244: 'return' : conversion from 'ptrdiff_t' to 'int', possible loss of data
5d099e4 fix fmt_fp.c(123) : warning C4244: 'return' : conversion from 'ptrdiff_t' to 'int', possible loss of data
63f10a1 Merge pull request #3788 from christopheraue/fix_codegen_op_send_nregs
3366894 Fixed register windows of OP_SENDs generated by NODE_{DREGX,REGX}; ref #3783
499498a Tested register windows of OP_SENDs generated by NODE_{DXSTR,XSTR}; ref #3783
84d8ecc Fixed register windows of OP_SENDs generated by NODE_OP_ASGN; ref #3783
4aca9ef Refactored code around generation of OP_SEND in NODE_OP_ASGN
1221f76 Fixed register windows of OP_SENDs generated by NODE_{FOR,SYMBOLS}; ref #3783
c040c8d Tested register windows of OP_SENDs generated by NODE_{RESCUE,HASH,ALIAS}; ref #3783
c6596cf Fixed register windows of OP_SENDs generated by NODE_{SCALL,CASE,YIELD,UNDEF}; ref #3783
64e5208 Asserted bidx < ci->nregs for OP_SEND and OP_SUPER
4c9a604 Added method cache.
a65f4db Remove possible path that leaves a local variable uninitialized.
db437b0 `mrb_obj_respond_to` to use `mrb_method_search_vm`.
0d865a7 `c` (`mrbc_context`) may be NULL; fix #3787
ab3b6db `strlen` returns `size_t`; need to cast before assigning to `int`.
3f90af6 (Try to) fix mixture of `int` and `size_t` in UTF-8 conversion.
a7d611f Reduce signed/unsigned warnings in dump.c
5d0fc7e Reduce signed/unsigned warnings in fmt_fp.c
8cea1f8 Use `ptrdiff_t` instead of `int`.
a117ec7 Remove mixed signed/unsigned comparison in debug.c.
8345239 Replace stack `pop()` by `push_n(2); pop_n(3)`; fix #3783
db098d3 Type check before traversing `irep->outer`; fix #3782
2294ebd Call `mrb_full_gc` before `gc_each_objects`; ref #3782
9146d5c Zero width `unshift` should not touch memory; ref #3780
8b3298b Unshift pointer move size was wrong (not `len` but `alen`); fix #3780
29ad0a7 `capacify' for `mrb_str_new_capa` should not be `0`.
a8bd069 `mrb_str_cat`: `capa` should not be zero to avoid infinite loops.
a06adb1 `mrb_str_cat`: `capa` should be bigger than `total`.
8b5be55 `ARY_CAPA` handles capacity for embedded arrays by itself.
8fbc4be Reduce signed/unsigned comparison warnings; ref #3785
f1767fd Separate `mrb_str_buf_new` and `mrb_str_new_capa`.
722d123 Remove code duplication in `mrb_str_concat`.
198c898 Rename `mrb_str_concat2` to `mrb_str_concat_m`.
4c25738 Merge `str_buf_cat` and `mrb_str_cat`.
2adb0c2 Merge pull request #3786 from christopheraue/3784_fix
11c3ad9 Merge pull request #3781 from clayton-shopify/fix-hash-compact-bang
f229ed9 Merge pull request #3785 from miura1729/original
75ec86e Improve Array structure
6b0860c Reset ci in OP_SUPER after potential realloc
5dc688f Check whether internal khash is initialized in Hash#compact!
0789ec7 Merge pull request #3779 from christopheraue/vm_refactoring
d5ac785 Reintroduced not storing converted proc directly in the stack
198df61 Removed unneeded ci->nregs checks in OP_SEND and OP_SUPER
f2d4640 Extended stack always based on ci->nregs
3f591d7 Refactored variable usage in OP_SEND and OP_SUPER
8bf492f Reduce integer type mismatch warnings in VC.
baa5d2e Remove some empty lines; ref #3778
0828a96 Merge pull request #3778 from christopheraue/vm_refactoring
42f9af4 Merge pull request #3777 from christopheraue/super_method_missing_test
731dd78 Added basic test for calling a missing method through super
58f5115 Refactored OP_SEND and OP_SUPER and calculate argc right at the top
d077a5f `scan_hex` may be used to parse both unicode and hex escape.
56d4e41 Fixed a wrong condition in `scan_hex`; fix #3774
96d4c2d Remove an unused argument from `each_backtrace_func`.
1d781da Should not include `float.h` here.
db72cda Merge branch 'christopheraue-super_method_missing_fix'
ab39ed4 Defer `mid` update after `unshift`; ref #3776
9feb069 Merge branch 'super_method_missing_fix' of https://github.com/christopheraue/mruby into christopheraue-super_method_missing_fix
0ff28c9 Silence integer type conversion warnings.
ef0b239 Remove unnecessary inline function `ary_elt`.
67e2ddd Remove `mrb_ary_len` function. Use `RARRAY_LEN` instead.
8f6b212 Update document comment of array C API functions.
4e2f4f4 Avoid possible data loss by using `ptrdiff_t`.
ae04005 The type of `ARY_EMBED_LEN` should be `mrb_int`.
3e075a7 Should not call `to_str` in `mrb_vformat`; fix #3773
68470be Check method existence in `to_enum'; ref #3773
2249551 Fixed calling missing method through super with 126 args
ac42ccc Merge pull request #3772 from vvakame/add2authors
a8658b0 Updated AUTHORS
a7462a7 Remove redundant `flo_hash` function.
3d288ef Use standard hash functions in `mrb_hash_ht_hash_func`.
78be017 Normalize float numbers before calculating a hash value.
9826ca5 VM stack may be reallocated during `mrb_hash_get`; fix #3771
9e0c48d Merge pull request #3770 from christopheraue/tabs_to_spaces
2fadddc Replaced tabs with spaces
24c345f Merge branch 'vvakame-add-hash-compact'
6c61a60 Implement `Hash#compact!` in C; ref #3769
4d46f36 add method(compact, compact!) and test of Hash to mruby-hash-ext
f9c3ebd Wrong blkargs pos for vararg; ref #3768
0a61df1 The block argument offset saved in the env was wrong; fix #3768
8f62957 Support `break` within rescue clauses; fix #3767 ref #3721
66e2928 Float values divided by zero should honor signs; fix #3766
8494557 Set the current `pc` as the error position in `OP_ERR`; ref #3765
e910cf6 Check if `ptr` is NULL before calling `memset`; fix #3765
1358725 Merge pull request #3764 from christopheraue/new_hash_perf
ec7475d Prevented resizing just created hashes in specific size ranges
0e5c3c4 Improved speed of creating new hash tables
1b9c485 `proc->body.irep` may be NULL; fix #3761
0066613 Fixed heap buffer overflow in `mrb_ary_unshift_m`; fix #3760
36dbfd9 Change return type of `scan_oct` from `int` to `int32_t`.
e86c252 Left shift of signed integers is undefined behavior in C; fix #3762
8095754 Merge pull request #3763 from mimaki/fix-mrdb-source-path
7bdc709 Fixed a invalid source path name on mruby debugger.
7b88c1a Now `local_variables` works when for closures; fix #3710
da24af3 Better class name management.
2170fad Cosmetic changes (removing spaces before `*` in return types).
648e9ea Move naming unnamed classes/modules
3f6a098 Reimplement constant look-up rule to follow lexical scoping.
9e10afe Implements `Module::nesting' (15.2.2.3.2); ref #600, #3200
16aafdd Merge pull request #3759 from christopheraue/authors_update
facf5f9 Merge pull request #3758 from christopheraue/enumeration_perf
a4ff31e Updated AUTHORS
3359b86 Improved speed of enumeration methods
c8fdab8 Merge branch 'udzura-move-task-class-definitions'
e821c25 Merge branch 'move-task-class-definitions' of https://github.com/udzura/mruby into udzura-move-task-class-definitions
b290e98 Merge pull request #3757 from christopheraue/module_const_get_class_path
cf23a85 Merge pull request #3755 from christopheraue/array_bsearch_index
dda73da Merge pull request #3756 from christopheraue/fix_mod_include_ret_val
a3bfd73 Added Array#bsearch_index
451574f Refactored Array#bsearch
f937af5 Extended Module#const_get to support class paths
c7018ea Added mrb_str_index to the mrb API
b499ad6 Fixed return value of Module#include and #prepend
8a6ce74 Tested Array#bsearch more thoroughly
4696093 Rename `MRB_SEGMENT_SIZE` to `MRB_IV_SEGMENT_SIZE`.
1e41026 Always use `MRB_USE_IV_SEGLIST`.
f26d00d Embed small size array elements in the heap.
5d44f85 Remove loop from `OP_POPERR`.
7d5cf87 `(0).div(0.0)` should be NaN; fix #3754
46ab8fd `(0.0).div(0)` should not be infinity; fix #3753
9fa3d77 `0/0` should not be infinity; fix #3752
7b8d784 Reimplement sort method to reduce array copying.
04774e5 remove unused exception variables.
7c62d89 Merge pull request #88 from christopheraue/master
3642fe4 fixed #87: IO#read(n) with n > IO::BUF_SIZE
81a0dcd sizeof(optval) must be 1 for IP_MULTICAST_TTL & IP_MULTICAST_LOOP.  fixes #34.
fe99819 Merge pull request #85 from ksss/read
c279f00 Merge pull request #86 from ksss/write
0b41066 Merge pull request #84 from ksss/pos
051d7bc Reseek when write
1ebe1c8 Support outbuf argument for IO#read
27f4228 To accurate `pos`
3a73a58 mruby 1.2.0 assumes test blocks return their results.  master does not.
383a9c7 Merge pull request #13 from ksss/unpack-utf8
dab87cf Merge pull request #80 from ksss/sysread
a3a4f4d IO#sysread Check for readable
0c0b341 Merge pull request #78 from ksss/syswrite
87771ec Merge pull request #79 from ksss/ioerror
0bbd60b IO#sysread should raise error when invalid pos
86edc9a IO#sysread should raise IOError when closed
844b2c3 IO#sysread with 0 always return empty string
c43795c Should raise SyscallError on IO#syswrite
6836f42 "open" error message should include pathname.  fixes #77.
728d313 Merge pull request #76 from yyamano/issue-75
311f4a2 Make backquote work with the latest mruby. Fixed #75
7e014ef Merge pull request #14 from ksss/to_int
38db5e5 Some adjustments
9c2db2e Move class/module definitions to normal .rb files
86b69d7 Initial skelton for class/module def
d83e15e Should use `to_int` instead of `to_i`
0dbd1d5 Add "U" template to doc
f691a73 Should raise RangeError
a80a745 Support unpack template "U"
f8a3af8 Merge pull request #74 from iij/run-test-outside-source-tree
3ae5fea run mrbtest outside of source tree.
74fe87c Add a travis-ci badge.
86d58a2 File class does not have to include Enumerable.
88a7fed support "x".
3dad125 TCPSocket.new supports "local_host" and "local_service".
caab1c2 define IO#hash to override Enumerable#hash.  fixes #73.
6962307 Merge pull request #72 from masahino/add_pointer_casting
1fac605 Add pointer casting
458b517 Merge pull request #71 from eagletmt/readlink
b31b802 Fix memory leak in error case
d1c4819 Add File.readlink
7e89736 Merge pull request #70 from eagletmt/chmod
698378f Add File.chmod
f2d4880 Merge pull request #11 from masahino/add_casting
906b516 Add pointer casting
0eafb08 Merge pull request #69 from eagletmt/explicit-cast
905203e Add explicit cast from void* to struct mrb_io*
b5e2dc9 raise an exception when we cannot close "fd" but can close "fd2".
f6a8277 eof? should raise an IOError if it is not opened for reading.
2229a2a reimplement #eof.  fixes #66.
51cf6b6 Merge pull request #65 from ksss/join
ff845be Support Array argument
7c9d941 Show value of expect and actual each assertion
d8189c2 Merge pull request #64 from asfluido/master
024b09d Apparently, in mruby-process gem, Process is now a Module, not a Class
b341ee7 Merge pull request #63 from ksss/opt
9ccf03e Merge pull request #62 from ksss/global
d2c1f4d Enable Fixnum option
b462ef4 Enable option :in, :out, :err
4cac5e9 Should use global variable
cc66bf9 Merge pull request #9 from ksss/pointer-sign
1365074 Merge pull request #10 from dabroz/master
26c1ded Added 'U' pack support.
b9f7daf Suppress compiler warning [-Wpointer-sign]
93d481d update $? when IO object is closed.  closes #58.
e90ecff Merge pull request #60 from drbrain/test_io_setup_failure
2af2a4f add IO#isatty and IO#tty?
b2a0c9c Merge pull request #30 from rhykw/tcpserver-reuseaddr
4f67032 TCPServer use SO_REUSEADDR if possible
2a80ccc TCPServer use SO_REUSEADDR
11961b4 Create socket in /tmp for security
777cf70 Include reason in test failure message
18f7b45 Merge pull request #29 from rmalizia44/patch-1
be2ec60 Add _WIN32_WINNT definition to Avoid Windows Compilation Errors
1c44288 Merge pull request #57 from MaximAbramchuck/patch-1
7d6f2be Add installation instructions
c165e50 Merge pull request #28 from zzak/port-ntop-pton-win32
a25ec0a Merge pull request #27 from zzak/fix-udpsock-warning
bdc1183 Port inet_ntop and inet_pton for WIN32
c8a2c63 Fix warning: variable 'udpsock' set but not used
99e10b8 File::ALT_SEPARATOR is always defined (some string or nil).
4acfd1c Merge pull request #56 from takahashim/fix-flock
dd75422 Fix for windows(mingw)
68de1e4 Merge pull request #55 from takahashim/separator
0f5b8b6 fix file separator
6c67120 Merge pull request #54 from takahashim/win-crlf
b19c315 fix tests for Win: use binary mode
7337bfa Merge pull request #53 from takahashim/build-win32
07ceb13 build on Win32
07f1ebd symlink(2) returns -1 when it fails.
11ffb93 assert_nothing_raised is not available on mruby 1.0.0.
ca49594 Merge pull request #51 from ksss/io-pipe
a55accd Implement IO.pipe
c9a4091 arguments can be shared strings.
1f4bd9f Merge pull request #50 from takahashim/file-symlink
2cc674e add File.symlink
14cdff0 Merge pull request #48 from takahashim/file-path
44473fe add File.path
828551f off_t can be larger than mrb_int.
db7d829 raise a SystemCallError when lseek(2) fails.
21963f8 UT for IO#sysseek.
cac0035 fix typo.
78fe65a Merge branch 'master' of github.com:iij/mruby-io
71197d2 Merge pull request #47 from matsumoto-r/patch-1
2387045 Fix buffer overflow of `pos` when file-size is too big
e724c5a Merge pull request #45 from takahashim/enable-test
1f217ea Merge pull request #46 from takahashim/add-rewind
9bbfc38 add IO#rewind
1d6b7f9 Merge pull request #44 from takahashim/io-addstr
f5560e8 enable test
c26f998 support IO#<<
6259954 To run test, we need "conf.enable_test" in build_config.rb.
f301675 build in container-based environment.
ecd7ef5 Revert "try to fix failure on travis."
02daa25 try to fix failure on travis.
5fa3c39 variables are not used on the platforms lack FD_CLOEXEC.
6c4d394 Merge pull request #30 from ksss/cloexec
042e4a4 Merge pull request #43 from jkutner/master
2467332 Made FILE_SEPERATOR platform dependent
efaf746 Merge pull request #42 from hone/path_separator
5323498 Merge pull request #23 from expeditiousRubyist/master
e8efd10 make pack_l simpler.
4603047 update installation procedure.
359d2ae support "q" and "Q".  closes #7.
d34db58 implicit type conversion caused unexpected result.  fixes #8.
c43a083 Changed IO overrides to use sysread and syswrite instead of read and write
ec4982b define PATH_SEPARATOR
8527c78 Merge pull request #22 from Asmod4n/master
2929c62 added SO_NOSIGPIPE
de60400 Merge pull request #21 from expeditiousRubyist/master
f80a4fd Added functioning read for Win32
2d1134e Merge pull request #41 from hone/cross_compile_windows
fe7784e support for crossbuild for windows (32 bit and 64 bit) using mingw
bfb9cf7 Merge pull request #20 from expeditiousRubyist/master
4ab9220 Removed unnecessary/incorrect use of sizeof(int) and corrected more improper usages of mrb_sys_fail
7ee9ab8 Changed some uses of mrb_sys_fail to instead use mrb_raise where appropriate
a426f0e Overrided close and write to work on Win32 platforms
752f7c1 Minimal semi-working compile on Windows platforms.
7d8cbf1 Added Winsock 2 to list of libraries to use when building for Windows targets
1b5c685 Merge pull request #40 from archSeer/patch-1
8da787b Remove mrb_io_s_select typo.
b913e7e test suite for pack/unpack.
2ba4933 refactor "AaZ".  fixes #6.
15de80a style.
dacb8b6 failed to remove temporary files!
ae4fc77 Merge pull request #39 from jbreeden/master
6d6be18 Removing redundant platform check
7f8324a Merge branch 'master' of https://github.com/iij/mruby-io
36343cf Correct File::NULL for Windows
c0738a7 Excluding wait call for windows
cfbc8a8 Merge pull request #38 from jbreeden/master
e92fd76 wait for child processes when we close pipes.  fixes #37.
1629e86 add IPv6 constants defined in RFC3493.
e4006cb Socket::Option requires iij/mruby-pack.
0d05a22 don't call undefined method.  fixes #15.
7b17158 remove unused variables.
a09858a syscalls may return sockaddr shorter than sizeof(struct sockaddr) on Linux.
a960a6f failed to add...
3a22166 debug UNIXSocket and UNIXServer.
3a97a45 rewrite IO.for_fd.
c455544 better error message.
1d1f273 Merge pull request #35 from tmtm/fix-read-create-many-objects
42752bf FIX: IO#read create a large number of objects.
e7dbe6e Merge pull request #33 from iij/revert-32-fix-read-create-many-objects
e82c1d3 Revert "FIX: IO#read create a large number of objects."
50721e9 Merge pull request #32 from tmtm/fix-read-create-many-objects
9b13a59 FIX: IO#read create a large number of objects.
ee347f3 Merge pull request #31 from tmtm/fix-sysread-segv
be9e203 FIX: IO#sysread occurs SEGV
723db88 add Socket::Option#inspect
1214756 add "I" and "i".
2103bc9 style
669fe70 "i" and "I".
e61c469 IO.popen fd set close_on_exec flag by default
9439b98 Opened fd should be set FD_CLOEXEC by default
d1fee58 IO.sysopen does retry.  closes #26.
e7cd024 Merge pull request #29 from sdottaka/fix-for-msvc
24007b8 Fix broken build for Visual C++
a2f45bf Merge pull request #28 from ksss/file-size
a44ada6 Implement FileTest.size
379c5a6 Merge pull request #25 from matz/gc_on_enfile
b50093a garbage collect when open(2) fails with ENFILE or EMFILE
190264b Merge pull request #23 from jbreeden/master
0761b17 update implemented methods table
9a2cbc4 Correcting E_NOTIMP_ERROR reference
e60951a add IO#sync and IO#sync=
1768ee0 remove extra ';'.
8c34a8d Merge pull request #22 from take-cheeze/fix_arg
689541d Fix type of argument passed to mrb_get_args.
093f4e2 mrb_voidp (and other macros) has gone.
fa39825 refactor.
66a9224 Merge pull request #21 from dreamedge/add_close_on_exec
78f5f98 delete debug messages
7e689e8 Add IO#close_on_exec=  and a test on test/io.rb
59b7c4e add IO.close_on_exec?
91c285f regen.
0409734 more TCP options (for NetBSD).
baa40ef sort.
9c3c267 Merge pull request #14 from dreamedge/add_tcp_constants
f3c71cf Add TCP_* constants included in "netinet/tcp.h". ex: TCP_NODELAY, TCP_CORK, ...
ddfc4eb IO#read(0) should return "" immediately.  fixes iij/mruby-socket#13.
376af5b re-implement TCPServer.accept. fixes #12.
5b65ca3 Merge pull request #5 from take-cheeze/float
7b2611e Update supported template list.
8f4b7ac Support float/double unpacking.
514450e Use PACK_FLAG_LITTLEENDIAN.
7dc2b4f Implement g/f/F/G/d/D packing.
f4f9682 Add support of little endian float.
a0c4ca2 Merge pull request #4 from take-cheeze/raise_fix
1997420 Fix raise format found with mruby-clang-plugin.
d894de8 fd2 is valid if fd2 >= 0.  fixes #18.
cb84ce3 no longer used.
9ee9c27 Merge pull request #20 from windwiny/patch-1
dc61ef1 compatible 32 bit windows
077f39b Merge pull request #19 from schmurfy/solaris_flock
9a1b25b raise an error for flock on solaris
5aeb99a fix mrb_raisef usage.
9c00de5 IO.for_fd can be written in Ruby.
c46cb1b more tests.
e5f30f8 IO#flush should raise an exception if it is closed.
99c6774 remove return statements after mrb_raise().
7d7a549 remove io_open().
36045ea IO#syswrite should raise an error if it's not opened for writing.
1c4f46f remove standard header files from io.h.
a11780f file.c depends on mruby/ext/io.h now.
a3e1e53 function declarations should be in a header file.
9f5ff9d remove unused constants.
ba9cb1f "struct mrb_io_type" is not used at all.
10be4cb file.c does not depend on mruby/ext/io.h.
87ce12d io.write("") -> 0
810e37b return value of syswrite may be less than length of given string.
d5cf1de Merge pull request #16 from schmurfy/solaris
1d987d2 Merge pull request #9 from schmurfy/solaris
9850e6a OpenSolaris/Illumos defines a "sun" constant...
cd168c6 solaris does not have flock
28e00d8 suppress compiler warnings.
a6ab2c5 Merge pull request #15 from monami-ya-mrb/pr-add-error-check-in-test
706ef13 Don't ignore the return value of symlink().
572b404 Update .travis.yml
2bf49c9 Update .travis.yml
083cd9c Update .travis.yml
355723e Create .travis.yml
80e01e3 Create .travis.yml
1094bbf Create .travis.yml
eda9d1a nonexistent test fixes (for travis-ci)
ab9dcc7 IO.close should be IO._sysclose.  closes #13.
719452b remove unsed.
14031bd Merge pull request #11 from pbosetti/master
279587c split.
a855851 mruby-mtest is not required to build (but to test).
e345d4c Merge pull request #7 from monami-ya-mrb/pr-fix-connect-failed
11b4745 Call Socket._connect() in Socket.connect() .
39bd240 Fixed bug in File.expand_path() on Windows (forever recursive loop)
7ff0494 Added File.foreach method. Improved error management in File.new (Errno can be undefined)
d9f3fd8 Merge branch 'master' of https://github.com/iij/mruby-io into test
f7c054b quiet compiler.
e8706d4 remove unused.
b9dff44 Merge branch 'master' of github.com:iij/mruby-io
56a8c59 add IO.read
a90d8b8 add Socket.getaddrinfo.
d28f042 compatibility support (mruby/mruby, iij/mruby and 1.0.0)
7fd585b support older version.
daa65c1 add dummy IO#flush for better compatibility with CRuby.
40c52f5 Merge pull request #9 from matsumoto-r/support_mrb_get_module
ee2859d Updated mrb_include_module call after mruby 1.0.0
b3c6075 IO._bless has gone.
b74458a remove _bless trick.  closes #8.
526608c Support mrb_module_ge
f10b73e move license terms to the bottom.
a2af349 Now the drive letter is returned as leading path element  by File#dirname on Windows
b744097 Merge pull request #6 from schmurfy/testless
a613bce Merge branch 'master' of https://github.com/iij/mruby-io
8cee36b Catch Errno::ENFILE too.
23afaf0 Made compatible with VisualStudio
a26ce35 removed mtest dependency
d12f436 mrb_intern API change.
5a59fd3 Fix for compilation under Win/MinGW
e641e9a suppress a compiler warning.
2245818 make it more portable.
78d2d90 style
87d8782 Try GC when Too many open files (revert a part of 1e8097a).
e44da8a test for #6.
1e8097a IO.sysopen raises an exception when open(2) fails.  closes #6.
e96cdeb Merge pull request #3 from h2so5/patch-1
db14b8e avoid declaration error on VC++
d8e5e7d Merge pull request #3 from murasesyuka/feature/add_dependencies_gem
78ebe1b add mruby-socket dependency gems
823df14 remove unused code and irrelevant comment.
ec443d4 more IPPROTO_* related to IPv6.
93edd26 fix typo...
005f01f fix RSTRING_PTR usage.
bf4c226 Merge pull request #4 from pbosetti/master
c608c26 Merge branch 'master' of https://github.com/iij/mruby-io
49494a7 Truncate file on File.open(file, "w")
8b48e2b syswrite must write to fd2 if it is properly set.
97899a6 style
adb3bd6 don't retry when we cannot fork(2).
d75d232 fix descriptor leakage.
b4f0a68 add File#flock.
140da1c remove duplicated white spaces.
e27fb54 suppress a warning and fix a possible segv.
e2b0606 Merge pull request #2 from pbosetti/master
c4e3c46 Catch up with API changes on mrb_intern() -> mrb_intern_cstr()
47a610e use array parameter on IO.open.
713aa48 STDERR's file descriptor is 2.
9dc875f add `cmd` (command output expression).
40adffc ARGS_XXX -> MRB_ARGS_XXX
0345215 fix a possible address family mismatch.
a9593e1 v4/v6 fallback for TCP.
5e8021b tests for File.socket? and File.symlink?
c495410 use lstat(2) to check if it's a symlink
76e1017 hints.ai_socktype must be set if servname is not NULL on NetBSD3.
a341b8e more socket options (for multicast).
cf827ab fix Addrinfo.getaddrinfo("127.0.0.1", nil).
4f3a749 Fix incorrect condition for pendig-IO
216e327 Socket.gethostname always fails.
5625e44 add method: IO#select
1272df7 fix IO#eof? method (consider the read buffer)
35defaf fix mrb_voidp_value function call
f4aa3e7 getaddrinfo("localhost") returns "fe80::1%lo0" on MacOS!
1411d5b using mruby-mtest on test/socket.rb.
12144b9 getaddrinfo("localhost") may return 2 or more.
0f2d7e8 fix reading wrong variable.
b8912c3 Linux does not have getpeereid(2).
4bebd4d mrb_sys_fail() is declared in src/error.h
cfe1814 test runner.
8914706 mruby-socket depends on mruby-io.
bc5feb3 short description, example, requirement, todo, license.
e459ecc Merge branch 'master' of github.com:iij/mruby-socket
49e53bc Socket library for mruby.
06f1c82 Initial commit
0a21d9e bufix of mrb_file__gethome()
e277079 update run_test.rb
55b6ef4 add return value check of fseek
14e1992 add null check
d39a05e remove unused variable.
49cc9c7 Use strncpy instead of strcpy.
c25d386 Use mkstemp instead of mktemp.
acc8995 update run_test.rb
df529a8 add $stdin $stdout $stderr STDIN STDOUT STDERR
7a94d02 add IO#print
38f4086 Merge pull request #2 from schmurfy/double
dce09fb removed unused variables
c869bde added support for E in pack (double)
8c5cb5e cannot pack objects other than the first one.  closes #1.
f89ee88 rename mrb_class_obj_get -> mrb_class_get
7618ca6 remove unused Makefile
8bfbca2 update run_test.rb
62e1823 update run_test.rb
814f330 put MRB_ prefix before ARGS_XXX macros
d5982b4 put MRB_ prefix before ARGS_XXX macros
da557fb add File.expand_path
cc40f93 Kernel#open block support
9110039 add Kernel#open
5a425f5 Update README.md
b8a23e6 update README.md
e8ca5e5 initial commit
858d67c add "v" and "V".
fc43022 support "V" and "v".
abe9ccf Merge branch 'master' of https://github.com/iij/mruby-pack
88fa585 fix an issue large/negative integer may not be packed/unpacked correctly.
a0c62dd fix an issue negative integer may not be packed/unpacked correctly.
53ff8ba update README.md
aadcbb1 add mrbgem test runner
0786e37 update mrbgem.rake
a0161d6 typo fix on mrbgem.rake
f70a45a update mrbgem.rake
558f6fc update mrbgem.rake
e734ab3 add mrb_mruby_pack_gem_final
209ad31 add mrbgem.rake
fb79282 add README.md
e205905 mruby-pack

git-subtree-dir: mruby
git-subtree-split: 623436276e9650ce60c64bc24bfd430aab8a4193

yyamano added a commit to yyamano/ngx_mruby that referenced this pull request Feb 2, 2018

Squashed 'mruby/' changes from 7f9e333..6f1e177
6f1e177 Merge pull request #3938 from mattn/include-io
0e0dad7 include io.h on mingw
f7ff2d0 Define compatibility only for `_MSC_VER`; ref #3923
1ad2dd6 Merge pull request #3923 from ksss/tempnam
e422ba0 Use mkstemp instead of tempnam
55431b4 Need not to pop `callinfo` on `OP_STOP`.
4359484 Merge pull request #3937 from mattn/file-mtime
f4f006b add File#mtime
3498a78 Merge pull request #3936 from ken-mu/uint
a1b71b6 mruby-time: remove ifdef for mktime error handling
6a2c0c6 mruby-time: support time_t is uint
83f2654 Do not use `MRB_METHOD_TABLE_INLINE` by default; fix #3924
ec1a5af Use LSB not MSB for `MRB_METHOD_TABLE_INLINE`; ref #3924
d895861 Check `arena_idx` before accessing; fix #3934
0e93f1f Merge pull request #3921 from ksss/cloexec
dfb5607 Add `big_endian` and `little_endian` methods to `CrossBuild`; ref #3922
3ff56a8 `Time.new(1969,12,31,23,59,59)` may or may not faile; ref #3932
f8ab3c1 Merge pull request #3932 from ken-mu/timegm
d398cd4 mruby-time: remove test case less than Dec 31 23:59:58 1969
a1f3631 mruby-time: Fix mruby specific timegm() cannot return minus
e5fb21b Detect cyclic link of class path references; fix #3926
3ae621f Typo fixed.
ec63b1a Limit size of iseq buffer; fix #3927
ca837b1 Allow `-> do rescue; end` as well as `proc do rescue; end` [Ruby2.6]
03e88b9 Merge pull request #3930 from mruby/stable
58fb6f4 Set the mruby-1.4.0 release date to `2018-1-16`.
dc9c40f Remove trailing space
540efd3 IO#close_on_exec? is not supported on MinGW
e5e9d03 Should be true for close_on_exec flag
6234362 Merge pull request #3916 from mimaki/mruby-socket-cygwin-test
f55df0d addrinfo.ai_protocol was not set on Cygwin.
bce811a Disabled UNIXSocket test on Cygwin
6b09692 Add `Integer#{allbits?,anybits?,nobits?}. [Ruby2.5]
3d7141b Move `Intefer#chr` to `Integral#chr`.
ad17ba0 `KeyError` from `Hash#fetch` should inspect key.
e4a9b4a `Enumerable#{one?,none?,all?,any?} to take pattern argument [Ruby2.5]
421819d Add `Hash#slice` [Ruby 2.5]
df68a33 `assert_equal()` takes result as the first argument
2a5545c Update `Kernel#method_missing` tests for new `NoMethodError` message.
6999e45 Do not include object string representation in `NoMethodError` message.
ca0f32a `super` should raise `TypeError` when the receiver is switched; fix #3911
aa8786f Do not initialize a local variable soon to be assigned.
7e52083 Avoid infinite recursion in `method_missing`; ref #3908
44b4f69 May need more stack space in `mrb_funcall_with_block`; fix #3908
8d7e952 Add `#module_exec` and `#class_exec` in `mruby-class-ext` gem.
7fbbd7a Should not overwrite `ci->target_class` in `mrb_exec_irep()`.
7990bb7 Merge pull request #3913 from llothar/master
06f90a3 Make source compilable with C++17 Changes applied:
100f0e6 Do not need to take `target_class` from the upper proc.
73b05f0 Should not overwrite `MRB_PROC_TARGET_CLASS(p)` if `p` has env; fix #3905
165e7b1 Fixed method look-up for `method_missing` in OP_SUPER; ref #3905
d0f6018 The superclass info should be taken from `TARGET_CLASS(ci->proc).
d9049c1 Merge pull request #3904 from ksss/mruby-method
bba6c9a Fix descriptor leakage; ref #3903
e5056d0 Fix `fptr` leakage; ref #3903
83d02bc Use `_dup2` instead of `dup2` on Windows; ref #3903
5e22e8e `open` on Windows takes `int` 3rd argument instead of `mode_t`.
c0914db mruby/data.h doesn't need
b4dcb8f Use `_dup` instead of `dup` on Windows; ref #3903
615f296 Clean up some files and docs
ae786b1 Shouldn't use alloca
a510564 Merge pull request #3903 from ksss/io-dup
b83ff8c Add mrbgems/mruby-method
35185e6 Implement IO#initialize_copy
ddb1aae Need to set `ci->proc` before calling methods; fix #3902
03614ed Need to clear exception handler on `return`; fix #3898
05129ab Check if destinations are too distant; fix #3900 fix #3901
7ecb96a Merge pull request #3897 from mimaki/initialize-is_socket
4103952 Initialized mrb_io.is_socket
5b304c1 On Windows, `_S_IREAD` and `_S_IWRITE` is defined in `sys/stat.h`.
7ac3933 Use `_open` and `_close` on Windows.
ebf4993 Merge pull request #3895 from mattn/fix-mkstemp
e7e5db5 fix mkstemp implementation for MSVC
f0379c8 Merge pull request #3892 from mimaki/ipproto-winsock
16e473c Rename `BasicSocket#is_socket=` to `#_is_socket`; ref #3878
69ad12d Exclude `UNIXSocket` tests again; ref #3878
d2163d1 Declare super class in socket.rb.
949bf6c Fix socket closing by using `closesocket` API in windows instead.
2300c9f Merge pull request #3893 from mimaki/add-mrbgem-summary
dc5de38 Merge pull request #3894 from mattn/mirb-locale
1a150a6 Merge pull request #3891 from mimaki/set-addrinfo-protocol
0ab9ac6 fix locale in mirb
584e4e4 Added mrbgem's summary.
9fac1a3 Use IPPROTO enum values on WinSock.
398da99 Set protocol of AddrInfo
55fced3 Use `_tempnam` instead of `tempnam` on Windows.
a3925f3 Merge pull request #3889 from mattn/fix-crash
aec65f2 Merge pull request #3890 from mimaki/mruby-socket-windows-test
4353623 Skip tests on Windows platform
6123d65 fix crash bug on Windows
fa33bd8 Remove VC++ compiler warnings.
7d940e3 Merge pull request #3888 from mattn/fix-locale
16c2ac2 fix path locales
e143874 Skip `test/t/float.rb` tests; ref #3827
11b6696 Retrieve operands at the beginning of `OP_SCLASS`.
e647b16 Should not define `Float` class in `mrblib/00class.rb`; ref #3828
ad06781 Fixed wrong `MRB_WITHOUT_FLOAT` condition; ref #3827
c669785 Reduce VC++ type mismatch warnings.
5a5adaf Merge pull request #3886 from mattn/io-windows
b072695 fix build for MSVC
e0e23b1 close file descriptors
7c8c9f9 mingw have mkstemp
7ff907f fix test
f1ea7a3 implement flock on Windows
df2c377 fix compilation error
f6f8bb2 fix compilation error
06ec17d add definition for pid_t on MSVC
d549603 close handle
b8ca0b7 implement popen on Windows
c863e0d Merge pull request #3885 from Shokuji/cygwin_mruby_io_test
c6ea948 Revert "Update `.travis.yml` to use `gcc-6`"
346ebfb Merge pull request #3882 from mattn/fix-filename
25bee35 Merge pull request #3884 from mimaki/mruby-io-test-on-windows
17cd7a6 fix wrong variable name
bceb664 fix compilation error
977f794 use filename in locale
bbb0882 Modifying frozen objects will raise `FrozenError`.
d4ff92b Do not use `FIXABLE` when `mrb_int` is big enough.
3d98fa2 Reduce type mismatch warnings in pack.c.
a5b8603 Winsock uses `int` where UNIX uses `size_t`.
a9e434e Merge pull request #3883 from mattn/fix-ssize_t
e71a6a7 fixed mruby-io so that the test passes on cygwin
5ef8f18 Fixed mruby-io test failure on Windows platform.
9932869 fix build on mingw
9c0426c Winsock does not provide `ssize_t`; Use `int` instead.
2db06c4 Revert "Update .travis.yml"
08a508c Fixed the mixture of `int` and `long` in `mruby-pack`.
5bf60b4 Merge pull request #3881 from mame/mrb_without_float-for-mruby-io-and-mruby-pack
d96b2c9 Support MRB_WITHOUT_FLOAT to mruby-io and mruby-pack
85fc9b8 Merge pull request #3880 from mruby/matz-patch-1
f73ac41 Update .travis.yml
0e452a7 Update .travis.yml
b763759 Reduce VC++ compiler warnings.
c76631d Update `.travis.yml` to use `gcc-6`
6d42195 Add `enable_sanitizer` method for clang and gcc.
274884a Reduce VC++ compiler warnings.
761218e Skip socket tests on Windows platform.
b103fa2 `File.symlink` may not be implemented on some platforms; ref #3877
bda273f Merge pull request #3877 from bamchoh/patch-3
6bc38f4 Merge pull request #3876 from bamchoh/patch-2
0ded91c Skip "File.readlink fails" test on MSVC
81dc383 Use same format between Fail and Skip
550c878 Use `RL_READLINE_VERSION` to determine `rl_free` existence; fix #3875
e17092d Merge pull request #3874 from mimaki/fix-mingw-compile-error
c47a198 Merge pull request #3873 from take-cheeze/fix_socket_test_leak
7f3bda5 Fixed compile error of `mruby-io` gem on MinGW.
5de7dc2 Fix memory leak found by leak sanitizer.
83065df Reduce compiler warnings from `mruby-io` gem.
f9d1d72 Avoid VC++ reserved word `template`.
36a0b86 Reduce VC++ compiler warnings.
f120757 Uninitialized value returned.
6ebcb74 AppVeyor compile errors resolution.
9df7bce AppVeyor compiler does not proved some POSIX functions.
b724e06 Avoid uninitialized local variables in `mruby-pack`.
bc9e3e6 Add type cast to `readline(2)` return value.
764a568 Remove unused variable `usock` from `mruby-socket/src/socket.c`.
ff1194c fixup! Fix type casting errors when `mruby-socket` compiled by C++.
a5412d4 Add 'mrbgems/mruby-pack/' from commit '383a9c79e191d524a9a2b4107cc5043ecbf6190b'
842e694 Fix type casting errors when `mruby-socket` compiled by C++.
73ef548 Add 'mrbgems/mruby-socket/' from commit 'ab54185005ec87fe4f5b10df95ad29659884141b'
d75266d Add 'mrbgems/mruby-io/' from commit '3c8e1f94c44252c836f79a48bb17726da28e2756'
10ed730 Cancel df3507660 that does not do any good.
cdf173d Avoid updating to reallocated stack in `OP_RETURN`; fix #3870
0e46b14 The `ci` should not be equal to `cibase` with `OP_R_BREAK`; #3871
6975258 The proc with top-level env must be 'proc-closure'; fix #3871
ae44e80 Limit `ecall()` depth to 32 (default).
b00d45b `mrb_method_search_vm()` should gives the defined class.
4a99f49 Need to set `ci->proc` when we have `RProc` structure.
cbb6f29 Merge pull request #3868 from bamchoh/patch-1
940133b Revise MRB_METHOD_PROC macro's argument
1fea634 Some OS uses `libedit` that does not provide `rl_free()`.
0b5d97e Need to unshare env stack on `break`; fix #3866
6f4d4bb Remove temporary objects from GC arena in `mrb_vformat()'; #3863
5d04e33 Check if `ci->proc` is not `NULL` and `MRB_PROC_CFUNC_P()`; fix #3867
ff8b608 Free read lines using the deallocation function from the library.
cd9f53d Pop exception objects from the bottom of GC arena; fix #3863
c35a402 The stack shift width should be determined by `p->upper`; fix #3864
86ef9a2 Avoid calling `mrb_env_unshare()` when `env` is `NULL`.
2b9f762 Avoid double free() of env stack; fix #3860
d3e273b Wrong stack adjustment in `ecall()` (f35f975 #3859); fix #3862
f3279b4 Stop infinite recursion in `Class#to_s`; fix #3861
5f7cdec Clear `c->prev` on fiber termination.
b746a0f Need to free contexts when freeing fibers.
9c78a9b Set `MRB_FIBER_TERMINATED` flag on exception termination of a fiber.
b7c3a87 Add `most recent call last` message to the backtrace.
3e67a11 Call all ensure clauses pushed at `OP_STOP`.
afa5380 No need to use `ecall_adjust()`.
f35f975 Fixed stack address adjustment in `ecall()`; fix #3859
d4fc980 Need to evaluate ensure clauses at fiber termination.
6bb5ad7 Remove unnecessary code; ref #3711
597149a Change newline style of test/t/lang.rb (from DOS)
b4f9b03 Some cosmetic changes
284a1d1 Provide shortcut comparison methods for numbers for performance.
0ab21a9 Stack adjustment should be based on `p->upper`; fix #3857
fbafa78 Clear ensure stack after calling in `OP_EPOP`; #3855 3856
4665b07 No need to pop ensure stack if `eidx` is smaller than `epos`; #3855 #3856
fe3ac50 fixup! Remove fixed argument of `ecall()`; ref #3855 #3856
cb4b042 Remove fixed argument of `ecall()`; ref #3855 #3856
393133e Should have marked all ensure stack entries; fix #3855 fix #3856
8b7a897 Reduce the size of `struct RBreak` to reduce memory usage.
8f2c624 Add `MRB_METHOD_TABLE_INLINE` option.
6c06e77 Add `MRB_METHOD_CACHE` description to `include/mrbconf.h`
6a9efd6 Invoke `mrb_full_gc()` before `ObjectSpace.count_objects`.
9b2454c Leave `hash->ht` to be `NULL` if initial capacity is zero.
7405821 doc/limitaions.md: Remove infinite recursion entry.
86f9254 doc/limitaions.md: Remove `Kernel.binding` entry.
825e93e Assign operands to local variables.
31ce73d Merge pull request #3853 from ukrainskiysergey/variable_c_cosmetic_changes
a2d0ee5 Removed useless condition
269f9f2 Merge pull request #3852 from dabroz/feature-array-transpose
e65fa4d implement Array.transpose
d01003c Merge pull request #3851 from ukrainskiysergey/variable_c_cosmetic_changes
ddd32d7 Changed the assignment of a variable in variable.c
74714c8 Changed numbers to TRUE and FALSE for mrb_bool in variable.c
c8da602 Need to save stack space by number of registers from the current proc,
03a3bd9 The number of argument should be retrieved by `mrb_get_argc`; fix #3848
c210a8a Fixed wrong stack extend size; fix #3847
181f980 Need to clear stack region for local variables in eval; fix #3844
41c8c41 Use proper target_class to define class/module; fix #3843
f723832 Should allocate memory region before updating `len`; fix #3842
7ae20e0 Simplify `MRB_WITHOUT_FLOAT` condtion
37f6e42 Removed redundant function prototype.
d6cb4f9 Merge branch 'pandax381-mrb_without_float'
a751f7f Make `mirb` to print warnings; ref #3827
fef4b39 Avoid compiling `fmt_fp.c` if `MRB_WITHOUT_FLOAT` is set; #3827
de2363a Merge branch 'mrb_without_float' of https://github.com/pandax381/mruby into pandax381-mrb_without_float
388d26d Reimplement `block_given?`; ref #3841
ab27abe The `bidx` saved in `env` may be useless; fix #3841
625f9f6 Merge branch 'master' of github.com:mruby/mruby
e7fe6ee Avoid pointer arithmetic in backtrace.c; #3816
12e3859 Always check division-by-zero to avoid undefined behavior; fix #3816
d489b41 Reduce memory leaks from `mirb`.
e4662d7 Should not use `FSHARED` state for string from `irep` pools; fix #3829
13a318b Merge pull request #3840 from iij/keep-backtrace-rethrown-exc
f689675 don't overwrite backtrace info.
ddfb249 Fixed constant (and class variable) reference bug; fix #3839
022570a Call stack may not reference the destination `proc`; fix #3838
b6598e0 Need to mark fibers referenced from `env`; fix #3837
77edafb Need to check number of argument of `Struct#new`; fix #3823
59dc7d0 Removed a debug printf; fix #3834
1b45e03 Remove one of the lines that did the same thing; fix #3836
6316e0c Should clear ensure stack at `OP_RETURN break`; #3715
92e24f8 Should check if `callinfo` stack is popped before updating the stack.
c7c9543 Fixed UPVAR gotchas; fix #3835
57dad6e Remove a debug variable
23d18bb Add parentheses to pacify a warning.
93f5f22 Heavily refactored how lexical scope links are implemented; fix #3821
3f9d00d comment out `bench` build from standard `build_config.rb`
4614b9d remove `inline` from replacement `memcpy`&`memset`
5405b47 Update test for `Kernel#local_variables`
1487746 Remove MRB_API from `mrb_env_unshare()`
07cf7b1 Add some peephole optimizations
6c966a1 Change the order of "expected" and "actual" in test
0cf5a0e Use alias to implement `attr` method
fda64be Flush stdout after every print from tests
71eeb86 Format codedump for OP_{LE,LT,GE,GT}.
d08205b Merge pull request #3833 from bggd/appveyor_winbison_ruby24
7f4cc0d Turn on method cache for AppVeyor CI
7a13e89 Use Ruby 2.4 instead of AppVeyor's Default(Ruby 1.9)
8a9b6c4 Use win_bison instead of Cygwin's bison. Use YACC environment variable instead of global PATH
0c3ee0b Add `Array#{permutation,combination}.
f239485 Add `main.define_method`
3c8e1f9 Merge pull request #94 from kazuho/kazuho/rename-compatibility
fc93070 Add `Kernel#itself`; CRuby2.2
ce916b9 Add `Hash#to_proc`; CRuby2.3
b5dfbce Add `Numeric#{positive?,negative?}`; CRuby2.3
44f0704 Add `Hash#fetch_values`; CRuby2.3
913b83d Merge branch 'dabroz-fix-get-argc'
3c20c96 Use a new function: `mrb_get_argc()`; ref #3826
b890528 Remove `mrb_vm_get_argc`; ref #3826
344a7ce Merge branch 'fix-get-argc' of https://github.com/dabroz/mruby into dabroz-fix-get-argc
4122c32 Add `{String,Symbol}#casecmp?`; CRuby2.4
db8265f Add `Comparable#uniq`; CRuby2.4
4e36515 Add `Comparable#clamp`; CRuby2.4
061d804 Add `Numeric#{finite?,infinite?}`; CRuby2.4
332d8d2 Add `String#delete_{prefix,suffix}`; CRuby2.5
1519616 Add `Kernel#yield_self`; CRuby2.5
c96def7 Remove top-level constant lookup; CRuby2.5
e59ad60 `do/end` blocks to work with `rescue/ensure/else`; CRuby2.5
fb85855 Add more checks before accessing struct pointer; ref #3831
be2c159 Check struct-array pointer before accessing; fix #3831
1988bec Need to adjust the stack length of the top-level environment; fix #3819
c3710db Fix a compile error on zero mrbgem case.
6b0c22e Merge pull request #3830 from dearblue/fix-alias-for-struct-accessors
b70d69d Support MRB_WIHTOUT_FLOAT to mruby-kernel-ext
9afd376 Support MRB_WIHTOUT_FLOAT to mruby-object-ext
b0cdb93 Support MRB_WIHTOUT_FLOAT to mruby-numeric-ext (test only)
9c1f21a Support MRB_WIHTOUT_FLOAT to mruby-string-ext
44e2c97 fix alias for Struct accessors
5d78131 Support MRB_WIHTOUT_FLOAT to mruby-sprintf
fa974a1 Merge pull request #3828 from asfluido/master
af3d5d6 Correct a small error in parse.y, which causes the reading of unassigned memory (triggers an error when address sanitizer is active)
0d92431 make the behavior consistent with MRI
81ea81e Fix typo
3eebe81 Upadte AUTHORS
dcd5d0f Test for MRB_WITHOUT_FLOAT
acdc2d1 Add MRB_WITHOUT_FLOAT
679dfd7 Use division expression instead of some floating point literals
be86d8b correctly handle *splat arguments in mrb_get_argc, also add mrb_vm_get_argc and mrb_get_argv
80e03f3 Merge pull request #3824 from nobu/bug/paren_arg
8298333 Fix parse error on TRICK2013/yhara
1c2a282 Replace lvar_defined with local_var_p
f812195 Merge pull request #92 from palkan/master
43795cb Remove useless mrb_str_modify
4c255c7 Handle shared/frozen strings in IO#sysread
c3c882f Use `uint32_t` to avoid signed integer overflow warning; #3816
8c40837 Add `cscope.files` to `.gitignore`.
7edbe42 Add new type of shared string: `RSTR_FSHARED`.
473b7d0 Cut links from `irep` in heaps finalization.
7b01b96 `codedump` to display `OP_CALL`.
29a9e69 Merge pull request #3815 from dabroz/fix-warnings
999ce87 fix: src\vm.c(2631): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
77d6a95 fix: src\vm.c(1757): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
ebd45b1 fix: src\vm.c(1744): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
0bff4b6 fix: src\vm.c(1702): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
885916c fix: src\vm.c(708): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
e88fc10 fix: src\vm.c(704): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
ec7f478 fix: src\vm.c(457): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
67ab840 fix: src\vm.c(445): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
23cc698 fix: src\vm.c(438): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
5ede90c fix: src\vm.c(438): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
53f934a fix: src\string.c(2219): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
ef8df49 fix: src\string.c(1924): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
027b8d8 fix: src\string.c(1130): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
46ccaba fix: src\string.c(497): warning C4244: '=': conversion from 'mrb_int' to 'long', possible loss of data
6cde950 fix: src\state.c(66): warning C4200: nonstandard extension used: zero-sized array in struct/union
0e2976b fix: src\range.c(136): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
b7e71e4 fix: src\proc.c(96): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
490de9d fix: src\print.c(22): warning C4244: 'initializing': conversion from 'mrb_int' to 'int', possible loss of data
220c628 fix: src\pool.c(33): warning C4200: nonstandard extension used: zero-sized array in struct/union
f0c1074 fix: src\numeric.c(1215): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
4a0c9c9 fix: src\numeric.c(954): warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
332a04a fix: src\numeric.c(897): warning C4244: 'function': conversion from 'mrb_int' to 'mrb_float', possible loss of data
971a4f9 fix: src\kernel.c(874): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
0e0c960 fix: src\kernel.c(861): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
7d98055 fix: src\hash.c(139): warning C4244: 'function': conversion from 'mrb_int' to 'khint_t', possible loss of data
8cef3f9 fix: src\hash.c(40): warning C4244: '=': conversion from 'mrb_int' to 'khint_t', possible loss of data
3e1d60a fix: src\hash.c(27): warning C4244: '=': conversion from 'mrb_int' to 'khint_t', possible loss of data
c7b663f fix: src\gc.c(1425): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
b406e9f fix: src\gc.c(1392): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
1dcf8ba fix: src\gc.c(559): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
7a2391b fix: src\error.c(76): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
4d6b8db fix: src\dump.c(710): warning C4244: 'function': conversion from 'mrb_int' to 'uint16_t', possible loss of data
f4a17dd fix: src\dump.c(657): warning C4244: 'function': conversion from 'mrb_int' to 'uint16_t', possible loss of data
5ed76e3 fix: src\class.c(949): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
9c5db48 fix: src\class.c(949): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
d8b37d0 fix: src\class.c(583): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
4146b5c fix: src\backtrace.c(83): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
7507d46 fix: src\array.c(86): warning C4244: '=': conversion from 'mrb_int' to 'uint32_t', possible loss of data
be81504 fix: mrbgems\mruby-time\src\time.c(641): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
0848407 fix: mrbgems\mruby-time\src\time.c(372): warning C4244: 'function': conversion from 'mrb_int' to 'double', possible loss of data
d713f8d fix: mrbgems\mruby-test\driver.c(67): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
2640896 fix: mrbgems\mruby-string-ext\src\string.c(49): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
8d816fa fix: mrbgems\mruby-string-ext\src\string.c(30): warning C4244: '=': conversion from 'mrb_int' to 'long', possible loss of data
d381962 fix: mrbgems\mruby-string-ext\src\string.c(38): warning C4244: '=': conversion from 'mrb_int' to 'char', possible loss of data
a94525d fix: mrbgems\mruby-sprintf\src\sprintf.c(1052): warning C4244: '+=': conversion from 'mrb_int' to 'int', possible loss of data
1e2c962 fix: mrbgems\mruby-sprintf\src\sprintf.c(623): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
897eabb fix: mrbgems\mruby-sprintf\src\sprintf.c(646): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
e10b329 fix: mrbgems\mruby-sprintf\src\sprintf.c(618): warning C4244: 'initializing': conversion from 'mrb_int' to 'int', possible loss of data
861077f fix: mrbgems\mruby-sprintf\src\sprintf.c(516): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
553dbad fix: mrbgems\mruby-math\src\math.c(660): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
49e96a2 fix: mrbgems\mruby-math\src\math.c(491): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
536b95e fix: mrbgems\mruby-kernel-ext\src\kernel.c(114): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
9d89f8c fix: mrbgems\mruby-fiber\src\fiber.c(215): warning C4244: '=': conversion from 'mrb_int' to 'int', possible loss of data
377d6a4 fix: mrbgems\mruby-exit\src\mruby-exit.c(10): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
f632bad fix: mrbgems\mruby-eval\src\eval.c(301): warning C4244: 'function': conversion from 'mrb_int' to 'int', possible loss of data
49db1db fix: mrbgems\mruby-eval\src\eval.c(214): warning C4244: '=': conversion from 'mrb_int' to 'short', possible loss of data
2e239a2 fix: mrbgems\mruby-compiler\core\parse.y(3455): warning C4244: 'function': conversion from 'intptr_t' to 'int', possible loss of data
f1a02df fix: include\mruby/gc.h(43): warning C4200: nonstandard extension used: zero-sized array in struct/union
3818502 The `[]` special method call should be able to take a block.
e98823f The `lex_state` after literals should be `EXPR_ENDARG`.
e01d35e The symbols should not take brace blocks.
298177f Merge pull request #3813 from dabroz/feature-fix-date
e00b48b change DISABLE_STDIO to MRB_DISABLE_STDIO in mruby-time/time.c
7450a77 The first instruction was skipped mistakenly in ensure clause; fix #3811
0ceaa09 `OP_EPOP` operand may be bigger than `mrb->c->eidx`; fix #3810
5760226 Remove temporary limitation of `OP_EPOP`.
ab54185 receiver variables must be "mrb_int" for mrb_get_args("i").
a809d42 remove whitespaces at the end of line.
d6e41c3 The callinfo stack may be reallocated in `cipush`; fix rest of #3809
3d8c1a7 The ensure stack may be empty at `OP_EPOP`; fix 1st part of #3809
2a1e616 Avoid calling `mrb_funcall` to invoke `#initialize` from `Class.new`.
cbfa2b3 Avoid recursion from `mark_context()`.
f68f5f6 Avoid crossing C function boundary from `OP_EPOP`; ref #3789
7f4b57b Restrict `OP_EPOP` operand to `1`; ref #3789
15f4bdb Merge pull request #37 from udzura/fix-types
5b6e4ed Fix type int to mrb_int
3acaa44 Restructure `irep->outer` chain; fix #3804
8a5d783 Call `initialize` only when it's not empty.
5d7e495 Merge pull request #3806 from flaviommedeiros/master
da97715 Merge pull request #3805 from fl0l0u/patch-1
e03042e Update print.c
9f677b7 Trying to make the source code more understandable by removing mixing of ternary if statements with attributions.
476af3c Merge pull request #3802 from christopheraue/proc_break_tests
ab99e2c Avoid copying over initialized procs using `initialize_copy`; fix #3803
5761009 Update method cache clearing.
f0f4a10 Make the default integer size to be `MRB_INT64` on 64bit systems; close #3800
35deaae Tested LocalJumpErrors caused by break in a proc
71357ff Merge pull request #3801 from christopheraue/assert_raise_refactoring
bf32265 Allowed to pass multiple exceptions to assert_raise
fe3227c Set the ORPHAN flag in `Proc.new`; fix #3798
483a038 Fixed a critical typo; ref #3798
2c85213 Need to mark `mrb->range_class`; fix #3797
79b4f61 Merge pull request #3799 from christopheraue/assert_raise_refactoring
4b0b8f7 Refactored #assert_raise and #assert_nothing_raised
8976f47 Need to update `ci` after `callinfo` stack reallocation; fix #3796
c082249 Exclude the top-level closure from `each_object`; fix #3793
786cbf0 Revert "Clear `irep->outer` when no `Proc` reference the `irep`; fix #3793"
1260d3b Add `__ENCODING__' support.
f1fa5bf Remove integer type mismatch warnings from parse.y.
15d48ef Clear `irep->outer` when no `Proc` reference the `irep`; fix #3793
fd927d7 Merge pull request #3795 from christopheraue/array_refactoring
c956e17 Replaced Array#each with while loop for performance reasons
6c9013e Removed unneeded block check in Array#uniq
f3fb43c Reimplemented Array#flatten with #flatten!
ccd5554 Merge pull request #3794 from dabroz/fix-flt-epsilon
01b9b71 fix mrbgems/mruby-range-ext/src/range.c:142:71: error: use of undeclared identifier 'FLT_EPSILON'
85a400e Reimplement `Array#shift` to be faster.
cec53ff `Array#first` to treat 1 argument case specially to improve performance.
1b545a6 Check for ability to skip optional argument parsing.
60104ce Silence compiler warning regarding float condition; fix #3790
43ec918 Remove unused `mrb_obj_iv_ifnone()` from API.
0e10a23 Add checks if `iv_tbl` is NULL.
0c52112 Keep `Range` class in `mrb_state` structure for performance.
04dbbff Use `khash` for instance variables tables instead of segment list.
f2cc123 Turn on method cache for Travis CI.
f7f1aca Merge pull request #3792 from dabroz/fix-test-int16
5f2c7e4 Merge pull request #3791 from dabroz/fix-msvc-warning
17c2497 fix `String#% %d` test with `MRB_INT16` set
5d9b84e fix fmt_fp.c(329) : warning C4244: 'return' : conversion from 'ptrdiff_t' to 'int', possible loss of data
78b13b3 fix fmt_fp.c(251) : warning C4244: '=' : conversion from '__int64' to 'int', possible loss of data
ef6a762 fix fmt_fp.c(224) : warning C4244: '=' : conversion from 'ptrdiff_t' to 'int', possible loss of data
bac37a9 fix fmt_fp.c(220) : warning C4244: '=' : conversion from '__int64' to 'int', possible loss of data
b2a16d6 fix fmt_fp.c(206) : warning C4244: 'initializing' : conversion from 'ptrdiff_t' to 'int', possible loss of data
c8341db fix fmt_fp.c(178) : warning C4244: 'return' : conversion from 'ptrdiff_t' to 'int', possible loss of data
5d099e4 fix fmt_fp.c(123) : warning C4244: 'return' : conversion from 'ptrdiff_t' to 'int', possible loss of data
63f10a1 Merge pull request #3788 from christopheraue/fix_codegen_op_send_nregs
3366894 Fixed register windows of OP_SENDs generated by NODE_{DREGX,REGX}; ref #3783
499498a Tested register windows of OP_SENDs generated by NODE_{DXSTR,XSTR}; ref #3783
84d8ecc Fixed register windows of OP_SENDs generated by NODE_OP_ASGN; ref #3783
4aca9ef Refactored code around generation of OP_SEND in NODE_OP_ASGN
1221f76 Fixed register windows of OP_SENDs generated by NODE_{FOR,SYMBOLS}; ref #3783
c040c8d Tested register windows of OP_SENDs generated by NODE_{RESCUE,HASH,ALIAS}; ref #3783
c6596cf Fixed register windows of OP_SENDs generated by NODE_{SCALL,CASE,YIELD,UNDEF}; ref #3783
64e5208 Asserted bidx < ci->nregs for OP_SEND and OP_SUPER
4c9a604 Added method cache.
a65f4db Remove possible path that leaves a local variable uninitialized.
db437b0 `mrb_obj_respond_to` to use `mrb_method_search_vm`.
0d865a7 `c` (`mrbc_context`) may be NULL; fix #3787
ab3b6db `strlen` returns `size_t`; need to cast before assigning to `int`.
3f90af6 (Try to) fix mixture of `int` and `size_t` in UTF-8 conversion.
a7d611f Reduce signed/unsigned warnings in dump.c
5d0fc7e Reduce signed/unsigned warnings in fmt_fp.c
8cea1f8 Use `ptrdiff_t` instead of `int`.
a117ec7 Remove mixed signed/unsigned comparison in debug.c.
8345239 Replace stack `pop()` by `push_n(2); pop_n(3)`; fix #3783
db098d3 Type check before traversing `irep->outer`; fix #3782
2294ebd Call `mrb_full_gc` before `gc_each_objects`; ref #3782
9146d5c Zero width `unshift` should not touch memory; ref #3780
8b3298b Unshift pointer move size was wrong (not `len` but `alen`); fix #3780
29ad0a7 `capacify' for `mrb_str_new_capa` should not be `0`.
a8bd069 `mrb_str_cat`: `capa` should not be zero to avoid infinite loops.
a06adb1 `mrb_str_cat`: `capa` should be bigger than `total`.
8b5be55 `ARY_CAPA` handles capacity for embedded arrays by itself.
8fbc4be Reduce signed/unsigned comparison warnings; ref #3785
f1767fd Separate `mrb_str_buf_new` and `mrb_str_new_capa`.
722d123 Remove code duplication in `mrb_str_concat`.
198c898 Rename `mrb_str_concat2` to `mrb_str_concat_m`.
4c25738 Merge `str_buf_cat` and `mrb_str_cat`.
2adb0c2 Merge pull request #3786 from christopheraue/3784_fix
11c3ad9 Merge pull request #3781 from clayton-shopify/fix-hash-compact-bang
f229ed9 Merge pull request #3785 from miura1729/original
75ec86e Improve Array structure
6b0860c Reset ci in OP_SUPER after potential realloc
5dc688f Check whether internal khash is initialized in Hash#compact!
0789ec7 Merge pull request #3779 from christopheraue/vm_refactoring
d5ac785 Reintroduced not storing converted proc directly in the stack
198df61 Removed unneeded ci->nregs checks in OP_SEND and OP_SUPER
f2d4640 Extended stack always based on ci->nregs
3f591d7 Refactored variable usage in OP_SEND and OP_SUPER
8bf492f Reduce integer type mismatch warnings in VC.
baa5d2e Remove some empty lines; ref #3778
0828a96 Merge pull request #3778 from christopheraue/vm_refactoring
42f9af4 Merge pull request #3777 from christopheraue/super_method_missing_test
731dd78 Added basic test for calling a missing method through super
58f5115 Refactored OP_SEND and OP_SUPER and calculate argc right at the top
d077a5f `scan_hex` may be used to parse both unicode and hex escape.
56d4e41 Fixed a wrong condition in `scan_hex`; fix #3774
96d4c2d Remove an unused argument from `each_backtrace_func`.
1d781da Should not include `float.h` here.
db72cda Merge branch 'christopheraue-super_method_missing_fix'
ab39ed4 Defer `mid` update after `unshift`; ref #3776
9feb069 Merge branch 'super_method_missing_fix' of https://github.com/christopheraue/mruby into christopheraue-super_method_missing_fix
0ff28c9 Silence integer type conversion warnings.
ef0b239 Remove unnecessary inline function `ary_elt`.
67e2ddd Remove `mrb_ary_len` function. Use `RARRAY_LEN` instead.
8f6b212 Update document comment of array C API functions.
4e2f4f4 Avoid possible data loss by using `ptrdiff_t`.
ae04005 The type of `ARY_EMBED_LEN` should be `mrb_int`.
3e075a7 Should not call `to_str` in `mrb_vformat`; fix #3773
68470be Check method existence in `to_enum'; ref #3773
2249551 Fixed calling missing method through super with 126 args
ac42ccc Merge pull request #3772 from vvakame/add2authors
a8658b0 Updated AUTHORS
a7462a7 Remove redundant `flo_hash` function.
3d288ef Use standard hash functions in `mrb_hash_ht_hash_func`.
78be017 Normalize float numbers before calculating a hash value.
9826ca5 VM stack may be reallocated during `mrb_hash_get`; fix #3771
9e0c48d Merge pull request #3770 from christopheraue/tabs_to_spaces
2fadddc Replaced tabs with spaces
24c345f Merge branch 'vvakame-add-hash-compact'
6c61a60 Implement `Hash#compact!` in C; ref #3769
4d46f36 add method(compact, compact!) and test of Hash to mruby-hash-ext
f9c3ebd Wrong blkargs pos for vararg; ref #3768
0a61df1 The block argument offset saved in the env was wrong; fix #3768
8f62957 Support `break` within rescue clauses; fix #3767 ref #3721
66e2928 Float values divided by zero should honor signs; fix #3766
8494557 Set the current `pc` as the error position in `OP_ERR`; ref #3765
e910cf6 Check if `ptr` is NULL before calling `memset`; fix #3765
1358725 Merge pull request #3764 from christopheraue/new_hash_perf
ec7475d Prevented resizing just created hashes in specific size ranges
0e5c3c4 Improved speed of creating new hash tables
1b9c485 `proc->body.irep` may be NULL; fix #3761
0066613 Fixed heap buffer overflow in `mrb_ary_unshift_m`; fix #3760
36dbfd9 Change return type of `scan_oct` from `int` to `int32_t`.
e86c252 Left shift of signed integers is undefined behavior in C; fix #3762
8095754 Merge pull request #3763 from mimaki/fix-mrdb-source-path
7bdc709 Fixed a invalid source path name on mruby debugger.
7b88c1a Now `local_variables` works when for closures; fix #3710
da24af3 Better class name management.
2170fad Cosmetic changes (removing spaces before `*` in return types).
648e9ea Move naming unnamed classes/modules
3f6a098 Reimplement constant look-up rule to follow lexical scoping.
9e10afe Implements `Module::nesting' (15.2.2.3.2); ref #600, #3200
16aafdd Merge pull request #3759 from christopheraue/authors_update
facf5f9 Merge pull request #3758 from christopheraue/enumeration_perf
a4ff31e Updated AUTHORS
3359b86 Improved speed of enumeration methods
c8fdab8 Merge branch 'udzura-move-task-class-definitions'
e821c25 Merge branch 'move-task-class-definitions' of https://github.com/udzura/mruby into udzura-move-task-class-definitions
b290e98 Merge pull request #3757 from christopheraue/module_const_get_class_path
cf23a85 Merge pull request #3755 from christopheraue/array_bsearch_index
dda73da Merge pull request #3756 from christopheraue/fix_mod_include_ret_val
a3bfd73 Added Array#bsearch_index
451574f Refactored Array#bsearch
f937af5 Extended Module#const_get to support class paths
c7018ea Added mrb_str_index to the mrb API
b499ad6 Fixed return value of Module#include and #prepend
8a6ce74 Tested Array#bsearch more thoroughly
4696093 Rename `MRB_SEGMENT_SIZE` to `MRB_IV_SEGMENT_SIZE`.
1e41026 Always use `MRB_USE_IV_SEGLIST`.
f26d00d Embed small size array elements in the heap.
5d44f85 Remove loop from `OP_POPERR`.
7d5cf87 `(0).div(0.0)` should be NaN; fix #3754
46ab8fd `(0.0).div(0)` should not be infinity; fix #3753
9fa3d77 `0/0` should not be infinity; fix #3752
7b8d784 Reimplement sort method to reduce array copying.
04774e5 remove unused exception variables.
7c62d89 Merge pull request #88 from christopheraue/master
3642fe4 fixed #87: IO#read(n) with n > IO::BUF_SIZE
81a0dcd sizeof(optval) must be 1 for IP_MULTICAST_TTL & IP_MULTICAST_LOOP.  fixes #34.
fe99819 Merge pull request #85 from ksss/read
c279f00 Merge pull request #86 from ksss/write
0b41066 Merge pull request #84 from ksss/pos
051d7bc Reseek when write
1ebe1c8 Support outbuf argument for IO#read
27f4228 To accurate `pos`
3a73a58 mruby 1.2.0 assumes test blocks return their results.  master does not.
383a9c7 Merge pull request #13 from ksss/unpack-utf8
dab87cf Merge pull request #80 from ksss/sysread
a3a4f4d IO#sysread Check for readable
0c0b341 Merge pull request #78 from ksss/syswrite
87771ec Merge pull request #79 from ksss/ioerror
0bbd60b IO#sysread should raise error when invalid pos
86edc9a IO#sysread should raise IOError when closed
844b2c3 IO#sysread with 0 always return empty string
c43795c Should raise SyscallError on IO#syswrite
6836f42 "open" error message should include pathname.  fixes #77.
728d313 Merge pull request #76 from yyamano/issue-75
311f4a2 Make backquote work with the latest mruby. Fixed #75
7e014ef Merge pull request #14 from ksss/to_int
38db5e5 Some adjustments
9c2db2e Move class/module definitions to normal .rb files
86b69d7 Initial skelton for class/module def
d83e15e Should use `to_int` instead of `to_i`
0dbd1d5 Add "U" template to doc
f691a73 Should raise RangeError
a80a745 Support unpack template "U"
f8a3af8 Merge pull request #74 from iij/run-test-outside-source-tree
3ae5fea run mrbtest outside of source tree.
74fe87c Add a travis-ci badge.
86d58a2 File class does not have to include Enumerable.
88a7fed support "x".
3dad125 TCPSocket.new supports "local_host" and "local_service".
caab1c2 define IO#hash to override Enumerable#hash.  fixes #73.
6962307 Merge pull request #72 from masahino/add_pointer_casting
1fac605 Add pointer casting
458b517 Merge pull request #71 from eagletmt/readlink
b31b802 Fix memory leak in error case
d1c4819 Add File.readlink
7e89736 Merge pull request #70 from eagletmt/chmod
698378f Add File.chmod
f2d4880 Merge pull request #11 from masahino/add_casting
906b516 Add pointer casting
0eafb08 Merge pull request #69 from eagletmt/explicit-cast
905203e Add explicit cast from void* to struct mrb_io*
b5e2dc9 raise an exception when we cannot close "fd" but can close "fd2".
f6a8277 eof? should raise an IOError if it is not opened for reading.
2229a2a reimplement #eof.  fixes #66.
51cf6b6 Merge pull request #65 from ksss/join
ff845be Support Array argument
7c9d941 Show value of expect and actual each assertion
d8189c2 Merge pull request #64 from asfluido/master
024b09d Apparently, in mruby-process gem, Process is now a Module, not a Class
b341ee7 Merge pull request #63 from ksss/opt
9ccf03e Merge pull request #62 from ksss/global
d2c1f4d Enable Fixnum option
b462ef4 Enable option :in, :out, :err
4cac5e9 Should use global variable
cc66bf9 Merge pull request #9 from ksss/pointer-sign
1365074 Merge pull request #10 from dabroz/master
26c1ded Added 'U' pack support.
b9f7daf Suppress compiler warning [-Wpointer-sign]
93d481d update $? when IO object is closed.  closes #58.
e90ecff Merge pull request #60 from drbrain/test_io_setup_failure
2af2a4f add IO#isatty and IO#tty?
b2a0c9c Merge pull request #30 from rhykw/tcpserver-reuseaddr
4f67032 TCPServer use SO_REUSEADDR if possible
2a80ccc TCPServer use SO_REUSEADDR
11961b4 Create socket in /tmp for security
777cf70 Include reason in test failure message
18f7b45 Merge pull request #29 from rmalizia44/patch-1
be2ec60 Add _WIN32_WINNT definition to Avoid Windows Compilation Errors
1c44288 Merge pull request #57 from MaximAbramchuck/patch-1
7d6f2be Add installation instructions
c165e50 Merge pull request #28 from zzak/port-ntop-pton-win32
a25ec0a Merge pull request #27 from zzak/fix-udpsock-warning
bdc1183 Port inet_ntop and inet_pton for WIN32
c8a2c63 Fix warning: variable 'udpsock' set but not used
99e10b8 File::ALT_SEPARATOR is always defined (some string or nil).
4acfd1c Merge pull request #56 from takahashim/fix-flock
dd75422 Fix for windows(mingw)
68de1e4 Merge pull request #55 from takahashim/separator
0f5b8b6 fix file separator
6c67120 Merge pull request #54 from takahashim/win-crlf
b19c315 fix tests for Win: use binary mode
7337bfa Merge pull request #53 from takahashim/build-win32
07ceb13 build on Win32
07f1ebd symlink(2) returns -1 when it fails.
11ffb93 assert_nothing_raised is not available on mruby 1.0.0.
ca49594 Merge pull request #51 from ksss/io-pipe
a55accd Implement IO.pipe
c9a4091 arguments can be shared strings.
1f4bd9f Merge pull request #50 from takahashim/file-symlink
2cc674e add File.symlink
14cdff0 Merge pull request #48 from takahashim/file-path
44473fe add File.path
828551f off_t can be larger than mrb_int.
db7d829 raise a SystemCallError when lseek(2) fails.
21963f8 UT for IO#sysseek.
cac0035 fix typo.
78fe65a Merge branch 'master' of github.com:iij/mruby-io
71197d2 Merge pull request #47 from matsumoto-r/patch-1
2387045 Fix buffer overflow of `pos` when file-size is too big
e724c5a Merge pull request #45 from takahashim/enable-test
1f217ea Merge pull request #46 from takahashim/add-rewind
9bbfc38 add IO#rewind
1d6b7f9 Merge pull request #44 from takahashim/io-addstr
f5560e8 enable test
c26f998 support IO#<<
6259954 To run test, we need "conf.enable_test" in build_config.rb.
f301675 build in container-based environment.
ecd7ef5 Revert "try to fix failure on travis."
02daa25 try to fix failure on travis.
5fa3c39 variables are not used on the platforms lack FD_CLOEXEC.
6c4d394 Merge pull request #30 from ksss/cloexec
042e4a4 Merge pull request #43 from jkutner/master
2467332 Made FILE_SEPERATOR platform dependent
efaf746 Merge pull request #42 from hone/path_separator
5323498 Merge pull request #23 from expeditiousRubyist/master
e8efd10 make pack_l simpler.
4603047 update installation procedure.
359d2ae support "q" and "Q".  closes #7.
d34db58 implicit type conversion caused unexpected result.  fixes #8.
c43a083 Changed IO overrides to use sysread and syswrite instead of read and write
ec4982b define PATH_SEPARATOR
8527c78 Merge pull request #22 from Asmod4n/master
2929c62 added SO_NOSIGPIPE
de60400 Merge pull request #21 from expeditiousRubyist/master
f80a4fd Added functioning read for Win32
2d1134e Merge pull request #41 from hone/cross_compile_windows
fe7784e support for crossbuild for windows (32 bit and 64 bit) using mingw
bfb9cf7 Merge pull request #20 from expeditiousRubyist/master
4ab9220 Removed unnecessary/incorrect use of sizeof(int) and corrected more improper usages of mrb_sys_fail
7ee9ab8 Changed some uses of mrb_sys_fail to instead use mrb_raise where appropriate
a426f0e Overrided close and write to work on Win32 platforms
752f7c1 Minimal semi-working compile on Windows platforms.
7d8cbf1 Added Winsock 2 to list of libraries to use when building for Windows targets
1b5c685 Merge pull request #40 from archSeer/patch-1
8da787b Remove mrb_io_s_select typo.
b913e7e test suite for pack/unpack.
2ba4933 refactor "AaZ".  fixes #6.
15de80a style.
dacb8b6 failed to remove temporary files!
ae4fc77 Merge pull request #39 from jbreeden/master
6d6be18 Removing redundant platform check
7f8324a Merge branch 'master' of https://github.com/iij/mruby-io
36343cf Correct File::NULL for Windows
c0738a7 Excluding wait call for windows
cfbc8a8 Merge pull request #38 from jbreeden/master
e92fd76 wait for child processes when we close pipes.  fixes #37.
1629e86 add IPv6 constants defined in RFC3493.
e4006cb Socket::Option requires iij/mruby-pack.
0d05a22 don't call undefined method.  fixes #15.
7b17158 remove unused variables.
a09858a syscalls may return sockaddr shorter than sizeof(struct sockaddr) on Linux.
a960a6f failed to add...
3a22166 debug UNIXSocket and UNIXServer.
3a97a45 rewrite IO.for_fd.
c455544 better error message.
1d1f273 Merge pull request #35 from tmtm/fix-read-create-many-objects
42752bf FIX: IO#read create a large number of objects.
e7dbe6e Merge pull request #33 from iij/revert-32-fix-read-create-many-objects
e82c1d3 Revert "FIX: IO#read create a large number of objects."
50721e9 Merge pull request #32 from tmtm/fix-read-create-many-objects
9b13a59 FIX: IO#read create a large number of objects.
ee347f3 Merge pull request #31 from tmtm/fix-sysread-segv
be9e203 FIX: IO#sysread occurs SEGV
723db88 add Socket::Option#inspect
1214756 add "I" and "i".
2103bc9 style
669fe70 "i" and "I".
e61c469 IO.popen fd set close_on_exec flag by default
9439b98 Opened fd should be set FD_CLOEXEC by default
d1fee58 IO.sysopen does retry.  closes #26.
e7cd024 Merge pull request #29 from sdottaka/fix-for-msvc
24007b8 Fix broken build for Visual C++
a2f45bf Merge pull request #28 from ksss/file-size
a44ada6 Implement FileTest.size
379c5a6 Merge pull request #25 from matz/gc_on_enfile
b50093a garbage collect when open(2) fails with ENFILE or EMFILE
190264b Merge pull request #23 from jbreeden/master
0761b17 update implemented methods table
9a2cbc4 Correcting E_NOTIMP_ERROR reference
e60951a add IO#sync and IO#sync=
1768ee0 remove extra ';'.
8c34a8d Merge pull request #22 from take-cheeze/fix_arg
689541d Fix type of argument passed to mrb_get_args.
093f4e2 mrb_voidp (and other macros) has gone.
fa39825 refactor.
66a9224 Merge pull request #21 from dreamedge/add_close_on_exec
78f5f98 delete debug messages
7e689e8 Add IO#close_on_exec=  and a test on test/io.rb
59b7c4e add IO.close_on_exec?
91c285f regen.
0409734 more TCP options (for NetBSD).
baa40ef sort.
9c3c267 Merge pull request #14 from dreamedge/add_tcp_constants
f3c71cf Add TCP_* constants included in "netinet/tcp.h". ex: TCP_NODELAY, TCP_CORK, ...
ddfc4eb IO#read(0) should return "" immediately.  fixes iij/mruby-socket#13.
376af5b re-implement TCPServer.accept. fixes #12.
5b65ca3 Merge pull request #5 from take-cheeze/float
7b2611e Update supported template list.
8f4b7ac Support float/double unpacking.
514450e Use PACK_FLAG_LITTLEENDIAN.
7dc2b4f Implement g/f/F/G/d/D packing.
f4f9682 Add support of little endian float.
a0c4ca2 Merge pull request #4 from take-cheeze/raise_fix
1997420 Fix raise format found with mruby-clang-plugin.
d894de8 fd2 is valid if fd2 >= 0.  fixes #18.
cb84ce3 no longer used.
9ee9c27 Merge pull request #20 from windwiny/patch-1
dc61ef1 compatible 32 bit windows
077f39b Merge pull request #19 from schmurfy/solaris_flock
9a1b25b raise an error for flock on solaris
5aeb99a fix mrb_raisef usage.
9c00de5 IO.for_fd can be written in Ruby.
c46cb1b more tests.
e5f30f8 IO#flush should raise an exception if it is closed.
99c6774 remove return statements after mrb_raise().
7d7a549 remove io_open().
36045ea IO#syswrite should raise an error if it's not opened for writing.
1c4f46f remove standard header files from io.h.
a11780f file.c depends on mruby/ext/io.h now.
a3e1e53 function declarations should be in a header file.
9f5ff9d remove unused constants.
ba9cb1f "struct mrb_io_type" is not used at all.
10be4cb file.c does not depend on mruby/ext/io.h.
87ce12d io.write("") -> 0
810e37b return value of syswrite may be less than length of given string.
d5cf1de Merge pull request #16 from schmurfy/solaris
1d987d2 Merge pull request #9 from schmurfy/solaris
9850e6a OpenSolaris/Illumos defines a "sun" constant...
cd168c6 solaris does not have flock
28e00d8 suppress compiler warnings.
a6ab2c5 Merge pull request #15 from monami-ya-mrb/pr-add-error-check-in-test
706ef13 Don't ignore the return value of symlink().
572b404 Update .travis.yml
2bf49c9 Update .travis.yml
083cd9c Update .travis.yml
355723e Create .travis.yml
80e01e3 Create .travis.yml
1094bbf Create .travis.yml
eda9d1a nonexistent test fixes (for travis-ci)
ab9dcc7 IO.close should be IO._sysclose.  closes #13.
719452b remove unsed.
14031bd Merge pull request #11 from pbosetti/master
279587c split.
a855851 mruby-mtest is not required to build (but to test).
e345d4c Merge pull request #7 from monami-ya-mrb/pr-fix-connect-failed
11b4745 Call Socket._connect() in Socket.connect() .
39bd240 Fixed bug in File.expand_path() on Windows (forever recursive loop)
7ff0494 Added File.foreach method. Improved error management in File.new (Errno can be undefined)
d9f3fd8 Merge branch 'master' of https://github.com/iij/mruby-io into test
f7c054b quiet compiler.
e8706d4 remove unused.
b9dff44 Merge branch 'master' of github.com:iij/mruby-io
56a8c59 add IO.read
a90d8b8 add Socket.getaddrinfo.
d28f042 compatibility support (mruby/mruby, iij/mruby and 1.0.0)
7fd585b support older version.
daa65c1 add dummy IO#flush for better compatibility with CRuby.
40c52f5 Merge pull request #9 from matsumoto-r/support_mrb_get_module
ee2859d Updated mrb_include_module call after mruby 1.0.0
b3c6075 IO._bless has gone.
b74458a remove _bless trick.  closes #8.
526608c Support mrb_module_ge
f10b73e move license terms to the bottom.
a2af349 Now the drive letter is returned as leading path element  by File#dirname on Windows
b744097 Merge pull request #6 from schmurfy/testless
a613bce Merge branch 'master' of https://github.com/iij/mruby-io
8cee36b Catch Errno::ENFILE too.
23afaf0 Made compatible with VisualStudio
a26ce35 removed mtest dependency
d12f436 mrb_intern API change.
5a59fd3 Fix for compilation under Win/MinGW
e641e9a suppress a compiler warning.
2245818 make it more portable.
78d2d90 style
87d8782 Try GC when Too many open files (revert a part of 1e8097a).
e44da8a test for #6.
1e8097a IO.sysopen raises an exception when open(2) fails.  closes #6.
e96cdeb Merge pull request #3 from h2so5/patch-1
db14b8e avoid declaration error on VC++
d8e5e7d Merge pull request #3 from murasesyuka/feature/add_dependencies_gem
78ebe1b add mruby-socket dependency gems
823df14 remove unused code and irrelevant comment.
ec443d4 more IPPROTO_* related to IPv6.
93edd26 fix typo...
005f01f fix RSTRING_PTR usage.
bf4c226 Merge pull request #4 from pbosetti/master
c608c26 Merge branch 'master' of https://github.com/iij/mruby-io
49494a7 Truncate file on File.open(file, "w")
8b48e2b syswrite must write to fd2 if it is properly set.
97899a6 style
adb3bd6 don't retry when we cannot fork(2).
d75d232 fix descriptor leakage.
b4f0a68 add File#flock.
140da1c remove duplicated white spaces.
e27fb54 suppress a warning and fix a possible segv.
e2b0606 Merge pull request #2 from pbosetti/master
c4e3c46 Catch up with API changes on mrb_intern() -> mrb_intern_cstr()
47a610e use array parameter on IO.open.
713aa48 STDERR's file descriptor is 2.
9dc875f add `cmd` (command output expression).
40adffc ARGS_XXX -> MRB_ARGS_XXX
0345215 fix a possible address family mismatch.
a9593e1 v4/v6 fallback for TCP.
5e8021b tests for File.socket? and File.symlink?
c495410 use lstat(2) to check if it's a symlink
76e1017 hints.ai_socktype must be set if servname is not NULL on NetBSD3.
a341b8e more socket options (for multicast).
cf827ab fix Addrinfo.getaddrinfo("127.0.0.1", nil).
4f3a749 Fix incorrect condition for pendig-IO
216e327 Socket.gethostname always fails.
5625e44 add method: IO#select
1272df7 fix IO#eof? method (consider the read buffer)
35defaf fix mrb_voidp_value function call
f4aa3e7 getaddrinfo("localhost") returns "fe80::1%lo0" on MacOS!
1411d5b using mruby-mtest on test/socket.rb.
12144b9 getaddrinfo("localhost") may return 2 or more.
0f2d7e8 fix reading wrong variable.
b8912c3 Linux does not have getpeereid(2).
4bebd4d mrb_sys_fail() is declared in src/error.h
cfe1814 test runner.
8914706 mruby-socket depends on mruby-io.
bc5feb3 short description, example, requirement, todo, license.
e459ecc Merge branch 'master' of github.com:iij/mruby-socket
49e53bc Socket library for mruby.
06f1c82 Initial commit
0a21d9e bufix of mrb_file__gethome()
e277079 update run_test.rb
55b6ef4 add return value check of fseek
14e1992 add null check
d39a05e remove unused variable.
49cc9c7 Use strncpy instead of strcpy.
c25d386 Use mkstemp instead of mktemp.
acc8995 update run_test.rb
df529a8 add $stdin $stdout $stderr STDIN STDOUT STDERR
7a94d02 add IO#print
38f4086 Merge pull request #2 from schmurfy/double
dce09fb removed unused variables
c869bde added support for E in pack (double)
8c5cb5e cannot pack objects other than the first one.  closes #1.
f89ee88 rename mrb_class_obj_get -> mrb_class_get
7618ca6 remove unused Makefile
8bfbca2 update run_test.rb
62e1823 update run_test.rb
814f330 put MRB_ prefix before ARGS_XXX macros
d5982b4 put MRB_ prefix before ARGS_XXX macros
da557fb add File.expand_path
cc40f93 Kernel#open block support
9110039 add Kernel#open
5a425f5 Update README.md
b8a23e6 update README.md
e8ca5e5 initial commit
858d67c add "v" and "V".
fc43022 support "V" and "v".
abe9ccf Merge branch 'master' of https://github.com/iij/mruby-pack
88fa585 fix an issue large/negative integer may not be packed/unpacked correctly.
a0c62dd fix an issue negative integer may not be packed/unpacked correctly.
53ff8ba update README.md
aadcbb1 add mrbgem test runner
0786e37 update mrbgem.rake
a0161d6 typo fix on mrbgem.rake
f70a45a update mrbgem.rake
558f6fc update mrbgem.rake
e734ab3 add mrb_mruby_pack_gem_final
209ad31 add mrbgem.rake
fb79282 add README.md
e205905 mruby-pack

git-subtree-dir: mruby
git-subtree-split: 6f1e1777cbb06c26ed68022699a8c7ef20266f55

pyama86 added a commit that referenced this pull request May 16, 2018

An incorrect value may be entered in handler's return value
```
Thread 3.1 "nginx" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7fe9700 (LWP 10443)]
0x000000000052b53d in mrb_class (mrb=0xcc55c0, v=...) at
/usr/local/src/ngx_mruby/mruby/include/mruby/class.h:52
52          return mrb_obj_ptr(v)->c;
(gdb)
(gdb) p v
$1 = {value = {f = 0, p = 0x0, i = 0, sym = 0}, tt = 40}
(gdb) bt
/usr/local/src/ngx_mruby/mruby/include/mruby/class.h:52
self=..., mid=42, argc=0, argv=0x7fffffffdea0, blk=...) at
/usr/local/src/ngx_mruby/mruby/src/vm.c:426
self=..., mid=42, argc=0, argv=0x7fffffffdea0, blk=...) at
/usr/local/src/ngx_mruby/mruby/src/vm.c:398
mid=42, argc=0, argv=0x7fffffffdea0) at
/usr/local/src/ngx_mruby/mruby/src/vm.c:503
name=0x83534f "to_s", argc=0) at
/usr/local/src/ngx_mruby/mruby/src/vm.c:383
self=..., k=k@entry=0xed890b "backend", len=len@entry=7, o=...,
r=r@entry=0x1bf68b0)
    at /usr/local/src/ngx_mruby/src/http/ngx_http_mruby_var.c:63
    #6  0x0000000000517a2e in ngx_mrb_timer_handler (ev=<optimized out>)
    at /usr/local/src/ngx_mruby/src/http/ngx_http_mruby_async.c:136
    #7  0x0000000000482709 in ngx_event_expire_timers () at
    src/event/ngx_event_timer.c:94
    #8  0x0000000000482320 in ngx_process_events_and_timers
    (cycle=cycle@entry=0xcb4b10) at src/event/ngx_event.c:256
    #9  0x000000000048a48c in ngx_worker_process_cycle
    (cycle=cycle@entry=0xcb4b10, data=data@entry=0x0) at
    src/os/unix/ngx_process_cycle.c:750
    #10 0x0000000000488965 in ngx_spawn_process
    (cycle=cycle@entry=0xcb4b10, proc=proc@entry=0x48a3f9
    <ngx_worker_process_cycle>, data=data@entry=0x0,
        name=name@entry=0x82379b "worker process",
        respawn=respawn@entry=-3) at src/os/unix/ngx_process.c:199
        #11 0x0000000000489bbd in ngx_start_worker_processes
        (cycle=cycle@entry=0xcb4b10, n=48, type=type@entry=-3) at
        src/os/unix/ngx_process_cycle.c:359
        #12 0x000000000048ade2 in ngx_master_process_cycle
        (cycle=cycle@entry=0xcb4b10) at
        src/os/unix/ngx_process_cycle.c:131
        #13 0x000000000046286f in main (argc=<optimized out>,
        argv=<optimized out>) at src/core/nginx.c:382
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment