Skip to content

Commit 65838c3

Browse files
committed
---
yaml --- r: 65064 b: refs/heads/master c: 8daa5ec h: refs/heads/master v: v3
1 parent ccac5b4 commit 65838c3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+4652
-2551
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: f687b9d771fce39d1102ff13042a6dfc45f4bf8d
2+
refs/heads/master: 8daa5ec9eac7148674cd63e5281c56925a3bc7b7
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 18e3db7392d2d0697b7e27d6d986139960144d85
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9

trunk/doc/tutorial-tasks.md

Lines changed: 13 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -43,24 +43,22 @@ in the core and standard libraries, which are still under development
4343
and do not always present a consistent or complete interface.
4444

4545
For your reference, these are the standard modules involved in Rust
46-
concurrency at this writing:
46+
concurrency at this writing.
4747

48-
* [`core::task`] - All code relating to tasks and task scheduling,
49-
* [`core::comm`] - The message passing interface,
50-
* [`core::pipes`] - The underlying messaging infrastructure,
51-
* [`std::comm`] - Additional messaging types based on `core::pipes`,
52-
* [`std::sync`] - More exotic synchronization tools, including locks,
48+
* [`core::task`] - All code relating to tasks and task scheduling
49+
* [`core::comm`] - The message passing interface
50+
* [`core::pipes`] - The underlying messaging infrastructure
51+
* [`std::comm`] - Additional messaging types based on `core::pipes`
52+
* [`std::sync`] - More exotic synchronization tools, including locks
5353
* [`std::arc`] - The ARC (atomically reference counted) type,
54-
for safely sharing immutable data,
55-
* [`std::future`] - A type representing values that may be computed concurrently and retrieved at a later time.
54+
for safely sharing immutable data
5655

5756
[`core::task`]: core/task.html
5857
[`core::comm`]: core/comm.html
5958
[`core::pipes`]: core/pipes.html
6059
[`std::comm`]: std/comm.html
6160
[`std::sync`]: std/sync.html
6261
[`std::arc`]: std/arc.html
63-
[`std::future`]: std/future.html
6462

6563
# Basics
6664

@@ -72,7 +70,7 @@ closure in the new task.
7270

7371
~~~~
7472
# use core::io::println;
75-
# use core::task::spawn;
73+
use core::task::spawn;
7674
7775
// Print something profound in a different task using a named function
7876
fn print_message() { println("I am running in a different task!"); }
@@ -147,8 +145,8 @@ endpoint. Consider the following example of calculating two results
147145
concurrently:
148146

149147
~~~~
150-
# use core::task::spawn;
151-
# use core::comm::{stream, Port, Chan};
148+
use core::task::spawn;
149+
use core::comm::{stream, Port, Chan};
152150
153151
let (port, chan): (Port<int>, Chan<int>) = stream();
154152
@@ -235,7 +233,7 @@ Instead we can use a `SharedChan`, a type that allows a single
235233

236234
~~~
237235
# use core::task::spawn;
238-
# use core::comm::{stream, SharedChan};
236+
use core::comm::{stream, SharedChan};
239237
240238
let (port, chan) = stream();
241239
let chan = SharedChan::new(chan);
@@ -284,51 +282,6 @@ let result = ports.foldl(0, |accum, port| *accum + port.recv() );
284282
# fn some_expensive_computation(_i: uint) -> int { 42 }
285283
~~~
286284

287-
## Futures
288-
With `std::future`, rust has a mechanism for requesting a computation and getting the result
289-
later.
290-
291-
The basic example below illustrates this.
292-
~~~
293-
# fn make_a_sandwich() {};
294-
fn fib(n: uint) -> uint {
295-
// lengthy computation returning an uint
296-
12586269025
297-
}
298-
299-
let mut delayed_fib = std::future::spawn (|| fib(50) );
300-
make_a_sandwich();
301-
println(fmt!("fib(50) = %?", delayed_fib.get()))
302-
~~~
303-
304-
The call to `future::spawn` returns immediately a `future` object regardless of how long it
305-
takes to run `fib(50)`. You can then make yourself a sandwich while the computation of `fib` is
306-
running. The result of the execution of the method is obtained by calling `get` on the future.
307-
This call will block until the value is available (*i.e.* the computation is complete). Note that
308-
the future needs to be mutable so that it can save the result for next time `get` is called.
309-
310-
Here is another example showing how futures allow you to background computations. The workload will
311-
be distributed on the available cores.
312-
~~~
313-
fn partial_sum(start: uint) -> f64 {
314-
let mut local_sum = 0f64;
315-
for uint::range(start*100000, (start+1)*100000) |num| {
316-
local_sum += (num as f64 + 1.0).pow(-2.0);
317-
}
318-
local_sum
319-
}
320-
321-
fn main() {
322-
let mut futures = vec::from_fn(1000, |ind| do std::future::spawn { partial_sum(ind) });
323-
324-
let mut final_res = 0f64;
325-
for futures.each_mut |ft| {
326-
final_res += ft.get();
327-
}
328-
println(fmt!("π^2/6 is not far from : %?", final_res));
329-
}
330-
~~~
331-
332285
# Handling task failure
333286

334287
Rust has a built-in mechanism for raising exceptions. The `fail!()` macro
@@ -410,8 +363,8 @@ either task fails, it kills the other one.
410363
~~~
411364
# fn sleep_forever() { loop { task::yield() } }
412365
# do task::try {
413-
do spawn {
414-
do spawn {
366+
do task::spawn {
367+
do task::spawn {
415368
fail!(); // All three tasks will fail.
416369
}
417370
sleep_forever(); // Will get woken up by force, then fail

trunk/mk/platform.mk

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -239,32 +239,6 @@ CFG_RUN_arm-linux-androideabi=
239239
CFG_RUN_TARG_arm-linux-androideabi=
240240
RUSTC_FLAGS_arm-linux-androideabi :=--android-cross-path=$(CFG_ANDROID_CROSS_PATH)
241241

242-
# arm-unknown-linux-gnueabihf configuration
243-
CC_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-gcc
244-
CXX_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-g++
245-
CPP_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-gcc -E
246-
AR_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf-ar
247-
CFG_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).so
248-
CFG_LIB_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.so
249-
CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.dylib.dSYM
250-
CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabihf := -Wall -g -fPIC
251-
CFG_GCCISH_CXXFLAGS_arm-unknown-linux-gnueabihf := -fno-rtti
252-
CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-gnueabihf := -shared -fPIC -g
253-
CFG_GCCISH_DEF_FLAG_arm-unknown-linux-gnueabihf := -Wl,--export-dynamic,--dynamic-list=
254-
CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-linux-gnueabihf := -Wl,-whole-archive
255-
CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-linux-gnueabihf := -Wl,-no-whole-archive
256-
CFG_DEF_SUFFIX_arm-unknown-linux-gnueabihf := .linux.def
257-
CFG_INSTALL_NAME_ar,-unknown-linux-gnueabihf =
258-
CFG_LIBUV_LINK_FLAGS_arm-unknown-linux-gnueabihf =
259-
CFG_EXE_SUFFIX_arm-unknown-linux-gnueabihf :=
260-
CFG_WINDOWSY_arm-unknown-linux-gnueabihf :=
261-
CFG_UNIXY_arm-unknown-linux-gnueabihf := 1
262-
CFG_PATH_MUNGE_arm-unknown-linux-gnueabihf := true
263-
CFG_LDPATH_arm-unknown-linux-gnueabihf :=
264-
CFG_RUN_arm-unknown-linux-gnueabihf=
265-
CFG_RUN_TARG_arm-unknown-linux-gnueabihf=
266-
RUSTC_FLAGS_arm-unknown-linux-gnueabihf := --linker=$(CC_arm-unknown-linux-gnueabihf)
267-
268242
# mips-unknown-linux-gnu configuration
269243
CC_mips-unknown-linux-gnu=mips-linux-gnu-gcc
270244
CXX_mips-unknown-linux-gnu=mips-linux-gnu-g++

trunk/mk/rt.mk

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@
2626
# Hack for passing flags into LIBUV, see below.
2727
LIBUV_FLAGS_i386 = -m32 -fPIC
2828
LIBUV_FLAGS_x86_64 = -m64 -fPIC
29-
ifeq ($(OSTYPE_$(1)), linux-androideabi)
3029
LIBUV_FLAGS_arm = -fPIC -DANDROID -std=gnu99
31-
else
32-
LIBUV_FLAGS_arm = -fPIC -std=gnu99
33-
endif
3430
LIBUV_FLAGS_mips = -fPIC -mips32r2 -msoft-float -mabi=32
3531

3632
# when we're doing a snapshot build, we intentionally degrade as many

trunk/src/libcore/bool.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,12 @@ pub fn is_false(v: bool) -> bool { !v }
4949
/// Parse logic value from `s`
5050
impl FromStr for bool {
5151
fn from_str(s: &str) -> Option<bool> {
52-
match s {
53-
"true" => Some(true),
54-
"false" => Some(false),
55-
_ => None,
52+
if s == "true" {
53+
Some(true)
54+
} else if s == "false" {
55+
Some(false)
56+
} else {
57+
None
5658
}
5759
}
5860
}

0 commit comments

Comments
 (0)