rust/src
Alex Crichton 73b0b25e32 std: Stabilize the fs module
This commit performs a stabilization pass over the `std::fs` module now that
it's had some time to bake. The change was largely just adding `#[stable]` tags,
but there are a few APIs that remain `#[unstable]`.

The following apis are now marked `#[stable]`:

* `std::fs` (the name)
* `File`
* `Metadata`
* `ReadDir`
* `DirEntry`
* `OpenOptions`
* `Permissions`
* `File::{open, create}`
* `File::{sync_all, sync_data}`
* `File::set_len`
* `File::metadata`
* Trait implementations for `File` and `&File`
* `OpenOptions::new`
* `OpenOptions::{read, write, append, truncate, create}`
* `OpenOptions::open` - this function was modified, however, to not attempt to
  reject cross-platform openings of directories. This means that some platforms
  will succeed in opening a directory and others will fail.
* `Metadata::{is_dir, is_file, len, permissions}`
* `Permissions::{readonly, set_readonly}`
* `Iterator for ReadDir`
* `DirEntry::path`
* `remove_file` - like with `OpenOptions::open`, the extra windows code to
  remove a readonly file has been removed. This means that removing a readonly
  file will succeed on some platforms but fail on others.
* `metadata`
* `rename`
* `copy`
* `hard_link`
* `soft_link`
* `read_link`
* `create_dir`
* `create_dir_all`
* `remove_dir`
* `remove_dir_all`
* `read_dir`

The following apis remain `#[unstable]`.

* `WalkDir` and `walk` - there are many methods by which a directory walk can be
  constructed, and it's unclear whether the current semantics are the right
  ones. For example symlinks are not handled super well currently. This is now
  behind a new `fs_walk` feature.
* `File::path` - this is an extra abstraction which the standard library
  provides on top of what the system offers and it's unclear whether we should
  be doing so. This is now behind a new `file_path` feature.
* `Metadata::{accessed, modified}` - we do not currently have a good
  abstraction for a moment in time which is what these APIs should likely be
  returning, so these remain `#[unstable]` for now. These are now behind a new
  `fs_time` feature
* `set_file_times` - like with `Metadata::accessed`, we do not currently have
  the appropriate abstraction for the arguments here so this API remains
  unstable behind the `fs_time` feature gate.
* `PathExt` - the precise set of methods on this trait may change over time and
  some methods may be removed. This API remains unstable behind the `path_ext`
  feature gate.
* `set_permissions` - we may wish to expose a more granular ability to set the
  permissions on a file instead of just a blanket "set all permissions" method.
  This function remains behind the `fs` feature.

The following apis are now `#[deprecated]`

* The `TempDir` type is now entirely deprecated and is [located on
  crates.io][tempdir] as the `tempdir` crate with [its source][github] at
  rust-lang/tempdir.

[tempdir]: https://crates.io/crates/tempdir
[github]: https://github.com/rust-lang/tempdir

The stability of some of these APIs has been questioned over the past few weeks
in using these APIs, and it is intentional that the majority of APIs here are
marked `#[stable]`. The `std::fs` module has a lot of room to grow and the
material is [being tracked in a RFC issue][rfc-issue].

[rfc-issue]: https://github.com/rust-lang/rfcs/issues/939

[breaking-change]
2015-03-05 16:49:41 -08:00
..
compiler-rt@58ab642c30
compiletest std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
doc Auto merge of #22061 - pczarn:quote_matcher_and_attr, r=kmcallister 2015-03-05 04:32:51 +00:00
driver
etc Use consts instead of statics where appropriate 2015-03-02 17:11:51 +01:00
grammar
jemalloc@b001609960
liballoc std: Deprecate std::old_io::fs 2015-03-04 15:59:30 -08:00
libarena Add : Box<_> or ::Box<_> type annotations to various places. 2015-03-03 20:29:01 +01:00
libbacktrace
libcollections Auto merge of #22920 - tshepang:remove-some-warnings, r=huonw 2015-03-04 12:16:51 +00:00
libcore Auto merge of #22958 - laijs:option_map_for_iter_map, r=alexcrichton 2015-03-04 09:46:29 +00:00
libcoretest Auto merge of #22920 - tshepang:remove-some-warnings, r=huonw 2015-03-04 12:16:51 +00:00
libflate Use consts instead of statics where appropriate 2015-03-02 17:11:51 +01:00
libfmt_macros
libgetopts std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
libgraphviz Enable recursion for visit_ty in lint visitor 2015-03-02 15:35:48 -08:00
liblibc
liblog
librand Auto merge of #22920 - tshepang:remove-some-warnings, r=huonw 2015-03-04 12:16:51 +00:00
librbml Auto merge of #22920 - tshepang:remove-some-warnings, r=huonw 2015-03-04 12:16:51 +00:00
librustc std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
librustc_back std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
librustc_bitflags
librustc_borrowck Use consts instead of statics where appropriate 2015-03-02 17:11:51 +01:00
librustc_driver std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
librustc_lint Separate supertrait collection from processing a TraitDef. This allows 2015-03-04 15:06:33 -05:00
librustc_llvm std: Deprecate std::old_io::fs 2015-03-04 15:59:30 -08:00
librustc_privacy privacy: walk associated types in trait impls 2015-03-03 01:28:20 -05:00
librustc_resolve
librustc_trans std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
librustc_typeck Address nits by @nrc. 2015-03-05 05:46:12 -05:00
librustdoc std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
libserialize std: Deprecate std::old_io::fs 2015-03-04 15:59:30 -08:00
libstd std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
libsyntax std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
libterm std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
libtest std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
libunicode Use consts instead of statics where appropriate 2015-03-02 17:11:51 +01:00
llvm@b89c3f039b
rt
rust-installer@60fd8abfca
rustbook std: Stabilize the fs module 2015-03-05 16:49:41 -08:00
rustllvm
test Auto merge of #23026 - nikomatsakis:issue-20220-supertrait, r=nikomatsakis 2015-03-05 17:52:21 +00:00
snapshots.txt