Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
606f1ac
support windows.
mattn Jan 11, 2013
a4177a6
Update gem's rakefile
mattn Jan 24, 2013
f8c2f47
Add finalizer
mattn Jan 24, 2013
d2276aa
Merge branch 'add_finalizer' into fix_rakefile
mattn Jan 24, 2013
2a99eba
Merge branch 'fix_rakefile' into windows
mattn Jan 24, 2013
0f29eb8
Fix broken bracket.
mattn Jan 24, 2013
39dbe60
Merge branch 'master' into windows
mattn Jan 24, 2013
ca915a4
rename.
mattn Jan 30, 2013
32bfe11
Fix build on VC
mattn Mar 27, 2013
6485681
init push
MrBlaTi Apr 26, 2017
d4b3315
split process into 2 Files
MrBlaTi Apr 26, 2017
17eabd0
Setup appveyor
MrBlaTi Apr 26, 2017
118800a
Cleanup header includes and fix build for darwin
katzer Apr 26, 2017
4e1da16
Compile for x64 and x86
katzer Apr 26, 2017
3af7243
merge from mattns mruby-process branch
MrBlaTi Apr 27, 2017
40bd940
Only build with vs
katzer Apr 27, 2017
4a56579
fix
MrBlaTi Apr 27, 2017
8cefb51
Merge branch 'mattn_windows_merge' into windows
MrBlaTi Apr 27, 2017
2c424ef
Cleanup WIP
katzer Apr 28, 2017
174223a
Fix windows setup
katzer Apr 28, 2017
9405aba
Allow visualcpp to failure
katzer Apr 28, 2017
5b02daa
Rename process_win32.c -> win32.c
katzer Apr 28, 2017
96e4016
Tests
katzer Apr 28, 2017
7f424b2
More tests
katzer Apr 29, 2017
85e137e
Compile with win32.c only if win32 is the build target
katzer Apr 30, 2017
9829ffe
Add cleanall task
katzer Apr 30, 2017
eee1bc7
Re-added fork method
katzer Apr 30, 2017
2f0b2b4
Fix test on Windows
katzer Apr 30, 2017
2d7f4bb
Add $PID and $PROCESS_ID
katzer May 1, 2017
619fdca
Set $$ when forking
katzer May 1, 2017
47a4264
Declare some methods as static
katzer May 1, 2017
68d4d50
Add $CHILD_STATUS
katzer May 1, 2017
f5a9cdd
Code formating
katzer May 1, 2017
6c2e180
mrb_sig_signame requires one argument
katzer May 1, 2017
6243c78
mrb_f_kill requires at least two arguments
katzer May 1, 2017
735220e
mrb_f_waitpid requires one required and one optional argument
katzer May 1, 2017
980b146
mrb_f_fork takes a block
katzer May 1, 2017
de22d27
Process.exec WIP
katzer May 2, 2017
867a7d2
Added Kernel.exec
katzer May 2, 2017
e0df99c
Fix compilation issues
katzer May 2, 2017
64b21ec
Improve test suite
katzer May 2, 2017
e50487c
Fix warnings
katzer May 2, 2017
ce059bc
Exclude visualcpp jobs
katzer May 2, 2017
e051a2b
Enhance exec and make it to work on Windows
katzer May 2, 2017
4e14b3c
Fix warning
katzer May 2, 2017
a71da95
Exit, fork and exec are accessible from Process and Kernel
katzer May 2, 2017
31397c6
Process#abort
katzer May 2, 2017
683d313
Moved process.h from src to include folder
katzer May 3, 2017
e271756
Renamed PROCESS_H -> MRB_PROCESS_H
katzer May 3, 2017
cc9bacf
Define HAVE_MRB_PROCESS_H
katzer May 3, 2017
47f9664
Process::Status class
katzer May 3, 2017
b59d6be
Codebeat button
katzer May 3, 2017
a1b54df
Remove usage of "extern" keyword
katzer May 3, 2017
7aac80a
Process.h is cross compatible
katzer May 3, 2017
b6b81a2
Cleanup includes
katzer May 3, 2017
3d00641
spawn* WIP
katzer May 4, 2017
dd0759a
wip
MrBlaTi May 4, 2017
d9270c8
merge
MrBlaTi May 4, 2017
a1f516b
Implemented $0 and Process#argv0
katzer May 4, 2017
d5abf8f
Fix potential NPE error
katzer May 4, 2017
95f395e
Alias Process#wait and Process#wait2
katzer May 4, 2017
155d8c4
Reimplemented Process::wait2 in C and fixed default values for Proces…
katzer May 4, 2017
2a26698
Fix failing specs with gcc
katzer May 4, 2017
06522aa
Add mruby-env as a test dependency
katzer May 4, 2017
44a5ada
Simply ABC metric
katzer May 4, 2017
9538931
Fix test
katzer May 4, 2017
a010700
Check if argv0 is set
katzer May 4, 2017
3a17211
Improved waitpid for win32
katzer May 5, 2017
b4c7e1f
Added Process.waitall
katzer May 5, 2017
2965e17
__cplusplus macro
katzer May 5, 2017
cb2cb68
Fix warning
katzer May 5, 2017
f92a3c6
Process shouls not respond to fork on Win32
katzer May 5, 2017
cc052bd
wip
MrBlaTi May 5, 2017
1bf547c
wip
MrBlaTi May 5, 2017
2b8457b
initial commit to spawn methods
MrBlaTi May 5, 2017
2a02b04
Process shouls not respond to fork on Win32
katzer May 5, 2017
5ccc557
Use user shell if possible for exec
katzer May 5, 2017
b9aa6e3
Simplify & unify ci configs
katzer May 5, 2017
7e29f3c
wip
MrBlaTi May 9, 2017
26b7e7f
wip
MrBlaTi May 9, 2017
84b4567
wip
MrBlaTi May 11, 2017
4c468a6
Use the shell in mrb_execarg_fill only if needed to avoid security is…
katzer May 11, 2017
5e03041
Cleanup code
katzer May 11, 2017
1cd9153
Supress warning about unused function mrb_f_kill under win32
katzer May 11, 2017
22f1c1a
Speedup tasks && fix test failures in mruby-tiny-io
katzer May 12, 2017
7d8ff26
rubocop:disable LineLength for single line
katzer May 12, 2017
89191d3
wip
MrBlaTi May 12, 2017
b434890
wip
MrBlaTi May 12, 2017
3fc675c
Merge branch 'windows' into spawn
MrBlaTi May 12, 2017
80e005d
wip
MrBlaTi May 12, 2017
d0f01b5
wip
MrBlaTi May 12, 2017
e96311c
Set C:\GnuWin\bin\ as the path prefix for the moment
katzer May 13, 2017
6c13d38
Merge branch 'windows' into spawn
katzer May 13, 2017
920e1d9
Fix issues with spawnv for Windows
katzer May 13, 2017
cf7a40d
Use always P_NOWAIT for spawnv
katzer May 14, 2017
7bd3e6c
spawnv & spawnve for posix
katzer May 14, 2017
171cff8
TODO: fix test & implement envp support for spawn
katzer May 14, 2017
4d12986
Fix tests
katzer May 14, 2017
c1d8870
Hate you travis
katzer May 14, 2017
21c5fd3
Ignore TODO file
katzer May 14, 2017
4abcbad
implemented spawnve for windows
MrBlaTi May 18, 2017
8849a53
wip
MrBlaTi May 18, 2017
13dd0d9
updated readme
MrBlaTi May 18, 2017
fe522df
centered completion marks
MrBlaTi May 18, 2017
b6a9620
Update README.md
MrBlaTi May 18, 2017
876c816
added Signal and Status to readme
MrBlaTi May 18, 2017
07c74f2
Update README.md
katzer May 19, 2017
5778463
removed envc, updated tests
MrBlaTi May 19, 2017
2cff701
change fork to spawn in unix tests
MrBlaTi May 19, 2017
0aea47a
Fix doc
katzer May 19, 2017
94ab5f2
No need to parse args again
katzer May 24, 2017
befa9ac
Extended mrb_execarg_new to accept an optional hash for options like …
katzer May 24, 2017
ae7abe4
Implemented Kernel#system
katzer May 24, 2017
b638a50
Fix waitpid for win32
katzer May 24, 2017
5686746
Fix line indentation
katzer May 24, 2017
d1aeaf8
Enhance tests
katzer May 24, 2017
55d93e3
Include missing errno.h
katzer May 24, 2017
6253bc2
Replace echo to avoid output to stdout
katzer May 25, 2017
9ff32ac
Fix compile warnings for win32
katzer May 25, 2017
fb88d54
Fix compile warnings for posix
katzer May 25, 2017
8893ff2
added fd support for posix spawn
MrBlaTi May 26, 2017
56e27dc
added working fdes posix spawn
MrBlaTi May 30, 2017
925eabf
windows spawn pipe
MrBlaTi May 30, 2017
cdde751
fixed travis
MrBlaTi May 30, 2017
1919143
Made some test dependencies obsolete
katzer May 31, 2017
d11e3e4
Removed mruby-time test-dependency and some test suite enhancements
katzer May 31, 2017
c691b86
Fix ci build
katzer May 31, 2017
c7f8cd0
Move process.h to include/mruby/ext/process.h
katzer Jun 6, 2017
4192cd0
Define HAVE_MRB_PROCESS_H and mruby/ext/process.h as global
katzer Jun 6, 2017
8fd9693
Fix docs
katzer Jun 6, 2017
13086eb
Allow mruby-1.2.0 to fail
katzer Jun 6, 2017
4e50d8f
Fix wrong include path
katzer Jun 6, 2017
f947824
added dynamic resolution of executables
MrBlaTi Jun 8, 2017
d89aa5f
merge
MrBlaTi Jun 9, 2017
96eef6b
fixed testbug
MrBlaTi Jun 9, 2017
b810f08
changed windows executable from static to dynamic
MrBlaTi Jun 9, 2017
081e45f
completed executable resolving
MrBlaTi Jun 13, 2017
f637536
fixes 081e45f
katzer Jun 13, 2017
dbb271d
Cleanup src/dln.c
katzer Jun 13, 2017
2ff87e3
Readded long lost tests happened in 56e27dc
katzer Jun 13, 2017
04ab7e6
fixed bugs and errors
MrBlaTi Jun 14, 2017
d868ba6
removed ~some~ comments
MrBlaTi Jun 14, 2017
2622faa
made a test more precise
MrBlaTi Jun 14, 2017
8cb1847
Fix win32 and cleanup code
katzer Jun 14, 2017
393d0b1
fixed stalling test on appveyor
MrBlaTi Jun 15, 2017
4e62097
forgot some files
MrBlaTi Jun 15, 2017
042bd35
Cleanup
katzer Jun 18, 2017
78ddeef
Change test descriptions
katzer Sep 12, 2017
5b7b30b
Upgrade ci scripts to use mruby-1.3.0
katzer Sep 12, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# MIT License
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

version: "{build}"

image:
- Visual Studio 2015

environment:
global:
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
CC: gcc
matrix:
- MRUBY_VERSION: 1.3.0
COMPILER: C:\MinGW # MinGW 32-bit 5.3.0
- MRUBY_VERSION: head
COMPILER: C:\MinGW # MinGW 32-bit 5.3.0
CFLAGS: -m32
- MRUBY_VERSION: head
COMPILER: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0 # MinGW-w64 5.3.0
- MRUBY_VERSION: head
COMPILER: C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1 # MinGW-w64 6.3.0
- MRUBY_VERSION: 1.3.0
COMPILER: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC # Visual Studio 2015
CC: visualcpp

matrix:
allow_failures:
- CC: visualcpp
exclude:
- CC: visualcpp
- CFLAGS: -m32

init:
- CALL "%VCVARSALL%" amd64
- SET PATH=%COMPILER%\bin;%PATH%
- SET PATH=C:\Ruby23-x64\bin;%PATH%
- SET PATH=C:\cygwin\bin;%PATH%
- gcc --version

build_script:
- rake compile

test_script:
- rake test
62 changes: 61 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,61 @@
/tmp
*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/mruby/
/pkg/
/spec/reports/
/spec/examples.txt
/test/tmp/
/test/version_tmp/
/tmp/
/src/origorig
/.idea/
/cmake-build-debug/


# Used by dotenv library to load environment variables.
# .env

## Specific to RubyMotion:
.dat*
.repl_history
build/
*.bridgesupport
build-iPhoneOS/
build-iPhoneSimulator/

## Specific to RubyMotion (use of CocoaPods):
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# vendor/Pods/

## Documentation cache and generated files:
/.yardoc/
/_yardoc/
/doc/
/rdoc/

## Environment normalization:
/.bundle/
/vendor/bundle
/lib/bundler/man/

# for a library or gem, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# Gemfile.lock
# .ruby-version
# .ruby-gemset

# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
.rvmrc

dummy
temp
TODO
*.gch
todo
25 changes: 25 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# MIT License
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

Style/SpecialGlobalVars:
Enabled: false

Style/NumericPredicate:
EnforcedStyle: comparison
33 changes: 32 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,33 @@
# MIT License
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

language: c

compiler:
- gcc
- clang

env:
- MRUBY_VERSION=1.3.0
- MRUBY_VERSION=head

script:
- "ruby run_test.rb all test"
- rake compile
- rake test
186 changes: 173 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,177 @@
mruby-process
=========
[![Build Status](https://travis-ci.org/iij/mruby-process.svg?branch=master)](https://travis-ci.org/iij/mruby-process)
# mruby-process <br> [![Build Status](https://travis-ci.org/appPlant/mruby-process.svg?branch=windows)](https://travis-ci.org/appPlant/mruby-process) [![Build status](https://ci.appveyor.com/api/projects/status/1uu04u7wtbup1oqk/branch/windows?svg=true)](https://ci.appveyor.com/project/katzer/mruby-process/branch/windows) [![codebeat badge](https://codebeat.co/badges/02e9d761-e8b6-4939-9ef2-b88fd0c93a84)](https://codebeat.co/projects/github-com-appplant-mruby-process-windows)

Implementation of the Ruby 2.4.1 Core Library _Process_ for [mruby][mruby].

All listed methods have been tested with Ubuntu, MacOS and Windows. Cross compilation works as well.

```ruby
system { VAR: 'var' }, 'echo $VAR', out: pipe
```

Include [mruby/ext/process.h][process_h] to use the native methods within your own project:

```c
// To use kill, waitpid, fork, spawn, ... on Unix and Win32

#ifdef HAVE_MRB_PROCESS_H
# include "mruby/ext/process.h"
#endif

static pid_t
spawn_process(const char *path, char *const argv[], char *const envp[])
{
return spawnve(path, argv, envp);
}
```

## Installation

Add the line below to your `build_config.rb`:

## install by mrbgems
- add conf.gem line to `build_config.rb`
```ruby
MRuby::Build.new do |conf|
# ... (snip) ...
conf.gem 'mruby-process'
end
```

# ... (snip) ...
Or add this line to your aplication's `mrbgem.rake`:

conf.gem :git => 'https://github.com/iij/mruby-process.git'
```ruby
MRuby::Gem::Specification.new('your-mrbgem') do |spec|
# ... (snip) ...
spec.add_dependency 'mruby-process'
end
```

## Features

- Process - fork kill pid ppid waitpid waitpid2
- Process::Status - all methods but `&`, ``>>``
- You can use ``Process::Status.new(pid, status)`` to set ``$?`` in
your script or other mrbgems.
- Kernel - $$ exit exit! fork sleep system
## Implemented methods

### Process

- https://ruby-doc.org/core-2.4.1/Process.html

| method | mruby-process | Comment |
| ------------------------- | :-----------: | :------ |
| $0 | o |
| $PROGRAM_NAME | o |
| $$ | o |
| $PID | o |
| $PROCESS_ID | o |
| ::WNOHANG | o |
| ::WUNTRACED | o |
| #abort | o |
| #argv0 | o |
| #clock_getres | |
| #clock_gettime | |
| #daemon | |
| #detach | |
| #egid | | Implemented in [mruby-process-ext][mruby-process-ext] |
| #egid= | | Implemented in [mruby-process-sys][mruby-process-sys] |
| #euid | | Implemented in [mruby-process-ext][mruby-process-ext] |
| #euid= | | Implemented in [mruby-process-sys][mruby-process-sys] |
| #exec | o |
| #exit | o |
| #exit! | o |
| #fork | o | If fork is not usable, Process.respond_to?(:fork) returns false. |
| #getpgid | |
| #getpgrp | |
| #getpriority | |
| #getrlimit | |
| #getsid | |
| #gid | | Implemented in [mruby-process-ext][mruby-process-ext] |
| #gid= | | Implemented in [mruby-process-sys][mruby-process-sys] |
| #groups | | Implemented in [mruby-process-sys][mruby-process-sys] |
| #groups= | | Implemented in [mruby-process-sys][mruby-process-sys] |
| #initgroups | |
| #kill | o |
| #maxgroups | |
| #maxgroups= | |
| #pid | o |
| #ppid | o |
| #setpgid | |
| #setpgrp | |
| #setpriority | |
| #setproctitle | |
| #setrlimit | |
| #setsid | |
| #spawn | o |
| #times | |
| #uid | | Implemented in [mruby-process-ext][mruby-process-ext] |
| #uid= | | Implemented in [mruby-process-ext][mruby-process-ext] |
| #wait | o |
| #wait2 | o |
| #waitall | o |
| #waitpid | o |
| #waitpid2 | o |


### Process::Status

- https://ruby-doc.org/core-2.4.1/Process/Status.html

| method | mruby-process |
| ------------------------- | :-----------: |
| $? | o |
| $CHILD_STATUS | o |
| #& | |
| #== | o |
| #>> | o |
| #coredump? | o |
| #exited? | o |
| #exitstatus | o |
| #inspect | o |
| #pid | o |
| #signaled? | o |
| #stopped? | o |
| #stopsig | o |
| #success? | o |
| #termsig | o |
| #to_i | o |
| #to_s | o |


### Kernel

- https://ruby-doc.org/core-2.4.1/Kernel.html

| method | mruby-process | Comment |
| ------------------------- | :-----------: | :----- |
| #` | | Implemented in [mruby-io][mruby-io]. |
| #abort | o |
| #exec | o |
| #exit | o |
| #exit! | o |
| #fork | o | If fork is not usable, Process.respond_to?(:fork) returns false. |
| #sleep | | Implemented in [mruby-sleep][mruby-sleep]. |
| #spawn | o |
| #system | o |


### Signal

- https://ruby-doc.org/core-2.4.1/Signal.html

| method | mruby-process | Comment |
| ------------------------- | :-----------: | :----- |
| ::signame | o |
| ::list | o |
| ::trap | | Implemented in [mruby-signal][mruby-signal]. |


## Development

Clone the repo:

$ git clone https://github.com/appplant/mruby-process.git && cd mruby-process/

Compile the source:

$ rake compile

Run the tests:

$ rake test


## Caveats
Expand All @@ -32,6 +183,7 @@ end
## License

Copyright (c) 2012 Internet Initiative Japan Inc.
Copyright (c) 2017 appPlant GmbH.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
Expand All @@ -51,3 +203,11 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


[mruby]: https://github.com/mruby/mruby
[process_h]: https://github.com/appPlant/mruby-process/blob/windows/include/mruby/ext/process.h
[mruby-process-ext]: https://github.com/ksss/mruby-process-ext
[mruby-process-sys]: https://github.com/haconiwa/mruby-process-sys
[mruby-sleep]: https://github.com/matsumotory/mruby-sleep
[mruby-io]: https://github.com/iij/mruby-io
[mruby-signal]: https://github.com/ksss/mruby-signal
Loading