head 1.16; access; symbols pkgsrc-2026Q1:1.15.0.6 pkgsrc-2026Q1-base:1.15 pkgsrc-2025Q4:1.15.0.4 pkgsrc-2025Q4-base:1.15 pkgsrc-2025Q3:1.15.0.2 pkgsrc-2025Q3-base:1.15 pkgsrc-2025Q2:1.14.0.10 pkgsrc-2025Q2-base:1.14 pkgsrc-2025Q1:1.14.0.8 pkgsrc-2025Q1-base:1.14 pkgsrc-2024Q4:1.14.0.6 pkgsrc-2024Q4-base:1.14 pkgsrc-2024Q3:1.14.0.4 pkgsrc-2024Q3-base:1.14 pkgsrc-2024Q2:1.14.0.2 pkgsrc-2024Q2-base:1.14 pkgsrc-2024Q1:1.13.0.4 pkgsrc-2024Q1-base:1.13 pkgsrc-2023Q4:1.13.0.2 pkgsrc-2023Q4-base:1.13 pkgsrc-2023Q3:1.11.0.6 pkgsrc-2023Q3-base:1.11 pkgsrc-2023Q2:1.11.0.4 pkgsrc-2023Q2-base:1.11 pkgsrc-2023Q1:1.11.0.2 pkgsrc-2023Q1-base:1.11 pkgsrc-2022Q4:1.10.0.2 pkgsrc-2022Q4-base:1.10 pkgsrc-2022Q3:1.9.0.4 pkgsrc-2022Q3-base:1.9 pkgsrc-2022Q2:1.9.0.2 pkgsrc-2022Q2-base:1.9 pkgsrc-2022Q1:1.8.0.2 pkgsrc-2022Q1-base:1.8 pkgsrc-2021Q4:1.6.0.2 pkgsrc-2021Q4-base:1.6 pkgsrc-2021Q3:1.5.0.2 pkgsrc-2021Q3-base:1.5 pkgsrc-2021Q2:1.4.0.2 pkgsrc-2021Q2-base:1.4 pkgsrc-2021Q1:1.1.0.16 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.14 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.12 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.10 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.6 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.8 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.4 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.2 pkgsrc-2019Q2-base:1.1; locks; strict; comment @# @; 1.16 date 2026.05.07.13.16.15; author wiz; state Exp; branches; next 1.15; commitid 9vzB9PlgXCBlSSEG; 1.15 date 2025.08.25.17.51.12; author wiz; state Exp; branches; next 1.14; commitid f4c62oPEs8CgB88G; 1.14 date 2024.04.18.09.29.42; author pin; state Exp; branches; next 1.13; commitid jVSapr3qqugdIB6F; 1.13 date 2023.10.25.05.50.43; author pin; state Exp; branches; next 1.12; commitid UEfn9v0yjdAD9YJE; 1.12 date 2023.10.10.13.12.33; author pin; state Exp; branches; next 1.11; commitid hQe6AmUQ9PEi55IE; 1.11 date 2023.01.23.18.49.04; author he; state Exp; branches; next 1.10; commitid iHEi3Slf9XUSiHaE; 1.10 date 2022.11.15.23.11.14; author he; state Exp; branches; next 1.9; commitid J6akXTnkh5Q3YQ1E; 1.9 date 2022.05.25.21.31.26; author he; state Exp; branches; next 1.8; commitid CFN40Jr6OPQG0uFD; 1.8 date 2022.03.01.16.06.39; author he; state Exp; branches; next 1.7; commitid oZ29VxnktwncTwuD; 1.7 date 2022.01.21.23.20.36; author he; state Exp; branches; next 1.6; commitid ZP0IHJWR26ngBypD; 1.6 date 2021.11.20.16.09.46; author he; state Exp; branches; next 1.5; commitid 1Wf0CjqjBzXZbyhD; 1.5 date 2021.09.10.15.09.32; author jperkin; state Exp; branches; next 1.4; commitid IQ0vrlpyXDx88q8D; 1.4 date 2021.05.31.10.17.53; author he; state Exp; branches; next 1.3; commitid mFNkvCO0puqtOhVC; 1.3 date 2021.05.26.09.21.39; author he; state Exp; branches; next 1.2; commitid tA2xfHkPlohYDDUC; 1.2 date 2021.04.19.17.08.09; author he; state Exp; branches; next 1.1; commitid c2Uk0uVdMcjnrVPC; 1.1 date 2019.04.14.12.42.03; author he; state Exp; branches; next ; commitid pwhmGAMnCz6kCjjB; desc @@ 1.16 log @rust: update to 1.95.0. As always, provided by he@@ in wip. New major release, details at https://blog.rust-lang.org/2026/04/16/Rust-1.95.0/ @ text @$NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.15 2025/08/25 17:51:12 wiz Exp $ Don't implement sys/regset.h workaround, fix source instead. --- src/llvm-project/llvm/CMakeLists.txt.orig 2026-04-14 19:55:32.000000000 +0000 +++ src/llvm-project/llvm/CMakeLists.txt @@@@ -1288,11 +1288,6 @@@@ if (CMAKE_SYSTEM_NAME MATCHES "OS390") include_directories(SYSTEM "${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/SystemZ/zos_wrappers" ) endif() -if( "${CMAKE_SYSTEM_NAME}" MATCHES SunOS ) - # special hack for Solaris to handle crazy system sys/regset.h - include_directories("${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/Solaris") -endif( "${CMAKE_SYSTEM_NAME}" MATCHES SunOS ) - # Make sure we don't get -rdynamic in every binary. For those that need it, # use EXPORT_SYMBOLS argument. set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") @ 1.15 log @rust: update to 1.88 Prepared by he@@ in wip/rust188. Changes: 1.88 Language Stabilize #![feature(let_chains)] in the 2024 edition. This feature allows &&-chaining let statements inside if and while, allowing intermixture with boolean expressions. The patterns inside the let sub-expressions can be irrefutable or refutable. Stabilize #![feature(naked_functions)]. Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function. Stabilize #![feature(cfg_boolean_literals)]. This allows using boolean literals as cfg predicates, e.g. #[cfg(true)] and #[cfg(false)]. Fully de-stabilize the #[bench] attribute. Usage of #[bench] without #![feature(custom_test_frameworks)] already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error. Add warn-by-default dangerous_implicit_autorefs lint against implicit autoref of raw pointer dereference. The lint will be bumped to deny-by-default in the next version of Rust. Add invalid_null_arguments lint to prevent invalid usage of null pointers. This lint is uplifted from clippy::invalid_null_ptr_usage. Change trait impl candidate preference for builtin impls and trivial where-clauses. Check types of generic const parameter defaults Compiler Stabilize -Cdwarf-version for selecting the version of DWARF debug information to generate. Platform Support Demote i686-pc-windows-gnu to Tier 2. Refer to Rust’s platform support page for more information on Rust’s tiered platform support. Libraries Remove backticks from #[should_panic] test failure message. Guarantee that [T; N]::from_fn is generated in order of increasing indices., for those passing it a stateful closure. The libtest flag --nocapture is deprecated in favor of the more consistent --no-capture flag. Guarantee that {float}::NAN is a quiet NaN. Stabilized APIs Cell::update impl Default for *const T impl Default for *mut T HashMap::extract_if HashSet::extract_if proc_macro::Span::line proc_macro::Span::column proc_macro::Span::start proc_macro::Span::end proc_macro::Span::file proc_macro::Span::local_file These previously stable APIs are now stable in const contexts: NonNull::replace <*mut T>::replace std::ptr::swap_nonoverlapping Cell::{replace, get, get_mut, from_mut, as_slice_of_cells} Cargo Stabilize automatic garbage collection. use zlib-rs for gzip compression in rust code Rustdoc Doctests can be ignored based on target names using ignore-* attributes. Stabilize the --test-runtool and --test-runtool-arg CLI options to specify a program (like qemu) and its arguments to run a doctest. Compatibility Notes Finish changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a tt fragment specifier can often fix these macros. Fully de-stabilize the #[bench] attribute. Usage of #[bench] without #![feature(custom_test_frameworks)] already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error. Fix borrow checking some always-true patterns. The borrow checker was overly permissive in some cases, allowing programs that shouldn’t have compiled. Update the minimum external LLVM to 19. Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature. 1.87 Language Stabilize asm_goto feature Allow parsing open beginning ranges (..EXPR) after unary operators !, -, and *. Don’t require method impls for methods with Self: Sized bounds in impls for unsized types Stabilize feature(precise_capturing_in_traits) allowing use<...> bounds on return position impl Trait in traits Compiler x86: make SSE2 required for i686 targets and use it to pass SIMD types Platform Support Remove i586-pc-windows-msvc target Refer to Rust’s platform support page for more information on Rust’s tiered platform support. Libraries Stabilize the anonymous pipe API Add support for unbounded left/right shift operations Print pointer metadata in Debug impl of raw pointers Vec::with_capacity guarantees it allocates with the amount requested, even if Vec::capacity returns a different number. Most std::arch intrinsics which don’t take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled (https://github.com/rust-lang/stdarch/pull/1714, https://github.com/rust-lang/stdarch/pull/1716, https://github.com/rust-lang/stdarch/pull/1717) Undeprecate env::home_dir Denote ControlFlow as #[must_use] Macros such as assert_eq! and vec! now support const {...} expressions Stabilized APIs Vec::extract_if vec::ExtractIf LinkedList::extract_if linked_list::ExtractIf <[T]>::split_off <[T]>::split_off_mut <[T]>::split_off_first <[T]>::split_off_first_mut <[T]>::split_off_last <[T]>::split_off_last_mut String::extend_from_within os_str::Display OsString::display OsStr::display io::pipe io::PipeReader io::PipeWriter impl From for OwnedHandle impl From for OwnedHandle impl From for Stdio impl From for Stdio impl From for OwnedFd impl From for OwnedFd Box>::write impl TryFrom> for String <*const T>::offset_from_unsigned <*const T>::byte_offset_from_unsigned <*mut T>::offset_from_unsigned <*mut T>::byte_offset_from_unsigned NonNull::offset_from_unsigned NonNull::byte_offset_from_unsigned ::cast_signed NonZero::::cast_signed. ::cast_unsigned. NonZero::::cast_unsigned. ::is_multiple_of ::unbounded_shl ::unbounded_shr ::unbounded_shl ::unbounded_shr ::midpoint ::from_utf8 ::from_utf8_mut ::from_utf8_unchecked ::from_utf8_unchecked_mut These previously stable APIs are now stable in const contexts: core::str::from_utf8_mut <[T]>::copy_from_slice SocketAddr::set_ip SocketAddr::set_port, SocketAddrV4::set_ip SocketAddrV4::set_port, SocketAddrV6::set_ip SocketAddrV6::set_port SocketAddrV6::set_flowinfo SocketAddrV6::set_scope_id char::is_digit char::is_whitespace <[[T; N]]>::as_flattened <[[T; N]]>::as_flattened_mut String::into_bytes String::as_str String::capacity String::as_bytes String::len String::is_empty String::as_mut_str String::as_mut_vec Vec::as_ptr Vec::as_slice Vec::capacity Vec::len Vec::is_empty Vec::as_mut_slice Vec::as_mut_ptr Cargo Add terminal integration via ANSI OSC 9;4 sequences chore: bump openssl to v3 feat(package): add –exclude-lockfile flag Compatibility Notes Rust now raises an error for macro invocations inside the #![crate_name] attribute Unstable fields are now always considered to be inhabited Macro arguments of unary operators followed by open beginning ranges may now be matched differently Make Debug impl of raw pointers print metadata if present Warn against function pointers using unsupported ABI strings in dependencies Associated types on dyn types are no longer deduplicated Forbid attributes on .. inside of struct patterns (let Struct { #[attribute] .. }) = Make ptr_cast_add_auto_to_object lint into hard error Many std::arch intrinsics are now safe to call in some contexts, there may now be new unused_unsafe warnings in existing codebases. Limit width and precision formatting options to 16 bits on all targets Turn order dependent trait objects future incompat warning into a hard error Denote ControlFlow as #[must_use] Windows: The standard library no longer links advapi32, except on win7. Code such as C libraries that were relying on this assumption may need to explicitly link advapi32. Proc macros can no longer observe expanded cfg(true) attributes. Start changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a tt fragment specifier can often fix these macros. Don’t allow flattened format_args in const. 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. Update to LLVM 20 @ text @d1 1 a1 1 $NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.14 2024/04/18 09:29:42 pin Exp $ d5 1 a5 1 --- src/llvm-project/llvm/CMakeLists.txt.orig 2018-03-10 02:51:13.000000000 +0000 d7 2 a8 2 @@@@ -1225,11 +1225,6 @@@@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) # (this is a variable that CrossCompile sets on recursive invocations) d11 1 a11 1 -if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) d14 1 a14 1 -endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) @ 1.14 log @lang/rust: update to 1.76.0 Language - Document Rust ABI compatibility between various types - Also: guarantee that char and u32 are ABI-compatible - Add lint ambiguous_wide_pointer_comparisons that supersedes clippy::vtable_address_comparisons Compiler - Lint pinned #[must_use] pointers (in particular, Box where T is #[must_use]) in unused_must_use. - Soundness fix: fix computing the offset of an unsized field in a packed struct - Soundness fix: fix dynamic size/align computation logic for packed types with dyn Trait tail - Add $message_type field to distinguish json diagnostic outputs - Enable Rust to use the EHCont security feature of Windows - Add tier 3 {x86_64,i686}-win7-windows-msvc targets - Add tier 3 aarch64-apple-watchos target - Add tier 3 arm64e-apple-ios & arm64e-apple-darwin targets Refer to Rust's platform support page for more information on Rust's tiered platform support. Libraries - Add a column number to dbg!() - Add std::hash::{DefaultHasher, RandomState} exports - Fix rounding issue with exponents in fmt - Add T: ?Sized to RwLockReadGuard and RwLockWriteGuard's Debug impls. - Windows: Allow File::create to work on hidden files Stabilized APIs - Arc::unwrap_or_clone - Rc::unwrap_or_clone - Result::inspect - Result::inspect_err - Option::inspect - type_name_of_val - std::hash::{DefaultHasher, RandomState} These were previously available only through std::collections::hash_map. - ptr::{from_ref, from_mut} - ptr::addr_eq Cargo See Cargo release notes. Rustdoc - Don't merge cfg and doc(cfg) attributes for re-exports - rustdoc: allow resizing the sidebar / hiding the top bar - rustdoc-search: add support for traits and associated types - rustdoc: Add highlighting for comments in items declaration Compatibility Notes - Add allow-by-default lint for unit bindings This is expected to be upgraded to a warning by default in a future Rust release. Some macros emit bindings with type () with user-provided spans, which means that this lint will warn for user code. - Remove x86_64-sun-solaris target. - Remove asmjs-unknown-emscripten target - Report errors in jobserver inherited through environment variables This may warn on benign problems too. - Update the minimum external LLVM to 16. - Improve print_tts This change can break some naive manual parsing of token trees in proc macro code which expect a particular structure after .to_string(), rather than just arbitrary Rust code. - Make IMPLIED_BOUNDS_ENTAILMENT into a hard error from a lint - Vec's allocation behavior was changed when collecting some iterators Allocation behavior is currently not specified, nevertheless changes can be surprising. See impl FromIterator for Vec for more details. - Properly reject default on free const items @ text @d1 1 a1 1 $NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.1 2019/04/14 12:42:03 he Exp $ d7 1 a7 1 @@@@ -939,11 +939,6 @@@@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) d17 1 a17 1 # use export_executable_symbols(target). @ 1.13 log @lang/rust: update to 1.72.1 Packaged in wip by he@@ and adam@@ with minor adjustments from myself. v1.72.1 Changes - Adjust codegen change to improve LLVM codegen - rustdoc: Fix self ty params in objects with lifetimes - Fix regression in compile times - Resolve some ICE regressions in the compiler: - #115215 - #115559 v1.72.0 Language - Replace const eval limit by a lint and add an exponential backoff warning - expand: Change how #![cfg(FALSE)] behaves on crate root - Stabilize inline asm for LoongArch64 - Uplift clippy::undropped_manually_drops lint - Uplift clippy::invalid_utf8_in_unchecked lint as invalid_from_utf8_unchecked and invalid_from_utf8 - Uplift clippy::cast_ref_to_mut lint as invalid_reference_casting - Uplift clippy::cmp_nan lint as invalid_nan_comparisons - resolve: Remove artificial import ambiguity errors - Don’t require associated types with Self: Sized bounds in dyn Trait objects Compiler - Remember names of cfg-ed out items to mention them in diagnostics - Support for native WASM exceptions - Add support for NetBSD/aarch64-be (big-endian arm64). - Write to stdout if - is given as output file - Force all native libraries to be statically linked when linking a static binary - Add Tier 3 support for loongarch64-unknown-none* - Prevent .eh_frame from being emitted for -C panic=abort - Support 128-bit enum variant in debuginfo codegen - compiler: update solaris/illumos to enable tsan support. Refer to Rust’s platform support page, platform-support-doc for more information on Rust’s tiered platform support. Libraries - Document memory orderings of thread::{park, unpark} - io: soften ‘at most one write attempt’ requirement in io::Write::write - Specify behavior of HashSet::insert - Relax implicit T: Sized bounds on BufReader, BufWriter and LineWriter - Update runtime guarantee for select_nth_unstable - Return Ok on kill if process has already exited - Implement PartialOrd for Vecs over different allocators - Use 128 bits for TypeId hash - Don’t drain-on-drop in DrainFilter impls of various collections. - Make {Arc,Rc,Weak}::ptr_eq ignore pointer metadata Rustdoc - Allow whitespace as path separator like double colon - Add search result item types after their name - Search for slices and arrays by type with [] - Clean up type unification and “unboxing” Stabilized APIs impl Sync for mpsc::Sender impl TryFrom<&OsStr> for &str String::leak These APIs are now stable in const contexts: CStr::from_bytes_with_nul CStr::to_bytes CStr::to_bytes_with_nul CStr::to_str Cargo - Enable -Zdoctest-in-workspace by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. docs #12221 #12288 - Add support of the “default” keyword to reset previously set build.jobs parallelism back to the default. #12222 Compatibility Notes - Alter Display for Ipv6Addr for IPv4-compatible addresses - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren’t allowed on crates.io, so this should only impact users of other registries, or people who don’t publish to a registry. #12291 - Demoted mips*-unknown-linux-gnu* targets from host tier 2 to target tier 3 support. @ text @@ 1.12 log @lang/rust: update to 1.71.1 Packaged by he@@ and adam@@ in wip Merge request by gdt@@ v1.71.1 - Fix CVE-2023-38497: Cargo did not respect the umask when extracting dependencies - Fix bash completion for users of Rustup - Do not show suspicious_double_ref_op lint when calling borrow() - Fix ICE: substitute types before checking inlining compatibility - Fix ICE: don't use can_eq in derive(..) suggestion for missing method - Fix building Rust 1.71.0 from the source tarball v1.71.0 Language - Stabilize raw-dylib, link_ordinal, import_name_type and -Cdlltool. - Uplift clippy::{drop,forget}_{ref,copy} lints. - Type inference is more conservative around constrained vars. - Use fulfillment to check Drop impl compatibility Compiler - Evaluate place expression in PlaceMention, making let _ = patterns more consistent with respect to the borrow checker. - Add --print deployment-target flag for Apple targets. - Stabilize extern "C-unwind" and friends. The existing extern "C" etc. may change behavior for cross-language unwinding in a future release. - Update the version of musl used on *-linux-musl targets to 1.2.3, enabling time64 on 32-bit systems. - Stabilize debugger_visualizer for embedding metadata like Microsoft's Natvis. - Enable flatten-format-args by default. - Make Self respect tuple constructor privacy. - Improve niche placement by trying two strategies and picking the better result. - Use apple-m1 as the target CPU for aarch64-apple-darwin. - Add Tier 3 support for the x86_64h-apple-darwin target. - Promote loongarch64-unknown-linux-gnu to Tier 2 with host tools. Refer to Rust's platform support page for more information on Rust's tiered platform support. Libraries - Rework handling of recursive panics. Additional panics are allowed while unwinding, as long as they are caught before escaping a Drop implementation, but panicking within a panic hook is now an immediate abort. - Loosen From<&[T]> for Box<[T]> bound to T: Clone. - Remove unnecessary T: Send bound in Error for mpsc::SendError and TrySendError. - Fix docs for alloc::realloc to match Layout requirements that the size must not exceed isize::MAX. - Document const {} syntax for std::thread_local. This syntax was stabilized in Rust 1.59, but not previously mentioned in release notes. Stabilized APIs CStr::is_empty BuildHasher::hash_one NonZeroI*::is_positive NonZeroI*::is_negative NonZeroI*::checked_neg NonZeroI*::overflowing_neg NonZeroI*::saturating_neg NonZeroI*::wrapping_neg Neg for NonZeroI* Neg for &NonZeroI* From<[T; N]> for (T...) (array to N-tuple for N in 1..=12) From<(T...)> for [T; N] (N-tuple to array for N in 1..=12) windows::io::AsHandle for Box windows::io::AsHandle for Rc windows::io::AsHandle for Arc windows::io::AsSocket for Box windows::io::AsSocket for Rc windows::io::AsSocket for Arc These APIs are now stable in const contexts: <*const T>::read <*const T>::read_unaligned <*mut T>::read <*mut T>::read_unaligned ptr::read ptr::read_unaligned <[T]>::split_at Cargo - Allow named debuginfo options in Cargo.toml. - Add workspace_default_members to the output of cargo metadata. - Automatically inherit workspace fields when running cargo new/cargo init. Rustdoc - Add a new rustdoc::unescaped_backticks lint for broken inline code. - Support strikethrough with single tildes. (~~old~~ vs. ~new~) Compatibility Notes - Remove structural match from TypeId. Code that uses a constant TypeId in a pattern will potentially be broken. Known cases have already been fixed -- in particular, users of the log crate's kv_unstable feature should update to log v0.4.18 or later. - Add a sysroot crate to represent the standard library crates. This does not affect stable users, but may require adjustment in tools that build their own standard library. - Cargo optimizes its usage under rustup. When Cargo detects it will run rustc pointing to a rustup proxy, it'll try bypassing the proxy and use the underlying binary directly. There are assumptions around the interaction with rustup and RUSTUP_TOOLCHAIN. However, it's not expected to affect normal users. - When querying a package, Cargo tries only the original name, all hyphens, and all underscores to handle misspellings. Previously, Cargo tried each combination of hyphens and underscores, causing excessive requests to crates.io. - Cargo now disallows RUSTUP_HOME and RUSTUP_TOOLCHAIN in the [env] configuration table. This is considered to be not a use case Cargo would like to support, since it will likely cause problems or lead to confusion. 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. @ text @@ 1.11 log @rust: Upgrade to version 1.66.1. Pkgsrc changes: * pkglint cleanups, bump bootstrap kits to 1.65.0. * New target: mipsel-unknown-netbsd, for cpu=mips32 with soft-float. * Managed to retain the build of aarch64_be, llvm needed a patch to avoid use of neon instructions in the BE case (llvm doesn't support use of neon in BE mode). Ref. patch to src/llvm-project/llvm/lib/Support/BLAKE3/blake3_impl.h. Also submitted upstream of LLVM to the BLAKE3 maintainers. * The minimum gcc version is now 7.x, and that includes the cross-compiler for the targets. For i386 this also needs to /usr/include/gcc-7 include files in the target root, because immintrin.h from gcc 5 is not compatible with gcc 7.x. This applies for the targets where we build against a root from netbsd-8 (sparc64, powerpc, i386), and files/gcc-wrap gets a hack for this. * Pick up tweak for -latomic inclusion from https://github.com/rust-lang/rust/issues/104220 and https://github.com/rust-lang/rust/pull/104572 * Retain ability to do 32-bit NetBSD, by changing from 64 to 32 bit types in library/std/src/sys/unix/thread_parker/netbsd.rs. * I've tried to get the "openssl-src" build with -latomic where it's needed. I've introduced the "NetBSD-generic32" system type and use it for the NetBSD mipsel target. There is another attempt to do the same in the patch to vendor/openssl-sys/build/main.rs. Upstream changes: Version 1.66.1 (2023-01-10) =========================== - Added validation of SSH host keys for git URLs in Cargo ([CVE-2022-46176](https://www.cve.org/CVERecord?id=CVE-2022-46176)) Version 1.66.0 (2022-12-15) =========================== Language -------- - [Permit specifying explicit discriminants on all `repr(Int)` enums](https://github.com/rust-lang/rust/pull/95710/) ```rust #[repr(u8)] enum Foo { A(u8) = 0, B(i8) = 1, C(bool) = 42, } ``` - [Allow transmutes between the same type differing only in lifetimes](https://github.com/rust-lang/rust/pull/101520/) - [Change constant evaluation errors from a deny-by-default lint to a hard error](https://github.com/rust-lang/rust/pull/102091/) - [Trigger `must_use` on `impl Trait` for supertraits](https://github.com/rust-lang/rust/pull/102287/) This makes `impl ExactSizeIterator` respect the existing `#[must_use]` annotation on `Iterator`. - [Allow `..X` and `..=X` in patterns](https://github.com/rust-lang/rust/pull/102275/) - [Uplift `clippy::for_loops_over_fallibles` lint into rustc](https://github.com/rust-lang/rust/pull/99696/) - [Stabilize `sym` operands in inline assembly](https://github.com/rust-lang/rust/pull/103168/) - [Update to Unicode 15](https://github.com/rust-lang/rust/pull/101912/) - [Opaque types no longer imply lifetime bounds](https://github.com/rust-lang/rust/pull/95474/) This is a soundness fix which may break code that was erroneously relying on this behavior. Compiler -------- - [Add armv5te-none-eabi and thumbv5te-none-eabi tier 3 targets](https://github.com/rust-lang/rust/pull/101329/) - Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. - [Add support for linking against macOS universal libraries](https://github.com/rust-lang/rust/pull/98736) Libraries --------- - [Fix `#[derive(Default)]` on a generic `#[default]` enum adding unnecessary `Default` bounds](https://github.com/rust-lang/rust/pull/101040/) - [Update to Unicode 15](https://github.com/rust-lang/rust/pull/101821/) Stabilized APIs --------------- - [`proc_macro::Span::source_text`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.source_text) - [`uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}`](https://doc.rust-lang.org/stable/std/primitive.u8.html#method.checked_add_signed) - [`iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_add_unsigned) - [`iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_sub_unsigned) - [`BTreeSet::{first, last, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.first) - [`BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.first_key_value) - [Add `AsFd` implementations for stdio lock types on WASI.](https://github.com/rust-lang/rust/pull/101768/) - [`impl TryFrom> for Box<[T; N]>`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#impl-TryFrom%3CVec%3CT%2C%20Global%3E%3E-for-Box%3C%5BT%3B%20N%5D%2C%20Global%3E) - [`core::hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html) - [`Duration::try_from_secs_{f32,f64}`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.try_from_secs_f32) - [`Option::unzip`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.unzip) - [`std::os::fd`](https://doc.rust-lang.org/stable/std/os/fd/index.html) Rustdoc ------- - [Add Rustdoc warning for invalid HTML tags in the documentation](https://github.com/rust-lang/rust/pull/101720/) Cargo ----- - [Added `cargo remove` to remove dependencies from Cargo.toml](https://doc.rust-lang.org/nightly/cargo/commands/cargo-remove.html) - [`cargo publish` now waits for the new version to be downloadable before exiting](https://github.com/rust-lang/cargo/pull/11062) See [detailed release notes](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-166-2022-12-15) for more. Compatibility Notes ------------------- - [Only apply `ProceduralMasquerade` hack to older versions of `rental`](https://github.com/rust-lang/rust/pull/94063/) - [Don't export `__heap_base` and `__data_end` on wasm32-wasi.](https://github.com/rust-lang/rust/pull/102385/) - [Don't export `__wasm_init_memory` on WebAssembly.](https://github.com/rust-lang/rust/pull/102426/) - [Only export `__tls_*` on wasm32-unknown-unknown.](https://github.com/rust-lang/rust/pull/102440/) - [Don't link to `libresolv` in libstd on Darwin](https://github.com/rust-lang/rust/pull/102766/) - [Update libstd's libc to 0.2.135 (to make `libstd` no longer pull in `libiconv.dylib` on Darwin)](https://github.com/rust-lang/rust/pull/103277/) - [Opaque types no longer imply lifetime bounds](https://github.com/rust-lang/rust/pull/95474/) This is a soundness fix which may break code that was erroneously relying on this behavior. - [Make `order_dependent_trait_objects` show up in future-breakage reports](https://github.com/rust-lang/rust/pull/102635/) - [Change std::process::Command spawning to default to inheriting the parent's signal mask](https://github.com/rust-lang/rust/pull/101077/) 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. - [Enable BOLT for LLVM compilation](https://github.com/rust-lang/rust/pull/94381/) - [Enable LTO for rustc_driver.so](https://github.com/rust-lang/rust/pull/101403/) Version 1.65.0 (2022-11-03) ========================== Language -------- - [Error on `as` casts of enums with `#[non_exhaustive]` variants] (https://github.com/rust-lang/rust/pull/92744/) - [Stabilize `let else`](https://github.com/rust-lang/rust/pull/93628/) - [Stabilize generic associated types (GATs)] (https://github.com/rust-lang/rust/pull/96709/) - [Add lints `let_underscore_drop`, `let_underscore_lock`, and `let_underscore_must_use` from Clippy] (https://github.com/rust-lang/rust/pull/97739/) - [Stabilize `break`ing from arbitrary labeled blocks ("label-break-value")] (https://github.com/rust-lang/rust/pull/99332/) - [Uninitialized integers, floats, and raw pointers are now considered immediate UB](https://github.com/rust-lang/rust/pull/98919/). Usage of `MaybeUninit` is the correct way to work with uninitialized memory. - [Stabilize raw-dylib for Windows x86_64, aarch64, and thumbv7a] (https://github.com/rust-lang/rust/pull/99916/) - [Do not allow `Drop` impl on foreign ADTs] (https://github.com/rust-lang/rust/pull/99576/) Compiler -------- - [Stabilize -Csplit-debuginfo on Linux] (https://github.com/rust-lang/rust/pull/98051/) - [Use niche-filling optimization even when multiple variants have data] (https://github.com/rust-lang/rust/pull/94075/) - [Associated type projections are now verified to be well-formed prior to resolving the underlying type] (https://github.com/rust-lang/rust/pull/99217/#issuecomment-1209365630) - [Stringify non-shorthand visibility correctly] (https://github.com/rust-lang/rust/pull/100350/) - [Normalize struct field types when unsizing] (https://github.com/rust-lang/rust/pull/101831/) - [Update to LLVM 15](https://github.com/rust-lang/rust/pull/99464/) - [Fix aarch64 call abi to correctly zeroext when needed] (https://github.com/rust-lang/rust/pull/97800/) - [debuginfo: Generalize C++-like encoding for enums] (https://github.com/rust-lang/rust/pull/98393/) - [Add `special_module_name` lint] (https://github.com/rust-lang/rust/pull/94467/) - [Add support for generating unique profraw files by default when using `-C instrument-coverage`] (https://github.com/rust-lang/rust/pull/100384/) - [Allow dynamic linking for iOS/tvOS targets] (https://github.com/rust-lang/rust/pull/100636/) New targets: - [Add armv4t-none-eabi as a tier 3 target] (https://github.com/rust-lang/rust/pull/100244/) - [Add powerpc64-unknown-openbsd and riscv64-unknown-openbsd as tier 3 targets] (https://github.com/rust-lang/rust/pull/101025/) - Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Don't generate `PartialEq::ne` in derive(PartialEq)] (https://github.com/rust-lang/rust/pull/98655/) - [Windows RNG: Use `BCRYPT_RNG_ALG_HANDLE` by default] (https://github.com/rust-lang/rust/pull/101325/) - [Forbid mixing `System` with direct system allocator calls] (https://github.com/rust-lang/rust/pull/101394/) - [Document no support for writing to non-blocking stdio/stderr] (https://github.com/rust-lang/rust/pull/101416/) - [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://github.com/rust-lang/rust/pull/95295) This also changes the safety conditions on `Layout::from_size_align_unchecked`. Stabilized APIs --------------- - [`std::backtrace::Backtrace`] (https://doc.rust-lang.org/stable/std/backtrace/struct.Backtrace.html) - [`Bound::as_ref`] (https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.as_ref) - [`std::io::read_to_string`] (https://doc.rust-lang.org/stable/std/io/fn.read_to_string.html) - [`<*const T>::cast_mut`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_mut) - [`<*mut T>::cast_const`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_const) These APIs are now stable in const contexts: - [`<*const T>::offset_from`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from) - [`<*mut T>::offset_from`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from) Cargo ----- - [Apply GitHub fast path even for partial hashes] (https://github.com/rust-lang/cargo/pull/10807/) - [Do not add home bin path to PATH if it's already there] (https://github.com/rust-lang/cargo/pull/11023/) - [Take priority into account within the pending queue] (https://github.com/rust-lang/cargo/pull/11032/). This slightly optimizes job scheduling by Cargo, with typically small improvements on larger crate graph builds. Compatibility Notes ------------------- - [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`] (https://github.com/rust-lang/rust/pull/95295). This also changes the safety conditions on `Layout::from_size_align_unchecked`. - [`PollFn` now only implements `Unpin` if the closure is `Unpin`] (https://github.com/rust-lang/rust/pull/102737). This is a possible breaking change if users were relying on the blanket unpin implementation. See discussion on the PR for details of why this change was made. - [Drop ExactSizeIterator impl from std::char::EscapeAscii] (https://github.com/rust-lang/rust/pull/99880) This is a backwards-incompatible change to the standard library's surface area, but is unlikely to affect real world usage. - [Do not consider a single repeated lifetime eligible for elision in the return type] (https://github.com/rust-lang/rust/pull/103450) This behavior was unintentionally changed in 1.64.0, and this release reverts that change by making this an error again. - [Reenable disabled early syntax gates as future-incompatibility lints] (https://github.com/rust-lang/rust/pull/99935/) - [Update the minimum external LLVM to 13] (https://github.com/rust-lang/rust/pull/100460/) - [Don't duplicate file descriptors into stdio fds] (https://github.com/rust-lang/rust/pull/101426/) - [Sunset RLS](https://github.com/rust-lang/rust/pull/100863/) - [Deny usage of `#![cfg_attr(..., crate_type = ...)]` to set the crate type] (https://github.com/rust-lang/rust/pull/99784/) This strengthens the forward compatibility lint deprecated_cfg_attr_crate_type_name to deny. - [`llvm-has-rust-patches` allows setting the build system to treat the LLVM as having Rust-specific patches] (https://github.com/rust-lang/rust/pull/101072) This option may need to be set for distributions that are building Rust with a patched LLVM via `llvm-config`, not the built-in LLVM. 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. - [Add `x.sh` and `x.ps1` shell scripts] (https://github.com/rust-lang/rust/pull/99992/) - [compiletest: use target cfg instead of hard-coded tables] (https://github.com/rust-lang/rust/pull/100260/) - [Use object instead of LLVM for reading bitcode from rlibs] (https://github.com/rust-lang/rust/pull/98100/) - [Enable MIR inlining for optimized compilations] (https://github.com/rust-lang/rust/pull/91743) This provides a 3-10% improvement in compiletimes for real world crates. See [perf results] (https://perf.rust-lang.org/compare.html?start=aedf78e56b2279cc869962feac5153b6ba7001ed&end=0075bb4fad68e64b6d1be06bf2db366c30bc75e1&stat=instructions:u). @ text @@ 1.10 log @rust: update to version 1.64.0. 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 AsRawFd for {Arc,Box}`] (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/) @ text @@ 1.9 log @lang/rust: update to version 1.60.0. Pkgsrc changes: * Bump available bootstraps to 1.59.0. * Adjust line number in patches which had non-zero offsets. Upstream changes: Version 1.60.0 (2022-04-07) =========================== Language -------- - [Stabilize `#[cfg(panic = "...")]` for either `"unwind"` or `"abort"`.] [93658] - [Stabilize `#[cfg(target_has_atomic = "...")]` for each integer size and `"ptr"`.][93824] Compiler -------- - [Enable combining `+crt-static` and `relocation-model=pic` on `x86_64-unknown-linux-gnu`][86374] - [Fixes wrong `unreachable_pub` lints on nested and glob public reexport][87487] - [Stabilize `-Z instrument-coverage` as `-C instrument-coverage`][90132] - [Stabilize `-Z print-link-args` as `--print link-args`][91606] - [Add new Tier 3 target `mips64-openwrt-linux-musl`\*][92300] - [Add new Tier 3 target `armv7-unknown-linux-uclibceabi` (softfloat)\*][92383] - [Fix invalid removal of newlines from doc comments][92357] - [Add kernel target for RustyHermit][92670] - [Deny mixing bin crate type with lib crate types][92933] - [Make rustc use `RUST_BACKTRACE=full` by default][93566] - [Upgrade to LLVM 14][93577] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Guarantee call order for `sort_by_cached_key`][89621] - [Improve `Duration::try_from_secs_f32`/`f64` accuracy by directly processing exponent and mantissa][90247] - [Make `Instant::{duration_since, elapsed, sub}` saturating][89926] - [Remove non-monotonic clocks workarounds in `Instant::now`][89926] - [Make `BuildHasherDefault`, `iter::Empty` and `future::Pending` covariant][92630] Stabilized APIs --------------- - [`Arc::new_cyclic`][arc_new_cyclic] - [`Rc::new_cyclic`][rc_new_cyclic] - [`slice::EscapeAscii`][slice_escape_ascii] - [`<[u8]>::escape_ascii`][slice_u8_escape_ascii] - [`u8::escape_ascii`][u8_escape_ascii] - [`Vec::spare_capacity_mut`][vec_spare_capacity_mut] - [`MaybeUninit::assume_init_drop`][assume_init_drop] - [`MaybeUninit::assume_init_read`][assume_init_read] - [`i8::abs_diff`][i8_abs_diff] - [`i16::abs_diff`][i16_abs_diff] - [`i32::abs_diff`][i32_abs_diff] - [`i64::abs_diff`][i64_abs_diff] - [`i128::abs_diff`][i128_abs_diff] - [`isize::abs_diff`][isize_abs_diff] - [`u8::abs_diff`][u8_abs_diff] - [`u16::abs_diff`][u16_abs_diff] - [`u32::abs_diff`][u32_abs_diff] - [`u64::abs_diff`][u64_abs_diff] - [`u128::abs_diff`][u128_abs_diff] - [`usize::abs_diff`][usize_abs_diff] - [`Display for io::ErrorKind`][display_error_kind] - [`From for ExitCode`][from_u8_exit_code] - [`Not for !` (the "never" type)][not_never] - [_Op_`Assign<$t> for Wrapping<$t>`][wrapping_assign_ops] - [`arch::is_aarch64_feature_detected!`][is_aarch64_feature_detected] Cargo ----- - [Port cargo from `toml-rs` to `toml_edit`][cargo/10086] - [Stabilize `-Ztimings` as `--timings`][cargo/10245] - [Stabilize namespaced and weak dependency features.][cargo/10269] - [Accept more `cargo:rustc-link-arg-*` types from build script output.][cargo/10274] - [cargo-new should not add ignore rule on Cargo.lock inside subdirs][cargo/10379] Misc ---- - [Ship docs on Tier 2 platforms by reusing the closest Tier 1 platform docs][92800] - [Drop rustc-docs from complete profile][93742] - [bootstrap: tidy up flag handling for llvm build][93918] Compatibility Notes ------------------- - [Remove compiler-rt linking hack on Android][83822] - [Mitigations for platforms with non-monotonic clocks have been removed from `Instant::now`][89926]. On platforms that don't provide monotonic clocks, an instant is not guaranteed to be greater than an earlier instant anymore. - [`Instant::{duration_since, elapsed, sub}` do not panic anymore on underflow, saturating to `0` instead][89926]. In the real world the panic happened mostly on platforms with buggy monotonic clock implementations rather than catching programming errors like reversing the start and end times. Such programming errors will now results in `0` rather than a panic. - In a future release we're planning to increase the baseline requirements for the Linux kernel to version 3.2, and for glibc to version 2.17. We'd love your feedback in [PR #95026][95026]. Internal Changes ---------------- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - [Switch all libraries to the 2021 edition][92068] [83822]: https://github.com/rust-lang/rust/pull/83822 [86374]: https://github.com/rust-lang/rust/pull/86374 [87487]: https://github.com/rust-lang/rust/pull/87487 [89621]: https://github.com/rust-lang/rust/pull/89621 [89926]: https://github.com/rust-lang/rust/pull/89926 [90132]: https://github.com/rust-lang/rust/pull/90132 [90247]: https://github.com/rust-lang/rust/pull/90247 [91606]: https://github.com/rust-lang/rust/pull/91606 [92068]: https://github.com/rust-lang/rust/pull/92068 [92300]: https://github.com/rust-lang/rust/pull/92300 [92357]: https://github.com/rust-lang/rust/pull/92357 [92383]: https://github.com/rust-lang/rust/pull/92383 [92630]: https://github.com/rust-lang/rust/pull/92630 [92670]: https://github.com/rust-lang/rust/pull/92670 [92800]: https://github.com/rust-lang/rust/pull/92800 [92933]: https://github.com/rust-lang/rust/pull/92933 [93566]: https://github.com/rust-lang/rust/pull/93566 [93577]: https://github.com/rust-lang/rust/pull/93577 [93658]: https://github.com/rust-lang/rust/pull/93658 [93742]: https://github.com/rust-lang/rust/pull/93742 [93824]: https://github.com/rust-lang/rust/pull/93824 [93918]: https://github.com/rust-lang/rust/pull/93918 [95026]: https://github.com/rust-lang/rust/pull/95026 [cargo/10086]: https://github.com/rust-lang/cargo/pull/10086 [cargo/10245]: https://github.com/rust-lang/cargo/pull/10245 [cargo/10269]: https://github.com/rust-lang/cargo/pull/10269 [cargo/10274]: https://github.com/rust-lang/cargo/pull/10274 [cargo/10379]: https://github.com/rust-lang/cargo/pull/10379 [arc_new_cyclic]: https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_cyclic [rc_new_cyclic]: https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_cyclic [slice_escape_ascii]: https://doc.rust-lang.org/stable/std/slice/struct.EscapeAscii.html [slice_u8_escape_ascii]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.escape_ascii [u8_escape_ascii]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.escape_ascii [vec_spare_capacity_mut]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.spare_capacity_mut [assume_init_drop]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_drop [assume_init_read]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_read [i8_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.abs_diff [i16_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.abs_diff [i32_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i32.html#method.abs_diff [i64_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i64.html#method.abs_diff [i128_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.abs_diff [isize_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.abs_diff [u8_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.abs_diff [u16_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.abs_diff [u32_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u32.html#method.abs_diff [u64_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u64.html#method.abs_diff [u128_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.abs_diff [usize_abs_diff]: https://doc.rust-lang.org/stable/std/primitive.usize.html#method.abs_diff [display_error_kind]: https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#impl-Display [from_u8_exit_code]: https://doc.rust-lang.org/stable/std/process/struct.ExitCode.html#impl-From%3Cu8%3E [not_never]: https://doc.rust-lang.org/stable/std/primitive.never.html#impl-Not [wrapping_assign_ops]: https://doc.rust-lang.org/stable/std/num/struct.Wrapping.html#trait-implementations [is_aarch64_feature_detected]: https://doc.rust-lang.org/stable/std/arch/macro.is_aarch64_feature_detected.html @ text @d1 1 a1 1 $NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.8 2022/03/01 16:06:39 he Exp $ d7 1 a7 1 @@@@ -1025,11 +1025,6 @@@@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) @ 1.8 log @Update lang/rust to version 1.58.1. Pkgsrc changes: * Bump bootstrap kit version to 1.57.0. * Bump require external LLVM to 12.0, according to upstream change log. * Adjust patches as needed, adjust line numbers. * Update checksum adjustments. For some reason the vendor/libc checksum doesn't need fixing, apparently, it remains as commented out. * Add makefile to do all the NetBSD boostrap/cross builds (do-cross.mk). Allow passing in additions to CONFIGURE_ARGS via ADD_CONFIGURE_ARGS. Upstream changes: Version 1.58.1 (2022-01-19) =========================== * Fix race condition in `std::fs::remove_dir_all` ([CVE-2022-21658]) * [Handle captured arguments in the `useless_format` Clippy lint][clippy/8295] * [Move `non_send_fields_in_send_ty` Clippy lint to nursery][clippy/8075] * [Fix wrong error message displayed when some imports are missing][91254] * [Fix rustfmt not formatting generated files from stdin][92912] [CVE-2022-21658]: https://www.cve.org/CVERecord?id=CVE-2022-21658] [91254]: https://github.com/rust-lang/rust/pull/91254 [92912]: https://github.com/rust-lang/rust/pull/92912 [clippy/8075]: https://github.com/rust-lang/rust-clippy/pull/8075 [clippy/8295]: https://github.com/rust-lang/rust-clippy/pull/8295 Version 1.58.0 (2022-01-13) ========================== Language -------- - [Format strings can now capture arguments simply by writing `{ident}` in the string.][90473] This works in all macros accepting format strings. Support for this in `panic!` (`panic!("{ident}")`) requires the 2021 edition; panic invocations in previous editions that appear to be trying to use this will result in a warning lint about not having the intended effect. - [`*const T` pointers can now be dereferenced in const contexts.][89551] - [The rules for when a generic struct implements `Unsize` have been relaxed.][90417] Compiler -------- - [Add LLVM CFI support to the Rust compiler][89652] - [Stabilize -Z strip as -C strip][90058]. Note that while release builds already don't add debug symbols for the code you compile, the compiled standard library that ships with Rust includes debug symbols, so you may want to use the `strip` option to remove these symbols to produce smaller release binaries. Note that this release only includes support in rustc, not directly in cargo. - [Add support for LLVM coverage mapping format versions 5 and 6][91207] - [Emit LLVM optimization remarks when enabled with `-Cremark`][90833] - [Update the minimum external LLVM to 12][90175] - [Add `x86_64-unknown-none` at Tier 3*][89062] - [Build musl dist artifacts with debuginfo enabled][90733]. When building release binaries using musl, you may want to use the newly stabilized strip option to remove these debug symbols, reducing the size of your binaries. - [Don't abort compilation after giving a lint error][87337] - [Error messages point at the source of trait bound obligations in more places][89580] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [All remaining functions in the standard library have `#[must_use]` annotations where appropriate][89692], producing a warning when ignoring their return value. This helps catch mistakes such as expecting a function to mutate a value in place rather than return a new value. - [Paths are automatically canonicalized on Windows for operations that support it][89174] - [Re-enable debug checks for `copy` and `copy_nonoverlapping`][90041] - [Implement `RefUnwindSafe` for `Rc`][87467] - [Make RSplit: Clone not require T: Clone][90117] - [Implement `Termination` for `Result`][88601]. This allows writing `fn main() -> Result`, for a program whose successful exits never involve returning from `main` (for instance, a program that calls `exit`, or that uses `exec` to run another program). Stabilized APIs --------------- - [`Metadata::is_symlink`] - [`Path::is_symlink`] - [`{integer}::saturating_div`] - [`Option::unwrap_unchecked`] - [`Result::unwrap_unchecked`] - [`Result::unwrap_err_unchecked`] - [`NonZero{unsigned}::is_power_of_two`] - [`File::options`] These APIs are now usable in const contexts: - [`Duration::new`] - [`Duration::checked_add`] - [`Duration::saturating_add`] - [`Duration::checked_sub`] - [`Duration::saturating_sub`] - [`Duration::checked_mul`] - [`Duration::saturating_mul`] - [`Duration::checked_div`] - [`MaybeUninit::as_ptr`] - [`MaybeUninit::as_mut_ptr`] - [`MaybeUninit::assume_init`] - [`MaybeUninit::assume_init_ref`] Cargo ----- - [Add --message-format for install command][cargo/10107] - [Warn when alias shadows external subcommand][cargo/10082] Rustdoc ------- - [Show all Deref implementations recursively in rustdoc][90183] - [Use computed visibility in rustdoc][88447] Compatibility Notes ------------------- - [Try all stable method candidates first before trying unstable ones][90329]. This change ensures that adding new nightly-only methods to the Rust standard library will not break code invoking methods of the same name from traits outside the standard library. - Windows: [`std::process::Command` will no longer search the current directory for executables.][87704] - [All proc-macro backward-compatibility lints are now deny-by-default.][88041] - [proc_macro: Append .0 to unsuffixed float if it would otherwise become int token][90297] - [Refactor weak symbols in std::sys::unix][90846]. This optimizes accesses to glibc functions, by avoiding the use of dlopen. This does not increase the [minimum expected version of glibc](https://doc.rust-lang.org/nightly/rustc/platform-support.html). However, software distributions that use symbol versions to detect library dependencies, and which take weak symbols into account in that analysis, may detect rust binaries as requiring newer versions of glibc. - [rustdoc now rejects some unexpected semicolons in doctests][91026] Internal Changes ---------------- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - [Implement coherence checks for negative trait impls][90104] - [Add rustc lint, warning when iterating over hashmaps][89558] - [Optimize live point computation][90491] - [Enable verification for 1/32nd of queries loaded from disk][90361] - [Implement version of normalize_erasing_regions that allows for normalization failure][91255] [87337]: https://github.com/rust-lang/rust/pull/87337/ [87467]: https://github.com/rust-lang/rust/pull/87467/ [87704]: https://github.com/rust-lang/rust/pull/87704/ [88041]: https://github.com/rust-lang/rust/pull/88041/ [88300]: https://github.com/rust-lang/rust/pull/88300/ [88447]: https://github.com/rust-lang/rust/pull/88447/ [88601]: https://github.com/rust-lang/rust/pull/88601/ [88624]: https://github.com/rust-lang/rust/pull/88624/ [89062]: https://github.com/rust-lang/rust/pull/89062/ [89174]: https://github.com/rust-lang/rust/pull/89174/ [89542]: https://github.com/rust-lang/rust/pull/89542/ [89551]: https://github.com/rust-lang/rust/pull/89551/ [89558]: https://github.com/rust-lang/rust/pull/89558/ [89580]: https://github.com/rust-lang/rust/pull/89580/ [89652]: https://github.com/rust-lang/rust/pull/89652/ [89677]: https://github.com/rust-lang/rust/pull/89677/ [89951]: https://github.com/rust-lang/rust/pull/89951/ [90041]: https://github.com/rust-lang/rust/pull/90041/ [90058]: https://github.com/rust-lang/rust/pull/90058/ [90104]: https://github.com/rust-lang/rust/pull/90104/ [90117]: https://github.com/rust-lang/rust/pull/90117/ [90175]: https://github.com/rust-lang/rust/pull/90175/ [90183]: https://github.com/rust-lang/rust/pull/90183/ [90297]: https://github.com/rust-lang/rust/pull/90297/ [90329]: https://github.com/rust-lang/rust/pull/90329/ [90361]: https://github.com/rust-lang/rust/pull/90361/ [90417]: https://github.com/rust-lang/rust/pull/90417/ [90473]: https://github.com/rust-lang/rust/pull/90473/ [90491]: https://github.com/rust-lang/rust/pull/90491/ [90733]: https://github.com/rust-lang/rust/pull/90733/ [90833]: https://github.com/rust-lang/rust/pull/90833/ [90846]: https://github.com/rust-lang/rust/pull/90846/ [90896]: https://github.com/rust-lang/rust/pull/90896/ [91026]: https://github.com/rust-lang/rust/pull/91026/ [91207]: https://github.com/rust-lang/rust/pull/91207/ [91255]: https://github.com/rust-lang/rust/pull/91255/ [91301]: https://github.com/rust-lang/rust/pull/91301/ [cargo/10082]: https://github.com/rust-lang/cargo/pull/10082/ [cargo/10107]: https://github.com/rust-lang/cargo/pull/10107/ [`Metadata::is_symlink`]: https://doc.rust-lang.org/stable/std/fs/struct.Metadata.html#method.is_symlink [`Path::is_symlink`]: https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.is_symlink [`{integer}::saturating_div`]: https://doc.rust-lang.org/stable/std/primitive.i8.html#method.saturating_div [`Option::unwrap_unchecked`]: https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.unwrap_unchecked [`Result::unwrap_unchecked`]: https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.unwrap_unchecked [`Result::unwrap_err_unchecked`]: https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.unwrap_err_unchecked [`NonZero{unsigned}::is_power_of_two`]: https://doc.rust-lang.org/stable/std/num/struct.NonZeroU8.html#method.is_power_of_two [`File::options`]: https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.options [`unix::process::ExitStatusExt::core_dumped`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.core_dumped [`unix::process::ExitStatusExt::stopped_signal`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.stopped_signal [`unix::process::ExitStatusExt::continued`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.continued [`unix::process::ExitStatusExt::into_raw`]: https://doc.rust-lang.org/stable/std/os/unix/process/trait.ExitStatusExt.html#tymethod.into_raw [`Duration::new`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.new [`Duration::checked_add`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_add [`Duration::saturating_add`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.saturating_add [`Duration::checked_sub`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_sub [`Duration::saturating_sub`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.saturating_sub [`Duration::checked_mul`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_mul [`Duration::saturating_mul`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.saturating_mul [`Duration::checked_div`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.checked_div [`Duration::as_secs_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.as_secs_f64 [`Duration::as_secs_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.as_secs_f32 [`Duration::from_secs_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_secs_f64 [`Duration::from_secs_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.from_secs_f32 [`Duration::mul_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.mul_f64 [`Duration::mul_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.mul_f32 [`Duration::div_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_f64 [`Duration::div_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_f32 [`Duration::div_duration_f64`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_duration_f64 [`Duration::div_duration_f32`]: https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_duration_f32 [`MaybeUninit::as_ptr`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.as_ptr [`MaybeUninit::as_mut_ptr`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.as_mut_ptr [`MaybeUninit::assume_init`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init [`MaybeUninit::assume_init_ref`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_ref @ text @d1 1 a1 1 $NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.1 2019/04/14 12:42:03 he Exp $ d7 1 a7 1 @@@@ -939,11 +939,6 @@@@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) @ 1.7 log @Update lang/rust to version 1.57.0. Pkgsrc changes: * Adjust line numbers in a number of patches * remove the --disable-dist-src option, so that we produce the rust-src rust component, which we upload to LOCALSRC to allow the rust-src package to build, which is needed for rust-analyzer. * Cargo checksum for vendor/cc no longer needs patching; checksum for vendor/libc updated Upstream changes: Version 1.57.0 (2021-12-02) ========================== Language -------- - [Macro attributes may follow `#[derive]` and will see the original (pre-`cfg`) input.][87220] - [Accept curly-brace macros in expressions, like `m!{ .. }.method()` and `m!{ .. }?`.][88690] - [Allow panicking in constant evaluation.][89508] Compiler -------- - [Create more accurate debuginfo for vtables.][89597] - [Add `armv6k-nintendo-3ds` at Tier 3\*.][88529] - [Add `armv7-unknown-linux-uclibceabihf` at Tier 3\*.][88952] - [Add `m68k-unknown-linux-gnu` at Tier 3\*.][88321] - [Add SOLID targets at Tier 3\*:][86191] `aarch64-kmc-solid_asp3`, `armv7a-kmc-solid_asp3-eabi`, `armv7a-kmc-solid_asp3-eabihf` \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Avoid allocations and copying in `Vec::leak`][89337] - [Add `#[repr(i8)]` to `Ordering`][89507] - [Optimize `File::read_to_end` and `read_to_string`][89582] - [Update to Unicode 14.0][89614] - [Many more functions are marked `#[must_use]`][89692], producing a warning when ignoring their return value. This helps catch mistakes such as expecting a function to mutate a value in place rather than return a new value. Stabilised APIs --------------- - [`[T; N]::as_mut_slice`][`array::as_mut_slice`] - [`[T; N]::as_slice`][`array::as_slice`] - [`collections::TryReserveError`] - [`HashMap::try_reserve`] - [`HashSet::try_reserve`] - [`String::try_reserve`] - [`String::try_reserve_exact`] - [`Vec::try_reserve`] - [`Vec::try_reserve_exact`] - [`VecDeque::try_reserve`] - [`VecDeque::try_reserve_exact`] - [`Iterator::map_while`] - [`iter::MapWhile`] - [`proc_macro::is_available`] - [`Command::get_program`] - [`Command::get_args`] - [`Command::get_envs`] - [`Command::get_current_dir`] - [`CommandArgs`] - [`CommandEnvs`] These APIs are now usable in const contexts: - [`hint::unreachable_unchecked`] Cargo ----- - [Stabilize custom profiles][cargo/9943] Compatibility notes ------------------- Internal changes ---------------- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - [Added an experimental backend for codegen with `libgccjit`.][87260] [86191]: https://github.com/rust-lang/rust/pull/86191/ [87220]: https://github.com/rust-lang/rust/pull/87220/ [87260]: https://github.com/rust-lang/rust/pull/87260/ [88243]: https://github.com/rust-lang/rust/pull/88243/ [88321]: https://github.com/rust-lang/rust/pull/88321/ [88529]: https://github.com/rust-lang/rust/pull/88529/ [88690]: https://github.com/rust-lang/rust/pull/88690/ [88952]: https://github.com/rust-lang/rust/pull/88952/ [89337]: https://github.com/rust-lang/rust/pull/89337/ [89507]: https://github.com/rust-lang/rust/pull/89507/ [89508]: https://github.com/rust-lang/rust/pull/89508/ [89582]: https://github.com/rust-lang/rust/pull/89582/ [89597]: https://github.com/rust-lang/rust/pull/89597/ [89614]: https://github.com/rust-lang/rust/pull/89614/ [89692]: https://github.com/rust-lang/rust/issues/89692/ [cargo/9943]: https://github.com/rust-lang/cargo/pull/9943/ [`array::as_mut_slice`]: https://doc.rust-lang.org/std/primitive.array.html#method.as_mut_slice [`array::as_slice`]: https://doc.rust-lang.org/std/primitive.array.html#method.as_slice [`collections::TryReserveError`]: https://doc.rust-lang.org/std/collections/struct.TryReserveError.html [`HashMap::try_reserve`]: https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.try_reserve [`HashSet::try_reserve`]: https://doc.rust-lang.org/std/collections/hash_set/struct.HashSet.html#method.try_reserve [`String::try_reserve`]: https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve [`String::try_reserve_exact`]: https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve_exact [`Vec::try_reserve`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve [`Vec::try_reserve_exact`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve_exact [`VecDeque::try_reserve`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve [`VecDeque::try_reserve_exact`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve_exact [`Iterator::map_while`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map_while [`iter::MapWhile`]: https://doc.rust-lang.org/std/iter/struct.MapWhile.html [`proc_macro::is_available`]: https://doc.rust-lang.org/proc_macro/fn.is_available.html [`Command::get_program`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_program [`Command::get_args`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_args [`Command::get_envs`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_envs [`Command::get_current_dir`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.get_current_dir [`CommandArgs`]: https://doc.rust-lang.org/std/process/struct.CommandArgs.html [`CommandEnvs`]: https://doc.rust-lang.org/std/process/struct.CommandEnvs.html @ text @d1 1 a1 1 $NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.6 2021/11/20 16:09:46 he Exp $ d7 1 a7 1 @@@@ -940,11 +940,6 @@@@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) @ 1.6 log @Update lang/rust to version 1.56.1. Pkgsrc changes: * Bump bootstrap kit version to 1.55.0. * Adjust patches as needed, some no longer apply (so removed) * Update checksum adjustments. * Avoid rust-llvm on SunOS * Optionally build docs * Remove reference to closed/old PR#54621 Upstream changes: Version 1.56.1 (2021-11-01) =========================== - New lints to detect the presence of bidirectional-override Unicode codepoints in the compiled source code ([CVE-2021-42574]) [CVE-2021-42574]: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-42574 Version 1.56.0 (2021-10-21) ======================== Language -------- - [The 2021 Edition is now stable.][rust#88100] See [the edition guide][rust-2021-edition-guide] for more details. - [The pattern in `binding @@ pattern` can now also introduce new bindings.] [rust#85305] - [Union field access is permitted in `const fn`.][rust#85769] [rust-2021-edition-guide]: https://doc.rust-lang.org/nightly/edition-guide/rust-2021/index.html Compiler -------- - [Upgrade to LLVM 13.][rust#87570] - [Support memory, address, and thread sanitizers on aarch64-unknown-freebsd.] [rust#88023] - [Allow specifying a deployment target version for all iOS targets][rust#87699] - [Warnings can be forced on with `--force-warn`.][rust#87472] This feature is primarily intended for usage by `cargo fix`, rather than end users. - [Promote `aarch64-apple-ios-sim` to Tier 2\*.][rust#87760] - [Add `powerpc-unknown-freebsd` at Tier 3\*.][rust#87370] - [Add `riscv32imc-esp-espidf` at Tier 3\*.][rust#87666] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Allow writing of incomplete UTF-8 sequences via stdout/stderr on Windows.] [rust#83342] The Windows console still requires valid Unicode, but this change allows splitting a UTF-8 character across multiple write calls. This allows, for instance, programs that just read and write data buffers (e.g. copying a file to stdout) without regard for Unicode or character boundaries. - [Prefer `AtomicU{64,128}` over Mutex for Instant backsliding protection.] [rust#83093] For this use case, atomics scale much better under contention. - [Implement `Extend<(A, B)>` for `(Extend, Extend)`][rust#85835] - [impl Default, Copy, Clone for std::io::Sink and std::io::Empty][rust#86744] - [`impl From<[(K, V); N]>` for all collections.][rust#84111] - [Remove `P: Unpin` bound on impl Future for Pin.][rust#81363] - [Treat invalid environment variable names as non-existent.][rust#86183] Previously, the environment functions would panic if given a variable name with an internal null character or equal sign (`=`). Now, these functions will just treat such names as non-existent variables, since the OS cannot represent the existence of a variable with such a name. Stabilised APIs --------------- - [`std::os::unix::fs::chroot`] - [`UnsafeCell::raw_get`] - [`BufWriter::into_parts`] - [`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`] These APIs were previously stable in `std`, but are now also available in `core`. - [`Vec::shrink_to`] - [`String::shrink_to`] - [`OsString::shrink_to`] - [`PathBuf::shrink_to`] - [`BinaryHeap::shrink_to`] - [`VecDeque::shrink_to`] - [`HashMap::shrink_to`] - [`HashSet::shrink_to`] These APIs are now usable in const contexts: - [`std::mem::transmute`] - [`[T]::first`][`slice::first`] - [`[T]::split_first`][`slice::split_first`] - [`[T]::last`][`slice::last`] - [`[T]::split_last`][`slice::split_last`] Cargo ----- - [Cargo supports specifying a minimum supported Rust version in Cargo.toml.] [`rust-version`] This has no effect at present on dependency version selection. We encourage crates to specify their minimum supported Rust version, and we encourage CI systems that support Rust code to include a crate's specified minimum version in the text matrix for that crate by default. Compatibility notes ------------------- - [Update to new argument parsing rules on Windows.][rust#87580] This adjusts Rust's standard library to match the behavior of the standard libraries for C/C++. The rules have changed slightly over time, and this PR brings us to the latest set of rules (changed in 2008). - [Disallow the aapcs calling convention on aarch64][rust#88399] This was already not supported by LLVM; this change surfaces this lack of support with a better error message. - [Make `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` warn by default][rust#87385] - [Warn when an escaped newline skips multiple lines.][rust#87671] - [Calls to `libc::getpid` / `std::process::id` from `Command::pre_exec` may return different values on glibc <= 2.24.][rust#81825] Rust now invokes the `clone3` system call directly, when available, to use new functionality available via that system call. Older versions of glibc cache the result of `getpid`, and only update that cache when calling glibc's clone/fork functions, so a direct system call bypasses that cache update. glibc 2.25 and newer no longer cache `getpid` for exactly this reason. Internal changes ---------------- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - [LLVM is compiled with PGO in published x86_64-unknown-linux-gnu artifacts.] [rust#88069] This improves the performance of most Rust builds. - [Unify representation of macros in internal data structures.][rust#88019] This change fixes a host of bugs with the handling of macros by the compiler, as well as rustdoc. [`std::os::unix::fs::chroot`]: https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chroot.html [`Iterator::intersperse`]: https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.intersperse [`Iterator::intersperse_with`]: https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.intersperse [`UnsafeCell::raw_get`]: https://doc.rust-lang.org/stable/std/cell/struct.UnsafeCell.html#method.raw_get [`BufWriter::into_parts`]: https://doc.rust-lang.org/stable/std/io/struct.BufWriter.html#method.into_parts [`core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}`]: https://github.com/rust-lang/rust/pull/84662 [`Vec::shrink_to`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.shrink_to [`String::shrink_to`]: https://doc.rust-lang.org/stable/std/string/struct.String.html#method.shrink_to [`OsString::shrink_to`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.shrink_to [`PathBuf::shrink_to`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.shrink_to [`BinaryHeap::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.shrink_to [`VecDeque::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.shrink_to [`HashMap::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/hash_map/struct.HashMap.html#method.shrink_to [`HashSet::shrink_to`]: https://doc.rust-lang.org/stable/std/collections/hash_set/struct.HashSet.html#method.shrink_to [`std::mem::transmute`]: https://doc.rust-lang.org/stable/std/mem/fn.transmute.html [`slice::first`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.first [`slice::split_first`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_first [`slice::last`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.last [`slice::split_last`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_last [`rust-version`]: https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-rust-version-field [rust#87671]: https://github.com/rust-lang/rust/pull/87671 [rust#86183]: https://github.com/rust-lang/rust/pull/86183 [rust#87385]: https://github.com/rust-lang/rust/pull/87385 [rust#88100]: https://github.com/rust-lang/rust/pull/88100 [rust#86860]: https://github.com/rust-lang/rust/pull/86860 [rust#84039]: https://github.com/rust-lang/rust/pull/84039 [rust#86492]: https://github.com/rust-lang/rust/pull/86492 [rust#88363]: https://github.com/rust-lang/rust/pull/88363 [rust#85305]: https://github.com/rust-lang/rust/pull/85305 [rust#87832]: https://github.com/rust-lang/rust/pull/87832 [rust#88069]: https://github.com/rust-lang/rust/pull/88069 [rust#87472]: https://github.com/rust-lang/rust/pull/87472 [rust#87699]: https://github.com/rust-lang/rust/pull/87699 [rust#87570]: https://github.com/rust-lang/rust/pull/87570 [rust#88023]: https://github.com/rust-lang/rust/pull/88023 [rust#87760]: https://github.com/rust-lang/rust/pull/87760 [rust#87370]: https://github.com/rust-lang/rust/pull/87370 [rust#87580]: https://github.com/rust-lang/rust/pull/87580 [rust#83342]: https://github.com/rust-lang/rust/pull/83342 [rust#83093]: https://github.com/rust-lang/rust/pull/83093 [rust#88177]: https://github.com/rust-lang/rust/pull/88177 [rust#88548]: https://github.com/rust-lang/rust/pull/88548 [rust#88551]: https://github.com/rust-lang/rust/pull/88551 [rust#88299]: https://github.com/rust-lang/rust/pull/88299 [rust#88220]: https://github.com/rust-lang/rust/pull/88220 [rust#85835]: https://github.com/rust-lang/rust/pull/85835 [rust#86879]: https://github.com/rust-lang/rust/pull/86879 [rust#86744]: https://github.com/rust-lang/rust/pull/86744 [rust#84662]: https://github.com/rust-lang/rust/pull/84662 [rust#86593]: https://github.com/rust-lang/rust/pull/86593 [rust#81050]: https://github.com/rust-lang/rust/pull/81050 [rust#81363]: https://github.com/rust-lang/rust/pull/81363 [rust#84111]: https://github.com/rust-lang/rust/pull/84111 [rust#85769]: https://github.com/rust-lang/rust/pull/85769#issuecomment-854363720 [rust#88490]: https://github.com/rust-lang/rust/pull/88490 [rust#88269]: https://github.com/rust-lang/rust/pull/88269 [rust#84176]: https://github.com/rust-lang/rust/pull/84176 [rust#88399]: https://github.com/rust-lang/rust/pull/88399 [rust#88227]: https://github.com/rust-lang/rust/pull/88227 [rust#88200]: https://github.com/rust-lang/rust/pull/88200 [rust#82776]: https://github.com/rust-lang/rust/pull/82776 [rust#88077]: https://github.com/rust-lang/rust/pull/88077 [rust#87728]: https://github.com/rust-lang/rust/pull/87728 [rust#87050]: https://github.com/rust-lang/rust/pull/87050 [rust#87619]: https://github.com/rust-lang/rust/pull/87619 [rust#81825]: https://github.com/rust-lang/rust/pull/81825#issuecomment-808406918 [rust#88019]: https://github.com/rust-lang/rust/pull/88019 [rust#87666]: https://github.com/rust-lang/rust/pull/87666 Version 1.55.0 (2021-09-09) ============================ Language -------- - [You can now write open "from" range patterns (`X..`), which will start at `X` and will end at the maximum value of the integer.][83918] - [You can now explicitly import the prelude of different editions through `std::prelude` (e.g. `use std::prelude::rust_2021::*;`).][86294] Compiler -------- - [Added tier 3\* support for `powerpc64le-unknown-freebsd`.][83572] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Updated std's float parsing to use the Eisel-Lemire algorithm.][86761] These improvements should in general provide faster string parsing of floats, no longer reject certain valid floating point values, and reduce the produced code size for non-stripped artifacts. - [`string::Drain` now implements `AsRef` and `AsRef<[u8]>`.][86858] Stabilised APIs --------------- - [`Bound::cloned`] - [`Drain::as_str`] - [`IntoInnerError::into_error`] - [`IntoInnerError::into_parts`] - [`MaybeUninit::assume_init_mut`] - [`MaybeUninit::assume_init_ref`] - [`MaybeUninit::write`] - [`array::map`] - [`ops::ControlFlow`] - [`x86::_bittest`] - [`x86::_bittestandcomplement`] - [`x86::_bittestandreset`] - [`x86::_bittestandset`] - [`x86_64::_bittest64`] - [`x86_64::_bittestandcomplement64`] - [`x86_64::_bittestandreset64`] - [`x86_64::_bittestandset64`] The following previously stable functions are now `const`. - [`str::from_utf8_unchecked`] Cargo ----- - [Cargo will now deduplicate compiler diagnostics to the terminal when invoking rustc in parallel such as when using `cargo test`.][cargo/9675] - [The package definition in `cargo metadata` now includes the `"default_run"` field from the manifest.][cargo/9550] - [Added `cargo d` as an alias for `cargo doc`.][cargo/9680] - [Added `{lib}` as formatting option for `cargo tree` to print the `"lib_name"` of packages.][cargo/9663] Rustdoc ------- - [Added "Go to item on exact match" search option.][85876] - [The "Implementors" section on traits no longer shows redundant method definitions.][85970] - [Trait implementations are toggled open by default.][86260] This should make the implementations more searchable by tools like `CTRL+F` in your browser. - [Intra-doc links should now correctly resolve associated items (e.g. methods) through type aliases.][86334] - [Traits which are marked with `#[doc(hidden)]` will no longer appear in the "Trait Implementations" section.][86513] Compatibility Notes ------------------- - [std functions that return an `io::Error` will no longer use the `ErrorKind::Other` variant.][85746] This is to better reflect that these kinds of errors could be categorised [into newer more specific `ErrorKind` variants][79965], and that they do not represent a user error. - [Using environment variable names with `process::Command` on Windows now behaves as expected.][85270] Previously using envionment variables with `Command` would cause them to be ASCII-uppercased. - [Rustdoc will now warn on using rustdoc lints that aren't prefixed with `rustdoc::`][86849] [86849]: https://github.com/rust-lang/rust/pull/86849 [86513]: https://github.com/rust-lang/rust/pull/86513 [86334]: https://github.com/rust-lang/rust/pull/86334 [86260]: https://github.com/rust-lang/rust/pull/86260 [85970]: https://github.com/rust-lang/rust/pull/85970 [85876]: https://github.com/rust-lang/rust/pull/85876 [83572]: https://github.com/rust-lang/rust/pull/83572 [86294]: https://github.com/rust-lang/rust/pull/86294 [86858]: https://github.com/rust-lang/rust/pull/86858 [86761]: https://github.com/rust-lang/rust/pull/86761 [85769]: https://github.com/rust-lang/rust/pull/85769 [85746]: https://github.com/rust-lang/rust/pull/85746 [85305]: https://github.com/rust-lang/rust/pull/85305 [85270]: https://github.com/rust-lang/rust/pull/85270 [84111]: https://github.com/rust-lang/rust/pull/84111 [83918]: https://github.com/rust-lang/rust/pull/83918 [79965]: https://github.com/rust-lang/rust/pull/79965 [87370]: https://github.com/rust-lang/rust/pull/87370 [87298]: https://github.com/rust-lang/rust/pull/87298 [cargo/9663]: https://github.com/rust-lang/cargo/pull/9663 [cargo/9675]: https://github.com/rust-lang/cargo/pull/9675 [cargo/9550]: https://github.com/rust-lang/cargo/pull/9550 [cargo/9680]: https://github.com/rust-lang/cargo/pull/9680 [cargo/9663]: https://github.com/rust-lang/cargo/pull/9663 [`array::map`]: https://doc.rust-lang.org/stable/std/primitive.array.html#method.map [`Bound::cloned`]: https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.cloned [`Drain::as_str`]: https://doc.rust-lang.org/stable/std/string/struct.Drain.html#method.as_str [`IntoInnerError::into_error`]: https://doc.rust-lang.org/stable/std/io/struct.IntoInnerError.html#method.into_error [`IntoInnerError::into_parts`]: https://doc.rust-lang.org/stable/std/io/struct.IntoInnerError.html#method.into_parts [`MaybeUninit::assume_init_mut`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_mut [`MaybeUninit::assume_init_ref`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.assume_init_ref [`MaybeUninit::write`]: https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#method.write [`Seek::rewind`]: https://doc.rust-lang.org/stable/std/io/trait.Seek.html#method.rewind [`ops::ControlFlow`]: https://doc.rust-lang.org/stable/std/ops/enum.ControlFlow.html [`str::from_utf8_unchecked`]: https://doc.rust-lang.org/stable/std/str/fn.from_utf8_unchecked.html [`x86::_bittest`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittest.html [`x86::_bittestandcomplement`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandcomplement.html [`x86::_bittestandreset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandreset.html [`x86::_bittestandset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandset.html [`x86_64::_bittest64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittest64.html [`x86_64::_bittestandcomplement64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandcomplement64.html [`x86_64::_bittestandreset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandreset64.html [`x86_64::_bittestandset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandset64.html @ text @d1 1 a1 1 $NetBSD: patch-src_llvm-project_llvm_CMakeLists.txt,v 1.1 2019/04/14 12:42:03 he Exp $ d7 1 a7 1 @@@@ -900,11 +900,6 @@@@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) @ 1.5 log @rust: Update to 1.54. Requested by gdt@@, taken from wip, any mismerges are mine and I'll follow up. While here pull in an additional fix from newer wip to disable the docs (they are absolutely huge and not all that useful). Version 1.54.0 (2021-07-29) ============================ Language ----------------------- - [You can now use macros for values in built-in attribute macros.][83366] While a seemingly minor addition on its own, this enables a lot of powerful functionality when combined correctly. Most notably you can now include external documentation in your crate by writing the following. ```rust #![doc = include_str!("README.md")] ``` You can also use this to include auto-generated modules: ```rust #[path = concat!(env!("OUT_DIR"), "/generated.rs")] mod generated; ``` - [You can now cast between unsized slice types (and types which contain unsized slices) in `const fn`.][85078] - [You can now use multiple generic lifetimes with `impl Trait` where the lifetimes don't explicitly outlive another.][84701] In code this means that you can now have `impl Trait<'a, 'b>` where as before you could only have `impl Trait<'a, 'b> where 'b: 'a`. Compiler ----------------------- - [Rustc will now search for custom JSON targets in `/lib/rustlib//target.json` where `/` is the "sysroot" directory.][83800] You can find your sysroot directory by running `rustc --print sysroot`. - [Added `wasm` as a `target_family` for WebAssembly platforms.][84072] - [You can now use `#[target_feature]` on safe functions when targeting WebAssembly platforms.][84988] - [Improved debugger output for enums on Windows MSVC platforms.][85292] - [Added tier 3\* support for `bpfel-unknown-none` and `bpfeb-unknown-none`.][79608] Libraries ----------------------- - [`panic::panic_any` will now `#[track_caller]`.][85745] - [Added `OutOfMemory` as a variant of `io::ErrorKind`.][84744] - [ `proc_macro::Literal` now implements `FromStr`.][84717] - [The implementations of vendor intrinsics in core::arch have been significantly refactored.][83278] The main user-visible changes are a 50% reduction in the size of libcore.rlib and stricter validation of constant operands passed to intrinsics. The latter is technically a breaking change, but allows Rust to more closely match the C vendor intrinsics API. Stabilized APIs --------------- - [`BTreeMap::into_keys`] - [`BTreeMap::into_values`] - [`HashMap::into_keys`] - [`HashMap::into_values`] - [`arch::wasm32`] - [`VecDeque::binary_search`] - [`VecDeque::binary_search_by`] - [`VecDeque::binary_search_by_key`] - [`VecDeque::partition_point`] Cargo ----- - [Added the `--prune ` option to `cargo-tree` to remove a package from the dependency graph.][cargo/9520] - [Added the `--depth` option to `cargo-tree` to print only to a certain depth in the tree ][cargo/9499] - [Added the `no-proc-macro` value to `cargo-tree --edges` to hide procedural macro dependencies.][cargo/9488] - [A new environment variable named `CARGO_TARGET_TMPDIR` is available.][cargo/9375] This variable points to a directory that integration tests and benches can use as a "scratchpad" for testing filesystem operations. Compatibility Notes ------------------- - [Mixing Option and Result via `?` is no longer permitted in closures for inferred types.][86831] - [Previously unsound code is no longer permitted where different constructors in branches could require different lifetimes.][85574] - As previously mentioned the [`std::arch` instrinsics now uses stricter const checking][83278] than before and may reject some previously accepted code. - [`i128` multiplication on Cortex M0+ platforms currently unconditionally causes overflow when compiled with `codegen-units = 1`.][86063] Version 1.53.0 (2021-06-17) ============================ Language ----------------------- - [You can now use unicode for identifiers.][83799] This allows multilingual identifiers but still doesn't allow glyphs that are not considered characters such as `~W~F` or `~_~@@`. More specifically you can now use any identifier that matches the UAX #31 "Unicode Identifier and Pattern Syntax" standard. This is the same standard as languages like Python, however Rust uses NFC normalization which may be different from other languages. - [You can now specify "or patterns" inside pattern matches.][79278] Previously you could only use `|` (OR) on complete patterns. E.g. ```rust let x = Some(2u8); // Before matches!(x, Some(1) | Some(2)); // Now matches!(x, Some(1 | 2)); ``` - [Added the `:pat_param` `macro_rules!` matcher.][83386] This matcher has the same semantics as the `:pat` matcher. This is to allow `:pat` to change semantics to being a pattern fragment in a future edition. Compiler ----------------------- - [Updated the minimum external LLVM version to LLVM 10.][83387] - [Added Tier 3\* support for the `wasm64-unknown-unknown` target.][80525] - [Improved debuginfo for closures and async functions on Windows MSVC.][83941] Libraries ----------------------- - [Abort messages will now forward to `android_set_abort_message` on Android platforms when available.][81469] - [`slice::IterMut<'_, T>` now implements `AsRef<[T]>`][82771] - [Arrays of any length now implement `IntoIterator`.][84147] Currently calling `.into_iter()` as a method on an array will return `impl Iterator`, but this may change in a future edition to change `Item` to `T`. Calling `IntoIterator::into_iter` directly on arrays will provide `impl Iterator` as expected. - [`leading_zeros`, and `trailing_zeros` are now available on all `NonZero` integer types.][84082] - [`{f32, f64}::from_str` now parse and print special values (`NaN`, `-0`) according to IEEE RFC 754.][78618] - [You can now index into slices using `(Bound, Bound)`.][77704] - [Add the `BITS` associated constant to all numeric types.][82565] Stabilised APIs --------------- - [`AtomicBool::fetch_update`] - [`AtomicPtr::fetch_update`] - [`BTreeMap::retain`] - [`BTreeSet::retain`] - [`BufReader::seek_relative`] - [`DebugStruct::non_exhaustive`] - [`Duration::MAX`] - [`Duration::ZERO`] - [`Duration::is_zero`] - [`Duration::saturating_add`] - [`Duration::saturating_mul`] - [`Duration::saturating_sub`] - [`ErrorKind::Unsupported`] - [`Option::insert`] - [`Ordering::is_eq`] - [`Ordering::is_ge`] - [`Ordering::is_gt`] - [`Ordering::is_le`] - [`Ordering::is_lt`] - [`Ordering::is_ne`] - [`OsStr::is_ascii`] - [`OsStr::make_ascii_lowercase`] - [`OsStr::make_ascii_uppercase`] - [`OsStr::to_ascii_lowercase`] - [`OsStr::to_ascii_uppercase`] - [`Peekable::peek_mut`] - [`Rc::decrement_strong_count`] - [`Rc::increment_strong_count`] - [`Vec::extend_from_within`] - [`array::from_mut`] - [`array::from_ref`] - [`cmp::max_by_key`] - [`cmp::max_by`] - [`cmp::min_by_key`] - [`cmp::min_by`] - [`f32::is_subnormal`] - [`f64::is_subnormal`] Cargo ----------------------- - [Cargo now supports git repositories where the default `HEAD` branch is not "master".][cargo/9392] This also includes a switch to the version 3 `Cargo.lock` format which can handle default branches correctly. - [macOS targets now default to `unpacked` split-debuginfo.][cargo/9298] - [The `authors` field is no longer included in `Cargo.toml` for new projects.][cargo/9282] Rustdoc ----------------------- - [Added the `rustdoc::bare_urls` lint that warns when you have URLs without hyperlinks.][81764] Compatibility Notes ------------------- - [Implement token-based handling of attributes during expansion][82608] - [`Ipv4::from_str` will now reject octal format IP addresses in addition to rejecting hexadecimal IP addresses.][83652] The octal format can lead to confusion and potential security vulnerabilities and [is no longer recommended][ietf6943]. - [The added `BITS` constant may conflict with external definitions.][85667] In particular, this was known to be a problem in the `lexical-core` crate, but they have published fixes for semantic versions 0.4 through 0.7. To update this dependency alone, use `cargo update -p lexical-core`. - Incremental compilation remains off by default, unless one uses the `RUSTC_FORCE_INCREMENTAL=1` environment variable added in 1.52.1. 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. - [Rework the `std::sys::windows::alloc` implementation.][83065] - [rustdoc: Don't enter an infer_ctxt in get_blanket_impls for impls that aren't blanket impls.][82864] - [rustdoc: Only look at blanket impls in `get_blanket_impls`][83681] - [Rework rustdoc const type][82873] @ text @@ 1.4 log @Update lang/rust to version 1.52.1. Pkgsrc changes: * Bump bootstrap kit version to 1.51.0. * Adjust patches as needed. * Update checksum adjustments. * Fix syntax error in commands adjusting libserde_derive for Darwin Upstream changes: Version 1.52.1 (2021-05-10) ============================ This release disables incremental compilation, unless the user has explicitly opted in via the newly added RUSTC_FORCE_INCREMENTAL=1 environment variable. This is due to the widespread, and frequently occuring, breakage encountered by Rust users due to newly enabled incremental verification in 1.52.0. Notably, Rust users **should** upgrade to 1.52.0 or 1.52.1: the bugs that are detected by newly added incremental verification are still present in past stable versions, and are not yet fixed on any channel. These bugs can lead to miscompilation of Rust binaries. These problems only affect incremental builds, so release builds with Cargo should not be affected unless the user has explicitly opted into incremental. Debug and check builds are affected. See [84970] for more details. [84970]: https://github.com/rust-lang/rust/issues/84970 Version 1.52.0 (2021-05-06) ============================ 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.][79208] 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.][81479] Compiler -------- - [Upgraded the default LLVM to LLVM 12.][81451] Added tier 3\* support for the following targets. - [`s390x-unknown-linux-musl`][82166] - [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`][82202] - [`powerpc-unknown-openbsd`][82733] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [`OsString` now implements `Extend` and `FromIterator`.][82121] - [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879] - [`Arc` now implements `error::Error`.][80553] - [All integer division and remainder operations are now `const`.][80962] 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)]`).][80527] Using the old style is still allowed, and will become a warning in a future release. - [Rustdoc now supports argument files.][82261] - [Rustdoc now generates smart punctuation for documentation.][79423] - [You can now use "task lists" in Rustdoc Markdown.][81766] E.g. ```markdown - [x] Complete - [ ] Todo ``` Misc ---- - [You can now pass multiple filters to tests.][81356] 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.][82218] 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][81855] - [Try fast_reject::simplify_type in coherence before doing full check][81744] - [Only store a LocalDefId in some HIR nodes][81611] - [Store HIR attributes in a side table][79519] Compatibility Notes ------------------- - [Cargo build scripts are now forbidden from setting `RUSTC_BOOTSTRAP`.][cargo/9181] - [Removed support for the `x86_64-rumprun-netbsd` target.][82594] - [Deprecated the `x86_64-sun-solaris` target in favor of `x86_64-pc-solaris`.][82216] - [Rustdoc now only accepts `,`, ` `, and `\t` as delimiters for specifying languages in code blocks.][78429] - [Rustc now catches more cases of `pub_use_of_private_extern_crate`][80763] - [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.][84136] [84136]: https://github.com/rust-lang/rust/issues/84136 [80763]: https://github.com/rust-lang/rust/pull/80763 [82166]: https://github.com/rust-lang/rust/pull/82166 [82121]: https://github.com/rust-lang/rust/pull/82121 [81879]: https://github.com/rust-lang/rust/pull/81879 [82261]: https://github.com/rust-lang/rust/pull/82261 [82218]: https://github.com/rust-lang/rust/pull/82218 [82216]: https://github.com/rust-lang/rust/pull/82216 [82202]: https://github.com/rust-lang/rust/pull/82202 [81855]: https://github.com/rust-lang/rust/pull/81855 [81766]: https://github.com/rust-lang/rust/pull/81766 [81744]: https://github.com/rust-lang/rust/pull/81744 [81611]: https://github.com/rust-lang/rust/pull/81611 [81479]: https://github.com/rust-lang/rust/pull/81479 [81451]: https://github.com/rust-lang/rust/pull/81451 [81356]: https://github.com/rust-lang/rust/pull/81356 [80962]: https://github.com/rust-lang/rust/pull/80962 [80553]: https://github.com/rust-lang/rust/pull/80553 [80527]: https://github.com/rust-lang/rust/pull/80527 [79519]: https://github.com/rust-lang/rust/pull/79519 [79423]: https://github.com/rust-lang/rust/pull/79423 [79208]: https://github.com/rust-lang/rust/pull/79208 [78429]: https://github.com/rust-lang/rust/pull/78429 [82733]: https://github.com/rust-lang/rust/pull/82733 [82594]: https://github.com/rust-lang/rust/pull/82594 [cargo/9181]: https://github.com/rust-lang/cargo/pull/9181 [`char::MAX`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX [`char::REPLACEMENT_CHARACTER`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER [`char::UNICODE_VERSION`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION [`char::decode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16 [`char::from_u32`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32 [`char::from_u32_unchecked`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked [`char::from_digit`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_digit [`Peekable::next_if`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if [`Peekable::next_if_eq`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_eq [`Arguments::as_str`]: https://doc.rust-lang.org/stable/std/fmt/struct.Arguments.html#method.as_str [`str::split_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_once [`str::rsplit_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit_once [`slice::partition_point`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point [`char::len_utf8`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf8 [`char::len_utf16`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf16 [`char::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_uppercase [`char::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_lowercase [`char::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.eq_ignore_ascii_case [`u8::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_uppercase [`u8::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_lowercase [`u8::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.eq_ignore_ascii_case @ text @@ 1.3 log @Update lang/rust to version 1.51.0. Pkgsrc changes: * Add support for the big-endian arm64 NetBSD target (aarch64_be). * On NetBSD/i386, use the i586 (pentium) bootstrap kit variant in preference to i686. * Adjust patches, re-compute line offsets, re-compute crate checksums. * Remove a patch which was either integrated upstream and/or no longer applies. * Bump bootstraps to 1.50.0. * Move conditionals until after bsd.prefs.mk so that they work... * Default to "dist" build target if cross-compiling, but allow also to override via rust.BUILD_TARGET. * Allow overriding MAKE_JOBS_SAFE via rust.MAKE_JOBS_SAFE if you want a different trade-off between occasional breakage and performance. * Adjust platform.mk according to work already done in wip/rust/ * Add a patch to optimize the install.sh script used to install binary bootstraps to not do so many forks; use case/esac and parameter expansion instead of grep, sed and cut. * Drop building documentation for the binary bootstrap kits. This will also impact the lang/rust-bin package. For full documentation, build or install lang/rust as a package. Upstream changes: Version 1.51.0 (2021-03-25) ============================ Language -------- - [You can now parameterize items such as functions, traits, and `struct`s by constant values in addition to by types and lifetimes.][79135] 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. ```rust struct GenericArray { inner: [T; LENGTH] } impl GenericArray { const fn last(&self) -> Option<&T> { if LENGTH == 0 { None } else { Some(&self.inner[LENGTH - 1]) } } } ``` Compiler -------- - [Added the `-Csplit-debuginfo` codegen option for macOS platforms.][79570] 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.][81455] - [Added tier 3 support for `i386-unknown-linux-gnu` and `i486-unknown-linux-gnu` targets.][80662] - [The `target-cpu=native` option will now detect individual features of CPUs.][80749] \* Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [`Box::downcast` is now also implemented for any `dyn Any + Send + Sync` object.][80945] - [`str` now implements `AsMut`.][80279] - [`u64` and `u128` now implement `From`.][79502] - [`Error` is now implemented for `&T` where `T` implements `Error`.][75180] - [`Poll::{map_ok, map_err}` are now implemented for `Poll>>`.][80968] - [`unsigned_abs` is now implemented for all signed integer types.][80959] - [`io::Empty` now implements `io::Seek`.][78044] - [`rc::Weak` and `sync::Weak`'s methods such as `as_ptr` are now implemented for `T: ?Sized` types.][80764] - [`Div` and `Rem` by their `NonZero` variant is now implemented for all unsigned integers.][79134] 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`] - [`VecDeque::range`] - [`VecDeque::range_mut`] Cargo ----- - [Added the `split-debuginfo` profile option to control the -Csplit-debuginfo codegen option.][cargo/9112] - [Added the `resolver` field to `Cargo.toml` to enable the new feature resolver and CLI option behavior.][cargo/8997] 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][feature-resolver@@2.0] for more information on the feature. Rustdoc ------- - [Rustdoc will now include documentation for methods available from _nested_ `Deref` traits.][80653] - [You can now provide a `--default-theme` flag which sets the default theme to use for documentation.][79642] Various improvements to intra-doc links: - [You can link to non-path primitives such as `slice`.][80181] - [You can link to associated items.][74489] - [You can now include generic parameters when linking to items, like `Vec`.][76934] Misc ---- - [You can now pass `--include-ignored` to tests (e.g. with `cargo test -- --include-ignored`) to include testing tests marked `#[ignore]`.][80053] Compatibility Notes ------------------- - [WASI platforms no longer use the `wasm-bindgen` ABI, and instead use the wasm32 ABI.][79998] - [`rustc` no longer promotes division, modulo and indexing operations to `const` that could fail.][80579] - [The minimum version of glibc for the following platforms has been bumped to version 2.31 for the distributed artifacts.][81521] - `armv5te-unknown-linux-gnueabi` - `sparc64-unknown-linux-gnu` - `thumbv7neon-unknown-linux-gnueabihf` - `armv7-unknown-linux-gnueabi` - `x86_64-unknown-linux-gnux32` - [`atomic::spin_loop_hint` has been deprecated.][80966] It's recommended to use `hint::spin_loop` instead. Internal Only ------------- - [Consistently avoid constructing optimized MIR when not doing codegen][80718] [79135]: https://github.com/rust-lang/rust/pull/79135 [74489]: https://github.com/rust-lang/rust/pull/74489 [76934]: https://github.com/rust-lang/rust/pull/76934 [79570]: https://github.com/rust-lang/rust/pull/79570 [80181]: https://github.com/rust-lang/rust/pull/80181 [79642]: https://github.com/rust-lang/rust/pull/79642 [80945]: https://github.com/rust-lang/rust/pull/80945 [80279]: https://github.com/rust-lang/rust/pull/80279 [80053]: https://github.com/rust-lang/rust/pull/80053 [79502]: https://github.com/rust-lang/rust/pull/79502 [75180]: https://github.com/rust-lang/rust/pull/75180 [79135]: https://github.com/rust-lang/rust/pull/79135 [81521]: https://github.com/rust-lang/rust/pull/81521 [80968]: https://github.com/rust-lang/rust/pull/80968 [80959]: https://github.com/rust-lang/rust/pull/80959 [80718]: https://github.com/rust-lang/rust/pull/80718 [80653]: https://github.com/rust-lang/rust/pull/80653 [80579]: https://github.com/rust-lang/rust/pull/80579 [79998]: https://github.com/rust-lang/rust/pull/79998 [78044]: https://github.com/rust-lang/rust/pull/78044 [81455]: https://github.com/rust-lang/rust/pull/81455 [80764]: https://github.com/rust-lang/rust/pull/80764 [80749]: https://github.com/rust-lang/rust/pull/80749 [80662]: https://github.com/rust-lang/rust/pull/80662 [79134]: https://github.com/rust-lang/rust/pull/79134 [80966]: https://github.com/rust-lang/rust/pull/80966 [cargo/8997]: https://github.com/rust-lang/cargo/pull/8997 [cargo/9112]: https://github.com/rust-lang/cargo/pull/9112 [feature-resolver@@2.0]: https://doc.rust-lang.org/nightly/cargo/reference/features.html#feature-resolver-version-2 [`Once::call_once_force`]: https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.call_once_force [`sync::OnceState`]: https://doc.rust-lang.org/stable/std/sync/struct.OnceState.html [`panic::panic_any`]: https://doc.rust-lang.org/stable/std/panic/fn.panic_any.html [`slice::strip_prefix`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.strip_prefix [`slice::strip_suffix`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.strip_prefix [`Arc::increment_strong_count`]: https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.increment_strong_count [`Arc::decrement_strong_count`]: https://doc.rust-lang.org/nightly/std/sync/struct.Arc.html#method.decrement_strong_count [`slice::fill_with`]: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.fill_with [`ptr::addr_of!`]: https://doc.rust-lang.org/nightly/std/ptr/macro.addr_of.html [`ptr::addr_of_mut!`]: https://doc.rust-lang.org/nightly/std/ptr/macro.addr_of_mut.html [`array::IntoIter`]: https://doc.rust-lang.org/nightly/std/array/struct.IntoIter.html [`slice::split_inclusive`]: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_inclusive [`slice::split_inclusive_mut`]: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_inclusive_mut [`str::split_inclusive`]: https://doc.rust-lang.org/nightly/std/primitive.str.html#method.split_inclusive [`task::Wake`]: https://doc.rust-lang.org/nightly/std/task/trait.Wake.html [`Seek::stream_position`]: https://doc.rust-lang.org/nightly/std/io/trait.Seek.html#method.stream_position [`Peekable::next_if`]: https://doc.rust-lang.org/nightly/std/iter/struct.Peekable.html#method.next_if [`Peekable::next_if_eq`]: https://doc.rust-lang.org/nightly/std/iter/struct.Peekable.html#method.next_if_eq [`VecDeque::range`]: https://doc.rust-lang.org/nightly/std/collections/struct.VecDeque.html#method.range [`VecDeque::range_mut`]: https://doc.rust-lang.org/nightly/std/collections/struct.VecDeque.html#method.range_mut @ text @d7 3 a9 3 @@@@ -806,11 +806,6 @@@@ if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBS link_directories("/usr/local/lib") endif(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") @ 1.2 log @Update lang/rust to version 1.50.0. Pkgsrc changes: * Adjust patches, re-compute line offsets, fix capitalization. * Remove i686/FreeBSD support, no longer provided upstream. * Bump bootstraps to 1.49.0. * Change USE_TOOLS from bsdtar to gtar. * Reduce diffs to pkgsrc-wip package patches. * Allow rust.BUILD_TARGET to override automatic choice of target. * Add an i586/NetBSD (pentium) bootstrap variant (needs testing), not yet added as bootstrap since 1.49 doesn't have that variant. Upstream changes: Version 1.50.0 (2021-02-11) ============================ Language ----------------------- - [You can now use `const` values for `x` in `[x; N]` array expressions.][79270] This has been technically possible since 1.38.0, as it was unintentionally stabilized. - [Assignments to `ManuallyDrop` union fields are now considered safe.][78068] Compiler ----------------------- - [Added tier 3\* support for the `armv5te-unknown-linux-uclibceabi` target.][78142] - [Added tier 3 support for the `aarch64-apple-ios-macabi` target.][77484] - [The `x86_64-unknown-freebsd` is now built with the full toolset.][79484] \* Refer to Rust's [platform support page][forge-platform-support] for more information on Rust's tiered platform support. Libraries ----------------------- - [`proc_macro::Punct` now implements `PartialEq`.][78636] - [`ops::{Index, IndexMut}` are now implemented for fixed sized arrays of any length.][74989] - [On Unix platforms, the `std::fs::File` type now has a "niche" of `-1`.][74699] 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.][cargo/8976] 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.][cargo/8973] - [Added the `--workspace` flag to the `cargo update` command.][cargo/8725] Misc ---- - [The search results tab and the help button are focusable with keyboard in rustdoc.][79896] - [Running tests will now print the total time taken to execute.][75752] Compatibility Notes ------------------- - [The `compare_and_swap` method on atomics has been deprecated.][79261] It's recommended to use the `compare_exchange` and `compare_exchange_weak` methods instead. - [Changes in how `TokenStream`s are checked have fixed some cases where you could write unhygenic `macro_rules!` macros.][79472] - [`#![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.][79003] - [Overriding a `forbid` lint at the same level that it was set is now a hard error.][78864] - [Dropped support for all cloudabi targets.][78439] - [You can no longer intercept `panic!` calls by supplying your own macro.][78343] 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.][78296] [74989]: https://github.com/rust-lang/rust/pull/74989 [79261]: https://github.com/rust-lang/rust/pull/79261 [79896]: https://github.com/rust-lang/rust/pull/79896 [79484]: https://github.com/rust-lang/rust/pull/79484 [79472]: https://github.com/rust-lang/rust/pull/79472 [79270]: https://github.com/rust-lang/rust/pull/79270 [79003]: https://github.com/rust-lang/rust/pull/79003 [78864]: https://github.com/rust-lang/rust/pull/78864 [78636]: https://github.com/rust-lang/rust/pull/78636 [78439]: https://github.com/rust-lang/rust/pull/78439 [78343]: https://github.com/rust-lang/rust/pull/78343 [78296]: https://github.com/rust-lang/rust/pull/78296 [78068]: https://github.com/rust-lang/rust/pull/78068 [75752]: https://github.com/rust-lang/rust/pull/75752 [74699]: https://github.com/rust-lang/rust/pull/74699 [78142]: https://github.com/rust-lang/rust/pull/78142 [77484]: https://github.com/rust-lang/rust/pull/77484 [cargo/8976]: https://github.com/rust-lang/cargo/pull/8976 [cargo/8973]: https://github.com/rust-lang/cargo/pull/8973 [cargo/8725]: https://github.com/rust-lang/cargo/pull/8725 [`IpAddr::is_ipv4`]: https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_ipv4 [`IpAddr::is_ipv6`]: https://doc.rust-lang.org/stable/std/net/enum.IpAddr.html#method.is_ipv6 [`Layout::align`]: https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.align [`Layout::from_size_align`]: https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.from_size_align [`Layout::size`]: https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.size [`Ord::clamp`]: https://doc.rust-lang.org/stable/std/cmp/trait.Ord.html#method.clamp [`RefCell::take`]: https://doc.rust-lang.org/stable/std/cell/struct.RefCell.html#method.take [`UnsafeCell::get_mut`]: https://doc.rust-lang.org/stable/std/cell/struct.UnsafeCell.html#method.get_mut [`bool::then`]: https://doc.rust-lang.org/stable/std/primitive.bool.html#method.then [`btree_map::Entry::or_insert_with_key`]: https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html#method.or_insert_with_key [`f32::clamp`]: https://doc.rust-lang.org/stable/std/primitive.f32.html#method.clamp [`f64::clamp`]: https://doc.rust-lang.org/stable/std/primitive.f64.html#method.clamp [`hash_map::Entry::or_insert_with_key`]: https://doc.rust-lang.org/stable/std/collections/hash_map/enum.Entry.html#method.or_insert_with_key [`slice::fill`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.fill @ text @d5 1 a5 1 --- src/llvm-project/llvm/CMakeLists.txt.orig 2020-12-08 20:04:43.000000000 +0000 d7 1 a7 1 @@@@ -959,11 +959,6 @@@@ if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBS @ 1.1 log @Update rust to version 1.34.0. Pkgsrc changes: * Bump required rust version to build to 1.33.0. * Adapt patches to changed file locations. * (I worry about 32-bit ports, now that Atomic64 apparently is First-Class; this has been built on NetBSD/amd64 so far) Upstream changes: Version 1.34.0 (2019-04-11) ========================== Language -------- - [You can now use `#[deprecated = "reason"]`][58166] as a shorthand for `#[deprecated(note = "reason")]`. This was previously allowed by mistake but had no effect. - [You can now accept token streams in `#[attr()]`,`#[attr[]]`, and `#[attr{}]` procedural macros.][57367] - [You can now write `extern crate self as foo;`][57407] to import your crate's root into the extern prelude. Compiler -------- - [You can now target `riscv64imac-unknown-none-elf` and `riscv64gc-unknown-none-elf`.][58406] - [You can now enable linker plugin LTO optimisations with `-C linker-plugin-lto`.][58057] This allows rustc to compile your Rust code into LLVM bitcode allowing LLVM to perform LTO optimisations across C/C++ FFI boundaries. - [You can now target `powerpc64-unknown-freebsd`.][57809] Libraries --------- - [The trait bounds have been removed on some of `HashMap`'s and `HashSet`'s basic methods.][58370] Most notably you no longer require the `Hash` trait to create an iterator. - [The `Ord` trait bounds have been removed on some of `BinaryHeap`'s basic methods.][58421] Most notably you no longer require the `Ord` trait to create an iterator. - [The methods `overflowing_neg` and `wrapping_neg` are now `const` functions for all numeric types.][58044] - [Indexing a `str` is now generic over all types that implement `SliceIndex`.][57604] - [`str::trim`, `str::trim_matches`, `str::trim_{start, end}`, and `str::trim_{start, end}_matches` are now `#[must_use]`][57106] and will produce a warning if their returning type is unused. - [The methods `checked_pow`, `saturating_pow`, `wrapping_pow`, and `overflowing_pow` are now available for all numeric types.][57873] These are equivalvent to methods such as `wrapping_add` for the `pow` operation. Stabilized APIs --------------- #### std & core * [`Any::type_id`] * [`Error::type_id`] * [`atomic::AtomicI16`] * [`atomic::AtomicI32`] * [`atomic::AtomicI64`] * [`atomic::AtomicI8`] * [`atomic::AtomicU16`] * [`atomic::AtomicU32`] * [`atomic::AtomicU64`] * [`atomic::AtomicU8`] * [`convert::Infallible`] * [`convert::TryFrom`] * [`convert::TryInto`] * [`iter::from_fn`] * [`iter::successors`] * [`num::NonZeroI128`] * [`num::NonZeroI16`] * [`num::NonZeroI32`] * [`num::NonZeroI64`] * [`num::NonZeroI8`] * [`num::NonZeroIsize`] * [`slice::sort_by_cached_key`] * [`str::escape_debug`] * [`str::escape_default`] * [`str::escape_unicode`] * [`str::split_ascii_whitespace`] #### std * [`Instant::checked_add`] * [`Instant::checked_sub`] * [`SystemTime::checked_add`] * [`SystemTime::checked_sub`] Cargo ----- - [You can now use alternative registries to crates.io.][cargo/6654] Misc ---- - [You can now use the `?` operator in your documentation tests without manually adding `fn main() -> Result<(), _> {}`.][56470] Compatibility Notes ------------------- - [`Command::before_exec` is now deprecated in favor of the unsafe method `Command::pre_exec`.][58059] - [Use of `ATOMIC_{BOOL, ISIZE, USIZE}_INIT` is now deprecated.][57425] As you can now use `const` functions in `static` variables. [58370]: https://github.com/rust-lang/rust/pull/58370/ [58406]: https://github.com/rust-lang/rust/pull/58406/ [58421]: https://github.com/rust-lang/rust/pull/58421/ [58166]: https://github.com/rust-lang/rust/pull/58166/ [58044]: https://github.com/rust-lang/rust/pull/58044/ [58057]: https://github.com/rust-lang/rust/pull/58057/ [58059]: https://github.com/rust-lang/rust/pull/58059/ [57809]: https://github.com/rust-lang/rust/pull/57809/ [57873]: https://github.com/rust-lang/rust/pull/57873/ [57604]: https://github.com/rust-lang/rust/pull/57604/ [57367]: https://github.com/rust-lang/rust/pull/57367/ [57407]: https://github.com/rust-lang/rust/pull/57407/ [57425]: https://github.com/rust-lang/rust/pull/57425/ [57106]: https://github.com/rust-lang/rust/pull/57106/ [56470]: https://github.com/rust-lang/rust/pull/56470/ [cargo/6654]: https://github.com/rust-lang/cargo/pull/6654/ [`Any::type_id`]: https://doc.rust-lang.org/std/any/trait.Any.html#tymethod.type_id [`Error::type_id`]: https://doc.rust-lang.org/std/error/trait.Error.html#tymethod.type_id [`atomic::AtomicI16`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI16.html [`atomic::AtomicI32`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI32.html [`atomic::AtomicI64`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI64.html [`atomic::AtomicI8`]: https://doc.rust-lang.org/std/atomic/struct.AtomicI8.html [`atomic::AtomicU16`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU16.html [`atomic::AtomicU32`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU32.html [`atomic::AtomicU64`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU64.html [`atomic::AtomicU8`]: https://doc.rust-lang.org/std/atomic/struct.AtomicU8.html [`convert::Infallible`]: https://doc.rust-lang.org/std/convert/enum.Infallible.html [`convert::TryFrom`]: https://doc.rust-lang.org/std/convert/trait.TryFrom.html [`convert::TryInto`]: https://doc.rust-lang.org/std/convert/trait.TryInto.html [`iter::from_fn`]: https://doc.rust-lang.org/std/iter/fn.from_fn.html [`iter::successors`]: https://doc.rust-lang.org/std/iter/fn.successors.html [`num::NonZeroI128`]: https://doc.rust-lang.org/std/num/struct.NonZeroI128.html [`num::NonZeroI16`]: https://doc.rust-lang.org/std/num/struct.NonZeroI16.html [`num::NonZeroI32`]: https://doc.rust-lang.org/std/num/struct.NonZeroI32.html [`num::NonZeroI64`]: https://doc.rust-lang.org/std/num/struct.NonZeroI64.html [`num::NonZeroI8`]: https://doc.rust-lang.org/std/num/struct.NonZeroI8.html [`num::NonZeroIsize`]: https://doc.rust-lang.org/std/num/struct.NonZeroIsize.html [`slice::sort_by_cached_key`]: https://doc.rust-lang.org/std/slice/fn.sort_by_cached_key [`str::escape_debug`]: https://doc.rust-lang.org/std/primitive.str.html#method.escape_debug [`str::escape_default`]: https://doc.rust-lang.org/std/primitive.str.html#method.escape_default [`str::escape_unicode`]: https://doc.rust-lang.org/std/primitive.str.html#method.escape_unicode [`str::split_ascii_whitespace`]: https://doc.rust-lang.org/std/primitive.str.html#method.split_ascii_whitespace [`Instant::checked_add`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_add [`Instant::checked_sub`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_sub [`SystemTime::checked_add`]: https://doc.rust-lang.org/std/time/struct.SystemTime.html#method.checked_add [`SystemTime::checked_sub`]: https://doc.rust-lang.org/std/time/struct.SystemTime.html#method.checked_sub @ text @d1 1 a1 1 $NetBSD: patch-src_llvm_CMakeLists.txt,v 1.1 2018/06/21 17:13:13 jperkin Exp $ d5 1 a5 1 --- src/llvm-project/llvm/CMakeLists.txt.orig 2018-03-10 02:51:13.000000000 +0000 d7 1 a7 1 @@@@ -806,11 +806,6 @@@@ if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBS @