Commit graph

3597 commits

Author SHA1 Message Date
Alex Crichton
fc06f7922d Build a few extra features into format! parsing
* Allow named parameters to specify width/precision
* Intepret the format string '0$' as "width is the 0th argument" instead of
  thinking the lone '0' was the sign-aware-zero-padding flag. To get both you'd
  need to put '00$' which makes more sense if you want both to happen.

Closes #9669
2013-10-15 22:27:10 -07:00
Alex Crichton
a84c2999c9 Require module documentation with missing_doc
Closes #9824
2013-10-15 22:27:10 -07:00
bors
c8e77d5586 auto merge of #9606 : steveklabnik/rust/abi_removal, r=alexcrichton
They've been replaced by putting the name on the extern block.

  #[abi = "foo"]

goes to

  extern "foo" { }

Closes #9483.
2013-10-14 07:26:47 -07:00
bors
b571039021 auto merge of #9848 : huonw/rust/move-trait-doc, r=alexcrichton
This means the text is visible in rustdoc.
2013-10-14 06:16:32 -07:00
Steve Klabnik
309ab958e6 Removing ccdecl
as per https://github.com/mozilla/rust/pull/9606#discussion_r6930872
2013-10-14 14:33:05 +02:00
Huon Wilson
a6d7fe6209 std::vec: move documentation from impls to traits.
This means the text is visible in rustdoc.
2013-10-14 22:21:47 +11:00
Steve Klabnik
16fc6a694c Remove unused abi attributes.
They've been replaced by putting the name on the extern block.

  #[abi = "foo"]

goes to

  extern "foo" { }

Closes #9483.
2013-10-14 13:10:36 +02:00
Scott Lawrence
85f19a845d std::libc: rustdoc indicates reexports now 2013-10-14 00:48:34 -04:00
bors
0bad7e1a37 auto merge of #9608 : hmarr/rust/vec-get-opt, r=huonw
This adds `get_opt` to `std::vec`, which looks up an item by index and returns an `Option`. If the given index is out of range, `None` will be returned, otherwise a `Some`-wrapped item will be returned.

Example use case:

```rust
use std::os;

fn say_hello(name: &str) {
  println(fmt!("Hello, %s", name));
}

fn main(){
  // Try to get the first cmd line arg, but default to "World"
  let args = os::args();
  let default = ~"World";
  say_hello(*args.get_opt(1).unwrap_or(&default));
}
```

If there's an existing way of implementing this pattern that's cleaner, I'll happily close this. I'm also open to naming suggestions (`index_opt`?)
2013-10-12 20:16:19 -07:00
Daniel Micay
ea0fc0e32b rc: fix docstring 2013-10-12 10:19:56 -04:00
bors
80878ff369 auto merge of #9809 : fhahn/rust/remove-old-cratemap-code, r=alexcrichton
This patch removes the code responsible for handling older CrateMap versions (as discussed during #9593). Only the new (safer) layout is supported now.
2013-10-11 12:21:20 -07:00
bors
c147ec6d06 auto merge of #9794 : thestinger/rust/rc, r=alexcrichton
I've left out a way to construct from a `Send` type until #9509 is resolved. I am confident that this interface can remain backwards compatible though, assuming we name the `Pointer` trait method `borrow`.

When there is a way to convert from `Send` (`from_send`), a future RAII-based `Mut` type can be used with this to implemented a mutable reference-counted pointer. For now, I've left around the `RcMut` type but it may drastically change or be removed.
2013-10-11 11:11:21 -07:00
Daniel Micay
18be986c99 clean up the Rc/RcMut types and move to libstd 2013-10-11 13:28:36 -04:00
Florian Hahn
f3b1f79716 Remove support for older CrateMap versions 2013-10-11 19:16:20 +02:00
bors
ed37b00b06 auto merge of #9803 : alexcrichton/rust/less-pub2, r=brson
This change was waiting for privacy to get sorted out, which should be true now
that #8215 has landed.

Closes #4427
2013-10-11 08:56:19 -07:00
Alex Crichton
8b4423b04f De-pub some private runtime components
This change was waiting for privacy to get sorted out, which should be true now
that #8215 has landed.

Closes #4427
2013-10-11 06:49:18 -07:00
Volker Mische
82f53d6dc5 Fix usage of <float> in docs
The example for std::rand::random was still
using <float>, which got removed from Rust.
2013-10-10 21:54:29 +02:00
bors
0ede2ea4e2 auto merge of #9749 : alexcrichton/rust/less-io, r=brson
This implements a number of the baby steps needed to start eliminating everything inside of `std::io`. It turns out that there are a *lot* of users of that module, so I'm going to try to tackle them separately instead of bringing down the whole system all at once.

This pull implements a large amount of unimplemented functionality inside of `std::rt::io` including:

* Native file I/O (file descriptors, *FILE)
* Native stdio (through the native file descriptors)
* Native processes (extracted from `std::run`)

I also found that there are a number of users of `std::io` which desire to read an input line-by-line, so I added an implementation of `read_until` and `read_line` to `BufferedReader`.

With all of these changes in place, I started to axe various usages of `std::io`. There's a lot of one-off uses here-and-there, but the major use-case remaining that doesn't have a fantastic solution is `extra::json`. I ran into a few compiler bugs when attempting to remove that, so I figured I'd come back to it later instead. 

There is one fairly major change in this pull, and it's moving from native stdio to uv stdio via `print` and `println`. Unfortunately logging still goes through native I/O (via `dumb_println`). This is going to need some thinking, because I still want the goal of logging/printing to be 0 allocations, and this is not possible if `io::stdio::stderr()` is called on each log message. Instead I think that this may need to be cached as the `logger` field inside the `Task` struct, but that will require a little more workings to get right (this is also a similar problem for print/println, do we cache `stdout()` to not have to re-create it every time?).
2013-10-10 04:31:24 -07:00
Alex Crichton
413747176c Make the file::DirectoryInfo trait public
This was just a mistake that it was hidden.
2013-10-10 03:38:51 -07:00
Alex Crichton
2290ce14f2 Remove some users of io::file_reader 2013-10-10 03:38:51 -07:00
Alex Crichton
ff95904c48 Remove usage of io::FILE_writer 2013-10-10 03:38:51 -07:00
Alex Crichton
b07ab1fe4b Migrate users of io::fd_t to io::native::file::fd_t 2013-10-10 03:38:51 -07:00
Alex Crichton
2e0f3f5b51 Move std::run off of std::io
This changes the implementation to instead use rt::io::native::process as well
as an example of using those bindings.
2013-10-10 03:38:51 -07:00
Alex Crichton
ee1e6529bd Implement BufferedReader.{read_until, read_line}
These two functions will be useful when replacing various other counterparts
used by std::io consumers.
2013-10-10 03:38:51 -07:00
Alex Crichton
facefa7c8d Implement rt::io::stdio
Additionally, this moves the prelude imports of print/println from std::io to
std::rt::io.

Closes #6846
2013-10-10 03:38:51 -07:00
bors
2b978af227 auto merge of #9780 : sfackler/rust/extensions2, r=alexcrichton
This works around #9779, but is probably the right thing to do anyways
since that's the module where all of the documentation for those traits
lives.
2013-10-09 20:46:21 -07:00
bors
8f4b87290b auto merge of #9774 : sebcrozet/rust/master, r=huonw
The minimum (negative) value of a float is `-Bounded::max_value()`, not `Bounded::min_value()`.
Otherwise the following has an incorrect behavior:

```rust
let a = -1.0f64;
let b: f32 = NumCast::from(a); // incorrectly returns None
```
2013-10-09 17:41:23 -07:00
bors
11d5670647 auto merge of #9742 : alexcrichton/rust/issue-9739, r=brson
This changes an `assert_once_ever!` assertion to just a plain old assertion
around an atomic boolean to ensure that one particular runtime doesn't attempt
to exit twice.

Closes #9739
2013-10-09 14:21:38 -07:00
Alex Crichton
8fcf62b638 Don't abort if the runtime is run twice.
This changes an `assert_once_ever!` assertion to just a plain old assertion
around an atomic boolean to ensure that one particular runtime doesn't attempt
to exit twice.

Closes #9739
2013-10-09 12:38:18 -07:00
Alex Crichton
a0d2f71e8e Implement io::native::process 2013-10-09 11:24:15 -07:00
Alex Crichton
edf4c16997 Implement io::native::stdio 2013-10-09 11:21:47 -07:00
Alex Crichton
b509f7905a Implement io::native::file 2013-10-09 11:21:47 -07:00
bors
2e64a718ea auto merge of #9664 : alexcrichton/rust/logging, r=huonw
This makes some headway on #3309, see commits for details.
2013-10-09 07:31:36 -07:00
Daniel Micay
6a90e80b62 option: rewrite the API to use composition 2013-10-09 09:17:29 -04:00
Huon Wilson
e678435cab std::rand: Minor clean-up of comments & add a missing default method. 2013-10-09 22:22:44 +11:00
Huon Wilson
5442a47362 std::rand: remove seed_task_rng and RUST_SEED. 2013-10-09 22:22:44 +11:00
Huon Wilson
62fededd8e std::rand: Make Rng.next_u32 non-default, waiting for #7771. 2013-10-09 22:22:44 +11:00
Huon Wilson
618c6afe32 std::rand::os: use the externfn! macro for the Windows RNG. 2013-10-09 22:22:44 +11:00
Huon Wilson
d86de18b61 std::rand::reseeding: seed the reseeder in the SeedableRng impl.
This stops us relying on Default here.
2013-10-09 22:22:43 +11:00
Huon Wilson
649c1759e8 std::rand::reader: describe cfg!(endianness). 2013-10-09 22:22:43 +11:00
Huon Wilson
38732c4b5c std::rand: Correct the implementation of Rand for f32 & f64. 2013-10-09 22:22:43 +11:00
Huon Wilson
a836f13dc0 Documentation & address minor point. 2013-10-09 22:22:43 +11:00
Huon Wilson
71addded64 std::rand: remove seed.
This much better handled by directly calling out to `OSRng` where
appropriate.
2013-10-09 22:22:43 +11:00
Huon Wilson
5bb5f76785 Convert rt::sched::new_sched_rng to use open/read/close rather than f*. 2013-10-09 22:22:43 +11:00
Huon Wilson
9db32a2f1d std::rand: adjust the f32 & f64 Rand instances.
The f32 generator now just uses a single u32, and the f64 uses a
single u64. This will make both significantly faster, especially
on 64-bit platforms.
2013-10-09 22:22:43 +11:00
Huon Wilson
98869799eb std::rand: documentation additions & fixes. 2013-10-09 22:22:43 +11:00
Huon Wilson
0b1a0d01a8 std::rand: move the Rand impls into a separate file for neatness. 2013-10-09 22:22:43 +11:00
Huon Wilson
6f4ec72362 std::rand: add & split some tests. 2013-10-09 22:22:43 +11:00
Huon Wilson
29e3b33a09 std::rand: make the windows OSRng more correct, remove some C++.
This lets the C++ code in the rt handle the (slightly) tricky parts of
random number generation: e.g. error detection/handling, and using the
values of the `#define`d options to the various functions.
2013-10-09 22:22:42 +11:00
Huon Wilson
fb9706338d std::rand: improve the task_rng code.
It now:
- can be explicitly seeded from user code (`seed_task_rng`) or from the
  environment (`RUST_SEED`, a positive integer)
- automatically reseeds itself from the OS *unless* it was seeded by
  either method above
- has more documentation
2013-10-09 22:22:42 +11:00