Local tasks and actions are hardwired into templates which gives no control to users to move them around.
Also the current solution makes tabs uncacheable by render cache unless whole page could be cached. Tabs are also being generated even though they wouldn't be printed.
Introduce local tasks and actions as blocks that can be moved around and be cached with render caching after sufficient cacheable metadata has been bubbled up from the hooks providing local tasks.
Performance gain (see #264) if local tasks would be cached:
(block management page which has action links, primary tabs and secondary tabs. Tested as anonymous user. Warm caches but internal page caching turned off.)
=== 8.0.x..cached-tabs compared (55919cdb0fed9..55919d1190958):
ct : 92,936|88,242|-4,694|-5.1%
wt : 159,482|151,346|-8,136|-5.1%
mu : 18,570,072|17,711,328|-858,744|-4.6%
pmu : 19,736,144|18,835,248|-900,896|-4.6%
Remove hook_menu_local_tasks() since it's unused carry-over from 7.x and redundant to hook_menu_local_tasks_alter() (dynamic) and hook_local_tasks_alter() (discovery)
Beta phase evaluation
|Issue priority||Major because it significantly improves the ability for site builders to manage page elements from the UI. Not critical because nothing is broken.|
|Unfrozen changes||Unfrozen because it mostly affects the page template, and templates are not frozen.|
|Prioritized changes||The main goal of this issue is to improve site building and theming experience. It is also a continuation of work that was done pre-beta to convert all page template variables to blocks. This issue is also performance improvement which is prioritized change.|
|Disruption||There will be possible disruption to sites with customized versions of the templates affected, or depending on the variables that were removed/moved.|
FAILED: [[SimpleTest]]: [PHP 5.5 MySQL] Unable to apply patch 507488-459-convert-local-task-actions.patch. Unable to apply patch. See the log in the details link for more information.
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 103,585 pass(es).
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 101,511 pass(es).