Skip to content

Commit 3b2d187

Browse files
committed
rust186: add a package for rust 1.86.0.
Upstream changes relative to 1.85.1: Version 1.86.0 (2025-04-03) ========================== Language -------- - [Stabilize upcasting trait objects to supertraits.] (rust-lang/rust#134367) - [Allow safe functions to be marked with the `#[target_feature]` attribute.] (rust-lang/rust#134090) - [The `missing_abi` lint now warns-by-default.] (rust-lang/rust#132397) - Rust now lints about double negations, to catch cases that might have intended to be a prefix decrement operator (`--x`) as written in other languages. This was previously a clippy lint, `clippy::double_neg`, and is [now available directly in Rust as `double_negations`.] (rust-lang/rust#126604) - [More pointers are now detected as definitely not-null based on their alignment in const eval.] (rust-lang/rust#133700) - [Empty `repr()` attribute applied to invalid items are now correctly rejected.] (rust-lang/rust#133925) - [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer accepted in more places than intended.] (rust-lang/rust#134276) Compiler -------- - [Debug-assert that raw pointers are non-null on access.] (rust-lang/rust#134424) - [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2` to match Cargo's defaults.] (rust-lang/rust#135439) - [Fix emission of `overflowing_literals` under certain macro environments.] (rust-lang/rust#136393) Platform Support ---------------- - [Replace `i686-unknown-redox` target with `i586-unknown-redox`.] (rust-lang/rust#136698) - [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.] (rust-lang/rust#136700) - New tier 3 targets: - [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`] (rust-lang/rust#133631). For supporting Neutrino QNX 7.1 with `io-socket` network stack. - [`{aarch64-unknown,x86_64-pc}-nto-qnx800`] (rust-lang/rust#133631). For supporting Neutrino QNX 8.0 (`no_std`-only). - [`{x86_64,i686}-win7-windows-gnu`] (rust-lang/rust#134609). Intended for backwards compatibility with Windows 7. `{x86_64,i686}-win7-windows-msvc` are the Windows MSVC counterparts that already exist as Tier 3 targets. - [`amdgcn-amd-amdhsa`](rust-lang/rust#134740). - [`x86_64-pc-cygwin`](rust-lang/rust#134999). - [`{mips,mipsel}-mti-none-elf`] (rust-lang/rust#135074). Initial bare-metal support. - [`m68k-unknown-none-elf`](rust-lang/rust#135085). - [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and `thumbv7a-nuttx-{eabi,eabihf}`] (rust-lang/rust#135757). Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - The type of `FromBytesWithNulError` in `CStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, FromBytesWithNulError>` was [changed from an opaque struct to an enum] (rust-lang/rust#134143), allowing users to examine why the conversion failed. - [Remove `RustcDecodable` and `RustcEncodable`.] (rust-lang/rust#134272) - [Deprecate libtest's `--logfile` option.] (rust-lang/rust#134283) - [On recent versions of Windows, `std::fs::remove_file` will now remove read-only files.] (rust-lang/rust#134679) Stabilized APIs --------------- - [`{float}::next_down`] (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down) - [`{float}::next_up`] (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up) - [`<[_]>::get_disjoint_mut`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut) - [`<[_]>::get_disjoint_unchecked_mut`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut) - [`slice::GetDisjointMutError`] (https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html) - [`HashMap::get_disjoint_mut`] (https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut) - [`HashMap::get_disjoint_unchecked_mut`] (https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut) - [`NonZero::count_ones`] (https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones) - [`Vec::pop_if`] (https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if) - [`sync::Once::wait`] (https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait) - [`sync::Once::wait_force`] (https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force) - [`sync::OnceLock::wait`] (https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait) These APIs are now stable in const contexts: - [`hint::black_box`] (https://doc.rust-lang.org/stable/std/hint/fn.black_box.html) - [`io::Cursor::get_mut`] (https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut) - [`io::Cursor::set_position`] (https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position) - [`str::is_char_boundary`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary) - [`str::split_at`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at) - [`str::split_at_checked`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked) - [`str::split_at_mut`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut) - [`str::split_at_mut_checked`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked) Cargo ----- - [When merging, replace rather than combine configuration keys that refer to a program path and its arguments.] (rust-lang/cargo#15066) - [Error if both `--package` and `--workspace` are passed but the requested package is missing.] (rust-lang/cargo#15071) This was previously silently ignored, which was considered a bug since missing packages should be reported. - [Deprecate the token argument in `cargo login` to avoid shell history leaks.] (rust-lang/cargo#15057) - [Simplify the implementation of `SourceID` comparisons.] (rust-lang/cargo#14980) This may potentially change behavior if the canonicalized URL compares differently in alternative registries. Rustdoc ----- - [Add a sans-serif font setting.] (rust-lang/rust#133636) Compatibility Notes ------------------- - [The `wasm_c_abi` future compatibility warning is now a hard error.] (rust-lang/rust#133951) Users of `wasm-bindgen` should upgrade to at least version 0.2.89, otherwise compilation will fail. - [Remove long-deprecated no-op attributes `#![no_start]` and `#![crate_id]`.] (rust-lang/rust#134300) - [The future incompatibility lint `cenum_impl_drop_cast` has been made into a hard error.] (rust-lang/rust#135964) This means it is now an error to cast a field-less enum to an integer if the enum implements `Drop`. - [SSE2 is now required for "i686" 32-bit x86 hard-float targets; disabling it causes a warning that will become a hard error eventually.] (rust-lang/rust#137037) To compile for pre-SSE2 32-bit x86, use a "i586" target instead. 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. - [Build the rustc on AArch64 Linux with ThinLTO + PGO.] (rust-lang/rust#133807) The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO and PGO, similar to the optimizations we have already performed for the x86-64 compiler on Linux. This should make it up to 30% faster.
1 parent 19539f3 commit 3b2d187

File tree

70 files changed

+3568
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+3568
-0
lines changed

rust186/DESCR

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Rust is a systems programming language focused on three goals: safety,
2+
speed, and concurrency. It maintains these goals without having a
3+
garbage collector, making it a useful language for a number of use cases
4+
other languages aren't good at: embedding in other languages, programs
5+
with specific space and time requirements, and writing low-level code,
6+
like device drivers and operating systems.
7+
8+
It improves on current languages targeting this space by having a number
9+
of compile-time safety checks that produce no runtime overhead, while
10+
eliminating all data races. Rust also aims to achieve "zero-cost
11+
abstractions" even though some of these abstractions feel like those of
12+
a high-level language. Even then, Rust still allows precise control
13+
like a low-level language would.

rust186/HOWTO-BOOTSTRAP

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
How to build a rust bootstrap kit using pkgsrc
2+
----------------------------------------------
3+
4+
A rust bootstrap kit is simply a pre-compiled binary of rust and
5+
the rust standard library, and contains the "rust" and "rust-std"
6+
build results, found in
7+
8+
work/rustc-<version>/build/dist/
9+
as
10+
rust-<version>-<target>.tar.xz
11+
and
12+
rust-std-<version>-<target>.tar.xz
13+
14+
These result files are produced when the "dist" build target is
15+
used, ref. BUILD_TARGET. For a normal native build of the rust
16+
pkgsrc package, the default BUILD_TARGET is "build", not "dist".
17+
18+
There are two possible ways to produce a bootstrap kit:
19+
20+
1) a native build. This requires minimum preparation, except
21+
possibly for setting rust.BUILD_TARGET to "dist" via e.g.
22+
/etc/mk.conf. Note that on NetBSD, using the "BUILD_TARGET" ==
23+
"dist" results in the "rust-cargo-static" option being set, ref.
24+
options.mk. This is so that the resulting bootstrap kits are
25+
built with mostly-static linking, reducing the run-time dependencies
26+
of the bootstrap kits.
27+
28+
2) a cross-build. This requires a bit of preparation:
29+
30+
For each target you want to cross-build rust for, you need
31+
- the cross toolchain resulting from "build.sh tools" for
32+
the intended target
33+
- an OS distribution extracted, including the comp.tgz
34+
set so that the target's include files can be used
35+
- for 32-bit ports, the "libatomic" package needs to be
36+
available. I'm sure there's a clever and long-winded
37+
use of pkg_install which can be used to effect this;
38+
I on my hand have always just extracted the tgz file
39+
and done the minimal cleanup of the "cruft" files
40+
which are part of the package meta-data.
41+
- Pick a root directory for the target, e.g. /u/i386.
42+
Below this directory place the "tools" containing
43+
the cross-compiler in a "tools" sub-directory.
44+
Similarly, the extracted OS distribution in the "dest"
45+
sub-directory.
46+
47+
There are two methods available for doing the cross-compile:
48+
49+
a) Using the "cross.mk" file. For an i386 build against i586, the
50+
following settings should be active:
51+
52+
CROSS_ROOT= /u/i386
53+
MAKE_ENV+= CROSS_ROOT=${CROSS_ROOT}
54+
GNU_CROSS_TARGET= i486--netbsdelf
55+
MAKE_ENV+= GNU_CROSS_TARGET=${GNU_CROSS_TARGET}
56+
TARGET= i586-unknown-netbsd
57+
SCRIPTS= ${WRKDIR}/scripts
58+
CONFIGURE_ARGS+= --host=${TARGET}
59+
CONFIGURE_ARGS+= --target=${TARGET}
60+
CONFIGURE_ARGS+= --set=target.${TARGET}.cc=${SCRIPTS}/gcc-wrap
61+
CONFIGURE_ARGS+= --set=target.${TARGET}.cxx=${SCRIPTS}/c++-wrap
62+
CONFIGURE_ARGS+= --set=target.${TARGET}.linker=${SCRIPTS}/gcc-wrap
63+
CONFIGURE_ARGS+= --set=target.${TARGET}.ar=${CROSS_ROOT}/tools/bin/${GNU_CROSS_TARGET}-ar
64+
65+
Then doing a "make" will cross-build rust, including the LLVM
66+
embedded in the rust distribution, ref. the defaulting of that
67+
option when TARGET is defined ref. options.mk.
68+
69+
Note that when TARGET is set, the default build target for
70+
the rust makefile becomes "dist", so there's no need to set
71+
rust.BUILD_TARGET for cross-builds.
72+
73+
b) Using the "do-cross.mk" Makefile. This will attempt to
74+
cross-build rust for all the targets listed in the SHORT_TARGETS
75+
variable in that file. Overriding the root directories for
76+
the various targets can be done by making your own "local-roots.mk"
77+
file, ref. "do-cross.mk".
78+
79+
This will create a "dist" subdirectory in the rust pkgsrc
80+
directory, and the bootstrap kits for each architecture, plus
81+
the library source kit will be placed in this directory.
82+
83+
The bootstrap kits can then be placed in /usr/pkgsrc/distfiles, and
84+
be used by the "next" rust version, where you can use "make makesum"
85+
to compute the updated checksums for the bootstrap kits.

0 commit comments

Comments
 (0)