about summary refs log tree commit diff
path: root/src/libstd/os
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-06-12 21:31:37 +0000
committerbors <bors@rust-lang.org>2015-06-12 21:31:37 +0000
commit50ab23ddbd39d797dde46288af0ae9d29784e7a3 (patch)
treef716ad4c0e3fb8e8dc90b4b807cf7f81a812cfaf /src/libstd/os
parent85b5338e3444de1c46ac8cf9bf20ae4b31b9f905 (diff)
parentec68c4a8351e65ec6e2d349aa103a457494ad814 (diff)
downloadrust-50ab23ddbd39d797dde46288af0ae9d29784e7a3.tar.gz
rust-50ab23ddbd39d797dde46288af0ae9d29784e7a3.zip
Auto merge of #25844 - alexcrichton:stabilize-fs-features, r=aturon
This commit stabilizes the following APIs, slating them all to be cherry-picked
into the 1.1 release.

* fs::FileType (and transitively the derived trait implementations)
* fs::Metadata::file_type
* fs::FileType::is_dir
* fs::FileType::is_file
* fs::FileType::is_symlink
* fs::DirEntry::metadata
* fs::DirEntry::file_type
* fs::DirEntry::file_name
* fs::set_permissions
* fs::symlink_metadata
* os::raw::{self, *}
* os::{android, bitrig, linux, ...}::raw::{self, *}
* os::{android, bitrig, linux, ...}::fs::MetadataExt
* os::{android, bitrig, linux, ...}::fs::MetadataExt::as_raw_stat
* os::unix::fs::PermissionsExt
* os::unix::fs::PermissionsExt::mode
* os::unix::fs::PermissionsExt::set_mode
* os::unix::fs::PermissionsExt::from_mode
* os::unix::fs::OpenOptionsExt
* os::unix::fs::OpenOptionsExt::mode
* os::unix::fs::DirEntryExt
* os::unix::fs::DirEntryExt::ino
* os::windows::fs::MetadataExt
* os::windows::fs::MetadataExt::file_attributes
* os::windows::fs::MetadataExt::creation_time
* os::windows::fs::MetadataExt::last_access_time
* os::windows::fs::MetadataExt::last_write_time
* os::windows::fs::MetadataExt::file_size

The `os::unix::fs::Metadata` structure was also removed entirely, moving all of
its associated methods into the `os::unix::fs::MetadataExt` trait instead. The
methods are all marked as `#[stable]` still.

As some minor cleanup, some deprecated and unstable fs apis were also removed:

* File::path
* Metadata::accessed
* Metadata::modified

Features that were explicitly left unstable include:

* fs::WalkDir - the semantics of this were not considered in the recent fs
  expansion RFC.
* fs::DirBuilder - it's still not 100% clear if the naming is right here and if
  the set of functionality exposed is appropriate.
* fs::canonicalize - the implementation on Windows here is specifically in
  question as it always returns a verbatim path. Additionally the Unix
  implementation is susceptible to buffer overflows on long paths unfortunately.
* fs::PathExt - as this is just a convenience trait, it is not stabilized at
  this time.
* fs::set_file_times - this funciton is still waiting on a time abstraction.
Diffstat (limited to 'src/libstd/os')
-rw-r--r--src/libstd/os/android/mod.rs3
-rw-r--r--src/libstd/os/android/raw.rs59
-rw-r--r--src/libstd/os/bitrig/mod.rs3
-rw-r--r--src/libstd/os/bitrig/raw.rs41
-rw-r--r--src/libstd/os/dragonfly/mod.rs3
-rw-r--r--src/libstd/os/dragonfly/raw.rs43
-rw-r--r--src/libstd/os/freebsd/mod.rs3
-rw-r--r--src/libstd/os/freebsd/raw.rs34
-rw-r--r--src/libstd/os/ios/mod.rs3
-rw-r--r--src/libstd/os/ios/raw.rs41
-rw-r--r--src/libstd/os/linux/mod.rs3
-rw-r--r--src/libstd/os/linux/raw.rs135
-rw-r--r--src/libstd/os/macos/mod.rs3
-rw-r--r--src/libstd/os/macos/raw.rs41
-rw-r--r--src/libstd/os/nacl/mod.rs3
-rw-r--r--src/libstd/os/nacl/raw.rs135
-rw-r--r--src/libstd/os/openbsd/mod.rs3
-rw-r--r--src/libstd/os/openbsd/raw.rs41
-rw-r--r--src/libstd/os/raw.rs43
19 files changed, 518 insertions, 122 deletions
diff --git a/src/libstd/os/android/mod.rs b/src/libstd/os/android/mod.rs
index a94abba5d12..1947bebb947 100644
--- a/src/libstd/os/android/mod.rs
+++ b/src/libstd/os/android/mod.rs
@@ -10,10 +10,11 @@
 
 //! Android-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/android/raw.rs b/src/libstd/os/android/raw.rs
index ea80151623b..e5e89ad800a 100644
--- a/src/libstd/os/android/raw.rs
+++ b/src/libstd/os/android/raw.rs
@@ -10,6 +10,8 @@
 
 //! Android-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 #[doc(inline)]
 pub use self::arch::{dev_t, mode_t, blkcnt_t, blksize_t, ino_t, nlink_t, off_t, stat, time_t};
 
@@ -18,36 +20,64 @@ mod arch {
     use os::raw::{c_uint, c_uchar, c_ulonglong, c_longlong, c_ulong};
     use os::unix::raw::{uid_t, gid_t};
 
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type dev_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type mode_t = u16;
 
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type blkcnt_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type blksize_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type ino_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type nlink_t = u16;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type off_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type time_t = i32;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: c_ulonglong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad0: [c_uchar; 4],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: c_uint,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: c_uint,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: c_ulonglong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad3: [c_uchar; 4],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: c_longlong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: c_ulonglong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: c_ulonglong,
     }
 
@@ -59,37 +89,64 @@ mod arch {
     use os::raw::{c_uchar, c_ulong};
     use os::unix::raw::{uid_t, gid_t};
 
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type dev_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type mode_t = u32;
 
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type blkcnt_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type blksize_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type ino_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type off_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub type time_t = i64;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad0: [c_uchar; 4],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad3: [c_uchar; 4],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
     }
-
 }
diff --git a/src/libstd/os/bitrig/mod.rs b/src/libstd/os/bitrig/mod.rs
index 1fe5fdd4e14..2e9f1d33951 100644
--- a/src/libstd/os/bitrig/mod.rs
+++ b/src/libstd/os/bitrig/mod.rs
@@ -10,10 +10,11 @@
 
 //! Bitrig-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/bitrig/raw.rs b/src/libstd/os/bitrig/raw.rs
index aebc21aa718..2427a4e4092 100644
--- a/src/libstd/os/bitrig/raw.rs
+++ b/src/libstd/os/bitrig/raw.rs
@@ -10,39 +10,62 @@
 
 //! Bitrig-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 use os::raw::c_long;
 use os::unix::raw::{uid_t, gid_t};
 
-pub type blkcnt_t = i64;
-pub type blksize_t = u32;
-pub type dev_t = i32;
-pub type fflags_t = u32; // type not declared, but struct stat have u_int32_t
-pub type ino_t = u64;
-pub type mode_t = u32;
-pub type nlink_t = u32;
-pub type off_t = i64;
-pub type time_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = i32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type fflags_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
 #[repr(C)]
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub struct stat {
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mode: mode_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_dev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ino: ino_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_nlink: nlink_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_uid: uid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gid: gid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_rdev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_size: off_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blocks: blkcnt_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blksize: blksize_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_flags: fflags_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gen: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime_nsec: c_long,
 }
diff --git a/src/libstd/os/dragonfly/mod.rs b/src/libstd/os/dragonfly/mod.rs
index d5c7c581733..79ccb8a0458 100644
--- a/src/libstd/os/dragonfly/mod.rs
+++ b/src/libstd/os/dragonfly/mod.rs
@@ -10,10 +10,11 @@
 
 //! Dragonfly-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/dragonfly/raw.rs b/src/libstd/os/dragonfly/raw.rs
index 86522cc1e79..41e8f9b0567 100644
--- a/src/libstd/os/dragonfly/raw.rs
+++ b/src/libstd/os/dragonfly/raw.rs
@@ -10,41 +10,66 @@
 
 //! Dragonfly-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 use os::raw::c_long;
 use os::unix::raw::{uid_t, gid_t};
 
-pub type blkcnt_t = i64;
-pub type blksize_t = u32;
-pub type dev_t = u32;
-pub type fflags_t = u32;
-pub type ino_t = u64;
-pub type mode_t = u16;
-pub type nlink_t = u16;
-pub type off_t = i64;
-pub type time_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type fflags_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
 #[repr(C)]
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub struct stat {
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ino: ino_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_nlink: nlink_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_dev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mode: mode_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_padding1: u16,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_uid: uid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gid: gid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_rdev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_size: off_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blocks: blkcnt_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blksize: blksize_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_flags: fflags_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gen: uint32_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_lspare: int32_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_qspare1: int64_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_qspare2: int64_t,
 }
diff --git a/src/libstd/os/freebsd/mod.rs b/src/libstd/os/freebsd/mod.rs
index 28c9f8321f8..947826b8160 100644
--- a/src/libstd/os/freebsd/mod.rs
+++ b/src/libstd/os/freebsd/mod.rs
@@ -10,10 +10,11 @@
 
 //! FreeBSD-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/freebsd/raw.rs b/src/libstd/os/freebsd/raw.rs
index a3b95738a1a..38e31a3c5ac 100644
--- a/src/libstd/os/freebsd/raw.rs
+++ b/src/libstd/os/freebsd/raw.rs
@@ -10,41 +10,75 @@
 
 //! FreeBSD-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 use os::raw::c_long;
 use os::unix::raw::{uid_t, gid_t};
 
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type blkcnt_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type blksize_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type dev_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type fflags_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type ino_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type mode_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type nlink_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type off_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub type time_t = i64;
 
 #[repr(C)]
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub struct stat {
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_dev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ino: ino_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mode: mode_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_nlink: nlink_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_uid: uid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gid: gid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_rdev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_size: off_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blocks: blkcnt_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blksize: blksize_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_flags: fflags_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gen: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_lspare: i32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub __unused: [u8; 2],
 }
diff --git a/src/libstd/os/ios/mod.rs b/src/libstd/os/ios/mod.rs
index dd2878c6e38..e2fe2e8a9ba 100644
--- a/src/libstd/os/ios/mod.rs
+++ b/src/libstd/os/ios/mod.rs
@@ -10,10 +10,11 @@
 
 //! iOS-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/ios/raw.rs b/src/libstd/os/ios/raw.rs
index a66e01b2c39..a9803f50b7b 100644
--- a/src/libstd/os/ios/raw.rs
+++ b/src/libstd/os/ios/raw.rs
@@ -10,40 +10,65 @@
 
 //! iOS-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 use os::raw::c_long;
 use os::unix::raw::{uid_t, gid_t};
 
-pub type blkcnt_t = i64;
-pub type blksize_t = i32;
-pub type dev_t = i32;
-pub type ino_t = u64;
-pub type mode_t = u16;
-pub type nlink_t = u16;
-pub type off_t = i64;
-pub type time_t = c_long;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = i32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = c_long;
 
 #[repr(C)]
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub struct stat {
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_dev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mode: mode_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_nlink: nlink_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ino: ino_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_uid: uid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gid: gid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_rdev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_size: off_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blocks: blkcnt_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blksize: blksize_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_flags: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gen: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_lspare: i32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_qspare: [i64; 2],
 }
diff --git a/src/libstd/os/linux/mod.rs b/src/libstd/os/linux/mod.rs
index d2f9bcc3bcf..146a74a4550 100644
--- a/src/libstd/os/linux/mod.rs
+++ b/src/libstd/os/linux/mod.rs
@@ -10,10 +10,11 @@
 
 //! Linux-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/linux/raw.rs b/src/libstd/os/linux/raw.rs
index 9589f4cf099..3275ce07b48 100644
--- a/src/libstd/os/linux/raw.rs
+++ b/src/libstd/os/linux/raw.rs
@@ -10,8 +10,10 @@
 
 //! Linux-specific raw type definitions
 
-pub type dev_t = u64;
-pub type mode_t = u32;
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u32;
 
 #[doc(inline)]
 pub use self::arch::{off_t, ino_t, nlink_t, blksize_t, blkcnt_t, stat, time_t};
@@ -25,34 +27,55 @@ mod arch {
     use os::raw::{c_long, c_short};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i32;
-    pub type blksize_t = i32;
-    pub type ino_t = u32;
-    pub type nlink_t = u32;
-    pub type off_t = i32;
-    pub type time_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i32;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad1: c_short,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad2: c_short,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused4: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused5: c_long,
     }
 }
@@ -64,34 +87,55 @@ mod arch {
     use os::raw::{c_long, c_ulong};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i32;
-    pub type blksize_t = i32;
-    pub type ino_t = u32;
-    pub type nlink_t = u32;
-    pub type off_t = i32;
-    pub type time_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i32;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad1: [c_long; 3],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad2: [c_long; 2],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad3: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad5: [c_long; 14],
     }
 }
@@ -102,33 +146,53 @@ mod arch {
     use os::raw::{c_long, c_int};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i64;
-    pub type blksize_t = i32;
-    pub type ino_t = u64;
-    pub type nlink_t = u32;
-    pub type off_t = i64;
-    pub type time_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad1: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad2: c_int,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused: [c_int; 2],
     }
 }
@@ -139,32 +203,51 @@ mod arch {
     use os::raw::{c_long, c_int};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i64;
-    pub type blksize_t = i64;
-    pub type ino_t = u64;
-    pub type nlink_t = u64;
-    pub type off_t = i64;
-    pub type time_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad0: c_int,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused: [c_long; 3],
     }
 }
diff --git a/src/libstd/os/macos/mod.rs b/src/libstd/os/macos/mod.rs
index 6c96909f382..db3a0e0e64a 100644
--- a/src/libstd/os/macos/mod.rs
+++ b/src/libstd/os/macos/mod.rs
@@ -10,10 +10,11 @@
 
 //! MacOS-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/macos/raw.rs b/src/libstd/os/macos/raw.rs
index 03fcb768c11..dbc1b8c726b 100644
--- a/src/libstd/os/macos/raw.rs
+++ b/src/libstd/os/macos/raw.rs
@@ -10,40 +10,65 @@
 
 //! MacOS-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 use os::raw::c_long;
 use os::unix::raw::{uid_t, gid_t};
 
-pub type blkcnt_t = i64;
-pub type blksize_t = i32;
-pub type dev_t = i32;
-pub type ino_t = u64;
-pub type mode_t = u16;
-pub type nlink_t = u16;
-pub type off_t = i64;
-pub type time_t = c_long;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = i32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u16;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = c_long;
 
 #[repr(C)]
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub struct stat {
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_dev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mode: mode_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_nlink: nlink_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ino: ino_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_uid: uid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gid: gid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_rdev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_size: off_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blocks: blkcnt_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blksize: blksize_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_flags: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gen: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_lspare: i32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_qspare: [i64; 2],
 }
diff --git a/src/libstd/os/nacl/mod.rs b/src/libstd/os/nacl/mod.rs
index 413bb72f6e1..d481d45404c 100644
--- a/src/libstd/os/nacl/mod.rs
+++ b/src/libstd/os/nacl/mod.rs
@@ -10,10 +10,11 @@
 
 //! Nacl-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/nacl/raw.rs b/src/libstd/os/nacl/raw.rs
index 9defa8301ea..d811b94c847 100644
--- a/src/libstd/os/nacl/raw.rs
+++ b/src/libstd/os/nacl/raw.rs
@@ -10,8 +10,10 @@
 
 //! Nacl-specific raw type definitions
 
-pub type dev_t = u64;
-pub type mode_t = u32;
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u32;
 
 pub use self::arch::{off_t, ino_t, nlink_t, blksize_t, blkcnt_t, stat, time_t};
 
@@ -24,34 +26,55 @@ mod arch {
     use os::raw::{c_long, c_short};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i32;
-    pub type blksize_t = i32;
-    pub type ino_t = u32;
-    pub type nlink_t = u32;
-    pub type off_t = i32;
-    pub type time_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i32;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad1: c_short,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad2: c_short,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused4: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused5: c_long,
     }
 }
@@ -63,34 +86,55 @@ mod arch {
     use os::raw::c_long;
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i32;
-    pub type blksize_t = i32;
-    pub type ino_t = u32;
-    pub type nlink_t = u32;
-    pub type off_t = i32;
-    pub type time_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i32;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad1: [c_long; 3],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: c_ulong,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad2: [c_long; 2],
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad3: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_pad5: [c_long; 14],
     }
 }
@@ -101,33 +145,53 @@ mod arch {
     use os::raw::{c_long, c_int};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i64;
-    pub type blksize_t = i32;
-    pub type ino_t = u64;
-    pub type nlink_t = u32;
-    pub type off_t = i64;
-    pub type time_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad1: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad2: c_int,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused: [c_int; 2],
     }
 }
@@ -138,32 +202,51 @@ mod arch {
     use os::raw::{c_long, c_int};
     use os::unix::raw::{gid_t, uid_t};
 
-    pub type blkcnt_t = i64;
-    pub type blksize_t = i64;
-    pub type ino_t = u64;
-    pub type nlink_t = u64;
-    pub type off_t = i64;
-    pub type time_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+    #[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
     #[repr(C)]
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub struct stat {
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_dev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ino: ino_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_nlink: nlink_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mode: mode_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_uid: uid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_gid: gid_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __pad0: c_int,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_rdev: dev_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_size: off_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blksize: blksize_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_blocks: blkcnt_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_atime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_mtime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime: time_t,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub st_ctime_nsec: c_long,
+        #[stable(feature = "raw_ext", since = "1.1.0")]
         pub __unused: [c_long; 3],
     }
 }
diff --git a/src/libstd/os/openbsd/mod.rs b/src/libstd/os/openbsd/mod.rs
index 5654a7a0229..bdb003b877b 100644
--- a/src/libstd/os/openbsd/mod.rs
+++ b/src/libstd/os/openbsd/mod.rs
@@ -10,10 +10,11 @@
 
 //! OpenBSD-specific definitions
 
-#![unstable(feature = "raw_ext", reason = "recently added API")]
+#![stable(feature = "raw_ext", since = "1.1.0")]
 
 pub mod raw;
 
 pub mod fs {
+    #![stable(feature = "raw_ext", since = "1.1.0")]
     pub use sys::fs::MetadataExt;
 }
diff --git a/src/libstd/os/openbsd/raw.rs b/src/libstd/os/openbsd/raw.rs
index 0bdba9e3487..79ca901ade7 100644
--- a/src/libstd/os/openbsd/raw.rs
+++ b/src/libstd/os/openbsd/raw.rs
@@ -10,39 +10,62 @@
 
 //! OpenBSD-specific raw type definitions
 
+#![stable(feature = "raw_ext", since = "1.1.0")]
+
 use os::raw::c_long;
 use os::unix::raw::{uid_t, gid_t};
 
-pub type blkcnt_t = i64;
-pub type blksize_t = u32;
-pub type dev_t = i32;
-pub type fflags_t = u32; // type not declared, but struct stat have u_int32_t
-pub type ino_t = u64;
-pub type mode_t = u32;
-pub type nlink_t = u32;
-pub type off_t = i64;
-pub type time_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type dev_t = i32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type fflags_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
+#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i64;
 
 #[repr(C)]
+#[stable(feature = "raw_ext", since = "1.1.0")]
 pub struct stat {
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mode: mode_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_dev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ino: ino_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_nlink: nlink_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_uid: uid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gid: gid_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_rdev: dev_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_atime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_mtime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_ctime_nsec: c_long,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_size: off_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blocks: blkcnt_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_blksize: blksize_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_flags: fflags_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_gen: u32,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime: time_t,
+    #[stable(feature = "raw_ext", since = "1.1.0")]
     pub st_birthtime_nsec: c_long,
 }
diff --git a/src/libstd/os/raw.rs b/src/libstd/os/raw.rs
index 44f4a1c828b..2de0448a534 100644
--- a/src/libstd/os/raw.rs
+++ b/src/libstd/os/raw.rs
@@ -10,24 +10,30 @@
 
 //! Raw OS-specific types for the current platform/architecture
 
-#![unstable(feature = "raw_os", reason = "recently added API")]
+#![stable(feature = "raw_os", since = "1.1.0")]
 
-#[cfg(target_arch = "aarch64")]      pub type c_char = u8;
-#[cfg(not(target_arch = "aarch64"))] pub type c_char = i8;
-pub type c_schar = i8;
-pub type c_uchar = u8;
-pub type c_short = i16;
-pub type c_ushort = u16;
-pub type c_int = i32;
-pub type c_uint = u32;
-#[cfg(any(target_pointer_width = "32", windows))] pub type c_long = i32;
-#[cfg(any(target_pointer_width = "32", windows))] pub type c_ulong = u32;
-#[cfg(all(target_pointer_width = "64", not(windows)))] pub type c_long = i64;
-#[cfg(all(target_pointer_width = "64", not(windows)))] pub type c_ulong = u64;
-pub type c_longlong = i64;
-pub type c_ulonglong = u64;
-pub type c_float = f32;
-pub type c_double = f64;
+#[cfg(target_arch = "aarch64")]
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_char = u8;
+#[cfg(not(target_arch = "aarch64"))]
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_char = i8;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_schar = i8;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_uchar = u8;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_short = i16;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_ushort = u16;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_int = i32;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_uint = u32;
+#[cfg(any(target_pointer_width = "32", windows))]
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_long = i32;
+#[cfg(any(target_pointer_width = "32", windows))]
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_ulong = u32;
+#[cfg(all(target_pointer_width = "64", not(windows)))]
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_long = i64;
+#[cfg(all(target_pointer_width = "64", not(windows)))]
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_ulong = u64;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_longlong = i64;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_ulonglong = u64;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_float = f32;
+#[stable(feature = "raw_os", since = "1.1.0")] pub type c_double = f64;
 
 /// Type used to construct void pointers for use with C.
 ///
@@ -41,8 +47,11 @@ pub type c_double = f64;
 //     variants, because the compiler complains about the repr attribute
 //     otherwise.
 #[repr(u8)]
+#[stable(feature = "raw_os", since = "1.1.0")]
 pub enum c_void {
+    #[unstable(feature = "c_void_variant", reason = "should not have to exist")]
     #[doc(hidden)] __variant1,
+    #[unstable(feature = "c_void_variant", reason = "should not have to exist")]
     #[doc(hidden)] __variant2,
 }