]> git.lizzy.rs Git - rust.git/log
rust.git
10 years agofix cross-crate destructor inlining
Daniel Micay [Thu, 31 Oct 2013 23:44:25 +0000 (19:44 -0400)]
fix cross-crate destructor inlining

Closes #7793

10 years agoauto merge of #10167 : briantdawn/rust/master, r=cmr
bors [Thu, 31 Oct 2013 17:31:56 +0000 (10:31 -0700)]
auto merge of #10167 : briantdawn/rust/master, r=cmr

To keep consistency with the word "borrowing" I suppose an alternate way to write this could be "Having an object borrow an immutable pointer freezes it and prevents mutation".

10 years agoauto merge of #10193 : osaut/rust/Fix_install, r=huonw
bors [Thu, 31 Oct 2013 14:46:50 +0000 (07:46 -0700)]
auto merge of #10193 : osaut/rust/Fix_install, r=huonw

Fix missing parentheses coming from a previous substitution '$(PREFIX_ROOT)' to  '$(CFG_MANDIR' on 1c4a348b072a

10 years agoauto merge of #10189 : alexcrichton/rust/inner-statics, r=cmr
bors [Thu, 31 Oct 2013 11:46:34 +0000 (04:46 -0700)]
auto merge of #10189 : alexcrichton/rust/inner-statics, r=cmr

Closes #9186

10 years agoFix missing parenthesis in a previous substitution '$(PREFIX_ROOT)' to '$(CFG_MANDIR...
Olivier Saut [Thu, 31 Oct 2013 10:04:39 +0000 (11:04 +0100)]
Fix missing parenthesis in a previous substitution '$(PREFIX_ROOT)' to  '$(CFG_MANDIR' on 1c4a348b072a

10 years agoauto merge of #10180 : alexcrichton/rust/flush-default, r=brson
bors [Thu, 31 Oct 2013 09:16:40 +0000 (02:16 -0700)]
auto merge of #10180 : alexcrichton/rust/flush-default, r=brson

Closes #9126

10 years agoauto merge of #10166 : brson/rust/meta, r=alexcrichton
bors [Thu, 31 Oct 2013 06:41:22 +0000 (23:41 -0700)]
auto merge of #10166 : brson/rust/meta, r=alexcrichton

This doesn't fix #623 but works around it by limiting the grammar.

10 years agoauto merge of #10164 : brson/rust/configure, r=brson
bors [Thu, 31 Oct 2013 04:06:33 +0000 (21:06 -0700)]
auto merge of #10164 : brson/rust/configure, r=brson

Rebase of #9990

10 years agoForbid type parameters in inner statics
Alex Crichton [Wed, 30 Oct 2013 23:44:55 +0000 (16:44 -0700)]
Forbid type parameters in inner statics

Closes #9186

10 years agoauto merge of #10120 : Kimundi/rust/remove_sys, r=alexcrichton
bors [Thu, 31 Oct 2013 01:31:26 +0000 (18:31 -0700)]
auto merge of #10120 : Kimundi/rust/remove_sys, r=alexcrichton

- `begin_unwind` and `fail!` is now generic over any `T: Any + Send`.
- Every value you fail with gets boxed as an `~Any`.
- Because of implementation issues, `&'static str` and `~str` are still
  handled specially behind the scenes.
- Changed the big macro source string in libsyntax to a raw string
  literal, and enabled doc comments there.

10 years agoMake Writer::flush a no-op default method
Alex Crichton [Wed, 30 Oct 2013 22:10:32 +0000 (15:10 -0700)]
Make Writer::flush a no-op default method

Closes #9126

10 years agosyntax: Forbid non-string literals in meta items. #623
Brian Anderson [Wed, 30 Oct 2013 00:47:11 +0000 (17:47 -0700)]
syntax: Forbid non-string literals in meta items. #623

10 years agoauto merge of #10172 : pythonesque/rust/issue-9890, r=thestinger
bors [Wed, 30 Oct 2013 20:26:29 +0000 (13:26 -0700)]
auto merge of #10172 : pythonesque/rust/issue-9890, r=thestinger

10 years agoPrepared `std::sys` for removal, and made `begin_unwind` simpler
Marvin Löbel [Sun, 27 Oct 2013 19:12:40 +0000 (20:12 +0100)]
Prepared `std::sys` for removal, and made `begin_unwind` simpler

- `begin_unwind` is now generic over any `T: Any + Send`.
- Every value you fail with gets boxed as an `~Any`.
- Because of implementation details, `&'static str` and `~str` are still
  handled specially behind the scenes.
- Changed the big macro source string in libsyntax to a raw string
  literal, and enabled doc comments there.

10 years agoSpecial-casing iter_vec_raw to use a counter for zero-size types (Closes #9890).
Joshua Yanovski [Wed, 30 Oct 2013 06:34:43 +0000 (23:34 -0700)]
Special-casing iter_vec_raw to use a counter for zero-size types (Closes #9890).

10 years agoauto merge of #10123 : klutzy/rust/fix-7507, r=alexcrichton
bors [Wed, 30 Oct 2013 11:36:26 +0000 (04:36 -0700)]
auto merge of #10123 : klutzy/rust/fix-7507, r=alexcrichton

This patch fixes rustc to emit explicit error if LHS of assignment is
not allowed.

Fixes #7507
Fixes #7508

10 years agoauto merge of #10168 : reedlepee123/rust/priv_fields, r=brson
bors [Wed, 30 Oct 2013 10:31:20 +0000 (03:31 -0700)]
auto merge of #10168 : reedlepee123/rust/priv_fields, r=brson

....rs #8180

10 years agotest: Add test for LHS expression check
klutzy [Mon, 28 Oct 2013 16:27:12 +0000 (01:27 +0900)]
test: Add test for LHS expression check

10 years agorustc: Check LHS expression of assignment
klutzy [Mon, 28 Oct 2013 16:05:33 +0000 (01:05 +0900)]
rustc: Check LHS expression of assignment

Fixes #7507
Fixes #7508

10 years agoauto merge of #9613 : jld/rust/enum-discrim-size.r0, r=alexcrichton
bors [Wed, 30 Oct 2013 07:31:23 +0000 (00:31 -0700)]
auto merge of #9613 : jld/rust/enum-discrim-size.r0, r=alexcrichton

Allows an enum with a discriminant to use any of the primitive integer types to store it.  By default the smallest usable type is chosen, but this can be overridden with an attribute: `#[repr(int)]` etc., or `#[repr(C)]` to match the target's C ABI for the equivalent C enum.

Also adds a lint pass for using non-FFI safe enums in extern declarations, checks that specified discriminants can be stored in the specified type if any, and fixes assorted code that was assuming int.

10 years agoFix check-fast breakage in new enum test.
Jed Davis [Wed, 30 Oct 2013 07:13:17 +0000 (00:13 -0700)]
Fix check-fast breakage in new enum test.

10 years agoauto merge of #10163 : brson/rust/rtcxx, r=alexcrichton
bors [Wed, 30 Oct 2013 04:26:20 +0000 (21:26 -0700)]
auto merge of #10163 : brson/rust/rtcxx, r=alexcrichton

10 years agoauto merge of #10161 : brson/rust/upcall, r=alexcrichton
bors [Wed, 30 Oct 2013 03:16:28 +0000 (20:16 -0700)]
auto merge of #10161 : brson/rust/upcall, r=alexcrichton

10 years agoauto merge of #10149 : chris-morgan/rust/2013-10-29-vim-updates, r=erickt
bors [Wed, 30 Oct 2013 02:07:55 +0000 (19:07 -0700)]
auto merge of #10149 : chris-morgan/rust/2013-10-29-vim-updates, r=erickt

- Syntax updates for the regular prelude changes.
- Fix an issue with the indentation of the second line of wrapped function arguments.

10 years agochanged all the impl<T> to impl<T: Send> in rt::comm.rs and libstd::comm.rs #8180
reedlepee [Wed, 30 Oct 2013 01:10:40 +0000 (06:40 +0530)]
changed all the impl<T> to impl<T: Send> in rt::comm.rs and libstd::comm.rs #8180

10 years agoauto merge of #10160 : alexcrichton/rust/snapshots, r=pcwalton
bors [Wed, 30 Oct 2013 01:01:50 +0000 (18:01 -0700)]
auto merge of #10160 : alexcrichton/rust/snapshots, r=pcwalton

Notably this deletes `std::rt::uv`

10 years agoFixed incorrect usage of 'Borrowing'.
Brian [Wed, 30 Oct 2013 00:47:42 +0000 (00:47 +0000)]
Fixed incorrect usage of 'Borrowing'.

10 years agort: Remove array_list.h
Brian Anderson [Wed, 30 Oct 2013 00:04:20 +0000 (17:04 -0700)]
rt: Remove array_list.h

10 years agort: Remove rust_thread::detach
Brian Anderson [Wed, 30 Oct 2013 00:02:37 +0000 (17:02 -0700)]
rt: Remove rust_thread::detach

10 years agort: Remove four unused upcalls
Brian Anderson [Tue, 29 Oct 2013 23:49:38 +0000 (16:49 -0700)]
rt: Remove four unused upcalls

10 years agoauto merge of #10145 : TeXitoi/rust/issues-2913, r=bstrie
bors [Tue, 29 Oct 2013 23:26:25 +0000 (16:26 -0700)]
auto merge of #10145 : TeXitoi/rust/issues-2913, r=bstrie

The old version didn't follow shootout's directives: no memory were
deallocated.  At the same time, parallelisation of the computation.

fix #2913

10 years agosupport for GNU configure syntax corrections: patch from brson
Heather [Fri, 25 Oct 2013 04:57:56 +0000 (08:57 +0400)]
support for GNU configure syntax corrections: patch from brson

10 years agoCorrect prefix / CFG_PREFIX work in configure / install.mk
Heather [Tue, 22 Oct 2013 04:35:45 +0000 (08:35 +0400)]
Correct prefix / CFG_PREFIX work in configure / install.mk

10 years agosupport for GNU configure syntax
Heather [Mon, 21 Oct 2013 09:18:21 +0000 (13:18 +0400)]
support for GNU configure syntax

10 years agoRegister new snapshots
Alex Crichton [Tue, 29 Oct 2013 21:14:34 +0000 (14:14 -0700)]
Register new snapshots

10 years agoauto merge of #10134 : reedlepee123/rust/priv_fields, r=brson
bors [Tue, 29 Oct 2013 22:11:30 +0000 (15:11 -0700)]
auto merge of #10134 : reedlepee123/rust/priv_fields, r=brson

10 years agoauto merge of #10140 : brson/rust/comm, r=alexcrichton
bors [Tue, 29 Oct 2013 20:37:08 +0000 (13:37 -0700)]
auto merge of #10140 : brson/rust/comm, r=alexcrichton

Just putting this public trait into the correct module.

10 years agoauto merge of #10136 : hatahet/rust/master, r=alexcrichton
bors [Tue, 29 Oct 2013 19:02:59 +0000 (12:02 -0700)]
auto merge of #10136 : hatahet/rust/master, r=alexcrichton

Fixes #10077

10 years agoauto merge of #10132 : pcwalton/rust/proc, r=pcwalton
bors [Tue, 29 Oct 2013 17:52:25 +0000 (10:52 -0700)]
auto merge of #10132 : pcwalton/rust/proc, r=pcwalton

the feature gate for `once fn` if used with the `~` sigil.

r? @brson

10 years agolibrustc: Implement the `proc` type as sugar for `~once fn` and `proc`
Patrick Walton [Mon, 28 Oct 2013 22:22:49 +0000 (15:22 -0700)]
librustc: Implement the `proc` type as sugar for `~once fn` and `proc`
notation for closures, and disable the feature gate for `once fn` if
used with the `~` sigil.

10 years agoauto merge of #10058 : alexcrichton/rust/uv-crate, r=brson
bors [Tue, 29 Oct 2013 16:36:47 +0000 (09:36 -0700)]
auto merge of #10058 : alexcrichton/rust/uv-crate, r=brson

This is one of the final steps needed to complete #9128. It still needs a little bit of polish before closing that issue, but it's in a pretty much "done" state now.

The idea here is that the entire event loop implementation using libuv is now housed in `librustuv` as a completely separate library. This library is then injected (via `extern mod rustv`) into executable builds (similarly to how libstd is injected, tunable via `#[no_uv]`) to bring in the "rust blessed event loop implementation."

Codegen-wise, there is a new `event_loop_factory` language item which is tagged on a function with 0 arguments returning `~EventLoop`. This function's symbol is then inserted into the crate map for an executable crate, and if there is no definition of the `event_loop_factory` language item then the value is null.

What this means is that embedding rust as a library in another language just got a little harder. Libraries don't have crate maps, which means that there's no way to find the event loop implementation to spin up the runtime. That being said, it's always possible to build the runtime manually. This request also makes more runtime components public which should probably be public anyway. This new public-ness should allow custom scheduler setups everywhere regardless of whether you follow the `rt::start `path.

10 years agoPrevent unoptimized rustpkg tests from running out of stack.
Jed Davis [Tue, 29 Oct 2013 16:07:30 +0000 (09:07 -0700)]
Prevent unoptimized rustpkg tests from running out of stack.

The actual fix would be to make rustpkg use `rustc::monitor` so it picks
up anything special that rustc needs, but for now let's keep the tests
from breaking.

10 years agoFix type_of for enums to not lose data in some cases when immediate.
Jed Davis [Sat, 26 Oct 2013 19:12:53 +0000 (12:12 -0700)]
Fix type_of for enums to not lose data in some cases when immediate.

The previous implementation, when combined with small discriminants and
immediate types, caused problems for types like `Either<u8, i16>` which
are now small enough to be immediate and can have fields intersecting
the highest-alignment variant's alignment padding (which LLVM doesn't
preserve).  So let's not do that.

10 years agoAdd another discriminant-size-related test, this time with fields.
Jed Davis [Sat, 26 Oct 2013 04:22:00 +0000 (21:22 -0700)]
Add another discriminant-size-related test, this time with fields.

10 years agoWork around const_eval issues by changing signed integer `min_value`s.
Jed Davis [Sun, 20 Oct 2013 18:13:41 +0000 (11:13 -0700)]
Work around const_eval issues by changing signed integer `min_value`s.

Otherwise, run-pass/deriving-primitive.rs breaks on 32-bit platforms,
because `int::min_value` is `0xffffffff7fffffff` when evaluated for the
discriminant declaration.

10 years agoAdd tests for enum discriminant sizing.
Jed Davis [Sun, 29 Sep 2013 21:00:34 +0000 (14:00 -0700)]
Add tests for enum discriminant sizing.

10 years agoC-like enums are not always immediate
Jed Davis [Thu, 3 Oct 2013 20:59:34 +0000 (13:59 -0700)]
C-like enums are not always immediate

10 years agoAdjust reflection for the possibility of discriminants larger than int.
Jed Davis [Sun, 29 Sep 2013 09:20:11 +0000 (02:20 -0700)]
Adjust reflection for the possibility of discriminants larger than int.

Not only can discriminants be smaller than int now, but they can be
larger than int on 32-bit targets.  This has obvious implications for the
reflection interface.  Without this change, things fail with LLVM
assertions when we try to "extend" i64 to i32.

10 years agoYet more neatening
Jed Davis [Thu, 3 Oct 2013 20:58:01 +0000 (13:58 -0700)]
Yet more neatening

10 years agoAssorted cleanups suggested by reviewers.
Jed Davis [Wed, 25 Sep 2013 16:41:10 +0000 (09:41 -0700)]
Assorted cleanups suggested by reviewers.

10 years agoUnbreak the debuginfo tests.
Jed Davis [Sat, 31 Aug 2013 21:41:35 +0000 (14:41 -0700)]
Unbreak the debuginfo tests.

The variant used in debug-info/method-on-enum.rs had its layout changed
by the smaller discriminant, so that the `u32` no longer overlaps both
of the `u16`s, and thus the debugger is printing partially uninitialized
data when it prints the wrong variant.

Thus, the test runner is modified to accept wildcards (using a string
that should be unlikely to occur literally), to allow for this.

10 years agoCheck repr attribute consistency at check time, not translation.
Jed Davis [Fri, 30 Aug 2013 06:45:06 +0000 (23:45 -0700)]
Check repr attribute consistency at check time, not translation.

Note that raising an error during trans doesn't stop the compile or cause
rustc to exit with a failure status, currently, so this is of more than
cosmetic importance.

10 years agoAdd repr attributes in various places that need them.
Jed Davis [Thu, 29 Aug 2013 01:21:04 +0000 (18:21 -0700)]
Add repr attributes in various places that need them.

10 years agoFix multiple mistakes in adt::is_ffi_safe
Jed Davis [Thu, 3 Oct 2013 17:11:24 +0000 (10:11 -0700)]
Fix multiple mistakes in adt::is_ffi_safe

10 years agoLint non-FFI-safe enums.
Jed Davis [Sun, 2 Jun 2013 20:03:35 +0000 (13:03 -0700)]
Lint non-FFI-safe enums.

10 years agoInitial implementation of enum discrimnant sizing.
Jed Davis [Mon, 1 Jul 2013 05:42:30 +0000 (22:42 -0700)]
Initial implementation of enum discrimnant sizing.

Allows an enum with a discriminant to use any of the primitive integer
types to store it.  By default the smallest usable type is chosen, but
this can be overridden with an attribute: `#[repr(int)]` etc., or
`#[repr(C)]` to match the target's C ABI for the equivalent C enum.

This commit breaks a few things, due to transmutes that now no longer
match in size, or u8 enums being passed to C that expects int, or
reflection; later commits on this branch fix them.

10 years agoAdd parser for `#[repr(...)]`; nothing uses it yet.
Jed Davis [Fri, 24 May 2013 22:08:45 +0000 (18:08 -0400)]
Add parser for `#[repr(...)]`; nothing uses it yet.

Also export enum attrs into metadata, and add a convenient interface for
obtaining the repr hint from either a local or remote definition.

10 years agoremoved extra line
reedlepee [Tue, 29 Oct 2013 09:54:36 +0000 (15:24 +0530)]
removed extra line

10 years agoIndentation
reedlepee [Tue, 29 Oct 2013 09:53:56 +0000 (15:23 +0530)]
Indentation

10 years agoupdated the places where the struct is created #7427
reedlepee [Tue, 29 Oct 2013 09:38:59 +0000 (15:08 +0530)]
updated the places where the struct is created #7427

10 years agoChanged name to non_copyable #7427
reedlepee [Tue, 29 Oct 2013 00:10:32 +0000 (05:40 +0530)]
Changed name to non_copyable #7427

10 years agoAdded the comment #7427
reedlepee [Mon, 28 Oct 2013 23:50:21 +0000 (05:20 +0530)]
Added the comment #7427

10 years agoReplaced empty destructors with NonCopyable #7427
reedlepee [Mon, 28 Oct 2013 23:31:56 +0000 (05:01 +0530)]
Replaced empty destructors with NonCopyable #7427
closes #7427

10 years agoMove rust's uv implementation to its own crate
Alex Crichton [Tue, 22 Oct 2013 22:13:18 +0000 (15:13 -0700)]
Move rust's uv implementation to its own crate

There are a few reasons that this is a desirable move to take:

1. Proof of concept that a third party event loop is possible
2. Clear separation of responsibility between rt::io and the uv-backend
3. Enforce in the future that the event loop is "pluggable" and replacable

Here's a quick summary of the points of this pull request which make this
possible:

* Two new lang items were introduced: event_loop, and event_loop_factory.
  The idea of a "factory" is to define a function which can be called with no
  arguments and will return the new event loop as a trait object. This factory
  is emitted to the crate map when building an executable. The factory doesn't
  have to exist, and when it doesn't then an empty slot is in the crate map and
  a basic event loop with no I/O support is provided to the runtime.

* When building an executable, then the rustuv crate will be linked by default
  (providing a default implementation of the event loop) via a similar method to
  injecting a dependency on libstd. This is currently the only location where
  the rustuv crate is ever linked.

* There is a new #[no_uv] attribute (implied by #[no_std]) which denies
  implicitly linking to rustuv by default

Closes #5019

10 years agoauto merge of #10142 : pythonesque/rust/issue-8263, r=catamorphism
bors [Tue, 29 Oct 2013 14:41:48 +0000 (07:41 -0700)]
auto merge of #10142 : pythonesque/rust/issue-8263, r=catamorphism

This is, I think, the minimal change required.  I would have included a test but as far as I can tell there is currently no way to precisely test that the span for an error underlines the correct word.  I did verify it manually.

10 years agoauto merge of #10141 : kmcallister/rust/current_stack_segment, r=alexcrichton
bors [Tue, 29 Oct 2013 13:36:43 +0000 (06:36 -0700)]
auto merge of #10141 : kmcallister/rust/current_stack_segment, r=alexcrichton

This was done in 2145de8c and reverted in 0ada7c7f, but Servo needs it.

Closes #10065.

r? @brson

10 years agoFix Vim indent for wrapped function arguments.
Chris Morgan [Tue, 29 Oct 2013 13:27:15 +0000 (00:27 +1100)]
Fix Vim indent for wrapped function arguments.

10 years agoUpdate prelude items in Vim syntax file.
Chris Morgan [Tue, 29 Oct 2013 13:26:25 +0000 (00:26 +1100)]
Update prelude items in Vim syntax file.

10 years agoauto merge of #10135 : alexcrichton/rust/snapshots, r=thestinger
bors [Tue, 29 Oct 2013 09:01:50 +0000 (02:01 -0700)]
auto merge of #10135 : alexcrichton/rust/snapshots, r=thestinger

Plus some migration from `let mut this = self` to `mut self` (yay!)

10 years agorewrite shootout-binarytrees.rs to match shootout directives
Guillaume Pinot [Tue, 29 Oct 2013 07:56:16 +0000 (08:56 +0100)]
rewrite shootout-binarytrees.rs to match shootout directives

The old version didn't follow shootout's directives: no memory were
deallocated.  At the same time, parallelisation of the computation.

fix #2913

10 years ago#8263 part 2: Adding struct name.
Joshua Yanovski [Tue, 29 Oct 2013 06:30:26 +0000 (23:30 -0700)]
#8263 part 2: Adding struct name.

10 years agoField identifiers now include specific spans (Closes #8263).
Joshua Yanovski [Tue, 29 Oct 2013 02:22:42 +0000 (19:22 -0700)]
Field identifiers now include specific spans (Closes #8263).

10 years agoauto merge of #10127 : thestinger/rust/cold, r=pcwalton
bors [Tue, 29 Oct 2013 05:51:51 +0000 (22:51 -0700)]
auto merge of #10127 : thestinger/rust/cold, r=pcwalton

This allows a function to marked as infrequently called, resulting in
any branch calling it to be considered colder.

10 years agort::task: Make current_stack_segment public again
Keegan McAllister [Tue, 29 Oct 2013 03:28:41 +0000 (20:28 -0700)]
rt::task: Make current_stack_segment public again

This was done in 2145de8c and reverted in 0ada7c7f, but Servo needs it.

Closes #10065.

10 years agoauto merge of #10117 : huonw/rust/dead-visits, r=sanxiyn
bors [Tue, 29 Oct 2013 03:51:30 +0000 (20:51 -0700)]
auto merge of #10117 : huonw/rust/dead-visits, r=sanxiyn

Used nowhere, and these are likely incorrect anyway: self needs to be
dereferenced once more otherwise the method calls will be reusing the
current impl... bam! Infinite recursion.

10 years agostd: Move the SendDeferred trait to std::comm
Brian Anderson [Tue, 29 Oct 2013 02:51:28 +0000 (19:51 -0700)]
std: Move the SendDeferred trait to std::comm

10 years agoCapitalize statics in f32 and f64 mods
Ziad Hatahet [Tue, 29 Oct 2013 00:34:33 +0000 (17:34 -0700)]
Capitalize statics in f32 and f64 mods

Fixes #10077

10 years agoauto merge of #10133 : alexcrichton/rust/another-error, r=thestinger
bors [Tue, 29 Oct 2013 02:26:23 +0000 (19:26 -0700)]
auto merge of #10133 : alexcrichton/rust/another-error, r=thestinger

This cropped up on the bsd bot, and if it's an error that gets thrown then it's
fine to just whitelist another type of error in the test.

10 years agoRegister new snapshots
Alex Crichton [Mon, 28 Oct 2013 23:56:24 +0000 (16:56 -0700)]
Register new snapshots

10 years agoauto merge of #10113 : thestinger/rust/expect, r=cmr
bors [Mon, 28 Oct 2013 23:07:14 +0000 (16:07 -0700)]
auto merge of #10113 : thestinger/rust/expect, r=cmr

LLVM is unable to determine this for most cases.

http://llvm-reviews.chandlerc.com/D2034 needs to land upstream before
this is going to have an effect. It's harmless to start generating the
expect hint now.

10 years agoauto merge of #10110 : catamorphism/rust/rustpkg-dependency-build-dir, r=metajack
bors [Mon, 28 Oct 2013 20:51:39 +0000 (13:51 -0700)]
auto merge of #10110 : catamorphism/rust/rustpkg-dependency-build-dir, r=metajack

r? @metajack When invoked with the --rust-path-hack flag, rustpkg was correctly building
the package into the default workspace (and not into the build/ subdirectory of the
parent directory of the source directory), but not correctly putting the output
for any dependencies into the default workspace as well.

Spotted by Jack.

10 years agoMake some more rt components public
Alex Crichton [Tue, 22 Oct 2013 22:09:23 +0000 (15:09 -0700)]
Make some more rt components public

Primarily this makes the Scheduler and all of its related interfaces public. The
reason for doing this is that currently any extern event loops had no access to
the scheduler at all. This allows third-party event loops to manipulate the
scheduler, along with allowing the uv event loop to live inside of its own
crate.

10 years agoadd support for the `cold` function attribute
Daniel Micay [Mon, 21 Oct 2013 03:13:48 +0000 (23:13 -0400)]
add support for the `cold` function attribute

This allows a function to marked as infrequently called, resulting in
any branch calling it to be considered colder.

10 years agoauto merge of #10095 : huonw/rust/master, r=cmr
bors [Mon, 28 Oct 2013 19:06:26 +0000 (12:06 -0700)]
auto merge of #10095 : huonw/rust/master, r=cmr

Currently each line is a separate bullet point in a list: http://static.rust-lang.org/doc/master/std/task/fn.spawn_sched.html

10 years agoHandle another possible error in a unix pipe test
Alex Crichton [Mon, 28 Oct 2013 18:47:20 +0000 (11:47 -0700)]
Handle another possible error in a unix pipe test

This cropped up on the bsd bot, and if it's an error that gets thrown then it's
fine to just whitelist another type of error in the test.

10 years agoauto merge of #10079 : alexcrichton/rust/no-reader-util, r=brson
bors [Mon, 28 Oct 2013 17:56:34 +0000 (10:56 -0700)]
auto merge of #10079 : alexcrichton/rust/no-reader-util, r=brson

These methods are all excellent candidates for default methods, so there's no need to require extra imports of various traits. Additionally, this was able to remove all the weird underscores after the method names. Yay!

10 years agoRemove the extension traits for Readers/Writers
Alex Crichton [Sat, 26 Oct 2013 01:08:45 +0000 (18:08 -0700)]
Remove the extension traits for Readers/Writers

These methods are all excellent candidates for default methods, so there's no
need to require extra imports of various traits.

10 years agoauto merge of #10089 : pythonesque/rust/issue-7718, r=catamorphism
bors [Mon, 28 Oct 2013 16:51:32 +0000 (09:51 -0700)]
auto merge of #10089 : pythonesque/rust/issue-7718, r=catamorphism

Seems pretty straightforward, but please let me know if I'm doing something wrong or the test needs to be rewritten.

10 years agoauto merge of #10107 : thestinger/rust/immediate, r=huonw
bors [Mon, 28 Oct 2013 15:36:33 +0000 (08:36 -0700)]
auto merge of #10107 : thestinger/rust/immediate, r=huonw

10 years agoauto merge of #10094 : alexcrichton/rust/issue-8704, r=pcwalton
bors [Mon, 28 Oct 2013 13:41:40 +0000 (06:41 -0700)]
auto merge of #10094 : alexcrichton/rust/issue-8704, r=pcwalton

This drops more of the old C++ runtime to rather be written in rust. A few
features were lost along the way, but hopefully not too many. The main loss is
that there are no longer backtraces associated with allocations (rust doesn't
have a way of acquiring those just yet). Other than that though, I believe that
the rest of the debugging utilities made their way over into rust.

Closes #8704

10 years agoauto merge of #10093 : alexcrichton/rust/issue-8811, r=pcwalton
bors [Mon, 28 Oct 2013 12:36:31 +0000 (05:36 -0700)]
auto merge of #10093 : alexcrichton/rust/issue-8811, r=pcwalton

Closes #8811

10 years agosyntax: remove dead @mut Visitor impl (only used in tests).
Huon Wilson [Mon, 28 Oct 2013 08:20:26 +0000 (19:20 +1100)]
syntax: remove dead @mut Visitor impl (only used in tests).

Also, move some code only uses in the tests into the test module, and
replace some needless @mut ~[] with plain ~[].

10 years agoauto merge of #10083 : alexcrichton/rust/timer-port, r=pcwalton
bors [Mon, 28 Oct 2013 09:41:18 +0000 (02:41 -0700)]
auto merge of #10083 : alexcrichton/rust/timer-port, r=pcwalton

In addition to being able to sleep the current task, timers should be able to
create ports which get notified after a period of time.

Closes #10014

10 years agoauto merge of #9967 : Kimundi/rust/fail_cause_two, r=huonw
bors [Mon, 28 Oct 2013 08:26:16 +0000 (01:26 -0700)]
auto merge of #9967 : Kimundi/rust/fail_cause_two, r=huonw

# Summary

This PR allows the cause of a failure to be received in a task's future result and as the `Err` case of `task::try`, and also implements dynamic typing in form of an `Any` trait.

# Task failure

- `fail!` and related macros now accept 5 kinds of types: `~str`, `&'static str`, `std::send_str::SendStr`, `~std::any::Any` and `~T` where `T: Any + Send + 'static`
- `std::task::TaskResult` got transformed into an internal enum `std::rt::task::UnwindResult`,  and it's `Failure` variant now contains a value of enum type `UnwindReason`:
  - `UnwindReasonStr(SendStr)` maps to failing with a value of type `~str`, `&'static str` or `SendStr`.
  - `UnwindReasonAny(~Any)` maps to failing with an `~Any` or `~T` with `T: Send + 'static`.
  - `UnwindReasonLinked` maps to failing because the task got killed by linked failure.
- Instead, `std::task::TaskResult` is now a typedef for `Result<(), ~Any>`, and both `TaskBuilder`'s `future_result()` and `task::try` now work with a value of this type.
- `future_result()` no longer returns a `Port<TaskResult>`, instead it returns a wrapper `TaskResultPort` that implements `GenericPort` and `Peekable`, and which lazily allocates a `~` box and casts to `~Any` in case of failure with a `SendStr` or linked failure (for the latter case a unit struct `LinkedFailure` got added.)
- Because `fail!` collapses both `~str` and `&'static str` into a `SendStr`, checking if a task error value is a string will just require a `.is::<SendStr>()` check, with `~str` and `&'static str` only being possible in case of an explicit `fail!(~~"...")` or `fail!(~ (&"...") as ~Any)`:

# Any

- In order to allow failing with arbitrary data, the `Any` trait got implemented.
- It is being used in form of a trait object, usually `~Any` or `&Any`.
- `&Any`, `~Any` and `&mut Any` have a few extension methods implemented on them:
  - `is<T>(self) -> bool` returns true if the `Any` object contains type `T`
  - `as_ref<T>(self) -> Option<&T>` returns a reference to the contained type, if it is `T`
  - `as_mut<T>(self) -> Option<&mut T>` returns a mutable reference to the contained type, if it is `T`
  - `move<T>(self) -> Option<~T>` allows to get the `~T` out of an `~Any` again.
- `Any` currently uses type descriptors as a type id for comparisons, which is
    - not reliable, as it is not guaranteed that every type has only one type descriptor.
    - But safe, as no two types share the same type descriptor.
- The implementation also a few `transmute`s, mostly to cast a `*Void` of the wrapped type into it's actual type `&T`, `&mut T` or `~T`.

# Other changes

- `std::unstable::UnsafeArc::try_unwrap` no longer uses `Either`, bringing us one step closer to removing that type.
- A few of the touched modules got their import lines sorted.
- A few stylistic cleanups here and there.

10 years agoAllow fail messages to be caught, and introduce the Any trait
Marvin Löbel [Fri, 11 Oct 2013 21:20:34 +0000 (23:20 +0200)]
Allow fail messages to be caught, and introduce the Any trait

Some code cleanup, sorting of import blocks

Removed std::unstable::UnsafeArc's use of Either

Added run-fail tests for the new FailWithCause impls

Changed future_result and try to return Result<(), ~Any>.

- Internally, there is an enum of possible fail messages passend around.
- In case of linked failure or a string message, the ~Any gets
  lazyly allocated in future_results recv method.
- For that, future result now returns a wrapper around a Port.
- Moved and renamed task::TaskResult into rt::task::UnwindResult
  and made it an internal enum.
- Introduced a replacement typedef `type TaskResult = Result<(), ~Any>`.

10 years agoauto merge of #10050 : gifnksm/rust/ratio-methods, r=pcwalton
bors [Mon, 28 Oct 2013 05:41:18 +0000 (22:41 -0700)]
auto merge of #10050 : gifnksm/rust/ratio-methods, r=pcwalton

After merging 0ada7c7, user code have not been able to access to `Ratio`'s numerator and denominator fields.
In some algorithms, it is needed to get an rational number's numerator or denominator, but keeping these fields private is necessary for guaranteeing that `Ratio` numbers are irreducible.
So, I added the getter methods `numer()` and `denom()`.

As a bonus, this commit adds utility methods relating to the ratio-integer conversion.

10 years agoauto merge of #9744 : DaGenix/rust/remove-crypto, r=alexcrichton
bors [Mon, 28 Oct 2013 04:36:31 +0000 (21:36 -0700)]
auto merge of #9744 : DaGenix/rust/remove-crypto, r=alexcrichton

Remove the Sha1, Sha2, MD5, and MD4 algorithms. SipHash is also cryptographically secure hash function and IsaacRng is a cryptographically secure RNG - I left those alone but removed comments that implied they were suitable for cryptographic use. I thought that MD4 was used for something by the compiler, but everything still seems to work with it removed, so, I guess not.

One thing that I'm not sure about - workcache.rs and workcache_support.rs (in librustpkg) both depend on Sha1. Without Sha1, the only hash function left is SipHash, so I switched that code over to use SipHash. The output size of SipHash is only 64-bits, however - much less than 160 for Sha1. I'm not sure this is a problem. Without other cryptographic hashes in the tree, I'm not sure what else to do. I considered moved Sha1 into librustpkg, but I don't know if that makes sense.

If merged, this closes #9300.

10 years agoauto merge of #10080 : brson/rust/sched_queue, r=brson
bors [Mon, 28 Oct 2013 03:21:29 +0000 (20:21 -0700)]
auto merge of #10080 : brson/rust/sched_queue, r=brson

Rebase and update of #9710

10 years agoauto merge of #10098 : alexcrichton/rust/attempts, r=alexcrichton
bors [Mon, 28 Oct 2013 01:41:25 +0000 (18:41 -0700)]
auto merge of #10098 : alexcrichton/rust/attempts, r=alexcrichton

It was pretty much a miracle that these tests were ever passing. They would
never have passed in the single threaded case because only one sigint in the
tests is ever generated, but when run in parallel two sigints will be generated.

10 years agoIntegrate the code in the digest and cryptoutil modules directly into the sha1 module.
Palmer Cox [Sat, 26 Oct 2013 20:49:51 +0000 (16:49 -0400)]
Integrate the code in the digest and cryptoutil modules directly into the sha1 module.