9a06d11113
Pkgsrc changes: * This package now contains rust-analyzer, so implicitly conflicts with that pkgsrc package. The same goes for the rust-src package. * Add NetBSD/arm6 port * Add unfinished NetBSD/mipsel port * Revert the use of the internal LLVM, should now build with the new pkgsrc LLVM (15). * Add depndence on compat80 for sparc64 to fix the build * Adapt patches * Add CHECK_INTERPRETER_SKIP for a few (mostly unused) files. (A proper fix may come later.) Upstream changes: Version 1.64.0 (2022-09-22) =========================== Language -------- - [Unions with mutable references or tuples of allowed types are now allowed](https://github.com/rust-lang/rust/pull/97995/) - It is now considered valid to deallocate memory pointed to by a shared reference `&T` [if every byte in `T` is inside an `UnsafeCell`](https://github.com/rust-lang/rust/pull/98017/) - Unused tuple struct fields are now warned against in an allow-by-default lint, [`unused_tuple_struct_fields`] (https://github.com/rust-lang/rust/pull/95977/), similar to the existing warning for unused struct fields. This lint will become warn-by-default in the future. Compiler -------- - [Add Nintendo Switch as tier 3 target] (https://github.com/rust-lang/rust/pull/88991/) - Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. - [Only compile `#[used]` as llvm.compiler.used for ELF targets] (https://github.com/rust-lang/rust/pull/93718/) - [Add the `--diagnostic-width` compiler flag to define the terminal width.] (https://github.com/rust-lang/rust/pull/95635/) - [Add support for link-flavor `rust-lld` for iOS, tvOS and watchOS] (https://github.com/rust-lang/rust/pull/98771/) Libraries --------- - [Remove restrictions on compare-exchange memory ordering.] (https://github.com/rust-lang/rust/pull/98383/) - You can now `write!` or `writeln!` into an `OsString`: [Implement `fmt::Write` for `OsString`](https://github.com/rust-lang/rust/pull/97915/) - [Make RwLockReadGuard covariant] (https://github.com/rust-lang/rust/pull/96820/) - [Implement `FusedIterator` for `std::net::[Into]Incoming`] (https://github.com/rust-lang/rust/pull/97300/) - [`impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>`] (https://github.com/rust-lang/rust/pull/97437/) - [`ptr::copy` and `ptr::swap` are doing untyped copies] (https://github.com/rust-lang/rust/pull/97712/) - [Add cgroupv1 support to `available_parallelism`] (https://github.com/rust-lang/rust/pull/97925/) - [Mitigate many incorrect uses of `mem::uninitialized`] (https://github.com/rust-lang/rust/pull/99182/) Stabilized APIs --------------- - [`future::IntoFuture`] (https://doc.rust-lang.org/stable/std/future/trait.IntoFuture.html) - [`future::poll_fn`] (https://doc.rust-lang.org/stable/std/future/fn.poll_fn.html) - [`task::ready!`] (https://doc.rust-lang.org/stable/std/task/macro.ready.html) - [`num::NonZero*::checked_mul`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_mul) - [`num::NonZero*::checked_pow`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_pow) - [`num::NonZero*::saturating_mul`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_mul) - [`num::NonZero*::saturating_pow`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_pow) - [`num::NonZeroI*::abs`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.abs) - [`num::NonZeroI*::checked_abs`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.checked_abs) - [`num::NonZeroI*::overflowing_abs`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.overflowing_abs) - [`num::NonZeroI*::saturating_abs`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.saturating_abs) - [`num::NonZeroI*::unsigned_abs`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.unsigned_abs) - [`num::NonZeroI*::wrapping_abs`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.wrapping_abs) - [`num::NonZeroU*::checked_add`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_add) - [`num::NonZeroU*::checked_next_power_of_two`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_next_power_of_two) - [`num::NonZeroU*::saturating_add`] (https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_add) - [`os::unix::process::CommandExt::process_group`] (https://doc.rust-lang.org/stable/std/os/unix/process/trait.CommandExt.html#tymethod.process_group) - [`os::windows::fs::FileTypeExt::is_symlink_dir`] (https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_dir) - [`os::windows::fs::FileTypeExt::is_symlink_file`] (https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_file) These types were previously stable in `std::ffi`, but are now also available in `core` and `alloc`: - [`core::ffi::CStr`] (https://doc.rust-lang.org/stable/core/ffi/struct.CStr.html) - [`core::ffi::FromBytesWithNulError`] (https://doc.rust-lang.org/stable/core/ffi/struct.FromBytesWithNulError.html) - [`alloc::ffi::CString`] (https://doc.rust-lang.org/stable/alloc/ffi/struct.CString.html) - [`alloc::ffi::FromVecWithNulError`] (https://doc.rust-lang.org/stable/alloc/ffi/struct.FromVecWithNulError.html) - [`alloc::ffi::IntoStringError`] (https://doc.rust-lang.org/stable/alloc/ffi/struct.IntoStringError.html) - [`alloc::ffi::NulError`] (https://doc.rust-lang.org/stable/alloc/ffi/struct.NulError.html) These types were previously stable in `std::os::raw`, but are now also available in `core::ffi` and `std::ffi`: - [`ffi::c_char`] (https://doc.rust-lang.org/stable/std/ffi/type.c_char.html) - [`ffi::c_double`] (https://doc.rust-lang.org/stable/std/ffi/type.c_double.html) - [`ffi::c_float`] (https://doc.rust-lang.org/stable/std/ffi/type.c_float.html) - [`ffi::c_int`] (https://doc.rust-lang.org/stable/std/ffi/type.c_int.html) - [`ffi::c_long`] (https://doc.rust-lang.org/stable/std/ffi/type.c_long.html) - [`ffi::c_longlong`] (https://doc.rust-lang.org/stable/std/ffi/type.c_longlong.html) - [`ffi::c_schar`] (https://doc.rust-lang.org/stable/std/ffi/type.c_schar.html) - [`ffi::c_short`] (https://doc.rust-lang.org/stable/std/ffi/type.c_short.html) - [`ffi::c_uchar`] (https://doc.rust-lang.org/stable/std/ffi/type.c_uchar.html) - [`ffi::c_uint`] (https://doc.rust-lang.org/stable/std/ffi/type.c_uint.html) - [`ffi::c_ulong`] (https://doc.rust-lang.org/stable/std/ffi/type.c_ulong.html) - [`ffi::c_ulonglong`] (https://doc.rust-lang.org/stable/std/ffi/type.c_ulonglong.html) - [`ffi::c_ushort`] (https://doc.rust-lang.org/stable/std/ffi/type.c_ushort.html) These APIs are now usable in const contexts: - [`slice::from_raw_parts`] (https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts.html) Cargo ----- - [Packages can now inherit settings from the workspace so that the settings can be centralized in one place.] (https://github.com/rust-lang/cargo/pull/10859) See [`workspace.package`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacepackage-table) and [`workspace.dependencies`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacedependencies-table) for more details on how to define these common settings. - [Cargo commands can now accept multiple `--target` flags to build for multiple targets at once] (https://github.com/rust-lang/cargo/pull/10766), and the [`build.target`](https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildtarget) config option may now take an array of multiple targets. - [The `--jobs` argument can now take a negative number to count backwards from the max CPUs.] (https://github.com/rust-lang/cargo/pull/10844) - [`cargo add` will now update `Cargo.lock`.] (https://github.com/rust-lang/cargo/pull/10902) - [Added](https://github.com/rust-lang/cargo/pull/10838) the [`--crate-type`](https://doc.rust-lang.org/nightly/cargo/commands/cargo-rustc.html#option-cargo-rustc---crate-type) flag to `cargo rustc` to override the crate type. - [Significantly improved the performance fetching git dependencies from GitHub when using a hash in the `rev` field.] (https://github.com/rust-lang/cargo/pull/10079) Misc ---- - [The `rust-analyzer` rustup component is now available on the stable channel.] (https://github.com/rust-lang/rust/pull/98640/) Compatibility Notes ------------------- - The minimum required versions for all `-linux-gnu` targets are now at least kernel 3.2 and glibc 2.17, for targets that previously supported older versions: [Increase the minimum linux-gnu versions](https://github.com/rust-lang/rust/pull/95026/) - [Network primitives are now implemented with the ideal Rust layout, not the C system layout] (https://github.com/rust-lang/rust/pull/78802/). This can cause problems when transmuting the types. - [Add assertion that `transmute_copy`'s `U` is not larger than `T`] (https://github.com/rust-lang/rust/pull/98839/) - [A soundness bug in `BTreeMap` was fixed] (https://github.com/rust-lang/rust/pull/99413/) that allowed data it was borrowing to be dropped before the container. - [The Drop behavior of C-like enums cast to ints has changed] (https://github.com/rust-lang/rust/pull/96862/). These are already discouraged by a compiler warning. - [Relate late-bound closure lifetimes to parent fn in NLL] (https://github.com/rust-lang/rust/pull/98835/) - [Errors at const-eval time are now in future incompatibility reports] (https://github.com/rust-lang/rust/pull/97743/) - On the `thumbv6m-none-eabi` target, some incorrect `asm!` statements were erroneously accepted if they used the high registers (r8 to r14) as an input/output operand. [This is no longer accepted] (https://github.com/rust-lang/rust/pull/99155/). - [`impl Trait` was accidentally accepted as the associated type value of return-position `impl Trait`] (https://github.com/rust-lang/rust/pull/97346/), without fulfilling all the trait bounds of that associated type, as long as the hidden type satisfies said bounds. This has been fixed. Internal Changes ---------------- These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - Windows builds now use profile-guided optimization, providing 10-20% improvements to compiler performance: [Utilize PGO for windows x64 rustc dist builds] (https://github.com/rust-lang/rust/pull/96978/) - [Stop keeping metadata in memory before writing it to disk] (https://github.com/rust-lang/rust/pull/96544/) - [compiletest: strip debuginfo by default for mode=ui] (https://github.com/rust-lang/rust/pull/98140/) - Many improvements to generated code for derives, including performance improvements: - [Don't use match-destructuring for derived ops on structs.] (https://github.com/rust-lang/rust/pull/98446/) - [Many small deriving cleanups] (https://github.com/rust-lang/rust/pull/98741/) - [More derive output improvements] (https://github.com/rust-lang/rust/pull/98758/) - [Clarify deriving code](https://github.com/rust-lang/rust/pull/98915/) - [Final derive output improvements] (https://github.com/rust-lang/rust/pull/99046/) - [Stop injecting `#[allow(unused_qualifications)]` in generated `derive` implementations](https://github.com/rust-lang/rust/pull/99485/) - [Improve `derive(Debug)`](https://github.com/rust-lang/rust/pull/98190/) - [Bump to clap 3](https://github.com/rust-lang/rust/pull/98213/) - [fully move dropck to mir](https://github.com/rust-lang/rust/pull/98641/) - [Optimize `Vec::insert` for the case where `index == len`.] (https://github.com/rust-lang/rust/pull/98755/) - [Convert rust-analyzer to an in-tree tool] (https://github.com/rust-lang/rust/pull/99603/) |
||
---|---|---|
.. | ||
patch-compiler_rustc__codegen__ssa_src_back_linker.rs | ||
patch-compiler_rustc__llvm_build.rs | ||
patch-compiler_rustc__target_src_spec_aarch64__be__unknown__netbsd.rs | ||
patch-compiler_rustc__target_src_spec_i586__unknown__netbsd.rs | ||
patch-compiler_rustc__target_src_spec_mipsel__unknown__netbsd.rs | ||
patch-compiler_rustc__target_src_spec_mod.rs | ||
patch-compiler_rustc__target_src_spec_netbsd__base.rs | ||
patch-library_backtrace_src_symbolize_gimli.rs | ||
patch-library_backtrace_src_symbolize_gimli_elf.rs | ||
patch-library_std_src_sys_unix_mod.rs | ||
patch-library_std_src_sys_unix_thread.rs | ||
patch-library_unwind_build.rs | ||
patch-src_bootstrap_bootstrap.py | ||
patch-src_bootstrap_builder.rs | ||
patch-src_bootstrap_compile.rs | ||
patch-src_bootstrap_lib.rs | ||
patch-src_llvm-project_llvm_cmake_modules_AddLLVM.cmake | ||
patch-src_llvm-project_llvm_CMakeLists.txt | ||
patch-src_llvm-project_llvm_include_llvm-c_DataTypes.h | ||
patch-src_llvm-project_llvm_include_llvm_Analysis_ConstantFolding.h | ||
patch-src_llvm-project_llvm_utils_FileCheck_FileCheck.cpp | ||
patch-src_tools_cargo_src_cargo_core_profiles.rs | ||
patch-src_tools_cargo_tests_testsuite_build.rs | ||
patch-src_tools_rls_rls_src_cmd.rs | ||
patch-src_tools_rls_rls_src_server_io.rs | ||
patch-src_tools_rust-installer_install-template.sh | ||
patch-vendor_backtrace_src_symbolize_gimli.rs | ||
patch-vendor_backtrace_src_symbolize_gimli_elf.rs | ||
patch-vendor_cc-1.0.69_src_lib.rs | ||
patch-vendor_cc_src_lib.rs | ||
patch-vendor_crossbea_no__atomic.rs | ||
patch-vendor_crossbeam-epch-0.9.6_no__atomic.rs | ||
patch-vendor_crossbeam-epoch-0.9.8_no__atomic.rs | ||
patch-vendor_crossbeam-epoch_no__atomic.rs | ||
patch-vendor_crossbeam-queue_no__atomic.rs | ||
patch-vendor_crossbeam-utils-0.8.0_no__atomic.rs | ||
patch-vendor_crossbeam-utils_no__atomic.rs | ||
patch-vendor_kqueue_src_time.rs | ||
patch-vendor_libc_src_unix_bsd_netbsdlike_netbsd_mips.rs | ||
patch-vendor_libc_src_unix_bsd_netbsdlike_netbsd_mod.rs | ||
patch-vendor_libc_src_unix_solarish_mod.rs | ||
patch-vendor_lzma-sys_config.h | ||
patch-vendor_openssl-src_src_lib.rs | ||
patch-vendor_rustc-ap-rustc__target_src_spec_aarch64__be__unknown__netbsd.rs | ||
patch-vendor_stacker_src_lib.rs | ||
patch-vendor_target-lexicon_src_targets.rs | ||
patch-vendor_valuable_no__atomic.rs |