is a means, not an end • The end is the modern development experience • On-the-fly error reporting, go-to-definition, completion, argument hint, etc. •Q: Isn't it possible to achieve the experience without changing the Ruby language? • My answer is "Possible!" 10 (under some conditions)
Steep Sorbet The Ruby official type definition language A static type analyzer for Ruby A static type analyzer for Ruby A static type analyzer for Ruby
knows only the beginning and end of the source code • The parser returns nothing when syntax is broken • Cannot complete an incomplete call 39 current implementation desired behavior foo(k:)
"require 'foo'" (even if it is a gem) •TypeProf for IDE stops the analysis in one second • Nothing will be reported where it couldn't analyze within the time limit 40
so that TypeProf don't have to analyze gem sources • Watch pocke's talk (Day 2) • Divide your application to components • and write RBS against their interfaces • We need experiment with a practical use case 41
3.1 • Happy if you could play with it and give us feedback • How to run the development version https://gist.github.com/mame/86234de6a58352b9f994e0f8a6d6fbc2 (in Japanese) •Ready for production? • Experimental, but hopefully works for small programs • For large code base, please write RBS for gems first! 43
soutaro • Katsuhiro Ueno & Eijiro Sumii •Stripe team & Shopify team & Jeff Foster • Yuta Saito (@kateinoigakukun) • Many improvements of TypeProf for IDE 44