Commit Graph

44144 Commits

Author SHA1 Message Date
Richo Healey
f07b11d07e mk: Fix a typo in the tips 2015-06-28 19:05:09 -07:00
Peter Elmers
9b6fe6ca36 Add tip to do partial compile. 2015-06-28 18:49:22 -07:00
bors
a973e4cda5 Auto merge of #26582 - jroesch:infer-ctxt-refactor, r=nikomatsakis
This branch begins the work of unifying our type checking contexts into a single piece of state. The goal is to eventually have a single context that we can pass around instead of the fractured situation we currently have. There are still several things that must be done before beginning to make tables item local:

- [ ] move FulfillmentContext into InferCtxt
- [ ] modify SelectionContext to only take a single context argument
- [ ] remove remaining typer impls 
- [ ] remove the ClosureTyper + Typer trait
- [ ] do some renaming to make these things more applicable to their new roles

r? @nikomatsakis 

As a side note there are a couple oddities that are temporary refactors that will be quickly cleaned up in a follow-up PR.

cc @eddyb @Aatch @arielb1 @nrc
2015-06-29 00:03:37 +00:00
bors
2671e8cee0 Auto merge of #26642 - remram44:doc-openoptions-missing-write, r=alexcrichton
Setting append without write doesn't give you a writeable file. Showing it as an example in the docs is confusing at best ([reddit](https://www.reddit.com/r/rust/comments/3bbz8w/why_is_writing_a_file_not_working_for_me/))

Using truncate (O_TRUNC) on a read-only file is an error on POSIX systems ("unspecified"). Note however that using create (O_CREAT) with read-only flags is fine.

Related: #26103 (which IMHO is wrong; saying "append is different than write" when should simply be "append needs write". My vote is to make append imply write)
2015-06-28 21:37:07 +00:00
Remi Rampin
78ec055a14 Add .write(true) to append and truncate examples
Setting append without write doesn't give you a writeable file. Showing
it as an example in the docs is confusing at best.

Using truncate on a read-only file is an error on POSIX systems (note
however that using create with read-only flags is fine).
2015-06-28 17:26:31 -04:00
Jared Roesch
5c3753f6b4 Fix librustc_driver/test.rs 2015-06-28 14:08:50 -07:00
bors
c1b8bd2d6f Auto merge of #26631 - richo:comment-updates, r=steveklabnik
I've attempted to lurk these into a few PRs since they're tiny, but those PR's haven't landed so here they are.

r? @steveklabnik
2015-06-28 06:35:30 +00:00
bors
5da0d415b6 Auto merge of #26601 - alexcrichton:xp, r=brson
This series of commits (currently rebased on https://github.com/rust-lang/rust/pull/26569 to avoid conflicts) adds support for the standard library to run on Windows XP. The main motivation behind this PR is that to enable any Rust code in Firefox we need to support Windows XP.

This PR doesn't yet intend to be a move to make Windows XP an officially supported platform, but instead simply get Rust code running on it. APIs like condition variables and RWLocks will immediately panic currently on XP, and it's unclear if that story wants to change much. Additionally, we may bind APIs like IOCP which aren't available on XP and would be *very* difficult to provide a fallback implementation. Essentially this PR enables running Rust on XP, but you still have to be careful to avoid non-XP portions of the standard library.

The major components of this PR are:

* Support for a new `i686-pc-windows-msvc` triple. This primarily involves a lot of build system hackery, but there are also a number of floating point functions which had to get switched up a bit.
* All APIs not available on Windows are now accessed through our dynamic-detection mechanism
* Mutexes on Windows were rewritten to use SRWLOCK as an optimization but can fall back to CRITICAL_SECTION.
2015-06-28 03:57:07 +00:00
Jared Roesch
15bc4a30c3 Address nits 2015-06-27 19:52:25 -07:00
Alex Crichton
10b103af48 std: Fix Windows XP compatibility
This commit enables executables linked against the standard library to run on
Windows XP. There are two main components of this commit:

* APIs not available on XP are shimmed to have a fallback implementation and use
  runtime detection to determine if they are available.
* Mutexes on Windows were reimplemented to use critical sections on XP where
  rwlocks are not available.

The APIs which are not available on XP are:

* SetFileInformationByHandle - this is just used by `File::truncate` and that
  function just returns an error now.
* SetThreadStackGuarantee - this is used by the stack overflow support on
  windows, but if this isn't available then it's just ignored (it seems
  non-critical).
* All condition variable APIs are missing - the shims added for these apis
  simply always panic for now. We may eventually provide a fallback
  implementation, but for now the standard library does not rely on condition
  variables for normal use.
* RWLocks, like condition variables, are missing entirely. The same story for
  condition variables is taken here. These APIs are all now panicking stubs as
  the standard library doesn't rely on RWLocks for normal use.

Currently, as an optimization, we use SRWLOCKs for the standard `sync::Mutex`
implementation on Windows, which is indeed required for normal operation of the
standard library. To allow the standard library to run on XP, this commit
reimplements mutexes on Windows to use SRWLOCK instances *if available* and
otherwise a CriticalSection is used (with some checking for recursive
locking).

With all these changes put together, a 32-bit MSVC-built executable can run on
Windows XP and print "hello world"

Closes #12842
Closes #19992
Closes #24776
2015-06-27 19:45:24 -07:00
Richo Healey
9e58fb85ef rt: Update comment for new location of unwind 2015-06-27 19:25:55 -07:00
Richo Healey
ba7b47eb55 rustc_driver: Fix incorrect comment 2015-06-27 18:27:00 -07:00
Jared Roesch
e5b3684872 Remove ClosureTyper impl for FnCtxt 2015-06-27 14:26:13 -07:00
Jared Roesch
480cd8fe67 Ground work for replacing the ClosureTyper trait 2015-06-27 14:15:49 -07:00
Jared Roesch
79d02895ff Begin refactor type checking state
This first patch starts by moving around pieces of state related to
type checking. The goal is to slowly unify the type checking state
into a single typing context. This initial patch moves the
ParameterEnvironment into the InferCtxt and moves shared tables
from Inherited and ty::ctxt into their own struct Tables. This
is the foundational work to refactoring the type checker to
enable future evolution of the language and tooling.
2015-06-27 13:43:20 -07:00
Alex Crichton
8790958237 std: Avoid missing fns on i686-pc-windows-msvc
It turns out that the 32-bit toolchain for MSVC has many of these functions as
`static inline` functions in header files so there's not actually a symbol for
Rust to call. All of the implementations just cast floats to their 64-bit
variants and then cast back to 32-bit at the end, so the standard library now
takes this strategy.
2015-06-27 13:02:18 -07:00
Alex Crichton
5de665e8b3 rustc_back: Learn about i686-pc-windows-msvc
This commit adds the i686-pc-windows-msvc triple to the compiler's repertoire of
triples to prepare for targeting 32-bit MSVC.
2015-06-27 13:02:18 -07:00
Alex Crichton
ae36d4f72a mk: Add support for i686-pc-windows-msvc
This commit modifies the configure script and our makefiles to support building
32-bit MSVC targets. The MSVC toolchain is now parameterized over whether it can
produce a 32-bit or 64-bit binary. The configure script was updated to export
more variables at configure time, and the makefiles were rejiggered to
selectively reexport the relevant environment variables for the applicable
targets they're going to run for.
2015-06-27 13:02:18 -07:00
bors
8fa2185e0b Auto merge of #26621 - tshepang:missed-removal, r=steveklabnik
Should have happened in 69abc12b00
2015-06-27 17:40:59 +00:00
Christian Persson
d6159b7fe0 Clarifying deallocation order of resources within same scope 2015-06-27 16:58:18 +02:00
bors
2ba46f8bbc Auto merge of #26616 - Manishearth:rollup, r=Manishearth
- Successful merges: #26565, #26584, #26596, #26603
- Failed merges:
2015-06-27 14:53:15 +00:00
Tshepang Lekhonkhobe
7d0198d5d2 test: fix some indents 2015-06-27 15:45:48 +02:00
Tshepang Lekhonkhobe
ca0601a1c2 std: someone missed removing this doc and the annotations
Should have happened in 69abc12b00
2015-06-27 15:25:20 +02:00
bors
b36ae01946 Auto merge of #26609 - huonw:align, r=alexcrichton
These will first be deprecated in 1.2.0, not 1.1.0.
2015-06-27 13:02:17 +00:00
Guillaume Gomez
d73cc56565 Add E0109 error explanation 2015-06-27 14:23:53 +02:00
bors
04daae77be Auto merge of #26579 - Techern:start-12-doc, r=brson
At the moment, it only mentions the fix to parallel codegen.

I was going to add more, but I have to go for a while - If this isn't reviewed when I get back, I'll remove it and resubmit it after filling in more :)
2015-06-27 09:54:15 +00:00
Manish Goregaokar
6dd33b459b Rollup merge of #26603 - Gankro:ref, r=steveklabnik
Quick poll of basically the entire core team says this is ok.
2015-06-27 14:18:47 +05:30
Manish Goregaokar
0bf0ea3a52 Rollup merge of #26596 - richo:richo-cleanup-macros, r=alexcrichton 2015-06-27 14:18:47 +05:30
Manish Goregaokar
1ce9b5927e Rollup merge of #26584 - omasanori:fix-26537, r=alexcrichton
Fix #26537.
2015-06-27 14:18:47 +05:30
Manish Goregaokar
ec232c8d93 Rollup merge of #26565 - Techern:ignore-kdevelop, r=brson
This is just a simple change to ignore KDevelop 4 (and pre-release versions of KDevelop 5) project files.
2015-06-27 14:18:47 +05:30
bors
650566ef2a Auto merge of #26575 - eddyb:tycx, r=nikomatsakis
Next step towards split local/global type contexts, after #26351.
cc @rust-lang/compiler @jroesch
2015-06-27 07:32:56 +00:00
bors
d3c03d0987 Auto merge of #26569 - alexcrichton:msvc-llvm-update, r=brson
Now that LLVM has been updated, the only remaining roadblock to implementing
unwinding for MSVC is to fill out the runtime support in `std::rt::unwind::seh`.
This commit does precisely that, fixing up some other bits and pieces along the
way:

* The `seh` unwinding module now uses `RaiseException` to initiate a panic.
* The `rust_try.ll` file was rewritten for MSVC (as it's quite different) and is
  located at `rust_try_msvc_64.ll`, only included on MSVC builds for now.
* The personality function for all landing pads generated by LLVM is hard-wired
  to `__C_specific_handler` instead of the standard `rust_eh_personality` lang
  item. This is required to get LLVM to emit SEH unwinding information instead
  of DWARF unwinding information. This also means that on MSVC the
  `rust_eh_personality` function is entirely unused (but is defined as it's a
  lang item).

More details about how panicking works on SEH can be found in the
`rust_try_msvc_64.ll` or `seh.rs` files, but I'm always open to adding more
comments!

A key aspect of this PR is missing, however, which is that **unwinding is still
turned off by default for MSVC**. There is a [bug in llvm][llvm-bug] which
causes optimizations to inline enough landing pads that LLVM chokes. If the
compiler is optimized at `-O1` (where inlining isn't enabled) then it can
bootstrap with unwinding enabled, but when optimized at `-O2` (inlining is
enabled) then it hits a fatal LLVM error.

[llvm-bug]: https://llvm.org/bugs/show_bug.cgi?id=23884
2015-06-27 05:06:22 +00:00
bors
773052a608 Auto merge of #26574 - brson:relnotes-fix, r=alexcrichton
My bad!
2015-06-27 02:43:00 +00:00
Cruz Julian Bishop
1aabbd01c3 Initial documentation for 1.2.0, uploading to test markdown 2015-06-27 09:16:11 +10:00
bors
cb7d062155 Auto merge of #26605 - Ms2ger:raw-doc, r=alexcrichton 2015-06-26 22:44:44 +00:00
Huon Wilson
0f6d4aa786 core: fix deprecation since version of align_of_min.
These will first be deprecated in 1.2.0, not 1.1.0.
2015-06-26 15:00:31 -07:00
Ms2ger
532235be27 Use Box::into_raw rather than the deprecated boxed::into_raw in tests and documentation. 2015-06-26 22:29:40 +02:00
bors
1032384661 Auto merge of #26568 - barosl:rel-notes-refs, r=alexcrichton
I found some typos in the upcoming 1.1 release note. I corrected them, but I wanted to go further. So I wrote a script that checks the integrity of the Markdown references, and ran it against `RELEASES.md`.

This commit fixes some trivial cases, but also removes the following "unused" references:

- [`Iterator::cloned`](http://doc.rust-lang.org/nightly/core/iter/trait.Iterator.html#method.cloned)
- [`thread::scoped`](http://static.rust-lang.org/doc/master/std/thread/fn.scoped.html)
- [`Debug` improvements](https://github.com/rust-lang/rfcs/blob/master/text/0640-debug-improvements.md)
- [Rebalancing coherence.](https://github.com/rust-lang/rfcs/pull/1023)

However, I think there's a possibility that these features might need to get descriptions as well. How do you feel about it?
2015-06-26 20:09:13 +00:00
Alexis Beingessner
9001da658a make book match reference 2015-06-26 12:06:05 -07:00
Alexis Beingessner
c98e46c7ca accessing private fields is not safe, and io isn't scary 2015-06-26 11:44:02 -07:00
Guillaume Gomez
0d74311e2b Add E0088 error explanation 2015-06-26 19:13:26 +02:00
Richo Healey
30cde078c6 std: clean up duplicated attrs and comment on panic 2015-06-26 09:53:56 -07:00
bors
2cb8a31e7c Auto merge of #26595 - dotdash:fca_slice, r=eddyb
Storing them as FCAs is a regression from the recent change that made
fat pointers immediate return values so that they are passed in
registers instead of memory.
2015-06-26 15:07:27 +00:00
Björn Steinbrink
2051b3e28f Avoid storing fat pointers as first class aggregates
Storing them as FCAs is a regression from the recent change that made
fat pointers immediate return values so that they are passed in
registers instead of memory.
2015-06-26 16:40:51 +02:00
Guillaume Gomez
6c88a2833d Add E0091 error explanation
Part of #24407.
cc @michaelsproul
2015-06-26 13:39:39 +02:00
Eduard Burtescu
ad66c215aa rustc: switch most remaining middle::ty functions to methods. 2015-06-26 07:34:57 +03:00
Eduard Burtescu
5cedd66a6c rustc: remove 3 dead functions in middle::ty. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
6db5126240 rustc: make ty::mk_* constructors into methods on ty::ctxt. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
2332765cbc rustc: prefer unqualified ctxt to ty::ctxt in middle::ty. 2015-06-26 07:34:56 +03:00
Eduard Burtescu
59935f70e0 rustc: move some functions in middle::ty working on Ty to methods. 2015-06-26 07:34:56 +03:00