Index: wp-includes/link-template.php
===================================================================
--- wp-includes/link-template.php	(revision 13621)
+++ wp-includes/link-template.php	(working copy)
@@ -2050,4 +2050,47 @@
 	add_action('wp_head', '_wp_ajaxurl', 1);
 }
 
+/**
+ * Return a shortlink for a post, page, attachment, or blog.
+ *
+ * Shortlinks are not supported by default. A plugin is required to get shortlink support.
+ * This function exists to provide a shortlink tag that all themes and plugins can target.  A plugin must hook in to
+ * provide the actual shortlinks.
+ *
+ * @param int $id A post or blog id.  Default is 0, which means the current post or blog.
+ * @param string $contex Whether the id is a 'blog' id, 'post' id, or 'media' id.  If 'post', the post_type of the post is consulted.  If 'query', the current query is consulted to determin the id and context. Default is 'post'.
+ * @param bool $allow_slugs Whether to allow post slugs in the shortlink. It is up to the plugin how and whether to honor this.
+ * @return string A shortlink or an empty string if no shortlink exists for the requested resource or if shortlinks are not enabled.
+ * @since 3.0.0.
+ */
+function wp_get_shortlink($id = 0, $context = 'post', $allow_slugs = true) {
+	// Allow plugins to short-circuit this function.
+	$shortlink = apply_filters('pre_get_shortlink', false, $id, $context, $allow_slugs);
+	if ( false !== $shortlink )
+		return $shortlink;
+
+	return apply_filters('get_shortlink', '', $id, $context, $allow_slugs);
+}
+
+function wp_shortlink_wp_head() {
+	$shortlink = get_shortlink(0, 'query');
+
+	if ( empty($shortlink) )
+		return;
+
+	echo '<link rel="shortlink" href="' . $shortlink . '" />';
+}
+
+function wp_shortlink_header() {
+    if ( headers_sent() )
+		return;
+
+	$shortlink = get_shortlink(0, 'query');
+
+	if ( empty($shortlink) )
+		return;
+
+	header('Link: <' . $shortlink . '>; rel=shortlink');
+}
+
 ?>
Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 13621)
+++ wp-includes/default-filters.php	(working copy)
@@ -191,6 +191,8 @@
 add_action( 'wp_head',             'wp_generator'                         );
 add_action( 'wp_head',             'rel_canonical'                        );
 add_action( 'wp_footer',           'wp_print_footer_scripts'              );
+add_action( 'wp_head',             'wp_shortlink_wp_head'                 );
+add_action( 'wp',                  'wp_shortlink_header'                  );
 
 // Feed Generator Tags
 foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) {
