DocFetcher

最新版本 Rust 1.52.1

Rust 1.52.1

Rust 1.52.1
DocFetcher 是一個開源桌面搜索應用程序:它允許您搜索您的計算機上的文件的內容。你可以把它看作是 Google 的本地文件。該應用程序在 Windows,Linux 和 OS X 上運行,並在 Eclipse 公共許可證下提供。

DocFetcher 功能:
便攜版本:有一個便攜版本的 DocFetcher,可在 Windows,Linux 和 OS X 上運行。在這個頁面下面會有更詳細的描述。 64 位支持:支持 32 位和 64 位操作系統。 Unicode 支持:DocFetcher 為所有主要格式(包括 Microsoft Office,OpenOffice.org,PDF,HTML,RTF 和純文本文件)提供堅如磐石的 Unicode 支持。存檔支持:DocFetcher 支持以下存檔格式:zip,7z,rar 和整個 tar. * 系列。可以自定義 zip 壓縮文件的文件擴展名,允許您根據需要添加更多基於 zip 的壓縮文件格式。另外,DocFetcher 可以處理無限的檔案嵌套(例如,包含含有 rar 檔案的 7z 檔案的 zip 檔案等等)。在源代碼文件中搜索:DocFetcher 識別純文本文件的文件擴展名可以自定義,因此您可以使用 DocFetcher 來搜索任何類型的源代碼和其他基於文本的文件格式。 (這種方式與定制的 zip 擴展相結合,例如用於在 Jar 文件中搜索 Java 源代碼。)Outlook PST 文件:DocFetcher 允許搜索 Outlook 電子郵件,Microsoft Outlook 通常存儲在 PST 文件中。檢測 HTML 對:默認情況下,DocFetcher 檢測 HTML 文件對(例如名為“foo.html”的文件和名為“foo_files”的文件夾),並將該對視為單個文檔。這個功能起初看起來似乎毫無用處,但事實證明,當處理 HTML 文件時,這會顯著提高搜索結果的質量,因為 HTML 文件夾內的所有“混亂”都會從結果中消失。基於正則表達式排除索引中的文件:您可以使用正則表達式從索引中排除某些文件。例如,要排除 Microsoft Excel 文件,可以使用如下正則表達式:。*。xls Mime 類型檢測:可以使用正則表達式為某些文件啟用“mime-type detection”,這意味著 DocFetcher 將嘗試來檢測他們的實際文件類型不僅僅是通過查看文件名,而是通過偷看到文件內容。這適用於文件擴展名錯誤的文件。強大的查詢語法:除了 OR 之外,AND 和 NOT 等基本結構還支持:通配符,短語搜索,模糊搜索(“查找類似於... 的單詞”),鄰近搜索(“這兩個單詞最多不得超過 10 個單詞“),提高(”增加包含... 的文檔的得分“)



ScreenShot

軟體資訊
檔案版本 Rust 1.52.1

檔案名稱 rustup-init.exe
檔案大小
系統 Windows XP / Vista / Windows 7 / Windows 8 / Windows 10
軟體類型 免費軟體
作者 DocFetcher Team
官網 http://docfetcher.sourceforge.net/en/index.html
更新日期 2021-05-11
更新日誌

What's new in this version:

Rust 1.52.1
- Change log not available for this version


Rust 1.52.0
Language:
- Added the unsafe_op_in_unsafe_fn lint, which checks whether the unsafe code in an unsafe fn is wrapped in a unsafe block. This lint is allowed by default, and may become a warning or hard error in a future edition.
- You can now cast mutable references to arrays to a pointer of the same type as the element

Compiler:
- Upgraded the default LLVM to LLVM 12

Added tier 3* support for the following targets:
- s390x-unknown-linux-musl
- riscv32gc-unknown-linux-musl & riscv64gc-unknown-linux-musl
- powerpc-unknown-openbsd
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- OsString now implements Extend and FromIterator
- cmp::Reverse now has #[repr(transparent)] representation
- Arc now implements error::Error
- All integer division and remainder operations are now const

Stabilised APIs:
- Arguments::as_str
- char::MAX
- char::REPLACEMENT_CHARACTER
- char::UNICODE_VERSION
- char::decode_utf16
- char::from_digit
- char::from_u32_unchecked
- char::from_u32
- slice::partition_point
- str::rsplit_once
- str::split_once
- The following previously stable APIs are now const.:
- char::len_utf8
- char::len_utf16
- char::to_ascii_uppercase
- char::to_ascii_lowercase
- char::eq_ignore_ascii_case
- u8::to_ascii_uppercase
- u8::to_ascii_lowercase
- u8::eq_ignore_ascii_case

Rustdoc:
- Rustdoc lints are now treated as a tool lint, meaning that lints are now prefixed with rustdoc:: (e.g. #[warn(rustdoc::non_autolinks)]). Using the old style is still allowed, and will become a warning in a future release.
- Rustdoc now supports argument files
- Rustdoc now generates smart punctuation for documentation
- You can now use "task lists" in Rustdoc Markdown

Misc:
- You can now pass multiple filters to tests. E.g. cargo test -- foo bar will run all tests that match foo and bar
- Rustup now distributes PDB symbols for the std library on Windows, allowing you to see std symbols when debugging

Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools
- Check the result cache before the DepGraph when ensuring queries
- Try fast_reject::simplify_type in coherence before doing full check
- Only store a LocalDefId in some HIR nodes
- Store HIR attributes in a side table

Compatibility Notes:
- Cargo build scripts are now forbidden from setting RUSTC_BOOTSTRAP
- Removed support for the x86_64-rumprun-netbsd target
- Deprecated the x86_64-sun-solaris target in favor of x86_64-pc-solaris
- Rustdoc now only accepts ,, , and t as delimiters for specifying languages in code blocks
- Rustc now catches more cases of pub_use_of_private_extern_crate
- Changes in how proc macros handle whitespace may lead to panics when used with older proc-macro-hack versions. A cargo update should be sufficient to fix this in all cases.


Rust 1.51.0
Language:
- You can now parameterize items such as functions, traits, and structs by constant values in addition to by types and lifetimes. Also known as "const generics" E.g. you can now write the following. Note: Only values of primitive integers, bool, or char types are currently permitted.

Compiler:
- Added the -Csplit-debuginfo codegen option for macOS platforms. This option controls whether debug information is split across multiple files or packed into a single file. Note This option is unstable on other platforms.
- Added tier 3* support for aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32, and aarch64_be-unknown-linux-gnu_ilp32 targets
- Added tier 3 support for i386-unknown-linux-gnu and i486-unknown-linux-gnu targets
- The target-cpu=native option will now detect individual features of CPUs
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- Box::downcast is now also implemented for any dyn Any + Send + Sync object
- str now implements AsMut
- u64 and u128 now implement From
- Error is now implemented for &T where T implements Error
- Poll::{map_ok, map_err} are now implemented for Poll
- unsigned_abs is now implemented for all signed integer types
- io::Empty now implements io::Seek
- rc::Weak and sync::Weak's methods such as as_ptr are now implemented for T: ?Sized types
- Stabilized APIs:
- Arc::decrement_strong_count
- Arc::increment_strong_count
- Once::call_once_force
- Peekable::next_if_eq
- Peekable::next_if
- Seek::stream_position
- array::IntoIter
- panic::panic_any
- ptr::addr_of!
- ptr::addr_of_mut!
- slice::fill_with
- slice::split_inclusive_mut
- slice::split_inclusive
- slice::strip_prefix
- slice::strip_suffix
- str::split_inclusive
- sync::OnceState
- task::Wake

Cargo:
- Added the split-debuginfo profile option to control the -Csplit-debuginfo codegen option
- Added the resolver field to Cargo.toml to enable the new feature resolver and CLI option behavior. Version 2 of the feature resolver will try to avoid unifying features of dependencies where that unification could be unwanted. Such as using the same dependency with a std feature in a build scripts and proc-macros, while using the no-std feature in the final binary. See the Cargo book documentation for more information on the feature.

Rustdoc:
- Rustdoc will now include documentation for methods available from nested Deref traits
- You can now provide a --default-theme flag which sets the default theme to use for documentation

Various improvements to intra-doc links:
- You can link to non-path primitives such as slice
- You can link to associated items
- You can now include generic parameters when linking to items, like Vec

Misc:
- You can now pass --include-ignored to tests (e.g. with cargo test -- --include-ignored) to include testing tests marked #[ignore]

Compatibility Notes:
- WASI platforms no longer use the wasm-bindgen ABI, and instead use the wasm32 ABI
- rustc no longer promotes division, modulo and indexing operations to const that could fail
- The minimum version of glibc for the following platforms has been bumped to version 2.31 for the distributed artifacts
- armv5te-unknown-linux-gnueabi
- sparc64-unknown-linux-gnu
- thumbv7neon-unknown-linux-gnueabihf
- armv7-unknown-linux-gnueabi
- x86_64-unknown-linux-gnux32

Internal Only:
- Consistently avoid constructing optimized MIR when not doing codegen


Rust 1.50.0
Language:
- You can now use const values for x in [x; N] array expressions. This has been technically possible since 1.38.0, as it was unintentionally stabilized
- Assignments to ManuallyDrop union fields are now considered safe

Compiler:
- Added tier 3* support for the armv5te-unknown-linux-uclibceabi target
- Added tier 3 support for the aarch64-apple-ios-macabi target
- The x86_64-unknown-freebsd is now built with the full toolset
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- proc_macro::Punct now implements PartialEq
- ops::{Index, IndexMut} are now implemented for fixed sized arrays of any length
- On Unix platforms, the std::fs::File type now has a "niche" of -1. This value cannot be a valid file descriptor, and now means Option takes up the same amount of space as File

Stabilized APIs:
- bool::then
- btree_map::Entry::or_insert_with_key
- f32::clamp
- f64::clamp
- hash_map::Entry::or_insert_with_key
- Ord::clamp
- RefCell::take
- slice::fill
- UnsafeCell::get_mut

The following previously stable methods are now const:
- IpAddr::is_ipv4
- IpAddr::is_ipv6
- Layout::size
- Layout::align
- Layout::from_size_align
- pow for all integer types
- checked_pow for all integer types
- saturating_pow for all integer types
- wrapping_pow for all integer types
- next_power_of_two for all unsigned integer types
- checked_power_of_two for all unsigned integer types

Cargo:
- Added the [build.rustc-workspace-wrapper] option. This option sets a wrapper to execute instead of rustc, for workspace members only
- cargo:rerun-if-changed will now, if provided a directory, scan the entire contents of that directory for changes
- Added the --workspace flag to the cargo update command

Misc:
- The search results tab and the help button are focusable with keyboard in rustdoc
- Running tests will now print the total time taken to execute

Compatibility Notes:
- The compare_and_swap method on atomics has been deprecated. It's recommended to use the compare_exchange and compare_exchange_weak methods instead
- Changes in how TokenStreams are checked have fixed some cases where you could write unhygenic macro_rules! macros
- #![test] as an inner attribute is now considered unstable like other inner macro attributes, and reports an error by default through the soft_unstable lint
- Overriding a forbid lint at the same level that it was set is now a hard error
- Dropped support for all cloudabi targets
- You can no longer intercept panic! calls by supplying your own macro. It's recommended to use the #[panic_handler] attribute to provide your own implementation
- Semi-colons after item statements (e.g. struct Foo {};) now produce a warning


Rust 1.49.0
Language:
- Unions can now implement Drop, and you can now have a field in a union with ManuallyDrop
- You can now cast uninhabited enums to integers
- You can now bind by reference and by move in patterns. This allows you to selectively borrow individual components of a type. E.g
- #[derive(Debug)]
- struct Person {
- name: String,
- age: u8,
- let person = Person {
- name: String::from("Alice"),
- age: 20,
- // `name` is moved out of person, but `age` is referenced
- let Person { name, ref age } = person;
- println!("{} {}", name, age);

Compiler:
- Added tier 1* support for aarch64-unknown-linux-gnu
- Added tier 2 support for aarch64-apple-darwin
- Added tier 2 support for aarch64-pc-windows-msvc
- Added tier 3 support for mipsel-unknown-none
- Raised the minimum supported LLVM version to LLVM 9
- Output from threads spawned in tests is now captured
- Change os and vendor values to "none" and "unknown" for some targets
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- RangeInclusive now checks for exhaustion when calling contains and indexing
- ToString::to_string now no longer shrinks the internal buffer in the default implementation
ops::{Index, IndexMut} are now implemented for fixed sized arrays of any length

Stabilized APIs:
- slice::select_nth_unstable
- slice::select_nth_unstable_by
- slice::select_nth_unstable_by_key
- The following previously stable methods are now const
- Poll::is_ready
- Poll::is_pending

Cargo:
- Building a crate with cargo-package should now be independently reproducible
- cargo-tree now marks proc-macro crates
- Added CARGO_PRIMARY_PACKAGE build-time environment variable. This variable will be set if the crate being built is one the user selected to build, either with -p or through defaults
- You can now use glob patterns when specifying packages & targets

Compatibility Notes:
- Demoted i686-unknown-freebsd from host tier 2 to target tier 2 support
- Macros that end with a semi-colon are now treated as statements even if they expand to nothing
- Rustc will now check for the validity of some built-in attributes on enum variants. Previously such invalid or unused attributes could be ignored
- Leading whitespace is stripped more uniformly in documentation comments, which may change behavior. You read this post about the changes for more details
- Trait bounds are no longer inferred for associated types

Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools
- rustc's internal crates are now compiled using the initial-exec Thread Local Storage model
- Calculate visibilities once in resolve
- Added system to the llvm-libunwind bootstrap config option
- Added --color for configuring terminal color support to bootstrap


Rust 1.48.0
Language:
- The unsafe keyword is now syntactically permitted on modules. This is still rejected semantically, but can now be parsed by procedural macros

Compiler:
- Stabilised the -C link-self-contained=<yes|no> compiler flag. This tells rustc whether to link its own C runtime and libraries or to rely on a external linker to find them. (Supported only on windows-gnu, linux-musl, and wasi platforms.)
- You can now use -C target-feature=+crt-static on linux-gnu targets. Note: If you're using cargo you must explicitly pass the --target flag
- Added tier 2* support for aarch64-unknown-linux-musl
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- io::Write is now implemented for &ChildStdin &Sink, &Stdout, and &Stderr.
- All arrays of any length now implement TryFrom.
- The matches! macro now supports having a trailing comma.
- Vec now implements PartialEq<[B]> where A: PartialEq.
- The RefCell::{replace, replace_with, clone} methods now all use #[track_caller].
- Stabilized APIs:
- slice::as_ptr_range
- slice::as_mut_ptr_range
- VecDeque::make_contiguous
- future::pending
- future::ready
- The following previously stable methods are now const fn's:
- Option::is_some
- Option::is_none
- Option::as_ref
- Result::is_ok
- Result::is_err
- Result::as_ref
- Ordering::reverse
- Ordering::then

Rustdoc:
- You can now link to items in rustdoc using the intra-doc link syntax. E.g. /// Uses [`std::future`] will automatically generate a link to std::future's documentation. See "Linking to items by name" for more information
- You can now specify #[doc(alias = "")] on items to add search aliases when searching through rustdoc's UI

Compatibility Notes:
- Promotion of references to 'static lifetime inside const fn now follows the same rules as inside a fn body. In particular, &foo() will not be promoted to 'static lifetime any more inside const fns
- Associated type bindings on trait objects are now verified to meet the bounds declared on the trait when checking that they implement the trait
- When trait bounds on associated types or opaque types are ambiguous, the compiler no longer makes an arbitrary choice on which bound to use
- Fixed recursive nonterminals not being expanded in macros during pretty-print/reparse check. This may cause errors if your macro wasn't correctly handling recursive nonterminal tokens
- &mut references to non zero-sized types are no longer promoted
- rustc will now warn if you use attributes like #[link_name] or #[cold] in places where they have no effect
- Updated _mm256_extract_epi8 and _mm256_extract_epi16 signatures in arch::{x86, x86_64} to return i32 to match the vendor signatures
- mem::uninitialized will now panic if any inner types inside a struct or enum disallow zero-initialization
- #[target_feature] will now error if used in a place where it has no effect
- Foreign exceptions are now caught by catch_unwind and will cause an abort. Note: This behaviour is not guaranteed and is still considered undefined behaviour, see the catch_unwind documentation for further information

Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools
- Building rustc from source now uses ninja by default over make. You can continue building with make by setting ninja=false in your config.toml
- cg_llvm: fewer_names in uncached_llvm_type
- Made ensure_sufficient_stack() non-generic


Rust 1.47.0
Language:
- Closures will now warn when not used

Compiler:
- Stabilized the -C control-flow-guard codegen option, which enables Control Flow Guard for Windows platforms, and is ignored on other platforms
- Upgraded to LLVM 11
- Added tier 3* support for the thumbv4t-none-eabi target
- Upgrade the FreeBSD toolchain to version 11.4
- RUST_BACKTRACE's output is now more compact
- * Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- CStr now implements Index
- Traits in std/core are now implemented for arrays of any length, not just those of length less than 33
- ops::RangeFull and ops::Range now implement Default
- panic::Location now implements Copy, Clone, Eq, Hash, Ord, PartialEq, and PartialOrd

Stabilized APIs:
- Ident::new_raw
- Range::is_empty
- RangeInclusive::is_empty
- Result::as_deref
- Result::as_deref_mut
- Vec::leak
- pointer::offset_from
- f32::TAU
- f64::TAU
- The following previously stable APIs have now been made const
- The new method for all NonZero integers
- The checked_add,checked_sub,checked_mul,checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub, and saturating_mul methods for all integers
- The checked_abs, saturating_abs, saturating_neg, and signum for all signed integers
- The is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace, and is_ascii_control methods for char and u8

Cargo:
- build-dependencies are now built with opt-level 0 by default. You can override this by setting the following in your Cargo.toml
- [profile.release.build-override]
- opt-level = 3
- cargo-help will now display man pages for commands rather just the --help text
- cargo-metadata now emits a test field indicating if a target has tests enabled
- workspace.default-members now respects workspace.exclude
- cargo-publish will now use an alternative registry by default if it's the only registry specified in package.publish

Misc:
- Added a help button beside Rustdoc's searchbar that explains rustdoc's type based search
- Added the Ayu theme to rustdoc

Compatibility Notes:
- Bumped the minimum supported Emscripten version to 1.39.20
- Fixed a regression parsing {} && false in tail expressions
- Added changes to how proc-macros are expanded in macro_rules! that should help to preserve more span information. These changes may cause compiliation errors if your macro was unhygenic or didn't correctly handle Delimiter::None
- Moved support for the CloudABI target to tier 3
- linux-gnu targets now require minimum kernel 2.6.32 and glibc 2.11
- Added the rustc-docs component. This allows you to install and read the documentation for the compiler internal APIs. (Currently only available for x86_64-unknown-linux-gnu.)

Internal Only:
- Improved default settings for bootstrapping in x.py. You can read details about this change in the "Changes to x.py defaults" post on the Inside Rust blog


Rust 1.46.0
Language:
- if, match, and loop expressions can now be used in const functions
- Additionally you are now also able to coerce and cast to slices (&[T]) in const functions
- The #[track_caller] attribute can now be added to functions to use the function's caller's location information for panic messages
- Recursively indexing into tuples no longer needs parentheses. E.g. x.0.0 over (x.0).0
- mem::transmute can now be used in static and constants. Note You currently can't use mem::transmute in constant functions

Compiler:
- You can now use the cdylib target on Apple iOS and tvOS platforms
- Enabled static "Position Independent Executables" by default for x86_64-unknown-linux-musl

Libraries:
- mem::forget is now a const fn
- String now implements From
- The leading_ones, and trailing_ones methods have been stabilised for all integer types
- vec::IntoIter now implements AsRef<[T]>
- All non-zero integer types (NonZeroU8) now implement TryFrom for their zero-able equivalent (e.g. TryFrom)
- &[T] and &mut [T] now implement PartialEq
- (String, u16) now implements ToSocketAddrs
- vec::Drain<'_, T> now implements AsRef<[T]>

Stabilized APIs:
- Option::zip
- vec::Drain::as_slice

Cargo
- Added a number of new environment variables that are now available when compiling your crate
- CARGO_BIN_NAME and CARGO_CRATE_NAME Providing the name of the specific binary being compiled and the name of the crate
- CARGO_PKG_LICENSE The license from the manifest of the package
- CARGO_PKG_LICENSE_FILE The path to the license file

Compatibility Notes:
- The target configuration option abi_blacklist has been renamed to unsupported_abis. The old name will still continue to work
- Rustc will now warn if you have a C-like enum that implements Drop. This was previously accepted but will become a hard error in a future release
- Rustc will fail to compile if you have a struct with #[repr(i128)] or #[repr(u128)]. This representation is currently only allowed on enums
- Tokens passed to macro_rules! are now always captured. This helps ensure that spans have the correct information, and may cause breakage if you were relying on receiving spans with dummy information
- The InnoSetup installer for Windows is no longer available. This was a legacy installer that was replaced by a MSI installer a few years ago but was still being built
- {f32, f64}::asinh now returns the correct values for negative numbers
- Rustc will no longer accept overlapping trait implementations that only differ in how the lifetime was bound
- Rustc now correctly relates the lifetime of an existential associated type. This fixes some edge cases where rustc would erroneously allow you to pass a shorter lifetime than expected
- Rustc now dynamically links to libz (also called zlib) on Linux. The library will need to be installed for rustc to work, even though we expect it to be already available on most systems
- Tests annotated with #[should_panic] are broken on ARMv7 while running under QEMU
- Pretty printing of some tokens in procedural macros changed. The exact output returned by rustc's pretty printing is an unstable implementation detail: we recommend any macro relying on it to switch to a more robust parsing system


Rust 1.45.2
- Fix bindings in tuple struct patterns
- Fix track_caller integration with trait objects


Rust 1.45.1
- Change log not available for this version


Rust 1.45.0
Language:
- Out of range float to int conversions using as has been defined as a saturating conversion. This was previously undefined behaviour, but you can use the {f64, f32}::to_int_unchecked methods to continue using the current behaviour, which may be desirable in rare performance sensitive situations.
- mem::Discriminant now uses T's discriminant type instead of always using u64
- Function like procedural macros can now be used in expression, pattern, and statement positions. This means you can now use a function-like procedural macro anywhere you can use a declarative (macro_rules!) macro.

Compiler:
- You can now override individual target features through the target-feature flag. E.g. -C target-feature=+avx2 -C target-feature=+fma is now equivalent to -C target-feature=+avx2,+fma
- Added the force-unwind-tables flag. This option allows rustc to always generate unwind tables regardless of panic strategy
- Added the embed-bitcode flag. This codegen flag allows rustc to include LLVM bitcode into generated rlibs (this is on by default)
- Added the tiny value to the code-model codegen flag
- Added tier 3 support* for the mipsel-sony-psp target
- Added tier 3 support for the thumbv7a-uwp-windows-msvc target
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- net::{SocketAddr, SocketAddrV4, SocketAddrV6} now implements PartialOrd and Ord
- proc_macro::TokenStream now implements Default
- You can now use char with ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo} to iterate over a range of codepoints. E.g. you can now write the following
- OsString now implements FromStr
- The saturating_neg method as been added to all signed integer primitive types, and the saturating_abs method has been added for all integer primitive types
- Arc, Rc now implement From<Cow<'_, T>>, and Box now implements From when T is [T: Copy], str, CStr, OsStr, or Path
- Box<[T]> now implements From<[T; N]>
- BitOr and BitOrAssign are implemented for all NonZero integer types
- The fetch_min, and fetch_max methods have been added to all atomic integer types
- The fetch_update method has been added to all atomic integer types


Rust 1.44.1
- rustfmt accepts rustfmt_skip in cfg_attr again
- Don't hash executable filenames on apple platforms, fixing backtraces
- Fix crashes when finding backtrace on macOS
- Clippy applies lint levels into different files


Rust 1.44.0
Language:
- You can now use async/.await with #[no_std] enabled
- Added the unused_braces lint

Syntax-only changes:
- Expansion-driven outline module parsing
- These are still rejected semantically, so you will likely receive an error but these changes can be seen and parsed by macros and conditional compilation

Compiler:
- Rustc now respects the -C codegen-units flag in incremental mode. Additionally when in incremental mode rustc defaults to 256 codegen units
- Refactored catch_unwind, to have zero-cost unless unwinding is enabled and a panic is thrown
- Added tier 3* support for the aarch64-unknown-none and aarch64-unknown-none-softfloat targets
- Added tier 3 support for arm64-apple-tvos and x86_64-apple-tvos targets

Libraries:
- Special cased vec![] to map directly to Vec::new(). This allows vec![] to be able to be used in const contexts
- convert::Infallible now implements Hash
- OsString now implements DerefMut and IndexMut returning a &mut OsStr
- Unicode 13 is now supported
- String now implements From<&mut str>
- IoSlice now implements Copy
- Vec now implements From<[T; N]>. Where N is at most 32
- proc_macro::LexError now implements fmt::Display and Error
- from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes, and to_ne_bytes methods are now const for all integer types

Stabilized APIs:
- PathBuf::with_capacity
- PathBuf::capacity
- PathBuf::clear
- PathBuf::reserve
- PathBuf::reserve_exact
- PathBuf::shrink_to_fit
- f32::to_int_unchecked
- f64::to_int_unchecked
- Layout::align_to
- Layout::pad_to_align
- Layout::array
- Layout::extend

Cargo:
- Added the cargo tree command which will print a tree graph of your dependencies
- You can also display dependencies on multiple versions of the same crate with cargo tree -d (short for cargo tree --duplicates)
- Misc
- Rustdoc now allows you to specify --crate-version to have rustdoc include the version in the sidebar

Compatibility Notes:
- Rustc now correctly generates static libraries on Windows GNU targets with the .a extension, rather than the previous .lib
- Removed the -C no_integrated_as flag from rustc
- The file_name property in JSON output of macro errors now points the actual source file rather than the previous format of . Note: this may not point a file that actually exists on the user's system.
- The minimum required external LLVM version has been bumped to LLVM 8
- mem::{zeroed, uninitialised} will now panic when used with types that do not allow zero initialization such as NonZeroU8. This was previously a warning
- In 1.45.0 (the next release) converting a f64 to u32 using the as operator has been defined as a saturating operation. This was previously undefined behaviour, you can use the {f64, f32}::to_int_unchecked methods to continue using the current behaviour which may desirable in rare performance sensitive situations.

Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools
- dep_graph Avoid allocating a set on when the number reads are small
- Replace big JS dict with JSON parsing


Rust 1.43.1
- Updated openssl-src to 1.1.1g for CVE-2020-1967
- Fixed the stabilization of AVX-512 features
- Fixed cargo package --list not working with unpublished dependencies


Rust 1.43.0
Language:
- Fixed using binary operations with &{number} (e.g. &1.0) not having the type inferred correctly
- Attributes such as #[cfg()] can now be used on if expressions

Syntax only changes:
- Allow type Foo: Ord syntactically
- Fuse associated and extern items up to defaultness
- Syntactically allow self in all fn contexts
- Merge fn syntax + cleanup item parsing
- item macro fragments can be interpolated into traits, impls, and extern blocks
- These are still rejected semantically, so you will likely receive an error but these changes can be seen and parsed by macros and conditional compilation

Compiler:
- You can now pass multiple lint flags to rustc to override the previous flags. For example; rustc -D unused -A unused-variables denies everything in the unused lint group except unused-variables which is explicitly allowed. However, passing rustc -A unused-variables -D unused denies everything in the unused lint group including unused-variables since the allow flag is specified before the deny flag (and therefore overridden).
- rustc will now prefer your system MinGW libraries over its bundled libraries if they are available on windows-gnu
- rustc now buffers errors/warnings printed in JSON

Libraries:
- Arc<[T; N]>, Box<[T; N]>, and Rc<[T; N]>, now implement TryFrom<Arc<[T]>>,TryFrom<Box<[T]>>, and TryFrom<Rc<[T]>> respectively. Note These conversions are only available when N is 0..=32.
- You can now use associated constants on floats and integers directly, rather than having to import the module. e.g. You can now write u32::MAX or f32::NAN with no imports.
- u8::is_ascii is now const.
- String now implements AsMut.
- Added the primitive module to std and core. This module reexports Rust's primitive types. This is mainly useful in macros where you want avoid these types being shadowed.
- Relaxed some of the trait bounds on HashMap and HashSet.
- string::FromUtf8Error now implements Clone + Eq.

Stabilized APIs:
- Once::is_completed
- f32::LOG10_2
- f32::LOG2_10
- f64::LOG10_2
- f64::LOG2_10
- iter::once_with

Cargo:
- You can now set config [profile]s in your .cargo/config, or through your environment
- Cargo will now set CARGO_BIN_EXE_ pointing to a binary's executable path when running integration tests or benchmarks. is the name of your binary as-is e.g. If you wanted the executable path for a binary named my-programyou would use env!("CARGO_BIN_EXE_my-program").

Misc:
- Certain checks in the const_err lint were deemed unrelated to const evaluation, and have been moved to the unconditional_panic and arithmetic_overflow lints

Compatibility Notes:
- Having trailing syntax in the assert! macro is now a hard error. This has been a warning since 1.36.0
- Fixed Self not having the correctly inferred type. This incorrectly led to some instances being accepted, and now correctly emits a hard error

Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools.
- All components are now built with opt-level=3 instead of 2
- Improved how rustc generates drop code
- Improved performance from #[inline]-ing certain hot functions
- traits: preallocate 2 Vecs of known initial size
- Avoid exponential behaviour when relating types
- Skip Drop terminators for enum variants without drop glue
- Improve performance of coherence checks
- Deduplicate types in the generator witness
- Invert control in struct_lint_level


Rust 1.41.0
Language:
- You can now pass type parameters to foreign items when implementing traits. E.g. You can now write impl From for Vec {}
- You can now arbitrarily nest receiver types in the self position. E.g. you can now write fn foo(self: Box) {}. Previously only Self, &Self, &mut Self, Arc, Rc, and Box were allowed.
- You can now use any valid identifier in a format_args macro. Previously identifiers starting with an underscore were not allowed
- Visibility modifiers (e.g. pub) are now syntactically allowed on trait items and enum variants. These are still rejected semantically, but can be seen and parsed by procedural macros and conditional compilation

Compiler:
- Rustc will now warn if you have unused loop 'labels
- Removed support for the i686-unknown-dragonfly target
- Added tier 3 support* for the riscv64gc-unknown-linux-gnu target
You can now pass an arguments file passing the @path syntax to rustc. Note that the format differs somewhat from what is found in other tooling; - please see the documentation for more information
- You can now provide --extern flag without a path, indicating that it is available from the search path or specified with an -L flag
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- The core::panic module is now stable. It was already stable through std
- NonZero* numerics now implement From<NonZero*> if it's a smaller integer width. E.g. NonZeroU16 now implements From
- MaybeUninit now implements fmt::Debug

Stabilized APIs:
- Result::map_or
- Result::map_or_else
- std::rc::Weak::weak_count
- std::rc::Weak::strong_count
- std::sync::Weak::weak_count
- std::sync::Weak::strong_count

Cargo:
- Cargo will now document all the private items for binary crates by default
- cargo-install will now reinstall the package if it detects that it is out of date
- Cargo.lock now uses a more git friendly format that should help to reduce merge conflicts
- You can now override specific dependencies's build settings E.g. [profile.dev.package.image] opt-level = 2 sets the image crate's optimisation level to 2 for debug builds. You can also use [profile..build-override] to override build scripts and their dependencies

Misc:
- You can now specify edition in documentation code blocks to compile the block for that edition. E.g. edition2018 tells rustdoc that the code sample should be compiled the 2018 edition of Rust
- You can now provide custom themes to rustdoc with --theme, and check the current theme with --check-theme
- You can use #[cfg(doc)] to compile an item when building documentation


Rust 1.40.0
Language:
- You can now use tuple structs and tuple enum variant's constructors in const contexts. e.g.
pub struct Point(i32, i32);
const ORIGIN: Point = {
let constructor = Point;
constructor(0, 0)
- You can now mark structs, enums, and enum variants with the #[non_exhaustive] attribute to indicate that there may be variants or fields added in the future. For example this requires adding a wild-card branch (_ => {}) to any match statements on a non-exhaustive enum. (RFC 2008)
- You can now use function-like procedural macros in extern blocks and in type positions. e.g. type Generated = macro!()
- Function-like and attribute procedural macros can now emit macro_rules! items, so you can now have your macros generate macros
- The meta pattern matcher in macro_rules! now correctly matches the modern attribute syntax. For example (#[$m:meta]) now matches #[attr], #[attr{tokens}], #[attr[tokens]], and #[attr(tokens)]

Compiler:
- Added tier 3 support* for the thumbv7neon-unknown-linux-musleabihf target
- Added tier 3 support for the aarch64-unknown-none-softfloat target
- Added tier 3 support for the mips64-unknown-linux-muslabi64, and mips64el-unknown-linux-muslabi64 targets
- Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- The is_power_of_two method on unsigned numeric types is now a const function

Stabilized APIs:
- BTreeMap::get_key_value
- HashMap::get_key_value
- Option::as_deref_mut
- Option::as_deref
- Option::flatten
- UdpSocket::peer_addr
- f32::to_be_bytes
- f32::to_le_bytes
- f32::to_ne_bytes
- f64::to_be_bytes
- f64::to_le_bytes
- f64::to_ne_bytes
- f32::from_be_bytes
- f32::from_le_bytes
- f32::from_ne_bytes
- f64::from_be_bytes
- f64::from_le_bytes
- f64::from_ne_bytes
- mem::take
- slice::repeat
- todo!

Cargo:
- Cargo will now always display warnings, rather than only on fresh builds
- Feature flags (except --all-features) passed to a virtual workspace will now produce an error. Previously these flags were ignored
- You can now publish dev-dependencies without including a version.

Misc:
- You can now specify the #[cfg(doctest)] attribute to include an item only when running documentation tests with rustdoc

Compatibility Notes:
- As previously announced, any previous NLL warnings in the 2015 edition are now hard errors
- The include! macro will now warn if it failed to include the entire file. The include! macro unintentionally only includes the first expression in a file, and this can be unintuitive. This will become either a hard error in a future release, or the behavior may be fixed to include all expressions as expected.
- Using #[inline] on function prototypes and consts now emits a warning under unused_attribute lint. Using #[inline] anywhere else inside traits or extern blocks now correctly emits a hard error


Rust 1.39.0
Language:
- You can now create async functions and blocks with async fn, async move {}, and async {} respectively, and you can now call .await on async expressions.
- You can now use certain attributes on function, closure, and function pointer parameters. These attributes include cfg, cfg_attr, allow, warn, deny, forbid as well as inert helper attributes used by procedural macro attributes applied to items. e.g.
- fn len(
- #[cfg(windows)] slice: &[u16],
- #[cfg(not(windows))] slice: &[u8],
- ) -> usize {
- slice.len()
- You can now take shared references to bind-by-move patterns in the if guards of match arms. e.g.
- fn main() {
- let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);
- match array {
- nums
- // ---- `nums` is bound by move.
- if nums.iter().sum::() == 10
- // ^------ `.iter()` implicitly takes a reference to `nums`.
- => {
- drop(nums);
- // ----------- Legal as `nums` was bound by move and so we have ownership.
- _ => unreachable!(),

Compiler:
- Added tier 3* support for the i686-unknown-uefi target
- Added tier 3 support for the sparc64-unknown-openbsd target
- rustc will now trim code snippets in diagnostics to fit in your terminal. Note Cargo currently doesn't use this feature. Refer to cargo#7315 to track this feature's progress
- You can now pass --show-output argument to test binaries to print the output of successful tests
- * Refer to Rust's platform support page for more information on Rust's tiered platform support

Libraries:
- Vec::new and String::new are now const functions
- LinkedList::new is now a const function
- str::len, [T]::len and str::as_bytes are now const functions
- The abs, wrapping_abs, and overflowing_abs numeric functions are now const

Stabilized APIs:
- Pin::into_inner
- Instant::checked_duration_since
- Instant::saturating_duration_since

Cargo:
- You can now publish git dependencies if supplied with a version
- The --all flag has been renamed to --workspace. Using --all is now deprecated

Misc:
- You can now pass -Clinker to rustdoc to control the linker used for compiling doctests

Compatibility Notes:
- Code that was previously accepted by the old borrow checker, but rejected by the NLL borrow checker is now a hard error in Rust 2018. This was previously a warning, and will also become a hard error in the Rust 2015 edition in the 1.40.0 release
- rustdoc now requires rustc to be installed and in the same directory to run tests. This should improve performance when running a large amount of doctests
- The try! macro will now issue a deprecation warning. It is recommended to use the ? operator instead
- asinh(-0.0) now correctly returns -0.0. Previously this returned 0.0


Rust 1.38.0
Language:
- The #[global_allocator] attribute can now be used in submodules
- The #[deprecated] attribute can now be used on macros

Compiler:
- Added pipelined compilation support to rustc. This will improve compilation times in some cases. For further information please refer to the "Evaluating pipelined rustc compilation" thread
- Added tier 3 support for the aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, and x86_64-uwp-windows-msvc targets
- Added tier 3 support for the armv7-unknown-linux-gnueabi and armv7-unknown-linux-musleabi targets
- Added tier 3 support for the hexagon-unknown-linux-musl target
- Added tier 3 support for the riscv32i-unknown-none-elf target

Libraries:
- ascii::EscapeDefault now implements Clone and Display
- Derive macros for prelude traits (e.g. Clone, Debug, Hash) are now available at the same path as the trait. (e.g. The Clone derive macro is available at std::clone::Clone). This also makes all built-in macros available in std/core root. e.g. std::include_bytes!
- str::Chars now implements Debug
- slice::{concat, connect, join} now accepts &[T] in addition to &T
- *const T and *mut T now implement marker::Unpin
- Arc<[T]> and Rc<[T]> now implement FromIterator.
- Added euclidean remainder and division operations (div_euclid, rem_euclid) to all numeric primitives. Additionally checked, overflowing, and wrapping versions are available for all integer primitives
- thread::AccessError now implements Clone, Copy, Eq, Error, and PartialEq
- iter::{StepBy, Peekable, Take} now implement DoubleEndedIterator

Stabilized APIs:
- <*const T>::cast
- <*mut T>::cast
- Duration::as_secs_f32
- Duration::as_secs_f64
- Duration::div_duration_f32
- Duration::div_duration_f64
- Duration::div_f32
- Duration::div_f64
- Duration::from_secs_f32
- Duration::from_secs_f64
- Duration::mul_f32
- Duration::mul_f64
- any::type_name

Cargo:
- Added pipelined compilation support to cargo
- You can now pass the --features option multiple times to enable multiple features

Misc:
- rustc will now warn about some incorrect uses of mem::{uninitialized, zeroed} that are known to cause undefined behaviour

Compatibility Notes:
- The x86_64-unknown-uefi platform can not be built with rustc 1.38.0
- The armv7-unknown-linux-gnueabihf platform is known to have issues with certain crates such as libc


Rust 1.37.0
Language:
- #[must_use] will now warn if the type is contained in a tuple, Box, or an array and unused.
- You can now use the cfg and cfg_attr attributes on generic parameters.
- You can now use enum variants through type alias. e.g. You can write the following:
- type MyOption = Option;
- fn increment_or_zero(x: MyOption) -> u8 {
- match x {
- MyOption::Some(y) => y + 1,
- MyOption::None => 0,
- You can now use _ as an identifier for consts. e.g. You can write const _: u32 = 5;.
- You can now use #[repr(align(X)] on enums.
- The ? Kleene macro operator is now available in the 2015 edition.

Compiler:
You can now enable Profile-Guided Optimization with the -C profile-generate and -C profile-use flags. For more information on how to use profile - guided optimization, please refer to the rustc book.
- The rust-lldb wrapper script should now work again.

Libraries:
- mem::MaybeUninit is now ABI-compatible with T.
- Stabilized APIs:
- BufReader::buffer
- BufWriter::buffer
- Cell::from_mut
- Cell<[T]>::as_slice_of_cells
- DoubleEndedIterator::nth_back
- Option::xor
- Wrapping::reverse_bits
- i128::reverse_bits
- i16::reverse_bits
- i32::reverse_bits
- i64::reverse_bits
- i8::reverse_bits
- isize::reverse_bits
- slice::copy_within
- u128::reverse_bits
- u16::reverse_bits
- u32::reverse_bits
- u64::reverse_bits
- u8::reverse_bits
- usize::reverse_bits

Cargo:
- Cargo.lock files are now included by default when publishing executable crates with executables.
- You can now specify default-run="foo" in [package] to specify the default executable to use for cargo run.

Rust 1.52.1 相關參考資料
Announcing Rust 1.52.1 - announcements - The Rust ...

6 天前 — The Rust team has prepared a new release, 1.52.1, working around a bug in incremental compilation which was made into a compiler error in&nbsp;...

https://users.rust-lang.org

Announcing Rust 1.52.1 | Rust Blog

6 天前 — The Rust team has prepared a new release, 1.52.1, working around a bug in incremental compilation which was made into a compiler error in&nbsp;...

https://blog.rust-lang.org

Milestones - rust-langrust · GitHub

... to build reliable and efficient software. - rust-lang/rust. ... 1.52.1. No due date Last updated 7 days ago. 100% complete. 0 open &middot; 1 closed. © 2021 GitHub, Inc&nbsp;...

https://github.com

Releases · rust-langrust · GitHub

Empowering everyone to build reliable and efficient software. - rust-lang/rust.

https://github.com

Rust 1.52.1 Contributors

Rust 1.52.1 Contributors ... We have had 3 individuals contribute to 1.52.1. Thank you so much! Rank, Name, Contributions. 1, Mark Rousskov, 4.

https://thanks.rust-lang.org

Rust 1.52.1 发布-Linuxeden开源社区

5 天前 — The Rust team has prepared a new release, 1.52.1, working around a bug in incremental compilation which was made into a compiler error in&nbsp;...

http://www.linuxeden.com

Rust 1.52.1 发布,默认禁用增量编译- OSCHINA - 中文开源 ...

4 天前 — Rust 1.52.1 已发布,Rust 团队称此版本主要是解决增量编译中存在的bug,该bug 在1.52.0 中会导致编译器错误。同时,团队建议所有Rust 用户&nbsp;...

https://www.oschina.net

Rust Taiwan - Posts | Facebook

Rust 1.52.1 釋出! 看到釋出patch version 就代表「能升級就升級」。 這次問題出在Rust 最近新加的驗證功能檢查到Incremental Compilation 有miscompile 錯誤,&nbsp;...

https://www.facebook.com

[建议升级] Rust 1.52.1 版本发布,解决了增量编译中 ... - 优享资讯

4 天前 — Rust团队准备了一个新的版本,1.52.1,解决了增量编译中的一个错误,这个错误在1.52.0中被做成了一个编译器错误。我们建议所有的Rust&nbsp;...

https://ujoy.net

【Rust日报】2021-05-11 Rust 1.52.1 发布_Rust语言学习交流 ...

4 天前 — Rust 1.52.1发布。这个版本是1.52.0中出现的编译错误的一个临时解决方案。这些编译错误的典型表现是报错信息中包含found unstable&nbsp;...

https://blog.csdn.net