Overview
Syllabus
Intro
Corona Outbreak
Compatibility to 2.x
Compatibility Matters
Encoding (Unicode Support)
Everyone wants Better Languages
Language Designers Make Mistakes
Programmers Love New Things
Contradiction
We Should Keep Compatibility
Except for a few Bug Fixes
Some Program Can Rely on Buggy Behavior
Ruby1.9 Tragedy
Python3 Problem
What's the Difference?
Performance Matters
Ruby is Fast Enough
Everyone Loves GitHub
Everyone Loves Shopify
No one cares
Just-In-Time Compiler
We are improving
Buy New Computer, Your Software Run Faster
Single Core Performance Saturation
Multi-core Age
Dual Core, Octa Core, 64 Core
Use More Cores, Your Software Run Faster
Concurrency is a key
Thread-safe Runtime is Hard
You need to specify a Scheduler
Async Fiber does not use Multi-Core
How can we use Multi-Core?
For CPU Intensive Tasks
Ruby Actor
Limited Sharing
Utilize Multi-Cores
Error/Bug Finding
Age of Static Typing
Everyone Goes Static Typing
Static Type Checks
Ruby Signatures (RBS)
TypeScript d.ts Counterpart
Better Code Completion
Type Signature Pop-up
Naive Type Checks
Abstract Interpretation
New Syntax
Pattern Matching (2.7)
One-line Pattern Matching
Need Improvement
Supporting Tools
Better Tools Enables Better UX
Type Checker • Formatter • Language Server Protocol • Performance Tuning
Multi-Layer JIT
Static Ruby
Ruby the Dynamic
Add a few Sprinkle
Static Barrier
e.g. Method Redefinition
Static Interpretation
We Will Keep Moving Forward
Taught by
Ruby Central