diff --git a/sdk/lib/_http/http.dart b/sdk/lib/_http/http.dart
index b69a600..1021892 100644
--- a/sdk/lib/_http/http.dart
+++ b/sdk/lib/_http/http.dart
@@ -16,6 +16,7 @@
         UnmodifiableMapView;
 import 'dart:convert';
 import 'dart:developer' hide log;
+import 'dart:_internal' show Since;
 import 'dart:math';
 import 'dart:io';
 import 'dart:typed_data';
@@ -36,6 +37,7 @@
 abstract class HttpStatus {
   static const int continue_ = 100;
   static const int switchingProtocols = 101;
+  @Since("2.1")
   static const int processing = 102;
   static const int ok = 200;
   static const int created = 201;
@@ -44,8 +46,11 @@
   static const int noContent = 204;
   static const int resetContent = 205;
   static const int partialContent = 206;
+  @Since("2.1")
   static const int multiStatus = 207;
+  @Since("2.1")
   static const int alreadyReported = 208;
+  @Since("2.1")
   static const int imUsed = 226;
   static const int multipleChoices = 300;
   static const int movedPermanently = 301;
@@ -55,6 +60,7 @@
   static const int notModified = 304;
   static const int useProxy = 305;
   static const int temporaryRedirect = 307;
+  @Since("2.1")
   static const int permanentRedirect = 308;
   static const int badRequest = 400;
   static const int unauthorized = 401;
@@ -74,16 +80,26 @@
   static const int unsupportedMediaType = 415;
   static const int requestedRangeNotSatisfiable = 416;
   static const int expectationFailed = 417;
+  @Since("2.1")
   static const int misdirectedRequest = 421;
+  @Since("2.1")
   static const int unprocessableEntity = 422;
+  @Since("2.1")
   static const int locked = 423;
+  @Since("2.1")
   static const int failedDependency = 424;
   static const int upgradeRequired = 426;
+  @Since("2.1")
   static const int preconditionRequired = 428;
+  @Since("2.1")
   static const int tooManyRequests = 429;
+  @Since("2.1")
   static const int requestHeaderFieldsTooLarge = 431;
+  @Since("2.1")
   static const int connectionClosedWithoutResponse = 444;
+  @Since("2.1")
   static const int unavailableForLegalReasons = 451;
+  @Since("2.1")
   static const int clientClosedRequest = 499;
   static const int internalServerError = 500;
   static const int notImplemented = 501;
@@ -91,10 +107,15 @@
   static const int serviceUnavailable = 503;
   static const int gatewayTimeout = 504;
   static const int httpVersionNotSupported = 505;
+  @Since("2.1")
   static const int variantAlsoNegotiates = 506;
+  @Since("2.1")
   static const int insufficientStorage = 507;
+  @Since("2.1")
   static const int loopDetected = 508;
+  @Since("2.1")
   static const int notExtended = 510;
+  @Since("2.1")
   static const int networkAuthenticationRequired = 511;
   // Client generated status code.
   static const int networkConnectTimeoutError = 599;
diff --git a/sdk/lib/async/async.dart b/sdk/lib/async/async.dart
index b5354bb..b3a5dbd 100644
--- a/sdk/lib/async/async.dart
+++ b/sdk/lib/async/async.dart
@@ -99,9 +99,10 @@
         CastStream,
         CastStreamTransformer,
         EmptyIterator,
+        IterableElementError,
         printToZone,
         printToConsole,
-        IterableElementError;
+        Since;
 
 part 'async_error.dart';
 part 'broadcast_stream_controller.dart';
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart
index f77ca2c..cb021aa 100644
--- a/sdk/lib/async/stream.dart
+++ b/sdk/lib/async/stream.dart
@@ -2016,6 +2016,7 @@
    *     (stream) => stream.transform(utf8.decoder).transform(LineSplitter()));
    * ```
    */
+  @Since("2.1")
   factory StreamTransformer.fromBind(Stream<T> Function(Stream<S>) bind) =
       _StreamBindTransformer<S, T>;
 
diff --git a/sdk/lib/collection/hash_map.dart b/sdk/lib/collection/hash_map.dart
index dcdb4ee..728ff9e6 100644
--- a/sdk/lib/collection/hash_map.dart
+++ b/sdk/lib/collection/hash_map.dart
@@ -163,6 +163,7 @@
    * If multiple [entries] have the same key,
    * later occurrences overwrite the earlier ones.
    */
+  @Since("2.1")
   factory HashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
       HashMap<K, V>()..addEntries(entries);
 }
diff --git a/sdk/lib/collection/linked_hash_map.dart b/sdk/lib/collection/linked_hash_map.dart
index 770c6e1..91f95ad 100644
--- a/sdk/lib/collection/linked_hash_map.dart
+++ b/sdk/lib/collection/linked_hash_map.dart
@@ -151,6 +151,7 @@
    * If multiple [entries] have the same key,
    * later occurrences overwrite the earlier ones.
    */
+  @Since("2.1")
   factory LinkedHashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
       <K, V>{}..addEntries(entries);
 }
diff --git a/sdk/lib/core/bool.dart b/sdk/lib/core/bool.dart
index ddec7cc..e3014bb 100644
--- a/sdk/lib/core/bool.dart
+++ b/sdk/lib/core/bool.dart
@@ -55,16 +55,19 @@
   ///
   /// Returns `true` if both this and [other] are `true`, and `false` otherwise.
   //TODO(lrn): Remove "as bool" in Dart 2.
+  @Since("2.1")
   bool operator &(bool other) => (other as bool) && this;
 
   /// The logical disjunction ("inclusive or") of this and [other].
   ///
   /// Returns `true` if either this or [other] is `true`, and `false` otherwise.
+  @Since("2.1")
   bool operator |(bool other) => (other as bool) || this;
 
   /// The logical exclusive disjunction ("exclusive or") of this and [other].
   ///
   /// Returns whether this and [other] are neither both `true` nor both `false`.
+  @Since("2.1")
   bool operator ^(bool other) => !(other as bool) == this;
 
   /**
diff --git a/sdk/lib/core/core.dart b/sdk/lib/core/core.dart
index f58a6a3..9ab8ed4 100644
--- a/sdk/lib/core/core.dart
+++ b/sdk/lib/core/core.dart
@@ -169,6 +169,7 @@
 import "dart:math" show Random; // Used by List.shuffle.
 import "dart:typed_data" show Uint8List, Uint16List, Endian;
 
+@Since("2.1")
 export "dart:async" show Future, Stream;
 
 part "annotations.dart";
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index b772646..1bd829d 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -176,6 +176,7 @@
   /**
    * Throws if [argument] is `null`.
    */
+  @Since("2.1")
   static void checkNotNull(Object argument, [String name]) {
     if (argument == null) throw ArgumentError.notNull(name);
   }
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart
index 7ffc482..f5ae6a1 100644
--- a/sdk/lib/internal/internal.dart
+++ b/sdk/lib/internal/internal.dart
@@ -164,3 +164,41 @@
 /// See this issue for more context:
 /// https://github.com/dart-lang/sdk/issues/31371
 external Object extractTypeArguments<T>(T instance, Function extract);
+
+/// Annotation class marking the version where SDK API was added.
+///
+/// A `Since` annotation can be applied to a library declaration,
+/// any public declaration in a library, or in a class, or to
+/// an optional parameter.
+///
+/// It signifies that the export, member or parameter was *added* in
+/// that version.
+///
+/// When applied to a library declaration, it also a applies to
+/// all members declared or exported by that library.
+/// If applied to a class, it also applies to all members and constructors
+/// of that class.
+/// If applied to a class method, or parameter of such,
+/// any method implementing that interface method is also annotated.
+/// I multiple `Since` annotations apply to the same declaration or
+/// parameter, the latest version takes precendence.
+///
+/// Any use of a marked API may trigger a warning if the using code
+/// does not require an SDK version guaranteeing that the API is available,
+/// unless the API feature is also provided by something else.
+/// It is only a problem if an annotated feature is used, and the annotated
+/// API is the *only* thing providing the functionality.
+/// For example, using `Future` exported by `dart:core` is not a problem
+/// if the same library also imports `dart:async`, and using an optional
+/// parameter on an interface is not a problem if the same type also
+/// implements another interface providing the same parameter.
+///
+/// The version must be a semantic version (like `1.4.2` or `0.9.4-rec.4`),
+/// or the first two numbers of a semantic version (like `1.0` or `2.2`),
+/// representing a stable release, and equivalent to the semantic version
+/// you get by appending a `.0`.
+@Since("2.2")
+class Since {
+  final String version;
+  const Since(this.version);
+}
