rust

A safe, concurrent, practical language.

Subscribe to updates I use rust


Statistics on rust

Number of watchers on Github 26931
Number of open issues 3502
Average time to close an issue 1 day
Main language Rust
Average time to merge a PR 2 days
Open pull requests 690+
Closed pull requests 228+
Last commit 6 months ago
Repo Created over 8 years ago
Repo Last Updated 6 months ago
Size 343 MB
Homepage https://www.rust-...
Organization / Authorrust-lang
Contributors473
Page Updated
Do you use rust? Leave a review!
View open issues (3502)
View rust activity
View on github
Latest Open Source Launches
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating rust for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

The Rust Programming Language

This is the main source code repository for Rust. It contains the compiler, standard library, and documentation.

Quick Start

Read Installation from The Book.

Building from Source

Building on *nix

  1. Make sure you have installed the dependencies:
  • g++ 4.7 or later or clang++ 3.x or later
  • python 2.7 (but not 3.x)
  • GNU make 3.81 or later
  • cmake 3.4.3 or later
  • curl
  • git
  1. Clone the source with git:
   $ git clone https://github.com/rust-lang/rust.git
   $ cd rust
  1. Build and install:

    $ ./x.py build && sudo ./x.py install
    

    Note: Install locations can be adjusted by copying the config file from ./config.toml.example to ./config.toml, and adjusting the prefix option under [install]. Various other options, such as enabling debug information, are also supported, and are documented in the config file.

    When complete, sudo ./x.py install will place several programs into /usr/local/bin: rustc, the Rust compiler, and rustdoc, the API-documentation tool. This install does not include Cargo, Rust's package manager, which you may also want to build.

Building on Windows

There are two prominent ABIs in use on Windows: the native (MSVC) ABI used by Visual Studio, and the GNU ABI used by the GCC toolchain. Which version of Rust you need depends largely on what C/C++ libraries you want to interoperate with: for interop with software produced by Visual Studio use the MSVC build of Rust; for interop with GNU software built using the MinGW/MSYS2 toolchain use the GNU build.

MinGW

MSYS2 can be used to easily build Rust on Windows:

  1. Grab the latest MSYS2 installer and go through the installer.

  2. Run mingw32_shell.bat or mingw64_shell.bat from wherever you installed MSYS2 (i.e. C:\msys64), depending on whether you want 32-bit or 64-bit Rust. (As of the latest version of MSYS2 you have to run msys2_shell.cmd -mingw32 or msys2_shell.cmd -mingw64 from the command line instead)

  3. From this terminal, install the required tools:

   # Update package mirrors (may be needed if you have a fresh install of MSYS2)
   $ pacman -Sy pacman-mirrors

   # Install build tools needed for Rust. If you're building a 32-bit compiler,
   # then replace "x86_64" below with "i686". If you've already got git, python,
   # or CMake installed and in PATH you can remove them from this list. Note
   # that it is important that you do **not** use the 'python2' and 'cmake'
   # packages from the 'msys2' subsystem. The build has historically been known
   # to fail with these packages.
   $ pacman -S git \
               make \
               diffutils \
               tar \
               mingw-w64-x86_64-python2 \
               mingw-w64-x86_64-cmake \
               mingw-w64-x86_64-gcc
  1. Navigate to Rust's source code (or clone it), then build it:
   $ ./x.py build && ./x.py install

MSVC

MSVC builds of Rust additionally require an installation of Visual Studio 2013 (or later) so rustc can use its linker. Make sure to check the C++ tools option.

With these dependencies installed, you can build the compiler in a cmd.exe shell with:

> python x.py build

Currently building Rust only works with some known versions of Visual Studio. If you have a more recent version installed the build system doesn't understand then you may need to force rustbuild to use an older version. This can be done by manually calling the appropriate vcvars file before running the bootstrap.

CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat"
python x.py build

Specifying an ABI

Each specific ABI can also be used from either environment (for example, using the GNU ABI in powershell) by using an explicit build triple. The available Windows build triples are:

  • GNU ABI (using GCC)
    • i686-pc-windows-gnu
    • x86_64-pc-windows-gnu
  • The MSVC ABI
    • i686-pc-windows-msvc
    • x86_64-pc-windows-msvc

The build triple can be specified by either specifying --build=<triple> when invoking x.py commands, or by copying the config.toml file (as described in Building From Source), and modifying the build option under the [build] section.

Configure and Make

While it's not the recommended build system, this project also provides a configure script and makefile (the latter of which just invokes x.py).

$ ./configure
$ make && sudo make install

When using the configure script, the generated config.mk file may override the config.toml file. To go back to the config.toml file, delete the generated config.mk file.

Building Documentation

If youd like to build the documentation, its almost the same:

$ ./x.py doc

The generated documentation will appear under doc in the build directory for the ABI used. I.e., if the ABI was x86_64-pc-windows-msvc, the directory will be build\x86_64-pc-windows-msvc\doc.

Notes

Since the Rust compiler is written in Rust, it must be built by a precompiled snapshot version of itself (made in an earlier state of development). As such, source builds require a connection to the Internet, to fetch snapshots, and an OS that can execute the available snapshot binaries.

Snapshot binaries are currently built and tested on several platforms:

Platform / Architecture x86 x86_64
Windows (7, 8, Server 2008 R2)
Linux (2.6.18 or later)
OSX (10.7 Lion or later)

You may find that other platforms work, but these are our officially supported build environments that are most likely to work.

Rust currently needs between 600MiB and 1.5GiB of RAM to build, depending on platform. If it hits swap, it will take a very long time to build.

There is more advice about hacking on Rust in CONTRIBUTING.md.

Getting Help

The Rust community congregates in a few places:

Contributing

To contribute to Rust, please see CONTRIBUTING.

Rust has an IRC culture and most real-time collaboration happens in a variety of channels on Mozilla's IRC network, irc.mozilla.org. The most popular channel is #rust, a venue for general discussion about Rust. And a good place to ask for help would be #rust-beginners.

Also, the rustc guide might be a good place to start if you want to find out how various parts of the compiler work.

License

Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.

rust open issues Ask a question     (View All Issues)
  • almost 2 years rustc internal compiler error: librustc/infer/mod.rs:699
  • almost 2 years `make dist` for MinGW probably broken on rustbuild
  • almost 2 years `AssociatedItem` metadata gets entangled with item contents across crates
  • almost 2 years Macro error inside of file that gets included with include! yields terrible error
  • almost 2 years Multiple unused formatting argument notes should use multispan
  • almost 2 years Separate foreign items in HIR
  • almost 2 years Separate trait items from trait
  • almost 2 years remove `Box<DST>` special code from trans now that the `box_free` lang item supports them
  • almost 2 years Give a "modifying moved binding" or "unread value" warning in move-closures
  • almost 2 years LLVM assert with invalid -C target-feature
  • almost 2 years save-analysis: re-tokenisation error with `<<`
  • almost 2 years Compiler crash pattern matching unsized tuple in enum variant
  • almost 2 years [src] links in beta and nightly documentation are broken
  • almost 2 years Parse doc-comments on macro variants and render them in Rustdoc
  • almost 2 years Consider reverting atomic types implementing UnwindSafe
  • almost 2 years (MIR?) ICE: unsupported target word size
  • almost 2 years overly conserative region edges invoking higher-ranked closure
  • almost 2 years MIR panicked compilation
  • almost 2 years Location info is incorrect when using mod in macro
  • almost 2 years Coercion creates false region inference error
  • almost 2 years support `default impl` for specialization
  • almost 2 years Should `enum Foo { SingleVariant }` be zero-size?
  • almost 2 years Incorrect `unused_extern_crate` warning while testing
  • almost 2 years demangled characters like { make debugging annoying
  • almost 2 years Rust is very slow in debug builds on Windows
  • almost 2 years Need a way to detect Windows XP support in build.rs script
  • almost 2 years function args show up twice in VS debugger's Locals view [msvc]
  • almost 2 years LLVM assertion on debuginfo generation.
  • almost 2 years Two-level type inference throws unhelpful E0308
  • almost 2 years misleading error message for trait usage from external scope
rust open pull requests (View All Pulls)
  • std: Use Android LFS off64_t, ftruncate64, and lseek64
  • mk: Add missing rustbuild dirs to `dist`
  • mk: Specify armv6 for gcc on arm-unknown-linux-*
  • Fix number of lines and methods in guessing game
  • Use `box` syntax in `vec!` macro
  • Add target_float
  • Fix issue number for type_macros gate
  • rustc: Refactor how unstable flags are handled
  • Enable building freestanding sysroot with cargo
  • Update .gitmodules
  • Clarify chunks() and chunks_mut() iterator content
  • Remove dead code from sys::windows::c
  • Register new snapshots
  • Clarify the semantics of enum discriminants
  • doc: there is no case that is shown, so something was likely missing …
  • Plumb inference obligations through librustc/middle and librustc_typeck
  • Expand the set of mutual PartialEq and PartialOrd impls for OsStr[ing] and Path[Buf]
  • Extend compiletest to support subdirectories
  • syntax: Always pretty print a newline after doc comments
  • Improve import resolution
  • Add zeroext/signext attributes to C ABI functions where appropriate
  • Rustdoc: add crate items to the search-index
  • rustbuild: Add rustbook/standalone doc support
  • [WIP] Distinguish fn item types to allow reification from nothing to fn pointers.
  • Compute `target_feature` from LLVM
  • Implement `Clone` for `std::vec::IntoIter`
  • make `Skip` a `DoubleEndedIterator`
  • Check the docs as part of check-stageN
  • reference: vtable entries are resolved at runtime
  • Improvements to `--print cfg`
  • [WIP] Changes to name resolution rules (shadowable globs, item-like private imports, etc.)
  • Don't allow values for codegen-units less than 1
  • Reject unspecified and loopback IP from global
  • Break Critical Edges and other MIR work
  • Add is_documentation for IPv6
  • Fix Windows rustbuild
  • std: Change `encode_utf{8,16}` to return iterators
  • [WIP] implement RFC495 semantics for slice patterns
  • Restrict constants in patterns
  • Statically link run-pass/command-before-exec so it passes not just whenever we happen to bootstrap perfectly.
  • Rollup of 9 pull requests
  • Fixup stout/stderr on Windows
  • Call str::to_owned in String::from and uninline it
  • Removed integer suffixes in libsyntax crate
  • first round of removal of integer suffixes
  • Allow custom filenames for anonymous inputs
  • mk: Add configure option for disabling codegen tests
  • resolve: Refactor how the prelude is handled
  • Do not report errors from regionck if other errors were already reported
  • Move analysis for MIR borrowck
  • Fix name resolution in lexical scopes
  • Add AVX broadcast and conversion intrinsics
  • cleanups and fixes for #[derive]
  • resolve: Minimize hacks in name resolution of primitive types
  • std: Fix tracking issues and clean deprecated APIs
  • Refactor call & function handling in trans, enable MIR bootstrap.
  • [RFC] Implement `..` in tuple (struct) patterns
  • Move into_ascii_{low,upp}ercase (back) to a separate trait.
  • Derive Eq for RandomState
  • Preserve times for fs::copy on Unix.
  • rustc: Implement custom panic runtimes
  • Add error description for E0436
  • rustbuild: Fix handling of the bootstrap key
  • Fix beta branch
  • Clarify try! doc example
  • Release notes for 1.9
  • Fix API documentation
  • Fix conflicting link identifiers
  • Bump to 1.10
  • Do not encode name when encoding DefKey
  • don't report errors in constants at every use site
  • i386-unknown-freebsd snap 235d774
  • Implement `pub(restricted)` privacy (RFC 1422)
  • impl<T> IntoIterator for [T; $N]
  • Add test for is_char_boundary
  • Remove an extra command from the usage message
  • Implement `From<Vec<T>>` and `Into<Vec<T>>` for `VecDeque<T>`
  • Add rustbuild option to use Ninja for LLVM build
  • adding Dragonfly x86_64 snapshot 235d774
  • Rollup of 10 pull requests
  • librustc_back: fix incorrect comment about RUST_TARGET_PATH
  • Don't read past limit for in BufRead instance of Take
  • Specialize `Extend` to `append` for `{LinkedList, Vec}`
  • output target json files
  • Avoid gated feature checking unconfigured expanded items
  • Normalize lazilly for sized
  • Distribute both rust-lldb and rust-gdb everywhere
  • std: Funnel all aborts through rtabort! cc #31519
  • Do not rely on file extensions after path canonicalization.
  • Warn for type parameter defaults on impl blocks
  • track incr. comp. dependencies across crates
  • Add detailed error explanation for E0505
  • Utilize `Result::unwrap_err` in more places.
  • Preparatory refactorings for collector-driven trans.
  • resolve: do not modify span of non-importable name
  • Update iter.rs
  • Update iterator.rs
  • Rollup of 17 pull requests
  • Support 16-bit pointers as well as i/usize
  • Indicate struct names are code-like in doc-comment.
  • casting `&[u8]` to `* const u8` doesn't work in const_eval
  • Fix Typo in Barrier::wait documentation
  • Allow for opt-level=s,z during bootstrap
  • Plumb inference obligations through selection (alternative)
  • Make --emit dep-info work correctly with -Z no-analysis again.
  • Perform name resolution before and during ast->hir lowering
  • doc: trim some needless code
  • doc: make RFC references consistent
  • Fix some some duplicate words.
  • doc: Update reference with better description of target_env
  • Update CSS for future rustdoc merge
  • [Doc] Default cpu is "generic" (and not "default")
  • Fix fast path of float parsing on x87
  • Add an example to Wrapping's documentation.
  • Implement RFC 1542
  • Split the type context into a global and a local (inference-only) one.
  • make dist: specify the archive file as stdout
  • Add an LLVM fatal error handler
  • implement RFC 1521
  • Add error explanations for E0374, E0375, E0376 on issue #32777
  • rustdoc: Add doc snippets for trait impls, with a read more link
  • Reword the short diagnostic for E0509
  • Add missing code fence to `diagnostics.rs`
  • Fix selected item background style
  • Document code with variable from macro
  • Catch thread in example
  • Fixes to mir dataflow
  • syntax_ext: format: nest_level's are no more
  • Added a big-picture explanation for thread::park() & co.
  • Deprecate {f32,f64}::abs_sub.
  • true color, fixed boolval style in doc
  • Add lifetime's bounds in doc generation
  • Remove hir::Ident
  • Update i686-linux-android features to match android x86 ABI.
  • Correct the docs on str::trim_matches
  • Remove ExplicitSelf from AST
  • [WIP] [DO NOT MERGE] Ergonomic format macro
  • Implement `..` in tuple (struct) patterns (RFC 1492)
  • [WIP][MIR] Generic lattice-based DF framework
  • rustbuild: Touch up some test suites
  • [MIR] non-zeroing drop
  • IntelliJ support, ordering, cleanup
  • Don't suggest using fields in a static method
  • Add a note about Higher-Ranked Trait Bounds in docs on Closures.
  • doc: format! may or may not handle streams in future
  • Save metadata even with -Z no-trans (e.g. for multi-crate cargo check).
  • Fix link in std::collections::btree_set documentation
  • Add note to type mismatch errors related to specialization.
  • MIR: Don't generate 3-armed boolean switch from match.
  • update tracking issue for once_poison
  • Add regression tests for #13727.
  • Treat `#[test]` like `#[cfg(test)]` in non-test builds
  • Run rustfmt on src/test/codegen/ folder
  • Show types of all args when missing args
  • generate fewer basic blocks for variant switches
  • Incr. comp. dep-node for traits, tests
  • Move name resolution into phase 2
  • Fix incorrect LLVM Linkage enum
  • document that Files close themselves automatically
  • rustbuild: Clean more on `make clean`
  • [MIR] Make scopes debuginfo-specific (visibility scopes).
  • hoedown: fix trigger of -Werror=misleading-indentation
  • doc: Correct char::escape_unicode documentation.
  • Remove the old FOLLOW checking (aka `check_matcher_old`).
  • Take the def_map argument to TyCtxt::create_and_enter out of its RefCell.
  • Add custom message parameter to `assert_eq!`
  • run rustfmt on compiletest folder in src/tools/
  • Retry on EINTR in Bytes and Chars.
  • stable features lint warning mentions version stabilized
  • Use --release-channel=stable by default on releases
  • normalize types in MIR typeck after erasing regions
  • resolve: record pattern def when `resolve_pattern` returns `Err(true)`
  • run rustfmt on libcollections module
  • Added help for eof message inside macro invocation
  • add explanation for E0429 (`self` use declaration must use brace syntax)
  • run rustfmt on librustc_passes folder
  • run rustfmt on rtstartup folder
  • Implement split_off for BTreeMap and BTreeSet (RFC 509)
  • run rustfmt on libpanic_unwind folder
  • run rustfmt on libpanic_abort folder
  • Fixes for `-Z dump-mir`
  • Added Default trait for Cow.
  • Fix issue where rustbuild expected msvc to have ar
  • save-analysis: some tweaks
  • Add regression tests for #23122
  • Perform `cfg` attribute processing on decorator-generated items
  • Correct use of 'nul' 'null' and capitalization in the book
  • rustdoc: Add stability notices to impl items
  • update reference for #29734
  • Add/improve num const docs
  • Simplify gated cfg checking
  • book/ffi: nullable pointer, libc cleanups
  • Autoupdate man page rev/date info upon git-archive
  • Allow `MultiItemModifier`s to expand into zero or many items
  • diagnostically note source of overruling outer forbid
  • Revert a change in the scope of macros imported from crates to fix a regression
  • compiletest: detect nodejs binary, allow override
  • run rustfmt on compiletest folder in src/tools/ folder
  • run rustfmt on libsyntax folder
  • Add support for macro expansion inside trait items
  • rustdoc: Fix const background color
  • Make `private_in_public` compatibility lint deny-by-default
  • add `as_str` method to more `str`-iterators
  • Make transmuting from fn item types to pointer-sized types a hard error.
  • [WIP][RFC] initial support for PTX generation
  • privacy: Substitute type aliases in private-in-public checker
  • Implement PartialEq for std::io::Error
  • Implement Binary, Octal, LowerHex and UpperHex for Wrapping<T>
  • trans: generalize immediate temporaries to all MIR locals.
  • Add an abs_path member to FileMap, use it when writing debug info.
  • Move LLVM cleanup so modules are accessible during `after_llvm` phase
  • Release notes for 1.10.0
  • Issue #34076: Removing reference to removed path.prefix() function
  • rustdoc: Remove paths from primitive page <title> tags
  • [WIP] MIR Move up propagation
  • rustfmt librustc_resolve
  • remove unneeded allow flag
  • Revert "Remove the return_address intrinsic."
  • mk: Request -march=i686 on i686 Linux
  • Introducing TokenStreams and TokenSlices for procedural macros
  • Fix README.md command consistency
  • Fix ICE from #33364 by selectively skipping confirmation pass.
  • Simplify the macro hygiene algorithm
  • rustbuild: Implement testing for Android
  • Reject invalid urls in linkchecker
  • mk: Don't consider LLVM done until it's done
  • Don't crash in item_path when an item lacks a name
  • rustbuild: propagate bootstrap.py '--help' flag
  • add a wrapper around Mir with an exit node, dominators returns error when nodes are unreachable
  • Changed OS X to macOS as that is now the name
  • Improve runtest output
  • Added a pretty printer for &mut slices
  • Support `cfg_attr` on `path` attributes
  • Add rustc-stageN targets to rustbuild
  • feat: reinterpret `precision` field for strings
  • Improve code example for try!
  • Add a JSON header to metadata
  • Book: Small grammatical and stylistic edits to book
  • Add error codes in libsyntax
  • std: Stabilize APIs for the 1.11.0 release
  • Make vec::Drain and binary_heap::Drain covariant
  • std: Fix usage of SOCK_CLOEXEC
  • Put `Vec` in with the rest of the collections
  • Fix overflow checking in unsigned pow()
  • Fix typo (privledge->privilege)
  • Rollup of 7 pull requests
  • Add debug for hash_map::{Entry, VacantEntry, OccupiedEntry}
  • Add HashMap Entry enums examples
  • Add doc examples for `Vec::{as_slice,as_mut_slice}`.
  • Support nested `macro_rules!`
  • Added empty CloseDelim to tokens for future use.
  • Deny (by default) transmuting from fn item types to pointer-sized types.
  • [CSS] Fix unwanted top margin for toggle wrapper
  • Add doc for btree_map types
  • Fix wrong condition in base::internalize_symbols().
  • Comment on the casts in the `seek` implementations on files
  • Fix inference for projections with associated traits with multiple bounds; fixes #34792
  • Rewrite/expand doc examples for `Vec::set_len`.
  • rustc: Remove soft-float from MIPS targets
  • macros: Improve `tt` matchers
  • Centralize and clean type error reporting
  • Properly feature gate all unstable ABIs
  • More specific error when calling bottom
  • Remove rustdoc reference to `walk_dir`
  • Merge guidelines from RFC 1567 into UX Guidelines.
  • implement AddAssign for String
  • Make .enumerate() example self-explanatory
  • Refactored code to access TLS only in case of panic (II)
  • Avoid reseting the thread local interner at the beginning of `phase_1_parse_input`
  • Add examples for VecDeque
  • Updated error message E0388
  • Updated E0391 and E0404 to new error format
  • Ignore VS Code settings directory
  • Updates compiler error E0040 with new format
  • Update E0106 error message to new format.
  • Updates compiler error E0046 with new format
  • Made vec_deque::Drain, hash_map::Drain, and hash_set::Drain covariant
  • Updated E0081 to new format
  • updated E0050 in new format
  • Updated error format for E0069
  • Fix for issue #35336 - updating error message for for E0368 to includ…
  • [MIR] Add explicit SetDiscriminant StatementKind for deaggregating enums
  • Update compiler error 0093 to use new error format
  • WIP: Take commandline arguments into account for incr. comp.
  • Update compiler error E0055 to use new error format
  • Rollup of 30 pull requests
  • Update error format for E0130
  • Update error format for E0062
  • E0119 update error format
  • Fix precedence table in reference
  • Update error format for E0137
  • Update E0124 to the new error format
  • Ignore deprecation for items deprecated by the same attribute
  • Update E0185 and E0186 to new format
  • labelify the check_match errors
  • [Beta] Change `html_root_url` to point to the latest beta documentation
  • E0110 update error format
  • Update error message E0120
  • Set label for unreachable pattern
  • Update error message E0178
  • Fix documentation in cell mod
  • Implement RFC 1560 behind `#![feature(item_like_imports)]`
  • Rollup of 11 pull requests
  • run rustfmt on typecheck/coherence folder
  • Add reference to `Self` in traits chapter (book)
  • add a panic example to std::from_utf8_unchecked
  • Minor type in CONTRIBUTING.md
  • modify fds-are-cloexec test to open a file that exists
  • Use arc4rand(9) on FreeBSD
  • typeck: use NoExpectation to check return type of diverging fn
  • rustc: Fix outdated comment
  • add example for `Rc::would_unwrap`
  • add links to interesting items in `std::ptr` documentation
  • Fix "Furthermore" Typo in String Docs
  • replace `println!` statements with `assert!`ions in `std::ptr` examples
  • Fix ICE when arg types can't be found in impl/trait methods while comparing
  • more evocative examples for `Sub` and `SubAssign`
  • Fix the return type of AstBuilder.stmt_let_typed
  • cstring: avoid excessive growth just to 0-terminate
  • Add Duration::to_nanos
  • Various refactorings in the rustdoc module.
  • replace `Index` example with something more evocative of indexing
  • add evocative examples for `Shl` and `Shr`
  • Clarify/fix formatting docs concerning fmt::Result/fmt::Error
  • replace `Rem` example with something more evocative
  • replace `Mul` example with something more evocative of multiplication
  • E0435, E0437 & E0438 New Error Format
  • Introduce max_by/min_by on iterators
  • compute and cache HIR hashes at beginning
  • Implement RFC#1559: allow all literals in attributes
  • Avoid instaiblity errors in code generated by `syntax_ext::deriving::call_intrinsic()`
  • doc: we got coercion going on here, so no need to be this explicit
  • Add doc example for `std::time::Instant::elapsed`.
  • Removing the extraneous not_equal implementation for slices
  • Point macros 1.1 errors to the input item
  • Changed error message E0408 to new format
  • A way to remove otherwise unused locals from MIR
  • re-add accidentally removed line in wfcheck
  • Count and report time taken by MIR passes
  • rustdoc: don't collapse `docblock-short`
  • rustbuild: per target musl-root
  • resolve: Suggest `use self` when import resolves
  • Make `private_in_public` compatibility lint warn-by-default again
  • rustdoc: Filter more incorrect methods inherited through Deref
  • Zero first byte of CString on drop
  • Fix documentation with 'soft-float' codegen option
  • adding a check to bootstrap script
  • Insert examples with universal function call syntax.
  • std: add support for s390x
  • Represent Option<bool> and Option<char> as 8bit and 32bit values
  • Change E0309/E0310 to have text outside of code block.
  • Better underline for E0057,E0060,E0061
  • macros: stackless expansion
  • Add rustc version info (git hash + date) to dist tarball
  • Update E0088 to new format
  • Fix bad error message with `::<` in types
  • README.md: fix a "\" in table heading to be "/"
  • [WIP] Improve E0495
  • core: add likely and unlikely intrinsics
  • Issue deprecation warnings for safe accesses to extern statics
  • macros: clean up scopes of expanded `#[macro_use]` imports
  • Tweak read_{un,}signed_leb128.
  • 'src/librustc/session/filesearch.rs' refactoring and cleanup.
  • Changed 0 into '0'
  • Backporting PRs to beta
  • [beta] Temporary fix for metadata decoding for struct constructors
  • Add missing urls on String module
  • ICH: Enable some cases in trait definition hashing.
  • Added all x86 SIMD codes.
  • macros: expand `#[derive]`s after other attribute macros and improve intra-`#[derive]` ordering
  • Error monitor should emit error to stderr instead of stdout
  • Merge `Printer::token` and `Printer::size`.
  • Avoid allocations in `Decoder::read_str`.
  • Update E0303 to new error format
  • Remove TypeOrigin::RangeExpression
  • Remove long diagnostic for E0002
  • rustc: Remove all "consider using an explicit lifetime parameter" sug…
  • Add comparison operators to boolean const eval.
  • Add or and or_else for ordering.
  • Run rustfmt on librustc_mir/hair/cx
  • librustdoc refactoring and cleanup.
  • run rustfmt on librustc_lint folder
  • Add missing urls on Vec docs
  • Incr. comp. hash tests for consts and statics
  • Add a new non-heap allocated variant to io::Error's representation.
  • macros: persistent scopes
  • Support `Self` in struct expressions and patterns
  • Fix importing inaccessible `extern crate`s (with a warning)
  • Book: Be very explicit of lifetimes being descriptive
  • Always statically link llvm
  • Fix typo in libsyntax, it was bothering me
  • [6/n] rustc: transition HIR function bodies from Block to Expr.
  • Add --emit metadata
  • WIP: Support GDB with native rust support
  • [5/n] rustc: record the target type of every adjustment.
  • Improve "Doesn't live long enough" error
  • [4/n] rustc: harden against InferOk having obligations in more cases.
  • [3/n] rustc: unify and simplify managing associated items.
  • [2/n] rustc_metadata: move is_extern_item to trans.
  • [1/n] Move the MIR map into the type context.
  • Print out the error when HeapFree failures do occur
  • Fix typo
  • Make error E0221 more helpful
  • Add identifier to unused import warnings
  • Disable jemalloc on aarch64/powerpc
  • Broken links in Vec docs
  • rustc_typeck: Allow reification from fn item to unsafe ptr
  • [DON'T MERGE] Start of implementation of proposal for E0308
  • Support for aarch64 architecture on Fuchsia
  • Add example using Self to reference
  • Add support for kernel randomness for Fuchsia
  • Find the program using PATHEXT
  • Prohibit patterns in trait methods without bodies
  • Improve reference cast help message
  • Avoid more allocations when compiling html5ever
  • Include type of missing trait methods in error
  • Show multiline spans in full if short enough
  • Update testing.md to reflect changes to cargo new
  • Support `use *;` and `use ::*;`.
  • Fix backtraces on Windows/GNU
  • rustbuild: enable an initial local cargo
  • add --crate-type metadata
  • doc: fix typo
  • libstd: support creation of anonymous pipe on WinXP/2K3
  • [7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.
  • Translate closures through the collector
  • enable the MSP430 LLVM backend
  • Add missing urls for FusedIterator and TrustedLen traits
  • Add documentation to some of the unstable intrinsics
  • Separate impl items from the parent impl
  • introduce a `fudge_regions_if_ok` to address false region edges
  • Ref suggestion
  • Fix regression involving custom derives on items with `$crate`
  • Change HirVec<P<T>> to HirVec<T> in hir:: Expr.
  • trans: Make type names in LLVM IR independent of crate-nums and source locations.
  • Bump the bootstrap cargo to match the one paired with 1.13
  • Warn unused type aliases
  • Add support for ARMv5TE architecture
  • Add foreign formatting directive detection.
  • compiletest: detect nodejs binary, allow override
  • Fix grammar verification
  • parser: simplify directory ownership semantics
  • Add changelog for 1.13.0
  • Move all Linux/OSX CI infastructure to Travis
  • Add small-copy optimization for copy_from_slice
  • Improve "Doesn't live long enough" error
  • Remove mutability from LocalDecl
  • Replace syntax's SmallVector with AccumulateVec
  • E0526: Disallow 'start' feature on nested function
  • rustc: Implement #[link(cfg(..))] and crt-static
  • Warn when an import list is empty
  • Add -Zast and -Zast-noexpand to pretty-print AST (without the JSON conversion)
  • macros: support invocation paths (e.g. `foo::bar!()`) behind `#![feature(use_extern_macros)]`
  • Add new #[target_feature = "..."] attribute.
  • Add missing examples for IpAddr enum
  • rustbuild: Use src/rustc for assembled compilers
  • x86_64-musl: allow building dylibs with -crt-static
  • bootstrap/README: fix small typo
  • add preliminary support for incremental compilation to rustbuild.py
  • [WIP] Fix handling of empty types in patterns.
  • Add more examples to UpdSocket
  • Use more specific panic message for &str slicing errors
  • Show `Trait` instead of `<Struct as Trait>` in E0323
  • std: Fix partial writes in LineWriter
  • print option to dump target spec as JSON
  • evaluate obligations in LIFO order during closure projection
  • Display better error messages for E0282
  • Add String::split_off.
  • Remove unused functions from rustc_llvm
  • [9/n] rustc: move type information out of AdtDef and TraitDef.
  • Warn unused type aliases, reimplemented
  • rustbuild: Cross-compiled LLVM depens on host
  • Rename 'librustc_unicode' crate to 'libstd_unicode'.
  • [LLVM 4.0] Don't assume llvm::StringRef is null terminated
  • Make core::fmt::Void a non-empty type.
  • Shrink `token::Lit`'s hash count from usize to u16.
  • impl Sum/Product for more types, to avoid overflow/panic
  • Simplify calling find_implied_output_region.
  • Optimize signed integer saturating_mul
  • Fix verify.rs
  • Fix missing blank space issue
  • travis: Add i586 linux and i686 musl
  • crater check commit for issue #36082
  • Add doc examples & description in `std::os::unix::ffi`.
  • Fix covered-switch-default warnings in RustWrapper
  • Implement placement-in protocol for `BinaryHeap`
  • Improve unused `extern crate` and unused `#[macro_use]` warnings
  • If submodule init fails, try from scratch
  • rustbuild: Skip the build_helper crate in tests
  • travis: Pass --release-channel=nightly on deploy
  • impl ToSocketAddrs for String
  • Add try_wait to Redox process
  • Add a link to the second edition
  • travis: Expand dist builder coverage
  • Use multiline Diagnostic for "relevant impl" list
  • debuginfo: Ignore optimized enum tests for GDB versions that can't handle them.
  • Minor improvements to docs in std::env structures/functions.
  • rustbuild: Actually don't build stage0 target rustc
  • Remove allocation in impl Display for path::Display #38879
  • incr.comp.: Add some caching to Predecessors construction.
  • only consider value items when searching for methods, not types
  • Add warning for () to ! switch
  • libstd/net/udp: Add docs and tests for join_multicast_{v4,v6}
  • Add Debug implementations for libcollection structs
  • process trait/impl items directly from the visitor callback
  • Add `&mut expr` to syntax index
  • Add peek APIs to std::net
  • Add PartialOrd, Ord derivations to TypeId
  • Deprecate `#[unsafe_destructor_blind_to_params]`
  • DoubleEndedIterator and ExactSizeIterator for To*case.
  • Make [u8]::reverse() 5x faster
  • Move unicode Python script into libstd_unicode crate.
  • Rollup of 4 pull requests
  • Add regression test for issue #24106
  • Remove duplicated errors for closure type mismatch
  • rustc: Stabilize `-C target-feature=+crt-static`
  • kill some unused fields in TyCtxt
  • Simplify types in `std::option` doc comment example.
  • Support #![deny(missing_docs)] together with #[proc_macro_derive]
  • Remove use of `Self: Sized` from libsyntax
  • Remove need for &format!(...) or &&"" dances in `span_label` calls
  • join method returns a thread::Result
  • optimize for common case
  • Implement named threads on Windows
  • Refactor variance and remove last `[pub]` map
  • Delete features which are easily removed, in libsyntax
  • More Queries for Crate Metadata
  • Suggest `!` for bitwise negation when encountering a `~`
  • enforce WF conditions after generalizing
  • incr.comp.: Hash more pieces of crate metadata to detect changes there.
  • Remove crate_type and crate_name attributes from compiler crates
  • Set --extend-css stable
  • Windows io::Error: also format NTSTATUS error codes
  • Add option to display warnings in rustdoc
  • Increase macro recursion limit to 1024
  • Add an in-place rotate method for slices to libcore
  • Fix issue #41652
  • impl Clone for .split_whitespace()
  • Unify tools building
  • Added generic example of std::ops::Add in doc comments
  • New error codes
  • rustbuild: Fix copying duplicate crates into the sysroot
  • Don't ICE with nested enums in missing docs lint.
  • Docs: impls of PartialEq/PartialOrd/Ord must agree
  • Clarify the docs for align_of and its variants
  • extend `struct_tail` to operate over tuples
  • Allow variadic functions with cdecl calling convention.
  • add playbot jokes to run-pass test
  • Updated locked version of libgit2
  • Convert Intos to Froms.
  • Support VS 2017
  • add `allow_fail` test attribute
  • use shared scripts for init and sccache in cross image
  • regression test for #39974
  • rust-src: include everything needed to compile libstd with jemalloc
  • Remove all instances of fragment_infos and fragment sets
  • Use the selected CC/CXX in crates that build with gcc-rs.
  • [WIP] Explain why a closure is `FnOnce` in closure errors.
  • incr.comp.: Remove DepGraph::write() and its callers
  • querify layout and move param env out of the infcx
  • Update rustdoc man page
  • incr.comp.: Track expanded spans instead of FileMaps.
  • Override size_hint and propagate ExactSizeIterator for iter::StepBy
  • Stabilize non capturing closure to fn coercion
  • Use simple io::Error for &[u8] Read and Write impl
  • core: allow messages in unimplemented!() macro
  • More Rust/RLS integration
  • Update to Rc and Arc documentation to favor the Rc::clone(&ptr) syntax.
  • Turn sufficiently old compatibility lints into hard errors
  • Add conversions from File and Child* handles to Stdio
  • Tweak wording for borrows within macro invocations
  • Correctly format `extern crate` conflict resolution help
  • Make region inference use a dirty list
  • Detect possibly non-Rust closure syntax during parse
  • Call non-git beta builds simply x.y.z-beta
  • Test themes
  • implement Send for process::Command on unix
  • Update book
  • [WIP] Implement `?` macro repetition
  • Make 3 run-pass tests works on android (aarch64 and x86)
  • Rollup of 19 pull requests
  • Fix regression: account for impl methods in arg count mismatch error
  • Fix never-type rvalue ICE
  • rustc: SIMD types use pointers in Rust's ABI
  • remove intercrate ambiguity hints
  • Run rustfmt and add doc comments to libsyntax/ext/tt/macro_parser.rs
  • Fix how paths are printed by error messages during bootstrap
  • rustc: Split Emscripten to a separate codegen backend
  • Add powerpc to run-pass/conditional-compile-arch.rs
  • Make run-pass/env-home-dir.rs test more robust
  • Update compiler-builtins submodule
  • First round of LLVM 6.0.0 compatibility
  • Fix ICE when use trees have multiple empty nested groups
  • Add a regression test for #44415
  • Fixes for intra-doc-links
  • Make use of the implemented red/green algorithm for variance
  • For E0277 on `for` loops, point at the "head" expression
  • Fix borrow checker unsoundness with unions
  • Let LLVM 5 add DW_OP_deref to indirect args itself
  • RFC 2070 part 1: PanicInfo and Location API changes
  • Add Iterator::flatten + redefine .flat_map(f) = .map(f).flatten()
  • [WIP] Upgrade the Travis CI macOS images for testing from Xcode 8.3 to 9.2.
  • Rollup of 16 pull requests
  • Stabilize Box::leak
  • fix typo: substract -> subtract
  • [wip] rustdoc: move manual "extern crate" statements outside automatic "fn main"s in doctests
  • Implement excluding a build-step via --exclude
  • Update books for next release
  • Add fetch_nand to atomics
  • ci: Actually bootstrap on i686 dist
  • Automatically enable the `clippy` feature of `rls` if clippy builds
  • add unit tests for rustdoc's processing of doctests
  • rustc_mir: insert a dummy access to places being matched on, when building MIR.
  • Add Range[Inclusive]::is_empty
  • Fix visitation order of calls so that it matches execution order. Fixes #48048
  • Update the dlmalloc submodule
  • Error on nested impl Trait and path projections from impl Trait
  • Improve tuple struct field access hygiene
  • macros: improve struct constructor field hygiene, fix span bug
  • Hide theme button under menu in mobile mode and fix top margin issue …
  • Disallow function pointers to #[rustc_args_required_const]
  • pass correct pie args to gcc linker
  • Fix nested impl trait lifetimes
  • Apply optimization from #44355 to retain
  • intra-doc-links: bail early for linky things
  • More clone shim cleanups
  • do not run MIR type checker twice
  • rustbuild: Pass `ccache` to build scripts
  • Update binaryen to fix -Werror with GCC 8
  • Comprehensively support trailing commas in std/core macros
  • Rollup of 15 pull requests
  • Fixes docs for ASCII functions to no longer claim U+0021 is '@'.
  • Implementation of `#[repr(packed(n))]` RFC 1399.
  • in which parentheses are suggested for should-have-been-tuple-patterns
  • [needs test] check stability of macro invocations
  • The Great Generics Generalisation: Ty Edition
  • Fix find_width_of_character_at_span bounds check
  • [rustbuild] Implement testing and refactor configuration
  • Added error-format flag to x.py.
  • Stabilize slice patterns without `..`
  • std: Add `arch` and `simd` modules
  • Add resource-suffix option for rustdoc
  • Slight modification to the as_ref example of std::option::Option
  • Add new warning for CStr::from_ptr
  • Do not accept interpolated types as traits in trait impls
  • Support parentheses in patterns under feature gate
  • Restrict the Termination impls to simplify stabilization
  • Workaround abort(2) on compilation error on FreeBSD.
  • test: Fix s390x-unknown-linux-gnu atomic-lock-free test not run for systemz
  • bootstrap: Add openssl configuration for x86_64-unknown-linux-gnux32
  • Handle gdb command failure gracefully in compiletest
  • Add support for powerpc-unknown-linux-gnuspe
  • WIP: NLL should identify and respect the lifetime annotations that the user wrote
  • Clarify interfaction between File::set_len and file cursor
  • Start moving to the rustc guide!
  • Use `dyn trait` everywhere
  • New Cell docs
  • Fix auto trait impl rustdoc ice
  • Disable NEON on musl ARMv7
  • Expand items before their derives
  • Fix the span information created by TokenStream's FromStr impl
  • Rollup of 8 pull requests
  • Doc comments present after a particular syntax error cause an unhelpful error message to be output.
  • Add Iterator::exhaust.
  • Support extra-verbose builds
  • [WIP] Implementation of RFC 2151, Raw Identifiers
  • Querify WF-checking so it can be cached
  • Make CrateMetadata and CStore thread-safe
  • Fix hygene issue when deriving Debug
  • Document when types have OS-dependent sizes
  • [beta] rustbuild: pass datadir to rust-installer
  • in which some labels and notes are upgraded to structured suggestions
  • stabilize `#[must_use]` for functions and must-use comparison operators (RFC 1940)
  • Implement import renaming with `_` (RFC 2166)
  • syntax: Make imports in AST closer to the source and cleanup their parsing
  • Modify compile-fail/E0389 error message WIP
  • Add tests to rustbuild
  • Improve lint for type alias bounds
  • Make CodeMap and FileMap thread-safe
  • refactor the `BorrowckErrors` trait to take `fn(self)`
  • Remove auto trait implementation section when empty
  • rustc: Embed LLVM bitcode by default on iOS
  • rustc: Tweak Literal APIs of `proc_macro`
  • rustbuild: Remove ThinLTO-related configuration
  • Update stdsimd module
  • Allow "infinity" and ignore case when parsing floats.
  • rustc: Add a `#[wasm_custom_section]` attribute
  • tidy: Add a check for stray `.stderr` and `.stdout` files in UI test directories
  • Add missing urls
  • MIPS testsuite fixes
rust questions on Stackoverflow (View All Questions)
  • rust extern crate and cargo dependencies
  • Is it possible to make plugin extension hooks like WordPress actions in Rust?
  • How to write a Rust function that takes an iterator?
  • What's the best way to organise Rust unit tests?
  • How to match a String in Rust?
  • Does Rust have an idiomatic equivalent to F# typedefs?
  • Can't pass a string into my Rust function from Ruby
  • Is it possible to declare the type of the variable in Rust for loops?
  • Expose symbols to dynamic linker when linking with native library in Rust
  • Access violation when calling Rust function through FFI
  • Can I set an LLDB breakpoint when multiple Rust source files share the same name?
  • How to clear terminal screen in Rust after new line is printing?
  • What are the steps necessary to pass R objects to a Rust program?
  • Why is the Rust random number generator slower with multiple instances running?
  • How does the Rust compiler know `Cell` has internal mutability?
  • Can Python's isinstance be emulated or used in Rust?
  • Applications and libraries written in Rust
  • can't find crate for `std` while cross-compiling Rust project for ARM
  • Can't figure out return type of this Rust function that returns Iter?
  • How does the Rust compiler know whether a value has been moved or not?
  • Example of how to use Conditional Compilation Macros in Rust?
  • Translate performance critical loop from C to Rust
  • In Rust, how do I use implemented trait FromStr on BigInt?
  • Use existing types in an enum in Rust
  • Implement graph-like datastructure in Rust
  • How to free the memory of a string returned from Rust in C#?
  • What is the proper way to traverse an "ADT" in Rust?
  • What language was used to write Rust compiler?
  • Detect UB like Rust
  • Sublime Text 3 support for Rust
rust list of languages used
Other projects in Rust