diff --git a/core/includes/common.inc b/core/includes/common.inc
index 5a46d80..fb51ccc 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -145,61 +145,6 @@
  */
 const LOCALE_PLURAL_DELIMITER = "\03";
 
-/**
- * Adds output to the HEAD tag of the HTML page.
- *
- * This function can be called as long as the headers aren't sent. Pass no
- * arguments (or NULL for both) to retrieve the currently stored elements.
- *
- * @param $data
- *   A renderable array. If the '#type' key is not set then 'html_tag' will be
- *   added as the default '#type'.
- * @param $key
- *   A unique string key to allow implementations of hook_html_head_alter() to
- *   identify the element in $data. Required if $data is not NULL.
- *
- * @return
- *   An array of all stored HEAD elements.
- *
- * @see \Drupal\Core\Render\Element\HtmlTag::preRenderHtmlTag()
- *
- * @deprecated in Drupal 8.0.x, will be removed before Drupal 8.0.0
- *   Use #attached on render arrays.
- */
-function _drupal_add_html_head($data = NULL, $key = NULL) {
-  $stored_head = &drupal_static(__FUNCTION__, array());
-
-  if (isset($data) && isset($key)) {
-    if (!isset($data['#type'])) {
-      $data['#type'] = 'html_tag';
-    }
-    $stored_head[$key] = $data;
-  }
-  return $stored_head;
-}
-
-/**
- * Retrieves output to be displayed in the HEAD tag of the HTML page.
- *
- * @param bool $render
- *   If TRUE render the HEAD elements, otherwise return just the elements.
- *
- * @return string|array
- *   Return the rendered HTML head or the elements itself.
- *
- * @deprecated in Drupal 8.0.x, will be removed before Drupal 8.0.0
- *   Use #attached on render arrays.
- */
-function drupal_get_html_head($render = TRUE) {
-  $elements = _drupal_add_html_head();
-  \Drupal::moduleHandler()->alter('html_head', $elements);
-  if ($render) {
-    return drupal_render($elements);
-  }
-  else {
-    return $elements;
-  }
-}
 
 /**
  * Prepares a 'destination' URL query parameter for use with url().
@@ -545,39 +490,6 @@ function base_path() {
 }
 
 /**
- * Adds a LINK tag with a distinct 'rel' attribute to the page's HEAD.
- *
- * This function can be called as long the HTML header hasn't been sent, which
- * on normal pages is up through the preprocess step of _theme('html'). Adding
- * a link will overwrite a prior link with the exact same 'rel' and 'href'
- * attributes.
- *
- * @param $attributes
- *   Associative array of element attributes including 'href' and 'rel'.
- * @param $header
- *   Optional flag to determine if a HTTP 'Link:' header should be sent.
- *
- * @deprecated in Drupal 8.0.x, will be removed before Drupal 8.0.0
- *   Use #attached on render arrays.
- */
-function _drupal_add_html_head_link($attributes, $header = FALSE) {
-  $element = array(
-    '#tag' => 'link',
-    '#attributes' => $attributes,
-  );
-  $href = $attributes['href'];
-
-  if ($header) {
-    // Also add a HTTP header "Link:".
-    $href = '<' . SafeMarkup::checkPlain($attributes['href']) . '>;';
-    unset($attributes['href']);
-    $element['#attached']['http_header'][] = array('Link',  $href . drupal_http_header_attributes($attributes), TRUE);
-  }
-
-  _drupal_add_html_head($element, 'html_head_link:' . $attributes['rel'] . ':' . $href);
-}
-
-/**
  * Deletes old cached CSS files.
  *
  * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
@@ -708,9 +620,6 @@ function drupal_process_attached(array $elements) {
     foreach ($elements['#attached'][$callback] as $args) {
       // Limit the amount allowed entries.
       switch ($callback) {
-        case 'html_head':
-          call_user_func_array('_drupal_add_html_head', $args);
-          break;
         case 'feed':
           $args = [[
             'href' => $args[0],
@@ -718,13 +627,6 @@ function drupal_process_attached(array $elements) {
             'title' => $args[1],
             'type' => 'application/rss+xml',
           ]];
-          call_user_func_array('_drupal_add_html_head_link', $args);
-          break;
-        case 'html_head_link':
-          call_user_func_array('_drupal_add_html_head_link', $args);
-          break;
-        case 'http_header':
-          call_user_func_array('_drupal_add_http_header', $args);
           break;
         default:
           throw new \LogicException(sprintf('You are not allowed to use %s in #attached', $callback));
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 62bbb58..3ed85b2 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1329,7 +1329,6 @@ function template_preprocess_html(&$variables) {
 
   // Handle all non-asset attachments.
   drupal_process_attached($all_attached);
-  $variables['head'] = drupal_get_html_head(FALSE);
 }
 
 /**
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index c034ed6..a4ebbcd 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -478,7 +478,6 @@ function template_preprocess_book_export_html(&$variables) {
   $variables['base_url'] = $base_url;
   $variables['language'] = $language_interface;
   $variables['language_rtl'] = ($language_interface->getDirection() == LanguageInterface::DIRECTION_RTL);
-  $variables['head'] = drupal_get_html_head();
 
   // HTML element attributes.
   $attributes = array();
diff --git a/core/modules/system/src/Tests/Common/AddFeedTest.php b/core/modules/system/src/Tests/Common/AddFeedTest.php
index 5da8ffb..e1dbbf4 100644
--- a/core/modules/system/src/Tests/Common/AddFeedTest.php
+++ b/core/modules/system/src/Tests/Common/AddFeedTest.php
@@ -63,7 +63,6 @@ function testBasicFeedAddNoTitle() {
 
     drupal_process_attached($build);
 
-    $this->setRawContent(drupal_get_html_head());
     foreach ($urls as $description => $feed_info) {
       $this->assertPattern($this->urlToRSSLinkPattern($feed_info['url'], $feed_info['title']), format_string('Found correct feed header for %description', array('%description' => $description)));
     }
