- Update to version 1.53:
+ 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 `◆` 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]
\* Refer to Rust's [platform support page][platform-support-doc] for more
information on Rust's tiered platform support.
+ 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]
OBS-URL: https://build.opensuse.org/request/show/900678
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=292
- Update to version 1.52.1:
- This release works around broken builds on 1.52.0, which are caused by newly
added verification. The bugs this verification detects are present in all
Rust versions, and can trigger miscompilations in incremental builds, so
downgrading to a prior stable version is not a fix.
- What should a Rust programmer do in response?
- upgrade to 1.52.1
- deleting your incremental compilation cache (e.g. by running cargo clean)
- forcing incremental compilation to be disabled, by setting
CARGO_INCREMENTAL=0 in your environment or build.incremental to false in
the config.toml.
- For more: https://blog.rust-lang.org/2021/05/10/Rust-1.52.1.html
OBS-URL: https://build.opensuse.org/request/show/892143
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=290
- Update to version 1.52:
+ 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]
+ Libraries
- [`OsString` now implements `Extend` and `FromIterator`.][82121]
- [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879]
- [`Arc<impl Error>` 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`]
OBS-URL: https://build.opensuse.org/request/show/891155
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=288
- Update to version 1.51:
+ 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.
+ 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<str>`.][80279]
- [`u64` and `u128` now implement `From<char>`.][79502]
- [`Error` is now implemented for `&T` where `T` implements `Error`.][75180]
- [`Poll::{map_ok, map_err}` are now implemented for `Poll<Option<Result<T, E>>>`.][80968]
- [`unsigned_abs` is now implemented for all signed integer types.][80959]
- [`io::Empty` now implements `io::Seek`.][78044]
- [`rc::Weak<T>` and `sync::Weak<T>`'s methods such as `as_ptr` are now implemented for
`T: ?Sized` types.][80764]
+ Stabilized APIs
- [`Arc::decrement_strong_count`]
- [`Arc::increment_strong_count`]
- [`Once::call_once_force`]
OBS-URL: https://build.opensuse.org/request/show/883116
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=284
- Update to version 1.50:
* This fixes build on armv7 - boo#1181643
+ Language
- You can now use const values for x in [x; N] array expressions.
This has been technically possible since 1.38.0, as it was
unintentionally stabilized.
- Assignments to ManuallyDrop<T> union fields are now considered safe.
+ Compiler
- Added tier 3* support for the armv5te-unknown-linux-uclibceabi
target.
- Added tier 3 support for the aarch64-apple-ios-macabi target.
- The x86_64-unknown-freebsd is now built with the full toolset.
- Dropped support for all cloudabi targets.
* Refer to Rust's platform support page for more information on
Rust's tiered platform support.
+ Libraries
- proc_macro::Punct now implements PartialEq<char>.
- ops::{Index, IndexMut} are now implemented for fixed sized
arrays of any length.
- On Unix platforms, the std::fs::File type now has a "niche" of -1.
This value cannot be a valid file descriptor, and now means Option<File>
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
IpAddr::is_unspecified
IpAddr::is_loopback
IpAddr::is_multicast
Ipv4Addr::octets
Ipv4Addr::is_loopback
Ipv4Addr::is_private
Ipv4Addr::is_link_local
Ipv4Addr::is_multicast
Ipv4Addr::is_broadcast
Ipv4Addr::is_documentation
Ipv4Addr::to_ipv6_compatible
Ipv4Addr::to_ipv6_mapped
Ipv6Addr::segments
Ipv6Addr::is_unspecified
Ipv6Addr::is_loopback
Ipv6Addr::is_multicast
Ipv6Addr::to_ipv4
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_next_power_of_two for all unsigned integer types.
+ Cargo
- Added the [build.rustc-workspace-wrapper] option. This option
sets a wrapper to execute instead of rustc, for workspace members only.
- cargo:rerun-if-changed will now, if provided a directory,
scan the entire contents of that directory for changes.
- Added the --workspace flag to the cargo update command.
+ Misc
- The search results tab and the help button are focusable
with keyboard in rustdoc.
- Running tests will now print the total time taken to execute.
+ Compatibility Notes
- The compare_and_swap method on atomics has been deprecated.
It's recommended to use the compare_exchange and
compare_exchange_weak methods instead.
- Changes in how TokenStreams are checked have fixed some cases
where you could write unhygenic macro_rules! macros.
- #![test] as an inner attribute is now considered unstable
like other inner macro attributes, and reports an error by
default through the soft_unstable lint.
- Overriding a forbid lint at the same level that it was set
is now a hard error.
- You can no longer intercept panic! calls by supplying your own
macro. It's recommended to use the #[panic_handler] attribute
to provide your own implementation.
- Semi-colons after item statements (e.g. struct Foo {};)
now produce a warning.
- Add download_helper.sh to ease download of bootstrap packages
OBS-URL: https://build.opensuse.org/request/show/877726
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=277