<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/libstd/fmt.rs, branch try</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=try</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=try'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2015-02-07T18:49:58+00:00</updated>
<entry>
<title>Make std::fmt a simple re-export from collections</title>
<updated>2015-02-07T18:49:58+00:00</updated>
<author>
<name>Keegan McAllister</name>
<email>kmcallister@mozilla.com</email>
</author>
<published>2015-02-06T05:08:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ea85d43903ead3317bf6153fea9f77a5c4a904f1'/>
<id>urn:sha1:ea85d43903ead3317bf6153fea9f77a5c4a904f1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Don't use std:: paths in syntax extensions when compiling a #![no_std] crate</title>
<updated>2015-02-07T18:49:57+00:00</updated>
<author>
<name>Keegan McAllister</name>
<email>kmcallister@mozilla.com</email>
</author>
<published>2014-09-07T21:57:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=67350bc8681d6df212817644cad7c748039a6238'/>
<id>urn:sha1:67350bc8681d6df212817644cad7c748039a6238</id>
<content type='text'>
Fixes #16803.
Fixes #14342.
Fixes half of #21827 -- slice syntax is still broken.
</content>
</entry>
<entry>
<title>register snapshots</title>
<updated>2015-02-02T18:38:32+00:00</updated>
<author>
<name>Jorge Aparicio</name>
<email>japaricious@gmail.com</email>
</author>
<published>2015-01-31T14:16:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=134cf707dfb8f37d735d20ff261366b7c2d916a6'/>
<id>urn:sha1:134cf707dfb8f37d735d20ff261366b7c2d916a6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rollup merge of #21631: tbu-/isize_police</title>
<updated>2015-01-30T21:27:02+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-01-30T20:14:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=188d7c0bc36e69b99f6bdefd613027e53fa8b2d0'/>
<id>urn:sha1:188d7c0bc36e69b99f6bdefd613027e53fa8b2d0</id>
<content type='text'>
Conflicts:
	src/libcoretest/iter.rs
</content>
</entry>
<entry>
<title>std: Stabilize the std::fmt module</title>
<updated>2015-01-30T17:21:56+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-01-13T23:42:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=62273575139a80c2b208a3a27e0c2392b1425be6'/>
<id>urn:sha1:62273575139a80c2b208a3a27e0c2392b1425be6</id>
<content type='text'>
This commit performs a final stabilization pass over the std::fmt module,
marking all necessary APIs as stable. One of the more interesting aspects of
this module is that it exposes a good deal of its runtime representation to the
outside world in order for `format_args!` to be able to construct the format
strings. Instead of hacking the compiler to assume that these items are stable,
this commit instead lays out a story for the stabilization and evolution of
these APIs.

There are three primary details used by the `format_args!` macro:

1. `Arguments` - an opaque package of a "compiled format string". This structure
   is passed around and the `write` function is the source of truth for
   transforming a compiled format string into a string at runtime. This must be
   able to be constructed in stable code.

2. `Argument` - an opaque structure representing an argument to a format string.
   This is *almost* a trait object as it's just a pointer/function pair, but due
   to the function originating from one of many traits, it's not actually a
   trait object. Like `Arguments`, this must be constructed from stable code.

3. `fmt::rt` - this module contains the runtime type definitions primarily for
   the `rt::Argument` structure. Whenever an argument is formatted with
   nonstandard flags, a corresponding `rt::Argument` is generated describing how
   the argument is being formatted. This can be used to construct an
   `Arguments`.

The primary interface to `std::fmt` is the `Arguments` structure, and as such
this type name is stabilize as-is today. It is expected for libraries to pass
around an `Arguments` structure to represent a pending formatted computation.

The remaining portions are largely "cruft" which would rather not be stabilized,
but due to the stability checks they must be. As a result, almost all pieces
have been renamed to represent that they are "version 1" of the formatting
representation. The theory is that at a later date if we change the
representation of these types we can add new definitions called "version 2" and
corresponding constructors for `Arguments`.

One of the other remaining large questions about the fmt module were how the
pending I/O reform would affect the signatures of methods in the module. Due to
[RFC 526][rfc], however, the writers of fmt are now incompatible with the
writers of io, so this question has largely been solved. As a result the
interfaces are largely stabilized as-is today.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0526-fmt-text-writer.md

Specifically, the following changes were made:

* The contents of `fmt::rt` were all moved under `fmt::rt::v1`
* `fmt::rt` is stable
* `fmt::rt::v1` is stable
* `Error` is stable
* `Writer` is stable
* `Writer::write_str` is stable
* `Writer::write_fmt` is stable
* `Formatter` is stable
* `Argument` has been renamed to `ArgumentV1` and is stable
* `ArgumentV1::new` is stable
* `ArgumentV1::from_uint` is stable
* `Arguments::new_v1` is stable (renamed from `new`)
* `Arguments::new_v1_formatted` is stable (renamed from `with_placeholders`)
* All formatting traits are now stable, as well as the `fmt` method.
* `fmt::write` is stable
* `fmt::format` is stable
* `Formatter::pad_integral` is stable
* `Formatter::pad` is stable
* `Formatter::write_str` is stable
* `Formatter::write_fmt` is stable
* Some assorted top level items which were only used by `format_args!` were
  removed in favor of static functions on `ArgumentV1` as well.
* The formatting-flag-accessing methods remain unstable

Within the contents of the `fmt::rt::v1` module, the following actions were
taken:

* Reexports of all enum variants were removed
* All prefixes on enum variants were removed
* A few miscellaneous enum variants were renamed
* Otherwise all structs, fields, and variants were marked stable.

In addition to these actions in the `std::fmt` module, many implementations of
`Show` and `String` were stabilized as well.

In some other modules:

* `ToString` is now stable
* `ToString::to_string` is now stable
* `Vec` no longer implements `fmt::Writer` (this has moved to `String`)

This is a breaking change due to all of the changes to the `fmt::rt` module, but
this likely will not have much impact on existing programs.

Closes #20661
[breaking-change]
</content>
</entry>
<entry>
<title>Remove all `i` suffixes</title>
<updated>2015-01-30T03:38:54+00:00</updated>
<author>
<name>Tobias Bucher</name>
<email>tobiasbucher5991@gmail.com</email>
</author>
<published>2015-01-25T21:05:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7f64fe4e27555c256cb228feb05d4181a2287125'/>
<id>urn:sha1:7f64fe4e27555c256cb228feb05d4181a2287125</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'rust-lang/master'</title>
<updated>2015-01-27T23:05:04+00:00</updated>
<author>
<name>Brian Anderson</name>
<email>banderson@mozilla.com</email>
</author>
<published>2015-01-27T17:38:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=71223050538939ed758fcd3b9114f71abff20bb2'/>
<id>urn:sha1:71223050538939ed758fcd3b9114f71abff20bb2</id>
<content type='text'>
Conflicts:
	src/libcore/cell.rs
	src/librustc_driver/test.rs
	src/libstd/old_io/net/tcp.rs
	src/libstd/old_io/process.rs
</content>
</entry>
<entry>
<title>Fallout of io =&gt; old_io</title>
<updated>2015-01-27T00:01:16+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-01-23T00:31:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3a07f859b880bfe4dd6f095c959422d7c6b53831'/>
<id>urn:sha1:3a07f859b880bfe4dd6f095c959422d7c6b53831</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'rust-lang/master'</title>
<updated>2015-01-25T09:20:55+00:00</updated>
<author>
<name>Brian Anderson</name>
<email>banderson@mozilla.com</email>
</author>
<published>2015-01-24T17:15:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=63fcbcf3ce8f0ca391c18b2d61833ae6beb3ac70'/>
<id>urn:sha1:63fcbcf3ce8f0ca391c18b2d61833ae6beb3ac70</id>
<content type='text'>
Conflicts:
	mk/tests.mk
	src/liballoc/arc.rs
	src/liballoc/boxed.rs
	src/liballoc/rc.rs
	src/libcollections/bit.rs
	src/libcollections/btree/map.rs
	src/libcollections/btree/set.rs
	src/libcollections/dlist.rs
	src/libcollections/ring_buf.rs
	src/libcollections/slice.rs
	src/libcollections/str.rs
	src/libcollections/string.rs
	src/libcollections/vec.rs
	src/libcollections/vec_map.rs
	src/libcore/any.rs
	src/libcore/array.rs
	src/libcore/borrow.rs
	src/libcore/error.rs
	src/libcore/fmt/mod.rs
	src/libcore/iter.rs
	src/libcore/marker.rs
	src/libcore/ops.rs
	src/libcore/result.rs
	src/libcore/slice.rs
	src/libcore/str/mod.rs
	src/libregex/lib.rs
	src/libregex/re.rs
	src/librustc/lint/builtin.rs
	src/libstd/collections/hash/map.rs
	src/libstd/collections/hash/set.rs
	src/libstd/sync/mpsc/mod.rs
	src/libstd/sync/mutex.rs
	src/libstd/sync/poison.rs
	src/libstd/sync/rwlock.rs
	src/libsyntax/feature_gate.rs
	src/libsyntax/test.rs
</content>
</entry>
<entry>
<title>Set unstable feature names appropriately</title>
<updated>2015-01-23T21:28:40+00:00</updated>
<author>
<name>Brian Anderson</name>
<email>banderson@mozilla.com</email>
</author>
<published>2015-01-23T02:22:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cd6d9eab5d75584edfcae4ffdef8b0836db80c1e'/>
<id>urn:sha1:cd6d9eab5d75584edfcae4ffdef8b0836db80c1e</id>
<content type='text'>
* `core` - for the core crate
* `hash` - hashing
* `io` - io
* `path` - path
* `alloc` - alloc crate
* `rand` - rand crate
* `collections` - collections crate
* `std_misc` - other parts of std
* `test` - test crate
* `rustc_private` - everything else
</content>
</entry>
</feed>
