$ the-wire · showcase
Faster exception pages and leaner serialization
By RepoJournal · Filed · About Rails · Composed from the cited sources · methodology
Five changes landed in rails/rails, four of them trimming redundant work from hot paths: exception rendering, serialization without options, and symbol-to-string key building.
Map template frames in ExceptionWrapper without walking every resolver rails/rails
ExceptionWrapper#build_backtrace used to collect built templates from every view resolver on each exception, and FileSystemResolver#built_templates copies its entire template cache to do it; template frames are now mapped without walking every resolver, which also covers templates from custom resolvers whose identifier has no extension and errors raised from inside a template.
Build serialization keys from Symbol options with Symbol#name rails/rails
The names passed to only:, except:, methods: and include: are usually Symbols, and serializable_hash ran to_s on each one per record, allocating a String that the hash then copied again because it wasn't frozen. Symbol options now build keys from Symbol#name, which returns a frozen String without allocating.
Serialize records with an inheritance column without building options rails/rails
Models whose table carries the inheritance column used to duplicate the options, build an except array and merge the column in for every record, even with no options given, sending each record down Active Model's options path. Without options the column is now dropped from the attribute names directly; with options nothing changes.
Remove remaining Markdown directives rails/rails
Xavier Noria removed the remaining Markdown directives from the codebase, landed as the merge of the fxn/markdown branch. Documentation-only; nothing here changes runtime behavior.