Skip to content

Commit 0100e65

Browse files
committed
---
yaml --- r: 145324 b: refs/heads/try2 c: 030fffa h: refs/heads/master v: v3
1 parent df864bf commit 0100e65

Some content is hidden

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

44 files changed

+3578
-228
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: eb519b952d2cc2b2af6b3be38377daa431983929
8+
refs/heads/try2: 030fffa57cb27f332447ce51918e760ebccc5a8f
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/.gitattributes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[attr]rust text eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4
22

3-
* text eol=lf
3+
* text=auto eol=lf
44
*.cpp rust
55
*.h rust
66
*.rs rust

branches/try2/Makefile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ endif
102102

103103
ifdef CFG_ENABLE_DEBUG
104104
$(info cfg: enabling more debugging (CFG_ENABLE_DEBUG))
105-
CFG_RUSTC_FLAGS += --cfg debug
106105
CFG_GCCISH_CFLAGS += -DRUST_DEBUG
107106
else
107+
CFG_RUSTC_FLAGS += --cfg ndebug
108108
CFG_GCCISH_CFLAGS += -DRUST_NDEBUG
109109
endif
110110

branches/try2/RELEASES.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ Version 0.8 (October 2013)
66
* Language
77
* The `for` loop syntax has changed to work with the `Iterator` trait.
88
* At long last, unwinding works on Windows.
9-
* Default methods definitely mostly work.
9+
* Default methods are ready for use.
1010
* Many trait inheritance bugs fixed.
1111
* Owned and borrowed trait objects work more reliably.
1212
* `copy` is no longer a keyword. It has been replaced by the `Clone` trait.
13-
* rustc no longer emits code for the `debug!` macro unless it is passed
14-
`--cfg debug`
13+
* rustc can omit emission of code for the `debug!` macro if it is passed
14+
`--cfg ndebug`
1515
* mod.rs is now "blessed". When loading `mod foo;`, rustc will now look
1616
for foo.rs, then foo/mod.rs, and will generate an error when both are
1717
present.
@@ -56,7 +56,7 @@ Version 0.8 (October 2013)
5656
be specified with `#[link_section = "..."]`.
5757
* The `proto!` syntax extension for defining bounded message protocols
5858
was removed.
59-
* `macro_rules!` is hygenic for `let` declarations.
59+
* `macro_rules!` is hygienic for `let` declarations.
6060
* The `#[export_name]` attribute specifies the name of a symbol.
6161
* `unreachable!` can be used to indicate unreachable code, and fails
6262
if executed.
@@ -92,7 +92,7 @@ Version 0.8 (October 2013)
9292
* std: Added `SharedPort` to `comm`.
9393
* std: `Eq` has a default method for `ne`; only `eq` is required
9494
in implementations.
95-
* std: `Ord` has default methods for `le`, `gt` and `le`; only `lt`
95+
* std: `Ord` has default methods for `le`, `gt` and `ge`; only `lt`
9696
is required in implementations.
9797
* std: `is_utf8` performance is improved, impacting many string functions.
9898
* std: `os::MemoryMap` provides cross-platform mmap.
@@ -130,6 +130,7 @@ Version 0.8 (October 2013)
130130
* rustc's debug info generation (`-Z debug-info`) is greatly improved.
131131
* rustc accepts `--target-cpu` to compile to a specific CPU architecture,
132132
similarly to gcc's `--march` flag.
133+
* rustc's performance compiling small crates is much better.
133134
* rustpkg has received many improvements.
134135
* rustpkg supports git tags as package IDs.
135136
* rustpkg builds into target-specific directories so it can be used for
@@ -142,6 +143,7 @@ Version 0.8 (October 2013)
142143
* The runtime uses jemalloc for allocations.
143144
* Segmented stacks are temporarily disabled as part of the transition to
144145
the new runtime. Stack overflows are possible!
146+
* A new documentation backend, rustdoc_ng, is available for use
145147

146148
Version 0.7 (July 2013)
147149
-----------------------

branches/try2/configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ opt optimize-cxx 1 "build optimized C++ code"
373373
opt optimize-llvm 1 "build optimized LLVM"
374374
opt optimize-tests 1 "build tests with optimizations"
375375
opt llvm-assertions 1 "build LLVM with assertions"
376-
opt debug 0 "build with extra debug fun"
376+
opt debug 1 "build with extra debug fun"
377377
opt ratchet-bench 0 "ratchet benchmarks"
378378
opt fast-make 0 "use .gitmodules as timestamp for submodule deps"
379379
opt manage-submodules 1 "let the build manage the git submodules"

branches/try2/doc/rust.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3428,8 +3428,8 @@ sign (`=`) followed by the log level, from 1 to 4, inclusive. Level 1
34283428
is the error level, 2 is warning, 3 info, and 4 debug. You can also
34293429
use the symbolic constants `error`, `warn`, `info`, and `debug`. Any
34303430
logs less than or equal to the specified level will be output. If not
3431-
specified then log level 4 is assumed. However, debug messages are
3432-
only available if `--cfg=debug` is passed to `rustc`.
3431+
specified then log level 4 is assumed. Debug messages can be omitted
3432+
by passing `--cfg ndebug` to `rustc`.
34333433

34343434
As an example, to see all the logs generated by the compiler, you would set
34353435
`RUST_LOG` to `rustc`, which is the crate name (as specified in its `link`

branches/try2/man/rustpkg.1

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ Remove all generated files from the \fIbuild\fR directory in the target's worksp
2727
Builds the specified target, and all its dependencies, and then installs the
2828
build products into the \fIlib\fR and \fIbin\fR directories of their respective
2929
workspaces.
30+
.TP
31+
\fBinit\fR
32+
Initializes the current working directory into a workspace.
3033

3134
.SS "BUILD COMMAND"
3235

@@ -59,6 +62,17 @@ Examples:
5962
$ rustpkg install github.com/mozilla/servo.git#1.2
6063
$ rustpkg install rust-glfw
6164

65+
.SS "INIT COMMAND"
66+
67+
rustpkg init
68+
69+
This will turn the current working directory into a workspace. The first
70+
command you run when starting off a new project.
71+
72+
Example:
73+
74+
$ rustpkg init
75+
6276
.SH "ENVIRONMENT"
6377

6478
.TP

branches/try2/mk/docs.mk

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ else
213213

214214
# The rustdoc executable
215215
RUSTDOC = $(HBIN2_H_$(CFG_BUILD_TRIPLE))/rustdoc$(X_$(CFG_BUILD_TRIPLE))
216+
RUSTDOC_NG = $(HBIN2_H_$(CFG_BUILD_TRIPLE))/rustdoc_ng$(X_$(CFG_BUILD_TRIPLE))
216217

217218
# The library documenting macro
218219
# $(1) - The output directory
@@ -230,8 +231,22 @@ doc/$(1)/rust.css: rust.css
230231
DOCS += doc/$(1)/index.html
231232
endef
232233

234+
# The library documenting macro
235+
# $(1) - The output directory
236+
# $(2) - The crate file
237+
# $(3) - The crate soruce files
238+
define libdocng
239+
doc/ng/$(1)/index.html: $(2) $(3) $$(RUSTDOC_NG)
240+
@$$(call E, rustdoc_ng: $$@)
241+
$(Q)$(RUSTDOC_NG) html $(2) -o doc/ng
242+
243+
DOCS += doc/ng/$(1)/index.html
244+
endef
245+
233246
$(eval $(call libdoc,std,$(STDLIB_CRATE),$(STDLIB_INPUTS)))
234247
$(eval $(call libdoc,extra,$(EXTRALIB_CRATE),$(EXTRALIB_INPUTS)))
248+
$(eval $(call libdocng,std,$(STDLIB_CRATE),$(STDLIB_INPUTS)))
249+
$(eval $(call libdocng,extra,$(EXTRALIB_CRATE),$(EXTRALIB_INPUTS)))
235250
endif
236251

237252

branches/try2/mk/tests.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ TEST_SREQ$(1)_T_$(2)_H_$(3) = \
575575

576576
# The tests select when to use debug configuration on their own;
577577
# remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898).
578-
CTEST_RUSTC_FLAGS := $$(subst --cfg debug,,$$(CFG_RUSTC_FLAGS))
578+
CTEST_RUSTC_FLAGS := $$(subst --cfg ndebug,,$$(CFG_RUSTC_FLAGS))
579579

580580
# The tests can not be optimized while the rest of the compiler is optimized, so
581581
# filter out the optimization (if any) from rustc and then figure out if we need

branches/try2/src/libextra/extra.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ Rust extras are part of the standard Rust distribution.
2525
uuid = "122bed0b-c19b-4b82-b0b7-7ae8aead7297",
2626
url = "https://github.com/mozilla/rust/tree/master/src/libextra")];
2727

28+
#[doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk.png",
29+
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
30+
passes = "strip-hidden")];
31+
2832
#[comment = "Rust extras"];
2933
#[license = "MIT/ASL2"];
3034
#[crate_type = "lib"];

branches/try2/src/libextra/url.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,16 +1061,12 @@ mod tests {
10611061
10621062
#[test]
10631063
fn test_decode_form_urlencoded() {
1064-
// FIXME #4449: Commented out because this causes an ICE, but only
1065-
// on FreeBSD
1066-
/*
10671064
assert_eq!(decode_form_urlencoded([]).len(), 0);
10681065
10691066
let s = "a=1&foo+bar=abc&foo+bar=12+%3D+34".as_bytes();
10701067
let form = decode_form_urlencoded(s);
10711068
assert_eq!(form.len(), 2);
1072-
assert_eq!(form.get_ref(&~"a"), &~[~"1"]);
1073-
assert_eq!(form.get_ref(&~"foo bar"), &~[~"abc", ~"12 = 34"]);
1074-
*/
1069+
assert_eq!(form.get(&~"a"), &~[~"1"]);
1070+
assert_eq!(form.get(&~"foo bar"), &~[~"abc", ~"12 = 34"]);
10751071
}
10761072
}

branches/try2/src/librustc/middle/moves.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ use middle::typeck::{method_map};
134134
use util::ppaux;
135135
use util::ppaux::Repr;
136136
use util::common::indenter;
137+
use util::ppaux::UserString;
137138

138139
use std::at_vec;
139140
use std::hashmap::{HashSet, HashMap};
@@ -433,7 +434,21 @@ impl VisitContext {
433434
ty::type_moves_by_default(self.tcx, tf.mt.ty)
434435
});
435436

437+
fn has_dtor(tcx: ty::ctxt, ty: ty::t) -> bool {
438+
use middle::ty::{get,ty_struct,ty_enum};
439+
match get(ty).sty {
440+
ty_struct(did, _) | ty_enum(did, _) => ty::has_dtor(tcx, did),
441+
_ => false,
442+
}
443+
}
444+
436445
if consume_with {
446+
if has_dtor(self.tcx, with_ty) {
447+
self.tcx.sess.span_err(with_expr.span,
448+
fmt!("cannot move out of type `%s`, \
449+
which defines the `Drop` trait",
450+
with_ty.user_string(self.tcx)));
451+
}
437452
self.consume_expr(*with_expr, visitor);
438453
} else {
439454
self.use_expr(*with_expr, Read, visitor);

branches/try2/src/libstd/c_str.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,58 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11+
/*!
12+
13+
C-string manipulation and management
14+
15+
This modules provides the basic methods for creating and manipulating
16+
null-terminated strings for use with FFI calls (back to C). Most C APIs require
17+
that the string being passed to them is null-terminated, and by default rust's
18+
string types are *not* null terminated.
19+
20+
The other problem with translating Rust strings to C strings is that Rust
21+
strings can validly contain a null-byte in the middle of the string (0 is a
22+
valid unicode codepoint). This means that not all Rust strings can actually be
23+
translated to C strings.
24+
25+
# Creation of a C string
26+
27+
A C string is managed through the `CString` type defined in this module. It
28+
"owns" the internal buffer of characters and will automatically deallocate the
29+
buffer when the string is dropped. The `ToCStr` trait is implemented for `&str`
30+
and `&[u8]`, but the conversions can fail due to some of the limitations
31+
explained above.
32+
33+
This also means that currently whenever a C string is created, an allocation
34+
must be performed to place the data elsewhere (the lifetime of the C string is
35+
not tied to the lifetime of the original string/data buffer). If C strings are
36+
heavily used in applications, then caching may be advisable to prevent
37+
unnecessary amounts of allocations.
38+
39+
An example of creating and using a C string would be:
40+
41+
~~~{.rust}
42+
use std::libc;
43+
externfn!(fn puts(s: *libc::c_char))
44+
45+
let my_string = "Hello, world!";
46+
47+
// Allocate the C string with an explicit local that owns the string. The
48+
// `c_buffer` pointer will be deallocated when `my_c_string` goes out of scope.
49+
let my_c_string = my_string.to_c_str();
50+
do my_c_string.with_ref |c_buffer| {
51+
unsafe { puts(c_buffer); }
52+
}
53+
54+
// Don't save off the allocation of the C string, the `c_buffer` will be
55+
// deallocated when this block returns!
56+
do my_string.with_c_str |c_buffer| {
57+
unsafe { puts(c_buffer); }
58+
}
59+
~~~
60+
61+
*/
62+
1163
use cast;
1264
use iter::{Iterator, range};
1365
use libc;

0 commit comments

Comments
 (0)