]> git.lizzy.rs Git - rust.git/commitdiff
Merge remote-tracking branch 'brson/repl'
authorBrian Anderson <banderson@mozilla.com>
Sun, 4 Nov 2012 21:42:39 +0000 (13:42 -0800)
committerBrian Anderson <banderson@mozilla.com>
Sun, 4 Nov 2012 21:42:39 +0000 (13:42 -0800)
Conflicts:
mk/install.mk
src/rt/rustrt.def.in

1  2 
AUTHORS.txt
Makefile.in
configure
mk/install.mk
mk/rt.mk
mk/tests.mk
mk/tools.mk
src/libstd/std.rc
src/rt/rustrt.def.in

diff --combined AUTHORS.txt
index ef72b0bd4dfa78ac0632cf64a939055865b9bbab,cc9c1a460a2f11fff424fe21ec74ddcbc6c605e8..a9bb2820ee1c63a1ef22a09b737461dbd55bcce5
@@@ -23,6 -23,7 +23,7 @@@ Benjamin Peterson <benjamin@python.org
  Brendan Eich <brendan@mozilla.org>
  Brian Anderson <banderson@mozilla.com>
  Brian J. Burg <burg@cs.washington.edu>
+ Brian Leibig <brian.leibig@gmail.com>
  Chris Double <chris.double@double.co.nz>
  Chris Peterson <cpeterson@mozilla.com>
  Damian Gryski <damian@gryski.com>
@@@ -41,7 -42,6 +42,7 @@@ Erick Tryzelaar <erick.tryzelaar@gmail.
  Erik Rose <erik@mozilla.com>
  Evan McClanahan <evan@evanmcc.com>
  Francisco Souza <f@souza.cc>
 +Gabriel <g2p.code@gmail.com>
  Gareth Daniel Smith <garethdanielsmith@gmail.com>
  Glenn Willen <gwillen@nerdnet.org>
  Gonçalo Cabrita <_@gmcabrita.com>
@@@ -73,9 -73,7 +74,9 @@@ Kevin Cantu <me@kevincantu.org
  Lennart Kudling
  Lindsey Kuper <lindsey@rockstargirl.org>
  Luca Bruno <lucab@debian.org>
 +Luqman Aden <laden@csclub.uwaterloo.ca>
  Magnus Auvinen <magnus.auvinen@gmail.com>
 +Mahmut Bulut <mahmutbulut0@gmail.com>
  Margaret Meyerhofer <mmeyerho@andrew.cmu.edu>
  Marijn Haverbeke <marijnh@gmail.com>
  Matt Brubeck <mbrubeck@limpet.net>
@@@ -100,7 -98,6 +101,7 @@@ Roland Tanglao <roland@rolandtanglao.co
  Roy Frostig <rfrostig@mozilla.com>
  Ryan Scheel <ryan.havvy@gmail.com>
  Sean Stangl <sstangl@mozilla.com>
 +Simon BD
  startling <tdixon51793@gmail.com>
  Stefan Plantikow <stefan.plantikow@googlemail.com>
  Taras Shpot <mrshpot@gmail.com>
@@@ -109,7 -106,6 +110,7 @@@ Tim Chevalier <chevalier@alum.wellesley
  Tom Lee <github@tomlee.co>
  Tomoki Aonuma <uasi@99cm.org>
  Tycho Sci <tychosci@gmail.com>
 +Viktor Dahl <pazaconyoman@gmail.com>
  Vincent Belliard <vincent@famillebelliard.fr>
  Wade Mealing <wmealing@gmail.com>
  Yasuhiro Fujii <y-fujii@mimosa-pudica.net>
diff --combined Makefile.in
index 51f4d269768b54de20a9387172a90503adab1929,ffed7915d2bfced7d8781dbf1697b427de383ea1..d8db8b3fcb2b50aab1f81c8cb728141b9dbd8cbd
@@@ -120,28 -120,19 +120,28 @@@ CFG_CORELIB :=$(call CFG_LIB_NAME,core
  CFG_STDLIB :=$(call CFG_LIB_NAME,std)
  CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc)
  CFG_LIBSYNTAX :=$(call CFG_LIB_NAME,syntax)
 +CFG_LIBFUZZER :=$(call CFG_LIB_NAME,fuzzer)
 +CFG_LIBCARGO :=$(call CFG_LIB_NAME,cargo)
 +CFG_LIBRUSTDOC :=$(call CFG_LIB_NAME,rustdoc)
  
  STDLIB_GLOB :=$(call CFG_LIB_GLOB,std)
  CORELIB_GLOB :=$(call CFG_LIB_GLOB,core)
  LIBRUSTC_GLOB :=$(call CFG_LIB_GLOB,rustc)
  LIBSYNTAX_GLOB :=$(call CFG_LIB_GLOB,syntax)
 +LIBFUZZER_GLOB :=$(call CFG_LIB_GLOB,fuzzer)
 +LIBCARGO_GLOB :=$(call CFG_LIB_GLOB,cargo)
 +LIBRUSTDOC_GLOB :=$(call CFG_LIB_GLOB,rustdoc)
  STDLIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,std)
  CORELIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,core)
  LIBRUSTC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustc)
  LIBSYNTAX_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,syntax)
 +LIBFUZZER_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,fuzzer)
 +LIBCARGO_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,cargo)
 +LIBRUSTDOC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustdoc)
  
  # version-string calculation
  CFG_GIT_DIR := $(CFG_SRC_DIR).git
 -CFG_RELEASE = 0.4
 +CFG_RELEASE = 0.5
  CFG_VERSION = $(CFG_RELEASE)
  
  ifneq ($(wildcard $(CFG_GIT)),)
@@@ -153,9 -144,8 +153,9 @@@ ifneq ($(wildcard $(CFG_GIT_DIR)),
  endif
  endif
  
 -ifdef CFG_DISABLE_VALGRIND
 -  $(info cfg: disabling valgrind (CFG_DISABLE_VALGRIND))
 +ifdef CFG_ENABLE_VALGRIND
 +  $(info cfg: enabling valgrind (CFG_ENABLE_VALGRIND))
 +else
    CFG_VALGRIND :=
  endif
  ifdef CFG_BAD_VALGRIND
@@@ -460,8 -450,9 +460,9 @@@ TSREQS :=                                                                                  
  FUZZ := $(HBIN2_H_$(CFG_HOST_TRIPLE))/fuzzer$(X)
  CARGO := $(HBIN2_H_$(CFG_HOST_TRIPLE))/cargo$(X)
  RUSTDOC := $(HBIN2_H_$(CFG_HOST_TRIPLE))/rustdoc$(X)
+ RUSTI := $(HBIN2_H_$(CFG_HOST_TRIPLE))/rusti$(X)
  
- all: rustc $(GENERATED) docs $(FUZZ) $(CARGO) $(RUSTDOC)
+ all: rustc $(GENERATED) docs $(FUZZ) $(CARGO) $(RUSTDOC) $(RUSTI)
  
  endif
  
diff --combined configure
index a8c3ba59e61af93d8a8e5c5b58cc2afcad9640f3,50eb9deeff3d421122515446586421f0f09f6577..c09f2c7a9e5efc918c90d72aea3dabe791f1313d
+++ b/configure
@@@ -187,7 -187,6 +187,7 @@@ need_cmd cm
  need_cmd mkdir
  need_cmd printf
  need_cmd cut
 +need_cmd head
  need_cmd grep
  need_cmd xargs
  need_cmd cp
@@@ -258,16 -257,6 +258,16 @@@ case $CFG_CPUTYPE i
          err "unknown CPU type: $CFG_CPUTYPE"
  esac
  
 +# Detect 64 bit linux systems with 32 bit userland and force 32 bit compilation
 +if [ $CFG_OSTYPE = unknown-linux-gnu -a $CFG_CPUTYPE = x86_64 ]
 +then
 +    file -L "$SHELL" | grep -q "x86[_-]64"
 +    if [ $? != 0 ]; then
 +        CFG_CPUTYPE=i686
 +    fi
 +fi
 +
 +
  DEFAULT_HOST_TRIPLE="${CFG_CPUTYPE}-${CFG_OSTYPE}"
  
  CFG_SRC_DIR="$(cd $(dirname $0) && pwd)/"
@@@ -294,7 -283,7 +294,7 @@@ els
  fi
  
  opt sharedstd 1 "build libstd as a shared library"
 -opt valgrind 1 "run tests with valgrind (memcheck by default)"
 +opt valgrind 0 "run tests with valgrind (memcheck by default)"
  opt helgrind 0 "run tests with helgrind instead of memcheck"
  opt docs     1 "build documentation"
  opt optimize 1 "build optimized rust code"
  
  if [ ! -z "$CFG_PANDOC" ]
  then
 -    PV=$(pandoc --version | awk '/^pandoc/ {print $2}')
 -    if [ "$PV" \< "1.8" ]
 +    PANDOC_VER_LINE=$(pandoc --version | grep '^pandoc ')
 +    PANDOC_VER=${PANDOC_VER_LINE#pandoc }
 +    PV_MAJOR_MINOR=${PANDOC_VER%.[0-9]*}
 +    PV_MAJOR=${PV_MAJOR_MINOR%%[.][0-9]*}
 +    PV_MINOR=${PV_MAJOR_MINOR#[0-9]*[.]}
 +    PV_MINOR=${PV_MINOR%%[.][0-9]*}
 +    if [ "$PV_MAJOR" -lt "1" ] || [ "$PV_MINOR" -lt "8" ]
      then
 -      step_msg "pandoc $PV is too old. disabling"
 -      BAD_PANDOC=1
 +              step_msg "pandoc $PV_MAJOR.$PV_MINOR is too old. disabling"
 +              BAD_PANDOC=1
      fi
  fi
  
@@@ -529,7 -513,7 +529,7 @@@ for t in $CFG_TARGET_TRIPLE
  do
    make_dir rt/$t
    for i in                                          \
-     isaac bigint sync test arch/i386 arch/x86_64    \
+     isaac linenoise bigint sync test arch/i386 arch/x86_64    \
      libuv libuv/src/ares libuv/src/eio libuv/src/ev
    do
      make_dir rt/$t/$i
@@@ -595,7 -579,7 +595,7 @@@ the
      need_ok "git failed"
  
      msg "git: submodule foreach sync"
 -    "${CFG_GIT}" submodule --quiet foreach --recursive git submodule sync
 +    "${CFG_GIT}" submodule --quiet foreach --recursive 'if test -e .gitmodules; then git submodule sync; fi'
      need_ok "git failed"
  
      msg "git: submodule foreach update"
diff --combined mk/install.mk
index a26572f413a09c6bf53b9e8713e7a92182e0c872,8bc691e813e0b45d7a13b3d50457691dcdcd9d35..1ba5fe63912bf6d85540d473a686111be8b28c65
@@@ -71,12 -71,9 +71,13 @@@ install-host: $(SREQ$(ISTAGE)_T_$(CFG_H
        $(Q)mkdir -p $(PREFIX_LIB)
        $(Q)mkdir -p $(PREFIX_ROOT)/share/man/man1
        $(Q)$(call INSTALL,$(HB2),$(PHB),rustc$(X))
 +      $(Q)$(call INSTALL,$(HB2),$(PHB),fuzzer$(X))
 +      $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBFUZZER))
        $(Q)$(call INSTALL,$(HB2),$(PHB),cargo$(X))
 +      $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBCARGO))
+       $(Q)$(call INSTALL,$(HB2),$(PHB),rusti$(X))
        $(Q)$(call INSTALL,$(HB2),$(PHB),rustdoc$(X))
 +      $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC))
        $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME))
        $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(CORELIB_GLOB))
        $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(STDLIB_GLOB))
@@@ -95,11 -92,9 +96,12 @@@ HOST_LIB_FROM_HL_GLOB = 
  uninstall:
        $(Q)rm -f $(PHB)/rustc$(X)
        $(Q)rm -f $(PHB)/cargo$(X)
+       $(Q)rm -f $(PHB)/rusti$(X)
        $(Q)rm -f $(PHB)/rustdoc$(X)
        $(Q)rm -f $(PHL)/$(CFG_RUSTLLVM)
 +      $(Q)rm -f $(PHL)/$(CFG_FUZZER)
 +      $(Q)rm -f $(PHL)/$(CFG_CARGO)
 +      $(Q)rm -f $(PHL)/$(CFG_RUSTDOC)
        $(Q)rm -f $(PHL)/$(CFG_RUNTIME)
        $(Q)for i in \
            $(call HOST_LIB_FROM_HL_GLOB,$(CORELIB_GLOB)) \
diff --combined mk/rt.mk
index e2e166ff2d63303f067d3c8ce407056509c29f73,35b8426c55548d95cbc48c451e29e32ba4abf450..fd948fbc53aaf806e3c50b7edb1ee69f35c24308
+++ b/mk/rt.mk
@@@ -42,7 -42,7 +42,7 @@@ define DEF_RUNTIME_TARGET
  # Runtime (C++) library variables
  ######################################################################
  
- RUNTIME_CS_$(1) := \
+ RUNTIME_CXXS_$(1) := \
                rt/sync/timer.cpp \
                rt/sync/lock_and_signal.cpp \
                rt/sync/rust_thread.cpp \
                rt/rust_shape.cpp \
                rt/rust_abi.cpp \
                rt/rust_debug.cpp \
 -              rt/rust_box_annihilator.cpp \
                rt/memory_region.cpp \
                rt/boxed_region.cpp \
                rt/arch/$$(HOST_$(1))/context.cpp \
                rt/arch/$$(HOST_$(1))/gpr.cpp
  
+ RUNTIME_CS_$(1) := rt/linenoise/linenoise.c rt/linenoise/utf8.c
  RUNTIME_S_$(1) := rt/arch/$$(HOST_$(1))/_context.S \
                    rt/arch/$$(HOST_$(1))/ccall.S \
                    rt/arch/$$(HOST_$(1))/record_sp.S
@@@ -103,9 -106,11 +105,11 @@@ endi
  
  RUNTIME_DEF_$(1) := rt/rustrt$$(CFG_DEF_SUFFIX)
  RUNTIME_INCS_$(1) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
-                 -I $$(S)src/rt/arch/$$(HOST_$(1)) \
-                               -I $$(S)src/libuv/include
- RUNTIME_OBJS_$(1) := $$(RUNTIME_CS_$(1):rt/%.cpp=rt/$(1)/%.o) \
+                      -I $$(S)src/rt/arch/$$(HOST_$(1)) \
+                      -I $$(S)src/rt/linenoise \
+                      -I $$(S)src/libuv/include
+ RUNTIME_OBJS_$(1) := $$(RUNTIME_CXXS_$(1):rt/%.cpp=rt/$(1)/%.o) \
+                      $$(RUNTIME_CS_$(1):rt/%.c=rt/$(1)/%.o) \
                       $$(RUNTIME_S_$(1):rt/%.S=rt/$(1)/%.o)
  ALL_OBJ_FILES += $$(RUNTIME_OBJS_$(1))
  
@@@ -115,6 -120,11 +119,11 @@@ ALL_OBJ_FILES += $$(MORESTACK_OBJS_$(1)
  RUNTIME_LIBS_$(1) := $$(LIBUV_LIB_$(1))
  
  rt/$(1)/%.o: rt/%.cpp $$(MKFILE_DEPS)
+       @$$(call E, compile: $$@)
+       $$(Q)$$(call CFG_COMPILE_CXX_$(1), $$@, $$(RUNTIME_INCS_$(1)) \
+                  $$(SNAP_DEFINES)) $$<
+ rt/$(1)/%.o: rt/%.c $$(MKFILE_DEPS)
        @$$(call E, compile: $$@)
        $$(Q)$$(call CFG_COMPILE_C_$(1), $$@, $$(RUNTIME_INCS_$(1)) \
                   $$(SNAP_DEFINES)) $$<
@@@ -132,7 -142,7 +141,7 @@@ rt/$(1)/$(CFG_RUNTIME): $$(RUNTIME_OBJS
                          $$(RUNTIME_DEF_$(1)) \
                          $$(RUNTIME_LIBS_$(1))
        @$$(call E, link: $$@)
-       $$(Q)$$(call CFG_LINK_C_$(1),$$@, $$(RUNTIME_OBJS_$(1)) \
+       $$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)) \
          $$(CFG_GCCISH_POST_LIB_FLAGS) $$(RUNTIME_LIBS_$(1)) \
          $$(CFG_LIBUV_LINK_FLAGS),$$(RUNTIME_DEF_$(1)),$$(CFG_RUNTIME))
  
diff --combined mk/tests.mk
index d59a3403a6292254f2a2e06af5fd24573fe25f1f,efa6d44fcc90f709568587af927bb5f65b6ec02f..2eec607ff81d75de69f8a59f2401a0296324c051
@@@ -93,22 -93,22 +93,22 @@@ cleantestlibs
           | xargs rm -rf
  
  check: cleantestlibs cleantmptestlogs tidy all check-stage2
 -      $(Q)$(S)src/etc/check-summary.py tmp/*.log
 +      $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
  
  check-notidy: cleantestlibs cleantmptestlogs all check-stage2
 -      $(Q)$(S)src/etc/check-summary.py tmp/*.log
 +      $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
  
  check-full: cleantestlibs cleantmptestlogs tidy \
              all check-stage1 check-stage2 check-stage3
 -      $(Q)$(S)src/etc/check-summary.py tmp/*.log
 +      $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
  
  check-test: cleantestlibs cleantmptestlogs all check-stage2-rfail
 -      $(Q)$(S)src/etc/check-summary.py tmp/*.log
 +      $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
  
  check-lite: cleantestlibs cleantmptestlogs rustc-stage2 \
        check-stage2-core check-stage2-std check-stage2-rpass \
        check-stage2-rfail check-stage2-cfail
 -      $(Q)$(S)src/etc/check-summary.py tmp/*.log
 +      $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
  
  # Run the tidy script in multiple parts to avoid huge 'echo' commands
  ifdef CFG_NOTIDY
@@@ -122,6 -122,7 +122,7 @@@ ALL_CS := $(wildcard $(S)src/rt/*.cpp 
  ALL_CS := $(filter-out $(S)src/rt/bigint/bigint_ext.cpp \
                         $(S)src/rt/bigint/bigint_int.cpp \
                         $(S)src/rt/miniz.cpp \
+                        $(S)src/rt/linenoise/linenoise.c \
        ,$(ALL_CS))
  ALL_HS := $(wildcard $(S)src/rt/*.h \
                       $(S)src/rt/*/*.h \
@@@ -135,19 -136,20 +136,20 @@@ ALL_HS := $(filter-out $(S)src/rt/vg/va
                         $(S)src/rt/msvc/stdint.h \
                         $(S)src/rt/msvc/inttypes.h \
                         $(S)src/rt/bigint/bigint.h \
+                        $(S)src/rt/linenoise/linenoise.h \
        ,$(ALL_HS))
  
  tidy:
                @$(call E, check: formatting)
                $(Q)find $(S)src -name '*.r[sc]' \
                | grep '^$(S)src/test' -v \
 -              | xargs -n 10 python $(S)src/etc/tidy.py
 +              | xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
                $(Q)find $(S)src/etc -name '*.py' \
 -              | xargs -n 10 python $(S)src/etc/tidy.py
 +              | xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
                $(Q)echo $(ALL_CS) \
 -              | xargs -n 10 python $(S)src/etc/tidy.py
 +              | xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
                $(Q)echo $(ALL_HS) \
 -              | xargs -n 10 python $(S)src/etc/tidy.py
 +              | xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
  
  endif
  
@@@ -229,6 -231,7 +231,7 @@@ check-stage$(1)-T-$(2)-H-$(3):                                     
        check-stage$(1)-T-$(2)-H-$(3)-bench                     \
        check-stage$(1)-T-$(2)-H-$(3)-pretty        \
      check-stage$(1)-T-$(2)-H-$(3)-rustdoc       \
+     check-stage$(1)-T-$(2)-H-$(3)-rusti       \
      check-stage$(1)-T-$(2)-H-$(3)-cargo       \
      check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial  \
      check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial-ffi  \
@@@ -289,6 -292,9 +292,9 @@@ check-stage$(1)-T-$(2)-H-$(3)-pretty-pr
  check-stage$(1)-T-$(2)-H-$(3)-rustdoc:                                \
        check-stage$(1)-T-$(2)-H-$(3)-rustdoc-dummy
  
+ check-stage$(1)-T-$(2)-H-$(3)-rusti:                          \
+       check-stage$(1)-T-$(2)-H-$(3)-rusti-dummy
  check-stage$(1)-T-$(2)-H-$(3)-cargo:                          \
        check-stage$(1)-T-$(2)-H-$(3)-cargo-dummy
  
@@@ -357,7 -363,7 +363,7 @@@ check-stage$(1)-T-$(2)-H-$(3)-rustc-dum
  # Rules for the rustdoc test runner
  
  $(3)/test/rustdoctest.stage$(1)-$(2)$$(X):                                    \
 -              $$(RUSTDOC_CRATE) $$(RUSTDOC_INPUTS)            \
 +              $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS)              \
                $$(TSREQ$(1)_T_$(2)_H_$(3))                                     \
                $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB)  \
                $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB)   \
@@@ -371,10 -377,28 +377,28 @@@ check-stage$(1)-T-$(2)-H-$(3)-rustdoc-d
        $$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)   \
        --logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rustdoc.log
  
+ # Rules for the rusti test runner
+ $(3)/test/rustitest.stage$(1)-$(2)$$(X):                                      \
+               $$(RUSTI_CRATE) $$(RUSTI_INPUTS)                \
+               $$(TSREQ$(1)_T_$(2)_H_$(3))                                     \
+               $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB)  \
+               $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB)   \
+               $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC)
+       @$$(call E, compile_and_link: $$@)
+       $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
+ check-stage$(1)-T-$(2)-H-$(3)-rusti-dummy:            \
+               $(3)/test/rustitest.stage$(1)-$(2)$$(X)
+       @$$(call E, run: $$<)
+       $$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)   \
+       --logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rusti.log
  # Rules for the cargo test runner
  
  $(3)/test/cargotest.stage$(1)-$(2)$$(X):                                      \
 -              $$(CARGO_CRATE) $$(CARGO_INPUTS)                \
 +              $$(CARGO_LIB) $$(CARGO_INPUTS)          \
                $$(TSREQ$(1)_T_$(2)_H_$(3))                                     \
                $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB)  \
                $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB)   \
@@@ -756,6 -780,9 +780,9 @@@ check-stage$(1)-H-$(2)-pretty-pretty
  check-stage$(1)-H-$(2)-rustdoc:                                       \
        $$(foreach target,$$(CFG_TARGET_TRIPLES),       \
         check-stage$(1)-T-$$(target)-H-$(2)-rustdoc)
+ check-stage$(1)-H-$(2)-rusti:                                 \
+       $$(foreach target,$$(CFG_TARGET_TRIPLES),       \
+        check-stage$(1)-T-$$(target)-H-$(2)-rusti)
  check-stage$(1)-H-$(2)-cargo:                                 \
        $$(foreach target,$$(CFG_TARGET_TRIPLES),       \
         check-stage$(1)-T-$$(target)-H-$(2)-cargo)
diff --combined mk/tools.mk
index 011a7912852dac0a0b0c8823052afb9faa399258,cdfad867126f62efe8117a3f135115f1dc541639..98356985654b2319c843b9b36aae8cb5d6b6ab11
@@@ -1,55 -1,44 +1,59 @@@
  # Rules for non-core tools built with the compiler, both for target
  # and host architectures
  
 -FUZZER_CRATE := $(S)src/fuzzer/fuzzer.rc
 -FUZZER_INPUTS := $(wildcard $(addprefix $(S)src/fuzzer/, *.rs))
 +TOOL_DRIVER := $(S)src/driver/driver.rs
 +
 +FUZZER_LIB := $(S)src/libfuzzer/fuzzer.rc
 +FUZZER_INPUTS := $(wildcard $(addprefix $(S)src/libfuzzer/, *.rs))
  
  # The test runner that runs the cfail/rfail/rpass and bench tests
  COMPILETEST_CRATE := $(S)src/compiletest/compiletest.rc
  COMPILETEST_INPUTS := $(wildcard $(S)src/compiletest/*rs)
  
  # Cargo, the package manager
 -CARGO_CRATE := $(S)src/cargo/cargo.rc
 +CARGO_LIB := $(S)src/libcargo/cargo.rc
  CARGO_INPUTS := $(wildcard $(S)src/cargo/*rs)
  
  # Rustdoc, the documentation tool
 -RUSTDOC_CRATE := $(S)src/rustdoc/rustdoc.rc
 +RUSTDOC_LIB := $(S)src/librustdoc/rustdoc.rc
  RUSTDOC_INPUTS := $(wildcard $(S)src/rustdoc/*.rs)
  
+ # Rusti, the JIT REPL
+ RUSTI_CRATE := $(S)src/rusti/rusti.rc
+ RUSTI_INPUTS := $(wildcard $(S)src/rusti/*.rs)
  # FIXME: These are only built for the host arch. Eventually we'll
  # have tools that need to built for other targets.
  define TOOLS_STAGE_N
  
 -$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X):                               \
 -              $$(FUZZER_CRATE) $$(FUZZER_INPUTS)                      \
 +$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER):          \
 +              $$(FUZZER_LIB) $$(FUZZER_INPUTS)                        \
                $$(TSREQ$(1)_T_$(4)_H_$(3))                                     \
                $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB)      \
                $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB)       \
                $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
        @$$(call E, compile_and_link: $$@)
 -      $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
 +      $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
 +
 +$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X):                               \
 +              $$(TOOL_DRIVER)                                                         \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER)
 +      @$$(call E, compile_and_link: $$@)
 +      $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg fuzzer -o $$@ $$<
  
  # Promote the stageN target to stageN+1 host
  # FIXME: Shouldn't need to depend on host/librustc.so once
  # rpath is working
 +$$(HLIB$(2)_H_$(4))/$$(CFG_LIBFUZZER):                                        \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER)    \
 +              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC)                    \
 +              $$(HSREQ$(2)_H_$(4))
 +      @$$(call E, cp: $$@)
 +      $$(Q)cp $$< $$@
 +
  $$(HBIN$(2)_H_$(4))/fuzzer$$(X):                              \
                $$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X)  \
 -              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC)    \
 +              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBFUZZER)   \
                $$(HSREQ$(2)_H_$(4))
        @$$(call E, cp: $$@)
        $$(Q)cp $$< $$@
@@@ -68,64 -57,51 +72,79 @@@ $$(HBIN$(2)_H_$(4))/compiletest$$(X)
        @$$(call E, cp: $$@)
        $$(Q)cp $$< $$@
  
 -$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X):                                \
 -              $$(CARGO_CRATE) $$(CARGO_INPUTS)                        \
 +$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO):          \
 +              $$(CARGO_LIB) $$(CARGO_INPUTS)                          \
                $$(TSREQ$(1)_T_$(4)_H_$(3))                                     \
 -              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB)  \
 -              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB)   \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB)      \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB)       \
                $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
        @$$(call E, compile_and_link: $$@)
 -      $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
 +      $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
 +
 +$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X):                                \
 +              $$(TOOL_DRIVER)                                                         \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO)
 +      @$$(call E, compile_and_link: $$@)
 +      $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg cargo -o $$@ $$<
 +
 +$$(HLIB$(2)_H_$(4))/$$(CFG_LIBCARGO):                         \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO)     \
 +              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC)            \
 +              $$(HSREQ$(2)_H_$(4))
 +      @$$(call E, cp: $$@)
 +      $$(Q)cp $$< $$@
  
  $$(HBIN$(2)_H_$(4))/cargo$$(X):                                       \
                $$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X)   \
 +              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBCARGO)    \
                $$(HSREQ$(2)_H_$(4))
        @$$(call E, cp: $$@)
        $$(Q)cp $$< $$@
  
 -$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X):                      \
 -              $$(RUSTDOC_CRATE) $$(RUSTDOC_INPUTS)            \
 +$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC):                \
 +              $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS)                      \
                $$(TSREQ$(1)_T_$(4)_H_$(3))                                     \
 -              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB)  \
 -              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB)   \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB)      \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB)       \
                $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
        @$$(call E, compile_and_link: $$@)
 -      $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
 +      $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@
 +
 +$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X):                      \
 +              $$(TOOL_DRIVER)                                                         \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC)
 +      @$$(call E, compile_and_link: $$@)
 +      $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$<
 +
 +$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC):                                       \
 +              $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC)   \
 +              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC)                    \
 +              $$(HSREQ$(2)_H_$(4))
 +      @$$(call E, cp: $$@)
 +      $$(Q)cp $$< $$@
  
  $$(HBIN$(2)_H_$(4))/rustdoc$$(X):                             \
                $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X) \
 +              $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC)  \
                $$(HSREQ$(2)_H_$(4))
        @$$(call E, cp: $$@)
        $$(Q)cp $$< $$@
  
+ $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X):                        \
+               $$(RUSTI_CRATE) $$(RUSTI_INPUTS)                \
+               $$(TSREQ$(1)_T_$(4)_H_$(3))                                     \
+               $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB)  \
+               $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB)   \
+               $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC)
+       @$$(call E, compile_and_link: $$@)
+       $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$<
+ $$(HBIN$(2)_H_$(4))/rusti$$(X):                               \
+               $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X)   \
+               $$(HSREQ$(2)_H_$(4))
+       @$$(call E, cp: $$@)
+       $$(Q)cp $$< $$@
  endef
  
  $(foreach host,$(CFG_TARGET_TRIPLES),                         \
diff --combined src/libstd/std.rc
index 0c48cd7ce0061e1336afaf51397abcd1814ef75f,62601ebb67b506714f5797c6e183fd06052c34cb..ee1b8ab57733a7ed400f025054f58a2a839a7525
@@@ -8,7 -8,7 +8,7 @@@ not required in or otherwise suitable f
  */
  
  #[link(name = "std",
 -       vers = "0.4",
 +       vers = "0.5",
         uuid = "122bed0b-c19b-4b82-b0b7-7ae8aead7297",
         url = "https://github.com/mozilla/rust/tree/master/src/libstd")];
  
@@@ -25,7 -25,7 +25,7 @@@
  #[allow(deprecated_mode)];
  #[forbid(deprecated_pattern)];
  
 -extern mod core(vers = "0.4");
 +extern mod core(vers = "0.5");
  use core::*;
  
  // General io and system-services modules
@@@ -53,7 -53,6 +53,7 @@@ pub mod cell
  pub mod sync;
  pub mod arc;
  pub mod comm;
 +pub mod future;
  
  // Collections
  
@@@ -83,6 -82,7 +83,7 @@@ pub mod arena
  pub mod par;
  pub mod cmp;
  pub mod base64;
+ pub mod rl;
  
  #[cfg(unicode)]
  mod unicode;
diff --combined src/rt/rustrt.def.in
index 1eedb8d5e288e13a476bb40ba995cbd93b13dcf8,0668479a48d0aaae2ddfec519f1a5d055c6b9ab2..8dac7d515b36fa39caeae6e94745127fcc38f6eb
@@@ -79,6 -79,8 +79,6 @@@ upcall_validate_bo
  upcall_log_type
  upcall_malloc
  upcall_rust_personality
 -upcall_str_new_uniq
 -upcall_str_new_shared
  upcall_call_shim_on_c_stack
  upcall_call_shim_on_rust_stack
  upcall_new_stack
@@@ -176,6 -178,8 +176,6 @@@ rust_dbg_do_nothin
  rust_dbg_breakpoint
  rust_osmain_sched_id
  rust_compare_and_swap_ptr
 -rust_atomic_increment
 -rust_atomic_decrement
  rust_global_env_chan_ptr
  rust_port_take
  rust_port_drop
@@@ -198,8 -202,12 +198,15 @@@ rust_task_dere
  rust_call_tydesc_glue
  tdefl_compress_mem_to_heap
  tinfl_decompress_mem_to_heap
 -rust_annihilate_box
  rust_gc_metadata
 +rust_uv_ip4_port
 +rust_uv_ip6_port
 +rust_uv_tcp_getpeername
 +rust_uv_tcp_getpeername6
+ linenoise
+ linenoiseSetCompletionCallback
+ linenoiseAddCompletion
+ linenoiseHistoryAdd
+ linenoiseHistorySetMaxLen
+ linenoiseHistorySave
+ linenoiseHistoryLoad