Skip to content

Commit 32a31d3

Browse files
committed
---
yaml --- r: 139261 b: refs/heads/try2 c: 12df654 h: refs/heads/master i: 139259: 538813c v: v3
1 parent 4ef88f3 commit 32a31d3

Some content is hidden

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

71 files changed

+1691
-2251
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: 02d5f090dcefb43625dc67d0d9147dbc9776c9b1
8+
refs/heads/try2: 12df65470fb8c5d57fb4f94d37557daa6282173f
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/Makefile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ $(foreach target,$(CFG_TARGET_TRIPLES),\
238238

239239
CORELIB_CRATE := $(S)src/libcore/core.rc
240240
CORELIB_INPUTS := $(wildcard $(addprefix $(S)src/libcore/, \
241-
core.rc *.rs */*.rs */*/*rs))
241+
core.rc *.rs */*.rs))
242242

243243
######################################################################
244244
# Standard library variables

branches/try2/RELEASES.txt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Version 0.6 (March 2013)
22
---------------------------
33

4-
* ~2000 changes, numerous bugfixes
4+
* ~??? changes, numerous bugfixes
55

66
* TODO:
77
* Ord/Cmp
@@ -39,8 +39,6 @@ Version 0.6 (March 2013)
3939
* Newtype enums removed. Used tuple-structs.
4040
* Trait implementations no longer support visibility modifiers
4141
* Pattern matching over vectors improved and expanded
42-
* `const` renamed to `static` to correspond to lifetime name,
43-
and make room for future `static mut` unsafe mutable globals.
4442

4543
* Semantic changes
4644
* Types with owned pointers or custom destructors move by default,
@@ -54,9 +52,8 @@ Version 0.6 (March 2013)
5452
* Name resolution continues to be tweaked
5553
* Method visibility is inherited from the implementation declaration
5654
* Structural records have been removed
57-
* Many more types can be used in static items, including enums
58-
'static-lifetime pointers and vectors
59-
* Pattern matching over vectors improved and expanded
55+
* Many more types can be used in constants, including enums,
56+
`static lifetime pointers and vectors
6057
* Typechecking of closure types has been overhauled to
6158
improve inference and eliminate unsoundness
6259

@@ -88,7 +85,6 @@ Version 0.6 (March 2013)
8885
* Improved foreign function ABI implementation for x86, x86_64
8986
* Various memory usage improvements
9087
* Rust code may be embedded in foreign code under limited circumstances
91-
* Inline assembler supported by new asm!() syntax extension.
9288

9389
Version 0.5 (December 2012)
9490
---------------------------

branches/try2/configure

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -136,17 +136,9 @@ validate_opt () {
136136
isArgValid=1
137137
fi
138138
done
139-
if [ "$arg" = "--help" ]
139+
if test $isArgValid -eq 0
140140
then
141-
echo ""
142-
echo "No more help available for Configure options,"
143-
echo "check the Uncyclo or join our IRC channel"
144-
break
145-
else
146-
if test $isArgValid -eq 0
147-
then
148-
err "Option '$arg' is not recognized"
149-
fi
141+
err "Option '$arg' is not recognized"
150142
fi
151143
done
152144
}
@@ -274,42 +266,13 @@ case $CFG_OSTYPE in
274266
MINGW32*)
275267
CFG_OSTYPE=pc-mingw32
276268
;;
277-
# Thad's Cygwin identifers below
278-
279-
# Vista 32 bit
280-
CYGWIN_NT-6.0)
281-
CFG_OSTYPE=pc-mingw32
282-
CFG_CPUTYPE=i686
283-
;;
284-
285-
# Vista 64 bit
286-
CYGWIN_NT-6.0-WOW64)
287-
CFG_OSTYPE=w64-mingw32
288-
CFG_CPUTYPE=x86_64
289-
;;
290-
291-
# Win 7 32 bit
292-
CYGWIN_NT-6.1)
293-
CFG_OSTYPE=pc-mingw32
294-
CFG_CPUTYPE=i686
295-
;;
296269

297-
# Win 7 64 bit
298-
CYGWIN_NT-6.1-WOW64)
299-
CFG_OSTYPE=w64-mingw32
300-
CFG_CPUTYPE=x86_64
301-
;;
302-
303-
# We do not detect other OS such as XP/2003 using 64 bit using uname.
304-
# If we want to in the future, we will need to use Cygwin - Chuck's csih helper in /usr/lib/csih/winProductName.exe or alternative.
305270
*)
306271
err "unknown OS type: $CFG_OSTYPE"
307272
;;
308273
esac
309274

310275

311-
if [ -z "$CFG_CPUTYPE" ]
312-
then
313276
case $CFG_CPUTYPE in
314277

315278
i386 | i486 | i686 | i786 | x86)
@@ -327,7 +290,6 @@ case $CFG_CPUTYPE in
327290
*)
328291
err "unknown CPU type: $CFG_CPUTYPE"
329292
esac
330-
fi
331293

332294
# Detect 64 bit linux systems with 32 bit userland and force 32 bit compilation
333295
if [ $CFG_OSTYPE = unknown-linux-gnu -a $CFG_CPUTYPE = x86_64 ]

branches/try2/doc/rust.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,8 @@ each of which may have some number of [attributes](#attributes) attached to it.
617617
## Items
618618

619619
~~~~~~~~ {.ebnf .gram}
620-
item : mod_item | fn_item | type_item | struct_item | enum_item
621-
| static_item | trait_item | impl_item | foreign_mod_item ;
620+
item : mod_item | fn_item | type_item | enum_item
621+
| const_item | trait_item | impl_item | foreign_mod_item ;
622622
~~~~~~~~
623623

624624
An _item_ is a component of a crate; some module items can be defined in crate
@@ -627,7 +627,7 @@ crate by a nested set of [modules](#modules). Every crate has a single
627627
"outermost" anonymous module; all further items within the crate have
628628
[paths](#paths) within the module tree of the crate.
629629

630-
Items are entirely determined at compile-time, generally remain fixed during
630+
Items are entirely determined at compile-time, remain constant during
631631
execution, and may reside in read-only memory.
632632

633633
There are several kinds of item:
@@ -637,7 +637,7 @@ There are several kinds of item:
637637
* [type definitions](#type-definitions)
638638
* [structures](#structures)
639639
* [enumerations](#enumerations)
640-
* [static items](#static-items)
640+
* [constants](#constants)
641641
* [traits](#traits)
642642
* [implementations](#implementations)
643643

@@ -1091,23 +1091,21 @@ a = Cat{ name: ~"Spotty", weight: 2.7 };
10911091
In this example, `Cat` is a _struct-like enum variant_,
10921092
whereas `Dog` is simply called an enum variant.
10931093

1094-
### Static items
1094+
### Constants
10951095

10961096
~~~~~~~~ {.ebnf .gram}
1097-
static_item : "static" ident ':' type '=' expr ';' ;
1097+
const_item : "const" ident ':' type '=' expr ';' ;
10981098
~~~~~~~~
10991099

1100-
A *static item* is a named _constant value_ stored in the global data section of a crate.
1101-
Immutable static items are stored in the read-only data section.
1102-
The constant value bound to a static item is, like all constant values, evaluated at compile time.
1103-
Static items have the `static` lifetime, which outlives all other lifetimes in a Rust program.
1104-
Static items are declared with the `static` keyword.
1105-
A static item must have a _constant expression_ giving its definition.
1100+
A *constant* is a named value stored in read-only memory in a crate.
1101+
The value bound to a constant is evaluated at compile time.
1102+
Constants are declared with the `static` keyword.
1103+
A constant item must have an expression giving its definition.
1104+
The definition expression of a constant is limited to expression forms that can be evaluated at compile time.
11061105

1107-
Static items must be explicitly typed.
1108-
The type may be ```bool```, ```char```, a number, or a type derived from those primitive types.
1109-
The derived types are borrowed pointers with the `'static` lifetime,
1110-
fixed-size arrays, tuples, and structs.
1106+
Constants must be explicitly typed. The type may be ```bool```, ```char```, a number, or a type derived from those primitive types.
1107+
The derived types are borrowed pointers, static arrays, tuples, and structs.
1108+
Borrowed pointers must be have the `'static` lifetime.
11111109

11121110
~~~~
11131111
static bit1: uint = 1 << 0;
@@ -1458,7 +1456,7 @@ The declared names may denote new slots or new items.
14581456

14591457
An _item declaration statement_ has a syntactic form identical to an
14601458
[item](#items) declaration within a module. Declaring an item -- a function,
1461-
enumeration, structure, type, static, trait, implementation or module -- locally
1459+
enumeration, type, constant, trait, implementation or module -- locally
14621460
within a statement block is simply a way of restricting its scope to a narrow
14631461
region containing all of its uses; it is otherwise identical in meaning to
14641462
declaring the item outside the statement block.

branches/try2/doc/tutorial-borrowed-ptr.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -468,10 +468,11 @@ overwritten for the duration of the borrow. In fact, the compiler
468468
would accept the example we gave earlier. The example is safe because
469469
the shape pointer has type `&Shape`, which means "borrowed pointer to
470470
immutable memory containing a `shape`". If, however, the type of that
471-
pointer were `&mut Shape`, then the ref binding would be ill-typed.
472-
Just as with unique boxes, the compiler will permit `ref` bindings
473-
into data owned by the stack frame even if the data are mutable,
474-
but otherwise it requires that the data reside in immutable memory.
471+
pointer were `&const Shape` or `&mut Shape`, then the ref binding
472+
would be ill-typed. Just as with unique boxes, the compiler will
473+
permit `ref` bindings into data owned by the stack frame even if the
474+
data are mutable, but otherwise it requires that the data reside in
475+
immutable memory.
475476

476477
# Returning borrowed pointers
477478

branches/try2/doc/tutorial-macros.md

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
# Introduction
44

55
Functions are the primary tool that programmers can use to build abstractions.
6-
Sometimes, however, programmers want to abstract over compile-time syntax
7-
rather than run-time values.
8-
Macros provide syntactic abstraction.
9-
For an example of how this can be useful, consider the following two code fragments,
10-
which both pattern-match on their input and both return early in one case,
11-
doing nothing otherwise:
6+
Sometimes, however, programmers want to perform abstractions over things that are not
7+
runtime values. Macros provide a syntactic abstraction. For an example of how this
8+
can be useful, consider the following two code fragments, which both pattern-match
9+
on their input and return early in one case, and do nothing otherwise:
1210

1311
~~~~
1412
# enum t { special_a(uint), special_b(uint) };
@@ -27,10 +25,9 @@ match input_2 {
2725
# }
2826
~~~~
2927

30-
This code could become tiresome if repeated many times.
31-
However, no function can capture its functionality to make it possible
32-
to abstract the repetition away.
33-
Rust's macro system, however, can eliminate the repetition. Macros are
28+
This code could become tiresome if repeated many times. However, no function
29+
can capture its functionality to make it possible to rewrite the repetition
30+
away. Rust's macro system, however, can eliminate the repetition. Macros are
3431
lightweight custom syntax extensions, themselves defined using the
3532
`macro_rules!` syntax extension. The following `early_return` macro captures
3633
the pattern in the above code:
@@ -40,7 +37,7 @@ the pattern in the above code:
4037
# fn f() -> uint {
4138
# let input_1 = special_a(0), input_2 = special_a(0);
4239
macro_rules! early_return(
43-
($inp:expr $sp:ident) => ( // invoke it like `(input_5 special_e)`
40+
($inp:expr $sp:ident) => ( //invoke it like `(input_5 special_e)`
4441
match $inp {
4542
$sp(x) => { return x; }
4643
_ => {}
@@ -96,10 +93,10 @@ that could be invoked like: `my_macro!(i->(( 2+2 )))`.
9693

9794
## Invocation location
9895

99-
A macro invocation may take the place of (and therefore expand to)
100-
an expression, an item, or a statement.
101-
The Rust parser will parse the macro invocation as a "placeholder"
102-
for whichever of those three nonterminals is appropriate for the location.
96+
A macro invocation may take the place of (and therefore expand to) either an
97+
expression, an item, or a statement. The Rust parser will parse the macro
98+
invocation as a "placeholder" for whichever of those three nonterminals is
99+
appropriate for the location.
103100

104101
At expansion time, the output of the macro will be parsed as whichever of the
105102
three nonterminals it stands in for. This means that a single macro might,
@@ -115,19 +112,17 @@ The right-hand side of the `=>` follows the same rules as the left-hand side,
115112
except that a `$` need only be followed by the name of the syntactic fragment
116113
to transcribe into the macro expansion; its type need not be repeated.
117114

118-
The right-hand side must be enclosed by delimiters, which the transcriber ignores.
119-
Therefore `() => ((1,2,3))` is a macro that expands to a tuple expression,
120-
`() => (let $x=$val)` is a macro that expands to a statement,
121-
and `() => (1,2,3)` is a macro that expands to a syntax error
122-
(since the transcriber interprets the parentheses on the right-hand-size as delimiters,
123-
and `1,2,3` is not a valid Rust expression on its own).
115+
The right-hand side must be enclosed by delimiters, which are ignored by the
116+
transcriber (therefore `() => ((1,2,3))` is a macro that expands to a tuple
117+
expression, `() => (let $x=$val)` is a macro that expands to a statement, and
118+
`() => (1,2,3)` is a macro that expands to a syntax error).
124119

125120
Except for permissibility of `$name` (and `$(...)*`, discussed below), the
126121
right-hand side of a macro definition is ordinary Rust syntax. In particular,
127122
macro invocations (including invocations of the macro currently being defined)
128123
are permitted in expression, statement, and item locations. However, nothing
129124
else about the code is examined or executed by the macro system; execution
130-
still has to wait until run-time.
125+
still has to wait until runtime.
131126

132127
## Interpolation location
133128

@@ -292,6 +287,7 @@ A macro may accept multiple different input grammars. The first one to
292287
successfully match the actual argument to a macro invocation is the one that
293288
"wins".
294289

290+
295291
In the case of the example above, we want to write a recursive macro to
296292
process the semicolon-terminated lines, one-by-one. So, we want the following
297293
input patterns:
@@ -373,19 +369,19 @@ return result + val;
373369
# }
374370
~~~~
375371

376-
This technique applies to many cases where transcribing a result all at once is not possible.
377-
The resulting code resembles ordinary functional programming in some respects,
378-
but has some important differences from functional programming.
372+
This technique is applicable in many cases where transcribing a result "all
373+
at once" is not possible. It resembles ordinary functional programming in some
374+
respects, but it is important to recognize the differences.
379375

380376
The first difference is important, but also easy to forget: the transcription
381377
(right-hand) side of a `macro_rules!` rule is literal syntax, which can only
382378
be executed at run-time. If a piece of transcription syntax does not itself
383379
appear inside another macro invocation, it will become part of the final
384380
program. If it is inside a macro invocation (for example, the recursive
385-
invocation of `biased_match_rec!`), it does have the opportunity to affect
381+
invocation of `biased_match_rec!`), it does have the opprotunity to affect
386382
transcription, but only through the process of attempted pattern matching.
387383

388-
The second, related, difference is that the evaluation order of macros feels
384+
The second difference is related: the evaluation order of macros feels
389385
"backwards" compared to ordinary programming. Given an invocation
390386
`m1!(m2!())`, the expander first expands `m1!`, giving it as input the literal
391387
syntax `m2!()`. If it transcribes its argument unchanged into an appropriate

branches/try2/doc/tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ while count < 10 {
234234

235235
Although Rust can almost always infer the types of local variables, you
236236
can specify a variable's type by following it with a colon, then the type
237-
name. Static items, on the other hand, always require a type annotation.
237+
name. Constants, on the other hand, always require a type annotation.
238238

239239
~~~~
240240
static monster_factor: float = 57.8;

branches/try2/mk/tests.mk

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -244,29 +244,21 @@ $(foreach host,$(CFG_HOST_TRIPLES), \
244244

245245
define TEST_RUNNER
246246

247-
# If NO_REBUILD is set then break the dependencies on std so we can
248-
# test crates without rebuilding core and std first
249-
ifeq ($(NO_REBUILD),)
250-
STDTESTDEP_$(1)_$(2)_$(3) = $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2))
251-
else
252-
STDTESTDEP_$(1)_$(2)_$(3) =
253-
endif
254-
255247
$(3)/test/coretest.stage$(1)-$(2)$$(X_$(2)): \
256248
$$(CORELIB_CRATE) $$(CORELIB_INPUTS) \
257-
$$(STDTESTDEP_$(1)_$(2)_$(3))
249+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2))
258250
@$$(call E, compile_and_link: $$@)
259251
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
260252

261253
$(3)/test/stdtest.stage$(1)-$(2)$$(X_$(2)): \
262254
$$(STDLIB_CRATE) $$(STDLIB_INPUTS) \
263-
$$(STDTESTDEP_$(1)_$(2)_$(3))
255+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2))
264256
@$$(call E, compile_and_link: $$@)
265257
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
266258

267259
$(3)/test/syntaxtest.stage$(1)-$(2)$$(X_$(2)): \
268260
$$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \
269-
$$(STDTESTDEP_$(1)_$(2)_$(3))
261+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2))
270262
@$$(call E, compile_and_link: $$@)
271263
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
272264

branches/try2/src/compiletest/common.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,6 @@ pub struct config {
6363
// Run tests using the JIT
6464
jit: bool,
6565

66-
// Run tests using the new runtime
67-
newrt: bool,
68-
6966
// Explain what's going on
7067
verbose: bool
7168

0 commit comments

Comments
 (0)