d-unsed / ruru Goto Github PK
View Code? Open in Web Editor NEWNative Ruby extensions written in Rust
License: MIT License
Native Ruby extensions written in Rust
License: MIT License
I've been trying to guess at how to use it but I haven't been able to get anything working. I was able to implement a form of eval_protect
but that was entirely different from this. Could you show me an example? Thanks!
handle_exceptions! {
begin {
// ...
} rescue TypeError => e {
// ...
} rescue ArgumentError => e {
// ...
} rescue => e { // StandardError
// ...
} ensure {
// ...
}
}
Also there should be a way to call it without ensure
(as well as ensure
without rescue
blocks). Possibly, separate macros are required.
I've written code that will pass all tests, but during benchmarking it will intermittently segfault. The code that rarely will segfault has this logic. It's Rust code called from Ruby
Value
objectAnyObject
from Value
Pathname
class with the Vec<AnyObject>
single parameter from aboveArray
and return it to RubyIt's important to note that there are no problems with the kinds of characters retrieved from the directory (even though characters such as a null byte is valid text for a file name). The segfault typically shows up in the 8000+ iterations benchmark.
I don't read segfaults well but I understand the concept of narrowing down potential problem areas by benchmarking the heck out of specific sections of ruru.
[BUG] Segmentation fault at 0x00000000000018
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0037 p:---- s:0157 e:000156 CFUNC :initialize
c:0036 p:---- s:0155 e:000154 CFUNC :children_compat
c:0035 p:0049 s:0150 e:000149 BLOCK /home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22
c:0034 p:0006 s:0148 e:000147 BLOCK /home/danielpclark/dev/faster_path/test/benchmark_helper.rb:16 [FINISH]
c:0033 p:---- s:0146 e:000145 CFUNC :times
c:0032 p:0022 s:0143 e:000142 BLOCK /home/danielpclark/dev/faster_path/test/benchmark_helper.rb:15 [FINISH]
c:0031 p:---- s:0140 e:000139 CFUNC :instance_exec
c:0030 p:0040 s:0136 e:000135 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:93 [FINISH]
c:0029 p:---- s:0131 e:000130 CFUNC :each
c:0028 p:0046 s:0128 e:000127 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:90
c:0027 p:0026 s:0121 E:002428 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:134
c:0026 p:0009 s:0115 E:001238 METHOD /home/danielpclark/dev/faster_path/test/benchmark_helper.rb:13
c:0025 p:0011 s:0111 E:001800 METHOD /home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:20
c:0024 p:0029 s:0108 e:000107 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:107
c:0023 p:0006 s:0106 e:000105 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:204
c:0022 p:0009 s:0102 e:000101 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:104
c:0021 p:0020 s:0100 e:000099 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:255
c:0020 p:0009 s:0096 e:000095 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:103
c:0019 p:0037 s:0094 e:000093 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350
c:0018 p:0052 s:0087 E:000928 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:275
c:0017 p:0009 s:0081 E:000540 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:102
c:0016 p:0090 s:0078 e:000077 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters.rb:57
c:0015 p:0014 s:0072 e:000071 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:839
c:0014 p:0032 s:0066 e:000064 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:324
c:0013 p:0014 s:0059 e:000058 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:311 [FINISH]
c:0012 p:---- s:0056 e:000055 CFUNC :each
c:0011 p:0010 s:0053 e:000052 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:310
c:0010 p:0037 s:0051 e:000050 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350
c:0009 p:0035 s:0044 E:000818 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:337
c:0008 p:0131 s:0038 E:000dc8 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:309
c:0007 p:0028 s:0030 e:000029 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:22
c:0006 p:0013 s:0025 e:000024 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159 [FINISH]
c:0005 p:---- s:0022 e:000021 CFUNC :map
c:0004 p:0046 s:0019 e:000018 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159
c:0003 p:0158 s:0011 e:000010 METHOD /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:136
c:0002 p:0071 s:0005 E:001a38 BLOCK /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:63 [FINISH]
c:0001 p:0000 s:0002 E:002700 (none) [FINISH]
-- Ruby level backtrace information ----------------------------------------
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:63:in `block in autorun'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:136:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159:in `__run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159:in `map'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:159:in `block in __run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:22:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:309:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:337:in `with_info_handler'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:310:in `block in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:310:in `each'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:311:in `block (2 levels) in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:324:in `run_one_method'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:839:in `run_one_method'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters.rb:57:in `run_with_hooks'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:102:in `run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:275:in `with_info_handler'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb:350:in `on_signal'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:103:in `block in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:255:in `time_it'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:104:in `block (2 levels) in run'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:204:in `capture_exceptions'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb:107:in `block (3 levels) in run'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:20:in `bench_rust_children_compat'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:13:in `benchmark'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:134:in `assert_performance_constant'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:90:in `assert_performance'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:90:in `each'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:93:in `block in assert_performance'
/home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb:93:in `instance_exec'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:15:in `block in benchmark'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:15:in `times'
/home/danielpclark/dev/faster_path/test/benchmark_helper.rb:16:in `block (2 levels) in benchmark'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22:in `block in bench_rust_children_compat'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22:in `children_compat'
/home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb:22:in `initialize'
-- Machine register context ------------------------------------------------
RIP: 0x00007f2222ebe370 RBP: 0x0000560be214f5d0 RSP: 0x00007ffca6050cc0
RAX: 0x0000560be21bf760 RBX: 0x0000560be2ffc078 RCX: 0x0000000000000095
RDX: 0x00007ffca6050d28 RDI: 0x0000000000000000 RSI: 0x000000000000009a
R8: 0x0000000000000001 R9: 0x0000000000000001 R10: 0x0000000000000040
R11: 0x0000560be214f5d0 R12: 0x0000000000000000 R13: 0x00000000000045e1
R14: 0x000000000000009a R15: 0x0000000000000001 EFL: 0x0000000000010246
-- C level backtrace information -------------------------------------------
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_vm_bugreport+0x4e8) [0x7f2222ed8ac8] vm_dump.c:692
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_bug_context+0xd4) [0x7f2222d6a284] error.c:435
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(sigsegv+0x3e) [0x7f2222e46d8e] signal.c:890
/lib/x86_64-linux-gnu/libc.so.6 [0x7f2222959860]
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(method_entry_get+0x100) [0x7f2222ebe370] vm_method.c:787
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_respond_to+0x32) [0x7f2222ec8b42] vm_method.c:1919
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_check_funcall_default+0x48) [0x7f2222ec8db8] vm_eval.c:406
/usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so(path_initialize+0x41) [0x7f222122d961] pathname.c:35
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call0_body.constprop.120+0x263) [0x7f2222ed2db3] vm_eval.c:131
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_call0+0xc4) [0x7f2222ed33a4] vm_eval.c:61
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_class_new_instance+0x21) [0x7f2222dd3121] object.c:1856
/home/danielpclark/dev/faster_path/target/release/libfaster_path.so(_ZN4ruru5class5class5Class12new_instance17hab4791e86976965dE+0x42) [0x7f221fcceb22]
/home/danielpclark/dev/faster_path/target/release/libfaster_path.so(pub_children_compat+0x806) [0x7f221fccaaf6]
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_opt_send+0x166) [0x7f2222ed16b6] vm_insnhelper.c:1850
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1209) [0x7f2222eca149] insns.def:994
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield_1+0x54) [0x7f2222ed03d4] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(int_dotimes+0x40) [0x7f2222dc5550] numeric.c:3947
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(yield_under+0x14c) [0x7f2222ed083c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield+0x5c) [0x7f2222ed018c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_ary_each+0x3c) [0x7f2222d1cdec] array.c:1815
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield+0x5c) [0x7f2222ed018c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_ary_each+0x3c) [0x7f2222d1cdec] array.c:1815
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_yield+0x5c) [0x7f2222ed018c] vm.c:988
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_ary_collect+0x5c) [0x7f2222d2208c] array.c:2733
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_cfunc+0xed) [0x7f2222ec181d] vm_insnhelper.c:1642
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method_each_type+0x5e) [0x7f2222ed0d1e] vm_insnhelper.c:2026
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_call_method+0xe3) [0x7f2222ed1273] vm_insnhelper.c:2176
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec_core+0x1138) [0x7f2222eca078] insns.def:963
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_exec+0x7f) [0x7f2222ecf29f] vm.c:1650
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(invoke_block_from_c_0+0x2dd) [0x7f2222ecff1d] vm.c:921
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(vm_invoke_proc+0xc3) [0x7f2222ecfff3] vm.c:996
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_proc_call+0x42) [0x7f2222d7a652] proc.c:834
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(rb_exec_end_proc+0x179) [0x7f2222d74689] eval_jump.c:108
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(ruby_finalize_0+0x83) [0x7f2222d747d3] eval.c:122
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(ruby_cleanup+0x1f3) [0x7f2222d74b73] eval.c:181
/usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3(ruby_run_node+0x25) [0x7f2222d74fe5] eval.c:302
/usr/share/rvm/rubies/ruby-2.3.4/bin/ruby(main+0x4b) [0x560be12cb8fb] main.c:36
-- Other runtime information -----------------------------------------------
* Loaded script: /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/rake_test_loader.rb
* Loaded features:
0 enumerator.so
1 thread.rb
2 rational.so
3 complex.so
4 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
5 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
6 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/unicode_normalize.rb
7 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/rbconfig.rb
8 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/compatibility.rb
9 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/defaults.rb
10 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/deprecate.rb
11 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/errors.rb
12 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/version.rb
13 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/requirement.rb
14 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/platform.rb
15 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/basic_specification.rb
16 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/stub_specification.rb
17 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/util/list.rb
18 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
19 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/specification.rb
20 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/exceptions.rb
21 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/dependency.rb
22 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_gem.rb
23 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/monitor.rb
24 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb
25 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems.rb
26 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/path_support.rb
27 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/version.rb
28 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/core_ext/name_error.rb
29 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/levenshtein.rb
30 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/jaro_winkler.rb
31 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkable.rb
32 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/delegate.rb
33 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
34 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
35 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
36 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
37 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/null_checker.rb
38 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean/formatter.rb
39 /home/danielpclark/.rvm/gems/ruby-2.3.4@global/gems/did_you_mean-1.0.0/lib/did_you_mean.rb
40 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/version.rb
41 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/compatibility_guard.rb
42 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
43 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/pathname.rb
44 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/constants.rb
45 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/util.rb
46 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
47 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/user_interaction.rb
48 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
49 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/config_file.rb
50 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/rubygems_integration.rb
51 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/current_ruby.rb
52 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/shared_helpers.rb
53 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fileutils.rb
54 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendored_fileutils.rb
55 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/errors.rb
56 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/environment_preserver.rb
57 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/plugin/api.rb
58 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/plugin.rb
59 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/rfc2396_parser.rb
60 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/rfc3986_parser.rb
61 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/common.rb
62 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/generic.rb
63 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/ftp.rb
64 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/http.rb
65 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/https.rb
66 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/ldap.rb
67 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/ldaps.rb
68 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri/mailto.rb
69 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/uri.rb
70 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
71 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/digest.rb
72 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/git.rb
73 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/installed.rb
74 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/specific_file.rb
75 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/local.rb
76 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/lock.rb
77 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source/vendor.rb
78 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/source.rb
79 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/gem_helpers.rb
80 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/match_platform.rb
81 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/rubygems_ext.rb
82 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/build_metadata.rb
83 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler.rb
84 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/settings.rb
85 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/ext/builder.rb
86 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/yaml_serializer.rb
87 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/feature_flag.rb
88 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source.rb
89 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
90 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/path.rb
91 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/git.rb
92 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/rubygems.rb
93 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/lockfile_parser.rb
94 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/set.rb
95 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/definition.rb
96 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/dependency.rb
97 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ruby_dsl.rb
98 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/dsl.rb
99 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source_list.rb
100 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/metadata.rb
101 /home/danielpclark/dev/faster_path/lib/faster_path/version.rb
102 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/index.rb
103 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/source/gemspec.rb
104 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/lazy_specification.rb
105 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/tsort.rb
106 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/forwardable.rb
107 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/spec_set.rb
108 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ui.rb
109 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ui/silent.rb
110 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ui/rg_proxy.rb
111 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/text.rb
112 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/util/licenses.rb
113 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/remote_specification.rb
114 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb
115 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
116 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
117 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb
118 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb
119 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
120 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
121 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
122 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
123 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb
124 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb
125 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb
126 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
127 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb
128 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/state.rb
129 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb
130 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
131 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
132 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb
133 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb
134 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendor/molinillo/lib/molinillo.rb
135 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/vendored_molinillo.rb
136 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/resolver/spec_group.rb
137 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/resolver.rb
138 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/gem_version_promoter.rb
139 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/runtime.rb
140 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/dep_proxy.rb
141 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/stub_specification.rb
142 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/endpoint_specification.rb
143 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/ruby_version.rb
144 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/bundler-1.16.0.pre.2/lib/bundler/setup.rb
145 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/version.rb
146 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/singleton.rb
147 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/optparse.rb
148 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/ostruct.rb
149 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/ext/core.rb
150 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/ext/string.rb
151 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/win32.rb
152 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/linked_list.rb
153 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/cpu_counter.rb
154 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/scope.rb
155 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task_argument_error.rb
156 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/rule_recursion_overflow_error.rb
157 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task_manager.rb
158 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/cloneable.rb
159 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_utils.rb
160 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_utils_ext.rb
161 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_list.rb
162 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/promise.rb
163 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/thread_pool.rb
164 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/private_reader.rb
165 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/thread_history_display.rb
166 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/trace_output.rb
167 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/application.rb
168 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/rake_module.rb
169 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/pseudo_status.rb
170 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task_arguments.rb
171 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/invocation_chain.rb
172 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/invocation_exception_mixin.rb
173 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/task.rb
174 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/early_time.rb
175 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_task.rb
176 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/file_creation_task.rb
177 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/multi_task.rb
178 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/dsl_definition.rb
179 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/default_loader.rb
180 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/late_time.rb
181 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/name_space.rb
182 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake/backtrace.rb
183 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rake-12.0.0/lib/rake.rb
184 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
185 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/platform.rb
186 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/types.rb
187 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/library.rb
188 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/errno.rb
189 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/pointer.rb
190 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/memorypointer.rb
191 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/struct_layout_builder.rb
192 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/struct.rb
193 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/union.rb
194 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/managedstruct.rb
195 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/callback.rb
196 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/io.rb
197 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/autopointer.rb
198 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/variadic.rb
199 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/enum.rb
200 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi/ffi.rb
201 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi.rb
202 /home/danielpclark/dev/faster_path/lib/faster_path/asset_resolution.rb
203 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
204 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fiddle/function.rb
205 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fiddle/closure.rb
206 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/fiddle.rb
207 /home/danielpclark/dev/faster_path/lib/faster_path.rb
208 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/mutex_m.rb
209 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/parallel.rb
210 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/tmpdir.rb
211 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/tempfile.rb
212 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/assertions.rb
213 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/unit.rb
214 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/test.rb
215 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest.rb
216 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/expectations.rb
217 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/spec.rb
218 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/mock.rb
219 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/autorun.rb
220 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/relative_position.rb
221 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/extensible_backtrace_filter.rb
222 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/version.rb
223 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters.rb
224 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/base_reporter.rb
225 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ansi-1.5.0/lib/ansi/chart.rb
226 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ansi-1.5.0/lib/ansi/constants.rb
227 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ansi-1.5.0/lib/ansi/code.rb
228 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/ansi.rb
229 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/reporters/spec_reporter.rb
230 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/color_pound_spec_reporter-0.0.9/lib/color_pound_spec_reporter/version.rb
231 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/color_pound_spec_reporter-0.0.9/lib/color_pound_spec_reporter.rb
232 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-reporters-1.1.18/lib/minitest/minitest_reporter_plugin.rb
233 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/pride_plugin.rb
234 /home/danielpclark/dev/faster_path/test/test_helper.rb
235 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/minitest-5.10.3/lib/minitest/benchmark.rb
236 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/stop_watch-1.0.0/lib/stop_watch/version.rb
237 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/stop_watch-1.0.0/lib/stop_watch.rb
238 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/version.rb
239 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/themes.rb
240 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/English.rb
241 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/observer.rb
242 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
243 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/rmagick_internal.rb
244 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/rmagick.rb
245 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
246 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/deprecated.rb
247 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/base.rb
248 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/area.rb
249 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bar_conversion.rb
250 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bar.rb
251 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bezier.rb
252 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/bullet.rb
253 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/dot.rb
254 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/line.rb
255 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/net.rb
256 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/pie.rb
257 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/scatter.rb
258 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/spider.rb
259 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/stacked_mixin.rb
260 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/stacked_area.rb
261 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/stacked_bar.rb
262 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/side_bar.rb
263 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/side_stacked_bar.rb
264 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/accumulator_bar.rb
265 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/scene.rb
266 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/legend.rb
267 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/bar.rb
268 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/pie.rb
269 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff/mini/side_bar.rb
270 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/gruff-0.7.0/lib/gruff.rb
271 /home/danielpclark/dev/faster_path/test/benchmark_helper.rb
272 /home/danielpclark/dev/faster_path/test/benches/absolute_benchmark.rb
273 /home/danielpclark/dev/faster_path/test/benches/add_trailing_separator_benchmark.rb
274 /home/danielpclark/dev/faster_path/test/benches/basename_benchmark.rb
275 /home/danielpclark/dev/faster_path/test/benches/children_benchmark.rb
276 /home/danielpclark/dev/faster_path/test/benches/children_compat_benchmark.rb
277 /home/danielpclark/dev/faster_path/test/benches/chop_basename_benchmark.rb
278 /home/danielpclark/dev/faster_path/test/benches/directory_benchmark.rb
279 /home/danielpclark/dev/faster_path/test/benches/dirname_benchmark.rb
280 /home/danielpclark/dev/faster_path/test/benches/entries_benchmark.rb
281 /home/danielpclark/dev/faster_path/test/benches/entries_compat_benchmark.rb
282 /home/danielpclark/dev/faster_path/test/benches/extname_benchmark.rb
283 /home/danielpclark/dev/faster_path/test/benches/has_trailing_separator_benchmark.rb
284 /home/danielpclark/dev/faster_path/test/benches/plus_benchmark.rb
285 /home/danielpclark/dev/faster_path/test/benches/relative_benchmark.rb
* Process memory map:
560be12cb000-560be12cc000 r-xp 00000000 08:01 2508784 /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
560be14cb000-560be14cc000 r--p 00000000 08:01 2508784 /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
560be14cc000-560be14cd000 rw-p 00001000 08:01 2508784 /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
560be214e000-560be325a000 rw-p 00000000 00:00 0 [heap]
7f220c000000-7f220c021000 rw-p 00000000 00:00 0
7f220c021000-7f2210000000 ---p 00000000 00:00 0
7f2213fb8000-7f2213fb9000 ---p 00000000 00:00 0
7f2213fb9000-7f22140b9000 rw-p 00000000 00:00 0
7f2216344000-7f2217056000 r--s 00000000 08:01 136902 /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.24.so
7f221705c000-7f2217222000 r--s 00000000 08:01 1848942 /lib/x86_64-linux-gnu/libc-2.24.so
7f2217224000-7f2217ffa000 r--s 00000000 08:01 2508786 /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f2218000000-7f2218021000 rw-p 00000000 00:00 0
7f2218021000-7f221c000000 ---p 00000000 00:00 0
7f221c0b9000-7f221c1ba000 rw-p 00000000 00:00 0
7f221c1ba000-7f221c1bb000 ---p 00000000 00:00 0
7f221c1bb000-7f221c3bc000 rw-p 00000000 00:00 0
7f221c3bc000-7f221c3d0000 r-xp 00000000 08:01 2638813 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c3d0000-7f221c5d0000 ---p 00014000 08:01 2638813 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c5d0000-7f221c5d1000 r--p 00014000 08:01 2638813 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c5d1000-7f221c5d2000 rw-p 00015000 08:01 2638813 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/bigdecimal.so
7f221c5d4000-7f221c5d9000 r-xp 00000000 08:01 139755 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c5d9000-7f221c7d8000 ---p 00005000 08:01 139755 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c7d8000-7f221c7d9000 r--p 00004000 08:01 139755 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c7d9000-7f221c7da000 rw-p 00005000 08:01 139755 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f221c7dc000-7f221c7de000 r-xp 00000000 08:01 139744 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c7de000-7f221c9de000 ---p 00002000 08:01 139744 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c9de000-7f221c9df000 r--p 00002000 08:01 139744 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c9df000-7f221c9e0000 rw-p 00003000 08:01 139744 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f221c9e4000-7f221ca56000 r-xp 00000000 08:01 1839739 /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221ca56000-7f221cc55000 ---p 00072000 08:01 1839739 /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221cc55000-7f221cc56000 r--p 00071000 08:01 1839739 /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221cc56000-7f221cc57000 rw-p 00072000 08:01 1839739 /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7f221cc5c000-7f221cc7d000 r-xp 00000000 08:01 141278 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221cc7d000-7f221ce7c000 ---p 00021000 08:01 141278 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221ce7c000-7f221ce7d000 r--p 00020000 08:01 141278 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221ce7d000-7f221ce7e000 rw-p 00021000 08:01 141278 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7f221ce84000-7f221ceb5000 r-xp 00000000 08:01 140791 /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221ceb5000-7f221d0b4000 ---p 00031000 08:01 140791 /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221d0b4000-7f221d0b5000 r--p 00030000 08:01 140791 /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221d0b5000-7f221d0b6000 rw-p 00031000 08:01 140791 /usr/lib/x86_64-linux-gnu/libpng16.so.16.25.0
7f221d0bc000-7f221d0e3000 r-xp 00000000 08:01 1849005 /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d0e3000-7f221d2e3000 ---p 00027000 08:01 1849005 /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d2e3000-7f221d2e5000 r--p 00027000 08:01 1849005 /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d2e5000-7f221d2e6000 rw-p 00029000 08:01 1849005 /lib/x86_64-linux-gnu/libexpat.so.1.6.2
7f221d2ec000-7f221d3fe000 r-xp 00000000 08:01 1840353 /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d3fe000-7f221d5fd000 ---p 00112000 08:01 1840353 /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d5fd000-7f221d5fe000 r--p 00111000 08:01 1840353 /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d5fe000-7f221d5ff000 rw-p 00112000 08:01 1840353 /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2
7f221d5ff000-7f221d600000 rw-p 00000000 00:00 0
7f221d604000-7f221d631000 r-xp 00000000 08:01 140306 /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d631000-7f221d830000 ---p 0002d000 08:01 140306 /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d830000-7f221d831000 r--p 0002c000 08:01 140306 /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d831000-7f221d832000 rw-p 0002d000 08:01 140306 /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
7f221d834000-7f221d83c000 r-xp 00000000 08:01 140564 /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221d83c000-7f221da3c000 ---p 00008000 08:01 140564 /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221da3c000-7f221da3d000 r--p 00008000 08:01 140564 /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221da3d000-7f221da3e000 rw-p 00009000 08:01 140564 /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f221da44000-7f221da5d000 r-xp 00000000 08:01 1835252 /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221da5d000-7f221dc5c000 ---p 00019000 08:01 1835252 /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221dc5c000-7f221dc5d000 r--p 00018000 08:01 1835252 /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221dc5d000-7f221dc5e000 rw-p 00019000 08:01 1835252 /lib/x86_64-linux-gnu/libz.so.1.2.8
7f221dc64000-7f221dc73000 r-xp 00000000 08:01 1839610 /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221dc73000-7f221de72000 ---p 0000f000 08:01 1839610 /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221de72000-7f221de73000 r--p 0000e000 08:01 1839610 /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221de73000-7f221de74000 rw-p 0000f000 08:01 1839610 /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7f221de74000-7f221dfa9000 r-xp 00000000 08:01 139740 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221dfa9000-7f221e1a8000 ---p 00135000 08:01 139740 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221e1a8000-7f221e1a9000 r--p 00134000 08:01 139740 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221e1a9000-7f221e1ad000 rw-p 00135000 08:01 139740 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7f221e1b4000-7f221e1c5000 r-xp 00000000 08:01 139757 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e1c5000-7f221e3c4000 ---p 00011000 08:01 139757 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e3c4000-7f221e3c5000 r--p 00010000 08:01 139757 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e3c5000-7f221e3c6000 rw-p 00011000 08:01 139757 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7f221e3cc000-7f221e473000 r-xp 00000000 08:01 132633 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e473000-7f221e672000 ---p 000a7000 08:01 132633 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e672000-7f221e678000 r--p 000a6000 08:01 132633 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e678000-7f221e679000 rw-p 000ac000 08:01 132633 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.3
7f221e67c000-7f221e6b9000 r-xp 00000000 08:01 140159 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e6b9000-7f221e8b8000 ---p 0003d000 08:01 140159 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e8b8000-7f221e8ba000 r--p 0003c000 08:01 140159 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e8ba000-7f221e8bf000 rw-p 0003e000 08:01 140159 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
7f221e8c4000-7f221eaae000 r-xp 00000000 08:01 140143 /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221eaae000-7f221ecad000 ---p 001ea000 08:01 140143 /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221ecad000-7f221ecc1000 r--p 001e9000 08:01 140143 /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221ecc1000-7f221ecc2000 rw-p 001fd000 08:01 140143 /usr/lib/x86_64-linux-gnu/libfftw3.so.3.4.4
7f221ecc4000-7f221ecdb000 r-xp 00000000 08:01 140560 /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221ecdb000-7f221eeda000 ---p 00017000 08:01 140560 /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221eeda000-7f221eedb000 r--p 00016000 08:01 140560 /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221eedb000-7f221eedc000 rw-p 00017000 08:01 140560 /usr/lib/x86_64-linux-gnu/liblqr-1.so.0.3.2
7f221eedc000-7f221ef2e000 r-xp 00000000 08:01 140538 /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221ef2e000-7f221f12d000 ---p 00052000 08:01 140538 /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221f12d000-7f221f12e000 r--p 00051000 08:01 140538 /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221f12e000-7f221f132000 rw-p 00052000 08:01 140538 /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
7f221f132000-7f221f133000 rw-p 00000000 00:00 0
7f221f134000-7f221f375000 r-xp 00000000 08:01 134270 /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f375000-7f221f574000 ---p 00241000 08:01 134270 /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f574000-7f221f588000 r--p 00240000 08:01 134270 /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f588000-7f221f5c7000 rw-p 00254000 08:01 134270 /usr/lib/x86_64-linux-gnu/libMagickCore-6.Q16.so.2.0.0
7f221f5c7000-7f221f5e6000 rw-p 00000000 00:00 0
7f221f5ec000-7f221f657000 r-xp 00000000 00:30 3433692 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f657000-7f221f857000 ---p 0006b000 00:30 3433692 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f857000-7f221f859000 r--p 0006b000 00:30 3433692 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f859000-7f221f85b000 rw-p 0006d000 00:30 3433692 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/rmagick-2.16.0/lib/RMagick2.so
7f221f85b000-7f221f85c000 rw-p 00000000 00:00 0
7f221f85c000-7f221f872000 r-xp 00000000 08:01 1839651 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221f872000-7f221fa71000 ---p 00016000 08:01 1839651 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221fa71000-7f221fa72000 r--p 00015000 08:01 1839651 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221fa72000-7f221fa73000 rw-p 00016000 08:01 1839651 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f221fa74000-7f221fa7b000 r-xp 00000000 08:01 1848959 /lib/x86_64-linux-gnu/librt-2.24.so
7f221fa7b000-7f221fc7a000 ---p 00007000 08:01 1848959 /lib/x86_64-linux-gnu/librt-2.24.so
7f221fc7a000-7f221fc7b000 r--p 00006000 08:01 1848959 /lib/x86_64-linux-gnu/librt-2.24.so
7f221fc7b000-7f221fc7c000 rw-p 00007000 08:01 1848959 /lib/x86_64-linux-gnu/librt-2.24.so
7f221fc7c000-7f221fd76000 r-xp 00000000 00:30 5270280 /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221fd76000-7f221ff75000 ---p 000fa000 00:30 5270280 /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221ff75000-7f221ff7e000 r--p 000f9000 00:30 5270280 /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221ff7e000-7f221ff7f000 rw-p 00102000 00:30 5270280 /home/danielpclark/dev/faster_path/target/release/libfaster_path.so
7f221ff84000-7f221ff8d000 r-xp 00000000 08:01 2638791 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f221ff8d000-7f222018c000 ---p 00009000 08:01 2638791 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f222018c000-7f222018d000 r--p 00008000 08:01 2638791 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f222018d000-7f222018e000 rw-p 00009000 08:01 2638791 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/fiddle.so
7f2220194000-7f222019b000 r-xp 00000000 08:01 140141 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222019b000-7f222039a000 ---p 00007000 08:01 140141 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222039a000-7f222039b000 r--p 00006000 08:01 140141 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222039b000-7f222039c000 rw-p 00007000 08:01 140141 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7f222039c000-7f22203bf000 r-xp 00000000 00:30 1331270 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22203bf000-7f22205be000 ---p 00023000 00:30 1331270 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22205be000-7f22205bf000 r--p 00022000 00:30 1331270 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22205bf000-7f22205c0000 rw-p 00023000 00:30 1331270 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/ffi-1.9.18/lib/ffi_c.so
7f22205c4000-7f22207dd000 r-xp 00000000 08:01 1835036 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f22207dd000-7f22209dd000 ---p 00219000 08:01 1835036 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f22209dd000-7f22209f9000 r--p 00219000 08:01 1835036 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f22209f9000-7f2220a05000 rw-p 00235000 08:01 1835036 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f2220a05000-7f2220a08000 rw-p 00000000 00:00 0
7f2220a0c000-7f2220a0d000 r-xp 00000000 08:01 3425468 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220a0d000-7f2220c0c000 ---p 00001000 08:01 3425468 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220c0c000-7f2220c0d000 r--p 00000000 08:01 3425468 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220c0d000-7f2220c0e000 rw-p 00001000 08:01 3425468 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest/sha1.so
7f2220c14000-7f2220c18000 r-xp 00000000 08:01 2638812 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220c18000-7f2220e17000 ---p 00004000 08:01 2638812 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220e17000-7f2220e18000 r--p 00003000 08:01 2638812 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220e18000-7f2220e19000 rw-p 00004000 08:01 2638812 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/digest.so
7f2220e1c000-7f2220e22000 r-xp 00000000 08:01 2638799 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2220e22000-7f2221021000 ---p 00006000 08:01 2638799 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2221021000-7f2221022000 r--p 00005000 08:01 2638799 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2221022000-7f2221023000 rw-p 00006000 08:01 2638799 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/etc.so
7f2221024000-7f2221028000 r-xp 00000000 00:30 3823617 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f2221028000-7f2221228000 ---p 00004000 00:30 3823617 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f2221228000-7f2221229000 r--p 00004000 00:30 3823617 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f2221229000-7f222122a000 rw-p 00005000 00:30 3823617 /home/danielpclark/.rvm/gems/ruby-2.3.4/gems/io-console-0.4.6/lib/io/console.so
7f222122c000-7f2221233000 r-xp 00000000 08:01 2638789 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221233000-7f2221432000 ---p 00007000 08:01 2638789 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221432000-7f2221433000 r--p 00006000 08:01 2638789 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221433000-7f2221434000 rw-p 00007000 08:01 2638789 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f2221434000-7f222143c000 r-xp 00000000 08:01 2638807 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f222143c000-7f222163b000 ---p 00008000 08:01 2638807 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f222163b000-7f222163c000 r--p 00007000 08:01 2638807 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f222163c000-7f222163d000 rw-p 00008000 08:01 2638807 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/stringio.so
7f2221644000-7f2221646000 r-xp 00000000 08:01 3425420 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f2221646000-7f2221846000 ---p 00002000 08:01 3425420 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f2221846000-7f2221847000 r--p 00002000 08:01 3425420 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f2221847000-7f2221848000 rw-p 00003000 08:01 3425420 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so
7f222184c000-7f222184e000 r-xp 00000000 08:01 3425427 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f222184e000-7f2221a4d000 ---p 00002000 08:01 3425427 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f2221a4d000-7f2221a4e000 r--p 00001000 08:01 3425427 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f2221a4e000-7f2221a4f000 rw-p 00002000 08:01 3425427 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so
7f2221a54000-7f2221d2d000 r--p 00000000 08:01 163173 /usr/lib/locale/locale-archive
7f2221d34000-7f2221e3c000 r-xp 00000000 08:01 1848946 /lib/x86_64-linux-gnu/libm-2.24.so
7f2221e3c000-7f222203b000 ---p 00108000 08:01 1848946 /lib/x86_64-linux-gnu/libm-2.24.so
7f222203b000-7f222203c000 r--p 00107000 08:01 1848946 /lib/x86_64-linux-gnu/libm-2.24.so
7f222203c000-7f222203d000 rw-p 00108000 08:01 1848946 /lib/x86_64-linux-gnu/libm-2.24.so
7f2222044000-7f222204d000 r-xp 00000000 08:01 1848944 /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222204d000-7f222224c000 ---p 00009000 08:01 1848944 /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222224c000-7f222224d000 r--p 00008000 08:01 1848944 /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222224d000-7f222224e000 rw-p 00009000 08:01 1848944 /lib/x86_64-linux-gnu/libcrypt-2.24.so
7f222224e000-7f222227c000 rw-p 00000000 00:00 0
7f222227c000-7f222227f000 r-xp 00000000 08:01 1848945 /lib/x86_64-linux-gnu/libdl-2.24.so
7f222227f000-7f222247e000 ---p 00003000 08:01 1848945 /lib/x86_64-linux-gnu/libdl-2.24.so
7f222247e000-7f222247f000 r--p 00002000 08:01 1848945 /lib/x86_64-linux-gnu/libdl-2.24.so
7f222247f000-7f2222480000 rw-p 00003000 08:01 1848945 /lib/x86_64-linux-gnu/libdl-2.24.so
7f2222484000-7f2222503000 r-xp 00000000 08:01 140282 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222503000-7f2222702000 ---p 0007f000 08:01 140282 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222702000-7f2222703000 r--p 0007e000 08:01 140282 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222703000-7f2222704000 rw-p 0007f000 08:01 140282 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.1
7f2222704000-7f222271c000 r-xp 00000000 08:01 1848957 /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222271c000-7f222291c000 ---p 00018000 08:01 1848957 /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222291c000-7f222291d000 r--p 00018000 08:01 1848957 /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222291d000-7f222291e000 rw-p 00019000 08:01 1848957 /lib/x86_64-linux-gnu/libpthread-2.24.so
7f222291e000-7f2222922000 rw-p 00000000 00:00 0
7f2222924000-7f2222ae2000 r-xp 00000000 08:01 1848942 /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ae2000-7f2222ce1000 ---p 001be000 08:01 1848942 /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ce1000-7f2222ce5000 r--p 001bd000 08:01 1848942 /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ce5000-7f2222ce7000 rw-p 001c1000 08:01 1848942 /lib/x86_64-linux-gnu/libc-2.24.so
7f2222ce7000-7f2222ceb000 rw-p 00000000 00:00 0
7f2222cec000-7f2222fbf000 r-xp 00000000 08:01 2508786 /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f2222fbf000-7f22231be000 ---p 002d3000 08:01 2508786 /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f22231be000-7f22231c4000 r--p 002d2000 08:01 2508786 /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f22231c4000-7f22231c7000 rw-p 002d8000 08:01 2508786 /usr/share/rvm/rubies/ruby-2.3.4/lib/libruby.so.2.3.0
7f22231c7000-7f22231d8000 rw-p 00000000 00:00 0
7f22231dc000-7f2223201000 r-xp 00000000 08:01 1836520 /lib/x86_64-linux-gnu/ld-2.24.so
7f222326c000-7f22232ac000 r--s 00000000 08:01 2638789 /usr/share/rvm/rubies/ruby-2.3.4/lib/ruby/2.3.0/x86_64-linux/pathname.so
7f22232ac000-7f22232cf000 r--s 00000000 08:01 2508784 /usr/share/rvm/rubies/ruby-2.3.4/bin/ruby
7f22232d1000-7f22233d4000 rw-p 00000000 00:00 0
7f22233f4000-7f22233fb000 r--s 00000000 08:01 414919 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7f22233fd000-7f22233fe000 ---p 00000000 00:00 0
7f22233fe000-7f2223401000 rw-p 00000000 00:00 0
7f2223401000-7f2223402000 r--p 00025000 08:01 1836520 /lib/x86_64-linux-gnu/ld-2.24.so
7f2223402000-7f2223403000 rw-p 00026000 08:01 1836520 /lib/x86_64-linux-gnu/ld-2.24.so
7f2223403000-7f2223404000 rw-p 00000000 00:00 0
7f2223404000-7f2223405000 r-xp 00000000 00:00 0
7f2223405000-7f222340a000 rw-p 00000000 00:00 0
7ffca585a000-7ffca6059000 rw-p 00000000 00:00 0 [stack]
7ffca6154000-7ffca6156000 r--p 00000000 00:00 0 [vvar]
7ffca6156000-7ffca6158000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
An important detail to add is I have a similar implementation which does the following:
RString
objectArray
and return it to RubyAnd this never segfaults for me. This helps narrow down the problem area.
Change class!
, methods!
and unsafe_methods!
macro to have a better API for defining Ruby classes (needs discussion and decision).
I thought I'd try this out, but immediately ran into a linking error:
โ cargo build
Compiling ruru v0.5.0
Compiling libc v0.1.12
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/libc-0.1.12/rust/src/liblibc/lib.rs:81:21: 81:39 warning: lint raw_pointer_derive has been removed: using derive with raw pointers is ok
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/libc-0.1.12/rust/src/liblibc/lib.rs:81 #![allow(bad_style, raw_pointer_derive)]
^~~~~~~~~~~~~~~~~~
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/ruru-0.5.0/src/types.rs:16:1: 16:85 warning: trait bounds are not (yet) enforced in type definitions [E0122]
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/ruru-0.5.0/src/types.rs:16 pub type Callback<I: Object, O: Object> = extern fn(Argc, *const AnyObject, I) -> O;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/craig.hills/.cargo/registry/src/github.com-88ac128001ac3a9a/ruru-0.5.0/src/types.rs:16:1: 16:85 help: run `rustc --explain E0122` to see a detailed explanation
error: linking with `cc` failed: exit code: 1
note: "cc" "-m64" "-L" "/Users/craig.hills/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/craig.hills/code/bruw/target/debug/deps/ruru-89284decc76f4754.0.o" "-o" "/Users/craig.hills/code/bruw/target/debug/deps/libruru-89284decc76f4754.dylib" "/Users/craig.hills/code/bruw/target/debug/deps/ruru-89284decc76f4754.metadata.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/craig.hills/code/bruw/target/debug/deps" "-L" "/Users/craig.hills/code/bruw/target/debug/deps" "-L" "/usr/local/opt/rbenv/versions/2.3.0/lib" "-L" "/Users/craig.hills/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-l" "ruby" "-Wl,-force_load,/var/folders/0j/s2tz5nh135325kr5czrkq_0m274bbw/T/rustc.sQqN26Zd1r6K/liblibc-dd3420cb049117bb.rlib" "-L" "/Users/craig.hills/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-l" "std-4fda350b" "-l" "c" "-l" "m" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m" "-dynamiclib" "-Wl,-dylib" "-l" "compiler-rt"
note: Undefined symbols for architecture x86_64:
"_rb_funcallv", referenced from:
binding::util::call_method::h19b8a2c489e1971cRia in ruru-89284decc76f4754.0.o
"_rb_sym2id", referenced from:
binding::symbol::sym_to_id::hfeed45964b43a6ffRha in ruru-89284decc76f4754.0.o
"_rb_id2sym", referenced from:
binding::symbol::id_to_sym::h4480ba545371b02cnha in ruru-89284decc76f4754.0.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: aborting due to previous error
Could not compile `ruru`.
โ rbenv version
2.3.0 (set by /usr/local/opt/rbenv/version)
โ rustc -V
rustc 1.8.0 (db2939409 2016-04-11)
โ cc --version
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
How does ruru compare to Helix by Yehuda Katz?
How are we supposed to handle returning errors? Since we can't throw exceptions from Rust, like we do with Ruby, and unwrap
ing in library code is generally bad, I'm not really sure what we're supposed to do in this situation.
I have a struct with a lifetime:
pub struct Foo<'a> {
// ...
}
How to wrap that?
Could you please add support for Float
and Bignum
classes when you get a chance?
Cheers
Use docs.rs instead of GitHub pages for documentation.
Would it make sense to adapt helix' macro API?
I've just come across ruru and saw that it uses macros to define types, but they are not quite as concise as the ones in helix (and you need to specify an unmangled function which helix for some reason doesn't). The class definition DSL seems okay but defining classes in a macro that makes the code look like Ruby might go a long way in convincing Ruby programmers to try this Rust thing :)
I made a small example to show the "issue". It is available here: https://github.com/mikeycgto/ruru-rstring-encoding#example.
While this isn't incorrect it does feel a little odd since in modern Ruby and Rust both default to UTF-8 encoding.
Perhaps ruby-sys should expose rb_utf8_str_new
as well? The RString struct could then maybe have a new_from_utf8
function which will ultimately call this Ruby C function. I can make the necessary PRs but I wanted some feedback first.
Ruby has this particular string in it's own test suite:
filename = "\xff".force_encoding("UTF-8") # invalid byte sequence as UTF-8
This will cause ruru to panic:
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err`
value: Utf8Error { valid_up_to: 0, error_len: Some(1) }', /checkout/src/libcore/result.rs:906:4
I've tried wrapping it in a thread but that failed.
In Rust, panic is safe and per-thread. The boundaries between threads serve as a firewall for panic;
- Programming Rust by Jim Blandy, Jason Orendorff
I then found Rust's std::panic::catch_unwind which according to the original RFC is meant to handle such panics from C method calls. The catch_unwind doc has this note:
Note that this function may not catch all panics in Rust. A panic in Rust is not always implemented via unwinding, but can be implemented by aborting the process as well. This function only catches unwinding panics, not those that abort the process.
I have thus far been unable to catch the panic from this and looking up the error Utf8Error it would seem that that is a side effect of the kind of methods used from libruby for RString and that error isn't written in ruru.
Can you point at a docker container with a ready version of ruby?
RbConfig::CONFIG
provides all the required information for linking with static libraries. But Cargo does not allow to use all the flags, for example -framework CoreFoundation
on Mac OS X.
Investigate thermite + RbConfig::CONFIG
+ gcc as a final (optional) step while building an extension.
This allows to use MRI without --enable-shared
option (emk/heroku-buildpack-rust#15)
When I run cargo test
on
extern crate ruru;
#[cfg(test)]
mod tests {
use ruru::{Array};
#[test]
fn it_works() {
let array = Array::new();
}
}
I get the following results
~/code/test_ruru:14:51>cargo test
Compiling test_ruru v0.1.0 (file:///Users/william/code/test_ruru)
src/lib.rs:8:11: 8:16 warning: unused variable: `array`, #[warn(unused_variables)] on by default
src/lib.rs:8 let array = Array::new();
^~~~~
Running target/debug/test_ruru-a9b31b1da40514d8
running 1 test
error: Process didn't exit successfully: `/Users/william/code/test_ruru/target/debug/test_ruru-a9b31b1da40514d8` (signal: 11, SIGSEGV: invalid memory reference)
To learn more, run the command again with --verbose.
results of ruby -r rbconfig -e 'puts RbConfig::CONFIG["configure_args"]'
'--prefix=/Users/william/.rubies/ruby-2.3.0' '--with-opt-dir=/usr/local/opt/openssl:/usr/local/opt/readline:/usr/local/opt/libyaml:/usr/local/opt/gdbm' '--enable-shared'
Consider the following example:
let string = RString::new("Some string");
let mut array = Array::new();
// Moves `string` into `array` similarly to `vec.push()` in Rust
array.push(string);
// ... `string` cannot be used, because it's moved
vs
string = 'Some string'
array = []
# Takes a reference of the `string`
array.push(string)
# `string` can be used
string.concat(" mutated")
array.inspect # => ['Some string mutated']
It needs to be decided whether to take objects references (Ruby way) or by values (Rust way).
Implement Copy
trait similarly to Rust primitive types.
Should be implemented for those types which have constant object_id
s.
Boolean
Float
Integer
NilClass
Symbol
I feel like I'm needing to unwrap() everything to pass to other functions.
Here is what I have so far
#[macro_use]
extern crate ruru;
extern crate inflector;
// // dash: kebab-case
use inflector::cases::kebabcase::to_kebab_case;
// // underscore: snake_case
use inflector::cases::snakecase::to_snake_case;
// // camel_lower: camelCase
use inflector::cases::camelcase::to_camel_case;
// // camel: ClassCase (PascalCase)
use inflector::cases::classcase::to_class_case;
use ruru::{Class, Object, RString, Hash, Array, Symbol, AnyObject, VM};
use ruru::types::ValueType;
class!(CaseTransform);
methods! (
CaseTransform,
itself,
fn deepTransformKeys(hash: Hash, block: &Fn(String) -> String) -> Hash {
let result = Hash::new();
hash.unwrap().each(|key, value| {
let newValue = if value.ty() == ValueType::Hash { deepTransformKeys(value, block).to_any_object() } else { value };
let newKey = RString::new(block(key.unwrap().to_string()));
result.store(newKey, newValue);
});
result
}
fn transformArray(value: Array, transformMethod: &Fn(AnyObject) -> AnyObject) -> Array {
value.map(|item| transformMethod(item)).unwrap()
}
fn transformHash(value: Hash, transformMethod: &Fn(AnyObject) -> AnyObject) -> Hash {
deepTransformKeys(value, |key| transformMethod(key))
}
fn transformSymbol(value: Symbol, transformMethod: &Fn(AnyObject) -> AnyObject) -> Symbol {
let transformed = transformMethod(value);
Symbol::new(transformed);
}
fn transform(
value: AnyObject,
objectTransform: &Fn(AnyObject) -> AnyObject,
keyTransform: &Fn(String) -> String
) -> AnyObject {
match value.unwrap().ty() {
ValueType::Array => transformArray(value, objectTransform).to_any_object(),
ValueType::Hash => transformHash(value, objectTransform).to_any_object(),
ValueType::Symbol => transformSymbol(value, objectTransform).to_any_object(),
ValueType::RString => keyTransform(value).to_any_object(),
ValueType::Object => value
}
}
fn toPascalCase(key: String) -> String { to_class_case(to_snake_case(key.unwrap())) }
fn toCamelCase(key: String) -> String { to_camel_case(to_snake_case(key.unwrap())) }
fn toDashedCase(key: String) -> String { to_kebab_case(to_snake_case(key.unwrap())) }
fn toSnakeCase(key: String) -> String { to_snake_case(key.unwrap()) }
fn camel(value: AnyObject) -> AnyObject { transform(value.unwrap().to_any_object(), &camel, &toPascalCase) }
fn camelLower(value: AnyObject) -> AnyObject { transform(value.unwrap().to_any_object(), &camelLower, &toCamelCase) }
fn dash(value: AnyObject) -> AnyObject { transform(value.unwrap().to_any_object(), &dash, &toDashedCase) }
fn underscore(value: AnyObject) -> AnyObject { transform(value.unwrap(), &underscore, &toSnakeCase) }
fn unaltered(value: AnyObject) -> AnyObject { value.unwrap().to_any_object() }
);
#[no_mangle]
pub extern fn initialize_case_transform() {
Class::new("CaseTransform", None).define(|itself| {
itself.def_self("camel", camel);
itself.def_self("camel_lower", camelLower);
itself.def_self("dash", dash);
itself.def_self("underscore", underscore);
itself.def_self("unaltered", unaltered);
});
}
I may also be struggling with Rust as I'm still fairly new to it -- and I may be trying too hard to adapt the ruby implementation I had of this to Rust (hence all the AnyObject / to_any_object everywhere). :-\
Here is the full repo, if you're interested: https://github.com/NullVoxPopuli/case_transform/blob/8f017c642a254388d6ca6b4c2aaee8f10fea0d17/ext/case_transform/src/lib.rs
Since the "This Week in Ruru" website doesn't have a public repository, I'm filing it here.
Each blog entry to "This Week in Ruru" should have a description of what Ruru is at the top so people who are directly linked to the post from, for example, Reddit, know the context of the changes/news described.
Ruru 0.7.6 doesn't currently compile on Windows, I can follow up with a patch later today (Pacific time).
The link for "the last issue" is broken:
http://localhost:4000/2016/10/04/this-weeks-in-ruru-2/
instead of
http://this-week-in-ruru.org/2016/10/04/this-weeks-in-ruru-2/
Just to be clear, this refers to http://this-week-in-ruru.org/2016/10/24/this-weeks-in-ruru-3/, in:
As you may know, it was mentioned that this website was powered by Trusted server in the last issue.
(bolded the broken link)
I'd like to use some of the st_*
functions because I'm porting an existing C extension at work. In particular, I want to use st_lookup
so I can implement Hash.has_key
. I have a branch that adds initial bindings for it at https://github.com/malept/ruby-sys/tree/st-functions. My progress has subsided partially because I don't think my bindings are quite correct (I think I tried to implement has_key
and I got a weird segfault...I'd have to look again).
Hello,
My question is can hash at
return a rust option or can i get a hint of the type from any object. Or match on the type AnyObject can become?
Question really about the Hash but could apply to Array. I am looking for a key that might not be there. Right now hash returns AnyObject. Not sure if its possible but the Option would help a lot! I am currently throwing my results in to a rust HashMap then converting it to a Hash before returning. If I can sort out the nil issue I can just use a Hash from the start.
Thanks! It was fun and easy! I look forward to really using ruru in a real project.
Becker
For reference my code https://github.com/sbeckeriv/greedy-color
Is the "How do I use it?" section of the readme up to date? I'm interested in checking out the project, but wanted to see if the readme is up to date before digging in.
rb_rescue
rb_ensure
rb_jump_tag
?I've tried building with 2.1.x but it doesn't have the rb_id2sym
symbol (it's a macro in Ruby <= 2.1 IIRC).
There should be a note about this somewhere in the README.
As a long-term project, I would like to get rid of the unwraps and convert to Result<T, E>
-based handling.
It would be great if a NEWS.md
(or CHANGELOG.md
if you prefer), so that it's clear to users of ruru what changed between versions. I suggest following the Keep a Changelog format.
RString::to_str(&self) -> &str
RString::to_str_unchecked(&self) -> &str
These methods are similar to to_string()
and to_string_unchecked()
. The difference is that they return immutable references to underlying Ruby strings.
The new methods do not allocate new String
s on heap, thus they should be faster when a user just needs to get underlying data from Ruby string.
Change Object::get_data()
to return immutable &T
, and then add Object::get_data_mut()
to return &mut T
.
Also get_data_mut
should receive self
as a mutable reference, because the underlying structure of the object may be mutated.
get_data<'a, T>(&'a self, wrapper: &'a DataTypeWrapper<T>) -> &T
get_data_mut<'a, T>(&'a mut self, wrapper: &'a DataTypeWrapper<T>) -> &mut T
I think these will go well on src/class/traits/object.rs
. I've got a PR on ruby-sys for it steveklabnik/ruby-sys#27
If you define a method called "gets" the code will compile, but will segfault whenever the method is called because the binding will collide with libc's gets, the latter overriding the former.
It happened to me, and it took me an hour or two before realizing what was going on.
So I had code like this:
class!(InputStream);
methods!(InputStream, itself,
fn gets() -> AnyObject {
NilClass::new().to_any_object()
}
)
#[no_mangle]
pub extern fn init() {
Class::new("InputStream", None).define(|itself| {
itself.def("gets", gets);
}
}
When I discovered what was going on (by using GDB to get backtraces) the workaround was clear, renaming gets
to InputStream_gets
did the trick. I did not see mention of this in the docs, so one solution could be to just add a warning to the docs. A more robust solution would be to prefix the C function names automatically, maybe with something like __ruru_
.
I am experiencing the same issue as #1 but I have already built ruby with --enable-shared
:
$ rbenv version
2.3.0 (set by /Users/wmoore/Projects/translation_middleware/.ruby-version)
$ ls ~/.rbenv/versions/2.3.0/lib
libruby.2.3.0-static.a libruby.2.3.dylib pkgconfig
libruby.2.3.0.dylib libruby.dylib ruby
Error:
error: linking with `cc` failed: exit code: 1
note: "cc" "-m64" "-L" "/Users/wmoore/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/wmoore/Projects/translation_middleware/target/debug/translation_middleware.0.o" "-o" "/Users/wmoore/Projects/translation_middleware/target/debug/libtranslation_middleware.dylib" "/Users/wmoore/Projects/translation_middleware/target/debug/translation_middleware.metadata.o" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/wmoore/Projects/translation_middleware/target/debug" "-L" "/Users/wmoore/Projects/translation_middleware/target/debug/deps" "-L" "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib" "-L" "/Users/wmoore/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libruru-c125d47a5dbdbad9.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libruby_sys-9c98563f5869bd84.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liblibc-12d5d911cf5411c3.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libstd-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libcollections-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/librustc_unicode-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/librand-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liballoc-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liballoc_system-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/liblibc-4fda350b.rlib" "-Wl,-force_load,/var/folders/tg/d0k9t6855130nzcfjv7rcq0c0000gn/T/rustc.ch7vhH2EOR7i/libcore-4fda350b.rlib" "-l" "ruby" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m" "-dynamiclib" "-Wl,-dylib" "-l" "compiler-rt"
note: Undefined symbols for architecture x86_64:
"_rb_funcallv", referenced from:
binding::util::call_method::hd3cb17cf82fa681azia in libruru-c125d47a5dbdbad9.rlib(ruru-c125d47a5dbdbad9.0.o)
"_rb_sym2id", referenced from:
binding::symbol::sym_to_id::ha5d004a08aad5d8byha in libruru-c125d47a5dbdbad9.rlib(ruru-c125d47a5dbdbad9.0.o)
"_rb_id2sym", referenced from:
binding::symbol::id_to_sym::h7a1479f68e6b60724ga in libruru-c125d47a5dbdbad9.rlib(ruru-c125d47a5dbdbad9.0.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: aborting due to previous error
Could not compile `translation_middleware`.
To learn more, run the command again with --verbose.
Using rustc 1.8.0 (db2939409 2016-04-11)
I note that in all the -L
arguments to the compiler it includes "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib"
, which is no doubt the issue โ I want to it to find the current rbenv
ruby. Do you have any suggestions on how to get it to pick up the right ruby?
If I define some_helper_method
inside methods!
macro and try to call it inside other method defined inside methods!
macro I get these errors:
some_helper_method();
| ^^^^^^^^^^^^^^^^^^^^^^ expected 3 parameters
src/lib.rs:7:1: 109:3 note: in this expansion of methods! (defined in <ruru macros>)
|
= note: the following parameter types were expected: i32, *const ruru::AnyObject, SomeClass
So... What's the best way to declare some helper methods to reuse code?
Is there a clean way to attach Rust state/data to a Ruby class?
Something like instance variables which are only visible to the Rust env?
The reason I'm asking is because I'd like to expose a Rust implementation of a Ruby class, but use Rust's more robust data structures and memory management for the internal heavy lifting.
Add basic support for Module
s.
Also there may be some common functionality which is implemented in Class
struct. Extract the logic to a trait in this case.
The following methods should take self
by value, because technically they return the same Ruby
objects converted to another Rust type.
Object::to
Object::to<T: Object>(&self) -> T
changes to
Object::convert_into<T: Object>(self) -> T
Object::try_convert_to
Object::try_convert_to<T: VerifiedObject>(&self) -> Result<T>
changes to
Object::try_convert_into<T: VerifiedObject>(self) -> Result<T>
Object::to_any_object()
Object::to_any_object(&self) -> AnyObject
changes to
Object::into_any_object(&self) -> AnyObject
For example:
let fixnum = some_object.try_convert_into::<Fixnum>();
some_object
should be consumed by convert_into
, because fixnum
and some_object
correspond to the same object in Ruby.
Does Ruru support MS Windows?
I'm trying with RubyInstaller 2.3.0 and Rust nightly but keep getting link errors with cargo build --release
.
At first the file x64-msvcrt-ruby230.lib
is not found, but I figured it to mean that it's looking for either libx64-msvcrt-ruby230-static.a
or libx64-msvcrt-ruby230.dll.a
, although still no luck when renaming either to x64-msvcrt-ruby230.lib
.
Add basic support for Module
s.
I made a repository based on the String.blank?
example, and I get some warnings when I compile. From https://travis-ci.org/malept/rusty_blank/jobs/128239145#L241-L247:
<ruru macros>:9:5: 9:14 warning: unused variable: `arguments`, #[warn(unused_variables)] on by default
<ruru macros>:9 let arguments = VM:: parse_arguments ( argc , argv ) ; let mut i = 0 ; $ (
^~~~~~~~~
src/lib.rs:7:1: 14:3 note: in this expansion of methods! (defined in <ruru macros>)
<ruru macros>:9:60: 9:65 warning: unused variable: `i`, #[warn(unused_variables)] on by default
<ruru macros>:9 let arguments = VM:: parse_arguments ( argc , argv ) ; let mut i = 0 ; $ (
^~~~~
(There are also some unused_mut
warnings after that, but I'm not sure what can be done about them.)
Currently to do allocate I have to do this:
let mut pathname_instance = Class::from(
Class::from_existing("Pathname").send("allocate", None).value()
);
I would much prefer
let mut pathname_instance = Class::from_existing("Pathname").allocate();
I've searched Ruby's C code and couldn't find anywhere where allocate
is defined. So I'm at a loss on how to add it directly.
Rust:
class!( NullByte );
methods!(
NullByte,
itself,
fn get() -> RString {
RString::new( "\u{0}" )
}
);
Class::new( "NullByte", None ).define( |itself| {
itself.def_self( "get", get );
});
Ruby:
NullByte.get
Error:
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: NulError(0, [0])', ../src/libcore/result.rs:799
stack backtrace:
1: 0x7f75d426e61f - std::sys::backtrace::tracing::imp::write::h22f199c1dbb72ba2
2: 0x7f75d427db4d - std::panicking::default_hook::{{closure}}::h9a389c462b6a22dd
3: 0x7f75d427b0b2 - std::panicking::default_hook::h852b4223c1c00c59
4: 0x7f75d427b6a8 - std::panicking::rust_panic_with_hook::hcd9d05f53fa0dafc
5: 0x7f75d427b542 - std::panicking::begin_panic::hf6c488cee66e7f17
6: 0x7f75d427b480 - std::panicking::begin_panic_fmt::hb0a7126ee57cdd27
7: 0x7f75d427b401 - rust_begin_unwind
8: 0x7f75d4293aaf - core::panicking::panic_fmt::h9af671b78898cdba
9: 0x7f75d4231383 - core::result::unwrap_failed::h03cc84bf66ee82b5
10: 0x7f75d423235e - ruru::class::string::RString::new::h2793ffe2d21bdbab
11: 0x7f75d4231239 - get
12: 0x7f75df5533b2 - vm_call_cfunc
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1638
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1733
13: 0x7f75df562d2d - vm_call_method_each_type
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2022
14: 0x7f75df5632a2 - vm_call_method
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2172
15: 0x7f75df55c7d7 - vm_exec_core
at /home/zapotek/.rvm/src/ruby-2.3.1/insns.def:995
16: 0x7f75df561285 - vm_exec
at /home/zapotek/.rvm/src/ruby-2.3.1/vm.c:1650
17: 0x7f75df4082e8 - rb_load_internal0
at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:619
18: 0x7f75df409dff - rb_require_internal
at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:998
19: 0x7f75df40a128 - rb_require_safe
at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:1043
20: 0x7f75df5533b2 - vm_call_cfunc
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1638
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1733
21: 0x7f75df562d2d - vm_call_method_each_type
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2022
22: 0x7f75df5632a2 - vm_call_method
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2172
23: 0x7f75df55c7d7 - vm_exec_core
at /home/zapotek/.rvm/src/ruby-2.3.1/insns.def:995
24: 0x7f75df561285 - vm_exec
at /home/zapotek/.rvm/src/ruby-2.3.1/vm.c:1650
25: 0x7f75df4082e8 - rb_load_internal0
at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:619
26: 0x7f75df409dff - rb_require_internal
at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:998
27: 0x7f75df40a128 - rb_require_safe
at /home/zapotek/.rvm/src/ruby-2.3.1/load.c:1043
28: 0x7f75df5533b2 - vm_call_cfunc
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1638
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:1733
29: 0x7f75df562d2d - vm_call_method_each_type
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2022
30: 0x7f75df5632a2 - vm_call_method
at /home/zapotek/.rvm/src/ruby-2.3.1/vm_insnhelper.c:2172
31: 0x7f75df55c7d7 - vm_exec_core
at /home/zapotek/.rvm/src/ruby-2.3.1/insns.def:995
32: 0x7f75df561285 - vm_exec
at /home/zapotek/.rvm/src/ruby-2.3.1/vm.c:1650
33: 0x7f75df40251c - ruby_exec_internal
at /home/zapotek/.rvm/src/ruby-2.3.1/eval.c:245
34: 0x7f75df40473c - ruby_exec_node
at /home/zapotek/.rvm/src/ruby-2.3.1/eval.c:310
35: 0x7f75df40717d - ruby_run_node
at /home/zapotek/.rvm/src/ruby-2.3.1/eval.c:302
36: 0x40088a - main
at /home/zapotek/.rvm/src/ruby-2.3.1/main.c:36
37: 0x7f75defd482f - __libc_start_main
38: 0x4008b8 - _start
39: 0x0 - <unknown>
fatal runtime error: failed to initiate panic, error 5
Aborted (core dumped)
Both Ruby and Rust support null-bytes in strings, it'd be nice to allow them to cross boundaries.
Existing API of MRI which is used for both Fixnum
and Integer
(rb_int2inum
, rb_num2int
) remains the same in 2.4. Thus no changes in ruby-sys
are required.
Duplicate the contents of Fixnum
struct to Integer
.
As of ruby-sys
0.2.3, ruru-based extensions can be built on Windows. It would be nice to add CI support for Windows builds.
A starting point can be found at my rusty_blank
project: https://github.com/malept/rusty_blank/blob/master/.appveyor.yml
Some notes about my config file:
Hi there,
I was just looking at https://crates.io/crates/ruby-sys and found that the homepage and documentation links are not working.
https://github.com/ruby/ruby/blob/trunk/doc/extension.rdoc
It'd be nice to flesh this out even more.
Mark Fixnum
struct as deprecated to have a consistent API with 2.4.
Hello,
I'm getting a segfault when trying to run some code without the GVL.
This is the unsafe_method!
:
fn without_gvl( data: RString ) -> NilClass {
let str = data.to_string_unchecked();
println!( "1 - {}", str );
let comp = || { process( str ) };
let unblock = || {};
let _ = Thread::call_without_gvl( comp, Some( unblock ) );
NilClass::new()
}
I've tried cloning the data prior to passing it to comp
and using slices but I can't seem to get around the issue.
The process
method is simply:
fn process( data: String ) {
println!( "{}", data );
}
The Ruby code is:
MyObject.without_gvl( 's' )
Segfault:
1 - s
s
*** Error in `ruby': double free or corruption (fasttop): 0x0000000002c56100 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7efc344c57e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7efc344cde0a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7efc344d198c]
/home/zapotek/workspace/project/lib/../ext/engine/target/release/libproject.so(_ZN4ruru7binding6thread19thread_call_callbox17h27239a4182525d2fE+0x27)[0x7efc29398397]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(rb_thread_call_without_gvl+0x45)[0x7efc34a14095]
/home/zapotek/workspace/project/lib/../ext/engine/target/release/libproject.so(without_gvl+0x149)[0x7efc293928a9]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1d5840)[0x7efc349ec840]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e51ee)[0x7efc349fc1ee]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e5763)[0x7efc349fc763]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1dec18)[0x7efc349f5c18]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e3776)[0x7efc349fa776]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x8a299)[0x7efc348a1299]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x8a956)[0x7efc348a1956]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1d5840)[0x7efc349ec840]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e51ee)[0x7efc349fc1ee]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e5763)[0x7efc349fc763]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1dec18)[0x7efc349f5c18]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x1e3776)[0x7efc349fa776]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(+0x844ed)[0x7efc3489b4ed]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(ruby_exec_node+0x1d)[0x7efc3489d6ed]
/home/zapotek/.rvm/rubies/ruby-2.3.1/lib/libruby.so.2.3(ruby_run_node+0x1e)[0x7efc348a012e]
ruby[0x40087b]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7efc3446e830]
ruby(_start+0x29)[0x4008a9]
======= Memory map: ========
00400000-00401000 r-xp 00000000 00:30 12600517 /home/zapotek/.rvm/rubies/ruby-2.3.1/bin/ruby
00600000-00601000 r--p 00000000 00:30 12600517 /home/zapotek/.rvm/rubies/ruby-2.3.1/bin/ruby
00601000-00602000 rw-p 00001000 00:30 12600517 /home/zapotek/.rvm/rubies/ruby-2.3.1/bin/ruby
0076d000-0380c000 rw-p 00000000 00:00 0 [heap]
7efc24000000-7efc24021000 rw-p 00000000 00:00 0
7efc24021000-7efc28000000 ---p 00000000 00:00 0
7efc29250000-7efc295d4000 r-xp 00000000 00:30 11161149 /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc295d4000-7efc297d3000 ---p 00384000 00:30 11161149 /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc297d3000-7efc2988a000 r--p 00383000 00:30 11161149 /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc2988a000-7efc2988c000 rw-p 0043a000 00:30 11161149 /home/zapotek/workspace/project/ext/engine/target/release/libproject.so
7efc2988c000-7efc2988d000 r-xp 00000000 00:30 12602444 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc2988d000-7efc29a8c000 ---p 00001000 00:30 12602444 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc29a8c000-7efc29a8d000 r--p 00000000 00:30 12602444 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc29a8d000-7efc29a8e000 rw-p 00001000 00:30 12602444 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/fcntl.so
7efc29a8e000-7efc29aa5000 r-xp 00000000 08:21 6696923 /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29aa5000-7efc29ca4000 ---p 00017000 08:21 6696923 /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29ca4000-7efc29ca5000 r--p 00016000 08:21 6696923 /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29ca5000-7efc29ca6000 rw-p 00017000 08:21 6696923 /usr/lib/x86_64-linux-gnu/gconv/CP932.so
7efc29ca6000-7efc29caa000 r-xp 00000000 00:30 12602461 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29caa000-7efc29ea9000 ---p 00004000 00:30 12602461 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29ea9000-7efc29eaa000 r--p 00003000 00:30 12602461 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29eaa000-7efc29eab000 rw-p 00004000 00:30 12602461 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/racc/cparse.so
7efc29eab000-7efc2a0d7000 r-xp 00000000 00:30 12850999 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a0d7000-7efc2a2d6000 ---p 0022c000 00:30 12850999 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a2d6000-7efc2a2de000 r--p 0022b000 00:30 12850999 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a2de000-7efc2a2e3000 rw-p 00233000 00:30 12850999 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/nokogiri-1.6.8.1/lib/nokogiri/nokogiri.so
7efc2a2e3000-7efc2a2e5000 rw-p 00000000 00:00 0
7efc2a2e5000-7efc2a312000 r-xp 00000000 00:30 12727165 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a312000-7efc2a511000 ---p 0002d000 00:30 12727165 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a511000-7efc2a512000 r--p 0002c000 00:30 12727165 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a512000-7efc2a514000 rw-p 0002d000 00:30 12727165 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ox-2.4.8/ext/ox/ox.so
7efc2a514000-7efc2a529000 r-xp 00000000 00:30 12726949 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a529000-7efc2a728000 ---p 00015000 00:30 12726949 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a728000-7efc2a729000 r--p 00014000 00:30 12726949 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a729000-7efc2a72a000 rw-p 00015000 00:30 12726949 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/msgpack-1.0.2/lib/msgpack/msgpack.so
7efc2a72a000-7efc2a732000 r-xp 00000000 00:30 12613473 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a732000-7efc2a932000 ---p 00008000 00:30 12613473 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a932000-7efc2a933000 r--p 00008000 00:30 12613473 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a933000-7efc2a934000 rw-p 00009000 00:30 12613473 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.so
7efc2a934000-7efc2aa03000 r-xp 00000000 08:21 5649783 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2aa03000-7efc2ac03000 ---p 000cf000 08:21 5649783 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2ac03000-7efc2ac06000 r--p 000cf000 08:21 5649783 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2ac06000-7efc2ac08000 rw-p 000d2000 08:21 5649783 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7efc2ac08000-7efc2ac09000 rw-p 00000000 00:00 0
7efc2ac09000-7efc2ac4f000 r-xp 00000000 08:21 5649758 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ac4f000-7efc2ae4f000 ---p 00046000 08:21 5649758 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ae4f000-7efc2ae51000 r--p 00046000 08:21 5649758 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ae51000-7efc2ae53000 rw-p 00048000 08:21 5649758 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7efc2ae53000-7efc2ae54000 rw-p 00000000 00:00 0
7efc2ae54000-7efc2ae62000 r-xp 00000000 08:21 5649727 /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2ae62000-7efc2b061000 ---p 0000e000 08:21 5649727 /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2b061000-7efc2b062000 r--p 0000d000 08:21 5649727 /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2b062000-7efc2b063000 rw-p 0000e000 08:21 5649727 /usr/lib/x86_64-linux-gnu/libheimbase.so.1.0.0
7efc2b063000-7efc2b08a000 r-xp 00000000 08:21 5649738 /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b08a000-7efc2b28a000 ---p 00027000 08:21 5649738 /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b28a000-7efc2b28b000 r--p 00027000 08:21 5649738 /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b28b000-7efc2b28c000 rw-p 00028000 08:21 5649738 /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7efc2b28c000-7efc2b2a1000 r-xp 00000000 08:21 5649292 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b2a1000-7efc2b4a0000 ---p 00015000 08:21 5649292 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b4a0000-7efc2b4a1000 r--p 00014000 08:21 5649292 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b4a1000-7efc2b4a2000 rw-p 00015000 08:21 5649292 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7efc2b4a2000-7efc2b4d2000 r-xp 00000000 08:21 5649719 /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b4d2000-7efc2b6d2000 ---p 00030000 08:21 5649719 /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b6d2000-7efc2b6d3000 r--p 00030000 08:21 5649719 /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b6d3000-7efc2b6d4000 rw-p 00031000 08:21 5649719 /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7efc2b6d4000-7efc2b6d5000 rw-p 00000000 00:00 0
7efc2b6d5000-7efc2b6d8000 r-xp 00000000 08:21 9187269 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b6d8000-7efc2b8d7000 ---p 00003000 08:21 9187269 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b8d7000-7efc2b8d8000 r--p 00002000 08:21 9187269 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b8d8000-7efc2b8d9000 rw-p 00003000 08:21 9187269 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7efc2b8d9000-7efc2b978000 r-xp 00000000 08:21 5649878 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2b978000-7efc2bb77000 ---p 0009f000 08:21 5649878 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2bb77000-7efc2bb78000 r--p 0009e000 08:21 5649878 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2bb78000-7efc2bb7b000 rw-p 0009f000 08:21 5649878 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7efc2bb7b000-7efc2bbff000 r-xp 00000000 08:21 5649773 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2bbff000-7efc2bdfe000 ---p 00084000 08:21 5649773 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2bdfe000-7efc2be01000 r--p 00083000 08:21 5649773 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2be01000-7efc2be04000 rw-p 00086000 08:21 5649773 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7efc2be04000-7efc2be05000 rw-p 00000000 00:00 0
7efc2be05000-7efc2be0d000 r-xp 00000000 08:21 5649815 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2be0d000-7efc2c00c000 ---p 00008000 08:21 5649815 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2c00c000-7efc2c00d000 r--p 00007000 08:21 5649815 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2c00d000-7efc2c00e000 rw-p 00008000 08:21 5649815 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7efc2c00e000-7efc2c01f000 r-xp 00000000 08:21 5649409 /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c01f000-7efc2c21f000 ---p 00011000 08:21 5649409 /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c21f000-7efc2c220000 r--p 00011000 08:21 5649409 /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c220000-7efc2c221000 rw-p 00012000 08:21 5649409 /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.1
7efc2c221000-7efc2c252000 r-xp 00000000 08:21 5647613 /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c252000-7efc2c452000 ---p 00031000 08:21 5647613 /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c452000-7efc2c453000 r--p 00031000 08:21 5647613 /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c453000-7efc2c454000 rw-p 00032000 08:21 5647613 /usr/lib/x86_64-linux-gnu/libidn.so.11.6.15
7efc2c454000-7efc2c4ad000 r-xp 00000000 08:21 5652093 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c4ad000-7efc2c6ac000 ---p 00059000 08:21 5652093 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c6ac000-7efc2c6b6000 r--p 00058000 08:21 5652093 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c6b6000-7efc2c6b8000 rw-p 00062000 08:21 5652093 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.1.0
7efc2c6b8000-7efc2c6f5000 r-xp 00000000 08:21 5649822 /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c6f5000-7efc2c8f5000 ---p 0003d000 08:21 5649822 /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c8f5000-7efc2c8f6000 r--p 0003d000 08:21 5649822 /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c8f6000-7efc2c8f8000 rw-p 0003e000 08:21 5649822 /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7efc2c8f8000-7efc2c8f9000 rw-p 00000000 00:00 0
7efc2c8f9000-7efc2c912000 r-xp 00000000 08:21 5662184 /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2c912000-7efc2cb12000 ---p 00019000 08:21 5662184 /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2cb12000-7efc2cb13000 r--p 00019000 08:21 5662184 /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2cb13000-7efc2cb14000 rw-p 0001a000 08:21 5662184 /usr/lib/x86_64-linux-gnu/libsasl2.so.2.0.25
7efc2cb14000-7efc2cb2b000 r-xp 00000000 08:21 9188952 /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cb2b000-7efc2cd2b000 ---p 00017000 08:21 9188952 /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cd2b000-7efc2cd2c000 r--p 00017000 08:21 9188952 /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cd2c000-7efc2cd2d000 rw-p 00018000 08:21 9188952 /lib/x86_64-linux-gnu/libresolv-2.23.so
7efc2cd2d000-7efc2cd2f000 rw-p 00000000 00:00 0
7efc2cd2f000-7efc2cd63000 r-xp 00000000 08:21 5649094 /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cd63000-7efc2cf62000 ---p 00034000 08:21 5649094 /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cf62000-7efc2cf64000 r--p 00033000 08:21 5649094 /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cf64000-7efc2cf65000 rw-p 00035000 08:21 5649094 /usr/lib/x86_64-linux-gnu/libnettle.so.6.2
7efc2cf65000-7efc2cf97000 r-xp 00000000 08:21 5647284 /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2cf97000-7efc2d196000 ---p 00032000 08:21 5647284 /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2d196000-7efc2d197000 r--p 00031000 08:21 5647284 /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2d197000-7efc2d198000 rw-p 00032000 08:21 5647284 /usr/lib/x86_64-linux-gnu/libhogweed.so.4.2
7efc2d198000-7efc2d2bb000 r-xp 00000000 08:21 5651930 /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d2bb000-7efc2d4ba000 ---p 00123000 08:21 5651930 /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d4ba000-7efc2d4c5000 r--p 00122000 08:21 5651930 /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d4c5000-7efc2d4c7000 rw-p 0012d000 08:21 5651930 /usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
7efc2d4c7000-7efc2d4c8000 rw-p 00000000 00:00 0
7efc2d4c8000-7efc2d515000 r-xp 00000000 08:21 5647521 /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d515000-7efc2d714000 ---p 0004d000 08:21 5647521 /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d714000-7efc2d716000 r--p 0004c000 08:21 5647521 /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d716000-7efc2d717000 rw-p 0004e000 08:21 5647521 /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.5
7efc2d717000-7efc2d719000 rw-p 00000000 00:00 0
7efc2d719000-7efc2d726000 r-xp 00000000 08:21 5647525 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d726000-7efc2d926000 ---p 0000d000 08:21 5647525 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d926000-7efc2d927000 r--p 0000d000 08:21 5647525 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d927000-7efc2d928000 rw-p 0000e000 08:21 5647525 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.10.5
7efc2d928000-7efc2d943000 r-xp 00000000 08:21 5650429 /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2d943000-7efc2db42000 ---p 0001b000 08:21 5650429 /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2db42000-7efc2db43000 r--p 0001a000 08:21 5650429 /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2db43000-7efc2db44000 rw-p 0001b000 08:21 5650429 /usr/lib/x86_64-linux-gnu/librtmp.so.1
7efc2db44000-7efc2db68000 r-xp 00000000 08:21 8792502 /usr/local/lib/libnghttp2.so.14.12.4
7efc2db68000-7efc2dd67000 ---p 00024000 08:21 8792502 /usr/local/lib/libnghttp2.so.14.12.4
7efc2dd67000-7efc2dd68000 r--p 00023000 08:21 8792502 /usr/local/lib/libnghttp2.so.14.12.4
7efc2dd68000-7efc2dd6b000 rw-p 00024000 08:21 8792502 /usr/local/lib/libnghttp2.so.14.12.4
7efc2dd6b000-7efc2ddda000 r-xp 00000000 08:21 8796226 /usr/local/lib/libcurl.so.4.4.0
7efc2ddda000-7efc2dfda000 ---p 0006f000 08:21 8796226 /usr/local/lib/libcurl.so.4.4.0
7efc2dfda000-7efc2dfdc000 r--p 0006f000 08:21 8796226 /usr/local/lib/libcurl.so.4.4.0
7efc2dfdc000-7efc2dfdd000 rw-p 00071000 08:21 8796226 /usr/local/lib/libcurl.so.4.4.0
7efc2dfdd000-7efc2dfff000 r-xp 00000000 00:30 12613168 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2dfff000-7efc2e1ff000 ---p 00022000 00:30 12613168 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2e1ff000-7efc2e200000 r--p 00022000 00:30 12613168 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2e200000-7efc2e201000 rw-p 00023000 00:30 12613168 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/ffi-1.9.17/lib/ffi_c.so
7efc2e201000-7efc2e202000 r-xp 00000000 00:30 12602530 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e202000-7efc2e401000 ---p 00001000 00:30 12602530 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e401000-7efc2e402000 r--p 00000000 00:30 12602530 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e402000-7efc2e403000 rw-p 00001000 00:30 12602530 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
7efc2e403000-7efc2e40e000 r-xp 00000000 08:21 9188944 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e40e000-7efc2e60d000 ---p 0000b000 08:21 9188944 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e60d000-7efc2e60e000 r--p 0000a000 08:21 9188944 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e60e000-7efc2e60f000 rw-p 0000b000 08:21 9188944 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7efc2e60f000-7efc2e615000 rw-p 00000000 00:00 0
7efc2e615000-7efc2e62b000 r-xp 00000000 08:21 9187078 /lib/x86_64-linux-gnu/libgcc_s.so.1
7efc2e62b000-7efc2e82a000 ---p 00016000 08:21 9187078 /lib/x86_64-linux-gnu/libgcc_s.so.1
7efc2e82a000-7efc2e82b000 rw-p 00015000 08:21 9187078 /lib/x86_64-linux-gnu/libgcc_s.so.1
7efc2e82b000-7efc2e99d000 r-xp 00000000 08:21 5647563 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2e99d000-7efc2eb9d000 ---p 00172000 08:21 5647563 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2eb9d000-7efc2eba7000 r--p 00172000 08:21 5647563 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2eba7000-7efc2eba9000 rw-p 0017c000 08:21 5647563 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7efc2eba9000-7efc2ebad000 rw-p 00000000 00:00 0
7efc2ebad000-7efc2ecb0000 r-xp 00000000 00:30 12851989 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2ecb0000-7efc2eeaf000 ---p 00103000 00:30 12851989 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2eeaf000-7efc2eeb0000 r--p 00102000 00:30 12851989 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2eeb0000-7efc2eeb1000 rw-p 00103000 00:30 12851989 /home/zapotek/.rvm/gems/ruby-2.3.1@project/gems/google_hash-0.9.0/lib/google_hash.so
7efc2eeb1000-7efc2eeb2000 r-xp 00000000 00:30 12602525 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2eeb2000-7efc2f0b2000 ---p 00001000 00:30 12602525 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2f0b2000-7efc2f0b3000 r--p 00001000 00:30 12602525 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2f0b3000-7efc2f0b4000 rw-p 00002000 00:30 12602525 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16be.so
7efc2f0b4000-7efc2f0b5000 r-xp 00000000 00:30 12602471 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f0b5000-7efc2f2b5000 ---p 00001000 00:30 12602471 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f2b5000-7efc2f2b6000 r--p 00001000 00:30 12602471 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f2b6000-7efc2f2b7000 rw-p 00002000 00:30 12602471 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/enc/utf_16le.so
7efc2f2b7000-7efc2f2b8000 r-xp 00000000 00:30 12602532 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f2b8000-7efc2f4b8000 ---p 00001000 00:30 12602532 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f4b8000-7efc2f4b9000 r--p 00001000 00:30 12602532 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f4b9000-7efc2f4ba000 rw-p 00002000 00:30 12602532 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/digest/sha2.so
7efc2f4ba000-7efc2f4c0000 r-xp 00000000 00:30 12602442 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f4c0000-7efc2f6bf000 ---p 00006000 00:30 12602442 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f6bf000-7efc2f6c0000 r--p 00005000 00:30 12602442 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f6c0000-7efc2f6c1000 rw-p 00006000 00:30 12602442 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/strscan.so
7efc2f6c1000-7efc2f6de000 r-xp 00000000 08:21 5649961 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f6de000-7efc2f8de000 ---p 0001d000 08:21 5649961 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f8de000-7efc2f8df000 r--p 0001d000 08:21 5649961 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f8df000-7efc2f8e0000 rw-p 0001e000 08:21 5649961 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.4
7efc2f8e0000-7efc2f8e6000 r-xp 00000000 00:30 12602553 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/psych.so
7efc2f8e6000-7efc2fae5000 ---p 00006000 00:30 12602553 /home/zapotek/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/x86_64-linux/psych.soAborted (core dumped)
Now that I know this I can implement my code so it will work around this issue, but it's not convenient and I don't see any info on this. Consider this more of a documentation request.
Here's the scenario:
methods!(
FasterPathname,
_itself,
fn r_dirname() -> RString { pub_dirname(r_to_path()) }
fn pub_dirname(pth: RString) -> RString {
Boolean::new(
Path::new(
pth.ok().unwrap_or(RString::new("")).to_str()
).is_dir()
)
}
);
And the method r_to_path
simple gets the instance variable @path
. When I try to run the above code I get errors that both the pub_dirname
method call and r_to_path
method call need three parameters. When I throw in some random values it tells me that the signature for those parameters need to be:
i32, *-ptr, FasterPathname
Even with methods that take extra parameters it still says three and asks for this same signature. So I'm assuming the methods! macro isn't allowing methods to be calling each other from within the methods!
macro. I'll be moving all of my code out of it externally to implement both of my public/private alternative implementations that respectively work with or without the instance variable @path
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.