Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std: Stabilize the fs module #23081

Merged
merged 1 commit into from
Mar 7, 2015
Merged

Commits on Mar 6, 2015

  1. 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]: rust-lang/rfcs#939
    
    [breaking-change]
    alexcrichton committed Mar 6, 2015
    Configuration menu
    Copy the full SHA
    73b0b25 View commit details
    Browse the repository at this point in the history