The Wire · Showcase
Flutter macOS text input crash fixed
By RepoJournal · Filed · About Mobile platforms
Flutter patched a macOS crash that could take down any app when an IME reports a selection outside the text buffer.
Flutter's Chris Bracken fixed a macOS crash in the text input plugin where an out-of-bounds selection or composing range would index past the end of the text and abort [1]. The fix validates ranges passed to setMarkedText, which should eliminate a whole class of IME-triggered crashes. Meanwhile, Flutter also corrected the rendering of translated bounded blurs in Impeller, so gradients and shadows will look right when the canvas moves [2]. Swift compiler engineers salvaged debug info in three optimization passes, fixing "all variables lost by the pass in the stdlib" and recovering 6.4% of lost variables in SILCombine [3]. Kotlin dropped a safety switch for a type simplification rule, finally allowing the compiler to apply it unconditionally [4]. Span subscripting in Swift now uses borrow instead of get, which eliminates temporary copies for large element types like InlineArray [5]. Across three repos this period there were 100 commits, 70 PRs, and one release. Start with the Flutter macOS crash fix if you're on that platform, then pull in the Swift debug info salvage, and keep an eye on the Kotlin inference change before your next compiler bump.
One email a day. Unsubscribe in one click.
Keep up with Mobile platforms in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Update Flutter to include the macOS text input crash fix flutter/flutter [immediate]
- → Verify your Flutter app's blur rendering after the bounded blur fix flutter/flutter [plan]
- → Review Swift debug info changes before adopting a compiler with SILCombine 6.4% loss recovery apple/swift [monitor]
References
- [1] macOS: Fix crash on out-of-bounds text input ranges (#191780) flutter/flutter
- [2] Fixes translated bounded blurs ↗ flutter/flutter
- [3] [DebugInfo] Salvage Debug Info in deleteAllDebugUses ↗ apple/swift
- [4] [Inference] Drop the safety switch for T&Any..T? <: Foo simplification JetBrains/kotlin
- [5] Ensure Span subscripting always uses borrow instead of get ↗ apple/swift