Commit Graph

23128 Commits

Author SHA1 Message Date
Erik Lyon
8b65a45879 fix typos in doc/tutorial.md 2013-10-13 10:49:44 -07:00
bors
91abfd425d auto merge of #9832 : luqmana/rust/sps, r=alexcrichton
Fixes #9830.
2013-10-12 21:26:20 -07:00
Luqman Aden
e88064d18f librustc: Combine C_struct and C_packed_struct. 2013-10-12 23:19:22 -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
Luqman Aden
95609699e3 Update test for packed structs to also test being placed in statics. 2013-10-12 21:52:14 -04:00
Luqman Aden
4b4b2136e0 librustc: Don't ICE on packed structs in statics. 2013-10-12 21:42:24 -04:00
bors
c6e3501da1 auto merge of #9825 : thestinger/rust/rc, r=thestinger 2013-10-12 07:26:20 -07:00
Daniel Micay
ea0fc0e32b rc: fix docstring 2013-10-12 10:19:56 -04:00
bors
35a944a488 auto merge of #9815 : thestinger/rust/type, r=huonw
Example:

    void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)*

Before, we would print 20 levels deep due to recursion in the type
definition.
2013-10-11 19:21:16 -07:00
bors
399a42575a auto merge of #9799 : catamorphism/rust/rustpkg-exitcodes, r=catamorphism,metajack
r? @metajack When I started writing the rustpkg tests, task failure didn't set the
exit code properly. But bblum's work from July fixed that. Hooray! I
just didn't know about it till now.

So, now rustpkg uses exit codes in a more conventional way, and some of
the tests are simpler.

The bigger issue will be to make task failure propagate the error message.
Right now, rustpkg does most of the work in separate tasks, which means if
a task fails, rustpkg can't distinguish between different types of failure
(see #3408)
2013-10-11 18:11:17 -07:00
Daniel Micay
7bad416765 have LLVM print type strings for us
Example:

    void ({ i64, %tydesc*, i8*, i8*, i8 }*, i64*, %"struct.std::fmt::Formatter[#1]"*)*

Before, we would print 20 levels deep due to recursion in the type
definition.
2013-10-11 20:26:08 -04:00
Tim Chevalier
7472bae5e7 rustpkg: Set exit codes properly and make tests take advantage of that
When I started writing the rustpkg tests, task failure didn't set the
exit code properly. But bblum's work from July fixed that. Hooray! I
just didn't know about it till now.

So, now rustpkg uses exit codes in a more conventional way, and some of
the tests are simpler.

The bigger issue will be to make task failure propagate the error message.
Right now, rustpkg does most of the work in separate tasks, which means if
a task fails, rustpkg can't distinguish between different types of failure
(see #3408)
2013-10-11 17:15:52 -07: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
Daniel Micay
e192b6d7c5 correct names for #[no_send]/#[no_freeze] tests 2013-10-11 12:21:19 -04: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
bors
93a08f49fa auto merge of #9802 : ben0x539/rust/mkdtemp-raii, r=alexcrichton
this incidentally stops `make check` from leaving directories in `/tmp` (Closes #9764)
2013-10-11 07:11:23 -07:00
Benjamin Herr
63e9e496f6 extra::tempfile: replace mkdtemp with an RAII wrapper
this incidentally stops `make check` from leaving directories in `/tmp`
2013-10-11 15:55:37 +02: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
bors
5bddcc1ead auto merge of #9805 : alexcrichton/rust/needstest, r=brson
Closes #4545
Closes #5791
Closes #6470
Closes #8044
2013-10-10 22:51:20 -07:00
bors
e5fc0ca6dc auto merge of #9804 : alexcrichton/rust/always-anon-extern, r=brson
There's currently a fair amount of code which is being ignored on unnamed blocks
(which are the default now), and I opted to leave it commented out for now. I
intend on very soon revisiting on how we perform linking with extern crates in
an effort to support static linking.
2013-10-10 21:31:21 -07:00
bors
0daced63fc auto merge of #9517 : crabtw/rust/cabi, r=nikomatsakis
I borrow some ideas from clang's ABIInfo.h and TargetInfo.cpp.
LLVMType is replaced with ArgType, which is similar to clang's ABIArgInfo,
and I also merge attrs of FnType into it.

Now ABI implementation doesn't need to insert hidden return pointer
to arg_tys of FnType. Instead it is handled in foreign.rs.

This change also fixes LLVM assertion failure when compiling MIPS target.
2013-10-10 19:56:22 -07:00
Alex Crichton
478c9b701e Add tests and un-xfail a few issues
Closes #4545
Closes #5791
Closes #6470
Closes #8044
2013-10-10 18:48:52 -07:00
bors
afa42a0237 auto merge of #9785 : catamorphism/rust/remove-convenience-tool, r=pcwalton
r? @pcwalton Sadly, there's a lack of resources for maintaining the `rust` tool,
and we decided in the 2013-10-08 Rust team meeting that it's better
to remove it altogether than to leave it in a broken state.

This deletion is without prejudice. If a person or people appear who
would like to maintain the tool, we will probably be happy to
resurrect it!

Closes #9775
2013-10-10 18:46:23 -07:00
Alex Crichton
b70306158f Remove named extern blocks from the AST
There's currently a fair amount of code which is being ignored on unnamed blocks
(which are the default now), and I opted to leave it commented out for now. I
intend on very soon revisiting on how we perform linking with extern crates in
an effort to support static linking.
2013-10-10 18:04:58 -07:00
bors
2e1df8e35b auto merge of #9732 : catamorphism/rust/rustpkg-read-only, r=brson
r? @metajack rustpkg now makes source files that it checks out automatically read-only, and stores
them under build/.

Also, refactored the `PkgSrc` type to keep track of separate source and destination
workspaces, as well as to have a `build_workspace` method that returns the workspace
to put temporary files in (usually the source, sometimes the destination -- see
comments for more details).

Closes #6480
2013-10-10 17:36:21 -07:00
Jyun-Yan You
95fc31ae9b improve C ABI
I borrow some ideas from clang's ABIInfo.h and TargetInfo.cpp.
LLVMType is replaced with ArgType, which is similar to clang's ABIArgInfo,
and I also merge attrs of FnType into it.

Now ABI implementation doesn't need to insert hidden return pointer
to arg_tys of FnType. Instead it is handled in foreign.rs.

This change also fixes LLVM assertion failure when compiling MIPS target.
2013-10-11 08:03:34 +08:00
bors
6ad1d0f861 auto merge of #9800 : vmx/rust/fix-random-doc, r=thestinger
The example for std::rand::random was still
using <float>, which got removed from Rust.
2013-10-10 16:26:20 -07:00
Tim Chevalier
8854b78b55 rustpkg: Make checked-out source files read-only, and overhaul where temporary files are stored
rustpkg now makes source files that it checks out automatically read-only, and stores
them under build/.

Also, refactored the `PkgSrc` type to keep track of separate source and destination
workspaces, as well as to have a `build_workspace` method that returns the workspace
to put temporary files in (usually the source, sometimes the destination -- see
comments for more details).

Closes #6480
2013-10-10 15:16:31 -07:00
bors
6aa5934e2b auto merge of #9798 : mtwilliams/rust/master, r=brson
I also removed superfluous trailing whitespace.

I don't think I need to run the test suite.
2013-10-10 14:36:34 -07:00
Tim Chevalier
a9dddbacde rust / build: Remove the rust tool
Sadly, there's a lack of resources for maintaining the `rust` tool,
and we decided in the 2013-10-08 Rust team meeting that it's better
to remove it altogether than to leave it in a broken state.

This deletion is without prejudice. If a person or people appear who
would like to maintain the tool, we will probably be happy to
resurrect it!

Closes #9775
2013-10-10 14:36:06 -07:00
Michael 'devbug' Williams
bcf76ac3ed Fixed typo under 'Segmented stacks and the linter', and removed superfluous trailing whitespace. 2013-10-10 14:00:15 -07:00
bors
8b8a41a287 auto merge of #9797 : alexcrichton/rust/snapshots, r=thestinger
Some bug fixes to reexported statics in stage0 now, also some macro attribute goodies. Mostly just updating the snapshot to help enable some things that its patches have been blocking.
2013-10-10 13:26:30 -07:00
Alex Crichton
97f87102fe Register new snapshots 2013-10-10 13:19: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
8015f9c27e auto merge of #9791 : alexcrichton/rust/reachable, r=catamorphism
This fixes a bug in which the visibility rules were approximated by
reachability, but forgot to cover the case where a 'pub use' reexports a private
item. This fixes the commit by instead using the results of the privacy pass of
the compiler to create the initial working set of the reachability pass.

This may have the side effect of increasing the size of metadata, but it's
difficult to avoid for correctness purposes sadly.

Closes #9790
2013-10-10 06:06:24 -07:00
Alex Crichton
caf7b678dd Add pub to all the codegen tests
Otherwise the test function is internalized and LLVM will most likely optimize
it out.
2013-10-10 06:00:51 -07: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
Alex Crichton
b0f6c29b4f Use the result of privacy for reachability
This fixes a bug in which the visibility rules were approximated by
reachability, but forgot to cover the case where a 'pub use' reexports a private
item. This fixes the commit by instead using the results of the privacy pass of
the compiler to create the initial working set of the reachability pass.

This may have the side effect of increasing the size of metadata, but it's
difficult to avoid for correctness purposes sadly.

Closes #9790
2013-10-10 03:31:59 -07:00
bors
34d123db4e auto merge of #9783 : huonw/rust/macro-items, r=bstrie
Fixes #4471.
2013-10-09 21:56:20 -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