Commit Graph

3244 Commits

Author SHA1 Message Date
Eric Reed 8f0721bcb8 Fix Acceptor iterator ending early if a connection attempt fails 2013-09-06 05:30:41 -07:00
bors 059cbaadfa auto merge of #9005 : alexcrichton/rust/rusty-log, r=brson
Also redefine all of the standard logging macros to use more rust code instead
of custom LLVM translation code. This makes them a bit easier to understand, but
also more flexibile for future types of logging.

Additionally, this commit removes the LogType language item in preparation for
changing how logging is performed.
2013-09-09 10:41:05 -07:00
bors fd2488bf5a auto merge of #9051 : bjz/rust/master, r=huonw 2013-09-09 06:06:04 -07:00
Marvin Löbel 3a3934244c Some work on std::ascii: Marked unsafe function unsafe, added moving implementations 2013-09-09 15:07:22 +02:00
bors fd49f6dce1 auto merge of #9073 : alexcrichton/rust/remove-local-data-hax, r=huonw
These compiler bugs have since been fixed (one less layer of indirection)
2013-09-09 02:36:06 -07:00
Alex Crichton 500077f637 Remove hacks around issues in local_data
These compiler bugs have since been fixed (one less layer of indirection)
2013-09-09 01:01:23 -07:00
bors d09f569aac auto merge of #9065 : thestinger/rust/iter, r=alexcrichton
The trait will keep the `Iterator` naming, but a more concise module
name makes using the free functions less verbose. The module will define
iterables in addition to iterators, as it deals with iteration in
general.
2013-09-09 00:26:07 -07:00
Daniel Micay 6919cf5fe1 rename std::iterator to std::iter
The trait will keep the `Iterator` naming, but a more concise module
name makes using the free functions less verbose. The module will define
iterables in addition to iterators, as it deals with iteration in
general.
2013-09-09 03:21:46 -04:00
Daniel Micay db4720bdfa repr: update for removal of const 2013-09-08 23:17:19 -04:00
Daniel Micay ec7cd77bd0 repr: write the mutability qualifier for slices 2013-09-08 23:14:46 -04:00
bors dd5c7379e9 auto merge of #8988 : cmr/rust/fromstr_fn, r=brson
It just calls out to the associated function on the trait.
2013-09-08 12:05:55 -07:00
Corey Richardson e0e5523552 Fix import order which caused the wrong from_str to be in scope 2013-09-08 15:00:00 -04:00
Brendan Zabarauskas 2c31053d20 Fix unused import warnings on 32bit systems 2013-09-09 03:51:29 +10:00
Brendan Zabarauskas 8445009a84 Add Clone and DeepClone constraints to Primitive trait 2013-09-08 13:48:46 +10:00
Brendan Zabarauskas 0fcb85997d Moved checked trait impls out of std::num
This follows the same pattern as the other numeric trait impls, and reduces the clutter in std::num.
2013-09-08 13:48:15 +10:00
Huon Wilson 4c2b480aae std: Rename Unfoldr to Unfold.
The `r` is not relevant, since there is only one direction of folding
(unlike Haskell).
2013-09-08 10:52:19 +10:00
bors f6b36c676e auto merge of #9046 : thestinger/rust/repr, r=alexcrichton
Closes #8743
2013-09-07 15:01:02 -07:00
Daniel Micay f87578d9fb fix repr of strings/chars with quotes
Closes #8743
2013-09-07 15:31:48 -04:00
bors 79e78c4b0c auto merge of #8906 : novalis/rust/master, r=alexcrichton
This is a patch to fix #6031.  I didn't see any tests for the C++ library code, so I didn't write a test for my changes.  Did I miss something, or are there really no tests?
2013-09-07 11:31:06 -07:00
bors aa1d4ef55a auto merge of #9032 : alexcrichton/rust/inline-repr, r=thestinger
This allows cross-crate inlining which is *very* good because this is called a
lot throughout libstd (even when libstd is inlined across crates).

In one of my projects, I have a test case with the following performance characteristics

commit | optimization level | runtime (seconds)
----|------|----
before | O2  | 22s
before | O3  | 107s
after | O2  | 13s
after | O3  | 12s

I'm a bit disturbed by the 107s runtime from O3 before this commit. The performance characteristics of this test involve doing an absurd amount of small operations. A huge portion of this is creating hashmaps which involves allocating vectors.

The worst portions of the profile are:
![screen shot 2013-09-06 at 10 32 15 pm](https://f.cloud.github.com/assets/64996/1100723/e5e8744c-177e-11e3-83fc-ddc5f18c60f9.png)

Which as you can see looks like some *serious* problems with inlining. I would expect the hash map methods to be high up in the profile, but the top 9 callers of `cast::transmute_copy` were `Repr::repr`'s various monomorphized instances.

I wish there we a better way to detect things like this in the future, and it's unfortunate that this is required for performance in the first place. I suppose I'm not entirely sure why this is needed because all of the methods should have been generated in-crate (monomorphized versions of library functions), so they should have gotten inlined? It also could just be that by modifying LLVM's idea of the inline cost of this function it was able to inline it in many more locations.
2013-09-07 09:31:12 -07:00
novalis c684df103e Handle global log levels (fixes #6033) 2013-09-07 09:14:52 -04:00
bors 124eb2119c auto merge of #9026 : jbclements/rust/let-var-hygiene, r=jbclements
This is a rebase of my approved pull request from ... the end of June? It introduces hygiene for let-bound variables.
2013-09-06 23:35:57 -07:00
Alex Crichton 739df232fe Flag the Repr::repr function with #[inline]
This allows cross-crate inlining which is *very* good because this is called a
lot throughout libstd (even when libstd is inlined across crates).
2013-09-06 22:29:29 -07:00
novalis c891fa326d Fix #6031. Allow symbolic log levels, not just numbers. 2013-09-06 23:30:17 -04:00
bors 25f3b29c61 auto merge of #9010 : aaronlaursen/rust/master, r=alexcrichton
Here's a fix for issue #7588, "Overflow handling of from_str methods is broken". 

The integer overflow issues are taken care of by checking to see if the multiply-by-radix-and-add-next-digit process is reversible. If it overflowed, then some information is lost and the process is irreversible, in which case, None is returned. 

Floats now consistently return Some(Inf) of Some(-Inf) on overflow thanks to a call to NumStrConv::inf() and NumStrConv::neg_inf() respectively when the overflow is detected (which yields a value of None in the case of ints and uints anyway). 

This is my first contribution to Rust, and my first time using the language in general, so any and all feedback is appreciated.
2013-09-06 20:10:57 -07:00
John Clements f68aa459ea added IterBytes for 4-tuples 2013-09-06 13:35:10 -07:00
Alex Crichton b4c36c2d1b Upgrade libuv to the current master (again)
This is a reopening of the libuv-upgrade part of #8645. Hopefully this won't
cause random segfaults all over the place. The windows regression in testing
should also be fixed (it shouldn't build the whole compiler twice).

A notable difference from before is that gyp is now a git submodule instead of
always git-cloned at make time. This allows bundling for releases more easily.

Closes #8850
2013-09-06 11:12:49 -07:00
Aaron Laursen caf5321eb4 fix for issue #7588, overflow now handled correctly 2013-09-06 13:00:34 -05:00
bors 9298af7e05 auto merge of #9002 : brson/rust/issue-8769, r=catamorphism
This is an unsafe implementation detail of `push`.
2013-09-06 03:50:57 -07:00
bors 25ed29a0ed auto merge of #9000 : brson/rust/dns, r=anasazi
This exposes a very simple function for resolving host names. There's a lot more that needs to be done, but this is probably enough for servo to get started connecting to real websites again.
2013-09-06 02:31:02 -07:00
Brian Anderson 807408b708 std::rt: Fix addrinfo definition on BSD 2013-09-05 22:15:02 -07:00
bors 5efe1e5365 auto merge of #8914 : Dretch/rust/native-glob, r=alexcrichton
This is #8201 with a bunch of amendments to address the comments (and re-based).
2013-09-05 22:00:58 -07:00
bors f051196731 auto merge of #8909 : lkuper/rust/default-methods-refactor, r=alexcrichton
(cc: #3227)

Parts I'm unsure about and would like a reviewer to look at are:

  * `pub trait GenericPath : Clone + Eq + ToStr` -- is this the done thing?  I've never done trait inheritance before, let alone from multiple traits, but it seemed to be necessary to be able to call all the methods we have to be able to call on `self`.

  * changing the argument of `components` from `self` to `&self`, and having it return `self.components.clone()` instead of `self.components`; this was necessary to avoid move errors, but I'm not sure if it's the right thing.  (The default methods impls now all have to call `self.components()` instead of just referencing the field `self.components`.)
2013-09-05 20:50:53 -07:00
Brian Anderson fec6716eec std: Remove push_fast from OwnedVector. Closes #8769
This is an unsafe implementation detail of `push`.
2013-09-05 15:56:22 -07:00
bors 6f9ce0948a auto merge of #8997 : fhahn/rust/issue_8985, r=catamorphism,brson
Patch for #8985
2013-09-05 15:00:49 -07:00
Brian Anderson 0948f54e65 std::rt: Add get_host_addresses function
This is a very simplistic method for host name resolution. It converts
a host name to a vector of IP addresses. Should be enough to get started.
2013-09-05 14:22:16 -07:00
Brian Anderson c218694cec std::rt: Add libuv bindings for getaddrinfo 2013-09-05 14:22:15 -07:00
Brian Anderson b3f7f758b1 std::rt: Some I/O cleanup 2013-09-05 14:21:57 -07:00
Gareth Smith 193a1c8af6 Replace os::glob with extra::glob, which is written in rust,
fixing issue #6100.
2013-09-05 21:19:47 +01:00
bors d84a7b5ae3 auto merge of #8984 : chris-morgan/rust/auto-stream-impl, r=huonw
This is consistent with the existing documentation but was not the
actual behaviour, which I've found to be rather a nuisance, actually.
2013-09-05 12:10:46 -07:00
Florian Hahn de39874801 Rename str::from_bytes to str::from_utf8, closes #8985 2013-09-05 14:17:24 +02:00
Lindsey Kuper 59291eb197 Minor doc cleanup. 2013-09-05 06:25:23 -04:00
Lindsey Kuper 8651011b6f Factor shared code out into default GenericPath methods. 2013-09-05 06:25:23 -04:00
bors 6f176a17f6 auto merge of #8990 : thestinger/rust/str, r=alexcrichton
mapping a function against the elements should not require allocating a
new container, but `collect` still provides the functionality as-needed
2013-09-05 03:00:49 -07:00
Alex Crichton 8a966183fe Remove the __log function for __log_level
Also redefine all of the standard logging macros to use more rust code instead
of custom LLVM translation code. This makes them a bit easier to understand, but
also more flexibile for future types of logging.

Additionally, this commit removes the LogType language item in preparation for
changing how logging is performed.
2013-09-05 01:48:20 -07:00
Daniel Micay fcc7aff62b str: rm map_chars, replaced by iterators
mapping a function against the elements should not require allocating a
new container, but `collect` still provides the functionality as-needed
2013-09-05 02:02:27 -04:00
bors 2bd628eafa auto merge of #8944 : alexcrichton/rust/issue-8938, r=huonw
Otherwise extra stuff after a lone '}' character is simply ignored, which is
very bad.

Closes #8938
2013-09-04 22:25:42 -07:00
Corey Richardson c1c5c8b725 Add from_str docs 2013-09-05 00:58:12 -04:00
Corey Richardson be43625082 Add a from_str function that calls out to the associated method on the trait 2013-09-05 00:48:48 -04:00
blake2-ppc b153219556 std::str: Deny surrogates in is_utf8
Reject codepoints \uD800 to \uDFFF which are the surrogates
(reserved/unused codepoints that are invalid to encode into UTF-8)

The surrogates is the only hole of invalid codepoints in the range from
\u0 to \u10FFFF.
2013-09-04 23:09:51 -04:00