head 1.14; access; symbols pkgsrc-2023Q4:1.14.0.2 pkgsrc-2023Q4-base:1.14 pkgsrc-2023Q3:1.12.0.2 pkgsrc-2023Q3-base:1.12 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.4 pkgsrc-2022Q4-base:1.10 pkgsrc-2022Q3:1.10.0.2 pkgsrc-2022Q3-base:1.10 pkgsrc-2022Q2:1.9.0.10 pkgsrc-2022Q2-base:1.9 pkgsrc-2022Q1:1.9.0.8 pkgsrc-2022Q1-base:1.9 pkgsrc-2021Q4:1.9.0.6 pkgsrc-2021Q4-base:1.9 pkgsrc-2021Q3:1.9.0.4 pkgsrc-2021Q3-base:1.9 pkgsrc-2021Q2:1.9.0.2 pkgsrc-2021Q2-base:1.9 pkgsrc-2021Q1:1.7.0.4 pkgsrc-2021Q1-base:1.7 pkgsrc-2020Q4:1.7.0.2 pkgsrc-2020Q4-base:1.7 pkgsrc-2020Q3:1.6.0.2 pkgsrc-2020Q3-base:1.6 pkgsrc-2020Q2:1.5.0.2 pkgsrc-2020Q2-base:1.5 pkgsrc-2020Q1:1.3.0.18 pkgsrc-2020Q1-base:1.3 pkgsrc-2019Q4:1.3.0.20 pkgsrc-2019Q4-base:1.3 pkgsrc-2019Q3:1.3.0.16 pkgsrc-2019Q3-base:1.3 pkgsrc-2019Q2:1.3.0.14 pkgsrc-2019Q2-base:1.3 pkgsrc-2019Q1:1.3.0.12 pkgsrc-2019Q1-base:1.3 pkgsrc-2018Q4:1.3.0.10 pkgsrc-2018Q4-base:1.3 pkgsrc-2018Q3:1.3.0.8 pkgsrc-2018Q3-base:1.3 pkgsrc-2018Q2:1.3.0.6 pkgsrc-2018Q2-base:1.3 pkgsrc-2018Q1:1.3.0.4 pkgsrc-2018Q1-base:1.3 pkgsrc-2017Q4:1.3.0.2 pkgsrc-2017Q4-base:1.3 pkgsrc-2017Q3:1.2.0.8 pkgsrc-2017Q3-base:1.2 pkgsrc-2017Q2:1.2.0.4 pkgsrc-2017Q2-base:1.2 pkgsrc-2017Q1:1.2.0.2 pkgsrc-2017Q1-base:1.2 pkgsrc-2016Q4:1.1.0.4 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.2 pkgsrc-2016Q3-base:1.1; locks; strict; comment @# @; 1.14 date 2023.10.25.05.50.43; author pin; state Exp; branches; next 1.13; commitid UEfn9v0yjdAD9YJE; 1.13 date 2023.10.10.13.12.33; author pin; state Exp; branches; next 1.12; commitid hQe6AmUQ9PEi55IE; 1.12 date 2023.08.14.05.24.45; author wiz; state Exp; branches; next 1.11; commitid LOSB79OLVxvXjIAE; 1.11 date 2023.01.23.18.49.03; author he; state Exp; branches; next 1.10; commitid iHEi3Slf9XUSiHaE; 1.10 date 2022.06.28.11.34.15; author wiz; state Exp; branches; next 1.9; commitid D2UoJrTHpoHEANJD; 1.9 date 2021.04.20.11.54.32; author he; state Exp; branches; next 1.8; commitid FBW4hVDmwl5SF1QC; 1.8 date 2021.04.19.17.08.09; author he; state Exp; branches; next 1.7; commitid c2Uk0uVdMcjnrVPC; 1.7 date 2020.11.13.20.35.58; author he; state Exp; branches; next 1.6; commitid 5fXvJ9apFFuGDLvC; 1.6 date 2020.07.08.14.46.14; author jperkin; state Exp; branches; next 1.5; commitid QMtKW3fwVVCWNhfC; 1.5 date 2020.06.14.15.38.18; author nia; state Exp; branches; next 1.4; commitid pf1h32eH5wiJSccC; 1.4 date 2020.05.18.16.17.20; author nia; state Exp; branches; next 1.3; commitid qTyqVW1vGCobWJ8C; 1.3 date 2017.09.30.04.42.43; author ryoon; state Exp; branches; next 1.2; commitid QZ3HwxA0V4kK0b9A; 1.2 date 2017.02.23.09.35.16; author jperkin; state Exp; branches; next 1.1; commitid ue2T68vF58vFE3Hz; 1.1 date 2016.09.06.10.36.49; author jperkin; state Exp; branches; next ; commitid QoDoqfO9X8Asrdlz; desc @@ 1.14 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 @# $NetBSD: buildlink3.mk,v 1.6 2020/07/08 14:46:14 jperkin Exp $ BUILDLINK_TREE+= rust # # DO NOT include this directly! Use rust.mk instead. # .if !defined(RUST_BUILDLINK3_MK) RUST_BUILDLINK3_MK:= BUILDLINK_API_DEPENDS.rust+= rust>=1.56.1 BUILDLINK_PKGSRCDIR.rust?= ../../lang/rust BUILDLINK_PASSTHRU_DIRS+= ${PREFIX}/lib/rustlib .endif BUILDLINK_TREE+= -rust @ 1.13 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 @a12 1 BUILDLINK_ABI_DEPENDS.rust?= rust>=1.71.1 @ 1.12 log @*: recursive bump for Python 3.11 as new default @ text @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.11 2023/01/23 18:49:03 he Exp $ d13 1 a13 1 BUILDLINK_ABI_DEPENDS.rust?= rust>=1.70.0nb1 @ 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 @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.6 2020/07/08 14:46:14 jperkin Exp $ d13 1 @ 1.10 log @*: recursive bump for perl 5.36 @ text @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.9 2021/04/20 11:54:32 he Exp $ d12 1 a12 2 BUILDLINK_API_DEPENDS.rust+= rust>=1.20.0 BUILDLINK_ABI_DEPENDS.rust?= rust>=1.60.0nb1 @ 1.9 log @Fix errors and most warnings flagged by pkglint. Note to self: run pkglint before committing. Thanks to jperkin@@ for the note. @ text @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.8 2021/04/19 17:08:09 he Exp $ d13 1 @ 1.8 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 @d1 3 a3 1 # $NetBSD: buildlink3.mk,v 1.7 2020/11/13 20:35:58 he Exp $ a8 2 BUILDLINK_TREE+= rust @ 1.7 log @Upgrade rust to version 1.47.0. Pkgsrc changes: * Remove patches now integrated upstream, many related to SunOS / Illumos. * The LLVM fix for powerpc is also now integrated upstream. * Adapt those patches where the source has moved or parts are integrated. * The randomness patches no longer applies, and I could not find where those files went... * Provide a separate bootstrap for NetBSD/powerpc 9.0, since apparently the C++ ABI is different from 8.0. Yes, this appears to be specific to the NetBSD powerpc ports. Upstream changes: Version 1.47.0 (2020-10-08) ========================== Language -------- - [Closures will now warn when not used.][74869] Compiler -------- - [Stabilized the `-C control-flow-guard` codegen option][73893], which enables [Control Flow Guard][1.47.0-cfg] for Windows platforms, and is ignored on other platforms. - [Upgraded to LLVM 11.][73526] - [Added tier 3\* support for the `thumbv4t-none-eabi` target.][74419] - [Upgrade the FreeBSD toolchain to version 11.4][75204] - [`RUST_BACKTRACE`'s output is now more compact.][75048] \* Refer to Rust's [platform support page][forge-platform-support] for more information on Rust's tiered platform support. Libraries --------- - [`CStr` now implements `Index>`.][74021] - [Traits in `std`/`core` are now implemented for arrays of any length, not just those of length less than 33.][74060] - [`ops::RangeFull` and `ops::Range` now implement Default.][73197] - [`panic::Location` now implements `Copy`, `Clone`, `Eq`, `Hash`, `Ord`, `PartialEq`, and `PartialOrd`.][73583] Stabilized APIs --------------- - [`Ident::new_raw`] - [`Range::is_empty`] - [`RangeInclusive::is_empty`] - [`Result::as_deref`] - [`Result::as_deref_mut`] - [`Vec::leak`] - [`pointer::offset_from`] - [`f32::TAU`] - [`f64::TAU`] The following previously stable APIs have now been made const. - [The `new` method for all `NonZero` integers.][73858] - [The `checked_add`,`checked_sub`,`checked_mul`,`checked_neg`, `checked_shl`, `checked_shr`, `saturating_add`, `saturating_sub`, and `saturating_mul` methods for all integers.][73858] - [The `checked_abs`, `saturating_abs`, `saturating_neg`, and `signum` for all signed integers.][73858] - [The `is_ascii_alphabetic`, `is_ascii_uppercase`, `is_ascii_lowercase`, `is_ascii_alphanumeric`, `is_ascii_digit`, `is_ascii_hexdigit`, `is_ascii_punctuation`, `is_ascii_graphic`, `is_ascii_whitespace`, and `is_ascii_control` methods for `char` and `u8`.][73858] Cargo ----- - [`build-dependencies` are now built with opt-level 0 by default.][cargo/8500] You can override this by setting the following in your `Cargo.toml`. ```toml [profile.release.build-override] opt-level = 3 ``` - [`cargo-help` will now display man pages for commands rather just the `--help` text.][cargo/8456] - [`cargo-metadata` now emits a `test` field indicating if a target has tests enabled.][cargo/8478] - [`workspace.default-members` now respects `workspace.exclude`.][cargo/8485] - [`cargo-publish` will now use an alternative registry by default if it's the only registry specified in `package.publish`.][cargo/8571] Misc ---- - [Added a help button beside Rustdoc's searchbar that explains rustdoc's type based search.][75366] - [Added the Ayu theme to rustdoc.][71237] Compatibility Notes ------------------- - [Bumped the minimum supported Emscripten version to 1.39.20.][75716] - [Fixed a regression parsing `{} && false` in tail expressions.][74650] - [Added changes to how proc-macros are expanded in `macro_rules!` that should help to preserve more span information.][73084] These changes may cause compiliation errors if your macro was unhygenic or didn't correctly handle `Delimiter::None`. - [Moved support for the CloudABI target to tier 3.][75568] - [`linux-gnu` targets now require minimum kernel 2.6.32 and glibc 2.11.][74163] Internal Only -------- - [Improved default settings for bootstrapping in `x.py`.][73964] You can read details about this change in the ["Changes to `x.py` defaults"](https://blog.rust-lang.org/inside-rust/2020/08/30/changes-to-x-py-defaults.html) post on the Inside Rust blog. - [Added the `rustc-docs` component.][75560] This allows you to install and read the documentation for the compiler internal APIs. (Currently only available for `x86_64-unknown-linux-gnu`.) [1.47.0-cfg]: https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard [76980]: https://github.com/rust-lang/rust/issues/76980 [75048]: https://github.com/rust-lang/rust/pull/75048/ [74163]: https://github.com/rust-lang/rust/pull/74163/ [71237]: https://github.com/rust-lang/rust/pull/71237/ [74869]: https://github.com/rust-lang/rust/pull/74869/ [73858]: https://github.com/rust-lang/rust/pull/73858/ [75716]: https://github.com/rust-lang/rust/pull/75716/ [75908]: https://github.com/rust-lang/rust/pull/75908/ [75516]: https://github.com/rust-lang/rust/pull/75516/ [75560]: https://github.com/rust-lang/rust/pull/75560/ [75568]: https://github.com/rust-lang/rust/pull/75568/ [75366]: https://github.com/rust-lang/rust/pull/75366/ [75204]: https://github.com/rust-lang/rust/pull/75204/ [74650]: https://github.com/rust-lang/rust/pull/74650/ [74419]: https://github.com/rust-lang/rust/pull/74419/ [73964]: https://github.com/rust-lang/rust/pull/73964/ [74021]: https://github.com/rust-lang/rust/pull/74021/ [74060]: https://github.com/rust-lang/rust/pull/74060/ [73893]: https://github.com/rust-lang/rust/pull/73893/ [73526]: https://github.com/rust-lang/rust/pull/73526/ [73583]: https://github.com/rust-lang/rust/pull/73583/ [73084]: https://github.com/rust-lang/rust/pull/73084/ [73197]: https://github.com/rust-lang/rust/pull/73197/ [72488]: https://github.com/rust-lang/rust/pull/72488/ [cargo/8456]: https://github.com/rust-lang/cargo/pull/8456/ [cargo/8478]: https://github.com/rust-lang/cargo/pull/8478/ [cargo/8485]: https://github.com/rust-lang/cargo/pull/8485/ [cargo/8500]: https://github.com/rust-lang/cargo/pull/8500/ [cargo/8571]: https://github.com/rust-lang/cargo/pull/8571/ [`Ident::new_raw`]: https://doc.rust-lang.org/nightly/proc_macro/struct.Ident.html#method.new_raw [`Range::is_empty`]: https://doc.rust-lang.org/nightly/std/ops/struct.Range.html#method.is_empty [`RangeInclusive::is_empty`]: https://doc.rust-lang.org/nightly/std/ops/struct.RangeInclusive.html#method.is_empty [`Result::as_deref_mut`]: https://doc.rust-lang.org/nightly/std/result/enum.Result.html#method.as_deref_mut [`Result::as_deref`]: https://doc.rust-lang.org/nightly/std/result/enum.Result.html#method.as_deref [`TypeId::of`]: https://doc.rust-lang.org/nightly/std/any/struct.TypeId.html#method.of [`Vec::leak`]: https://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.leak [`f32::TAU`]: https://doc.rust-lang.org/nightly/std/f32/consts/constant.TAU.html [`f64::TAU`]: https://doc.rust-lang.org/nightly/std/f64/consts/constant.TAU.html [`pointer::offset_from`]: https://doc.rust-lang.org/nightly/std/primitive.pointer.html#method.offset_from @ text @d1 1 a1 3 # $NetBSD: buildlink3.mk,v 1.6 2020/07/08 14:46:14 jperkin Exp $ BUILDLINK_TREE+= rust d7 2 @ 1.6 log @rust: Add support for cross-compiling illumos. It's not really cross-compiled, it's just a different target name, but is treated the same way. Once stabilised and crate support catches up we'll switch over to it by default from x86_64-sun-solaris. Until then I'll build bootstrap kits for both natively. While here fix up a bunch of obvious pkglint warnings. @ text @d1 3 a3 1 # $NetBSD: buildlink3.mk,v 1.5 2020/06/14 15:38:18 nia Exp $ a7 1 BUILDLINK_TREE+= rust @ 1.5 log @rust: More rust.mk explanation. @ text @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.4 2020/05/18 16:17:20 nia Exp $ a5 1 @ 1.4 log @lang: Add rust-bin. Dumb package that selects and installs a binary rust distribution based on its guess of your platform (FreeBSD, NetBSD, Linux x86_64 are all supported). These binaries are the official ones provided by rust upstream and are the same as those provided by the `rustup` tool. You can choose to use a binary rust distribution by setting: RUST_TYPE=bin in mk.conf (or source distribution with RUST_TYPE=src). Currently, RUST_TYPE=bin by default ONLY for NetBSD-x86_64. This is because TNF has been shown to _repeatedly_ be unable and _unwilling_ to ensure that rust-dependent packages build properly on their infrastructure, and NetBSD users are all suffering for it. This was based on minskim's work in pkgsrc-wip. It was tested by building librsvg and firefox-esr with the resulting binaries. @ text @d1 5 a5 1 # $NetBSD: buildlink3.mk,v 1.3 2017/09/30 04:42:43 ryoon Exp $ a12 3 .include "../../lang/rust/type.mk" .if ${RUST_TYPE} != "bin" a13 4 .else BUILDLINK_PKGSRCDIR.rust?= ../../lang/rust-bin .endif @ 1.3 log @Update to 1.20.0 * Disable SunOS/Solaris support because newer bootstrap is not available * Include Rust libraries and Cargo Changelog: Version 1.20.0 (2017-08-31) Language Associated constants are now stabilised. A lot of macro bugs are now fixed. Compiler Struct fields are now properly coerced to the expected field type. Enabled wasm LLVM backend WASM can now be built with the wasm32-experimental-emscripten target. Changed some of the error messages to be more helpful. Add support for RELRO(RELocation Read-Only) for platforms that support it. rustc now reports the total number of errors on compilation failure previously this was only the number of errors in the pass that failed. Expansion in rustc has been sped up 29x. added msp430-none-elf target. rustc will now suggest one-argument enum variant to fix type mismatch when applicable Fixes backtraces on Redox rustc now identifies different versions of same crate when absolute paths of different types match in an error message. Libraries Relaxed Debug constraints on {HashMap,BTreeMap}::{Keys,Values}. Impl PartialEq, Eq, PartialOrd, Ord, Debug, Hash for unsized tuples. Impl fmt::{Display, Debug} for Ref, RefMut, MutexGuard, RwLockReadGuard, RwLockWriteGuard Impl Clone for DefaultHasher. Impl Sync for SyncSender. Impl FromStr for char Fixed how {f32, f64}::{is_sign_negative, is_sign_positive} handles NaN. allow messages in the unimplemented!() macro. ie. unimplemented!("Waiting for 1.21 to be stable") pub(restricted) is now supported in the thread_local! macro. Upgrade to Unicode 10.0.0 Reimplemented {f32, f64}::{min, max} in Rust instead of using CMath. Skip the main thread's manual stack guard on Linux Iterator::nth for ops::{Range, RangeFrom} is now done in O(1) time #[repr(align(N))] attribute max number is now 2^31 - 1. This was previously 2^15. {OsStr, Path}::Display now avoids allocations where possible Stabilized APIs CStr::into_c_string CString::as_c_str CString::into_boxed_c_str Chain::get_mut Chain::get_ref Chain::into_inner Option::get_or_insert_with Option::get_or_insert OsStr::into_os_string OsString::into_boxed_os_str Take::get_mut Take::get_ref Utf8Error::error_len char::EscapeDebug char::escape_debug compile_error! f32::from_bits f32::to_bits f64::from_bits f64::to_bits mem::ManuallyDrop slice::sort_unstable_by_key slice::sort_unstable_by slice::sort_unstable str::from_boxed_utf8_unchecked str::as_bytes_mut str::as_bytes_mut str::from_utf8_mut str::from_utf8_unchecked_mut str::get_mut str::get_unchecked_mut str::get_unchecked str::get str::into_boxed_bytes Cargo Cargo API token location moved from ~/.cargo/config to ~/.cargo/credentials. Cargo will now build main.rs binaries that are in sub-directories of src/bin. ie. Having src/bin/server/main.rs and src/bin/client/main.rs generates target/debug/server and target/debug/client You can now specify version of a binary when installed through cargo install using --vers. Added --no-fail-fast flag to cargo to run all benchmarks regardless of failure. Changed the convention around which file is the crate root. The include/exclude property in Cargo.toml now accepts gitignore paths instead of glob patterns. Glob patterns are now deprecated. Compatibility Notes Functions with 'static in their return types will now not be as usable as if they were using lifetime parameters instead. The reimplementation of {f32, f64}::is_sign_{negative, positive} now takes the sign of NaN into account where previously didn't. Version 1.19.0 (2017-07-20) Language Numeric fields can now be used for creating tuple structs. RFC 1506 For example struct Point(u32, u32); let x = Point { 0: 7, 1: 0 };. Macro recursion limit increased to 1024 from 64. Added lint for detecting unused macros. loop can now return a value with break. RFC 1624 For example: let x = loop { break 7; }; C compatible unions are now available. RFC 1444 They can only contain Copy types and cannot have a Drop implementation. Example: union Foo { bar: u8, baz: usize } Non capturing closures can now be coerced into fns, RFC 1558 Example: let foo: fn(u8) -> u8 = |v: u8| { v }; Compiler Add support for bootstrapping the Rust compiler toolchain on Android. Change arm-linux-androideabi to correspond to the armeabi official ABI. If you wish to continue targeting the armeabi-v7a ABI you should use --target armv7-linux-androideabi. Fixed ICE when removing a source file between compilation sessions. Minor optimisation of string operations. Compiler error message is now aborting due to previous error(s) instead of aborting due to N previous errors This was previously inaccurate and would only count certain kinds of errors. The compiler now supports Visual Studio 2017 The compiler is now built against LLVM 4.0.1 by default Added a lot of new error codes Added target-feature=+crt-static option RFC 1721 Which allows libraries with C Run-time Libraries(CRT) to be statically linked. Fixed various ARM codegen bugs Libraries String now implements FromIterator> and Extend> Vec now implements From<&mut [T]> Box<[u8]> now implements From> SplitWhitespace now implements Clone [u8]::reverse is now 5x faster and [u16]::reverse is now 1.5x faster eprint! and eprintln! macros added to prelude. Same as the print! macros, but for printing to stderr. Stabilized APIs OsString::shrink_to_fit cmp::Reverse Command::envs thread::ThreadId Cargo Build scripts can now add environment variables to the environment the crate is being compiled in. Example: println!("cargo:rustc-env=FOO=bar"); Subcommands now replace the current process rather than spawning a new child process Workspace members can now accept glob file patterns Added --all flag to the cargo bench subcommand to run benchmarks of all the members in a given workspace. Updated libssh2-sys to 0.2.6 Target directory path is now in the cargmetadata Cargo no longer checks out a local working directory for the crates.io index This should provide smaller file size for the registry, and improve cloning times, especially on Windows machines. Added an --exclude option for excluding certai using the --all option Cargo will now automatically retry when receiving a 5xx error from crates.io The --features option now accepts multiple comma or space delimited values. Added support for custom target specific runners Misc Added ow prefer to download rust packages with XZ compression over GZip packages. Added the ability to escape # in rust documentation By adding additional #'s ie. ## is now # Compatibility Notes MutexGuard may only be Sync if T is Sync. -Z flagning for a year previous to this. As a result of the -Z flag change, the cargo-check plugin no longer works. Users should migrate to the built-in check command, which has been available since 1.16. Ending a float literal with ._ is now a hard erro use ::self::foo; is now a hard error. self paths are always relative while the :: prefix makes a path absolute, but was ignored and the path was relative regardless. Floating point constants in match patterns is now a hard error This was previously ts that don't derive PartialEq & Eq used match patterns is now a hard error This was previously a warning. Lifetimes named '_ are no longer allowed. This was previously a warning. From the pound escape, lines consisting of multiple #s are now visible It is an error to reexport private enum variants. This is known to break a number of crates that depend on an older version of mustache. On Windows, if VCINSTALLDIR is set incorrectly, rustc will try to use it to find the linker, and the build will fail where it did not previously Version 1.18.0 (2017-06-08) Language Stabilize pub(restricted) pub can now accept a module path to make the item visible to just that module tree. Also accepts the keyword crate to make something public to the whole crate but not users of the library. Example: pub(crate) mod utils;. RFC 1422. Stabilize #![windows_subsystem] attribute conservative exposure of the /SUBSYSTEM linker flag on Windows platforms. RFC 1665. Refactor of trait object type parsing Now ty in macros can accept types like Write + Send, trailing + are now supported in trait objects, and better error reporting for trait objects starting with ?Sized. 0e+10 is now a valid floating point literal Now warns if you bind a lifetime parameter to 'static Tuples, Enum variant fields, and structs with no repr attribute or with #[repr(Rust)] are reordered to minimize padding and produce a smaller representation in some cases. Compiler rustc can now emit mir with --emit mir Improved LLVM IR for trivial functions Added explanation for E0090(Wrong number of lifetimes are supplied) rustc compilation is now 15%-20% faster Thanks to optimisation opportunities found through profiling Improved backtrace formatting when panicking Libraries Specialized Vec::from_iter being passed vec::IntoIter if the iterator hasn't been advanced the original Vec is reassembled with no actual iteration or reallocation. Simplified HashMap Bucket interface provides performance improvements for iterating and cloning. Specialize Vec::from_elem to use calloc Fixed Race condition in fs::create_dir_all No longer caching stdio on Windows Optimized insertion sort in slice insertion sort in some cases 2.50%~ faster and in one case now 12.50% faster. Optimized AtomicBool::fetch_nand Stabilized APIs Child::try_wait HashMap::retain HashSet::retain PeekMut::pop TcpStream::peek UdpSocket::peek UdpSocket::peek_from Cargo Added partial Pijul support Pijul is a version control system in Rust. You can now create new cargo projects with Pijul using cargo new --vcs pijul Now always emits build script warnings for crates that fail to build Added Android build support Added --bins and --tests flags now you can build all programs of a certain type, for example cargo build --bins will build all binaries. Added support for haiku Misc rustdoc can now use pulldown-cmark with the --enable-commonmark flag Added rust-winbg script for better debugging on Windows Rust now uses the official cross compiler for NetBSD rustdoc now accepts # at the start of files Fixed jemalloc support for musl Compatibility Notes Changes to how the 0 flag works in format! Padding zeroes are now always placed after the sign if it exists and before the digits. With the # flag the zeroes are placed after the prefix and before the digits. Due to the struct field optimisation, using transmute on structs that have no repr attribute or #[repr(Rust)] will no longer work. This has always been undefined behavior, but is now more likely to break in practice. The refactor of trait object type parsing fixed a bug where + was receiving the wrong priority parsing things like &for<'a> Tr<'a> + Send as &(for<'a> Tr<'a> + Send) instead of (&for<'a> Tr<'a>) + Send Overlapping inherent impls are now a hard error PartialOrd and Ord must agree on the ordering. rustc main.rs -o out --emit=asm,llvm-ir Now will output out.asm and out.ll instead of only one of the filetypes. calling a function that returns Self will no longer work when the size of Self cannot be statically determined. rustc now builds with a "pthreads" flavour of MinGW for Windows GNU this has caused a few regressions namely: Changed the link order of local static/dynamic libraries (respecting the order on given rather than having the compiler reorder). Changed how MinGW is linked, native code linked to dynamic libraries may require manually linking to the gcc support library (for the native code itself) Version 1.17.0 (2017-04-27) Language The lifetime of statics and consts defaults to 'static. RFC 1623 Fields of structs may be initialized without duplicating the field/variable names. RFC 1682 Self may be included in the where clause of impls. RFC 1647 When coercing to an unsized type lifetimes must be equal. That is, there is no subtyping between T and U when T: Unsize. For example, coercing &mut [&'a X; N] to &mut [&'b X] requires 'a be equal to 'b. Soundness fix. Values passed to the indexing operator, [], automatically coerce Static variables may contain references to other statics Compiler Exit quickly on only --emit dep-info Make -C relocation-model more correctly determine whether the linker creates a position-independent executable Add -C overflow-checks to directly control whether integer overflow panics The rustc type checker now checks items on demand instead of in a single in-order pass. This is mostly an internal refactoring in support of future work, including incremental type checking, but also resolves RFC 1647, allowing Self to appear in impl where clauses. Optimize vtable loads Turn off vectorization for Emscripten targets Provide suggestions for unknown macros imported with use Fix ICEs in path resolution Strip exception handling code on Emscripten when panic=abort Add clearer error message using &str + &str Stabilized APIs Arc::into_raw Arc::from_raw Arc::ptr_eq Rc::into_raw Rc::from_raw Rc::ptr_eq Ordering::then Ordering::then_with BTreeMap::range BTreeMap::range_mut collections::Bound process::abort ptr::read_unaligned ptr::write_unaligned Result::expect_err Cell::swap Cell::replace Cell::into_inner Cell::take Libraries BTreeMap and BTreeSet can iterate over ranges Cell can store non-Copy types. RFC 1651 String implements FromIterator<&char> Box implements a number of new conversions: From> for String, From> for Vec, From> for CString, From> for OsString, From> for PathBuf, Into> for String, Into> for Vec, Into> for CString, Into> for OsString, Into> for PathBuf, Default for Box, Default for Box, Default for Box, From<&CStr> for Box, From<&OsStr> for Box, From<&Path> for Box ffi::FromBytesWithNulError implements Error and Display Specialize PartialOrd for [A] where A: Ord Slightly optimize slice::sort Add ToString trait specialization for Cow<'a, str> and String Box<[T]> implements From<&[T]> where T: Copy, Box implements From<&str> IpAddr implements From for various arrays. SocketAddr implements From<(I, u16)> where I: Into format! estimates the needed capacity before writing a string Support unprivileged symlink creation in Windows PathBuf implements Default Implement PartialEq<[A]> for VecDeque HashMap resizes adaptively to guard against DOS attacks and poor hash functions. Cargo Add cargo check --all Add an option to ignore SSL revocation checking Add cargo run --package Add required_features Assume build.rs is a build script Find workspace via workspace_root link in containing member Misc Documentation is rendered with mdbook instead of the obsolete, in-tree rustbook The "Unstable Book" documents nightly-only features Improve the style of the sidebar in rustdoc output Configure build correctly on 64-bit CPU's with the armhf ABI Fix MSP430 breakage due to i128 Preliminary Solaris/SPARCv9 support rustc is linked statically on Windows MSVC targets, allowing it to run without installing the MSVC runtime. rustdoc --test includes file names in test names This release includes builds of std for sparc64-unknown-linux-gnu, aarch64-unknown-linux-fuchsia, and x86_64-unknown-linux-fuchsia. Initial support for aarch64-unknown-freebsd Initial support for i686-unknown-netbsd This release no longer includes the old makefile build system. Rust is built with a custom build system, written in Rust, and with Cargo. Add Debug implementations for libcollection structs TypeId implements PartialOrd and Ord --test-threads=0 produces an error rustup installs documentation by default The Rust source includes NatVis visualizations. These can be used by WinDbg and Visual Studio to improve the debugging experience. Compatibility Notes Rust 1.17 does not correctly detect the MSVC 2017 linker. As a workaround, either use MSVC 2015 or run vcvars.bat. When coercing to an unsized type lifetimes must be equal. That is, disallow subtyping between T and U when T: Unsize, e.g. coercing &mut [&'a X; N] to &mut [&'b X] requires 'a be equal to 'b. Soundness fix. format! and Display::to_string panic if an underlying formatting implementation returns an error. Previously the error was silently ignored. It is incorrect for write_fmt to return an error when writing to a string. In-tree crates are verified to be unstable. Previously, some minor crates were marked stable and could be accessed from the stable toolchain. Rust git source no longer includes vendored crates. Those that need to build with vendored crates should build from release tarballs. Fix inert attributes from proc_macro_derives During crate resolution, rustc prefers a crate in the sysroot if two crates are otherwise identical. Unlikely to be encountered outside the Rust build system. Fixed bugs around how type inference interacts with dead-code. The existing code generally ignores the type of dead-code unless a type-hint is provided; this can cause surprising inference interactions particularly around defaulting. The new code uniformly ignores the result type of dead-code. Tuple-struct constructors with private fields are no longer visible Lifetime parameters that do not appear in the arguments are now considered early-bound, resolving a soundness bug (#32330). The hr_lifetime_in_assoc_type future-compatibility lint has been in effect since April of 2016. rustdoc: fix doctests with non-feature crate attributes Make transmuting from fn item types to pointer-sized types a hard error @ text @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.2 2017/02/23 09:35:16 jperkin Exp $ d9 3 d13 3 @ 1.2 log @Update lang/rust to 1.15.1. Changes since 1.11.0 are too numerous to list, but can be found here: https://github.com/rust-lang/rust/blob/master/RELEASES.md Add a stage0-bootstrap target to simplify generation of bootstrap kits for platforms which are not supported upstream (primarily SmartOS). @ text @d1 1 a1 1 # $NetBSD: buildlink3.mk,v 1.1 2016/09/06 10:36:49 jperkin Exp $ d8 1 a8 1 BUILDLINK_API_DEPENDS.rust+= rust>=1.15.1 @ 1.1 log @Import rust 1.11.0 as lang/rust into pkgsrc. pkgsrc notes: * The build requires binary bootstraps built by the Rust team. Due to the requirement that only the previous version is supported as a bootstrap compiler, and new versions of Rust are released every 6 weeks, it is unlikely to be practical to build TNF bootstraps. Users should evaluate whether they trust binaries from upstream. * There is currently no SunOS bootstrap provided by the Rust team, so for now a version built by myself is provided by Joyent. * Only Darwin/Linux/SunOS are currently supported. The Rust team do provide NetBSD bootstraps so support should be easy enough to add. Information about Rust from the DESCR: Rust is a systems programming language focused on three goals: safety, speed, and concurrency. It maintains these goals without having a garbage collector, making it a useful language for a number of use cases other languages aren't good at: embedding in other languages, programs with specific space and time requirements, and writing low-level code, like device drivers and operating systems. It improves on current languages targeting this space by having a number of compile-time safety checks that produce no runtime overhead, while eliminating all data races. Rust also aims to achieve "zero-cost abstractions" even though some of these abstractions feel like those of a high-level language. Even then, Rust still allows precise control like a low-level language would. @ text @d1 1 a1 1 # $NetBSD$ d8 1 a8 1 BUILDLINK_API_DEPENDS.rust+= rust>=0.11.0 @