diff --git a/core/modules/system/language.api.php b/core/modules/system/language.api.php
index 9fe910a..d94c832 100644
--- a/core/modules/system/language.api.php
+++ b/core/modules/system/language.api.php
@@ -199,7 +199,7 @@ function hook_language_fallback_candidates_alter(array &$fallback_candidates) {
  * // Use the current default interface language.
  * $langcode = language(\Drupal\Core\Language\Language::TYPE_INTERFACE)->id;
  * // Instantiate the transliteration class.
- * $trans = drupal_container()->get('transliteration');
+ * $trans = Drupal::service('transliteration');
  * // Use this to transliterate some text.
  * $transformed = $trans->transliterate($string, $langcode);
  * @endcode
diff --git a/core/modules/system/lib/Drupal/system/Plugin/PluginUIBase.php b/core/modules/system/lib/Drupal/system/Plugin/PluginUIBase.php
index 077ee5b..d55ba0f 100644
--- a/core/modules/system/lib/Drupal/system/Plugin/PluginUIBase.php
+++ b/core/modules/system/lib/Drupal/system/Plugin/PluginUIBase.php
@@ -27,7 +27,7 @@ public function form($form, &$form_state) {
       $manager = new $plugin_definition['manager']();
     }
     else {
-      $manager = drupal_container()->get($plugin_definition['manager']);
+      $manager = \Drupal::service($plugin_definition['manager']);
     }
     $plugins = $manager->getDefinitions();
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php
index 783eab2..a09c5b2 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php
@@ -196,6 +196,14 @@ function testHeaderSetting() {
     $settings_two['moduleName']['thingiesOnPage']['id1'] = array();
     $this->assertIdentical($settings_one, $parsed_settings['commonTestRealWorldIdentical'], 'drupal_add_js handled real world test case 1 correctly.');
     $this->assertEqual($settings_two, $parsed_settings['commonTestRealWorldAlmostIdentical'], 'drupal_add_js handled real world test case 2 correctly.');
+
+    // Check in a rendered page.
+    $this->drupalGet('common-test/query-string');
+    $this->assertPattern('@<script>.+drupalSettings.+"currentPath":"common-test\\\/query-string"@s', 'currentPath is in the JS settings');
+    $path = array('source' => 'common-test/query-string', 'alias' => 'common-test/currentpath-check');
+    \Drupal::service('path.crud')->save($path['source'], $path['alias']);
+    $this->drupalGet('common-test/currentpath-check');
+    $this->assertPattern('@<script>.+drupalSettings.+"currentPath":"common-test\\\/query-string"@s', 'currentPath is in the JS settings for an aliased path');
   }
 
   /**
diff --git a/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php b/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php
index 201b58a..15937f9 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Path/UrlAlterFunctionalTest.php
@@ -112,7 +112,7 @@ protected function assertUrlOutboundAlter($original, $final) {
    *
    * @param $original
    *   A string with the aliased or un-normal path that is run through
-   *   drupal_container()->get('path.alias_manager')->getSystemPath().
+   *   Drupal::service('path.alias_manager')->getSystemPath().
    * @param $final
    *   A string with the expected result after url().
    * @return
@@ -120,7 +120,7 @@ protected function assertUrlOutboundAlter($original, $final) {
    */
   protected function assertUrlInboundAlter($original, $final) {
     // Test inbound altering.
-    $result = drupal_container()->get('path.alias_manager')->getSystemPath($original);
+    $result = \Drupal::service('path.alias_manager')->getSystemPath($original);
     $this->assertIdentical($result, $final, format_string('Altered inbound URL %original, expected %final, and got %result.', array('%original' => $original, '%final' => $final, '%result' => $result)));
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/TwigSettingsTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/TwigSettingsTest.php
index f50f110..214e3c7 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Theme/TwigSettingsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Theme/TwigSettingsTest.php
@@ -39,13 +39,13 @@ function testTwigAutoReloadOverride() {
     $this->rebuildContainer();
 
     // Check isAutoReload() via the Twig service container.
-    $this->assertTrue(drupal_container()->get('twig')->isAutoReload(), 'Automatic reloading of Twig templates enabled.');
+    $this->assertTrue(\Drupal::service('twig')->isAutoReload(), 'Automatic reloading of Twig templates enabled.');
 
     // Disable auto reload and check the service container again.
     $this->settingsSet('twig_auto_reload', FALSE);
     $this->rebuildContainer();
 
-    $this->assertFalse(drupal_container()->get('twig')->isAutoReload(), 'Automatic reloading of Twig templates disabled.');
+    $this->assertFalse(\Drupal::service('twig')->isAutoReload(), 'Automatic reloading of Twig templates disabled.');
   }
 
   /**
@@ -57,19 +57,19 @@ function testTwigDebugOverride() {
     $this->rebuildContainer();
 
     // Check isDebug() via the Twig service container.
-    $this->assertTrue(drupal_container()->get('twig')->isDebug(), 'Twig debug enabled.');
-    $this->assertTrue(drupal_container()->get('twig')->isAutoReload(), 'Twig automatic reloading is enabled when debug is enabled.');
+    $this->assertTrue(\Drupal::service('twig')->isDebug(), 'Twig debug enabled.');
+    $this->assertTrue(\Drupal::service('twig')->isAutoReload(), 'Twig automatic reloading is enabled when debug is enabled.');
 
     // Override auto reload when debug is enabled.
     $this->settingsSet('twig_auto_reload', FALSE);
     $this->rebuildContainer();
-    $this->assertFalse(drupal_container()->get('twig')->isAutoReload(), 'Twig automatic reloading can be disabled when debug is enabled.');
+    $this->assertFalse(\Drupal::service('twig')->isAutoReload(), 'Twig automatic reloading can be disabled when debug is enabled.');
 
     // Disable debug and check the service container again.
     $this->settingsSet('twig_debug', FALSE);
     $this->rebuildContainer();
 
-    $this->assertFalse(drupal_container()->get('twig')->isDebug(), 'Twig debug disabled.');
+    $this->assertFalse(\Drupal::service('twig')->isDebug(), 'Twig debug disabled.');
   }
 
   /**
@@ -94,7 +94,7 @@ function testTwigCacheOverride() {
     // Get the template filename and the cache filename for
     // theme_test.template_test.html.twig.
     $template_filename = $templates['theme_test_template_test']['path'] . '/' . $templates['theme_test_template_test']['template'] . $extension;
-    $cache_filename = drupal_container()->get('twig')->getCacheFilename($template_filename);
+    $cache_filename = \Drupal::service('twig')->getCacheFilename($template_filename);
 
     // Navigate to the page and make sure the template gets cached.
     $this->drupalGet('theme-test/template-test');
@@ -105,7 +105,7 @@ function testTwigCacheOverride() {
     $this->rebuildContainer();
 
     // This should return false after rebuilding the service container.
-    $new_cache_filename = drupal_container()->get('twig')->getCacheFilename($template_filename);
+    $new_cache_filename = \Drupal::service('twig')->getCacheFilename($template_filename);
     $this->assertFalse($new_cache_filename, 'Twig environment does not return cache filename after caching is disabled.');
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php b/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php
index 2761d62..c5f376a 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Update/UpdateScriptTest.php
@@ -63,8 +63,8 @@ function testUpdateAccess() {
     // Access the update page as user 1.
     $user1 = user_load(1);
     $user1->pass_raw = user_password();
-    $user1->pass = drupal_container()->get('password')->hash(trim($user1->pass_raw));
-    db_query("UPDATE {users} SET pass = :pass WHERE uid = :uid", array(':pass' => $user1->pass, ':uid' => $user1->id()));
+    $user1->pass = \Drupal::service('password')->hash(trim($user1->pass_raw));
+    db_query("UPDATE {users} SET pass = :pass WHERE uid = :uid", array(':pass' => $user1->pass, ':uid' => $user1->uid));
     $this->drupalLogin($user1);
     $this->drupalGet($this->update_url, array('external' => TRUE));
     $this->assertResponse(200);
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 6c170da..73ce123 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -1938,6 +1938,21 @@ function system_update_8046() {
   if ($front_page == 'node') {
     // This imports the node frontpage view.
     update_install_default_config('module', 'views.view.frontpage', 'node');
+    $config_to_import['views.view.frontpage'] = 'node';
+  }
+  foreach ($config_to_import as $config_name => $module) {
+    $module_config_path = drupal_get_path('module', $module) . '/config';
+    $module_filestorage = new FileStorage($module_config_path);
+    $config_storage = Drupal::service('config.storage');
+    // If this file already exists, something in the upgrade path went
+    // completely wrong and we want to know.
+    if ($config_storage->exists($config_name)) {
+      throw new ConfigException(format_string('Default configuration file @name of @module module unexpectedly exists already before the module was installed.', array(
+        '@module' => $module,
+        '@name' => $config_name,
+      )));
+    }
+    $config_storage->write($config_name, $module_filestorage->read($config_name));
   }
 }
 
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 5d015ce..1c99f43 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -966,7 +966,7 @@ function system_menu() {
     );
   }
 
-  foreach (drupal_container()->get('plugin.manager.system.plugin_ui')->getDefinitions() as $plugin_id => $plugin) {
+  foreach (Drupal::service('plugin.manager.system.plugin_ui')->getDefinitions() as $plugin_id => $plugin) {
     if ($plugin['menu'] === TRUE) {
       $items[$plugin['path'] . '/' . $plugin_id . '/' . $plugin['suffix']] = array(
         'title' => $plugin['title'],
@@ -1012,7 +1012,7 @@ function system_menu() {
  *   documentation. Also "proxies" is a weird word to use.
  */
 function system_plugin_ui_form($form, &$form_state, $plugin, $facet = NULL) {
-  $plugin_ui = drupal_container()->get('plugin.manager.system.plugin_ui')->createInstance($plugin);
+  $plugin_ui = Drupal::service('plugin.manager.system.plugin_ui')->createInstance($plugin);
   $form = $plugin_ui->form($form, $form_state, $facet);
   $form['#validate'][] = array($plugin_ui, 'formValidate');
   $form['#submit'][] = array($plugin_ui, 'formSubmit');
@@ -1020,13 +1020,44 @@ function system_plugin_ui_form($form, &$form_state, $plugin, $facet = NULL) {
 }
 
 /**
+ * Page callback: Autocompletes any plugin system tied to a plugin UI plugin.
+ *
+ * The passed plugin_id indicates the specific plugin_ui plugin that is in use
+ * here. The documentation within the annotation of that plugin will contain a
+ * manager for the plugins that need to be autocompleted allowing this function
+ * to autocomplete plugins for any plugin type.
+ *
+ * @param $plugin_id
+ *   The plugin id for the calling plugin.
+ *
+ * @return object JsonResponse
+ */
+function system_plugin_autocomplete($plugin_id) {
+  $string_typed = Drupal::request()->query->get('q');
+  $string_typed = drupal_explode_tags($string_typed);
+  $string = drupal_strtolower(array_pop($string_typed));
+  $matches = array();
+  if ($string) {
+    $plugin_ui = Drupal::service('plugin.manager.system.plugin_ui')->getDefinition($plugin_id);
+    $manager = Drupal::service($plugin_ui['manager']);
+    $titles = array();
+    foreach($manager->getDefinitions() as $plugin_id => $plugin) {
+      $titles[$plugin_id] = $plugin[$plugin_ui['title_attribute']];
+    }
+    $matches = preg_grep("/\b". $string . "/i", $titles);
+  }
+
+  return new JsonResponse($matches);
+}
+
+/**
  * Checks access for a given plugin using the plugin's access() method.
  *
  * @todo This needs more explanation, some @see, and parameter documentation.
  * @todo What the heck kind of parameter name is "facet"?
  */
 function system_plugin_ui_access($plugin, $facet = NULL) {
-  $plugin_ui = drupal_container()->get('plugin.manager.system.plugin_ui')->createInstance($plugin);
+  $plugin_ui = Drupal::service('plugin.manager.system.plugin_ui')->createInstance($plugin);
   return $plugin_ui->access($facet);
 }
 
@@ -1035,7 +1066,7 @@ function system_plugin_ui_access($plugin, $facet = NULL) {
  */
 function system_forms() {
   $forms = array();
-  foreach (drupal_container()->get('plugin.manager.system.plugin_ui')->getDefinitions() as $plugin_id => $plugin) {
+  foreach (Drupal::service('plugin.manager.system.plugin_ui')->getDefinitions() as $plugin_id => $plugin) {
     if (empty($forms[$plugin['id']])) {
       $forms[$plugin['id']]['callback'] = 'system_plugin_ui_form';
     }
@@ -2332,7 +2363,7 @@ function system_page_build(&$page) {
  */
 function system_custom_theme() {
   if (drupal_container()->isScopeActive('request')) {
-    $request = drupal_container()->get('request');
+    $request = Drupal::request();
     $path = $request->attributes->get('system_path');
     if (user_access('view the administration theme') && path_is_admin($path)) {
       return config('system.theme')->get('admin');
diff --git a/core/modules/system/tests/modules/design_test/design_test.module b/core/modules/system/tests/modules/design_test/design_test.module
index f69f961..35b8a73 100644
--- a/core/modules/system/tests/modules/design_test/design_test.module
+++ b/core/modules/system/tests/modules/design_test/design_test.module
@@ -95,7 +95,7 @@ function design_test_menu_local_tasks_alter(&$data, $router_item, $root_path) {
   if ($router_item['number_parts'] > 2 && strpos($root_path, 'design_test/') === 0) {
     $actions = &$data['actions']['output'];
     // Determine the currently selected theme, if any.
-    $selected_theme = drupal_container()->get('request')->query->get('theme');
+    $selected_theme = Drupal::request()->query->get('theme');
     $default_theme = config('system.theme')->get('default');
 
     // Expand all enabled themes into action links.
@@ -129,5 +129,5 @@ function design_test_menu_local_tasks_alter(&$data, $router_item, $root_path) {
  * query parameter. The returned value is validated by the menu system already.
  */
 function design_test_menu_theme_callback() {
-  return drupal_container()->get('request')->query->get('theme');
+  return Drupal::request()->query->get('theme');
 }
