Allow habtm class_name option to be consistent with other associations
Speed up integer casting from DB

We don't have the check the range when the value is coming from the DB,
so override type_cast_from_database to short-circuit the extra work.
The difference is huge but the absolute gain is quite small. That being
said this is a hotspot and it showed up on the radar when benchmarking
discourse.
pull the preloader allocation in to a factory method
Improve the performance of reading attributes

We added a comparison to "id", and call to `self.class.primary_key` a
*lot*. We also have performance hits from `&block` all over the place.
We skip the check in a new method, in order to avoid breaking the
behavior of `read_attribute`
Duplicated Hash key :prompt
Support symbol foreign key to delete
Add space in :start_year description for date_select
Merge pull request #17672 from radar/date-select-space

Add space in :start_year description for date_select
Merge pull request #17662 from dtaniwaki/support-symbol-foreign-key-column-to-delete

Support symbol foreign key to delete
Introduce test to demonstrate regression caused by da99a2a2
Revert "PERF: optimise type lookup to avoid invoking procs"

This reverts commit da99a2a2982d35f670ad9647463e09bfe9032b70.
That last test was incorrect... ☕
Remove bullet point to unwritten/unreferenced section
Merge pull request #17677 from StevenNunez/patch-1

Remove bullet point to unwritten/unreferenced section
Add tests for `TypeMap#fetch` and push up to `TypeMap`

It doesn't make sense for the subclass to implement this method, and not
have it on the parent. We can also DRY up the implementation of
`#lookup` to be defined in terms of fetch, which will give us a single
point of entry
Reintroduce cache with tests
Fix shell quote on the release task
Merge pull request #17575 from shikshachauhan/make-habtm-consistent

Allow class_name option in habtm to be consistent with other association...
Some valid block calls in templates caused syntax errors

Now ActionView accepts <%= foo(){ %> and <%= foo()do %> :golf:
PERF: avoid string allocations