diff --git a/core/composer.json b/core/composer.json
index b1547df..1f1c4e0 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -130,7 +130,8 @@
       "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver"
     },
     "files": [
-      "lib/Drupal.php"
+      "lib/Drupal.php",
+      "lib/DrupalNamespaceLoader.php"
     ],
     "classmap": [
       "lib/Drupal/Component/Utility/Timer.php",
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 4747440..07865a7 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -237,6 +237,7 @@ public static function createFromRequest(Request $request, $class_loader, $envir
    *   from disk. Defaults to TRUE.
    */
   public function __construct($environment, $class_loader, $allow_dumping = TRUE) {
+    spl_autoload_register(['\DrupalNamespaceLoader', 'autoload'], FALSE, TRUE);
     $this->environment = $environment;
     $this->classLoader = $class_loader;
     $this->allowDumping = $allow_dumping;
diff --git a/core/lib/DrupalNamespaceLoader.php b/core/lib/DrupalNamespaceLoader.php
new file mode 100644
index 0000000..988ec47
--- /dev/null
+++ b/core/lib/DrupalNamespaceLoader.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * @file
+ * Contains DrupalNamespaceLoader().
+ */
+
+/**
+ * A class loader that knows where Drupal\ namespaces live on the file system.
+ */
+class DrupalNamespaceLoader {
+
+  /**
+   * Autoload Drupal namespaced classes that should exist in core/lib/.
+   *
+   * We know where all \Drupal-namespaced classes are relative to this file,
+   * so we can simply assemble the PSR-0 path without checking if the file
+   * exists.
+   *
+   * If for whatever reason this heuristic doesn't find the class, PHP will
+   * still fall back to Composer's class loader.
+   *
+   * @param string $class_name
+   *   The class name we're searching for.
+   *
+   * @see spl_autoload_register
+   */
+  public static function autoload($class_name) {
+    // Look for Drupal\ so we can quickly filter.
+    if (strpos($class_name, 'Drupal\\') !== FALSE) {
+      // Turn the namespace into an array so we can see if it's Core or
+      // Component.
+      $name_array = explode('\\', $class_name);
+      if (isset($name_array[1])) {
+        if ($name_array[1] == 'Core' || $name_array[1] == 'Component') {
+          // Reassemble the namespace pieces into a file path.
+          $file = __DIR__;
+          foreach ($name_array as $piece) {
+            $file .= "/$piece";
+          }
+          $file .= '.php';
+
+          include $file;
+          return TRUE;
+        }
+      }
+    }
+    return FALSE;
+  }
+
+}
diff --git a/core/vendor/composer/autoload_files.php b/core/vendor/composer/autoload_files.php
index 6f932aa..d91bd89 100644
--- a/core/vendor/composer/autoload_files.php
+++ b/core/vendor/composer/autoload_files.php
@@ -10,4 +10,5 @@
     $vendorDir . '/guzzlehttp/promises/src/functions.php',
     $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
     $baseDir . '/lib/Drupal.php',
+    $baseDir . '/lib/DrupalNamespaceLoader.php',
 );
