Commit Graph

21346 Commits

Author SHA1 Message Date
Florian Zeitz 83f4bee44f Add Unicode decomposition mappings to std::unicode 2013-08-21 11:50:07 +02:00
bors d4d856b129 auto merge of #8582 : thestinger/rust/container, r=thestinger
5f3a637 r=huonw
934a5eb r=thestinger
0f6e90a r=cmr
2013-08-21 01:01:47 -07:00
bors 48dded95c6 auto merge of #8580 : bytewiseand/rust/tuple-struct-ctor-ptr, r=alexcrichton
Fixes #5315
2013-08-20 23:11:50 -07:00
bors 00dd9e9cc5 auto merge of #8573 : mrordinaire/rust/struct-new-as-field-name, r=alexcrichton
fix for #8088, along with a test.
2013-08-20 21:41:50 -07:00
nsf 0f6e90a5fd Fix typo in test/bench/noise.rs. Closes #8574. 2013-08-20 22:38:00 -04:00
Steven Fackler 934a5eba50 Deleted fun_treemap
@thestinger and I talked about this in IRC. There are a couple of use
cases for a persistent map, but they aren't common enough to justify
inclusion in libextra and vary enough that they would require multiple
implementations anyways.

In any case, fun_treemap in its current state is basically useless.
2013-08-20 22:09:47 -04:00
Daniel Micay 5f3a637b7c enable tests for the container tutorial 2013-08-20 22:05:46 -04:00
Daniel Micay 7727920ba2 iterator: add a method for reversing a container
this works on any container with a mutable double-ended iterator
2013-08-20 22:05:03 -04:00
Daniel Micay b68eedf846 option: derive Clone/DeepClone for the iterator 2013-08-20 22:05:03 -04:00
Daniel Micay 25bac776d9 vec: add shrink_to_fit
Closes #4960
2013-08-20 22:05:03 -04:00
Daniel Micay 0ba8ccdaee rm obsolete float to_str_radix free functions 2013-08-20 22:05:03 -04:00
Daniel Micay 46fc549fa9 rm obsolete integer to_str{,_radix} free functions 2013-08-20 22:05:03 -04:00
Daniel Micay 0d72f604b7 iterator: add a range_inclusive function
Closes #6242
2013-08-20 22:05:03 -04:00
Daniel Micay 2bc999a636 container: inline contains_key default method 2013-08-20 22:05:03 -04:00
bors d56b9b102b auto merge of #8656 : toddaaro/rust/idle-opt+cleaning, r=brson
Fixed a memory leak caused by the singleton idle callback failing to close correctly. The problem was that the close function requires running inside a callback in the event loop, but we were trying to close the idle watcher after the loop returned from run. The fix was to just call run again to process this callback. There is an additional tweak to move the initialization logic fully into bootstrap, so tasks that do not ever call run do not have problems destructing.
2013-08-20 18:51:55 -07:00
bors 0bc1ca4045 auto merge of #8631 : anasazi/rust/homing-io, r=brson
libuv handles are tied to the event loop that created them. In order to perform IO, the handle must be on the thread with its home event loop. Thus, when as task wants to do IO it must first go to the IO handle's home event loop and pin itself to the corresponding scheduler while the IO action is in flight. Once the IO action completes, the task is unpinned and either returns to its home scheduler if it is a pinned task, or otherwise stays on the current scheduler.

Making new blocking IO implementations (i.e. files) thread safe is rather simple. Add a home field to the IO handle's struct in uvio and implement the HomingIO trait. Wrap every IO call in the HomingIO.home_for_io method, which will take care of the scheduling.

I'm not sure if this remains thread safe in the presence of asynchronous IO at the libuv level. If we decide to do that, then this set up should be revisited.
2013-08-20 17:12:09 -07:00
toddaaro 352ac2efdf Fixed a memory leak caused by the singleton idle callback failing to close correctly. The problem was that the close function requires running inside a callback in the event loop, but we were trying to close the idle watcher after the loop returned from run. The fix was to just call run again to process this callback. There is an additional tweak to move the initialization logic fully into bootstrap, so tasks that do not ever call run do not have problems destructing. 2013-08-20 15:48:59 -07:00
bors 3cd978fbc7 auto merge of #8563 : graydon/rust/2013-08-16-condition-tutorial, r=catamorphism
First cut of a tutorial on conditions.

cc: #6701
2013-08-20 15:01:55 -07:00
bors 293660d443 auto merge of #8519 : msullivan/rust/objects, r=catamorphism
r?
2013-08-20 13:32:00 -07:00
bors a8c3fe45c6 auto merge of #8328 : alexcrichton/rust/llvm-head, r=brson
The first commit message is pretty good, but whomever reviews this should probably also at least glance at the changes I made in LLVM. I basically reorganized our pending patch queue to be a bit more organized and clearer in what needs to go where. After this, our queue would be:

* Add the `no-split-stack` attribute
* Add the `fixedstacksegment` attribute
* Add split-stacks for arm android
* Add split-stacks for arm linux
* Add split stacks for mips

Then there's a patch which I added to get rust to build at all on LLVM-head, and I'm not quite sure why it's there, but nothing seems to be crashing for now! (famous last words).

Otherwise, I just updated code to reflect the changes I made in LLVM with the only major change being the advent of the new `no_split_stack` attribute. This is work towards #1226, but someone more familiar with the code should probably actually assign the attribute to the appropriate functions.

Also as a bonus, I've verified that this closes #5774
2013-08-20 11:31:59 -07:00
bors 67c954e365 auto merge of #8566 : toddaaro/rust/idle-opt+cleaning, r=catamorphism,brson
Instead of a furious storm of idle callbacks we just have one. This is a major performance gain - around 40% on my machine for the ping pong bench.

Also in this PR is a cleanup commit for the scheduler code. Was previously up as a separate PR, but bors load + imminent merge hell led me to roll them together. Was #8549.
2013-08-20 09:42:00 -07:00
Alex Crichton 7f91e7740d Fix LLVM compilation issues and use the new attrs
This implements #[no_split_stack] and also changes #[fast_ffi] to using the new
"fixedstacksegment" string attribute instead of integer attribute.
2013-08-20 08:33:52 -07:00
bors 7f26812895 auto merge of #8463 : brson/rust/borrowck, r=nmatsakis,nikomatsakis
r? @nikomatsakis
2013-08-20 06:41:58 -07:00
bors 5e9dff90c9 auto merge of #8638 : pnkfelix/rust/fsk-visitor-vpar-defaults-step5, r=huonw
"non-mechanical" : there was lots more hacking than the other more-mechanical ports Felix did.

r? @huonw.  (Or @nikomatsakis ; I just want someone to sanity-check this.  Its not a thing of beauty.)

Followup to #8623.  (See #8527, which was step 1 of 5, for the full outline.  Part of #7081.)

Notes on the change follow.

There's also a strange pattern that I hacked in to accommodate the
Outer/Inner traversal structure of the existing code (which was
previously encoding this by untying the Y-combinator style knot of the
vtable, and then retying it but superimposing new methods that "stop
at items").  I hope either I or someone else can come back in the
future and replace this ugliness with something more natural.

Added boilerplate macro; all the OuterLint definitions are the same
(but must be abstracted over implementing struct, thus the macro).

Revised lint.rs use declarations to make ast references explicit.
Also removed unused imports.
2013-08-20 03:52:01 -07:00
Felix S. Klock II 9b82d50f6d add line break post dbaupp review. 2013-08-20 12:25:34 +02:00
Felix S. Klock II 213d89b6da remove trailing whitespace to placate make tidy. 2013-08-20 11:09:47 +02:00
Felix S. Klock II c709c0a3ab Port lint.rs from oldvisit to <V:Visit> trait API. Less mechanical port.
That is, there was lots more hacking than the other more-mechanical
ports Felix did.

There's also a strange pattern that I hacked in to accommodate the
Outer/Inner traversal structure of the existing code (which was
previously encoding this by untying the Y-combinator style knot of the
vtable, and then retying it but superimposing new methods that "stop
at items").  I hope either I or someone else can come back in the
future and replace this ugliness with something more natural.

Added boilerplate macro; all the OuterLint definitions are the same
(but must be abstracted over implementing struct, thus the macro).

Revised lint.rs use declarations to make ast references explicit.
Also removed unused imports.
2013-08-20 10:45:40 +02:00
Alex Crichton d1e4815255 Upgrade llvm to current HEAD
* This has one workaround patch (everything's testing just fine...)
* I reworked the fixedstacksegment attribute to be specified with a string
  rather than using a keyword and an integer and modifying the parser
* I added a "no-split-stack" attribute along the same lines as the
  "fixedstacksegment" attribute for #1226
2013-08-20 01:12:47 -07:00
bors c099242a1a auto merge of #8548 : catamorphism/rust/unignore-rustpkg-tests, r=catamorphism
r? @brson This necessitated some cleanup to how we parse library filenames
when searching for libraries, since rustpkg may now create filenames
that contain '-' characters. Also cleaned up how rustpkg passes the
sysroot to a custom build script.
2013-08-19 23:41:55 -07:00
Brian Anderson 0f9ab93642 std: Restore dynamic borrow tracking 2013-08-19 20:39:39 -07:00
bors 5034792c88 auto merge of #8584 : thestinger/rust/jemalloc, r=graydon
This reverts commit 371a316ec9.

Closes #7217
2013-08-19 20:21:58 -07:00
Daniel Micay ef436637ea jemalloc: use $(AR), not ar 2013-08-19 20:53:02 -04:00
Graydon Hoare 517e611271 regenerate configure 2013-08-19 20:48:11 -04:00
bors 2ec9b8ce2f auto merge of #8500 : graydon/rust/2013-08-13-self-rollup, r=thestinger
close #8424 r=brson
close #8173 r=brson
close #8209 r=strcat
2013-08-19 17:42:35 -07:00
Graydon Hoare ef5d537010 doc: add condition tutorial 2013-08-19 16:48:48 -07:00
Eric Reed 35e844ffc1 Make IO thread-safe.
Each IO handle has a home event loop, which created it.
When a task wants to use an IO handle, it must first make sure it is on that home event loop.
It uses the scheduler handle in the IO handle to send itself there before starting the IO action.
Once the IO action completes, the task restores its previous home state.
If it is an AnySched task, then it will be executed on the new scheduler.
If it has a normal home, then it will return there before executing any more code after the IO action.
2013-08-19 16:31:21 -07:00
Eric Reed d09412ab89 Homed UDP sockets 2013-08-19 16:26:50 -07:00
Eric Reed d7b6fcba29 Working homing UDP socket prototype. 2013-08-19 16:26:50 -07:00
Eric Reed 88f718341e Instruct event loops to ignore SIGPIPE when constructed.
libuv does not always catch SIGPIPE.
2013-08-19 16:26:50 -07:00
Eric Reed f68514c128 Do not execute the callback before cleaning up resources. 2013-08-19 16:26:50 -07:00
Eric Reed 97555e865c Derive Clone for IpAddr and SocketAddr 2013-08-19 16:26:50 -07:00
Graydon Hoare 2c7164595f rt: make jemalloc header conform to android signature. 2013-08-19 16:09:46 -07:00
Tim Chevalier d9293d1d87 rustpkg: Un-ignore most of the remaining tests
This necessitated some cleanup to how we parse library filenames
when searching for libraries, since rustpkg may now create filenames
that contain '-' characters. Also cleaned up how rustpkg passes the
sysroot to a custom build script.
2013-08-19 15:27:21 -07:00
Graydon Hoare 610b2b58ec compiletest: do not run tests in sub-threads if on valgrind. 2013-08-19 15:09:20 -07:00
Graydon Hoare 19f4ae1415 Try to fix mac valgrind bot by disabling thread-heavy activities. 2013-08-19 15:09:20 -07:00
Graydon Hoare 29a449aae3 Add tests for cross-crate condition handling. Close #5446. 2013-08-19 15:09:20 -07:00
Graydon Hoare eaa378033c test: add testcase, close #4929 which was already fixed. 2013-08-19 15:09:20 -07:00
Graydon Hoare 8c78311e81 test: un-xfail now working run-pass/foreign-struct.rs, close #2334. 2013-08-19 15:09:19 -07:00
bors e6e678fac7 auto merge of #8623 : pnkfelix/rust/fsk-visitor-vpar-defaults-step4, r=nmatsakis
Follow up to #8619 (step 3 of 5).

(See #8527, which was step 1 of 5, for the full outline.)

Part of #7081.
2013-08-19 15:02:07 -07:00
bors 4bdceb9c00 auto merge of #8459 : thestinger/rust/checked, r=graydon 2013-08-19 12:42:48 -07:00