Schedule
Back'A full-time MRI committer at Cookpad, Inc. He has been interested in testing, analyzing, abusing of Ruby. He is an advocate of "transcendental programming" that creates a useless program like this bio. (`_`)'.then{|s|eval(t=%q(puts"'#{s.sub(?_,?_+?_)}'.then{|s|eval(t=%q(#{t}))}"))}
A Type-level Ruby Interpreter for Testing and Understanding
We propose a type-level abstract interpreter for Ruby 3's static analysis. This interpreter runs normal (i.e., non-type-annotated) Ruby programs in "type" level: each variable has only a type instead of a value. It reports a possible type-error bug, e.g., attempting to call a unknown method or to pass an invalid type argument during the interpretation. By recording all method definitions and calls, it also creates a summary of the program structure in type signature format. This is useful to understand the code, and can be also used as a prototype of type definition for external type checkers.