- 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
FWIW, I've now used rust-1.49.0 successfully to build both MozillaFirefox-84.0.2 and firefox-esr-78.6.1!
FWIW2, I raised the memory constraints for x86_64 from 8 to 11G, because otherwise a build got killed due to OOM too often.
This SR contains everything which got accepted for 1.48 just recently.
- Update to version 1.49.0
+ Language
- Unions can now implement Drop, and you can now have a field in
a union with ManuallyDrop<T>.
- You can now cast uninhabited enums to integers.
- You can now bind by reference and by move in patterns. This
allows you to selectively borrow individual components of a type.
E.g.
#[derive(Debug)]
struct Person {
name: String,
age: u8,
}
let person = Person {
name: String::from("Alice"),
age: 20,
};
// `name` is moved out of person, but `age` is referenced.
let Person { name, ref age } = person;
println!("{} {}", name, age);
+ Compiler
- Added tier 1* support for aarch64-unknown-linux-gnu.
- Added tier 2 support for aarch64-apple-darwin.
- Added tier 2 support for aarch64-pc-windows-msvc.
- Added tier 3 support for mipsel-unknown-none.
- Raised the minimum supported LLVM version to LLVM 9.
- Output from threads spawned in tests is now captured.
- Change os and vendor values to "none" and "unknown" for some targets
* Refer to Rust's platform support page for more information on Rust's
tiered platform support.
+ Libraries
- RangeInclusive now checks for exhaustion when calling contains and
indexing.
- ToString::to_string now no longer shrinks the internal buffer in
the default implementation.
- ops::{Index, IndexMut} are now implemented for fixed sized arrays
of any length.
+ Stabilized APIs
- slice::select_nth_unstable
- slice::select_nth_unstable_by
- slice::select_nth_unstable_by_key
The following previously stable methods are now const.
- Poll::is_ready
- Poll::is_pending
+ Cargo
- Building a crate with cargo-package should now be independently
reproducible.
- cargo-tree now marks proc-macro crates.
- Added CARGO_PRIMARY_PACKAGE build-time environment variable. This
variable will be set if the crate being built is one the user
selected to build, either with -p or through defaults.
- You can now use glob patterns when specifying packages & targets.
+ Compatibility Notes
- Demoted i686-unknown-freebsd from host tier 2 to target tier 2
support.
- Macros that end with a semi-colon are now treated as statements
even if they expand to nothing.
- Rustc will now check for the validity of some built-in attributes
on enum variants. Previously such invalid or unused attributes
could be ignored.
- Leading whitespace is stripped more uniformly in documentation
comments, which may change behavior. You read this post about
the changes for more details.
- Trait bounds are no longer inferred for associated types.
+ 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.
- rustc's internal crates are now compiled using the initial-exec
Thread Local Storage model.
- Calculate visibilities once in resolve.
- Added system to the llvm-libunwind bootstrap config option.
- Added --color for configuring terminal color support to bootstrap.
- Rebased patches:
+ ignore-Wstring-conversion.patch (location)
OBS-URL: https://build.opensuse.org/request/show/862664
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=275
Final SR - promised :)
- <https://github.com/rust-lang/rust/issues/74976>: Add "--stage 1"
to the "./x.py doc" call to ensure the newly built compiler gets
used.
-------------------------------------------------------------------
Sat Jan 9 09:25:07 UTC 2021 - Manfred Hollstein <manfred.h@gmx.net>
- Leap 15.3 does not provide a suitable llvm-devel package, hence
explicitly require llvm9-devel. Details can be seen in the following
e-mail thread
<https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/ZQWAMG2VYBSI2BFM7G3H5YG26ALXWAOA/>
-------------------------------------------------------------------
Sun Jan 3 11:27:23 UTC 2021 - Manfred Hollstein <manfred.h@gmx.net>
- LLVM >= 9.0 is needed nowadays.
- Disable usage of "ninja" for all distributions older than Leap 15.2
-------------------------------------------------------------------
Sat Jan 2 16:50:47 UTC 2021 - Manfred Hollstein <manfred.h@gmx.net>
- Update to version 1.48.0
+ Language
- The `unsafe` keyword is now syntactically permitted on modules.
This is still rejected semantically, but can now be parsed by procedural
macros.
+ Compiler
- Stabilised the `-C link-self-contained=<yes|no>` compiler flag.
This tells `rustc` whether to link its own C runtime and libraries or to
rely on a external linker to find them. (Supported only on `windows-gnu`,
`linux-musl`, and `wasi` platforms.)
- You can now use `-C target-feature=+crt-static` on `linux-gnu` targets.
Note: If you're using cargo you must explicitly pass the `--target` flag.
- Added tier 2* support for aarch64-unknown-linux-musl.
* Refer to Rust's platform support page for more information on Rust's
tiered platform support.
+ Libraries
- io::Write is now implemented for &ChildStdin &Sink, &Stdout, and &Stderr.
- All arrays of any length now implement TryFrom<Vec<T>>.
- The matches! macro now supports having a trailing comma.
- Vec<A> now implements PartialEq<[B]> where A: PartialEq<B>.
- The RefCell::{replace, replace_with, clone} methods now all use #[track_caller].
+ Stabilized APIs
- slice::as_ptr_range
- slice::as_mut_ptr_range
- VecDeque::make_contiguous
- future::pending
- future::ready
The following previously stable methods are now `const fn's`:
- Option::is_some
- Option::is_none
- Option::as_ref
- Result::is_ok
- Result::is_err
- Result::as_ref
- Ordering::reverse
- Ordering::then
+ Cargo
+ Rustdoc
- You can now link to items in rustdoc using the intra-doc link syntax.
E.g. /// Uses [`std::future`] will automatically generate a link to
std::future's documentation. See "Linking to items by name" for more
information.
- You can now specify #[doc(alias = "<alias>")] on items to add search
aliases when searching through rustdoc's UI.
+ Compatibility Notes
- Promotion of references to 'static lifetime inside const fn now
follows the same rules as inside a fn body. In particular, &foo()
will not be promoted to 'static lifetime any more inside const fns.
- Associated type bindings on trait objects are now verified to meet
the bounds declared on the trait when checking that they implement
the trait.
- When trait bounds on associated types or opaque types are ambiguous,
the compiler no longer makes an arbitrary choice on which bound to use.
- Fixed recursive nonterminals not being expanded in macros during
pretty-print/reparse check. This may cause errors if your macro
wasn't correctly handling recursive nonterminal tokens.
- &mut references to non zero-sized types are no longer promoted.
- rustc will now warn if you use attributes like #[link_name] or
#[cold] in places where they have no effect.
- Updated _mm256_extract_epi8 and _mm256_extract_epi16 signatures
in arch::{x86, x86_64} to return i32 to match the vendor signatures.
- mem::uninitialized will now panic if any inner types inside a struct
or enum disallow zero-initialization.
- #[target_feature] will now error if used in a place where it has no effect.
- Foreign exceptions are now caught by catch_unwind and will cause an
abort. Note: This behaviour is not guaranteed and is still considered
undefined behaviour, see the catch_unwind documentation for further
information.
+ 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.
- Building rustc from source now uses ninja by default over make.
You can continue building with make by setting ninja=false in
your config.toml.
- cg_llvm: fewer_names in uncached_llvm_type
- Made ensure_sufficient_stack() non-generic
- Rebased patches:
+ ignore-Wstring-conversion.patch (location)
OBS-URL: https://build.opensuse.org/request/show/862086
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=272
This request actually fixes two issues:
- rust-rpmlintrc: Reflect updated LLVM name in the filter.
#1: LLVM got updated to version 11, but the rpmlint filter does not reflect it. Fixes:
rust.x86_64: E: shlib-policy-name-error (Badness: 10000) libLLVM-11-rust-1_47_0-stable
Your package contains a single shared library but is not named after its SONAME.
- Make all shared libraries in %{common_libdir} executable; otherwise
the %{fdupes} macro will not find any duplicates in %{rustlibdir}.
#2: Files which only differ in their protection bits (i.e. execution bit in this case) will not be replaced by a hard link using the %{fdupes} call. This patch fixes:
rust.x86_64: E: files-duplicated-waste (Badness: 100) 4349464
Your package contains duplicated files that are not hard- or symlinks. You
should use the %fdupes macro to link the files to one.
Files in question are from /usr/lib/ and /usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/
OBS-URL: https://build.opensuse.org/request/show/849719
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=269
- Update to version 1.47.0
+ 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<RangeFrom<usize>>`.][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`]
OBS-URL: https://build.opensuse.org/request/show/841108
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=267
- Update to version 1.46.0
+ Language
- [`if`, `match`, and `loop` expressions can now be used in const functions.][72437]
- [Additionally you are now also able to coerce and cast to slices (`&[T]`) in
const functions.][73862]
- [The `#[track_caller]` attribute can now be added to functions to use the
function's caller's location information for panic messages.][72445]
- [Recursively indexing into tuples no longer needs parentheses.][71322] E.g.
`x.0.0` over `(x.0).0`.
- [`mem::transmute` can now be used in statics and constants.][72920] **Note**
You currently can't use `mem::transmute` in constant functions.
+ Compiler
- [You can now use the `cdylib` target on Apple iOS and tvOS platforms.][73516]
- [Enabled static "Position Independent Executables" by default
for `x86_64-unknown-linux-musl`.][70740]
+ Libraries
- [`mem::forget` is now a `const fn`.][73887]
- [`String` now implements `From<char>`.][73466]
- [The `leading_ones`, and `trailing_ones` methods have been stabilised for all
integer types.][73032]
- [`vec::IntoIter<T>` now implements `AsRef<[T]>`.][72583]
- [All non-zero integer types (`NonZeroU8`) now implement `TryFrom` for their
zero-able equivalent (e.g. `TryFrom<u8>`).][72717]
- [`&[T]` and `&mut [T]` now implement `PartialEq<Vec<T>>`.][71660]
- [`(String, u16)` now implements `ToSocketAddrs`.][73007]
- [`vec::Drain<'_, T>` now implements `AsRef<[T]>`.][72584]
+ Stabilized APIs
- [`Option::zip`]
- [`vec::Drain::as_slice`]
+ Cargo
OBS-URL: https://build.opensuse.org/request/show/840500
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=265
NOTE: The reason I made an update to 1.44.x instead od 1.45.x is that it's impossible to build 1.45.x with 1.43.x. We will be able to update to 1.45.x after we have 1.44.x compilers reeady.
- Update to version 1.44.1
* rustfmt accepts rustfmt_skip in cfg_attr again.
* Don't hash executable filenames on apple platforms, fixing backtraces.
* Fix crashes when finding backtrace on macOS.
* Clippy applies lint levels into different files.
- Update to version 1.44.0
+ Language
- You can now use `async/.await` with `#[no_std]` enabled.
- Added the `unused_braces` lint.
- Expansion-driven outline module parsing
+ Compiler
- Rustc now respects the `-C codegen-units` flag in incremental mode.
Additionally when in incremental mode rustc defaults to 256 codegen units.
- Refactored `catch_unwind` to have zero-cost, unless unwinding is enabled and
a panic is thrown.
- Added tier 3\* support for the `aarch64-unknown-none` and
`aarch64-unknown-none-softfloat` targets.
- Added tier 3 support for `arm64-apple-tvos` and
`x86_64-apple-tvos` targets.
+ Libraries
- Special cased `vec![]` to map directly to `Vec::new()`. This allows
`vec![]` to be able to be used in `const` contexts.
- `convert::Infallible` now implements `Hash`.
- `OsString` now implements `DerefMut` and `IndexMut` returning
a `&mut OsStr`.
- Unicode 13 is now supported.
- `String` now implements `From<&mut str>`.
- `IoSlice` now implements `Copy`.
- `Vec<T>` now implements `From<[T; N]>`. Where `N` is at most 32.
- `proc_macro::LexError` now implements `fmt::Display` and `Error`.
OBS-URL: https://build.opensuse.org/request/show/824719
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=254
- Update to version 1.41.1:
- Always check types of static items
- Always check lifetime bounds of `Copy` impls
- Fix miscompilation in callers of `Layout::repeat`
- Update to version 1.41.0:
+ Language
- You can now pass type parameters to foreign items when implementing
traits. E.g. You can now write `impl<T> From<Foo> for Vec<T> {}`.
- You can now arbitrarily nest receiver types in the `self` position. E.g. you can
now write `fn foo(self: Box<Box<Self>>) {}`. Previously only `Self`, `&Self`,
`&mut Self`, `Arc<Self>`, `Rc<Self>`, and `Box<Self>` were allowed.
- You can now use any valid identifier in a `format_args` macro.
Previously identifiers starting with an underscore were not allowed.
- Visibility modifiers (e.g. `pub`) are now syntactically allowed on trait items and
enum variants. These are still rejected semantically, but
can be seen and parsed by procedural macros and conditional compilation.
+ Compiler
- Rustc will now warn if you have unused loop `'label`s.
- Removed support for the `i686-unknown-dragonfly` target.
- Added tier 3 support\* for the `riscv64gc-unknown-linux-gnu` target.
- You can now pass an arguments file passing the `@path` syntax
to rustc. Note that the format differs somewhat from what is
found in other tooling; please see the documentation for
more information.
- You can now provide `--extern` flag without a path, indicating that it is
available from the search path or specified with an `-L` flag.
Refer to Rust's [platform support page][forge-platform-support] for more
information on Rust's tiered platform support.
+ Libraries
- The `core::panic` module is now stable. It was already stable
through `std`.
- `NonZero*` numerics now implement `From<NonZero*>` if it's a smaller integer
width. E.g. `NonZeroU16` now implements `From<NonZeroU8>`.
- `MaybeUninit<T>` now implements `fmt::Debug`.
+ Stabilized APIs
- `Result::map_or`
- `Result::map_or_else`
- `std::rc::Weak::weak_count`
- `std::rc::Weak::strong_count`
- `std::sync::Weak::weak_count`
- `std::sync::Weak::strong_count`
+ Cargo
- Cargo will now document all the private items for binary crates
by default.
- `cargo-install` will now reinstall the package if it detects that it is out
of date.
- Cargo.lock now uses a more git friendly format that should help to reduce
merge conflicts.
- You can now override specific dependencies's build settings. E.g.
`[profile.dev.package.image] opt-level = 2` sets the `image` crate's
optimisation level to `2` for debug builds. You can also use
`[profile.<profile>.build-override]` to override build scripts and
their dependencies.
+ Misc
- You can now specify `edition` in documentation code blocks to compile the block
for that edition. E.g. `edition2018` tells rustdoc that the code sample
should be compiled the 2018 edition of Rust.
- You can now provide custom themes to rustdoc with `--theme`, and check the
current theme with `--check-theme`.
- You can use `#[cfg(doc)]` to compile an item when building documentation.
+ Compatibility Notes
- As previously announced 1.41.0 will be the last tier 1 release for 32-bit
Apple targets. This means that the source code is still
available to build, but the targets are no longer being tested and release
binaries for those platforms will no longer be distributed by the Rust project.
Please refer to the linked blog post for more information.
OBS-URL: https://build.opensuse.org/request/show/787613
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=243
- Rename README to README.suse-maint and add it as a source
to stop factory-auto from declining submissions automatically
- Re-format the spec file
- Add a README to explain the update process
- Add _service file for download the assets and re-base the patches
- Add hopefully-fix-rustdoc-build.patch to fix rustdoc compilation
- Update to version 1.39.0
+ Language
- You can now create async functions and blocks with async fn,
async move {}, and async {} respectively, and you can now call
.await on async expressions.
- You can now use certain attributes on function, closure, and
function pointer parameters.
- You can now take shared references to bind-by-move patterns in
the if guards of match arms.
+ Compiler
- Added tier 3 support for the i686-unknown-uefi target.
- Added tier 3 support for the sparc64-unknown-openbsd target.
- rustc will now trim code snippets in diagnostics to fit in your
terminal.
- You can now pass --show-output argument to test binaries to
print the output of successful tests.
+ For more details:
https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-1390-2019-11-07
- Drop patches already merged in upstream:
+ rust-61206-assume-tarball-llvm-is-fresh.patch
+ add-option-to-allow-warnings.patch
OBS-URL: https://build.opensuse.org/request/show/752417
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rust?expand=0&rev=45
- Add hopefully-fix-rustdoc-build.patch to fix rustdoc compilation
- Update to version 1.39.0
+ Language
- You can now create async functions and blocks with async fn,
async move {}, and async {} respectively, and you can now call
.await on async expressions.
- You can now use certain attributes on function, closure, and
function pointer parameters.
- You can now take shared references to bind-by-move patterns in
the if guards of match arms.
+ Compiler
- Added tier 3 support for the i686-unknown-uefi target.
- Added tier 3 support for the sparc64-unknown-openbsd target.
- rustc will now trim code snippets in diagnostics to fit in your
terminal.
- You can now pass --show-output argument to test binaries to
print the output of successful tests.
+ For more details:
https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-1390-2019-11-07
- Drop patches already merged in upstream:
+ rust-61206-assume-tarball-llvm-is-fresh.patch
+ add-option-to-allow-warnings.patch
OBS-URL: https://build.opensuse.org/request/show/746768
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=233
- Add patch add-option-to-allow-warnings.patch to add a config option
which allows warnings and so enables v1.38 to bootstrap itself.
- Update to version 1.38.0
+ Language
- The `#[global_allocator]` attribute can now be used in submodules.
- The `#[deprecated]` attribute can now be used on macros.
+ Compiler
- Added pipelined compilation support to `rustc`. This will
improve compilation times in some cases.
+ Libraries
- `ascii::EscapeDefault` now implements `Clone` and `Display`.
- Derive macros for prelude traits (e.g. `Clone`, `Debug`, `Hash`) are now
available at the same path as the trait. (e.g. The `Clone` derive macro
is available at `std::clone::Clone`). This also makes all built-in macros
available in `std`/`core` root. e.g. `std::include_bytes!`.
- `str::Chars` now implements `Debug`.
- `slice::{concat, connect, join}` now accepts `&[T]` in addition to `&T`.
- `*const T` and `*mut T` now implement `marker::Unpin`.
- `Arc<[T]>` and `Rc<[T]>` now implement `FromIterator<T>`.
- Added euclidean remainder and division operations (`div_euclid`,
`rem_euclid`) to all numeric primitives. Additionally `checked`,
`overflowing`, and `wrapping` versions are available for all
integer primitives.
- `thread::AccessError` now implements `Clone`, `Copy`, `Eq`, `Error`, and
`PartialEq`.
- `iter::{StepBy, Peekable, Take}` now implement `DoubleEndedIterator`.
+ Stabilized APIs
- `<*const T>::cast`
- `<*mut T>::cast`
- `Duration::as_secs_f32`
- `Duration::as_secs_f64`
- `Duration::div_f32`
- `Duration::div_f64`
- `Duration::from_secs_f32`
- `Duration::from_secs_f64`
- `Duration::mul_f32`
- `Duration::mul_f64`
- `any::type_name`
+ Cargo
- Added pipelined compilation support to `cargo`.
- You can now pass the `--features` option multiple times to enable
multiple features.
+ Misc
- `rustc` will now warn about some incorrect uses of
`mem::{uninitialized, zeroed}` that are known to cause undefined behaviour.
OBS-URL: https://build.opensuse.org/request/show/734169
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=229
- Update to version 1.34.0
+ Language
- You can now use `#[deprecated = "reason"]` 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.
- You can now write `extern crate self as foo;` to import your
crate's root into the extern prelude.
+ Compiler
- You can now target `riscv64imac-unknown-none-elf` and
`riscv64gc-unknown-none-elf`.
- You can now enable linker plugin LTO optimisations with
`-C linker-plugin-lto`. 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`.
+ Libraries
- The trait bounds have been removed on some of `HashMap<K, V, S>`'s
and `HashSet<T, S>`'s basic methods. Most notably you no longer
require the `Hash` trait to create an iterator.
- The `Ord` trait bounds have been removed on some of
`BinaryHeap<T>`'s basic methods. 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.
- Indexing a `str` is now generic over all types that
implement `SliceIndex<str>`.
- `str::trim`, `str::trim_matches`, `str::trim_{start, end}`, and
`str::trim_{start, end}_matches` are now `#[must_use]` 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. 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.
+ Misc
- You can now use the `?` operator in your documentation
tests without manually adding `fn main() -> Result<(), _> {}`.
+ Compatibility Notes
- `Command::before_exec` is now deprecated in favor of the
unsafe method `Command::pre_exec`.
- Use of `ATOMIC_{BOOL, ISIZE, USIZE}_INIT` is now deprecated.
As you can now use `const` functions in `static` variables.
- Remove depreciated-trim_left_matches.patch.
- Rustfmt version bumped to 1.0.3
+ Change description not provided.
- rls version now in sync with rustc.
- Misc fixes to rust.spec
OBS-URL: https://build.opensuse.org/request/show/694642
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=213
- Use the system's LLVM in SLE15-SP1. That distribution has LLVM7,
and we need to use it there, instead of any other version.
- Prevent auto-provides from being created for things under
rustlibdir, so the RPM does not inadvertently have a Provides for a
bundled LLVM and the Rust library files.
- Sync changes files between SLE and openSUSE, for ease of maintenance.
OBS-URL: https://build.opensuse.org/request/show/688403
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=209
- Remove miri complete instead of excluding. This is experimental
and so should not be included.
- BuildRequires ccache in attempt to reduce compile times.
- Remove more extraneous directories from src that will never be
used.
- Extra patterns in rpmlintrc to catch more false positives:
+ Rust has no stable API, ignore SONAME warnings
+ Tool versions don't update in step with rust, ignore warnings
OBS-URL: https://build.opensuse.org/request/show/686253
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=202
- Update to version 1.33.0
+ Language
- You can now use the `cfg(target_vendor)` attribute. E.g.
`#[cfg(target_vendor="linux")] fn main() { println!("Hello Linux!"); }`
- Integer patterns such as in a match expression can now be exhaustive.
E.g. You can have match statement on a `u8` that covers `0..=255` and
you would no longer be required to have a `_ => unreachable!()` case.
- You can now have multiple patterns in `if let` and `while let`
expressions. You can do this with the same syntax as a `match`
expression. E.g.
```
enum Creature {
Crab(String),
Lobster(String),
Person(String),
}
fn main() {
let state = Creature::Crab("Ferris");
if let Creature::Crab(name) | Creature::Person(name) = state {
println!("This creature's name is: {}", name);
}
}
```
- You can now have irrefutable `if let` and `while let` patterns. Using
this feature will by default produce a warning as this behaviour can be
unintuitive. E.g. `if let _ = 5 {}`
- You can now use `let` bindings, assignments, expression statements,
and irrefutable pattern destructuring in const functions.
- You can now call unsafe const functions. E.g.
```
const unsafe fn foo() -> i32 { 5 }
const fn bar() -> i32 {
unsafe { foo() }
}
```
- You can now specify multiple attributes in a `cfg_attr` attribute.
E.g. `#[cfg_attr(all(), must_use, optimize)]`
- You can now specify a specific alignment with the `#[repr(packed)]`
attribute. E.g. `#[repr(packed(2))] struct Foo(i16, i32);` is a struct
with an alignment of 2 bytes and a size of 6 bytes.
- You can now import an item from a module as an `_`. This allows you to
import a trait's impls, and not have the name in the namespace. E.g.
```
use std::io::Read as _;
// Allowed as there is only one `Read` in the module.
pub trait Read {}
```
- extern` functions will now abort by default when panicking.
This was previously undefined behaviour.
+ Compiler
- You can now set a linker flavor for `rustc` with the `-Clinker-flavor`
command line argument.
- The mininum required LLVM version has been bumped to 6.0.
- Added support for the PowerPC64 architecture on FreeBSD.
- The `x86_64-fortanix-unknown-sgx` target support has been upgraded to
tier 2 support. Visit the [platform support][platform-support] page for
information on Rust's platform support.
- Added support for the `thumbv7neon-linux-androideabi` and
`thumbv7neon-unknown-linux-gnueabihf` targets.
- Added support for the `x86_64-unknown-uefi` target.
+ Libraries
- The methods `overflowing_{add, sub, mul, shl, shr}` are now `const`
functions for all numeric types.
- The methods `rotate_left`, `rotate_right`, and `wrapping_{add, sub, mul, shl, shr}`
are now `const` functions for all numeric types.
- The methods `is_positive` and `is_negative` are now `const` functions for
all signed numeric types.
- The `get` method for all `NonZero` types is now `const`.
- The methods `count_ones`, `count_zeros`, `leading_zeros`, `trailing_zeros`,
`swap_bytes`, `from_be`, `from_le`, `to_be`, `to_le` are now `const` for all
numeric types.
- Ipv4Addr::new` is now a `const` function
+ Stabilized APIs
- unix::FileExt::read_exact_at
- unix::FileExt::write_all_at
- Option::transpose
- Result::transpose
- convert::identity
- pin::Pin
- marker::Unpin
- marker::PhantomPinned
- Vec::resize_with
- VecDeque::resize_with
- Duration::as_millis
- Duration::as_micros
- Duration::as_nanos
+ Cargo
- Cargo should now rebuild a crate if a file was modified during the initial
build.][cargo/6484]
+ Compatibility Notes
- The methods `str::{trim_left, trim_right, trim_left_matches, trim_right_matches}`
are now deprecated in the standard library, and their usage will now produce a warning.
Please use the `str::{trim_start, trim_end, trim_start_matches, trim_end_matches}`
methods instead.
OBS-URL: https://build.opensuse.org/request/show/681133
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=196
- Update to version 1.32.0
- Language
+ 2018 edition
- You can now use the `?` operator in macro definitions. The `?`
operator allows you to specify zero or one repetitions similar to the `*` and
`+` operators.
- Module paths with no leading keyword like `super`, `self`, or `crate`, will
now always resolve to the item (`enum`, `struct`, etc.) available in the
module if present, before resolving to a external crate or an item the prelude.
E.g.
enum Color { Red, Green, Blue }
use Color::*;
+ All editions
- You can now match against `PhantomData<T>` types.
- You can now match against literals in macros with the `literal`
specifier. This will match against a literal of any type.
E.g. `1`, `'A'`, `"Hello World"`
- Self can now be used as a constructor and pattern for unit and tuple structs. E.g.
struct Point(i32, i32);
impl Point {
pub fn new(x: i32, y: i32) -> Self {
Self(x, y)
}
pub fn is_origin(&self) -> bool {
match self {
Self(0, 0) => true,
_ => false,
}
}
}
- Self can also now be used in type definitions. E.g.
enum List<T>
where
Self: PartialOrd<Self> // can write `Self` instead of `List<T>`
{
Nil,
Cons(T, Box<Self>) // likewise here
}
- You can now mark traits with `#[must_use]`. This provides a warning if
a `impl Trait` or `dyn Trait` is returned and unused in the program.
- Compiler
+ The default allocator has changed from jemalloc to the default allocator on
your system. The compiler itself on Linux & macOS will still use
jemalloc, but programs compiled with it will use the system allocator.
+ Added the `aarch64-pc-windows-msvc` target.
- Libraries
+ `PathBuf` now implements `FromStr`.
- `Box<[T]>` now implements `FromIterator<T>`.
- The `dbg!` macro has been stabilized. This macro enables you to
easily debug expressions in your rust program. E.g.
let a = 2;
let b = dbg!(a * 2) + 1;
// ^-- prints: [src/main.rs:4] a * 2 = 4
assert_eq!(b, 5);
+ The following APIs are now `const` functions and can be used in a
`const` context.
- `Cell::as_ptr`
- `UnsafeCell::get`
- `char::is_ascii`
- `iter::empty`
- `ManuallyDrop::new`
- `ManuallyDrop::into_inner`
- `RangeInclusive::start`
- `RangeInclusive::end`
- `NonNull::as_ptr`
- `slice::as_ptr`
- `str::as_ptr`
- `Duration::as_secs`
- `Duration::subsec_millis`
- `Duration::subsec_micros`
- `Duration::subsec_nanos`
- `CStr::as_ptr`
- `Ipv4Addr::is_unspecified`
- `Ipv6Addr::new`
- `Ipv6Addr::octets`
- Stabilized APIs
+ `i8::to_be_bytes`
+ `i8::to_le_bytes`
+ `i8::to_ne_bytes`
+ `i8::from_be_bytes`
+ `i8::from_le_bytes`
+ `i8::from_ne_bytes`
+ `i16::to_be_bytes`
+ `i16::to_le_bytes`
+ `i16::to_ne_bytes`
+ `i16::from_be_bytes`
+ `i16::from_le_bytes`
+ `i16::from_ne_bytes`
+ `i32::to_be_bytes`
+ `i32::to_le_bytes`
+ `i32::to_ne_bytes`
+ `i32::from_be_bytes`
+ `i32::from_le_bytes`
+ `i32::from_ne_bytes`
+ `i64::to_be_bytes`
+ `i64::to_le_bytes`
+ `i64::to_ne_bytes`
+ `i64::from_be_bytes`
+ `i64::from_le_bytes`
+ `i64::from_ne_bytes`
+ `i128::to_be_bytes`
+ `i128::to_le_bytes`
+ `i128::to_ne_bytes`
+ `i128::from_be_bytes`
+ `i128::from_le_bytes`
+ `i128::from_ne_bytes`
+ `isize::to_be_bytes`
+ `isize::to_le_bytes`
+ `isize::to_ne_bytes`
+ `isize::from_be_bytes`
+ `isize::from_le_bytes`
+ `isize::from_ne_bytes`
+ `u8::to_be_bytes`
+ `u8::to_le_bytes`
+ `u8::to_ne_bytes`
+ `u8::from_be_bytes`
+ `u8::from_le_bytes`
+ `u8::from_ne_bytes`
+ `u16::to_be_bytes`
+ `u16::to_le_bytes`
+ `u16::to_ne_bytes`
+ `u16::from_be_bytes`
+ `u16::from_le_bytes`
+ `u16::from_ne_bytes`
+ `u32::to_be_bytes`
+ `u32::to_le_bytes`
+ `u32::to_ne_bytes`
+ `u32::from_be_bytes`
+ `u32::from_le_bytes`
+ `u32::from_ne_bytes`
+ `u64::to_be_bytes`
+ `u64::to_le_bytes`
+ `u64::to_ne_bytes`
+ `u64::from_be_bytes`
+ `u64::from_le_bytes`
+ `u64::from_ne_bytes`
+ `u128::to_be_bytes`
+ `u128::to_le_bytes`
+ `u128::to_ne_bytes`
+ `u128::from_be_bytes`
+ `u128::from_le_bytes`
+ `u128::from_ne_bytes`
+ `usize::to_be_bytes`
+ `usize::to_le_bytes`
+ `usize::to_ne_bytes`
+ `usize::from_be_bytes`
+ `usize::from_le_bytes`
+ `usize::from_ne_bytes`
- Cargo
+ You can now run `cargo c` as an alias for `cargo check`.][cargo/6218]
+ Usernames are now allowed in alt registry URLs.][cargo/6242]
- Misc
+ `libproc_macro` has been added to the `rust-src` distribution.
- Compatibility Notes
+ The argument types for AVX's
`_mm256_stream_si256`, `_mm256_stream_pd`, `_mm256_stream_ps` have
been changed from `*const` to `*mut` as the previous implementation
was unsound.
OBS-URL: https://build.opensuse.org/request/show/667330
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=179
- Update to version 1.31.0
+ Language
- This version marks the release of the 2018 edition of Rust.
- New lifetime elision rules now allow for eliding lifetimes in functions and
impl headers. E.g. `impl<'a> Reader for BufReader<'a> {}` can now be
`impl Reader for BufReader<'_> {}`. Lifetimes are still required to be defined
in structs.
- You can now define and use `const` functions. These are currently
a strict minimal subset of the const fn RFC. Refer to the
[language reference][const-reference] for what exactly is available.
- You can now use tool lints, which allow you to scope lints from external
tools using attributes. E.g. `#[allow(clippy::filter_map)]`.
- `#[no_mangle]` and `#[export_name]` attributes can now be located anywhere in
a crate, not just in exported functions.
- You can now use parentheses in pattern matches.
+ Compiler
- Updated musl to 1.1.20
+ Libraries
- You can now convert `num::NonZero*` types to their raw equivalvents using the
`From` trait. E.g. `u8` now implements `From<NonZeroU8>`.
- You can now convert a `&Option<T>` into `Option<&T>` and `&mut Option<T>`
into `Option<&mut T>` using the `From` trait.
- You can now multiply (`*`) a `time::Duration` by a `u32`.
+ Stabilized APIs
- `slice::align_to`
- `slice::align_to_mut`
- `slice::chunks_exact`
- `slice::chunks_exact_mut`
- `slice::rchunks`
- `slice::rchunks_mut`
- `slice::rchunks_exact`
- `slice::rchunks_exact_mut`
- `Option::replace`
+ Cargo
- Cargo will now download crates in parallel using HTTP/2.
- You can now rename packages in your Cargo.toml We have a guide
on how to use the `package` key in your dependencies.
OBS-URL: https://build.opensuse.org/request/show/656172
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=174
- Patch: require patching of src/librustc_llvm/build.rs to ignore
a flag that llvm-config --cxxflags outputs which GCC doesn't
recognise.
- Default to building using the distro LLVM where the version is
>= 5.0, instead of the Rust bundled LLVM which requires
compilation. This should decrease build times. SLE LLVM is too old.
- Fixing various rpmlint warnings and errors:
+ ExclusiveArch instead of BuildArch for i686
+ Remove conflicts with same package name
+ Remove a few hidden files during prep, does not touch '.clang-format'
+ Remove old patch macro in comment
+ Fix lint warning about bash and zsh completition files
+ Fix various script shebang warnings (incorrect or missing)
+ Adjust rpmlintrc to mask some 'invalid' warnings
- Move Rust and its tools in to their own category under:
+ Development/Languages/Rust
- Jump from version 1.26.2 to 1.30.0 due to a build issue with using 1.26.x to
compile 1.27.x. This package release requires %{rust_bootstrap} to be set.
- Enable extra rust tools to be built (cargo, rls, rustfmt, analysis)
+ cargo is now packaged with the same version number as the rust release, this
may break any packages that relied on a cargo version number.
- Remove ccache and ninja from BuildRequires.
- Switch build configuration to use configure script, remove config.toml.
- Include all bootstraps in source rpm to make bootstrapping easier to manage
within OBS.
- Remove unused patch: update-config-guess.patch
Update to version 1.30.0 (2018-10-25)
+ Language
- Procedural macros are now available.- These kinds of macros allow for
more powerful code generation. There is a new chapter available
in the Rust Programming Language book that goes further in depth.
- You can now use keywords as identifiers using the raw identifiers
syntax (`r#`),- e.g. `let r#for = true;`
- Using anonymous parameters in traits is now deprecated with a warning and
will be a hard error in the 2018 edition.-
- You can now use `crate` in paths.- This allows you to refer to the
crate root in the path, e.g. `use crate::foo;` refers to `foo` in `src/lib.rs`.
- Using a external crate no longer requires being prefixed with `::`.-
Previously, using a external crate in a module without a use statement
required `let json = ::serde_json::from_str(foo);` but can now be written
as `let json = serde_json::from_str(foo);`.
- You can now apply the `#[used]` attribute to static items to prevent the
compiler from optimising them away, even if they appear to be unused,-
e.g. `#[used] static FOO: u32 = 1;`
- You can now import and reexport macros from other crates with the `use`
syntax.- Macros exported with `#[macro_export]` are now placed into
the root module of the crate. If your macro relies on calling other local
macros, it is recommended to export with the
`#[macro_export(local_inner_macros)]` attribute so users won't have to import
those macros.
- You can now catch visibility keywords (e.g. `pub`, `pub(crate)`) in macros
using the `vis` specifier.-
- Non-macro attributes now allow all forms of literals, not just
strings.- Previously, you would write `#[attr("true")]`, and you can now
write `#[attr(true)]`.
- You can now specify a function to handle a panic in the Rust runtime with the
`#[panic_handler]` attribute.-
+ Compiler
- Added the `riscv32imc-unknown-none-elf` target.-
- Added the `aarch64-unknown-netbsd` target-
+ Libraries
- `ManuallyDrop` now allows the inner type to be unsized.-
+ Stabilized APIs
- `Ipv4Addr::BROADCAST`
- `Ipv4Addr::LOCALHOST`
- `Ipv4Addr::UNSPECIFIED`
- `Ipv6Addr::LOCALHOST`
- `Ipv6Addr::UNSPECIFIED`
- `Iterator::find_map`
- The following methods are replacement methods for `trim_left`, `trim_right`,
`trim_left_matches`, and `trim_right_matches`, which will be deprecated
in 1.33.0:
+ `str::trim_end_matches`
+ `str::trim_end`
+ `str::trim_start_matches`
+ `str::trim_start`
+ Cargo
- `cargo run` doesn't require specifying a package in workspaces.][cargo/5877]
- `cargo doc` now supports `--message-format=json`.][cargo/5878] This is
equivalent to calling `rustdoc --error-format=json`.
- Cargo will now provide a progress bar for builds.][cargo/5995]
+ Misc
- `rustdoc` allows you to specify what edition to treat your code as with the
`--edition` option.-
- `rustdoc` now has the `--color` (specify whether to output color) and
`--error-format` (specify error format, e.g. `json`) options.-
- We now distribute a `rust-gdbgui` script that invokes `gdbgui` with Rust
debug symbols.-
- Attributes from Rust tools such as `rustfmt` or `clippy` are now
available,- e.g. `#[rustfmt::skip]` will skip formatting the next item.
- Update to version 1.29.2 (2018-10-11)
+ Workaround for an aliasing-related LLVM bug, which caused miscompilation.
+ The `rls-preview` component on the windows-gnu targets has been restored.
- Update to version 1.29.1 (2018-09-25)
+ Security Notes
- The standard library's `str::repeat` function contained an out of bounds write
caused by an integer overflow. This has been fixed by deterministically
panicking when an overflow happens.
- Update to version 1.29.0 (2018-09-13)
+ Compiler
- Bumped minimum LLVM version to 5.0.
- Added `powerpc64le-unknown-linux-musl` target.
- Added `aarch64-unknown-hermit` and `x86_64-unknown-hermit` targets.
+ Libraries
- `Once::call_once` no longer requires `Once` to be `'static`.
- `BuildHasherDefault` now implements `PartialEq` and `Eq`.
- `Box<CStr>`, `Box<OsStr>`, and `Box<Path>` now implement `Clone`.
- Implemented `PartialEq<&str>` for `OsString` and `PartialEq<OsString>`
for `&str`.
- `Cell<T>` now allows `T` to be unsized.
- `SocketAddr` is now stable on Redox.
+ Stabilized APIs
- `Arc::downcast`
- `Iterator::flatten`
- `Rc::downcast`
+ Cargo
- Cargo can silently fix some bad lockfiles.][cargo/5831] You can use
`--locked` to disable this behavior.
- `cargo-install` will now allow you to cross compile an install
using `--target`.][cargo/5614]
- Added the `cargo-fix` subcommand to automatically move project code from
2015 edition to 2018.][cargo/5723]
- `cargo doc` can now optionally document private types using the
`--document-private-items` flag.][cargo/5543]
+ Misc
- `rustdoc` now has the `--cap-lints` option which demotes all lints above
the specified level to that level. For example `--cap-lints warn`
will demote `deny` and `forbid` lints to `warn`.
- `rustc` and `rustdoc` will now have the exit code of `1` if compilation
fails and `101` if there is a panic.
- A preview of clippy has been made available through rustup.
You can install the preview with `rustup component add clippy-preview`.
+ Compatibility Notes
- `str::{slice_unchecked, slice_unchecked_mut}` are now deprecated.
Use `str::get_unchecked(begin..end)` instead.
- `std::env::home_dir` is now deprecated for its unintuitive behavior.
Consider using the `home_dir` function from
https://crates.io/crates/dirs instead.
- `rustc` will no longer silently ignore invalid data in target spec.
- `cfg` attributes and `--cfg` command line flags are now more
strictly validated.
- Update to version 1.28.0
+ Language
- The `#[repr(transparent)]` attribute is now stable.- This attribute
allows a Rust newtype wrapper (`struct NewType<T>(T);`) to be represented as
the inner type across Foreign Function Interface (FFI) boundaries.
- The keywords `pure`, `sizeof`, `alignof`, and `offsetof` have been unreserved
and can now be used as identifiers.-
- The `GlobalAlloc` trait and `#[global_allocator]` attribute are now
stable.- This will allow users to specify a global allocator for
their program.
- Unit test functions marked with the `#[test]` attribute can now return
`Result<(), E: Debug>` in addition to `()`.-
- The `lifetime` specifier for `macro_rules!` is now stable.- This
allows macros to easily target lifetimes.
+ Compiler
- The `s` and `z` optimisation levels are now stable.- These optimisations
prioritise making smaller binary sizes. `z` is the same as `s` with the
exception that it does not vectorise loops, which typically results in an even
smaller binary.
- The short error format is now stable.- Specified with
`--error-format=short` this option will provide a more compressed output of
rust error messages.
- Added a lint warning when you have duplicated `macro_export`s.-
- Reduced the number of allocations in the macro parser.- This can
improve compile times of macro heavy crates on average by 5%.
+ Libraries
- Implemented `Default` for `&mut str`.-
- Implemented `From<bool>` for all integer and unsigned number types.-
- Implemented `Extend` for `()`.-
- The `Debug` implementation of `time::Duration` should now be more easily
human readable.- Previously a `Duration` of one second would printed as
`Duration { secs: 1, nanos: 0 }` and will now be printed as `1s`.
- Implemented `From<&String>` for `Cow<str>`, `From<&Vec<T>>` for `Cow<[T]>`,
`From<Cow<CStr>>` for `CString`, `From<CString>, From<CStr>, From<&CString>`
for `Cow<CStr>`, `From<OsString>, From<OsStr>, From<&OsString>` for
`Cow<OsStr>`, `From<&PathBuf>` for `Cow<Path>`, and `From<Cow<Path>>`
for `PathBuf`.-
- Implemented `Shl` and `Shr` for `Wrapping<u128>`
and `Wrapping<i128>`.-
- `DirEntry::metadata` now uses `fstatat` instead of `lstat` when
possible.- This can provide up to a 40% speed increase.
- Improved error messages when using `format!`.-
+ Stabilized APIs
- `Iterator::step_by`
- `Path::ancestors`
- `SystemTime::UNIX_EPOCH`
- `alloc::GlobalAlloc`
- `alloc::Layout`
- `alloc::LayoutErr`
- `alloc::System`
- `alloc::alloc`
- `alloc::alloc_zeroed`
- `alloc::dealloc`
- `alloc::realloc`
- `alloc::handle_alloc_error`
- `btree_map::Entry::or_default`
- `fmt::Alignment`
- `hash_map::Entry::or_default`
- `iter::repeat_with`
- `num::NonZeroUsize`
- `num::NonZeroU128`
- `num::NonZeroU16`
- `num::NonZeroU32`
- `num::NonZeroU64`
- `num::NonZeroU8`
- `ops::RangeBounds`
- `slice::SliceIndex`
- `slice::from_mut`
- `slice::from_ref`
- `{Any + Send + Sync}::downcast_mut`
- `{Any + Send + Sync}::downcast_ref`
- `{Any + Send + Sync}::is`
+ Cargo
- Cargo will now no longer allow you to publish crates with build scripts that
modify the `src` directory.][cargo/5584] The `src` directory in a crate should be
considered to be immutable.
+ Misc
- The `suggestion_applicability` field in `rustc`'s json output is now
stable.- This will allow dev tools to check whether a code suggestion
would apply to them.
+ Compatibility Notes
- Rust will consider trait objects with duplicated constraints to be the same
type as without the duplicated constraint.- For example the below code will
now fail to compile.
```rust
trait Trait {}
impl Trait + Send {
fn test(&self) { println!("one"); } //~ ERROR duplicate definitions with name `test`
}
impl Trait + Send + Send {
fn test(&self) { println!("two"); }
}
- Update to version 1.27.2:
+ Compatibility Notes
- The borrow checker was fixed to avoid an additional potential unsoundness when using
match ergonomics
- Update to version 1.27.1:
+ Security Notes
- rustdoc would execute plugins in the /tmp/rustdoc/plugins directory
when running, which enabled executing code as some other user on a
given machine. This release fixes that vulnerability; you can read
more about this on the blog. The associated CVE is [CVE-2018-1000622].
Thank you to Red Hat for responsibily disclosing this vulnerability to us.
+ Compatibility Notes
- The borrow checker was fixed to avoid an additional potential unsoundness when using
match ergonomics
- Update to version 1.27.0:
+ Language
- Removed 'proc' from the reserved keywords list. This allows `proc` to
be used as an identifier.
- The dyn syntax is now available. This syntax is equivalent to the
bare `Trait` syntax, and should make it clearer when being used in tandem with
`impl Trait` because it is equivalent to the following syntax:
`&Trait == &dyn Trait`, `&mut Trait == &mut dyn Trait`, and
`Box<Trait> == Box<dyn Trait>`.
- Attributes on generic parameters such as types and lifetimes are
now stable. e.g.
`fn foo<#[lifetime_attr] 'a, #[type_attr] T: 'a>() {}`
- The `#[must_use]` attribute can now also be used on functions as well as
types. It provides a lint that by default warns users when the
value returned by a function has not been used.
+ Compiler
- Added the `armvte-unknown-linux-musleabi` target.
+ Libraries
- SIMD (Single Instruction Multiple Data) on x/x_ is now stable.
This includes arch::x & arch::x_ modules which contain
SIMD intrinsics, a new macro called `is_x_feature_detected!`, the
`#[target_feature(enable="")]` attribute, and adding `target_feature = ""` to
the `cfg` attribute.
- A lot of methods for `[u]`, `f`, and `f` previously only available in
std are now available in core.
- The generic `Rhs` type parameter on `ops::{Shl, ShlAssign, Shr}` now defaults
to `Self`.
- std::str::replace` now has the `#[must_use]` attribute to clarify
that the operation isn't done in place.
- Clone::clone`, `Iterator::collect`, and `ToOwned::to_owned` now have
the `#[must_use]` attribute] to warn about unused potentially
expensive allocations.
+ Stabilized APIs
- DoubleEndedIterator::rfind
- DoubleEndedIterator::rfold
- DoubleEndedIterator::try_rfold
- Duration::from_micros
- Duration::from_nanos
- Duration::subsec_micros
- Duration::subsec_millis
- HashMap::remove_entry
- Iterator::try_fold
- Iterator::try_for_each
- NonNull::cast
- Option::filter
- String::replace_range
- Take::set_limit
- hint::unreachable_unchecked
- os::unix::process::parent_id
- ptr::swap_nonoverlapping
- slice::rsplit_mut
- slice::rsplit
- slice::swap_with_slice
+ Cargo
- `cargo-metadata` now includes `authors`, `categories`, `keywords`,
`readme`, and `repository` fields.
- `cargo-metadata` now includes a package's `metadata` table.
- Added the `--target-dir` optional argument. This allows you to specify
a different directory than `target` for placing compilation artifacts.
- Cargo will be adding automatic target inference for binaries, benchmarks,
examples, and tests in the Rust 2018 edition. If your project specifies
specific targets, e.g. using `[[bin]]`, and have other binaries in locations
where cargo would infer a binary, Cargo will produce a warning. You can
disable this feature ahead of time by setting any of the following to false:
`autobins`, `autobenches`, `autoexamples`, `autotests`.
- Cargo will now cache compiler information. This can be disabled by
setting `CARGO_CACHE_RUSTC_INFO=0` in your environment.
+ Compatibility Notes
- Calling a `CharExt` or `StrExt` method directly on core will no longer
work. e.g. `::core::prelude::v1::StrExt::is_empty("")` will not
compile, `"".is_empty()` will still compile.
- `Debug` output on `atomic::{AtomicBool, AtomicIsize, AtomicPtr, AtomicUsize}`
will only print the inner type. E.g.
`print!("{:?}", AtomicBool::new(true))` will print `true`,
not `AtomicBool(true)`.
- The maximum number for `repr(align(N))` is now 2²⁹. Previously you
could enter higher numbers but they were not supported by LLVM. Up to 512MB
alignment should cover all use cases.
- The `.description()` method on the `std::error::Error` trait
has been soft-deprecated. It is no longer required to implement it.
+ Misc
- Added “The Rustc book” into the official documentation.
OBS-URL: https://build.opensuse.org/request/show/646330
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=161
- Update to version 1.26.2:
+ Compatibility Notes
- The borrow checker was fixed to avoid unsoundness when using match ergonomics
- Update to version 1.26.1:
+ Tools
- RLS now works on Windows
- Rustfmt stopped badly formatting text in some cases
+ Compatibility Notes
- `fn main() -> impl Trait` no longer works for non-Termination trait
This reverts an accidental stabilization
- `NaN > NaN` no longer returns true in const-fn contexts
- Prohibit using turbofish for `impl Trait` in method arguments
OBS-URL: https://build.opensuse.org/request/show/615064
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=159
- Patch disabled
* update-config-guess.patch
- Update to 1.25.0
- Language changes:
+ Stabilised `#[repr(align(x))]`.[47006] [RFC 1358]
+ You can now use nested groups of imports.[47948]
e.g. `use std::{fs::File, io::Read, path::{Path, PathBuf}};`
+ You can now have `|` at the start of a match arm.[47947] e.g.
- Compiler changes:
+ Upgraded to LLVM 6.[47828]
+ Added `-C lto=val` option.[47521]
+ Added `i586-unknown-linux-musl` target[47282]
- Library changes:
+ Impl Send for `process::Command` on Unix.[47760]
+ Impl PartialEq and Eq for `ParseCharError`.[47790]
+ `UnsafeCell::into_inner` is now safe.[47204]
+ Implement libstd for CloudABI.[47268]
+ `Float::{from_bits, to_bits}` is now available in libcore.[46931]
+ Implement `AsRef<Path>` for Component[46985]
+ Implemented `Write` for `Cursor<&mut Vec<u8>>`[46830]
+ Moved `Duration` to libcore.[46666]
- Stabilized APIs
+ `Location::column`
+ `ptr::NonNull`
- Misc
+ Rust by example is now shipped with new releases[46196]
- Compatibility Notes:
+ Deprecated `net::lookup_host`.[47510]
+ `rustdoc` has switched to pulldown as the default markdown renderer.[47398]
+ The borrow checker was sometimes incorrectly permitting overlapping borrows
around indexing operations (see [#47349][47349]). This has been fixed (which also
enabled some correct code that used to cause errors (e.g. [#33903][33903] and [#46095][46095]).
+ Removed deprecated unstable attribute `#[simd]`.[47251]
OBS-URL: https://build.opensuse.org/request/show/605639
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=155
- Update to 1.24.0
- Language changes:
+ External `sysv64` ffi is now available.
eg. `extern "sysv64" fn foo () {}`
- Compiler changes:
+ rustc now uses 16 codegen units by default for release builds.
For the fastest builds, utilize `codegen-units=1`.
- Libraries:
+ `str::find::<char>` now uses memchr. This should lead to a 10x
improvement in performance in the majority of cases.
+ `time::{SystemTime, Instant}` now implement `Hash`.
+ impl `From<bool>` for `AtomicBool`
+ impl `From<{CString, &CStr}>` for `{Arc<CStr>, Rc<CStr>}`
+ impl `From<{OsString, &OsStr}>` for `{Arc<OsStr>, Rc<OsStr>}`
+ impl `From<{PathBuf, &Path}>` for `{Arc<Path>, Rc<Path>}`
+ float::from_bits now just uses transmute. This provides some
optimisations from LLVM.
+ Copied `AsciiExt` methods onto `char`
+ Remove `T: Sized` requirement on `ptr::is_null()`
+ impl `From<RecvError>` for `{TryRecvError, RecvTimeoutError}`
+ Optimised `f32::{min, max}` to generate more efficient x86
assembly
+ `[u8]::contains` now uses memchr which provides a 3x speed
improvement
- Compatibility Notes:
+ Floating point types `Debug` impl now always prints a decimal
point.
+ `Ipv6Addr` now rejects superfluous `::`'s in IPv6 addresses
This is in accordance with IETF RFC 4291 §2.2.
+ Unwinding will no longer go past FFI boundaries, and will
instead abort.
+ `Formatter::flags` method is now deprecated. The `sign_plus`,
`sign_minus`, `alternate`, and `sign_aware_zero_pad` should be
used instead.
+ Leading zeros in tuple struct members is now an error
+ `column!()` macro is one-based instead of zero-based
+ `fmt::Arguments` can no longer be shared across threads
+ Access to `#[repr(packed)]` struct fields is now unsafe
+ Cargo sets a different working directory for the compiler
OBS-URL: https://build.opensuse.org/request/show/581963
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rust?expand=0&rev=25
- Add "Requires: %{name} to derived packages to fix derived
packages not being updated with rust (boo#1075883)
- Update to 1.23.0
- Language changes:
+ Arbitrary `auto` traits are now permitted in trait objects.[45772]
+ rustc now uses subtyping on the left hand side of binary operations.[45435]
Which should fix some confusing errors in some operations.
- Compiler changes:
+ Enabled `TrapUnreachable` in LLVM which should mitigate the impact of
undefined behaviour.[45920]
+ rustc now suggests renaming import if names clash.[45660]
+ Display errors/warnings correctly when there are zero-width or
wide characters.[45711]
+ rustc now avoids unnecessary copies of arguments that are
simple bindings[45380] This should improve memory usage on average by 5-10%.
+ Updated musl used to build musl rustc to 1.1.17[45393]
- Library changes:
+ Allow a trailing comma in `assert_eq/ne` macro[45887]
+ Implement Hash for raw pointers to unsized types[45483]
+ impl `From<*mut T>` for `AtomicPtr<T>`[45610]
+ impl `From<usize/isize>` for `AtomicUsize/AtomicIsize`.[45610]
+ Removed the `T: Sync` requirement for `RwLock<T>: Send`[45267]
+ Removed `T: Sized` requirement for `{<*const T>, <*mut T>}::as_ref`
an `<*mut T>::as_mut`[44932]
+ Optimized `Thread::{park, unpark}` implementation[45524]
+ Improved `SliceExt::binary_search` performance.[45333]
+ impl `FromIterator<()>` for `()`[45379]
+ Copied `AsciiExt` trait methods to primitive types.[44042] Use of `AsciiExt`
is now deprecated.
- Misc changes:
+ Releases now ship with the Cargo book documentation.[45692]
+ rustdoc now prints rendering warnings on every run.[45324]
+ Release tarballs now come with rustfmt[45903]
- Compatibility Notes:
+ Changes have been made to type equality to make it more correct,
in rare cases this could break some code.[45853] [Tracking issue for
further information[45852]
+ `char::escape_debug` now uses Unicode 10 over 9.[45571]
+ Upgraded Android SDK to 27, and NDK to r15c.[45580] This drops support for
Android 9, the minimum supported version is Android 14.
+ Bumped the minimum LLVM to 3.9[45326]
- Update to v1.22.1
- Update Cargo to fix an issue with macOS 10.13 "High Sierra"
- Update to v1.22.0
- Language changes:
+ `non_snake_case` lint now allows extern no-mangle functions
+ Now accepts underscores in unicode escapes
+ `T op= &T` now works for numeric types. eg. `let mut x = 2; x += &8;`
+ types that impl `Drop` are now allowed in `const` and `static` types
- Compiler changes:
+ rustc now defaults to having 16 codegen units at debug on supported platforms
+ rustc will no longer inline in codegen units when compiling for debug
This should decrease compile times for debug builds.
+ strict memory alignment now enabled on ARMv6
+ Remove support for the PNaCl target `le32-unknown-nacl`
- Librarie changes
+ Allow atomic operations up to 32 bits
on `armv5te_unknown_linux_gnueabi`
+ `Box<Error>` now impls `From<Cow<str>>`
+ `std::mem::Discriminant` is now guaranteed to be `Send + Sync`
+ `fs::copy` now returns the length of the main stream on NTFS.
+ Properly detect overflow in `Instant += Duration`.
+ impl `Hasher` for `{&mut Hasher, Box<Hasher>}`
+ impl `fmt::Debug` for `SplitWhitespace`.][44303]
+ `Option<T>` now impls `Try`. This allows for using `?` with `Option` types.
- Misc
+ `libbacktrace` is now available on Apple platforms.
+ Stabilised the `compile_fail` attribute for code fences in doc-comments.
This now lets you specify that a given code example will fail to compile.
- Compatibility Notes
+ The minimum Android version that rustc can build for has been bumped
to `4.0` from `2.3`
+ Allowing `T op= &T` for numeric types has broken some type inference cases
- Remove rust-1.21.0-44203-exclude-compiler-rt-test.patch
- Remove rust-1.21.0-44066-ppc64-struct-abi.patch
- Remove rust-1.21.0-44440-s390x-global-align.patch
- Large cleanup of both the spec and config.toml to correct many
build issues for the new version
- Add rust-1.21.0-44203-exclude-compiler-rt-test.patch
- Add rust-1.21.0-44066-ppc64-struct-abi.patch
- Add rust-1.21.0-44440-s390x-global-align.patch
- Remove add-soname.patch
- Update to 1.21.0
- Language changes:
+ You can now use static references for literals.
+ Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.
- Compiler changes:
+ Upgraded jemalloc to 4.5.0[43911]
+ Enabled unwinding panics on Redox[43917]
+ Now runs LLVM in parallel during translation phase.[43506]
- Librarie changes:
+ Generate builtin impls for `Clone` for all arrays and tuples that
are `T: Clone`[43690]
+`Stdin`, `Stdout`, and `Stderr` now implement `AsRawFd`.[43459]
+ `Rc` and `Arc` now implement `From<&[T]> where T: Clone`, `From<str>`,
`From<String>`, `From<Box<T>> where T: ?Sized`, and `From<Vec<T>>`.[42565]
- Stabilized APIs
+`std::mem::discriminant`
- Update add-soname.patch to apply cleanly
- Force enable rust bootstrap so that missing architectures build
- set minimum cmake version
- Update to version 1.20.0
- Remove x86 from build targets
- Language
+ [Associated constants are now stabilised.][42809]
+ [A lot of macro bugs are now fixed.][42913]
- Compiler
+ [Struct fields are now properly coerced to the expected field type.][42807]
+ [Enabled wasm LLVM backend][42571] WASM can now be built with the
`wasm32-experimental-emscripten` target.
+ [Changed some of the error messages to be more helpful.][42033]
+ [Add support for RELRO(RELocation Read-Only) for platforms that support
it.][43170]
+ [rustc now reports the total number of errors on compilation failure][43015]
previously this was only the number of errors in the pass that failed.
+ [Expansion in rustc has been sped up 29x.][42533]
+ [added `msp430-none-elf` target.][43099]
+ [rustc will now suggest one-argument enum variant to fix type mismatch when
applicable][43178]
+ [Fixes backtraces on Redox][43228]
+ [rustc now identifies different versions of same crate when absolute paths of
different types match in an error message.][42826]
- Libraries
+ [Relaxed Debug constraints on `{HashMap,BTreeMap}::{Keys,Values}`.][42854]
+ [Impl `PartialEq`, `Eq`, `PartialOrd`, `Ord`, `Debug`, `Hash` for unsized
tuples.][43011]
+ [Impl `fmt::{Display, Debug}` for `Ref`, `RefMut`, `MutexGuard`,
`RwLockReadGuard`, `RwLockWriteGuard`][42822]
+ [Impl `Clone` for `DefaultHasher`.][42799]
+ [Impl `Sync` for `SyncSender`.][42397]
+ [Impl `FromStr` for `char`][42271]
+ [Fixed how `{f32, f64}::{is_sign_negative, is_sign_positive}` handles
NaN.][42431]
+ [allow messages in the `unimplemented!()` macro.][42155]
ie. `unimplemented!("Waiting for 1.21 to be stable")`
+ [`pub(restricted)` is now supported in the `thread_local!` macro.][43185]
+ [Upgrade to Unicode 10.0.0][42999]
+ [Reimplemented `{f32, f64}::{min, max}` in Rust instead of using CMath.][42430]
+ [Skip the main thread's manual stack guard on Linux][43072]
+ [Iterator::nth for `ops::{Range, RangeFrom}` is now done in O(1) time][43077]
+ [`#[repr(align(N))]` attribute max number is now 2^31 + 1.][43097] This was
previously 2^15.
+ [`{OsStr, Path}::Display` now avoids allocations where possible][42613]
- Compatibility Notes
+ [Functions with `'static` in their return types will now not be as usable as
if they were using lifetime parameters instead.][42417]
+ [The reimplementation of `{f32, f64}::is_sign_{negative, positive}` now
takes the sign of NaN into account where previously didn't.][42430]
- adjust build process and add package for Rust source
- clean-up of useless provides
- add rpmlintrc
- Update to version 1.19
- Language updates:
+ [Numeric fields can now be used for creating tuple structs.][41145] [RFC 1506]
For example `struct Point(u32, u32); let x = Point { 0: 7, 1: 0 };`.
+ [Macro recursion limit increased to 1024 from 64.][41676]
+ [Added lint for detecting unused macros.][41907]
+ [`loop` can now return a value with `break`.][42016] [RFC 1624]
For example: `let x = loop { break 7; };`
+ [C compatible `union`s are now available.][42068] [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 `fn`s,][42162] [RFC 1558]
Example: `let foo: fn(u8) -> u8 = |v: u8| { v };`
- Compiler updates:
+ [Add support for bootstrapping the Rust compiler toolchain on Android.][41370]
+ [Change `arm-linux-androideabi` to correspond to the `armeabi`
official ABI.][41656] 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.][41873]
+ [Minor optimisation of string operations.][42037]
+ [Compiler error message is now `aborting due to previous error(s)` instead of
`aborting due to N previous errors`][42150] This was previously inaccurate and
would only count certain kinds of errors.
+ [The compiler now supports Visual Studio 2017][42225]
+ [The compiler is now built against LLVM 4.0.1 by default][42948]
+ [Added a lot][42264] of [new error codes][42302]
+ [Added `target-feature=+crt-static` option][37406] [RFC 1721] Which allows
libraries with C Run-time Libraries(CRT) to be statically linked.
+ [Fixed various ARM codegen bugs][42740]
- Librarie updates:
+ [`String` now implements `FromIterator<Cow<'a, str>>` and
`Extend<Cow<'a, str>>`][41449]
+ [`Vec` now implements `From<&mut [T]>`][41530]
+ [`Box<[u8]>` now implements `From<Box<str>>`][41258]
+ [`SplitWhitespace` now implements `Clone`][41659]
+ [`[u8]::reverse` is now 5x faster and `[u16]::reverse` is now
1.5x faster][41764]
+ [`eprint!` and `eprintln!` macros added to prelude.][41192] Same as the `print!`
macros, but for printing to stderr.
- Stabilized APIs
+ [`OsString::shrink_to_fit`]
+ [`cmp::Reverse`]
+ [`Command::envs`]
+ [`thread::ThreadId`]
- Misc
+ [Added `rust-windbg.cmd`][39983] for loading rust `.natvis` files in the
Windows Debugger.
+ [Rust will now release XZ compressed packages][rust-installer/57]
+ [rustup will now prefer to download rust packages with
XZ compression][rustup/1100] over GZip packages.
+ [Added the ability to escape `#` in rust documentation][41785] By adding
additional `#`'s ie. `##` is now `#`
- Temporarily disable generation of compiler docs due to build issue
- Change i586 build to produce i686 target instead of i586 so that
x86 Firefox can be built with Rust.
- Update to 1.18.0
-Language updates:
+ [Stabilize pub(restricted)][40556] `pub` can now accept amodule 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][40870] conservative exposure of the
`/SUBSYSTEM` linker flag on Windows platforms. [RFC 1665].
+ [Refactor of trait object type parsing][40043] 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][40589]
+ [Now warns if you bind a lifetime parameter to 'static][40734]
+ [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.][40377]
-Compiler updates
+ [rustc can now emit mir with `--emit mir`][39891]
+ [Improved LLVM IR for trivial functions][40367]
+ [Added explanation for E0090(Wrong number of lifetimes are supplied)][40723]
+ [rustc compilation is now 15%-20% faster][41469] Thanks to optimisation
opportunities found through profiling
+ [Improved backtrace formatting when panicking][38165]
- Library updates:
+ [Specialized `Vec::from_iter` being passed `vec::IntoIter`][40731] if the
iterator hasn't been advanced the original `Vec` is reassembled with no actual
iteration or reallocation.
+ [Simplified HashMap Bucket interface][40561] provides performance
improvements for iterating and cloning.
+ [Specialize Vec::from_elem to use calloc][40409]
+ [Fixed Race condition in fs::create_dir_all][39799]
+ [No longer caching stdio on Windows][40516]
+ [Optimized insertion sort in slice][40807] insertion sort in some cases
2.50%~ faster and in one case now 12.50% faster.
+ [Optimized `AtomicBool::fetch_nand`][41143]
- Stabilized APIs:
+ [`Child::try_wait`]
+ [`HashMap::retain`]
+ [`HashSet::retain`]
+ [`PeekMut::pop`]
+ [`TcpStream::peek`]
+ [`UdpSocket::peek`]
- Misc:
+ [rustdoc can now use pulldown-cmark with the `--enable-commonmark` flag][40338]
+ [Added rust-winbg script for better debugging on Windows][39983]
+ [Rust now uses the official cross compiler for NetBSD][40612]
+ [rustdoc now accepts `#` at the start of files][40828]
+ [Fixed jemalloc support for musl][41168]
- Compatibility Notes:
+ [Changes to how the `0` flag works in format!][40241] 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][40377], 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][40043] 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 `impl`s are now a hard error][40728]
+ [`PartialOrd` and `Ord` must agree on the ordering.][41270]
+ [`rustc main.rs -o out --emit=asm,llvm-ir`][41085] 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][41805] when
the size of `Self` cannot be statically determined.
+ [rustc now builds with a "pthreads" flavour of MinGW for Windows GNU][40805]
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)
- Adjustment of rust version dependency to prevent inability to
build in the adi rings.
- Add the cargo binaries for each arch, used for building rust only
these are not shipped, and don't factor in to the final product.
- Revert restriction of x86 arch to i586 for the interim.
- Update to 1.17.0
- Language updates
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Updates to libraries
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility Notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Restrict x86 builds to i686 only.
- Revert restriction on previous rust versions used for building
- Change x86 build target from i586 to i686
- Switch .spec to use rust-build compilation system
- Update config.toml to reflect rust-build changes
- Strict versioning for compilation so rustc always use previous
stable compiler
- Update to 1.16.0
- Language updates
* Lifetimes in statics and consts default to `'static`. [RFC 1623]
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Library updates
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc fixes
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Remove duplicate license files from _docdir: rpm 4.13 no longer
implicitly packages those files and we catch them using %license,
- remove bootstrap for s390x as binaries are available in
openSUSE:Factory:zSystems
- Fixes to build for archs armv7, aarch64, ppc64, s390x
- Update to 1.15.1
- Fix IntoIter::as_mut_slice's signature
- Correct rust-triples use in spec.
- Update to 1.15.0
- Language updates
* Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
stable. This allows popular code-generating crates like Serde and Diesel to
work ergonomically. [RFC 1681].
* [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
with curly braces][36868]. Part of [RFC 1506].
* [A number of minor changes to name resolution have been activated][37127].
They add up to more consistent semantics, allowing for future evolution of
Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
details of what is different. The breaking changes here have been transitioned
through the [`legacy_imports`] lint since 1.14, with no known regressions.
* [In `macro_rules`, `path` fragments can now be parsed as type parameter
bounds][38279]
* [`?Sized` can be used in `where` clauses][37791]
* [There is now a limit on the size of monomorphized types and it can be
modified with the `#![type_size_limit]` crate attribute, similarly to
the `#![recursion_limit]` attribute][37789]
- Compiler changes
* [On Windows, the compiler will apply dllimport attributes when linking to
extern functions][37973]. Additional attributes and flags can control which
library kind is linked and its name. [RFC 1717].
* [Rust-ABI symbols are no longer exported from cdylibs][38117]
* [The `--test` flag works with procedural macro crates][38107]
* [Fix `extern "aapcs" fn` ABI][37814]
* [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
* [The `format!` expander recognizes incorrect `printf` and shell-style
formatting directives and suggests the correct format][37613].
* [Only report one error for all unused imports in an import list][37456]
- Compiler performance
* [Avoid unnecessary `mk_ty` calls in `Ty::super_fold_with`][37705]
* [Avoid more unnecessary `mk_ty` calls in `Ty::super_fold_with`][37979]
* [Don't clone in `UnificationTable::probe`][37848]
* [Remove `scope_auxiliary` to cut RSS by 10%][37764]
* [Use small vectors in type walker][37760]
* [Macro expansion performance was improved][37701]
* [Change `HirVec<P<T>>` to `HirVec<T>` in `hir::Expr`][37642]
* [Replace FNV with a faster hash function][37229]
- For full change list, please see
https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md
- Adjust build so that aarch and ARM architectures use bootstrap for
initial build
- Fix provides/conflicts/obsoletes
- Remove patch 0001-Fix-armv7-autodetection.patch
+ appears to have been fixed upstream.
- Building armv7hl arch with bootstrap binary since previously
packaged versions haven't successfully built in the past
- Update to version 1.14.0
+ Announcement: https://blog.rust-lang.org/2016/12/22/Rust-1.14.html
+ Details: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1140-2016-12-22
- Release highlights:
+ support for RFC 1492. This small addition lets you use `..`
in more places, for example when destructuring a struct or tuple
+ println!(), with no arguments, prints newline
+ Wrapping impls standard binary and unary operators on
references, as well as the Sum and Product iterators, making
references to these types easier to use
+ Implement From<Cow<str>> for String and From<Cow<[T]>> for
Vec<T>. These implementations make sense, but were not yet added.
+ Expand .zip() specialization to .map() and .cloned() for
improved performance.
+ Implement RefUnwindSafe for atomic types, as these types are
“unwind safe,” though that wasn’t obvious at first.
+ Specialize Vec::extend to Vec::extend_from_slice for
performance gains.
+ Don’t reuse HashMap random seeds. This helps to mitigate one
type of DDoS attack.
+ The internal memory layout of HashMap is more cache-friendly,
for significant improvements in some operations
+ Impl Add<{str, Cow<str>}> for Cow<str>. We already support Add
for other string types, so not having it on Cow is inconsistent.
- Update to 1.13.0
- Add conflicts to help avoid situations where previous versions
or rustc-bootstrap may be installed
- Update to 1.12.1
- Remove patches:
+ 0003-Disable-embedding-timestamp-information.patch - fixed
by upstream
+ 0002-Add-armv6l-autodetection.patch - no-longer viable
- Revert from v1.13 to v1.11 in preparation for alternative
packaging.
- Add 0001-Fix-armv7-autodetection.patch
- Add 0002-Add-armv6l-autodetection.patch
* fix armv6 and armv7 builds
- Update to 1.11
+ Add support for cdylib crate types
- Remove merged patches:
* 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
* 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Set DT_SONAME when building dylibs
* Add add-soname.patch
- Move to package named rust
- Update to 1.10
+ -C panic=abort flag for rustc or equivalent in Cargo.toml
+ new crate type cdylib, embeded library for other languages
+ In addition, a number of performance improvements landed in
the compiler, and so did a number of usability improvements
across the documentation, rustdoc itself, and various error
messages.
+ This is the first release, which is guaranteed to be built
by previous stable release of rustc
- Packaging:
+ drop bootstrap mode and use rustc 1.9
+ move documentation to versioned directory
- Use smp_mflags for parallel building. Avoid sh invocation for
simple ldconfig calls. Drop archaic %clean section.
Drop filler words from summary.
- Rename source package to rustc-1_9 to conform to naming standards.
- Rename source package to rustc-190 to avoid unecessary rebuilds
of rustc packages on upgrade
- Move stage0 binaries into separate package
- Disable embedding timestamp information
- Add 0003-Disable-embedding-timestamp-information.patch
- Rename package to rustc-stable
- Add rpmlintrc
- Make bootstrapping conditional
- Fix misleading indentation errors on GCC 6.0
- Remove snap2.sh
- Add 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
- Add 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Update to version 1.9.0
+ Stabilization of std::panic
+ Deprecation warnings, #[deprecated] attribute
+ Compile time improvements
+ Rolling out use of specialization
+ Library stabilizations
About 80 library functions and methods are now stable in 1.
+ http://blog.rust-lang.org/2016/05/26/Rust-1.9.html
- Update to version 1.8.0:
+ Various “operator equals” operators, such as += and -=, are now
overloadable via various traits.
+ Empty struct declaration can contain cutly braces
+ New (non default) cargo based build system for rustc
+ About 20 library functions and methods are now stable in 1.8
- Update to version 1.7.0:
+ Many stabilized APIs
+ Improved library performance
+ BTreeSet and its iterators, Iter, IntoIter, and Range are covariant over their contained type.
+ LinkedList and its iterators, Iter and IntoIter are covariant over their contained type.
+ str::replace now accepts a Pattern, like other string searching methods.
+ Any is implemented for unsized types.
+ Hash is implemented for Duration.
+ Soundness fixes, may break code. See RFC 1214 for more information.
+ Several bugs in the compiler's visibility calculations were fixed.
+ Parsing "." as a float results in an error instead of 0.
+ Borrows of closure parameters may not outlive the closure.
- Update to version 1.6.0:
+ Stabilization of libcore and other library functions
+ Crates.io disallows wildcards
- Update to version 1.4.0:
+ Several changes have been made to fix type soundness and improve the
behavior of associated types. See RFC 1214. Although we have mostly
introduced these changes as warnings this release, to become errors next
release, there are still some scenarios that will see immediate breakage.
+ The str::lines and BufRead::lines iterators treat \r\n as line breaks in
addition to \n.
+ Loans of 'static lifetime extend to the end of a function.
+ str::parse no longer introduces avoidable rounding error when parsing
floating point numbers. Together with earlier changes to float
formatting/output, "round trips" like f.to_string().parse() now preserve
the value of f exactly. Additionally, leading plus signs are now accepted.
- Split the gdb support to rust-gdb subpackage
- Update to version 1.3.0:
+ API stabilization, including the new Duration API and
enhancements to Error and Hash/Hasher.
+ The substring matcher now uses a more efficient algorithm.
+ There were improvements to zero filling that speed up
Vec::resize and Read::read_to_end.
+ The implementation of Read::read_to_end has been specialized
for stdin and File, resulting in additional speedups.
+ The PartialEq implementation on slices is now much faster.
- Packaging: renamed source package to rustc to match upstream
- Update to version 1.2.0:
+ An across-the-board improvement to real-world compiler performance.
Representative crates include hyper (compiles 1.16x faster), html5ever
(1.62x faster), regex (1.32x faster) and rust-encoding (1.35x faster). You
can explore some of this performance data at Nick Cameron’s preliminary
tracking site, using dates 2015-05-15 to 2015-06-25.
+ Parallel codegen is now working, and produces a 33% speedup when
bootstrapping on a 4 core machine. Parallel codegen is particularly useful
for debug builds, since it prevents some optimizations; but it can also be
used with optimizations as an effective -O1 flag. It can be activated
by passing -C codegen-units=N to rustc, where N is the desired number
of threads.
- Update to version 1.1.0:
+ The std::fs module has been expanded to expand the set of
functionality exposed:
* DirEntry now supports optimizations like file_type and
metadata which don't incur a syscall on some platforms.
* A symlink_metadata function has been added.
* The fs::Metadata structure now lowers to its OS counterpart,
providing access to all underlying information.
+ The compiler now contains extended explanations of many errors.
When an error with an explanation occurs the compiler suggests
using the --explain flag to read the explanation. Error
explanations are also available online.
+ Thanks to multiple improvements to type checking, as well as other
work, the time to bootstrap the compiler decreased by 32%.
- drop tar_scm service and use source urls
- Update to version 1.0.0:
+ lint: deny transmuting from immutable to mutable, since it's undefined behavior
+ std: update select internals to not use mutable transmuting
+ std: Remove index notation on slice iterators
+ std: Destabilize io::BufStream
+ Make RwLock::try_write try to obtain a write lock
+ std: Remove addition on vectors for now
+ thread: right now you can't actually set those printers
+ Fix#24872, XSS in docs not found page.
+ Update AUTHORS.txt and RELEASES.md for 1.0
+ std: Mark `mem::forget` as a safe function
+ core: impl AsRef<[u8]> for str
+ collections: impl AsRef<[u8]> for String
+ collections: change bounds of SliceConcatExt implementations to use Borrow instead of AsRef
+ Fix invalid references due to the automated string substitution
+ dropck: must assume `Box<Trait + 'a>` has a destructor of interest.
- Rename binary package to rust
- Add build for i586
- Only run fdupes on SUSE builds
- Changed version format
- Update to version 1.0.0~beta4+git.1430848988.f873dc5:
+ Introduce a `FreeRegionMap` data structure. (#22779)
+ Fix#20616
+ std: Fix inheriting standard handles on windows
+ Fix#24895.
+ Fix zero-normalization of the pos of a `MultiByteChar`.
+ lint for mixing `#[repr(C)]` with an impl of `Drop`.
+ Bump prerelease version to .4
+ Add downcasting to std::error::Error
- Format spec file
- Update to version 1.0.0beta3+git.1429985089.5241bf9:
+ Update Windows caveats
+ Utilize if..let for get_mut doc-comment examples
+ Indicate keywords are code-like in Fuse::reset_fuse doc comment
+ doc: improve/fix 'let' FAQ
+ Fix broken links in the docs
+ Indicate None is code-like in doc comments
+ Fixed typo in hash_map::Entry documentation
+ Remove an unused import on windows
- Version 1.0.0-beta3.
OBS-URL: https://build.opensuse.org/request/show/568200
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=143
- Update to 1.23.0
- Language changes:
+ Arbitrary `auto` traits are now permitted in trait objects.[45772]
+ rustc now uses subtyping on the left hand side of binary operations.[45435]
Which should fix some confusing errors in some operations.
- Compiler changes:
+ Enabled `TrapUnreachable` in LLVM which should mitigate the impact of
undefined behaviour.[45920]
+ rustc now suggests renaming import if names clash.[45660]
+ Display errors/warnings correctly when there are zero-width or
wide characters.[45711]
+ rustc now avoids unnecessary copies of arguments that are
simple bindings[45380] This should improve memory usage on average by 5-10%.
+ Updated musl used to build musl rustc to 1.1.17[45393]
- Library changes:
+ Allow a trailing comma in `assert_eq/ne` macro[45887]
+ Implement Hash for raw pointers to unsized types[45483]
+ impl `From<*mut T>` for `AtomicPtr<T>`[45610]
+ impl `From<usize/isize>` for `AtomicUsize/AtomicIsize`.[45610]
+ Removed the `T: Sync` requirement for `RwLock<T>: Send`[45267]
+ Removed `T: Sized` requirement for `{<*const T>, <*mut T>}::as_ref`
an `<*mut T>::as_mut`[44932]
+ Optimized `Thread::{park, unpark}` implementation[45524]
+ Improved `SliceExt::binary_search` performance.[45333]
+ impl `FromIterator<()>` for `()`[45379]
+ Copied `AsciiExt` trait methods to primitive types.[44042] Use of `AsciiExt`
is now deprecated.
- Misc changes:
+ Releases now ship with the Cargo book documentation.[45692]
+ rustdoc now prints rendering warnings on every run.[45324]
+ Release tarballs now come with rustfmt[45903]
- Compatibility Notes:
+ Changes have been made to type equality to make it more correct,
in rare cases this could break some code.[45853] [Tracking issue for
further information[45852]
+ `char::escape_debug` now uses Unicode 10 over 9.[45571]
+ Upgraded Android SDK to 27, and NDK to r15c.[45580] This drops support for
Android 9, the minimum supported version is Android 14.
+ Bumped the minimum LLVM to 3.9[45326]
OBS-URL: https://build.opensuse.org/request/show/561771
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=140
- Update to v1.22.0
- Language changes:
+ `non_snake_case` lint now allows extern no-mangle functions
+ Now accepts underscores in unicode escapes
+ `T op= &T` now works for numeric types. eg. `let mut x = 2; x += &8;`
+ types that impl `Drop` are now allowed in `const` and `static` types
- Compiler changes:
+ rustc now defaults to having 16 codegen units at debug on supported platforms
+ rustc will no longer inline in codegen units when compiling for debug
This should decrease compile times for debug builds.
+ strict memory alignment now enabled on ARMv6
+ Remove support for the PNaCl target `le32-unknown-nacl`
- Librarie changes
+ Allow atomic operations up to 32 bits
on `armv5te_unknown_linux_gnueabi`
+ `Box<Error>` now impls `From<Cow<str>>`
+ `std::mem::Discriminant` is now guaranteed to be `Send + Sync`
+ `fs::copy` now returns the length of the main stream on NTFS.
+ Properly detect overflow in `Instant += Duration`.
+ impl `Hasher` for `{&mut Hasher, Box<Hasher>}`
+ impl `fmt::Debug` for `SplitWhitespace`.][44303]
+ `Option<T>` now impls `Try`. This allows for using `?` with `Option` types.
- Misc
+ `libbacktrace` is now available on Apple platforms.
+ Stabilised the `compile_fail` attribute for code fences in doc-comments.
This now lets you specify that a given code example will fail to compile.
- Compatibility Notes
+ The minimum Android version that rustc can build for has been bumped
to `4.0` from `2.3`
+ Allowing `T op= &T` for numeric types has broken some type inference cases
- Remove rust-1.21.0-44203-exclude-compiler-rt-test.patch
- Remove rust-1.21.0-44066-ppc64-struct-abi.patch
- Remove rust-1.21.0-44440-s390x-global-align.patch
OBS-URL: https://build.opensuse.org/request/show/544501
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=137
- Update to 1.21.0
- Language changes:
+ You can now use static references for literals.
+ Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.
- Compiler changes:
+ Upgraded jemalloc to 4.5.0[43911]
+ Enabled unwinding panics on Redox[43917]
+ Now runs LLVM in parallel during translation phase.[43506]
- Librarie changes:
+ Generate builtin impls for `Clone` for all arrays and tuples that
are `T: Clone`[43690]
+`Stdin`, `Stdout`, and `Stderr` now implement `AsRawFd`.[43459]
+ `Rc` and `Arc` now implement `From<&[T]> where T: Clone`, `From<str>`,
`From<String>`, `From<Box<T>> where T: ?Sized`, and `From<Vec<T>>`.[42565]
- Stabilized APIs
+`std::mem::discriminant`
- Update add-soname.patch to apply cleanly
- Force enable rust bootstrap so that missing architectures build
- set minimum cmake version
- Update to version 1.20.0
- Remove x86 from build targets
- Language
+ [Associated constants are now stabilised.][42809]
+ [A lot of macro bugs are now fixed.][42913]
- Compiler
+ [Struct fields are now properly coerced to the expected field type.][42807]
+ [Enabled wasm LLVM backend][42571] WASM can now be built with the
`wasm32-experimental-emscripten` target.
+ [Changed some of the error messages to be more helpful.][42033]
+ [Add support for RELRO(RELocation Read-Only) for platforms that support
it.][43170]
+ [rustc now reports the total number of errors on compilation failure][43015]
previously this was only the number of errors in the pass that failed.
+ [Expansion in rustc has been sped up 29x.][42533]
+ [added `msp430-none-elf` target.][43099]
+ [rustc will now suggest one-argument enum variant to fix type mismatch when
applicable][43178]
+ [Fixes backtraces on Redox][43228]
+ [rustc now identifies different versions of same crate when absolute paths of
different types match in an error message.][42826]
- Libraries
+ [Relaxed Debug constraints on `{HashMap,BTreeMap}::{Keys,Values}`.][42854]
+ [Impl `PartialEq`, `Eq`, `PartialOrd`, `Ord`, `Debug`, `Hash` for unsized
tuples.][43011]
+ [Impl `fmt::{Display, Debug}` for `Ref`, `RefMut`, `MutexGuard`,
`RwLockReadGuard`, `RwLockWriteGuard`][42822]
+ [Impl `Clone` for `DefaultHasher`.][42799]
+ [Impl `Sync` for `SyncSender`.][42397]
+ [Impl `FromStr` for `char`][42271]
+ [Fixed how `{f32, f64}::{is_sign_negative, is_sign_positive}` handles
NaN.][42431]
+ [allow messages in the `unimplemented!()` macro.][42155]
ie. `unimplemented!("Waiting for 1.21 to be stable")`
+ [`pub(restricted)` is now supported in the `thread_local!` macro.][43185]
+ [Upgrade to Unicode 10.0.0][42999]
+ [Reimplemented `{f32, f64}::{min, max}` in Rust instead of using CMath.][42430]
+ [Skip the main thread's manual stack guard on Linux][43072]
+ [Iterator::nth for `ops::{Range, RangeFrom}` is now done in O(1) time][43077]
+ [`#[repr(align(N))]` attribute max number is now 2^31 + 1.][43097] This was
previously 2^15.
+ [`{OsStr, Path}::Display` now avoids allocations where possible][42613]
- Compatibility Notes
+ [Functions with `'static` in their return types will now not be as usable as
if they were using lifetime parameters instead.][42417]
+ [The reimplementation of `{f32, f64}::is_sign_{negative, positive}` now
takes the sign of NaN into account where previously didn't.][42430]
- adjust build process and add package for Rust source
- clean-up of useless provides
- add rpmlintrc
- Update to version 1.19
- Language updates:
+ [Numeric fields can now be used for creating tuple structs.][41145] [RFC 1506]
For example `struct Point(u32, u32); let x = Point { 0: 7, 1: 0 };`.
+ [Macro recursion limit increased to 1024 from 64.][41676]
+ [Added lint for detecting unused macros.][41907]
+ [`loop` can now return a value with `break`.][42016] [RFC 1624]
For example: `let x = loop { break 7; };`
+ [C compatible `union`s are now available.][42068] [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 `fn`s,][42162] [RFC 1558]
Example: `let foo: fn(u8) -> u8 = |v: u8| { v };`
- Compiler updates:
+ [Add support for bootstrapping the Rust compiler toolchain on Android.][41370]
+ [Change `arm-linux-androideabi` to correspond to the `armeabi`
official ABI.][41656] 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.][41873]
+ [Minor optimisation of string operations.][42037]
+ [Compiler error message is now `aborting due to previous error(s)` instead of
`aborting due to N previous errors`][42150] This was previously inaccurate and
would only count certain kinds of errors.
+ [The compiler now supports Visual Studio 2017][42225]
+ [The compiler is now built against LLVM 4.0.1 by default][42948]
+ [Added a lot][42264] of [new error codes][42302]
+ [Added `target-feature=+crt-static` option][37406] [RFC 1721] Which allows
libraries with C Run-time Libraries(CRT) to be statically linked.
+ [Fixed various ARM codegen bugs][42740]
- Librarie updates:
+ [`String` now implements `FromIterator<Cow<'a, str>>` and
`Extend<Cow<'a, str>>`][41449]
+ [`Vec` now implements `From<&mut [T]>`][41530]
+ [`Box<[u8]>` now implements `From<Box<str>>`][41258]
+ [`SplitWhitespace` now implements `Clone`][41659]
+ [`[u8]::reverse` is now 5x faster and `[u16]::reverse` is now
1.5x faster][41764]
+ [`eprint!` and `eprintln!` macros added to prelude.][41192] Same as the `print!`
macros, but for printing to stderr.
- Stabilized APIs
+ [`OsString::shrink_to_fit`]
+ [`cmp::Reverse`]
+ [`Command::envs`]
+ [`thread::ThreadId`]
- Misc
+ [Added `rust-windbg.cmd`][39983] for loading rust `.natvis` files in the
Windows Debugger.
+ [Rust will now release XZ compressed packages][rust-installer/57]
+ [rustup will now prefer to download rust packages with
XZ compression][rustup/1100] over GZip packages.
+ [Added the ability to escape `#` in rust documentation][41785] By adding
additional `#`'s ie. `##` is now `#`
- Temporarily disable generation of compiler docs due to build issue
- Change i586 build to produce i686 target instead of i586 so that
x86 Firefox can be built with Rust.
- Update to 1.18.0
-Language updates:
+ [Stabilize pub(restricted)][40556] `pub` can now accept amodule 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][40870] conservative exposure of the
`/SUBSYSTEM` linker flag on Windows platforms. [RFC 1665].
+ [Refactor of trait object type parsing][40043] 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][40589]
+ [Now warns if you bind a lifetime parameter to 'static][40734]
+ [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.][40377]
-Compiler updates
+ [rustc can now emit mir with `--emit mir`][39891]
+ [Improved LLVM IR for trivial functions][40367]
+ [Added explanation for E0090(Wrong number of lifetimes are supplied)][40723]
+ [rustc compilation is now 15%-20% faster][41469] Thanks to optimisation
opportunities found through profiling
+ [Improved backtrace formatting when panicking][38165]
- Library updates:
+ [Specialized `Vec::from_iter` being passed `vec::IntoIter`][40731] if the
iterator hasn't been advanced the original `Vec` is reassembled with no actual
iteration or reallocation.
+ [Simplified HashMap Bucket interface][40561] provides performance
improvements for iterating and cloning.
+ [Specialize Vec::from_elem to use calloc][40409]
+ [Fixed Race condition in fs::create_dir_all][39799]
+ [No longer caching stdio on Windows][40516]
+ [Optimized insertion sort in slice][40807] insertion sort in some cases
2.50%~ faster and in one case now 12.50% faster.
+ [Optimized `AtomicBool::fetch_nand`][41143]
- Stabilized APIs:
+ [`Child::try_wait`]
+ [`HashMap::retain`]
+ [`HashSet::retain`]
+ [`PeekMut::pop`]
+ [`TcpStream::peek`]
+ [`UdpSocket::peek`]
- Misc:
+ [rustdoc can now use pulldown-cmark with the `--enable-commonmark` flag][40338]
+ [Added rust-winbg script for better debugging on Windows][39983]
+ [Rust now uses the official cross compiler for NetBSD][40612]
+ [rustdoc now accepts `#` at the start of files][40828]
+ [Fixed jemalloc support for musl][41168]
- Compatibility Notes:
+ [Changes to how the `0` flag works in format!][40241] 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][40377], 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][40043] 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 `impl`s are now a hard error][40728]
+ [`PartialOrd` and `Ord` must agree on the ordering.][41270]
+ [`rustc main.rs -o out --emit=asm,llvm-ir`][41085] 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][41805] when
the size of `Self` cannot be statically determined.
+ [rustc now builds with a "pthreads" flavour of MinGW for Windows GNU][40805]
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)
- Adjustment of rust version dependency to prevent inability to
build in the adi rings.
- Add the cargo binaries for each arch, used for building rust only
these are not shipped, and don't factor in to the final product.
- Revert restriction of x86 arch to i586 for the interim.
- Update to 1.17.0
- Language updates
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Updates to libraries
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility Notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Restrict x86 builds to i686 only.
- Revert restriction on previous rust versions used for building
- Change x86 build target from i586 to i686
- Switch .spec to use rust-build compilation system
- Update config.toml to reflect rust-build changes
- Strict versioning for compilation so rustc always use previous
stable compiler
- Update to 1.16.0
- Language updates
* Lifetimes in statics and consts default to `'static`. [RFC 1623]
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Library updates
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc fixes
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Remove duplicate license files from _docdir: rpm 4.13 no longer
implicitly packages those files and we catch them using %license,
- remove bootstrap for s390x as binaries are available in
openSUSE:Factory:zSystems
- Fixes to build for archs armv7, aarch64, ppc64, s390x
- Update to 1.15.1
- Fix IntoIter::as_mut_slice's signature
- Correct rust-triples use in spec.
- Update to 1.15.0
- Language updates
* Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
stable. This allows popular code-generating crates like Serde and Diesel to
work ergonomically. [RFC 1681].
* [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
with curly braces][36868]. Part of [RFC 1506].
* [A number of minor changes to name resolution have been activated][37127].
They add up to more consistent semantics, allowing for future evolution of
Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
details of what is different. The breaking changes here have been transitioned
through the [`legacy_imports`] lint since 1.14, with no known regressions.
* [In `macro_rules`, `path` fragments can now be parsed as type parameter
bounds][38279]
* [`?Sized` can be used in `where` clauses][37791]
* [There is now a limit on the size of monomorphized types and it can be
modified with the `#![type_size_limit]` crate attribute, similarly to
the `#![recursion_limit]` attribute][37789]
- Compiler changes
* [On Windows, the compiler will apply dllimport attributes when linking to
extern functions][37973]. Additional attributes and flags can control which
library kind is linked and its name. [RFC 1717].
* [Rust-ABI symbols are no longer exported from cdylibs][38117]
* [The `--test` flag works with procedural macro crates][38107]
* [Fix `extern "aapcs" fn` ABI][37814]
* [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
* [The `format!` expander recognizes incorrect `printf` and shell-style
formatting directives and suggests the correct format][37613].
* [Only report one error for all unused imports in an import list][37456]
- Compiler performance
* [Avoid unnecessary `mk_ty` calls in `Ty::super_fold_with`][37705]
* [Avoid more unnecessary `mk_ty` calls in `Ty::super_fold_with`][37979]
* [Don't clone in `UnificationTable::probe`][37848]
* [Remove `scope_auxiliary` to cut RSS by 10%][37764]
* [Use small vectors in type walker][37760]
* [Macro expansion performance was improved][37701]
* [Change `HirVec<P<T>>` to `HirVec<T>` in `hir::Expr`][37642]
* [Replace FNV with a faster hash function][37229]
- For full change list, please see
https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md
- Adjust build so that aarch and ARM architectures use bootstrap for
initial build
- Fix provides/conflicts/obsoletes
- Remove patch 0001-Fix-armv7-autodetection.patch
+ appears to have been fixed upstream.
- Building armv7hl arch with bootstrap binary since previously
packaged versions haven't successfully built in the past
- Update to version 1.14.0
+ Announcement: https://blog.rust-lang.org/2016/12/22/Rust-1.14.html
+ Details: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1140-2016-12-22
- Release highlights:
+ support for RFC 1492. This small addition lets you use `..`
in more places, for example when destructuring a struct or tuple
+ println!(), with no arguments, prints newline
+ Wrapping impls standard binary and unary operators on
references, as well as the Sum and Product iterators, making
references to these types easier to use
+ Implement From<Cow<str>> for String and From<Cow<[T]>> for
Vec<T>. These implementations make sense, but were not yet added.
+ Expand .zip() specialization to .map() and .cloned() for
improved performance.
+ Implement RefUnwindSafe for atomic types, as these types are
“unwind safe,” though that wasn’t obvious at first.
+ Specialize Vec::extend to Vec::extend_from_slice for
performance gains.
+ Don’t reuse HashMap random seeds. This helps to mitigate one
type of DDoS attack.
+ The internal memory layout of HashMap is more cache-friendly,
for significant improvements in some operations
+ Impl Add<{str, Cow<str>}> for Cow<str>. We already support Add
for other string types, so not having it on Cow is inconsistent.
- Update to 1.13.0
- Add conflicts to help avoid situations where previous versions
or rustc-bootstrap may be installed
- Update to 1.12.1
- Remove patches:
+ 0003-Disable-embedding-timestamp-information.patch - fixed
by upstream
+ 0002-Add-armv6l-autodetection.patch - no-longer viable
- Revert from v1.13 to v1.11 in preparation for alternative
packaging.
- Add 0001-Fix-armv7-autodetection.patch
- Add 0002-Add-armv6l-autodetection.patch
* fix armv6 and armv7 builds
- Update to 1.11
+ Add support for cdylib crate types
- Remove merged patches:
* 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
* 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Set DT_SONAME when building dylibs
* Add add-soname.patch
- Move to package named rust
- Update to 1.10
+ -C panic=abort flag for rustc or equivalent in Cargo.toml
+ new crate type cdylib, embeded library for other languages
+ In addition, a number of performance improvements landed in
the compiler, and so did a number of usability improvements
across the documentation, rustdoc itself, and various error
messages.
+ This is the first release, which is guaranteed to be built
by previous stable release of rustc
- Packaging:
+ drop bootstrap mode and use rustc 1.9
+ move documentation to versioned directory
- Use smp_mflags for parallel building. Avoid sh invocation for
simple ldconfig calls. Drop archaic %clean section.
Drop filler words from summary.
- Rename source package to rustc-1_9 to conform to naming standards.
- Rename source package to rustc-190 to avoid unecessary rebuilds
of rustc packages on upgrade
- Move stage0 binaries into separate package
- Disable embedding timestamp information
- Add 0003-Disable-embedding-timestamp-information.patch
- Rename package to rustc-stable
- Add rpmlintrc
- Make bootstrapping conditional
- Fix misleading indentation errors on GCC 6.0
- Remove snap2.sh
- Add 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
- Add 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Update to version 1.9.0
+ Stabilization of std::panic
+ Deprecation warnings, #[deprecated] attribute
+ Compile time improvements
+ Rolling out use of specialization
+ Library stabilizations
About 80 library functions and methods are now stable in 1.
+ http://blog.rust-lang.org/2016/05/26/Rust-1.9.html
- Update to version 1.8.0:
+ Various “operator equals” operators, such as += and -=, are now
overloadable via various traits.
+ Empty struct declaration can contain cutly braces
+ New (non default) cargo based build system for rustc
+ About 20 library functions and methods are now stable in 1.8
- Update to version 1.7.0:
+ Many stabilized APIs
+ Improved library performance
+ BTreeSet and its iterators, Iter, IntoIter, and Range are covariant over their contained type.
+ LinkedList and its iterators, Iter and IntoIter are covariant over their contained type.
+ str::replace now accepts a Pattern, like other string searching methods.
+ Any is implemented for unsized types.
+ Hash is implemented for Duration.
+ Soundness fixes, may break code. See RFC 1214 for more information.
+ Several bugs in the compiler's visibility calculations were fixed.
+ Parsing "." as a float results in an error instead of 0.
+ Borrows of closure parameters may not outlive the closure.
- Update to version 1.6.0:
+ Stabilization of libcore and other library functions
+ Crates.io disallows wildcards
- Update to version 1.4.0:
+ Several changes have been made to fix type soundness and improve the
behavior of associated types. See RFC 1214. Although we have mostly
introduced these changes as warnings this release, to become errors next
release, there are still some scenarios that will see immediate breakage.
+ The str::lines and BufRead::lines iterators treat \r\n as line breaks in
addition to \n.
+ Loans of 'static lifetime extend to the end of a function.
+ str::parse no longer introduces avoidable rounding error when parsing
floating point numbers. Together with earlier changes to float
formatting/output, "round trips" like f.to_string().parse() now preserve
the value of f exactly. Additionally, leading plus signs are now accepted.
- Split the gdb support to rust-gdb subpackage
- Update to version 1.3.0:
+ API stabilization, including the new Duration API and
enhancements to Error and Hash/Hasher.
+ The substring matcher now uses a more efficient algorithm.
+ There were improvements to zero filling that speed up
Vec::resize and Read::read_to_end.
+ The implementation of Read::read_to_end has been specialized
for stdin and File, resulting in additional speedups.
+ The PartialEq implementation on slices is now much faster.
- Packaging: renamed source package to rustc to match upstream
- Update to version 1.2.0:
+ An across-the-board improvement to real-world compiler performance.
Representative crates include hyper (compiles 1.16x faster), html5ever
(1.62x faster), regex (1.32x faster) and rust-encoding (1.35x faster). You
can explore some of this performance data at Nick Cameron’s preliminary
tracking site, using dates 2015-05-15 to 2015-06-25.
+ Parallel codegen is now working, and produces a 33% speedup when
bootstrapping on a 4 core machine. Parallel codegen is particularly useful
for debug builds, since it prevents some optimizations; but it can also be
used with optimizations as an effective -O1 flag. It can be activated
by passing -C codegen-units=N to rustc, where N is the desired number
of threads.
- Update to version 1.1.0:
+ The std::fs module has been expanded to expand the set of
functionality exposed:
* DirEntry now supports optimizations like file_type and
metadata which don't incur a syscall on some platforms.
* A symlink_metadata function has been added.
* The fs::Metadata structure now lowers to its OS counterpart,
providing access to all underlying information.
+ The compiler now contains extended explanations of many errors.
When an error with an explanation occurs the compiler suggests
using the --explain flag to read the explanation. Error
explanations are also available online.
+ Thanks to multiple improvements to type checking, as well as other
work, the time to bootstrap the compiler decreased by 32%.
- drop tar_scm service and use source urls
- Update to version 1.0.0:
+ lint: deny transmuting from immutable to mutable, since it's undefined behavior
+ std: update select internals to not use mutable transmuting
+ std: Remove index notation on slice iterators
+ std: Destabilize io::BufStream
+ Make RwLock::try_write try to obtain a write lock
+ std: Remove addition on vectors for now
+ thread: right now you can't actually set those printers
+ Fix#24872, XSS in docs not found page.
+ Update AUTHORS.txt and RELEASES.md for 1.0
+ std: Mark `mem::forget` as a safe function
+ core: impl AsRef<[u8]> for str
+ collections: impl AsRef<[u8]> for String
+ collections: change bounds of SliceConcatExt implementations to use Borrow instead of AsRef
+ Fix invalid references due to the automated string substitution
+ dropck: must assume `Box<Trait + 'a>` has a destructor of interest.
- Rename binary package to rust
- Add build for i586
- Only run fdupes on SUSE builds
- Changed version format
- Update to version 1.0.0~beta4+git.1430848988.f873dc5:
+ Introduce a `FreeRegionMap` data structure. (#22779)
+ Fix#20616
+ std: Fix inheriting standard handles on windows
+ Fix#24895.
+ Fix zero-normalization of the pos of a `MultiByteChar`.
+ lint for mixing `#[repr(C)]` with an impl of `Drop`.
+ Bump prerelease version to .4
+ Add downcasting to std::error::Error
- Format spec file
- Update to version 1.0.0beta3+git.1429985089.5241bf9:
+ Update Windows caveats
+ Utilize if..let for get_mut doc-comment examples
+ Indicate keywords are code-like in Fuse::reset_fuse doc comment
+ doc: improve/fix 'let' FAQ
+ Fix broken links in the docs
+ Indicate None is code-like in doc comments
+ Fixed typo in hash_map::Entry documentation
+ Remove an unused import on windows
- Version 1.0.0-beta3.
OBS-URL: https://build.opensuse.org/request/show/534605
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=130
- Update to version 1.20.0
- Remove x86 from build targets
- Language
+ [Associated constants are now stabilised.][42809]
+ [A lot of macro bugs are now fixed.][42913]
- Compiler
+ [Struct fields are now properly coerced to the expected field type.][42807]
+ [Enabled wasm LLVM backend][42571] WASM can now be built with the
`wasm32-experimental-emscripten` target.
+ [Changed some of the error messages to be more helpful.][42033]
+ [Add support for RELRO(RELocation Read-Only) for platforms that support
it.][43170]
+ [rustc now reports the total number of errors on compilation failure][43015]
previously this was only the number of errors in the pass that failed.
+ [Expansion in rustc has been sped up 29x.][42533]
+ [added `msp430-none-elf` target.][43099]
+ [rustc will now suggest one-argument enum variant to fix type mismatch when
applicable][43178]
+ [Fixes backtraces on Redox][43228]
+ [rustc now identifies different versions of same crate when absolute paths of
different types match in an error message.][42826]
- Libraries
+ [Relaxed Debug constraints on `{HashMap,BTreeMap}::{Keys,Values}`.][42854]
+ [Impl `PartialEq`, `Eq`, `PartialOrd`, `Ord`, `Debug`, `Hash` for unsized
tuples.][43011]
+ [Impl `fmt::{Display, Debug}` for `Ref`, `RefMut`, `MutexGuard`,
`RwLockReadGuard`, `RwLockWriteGuard`][42822]
+ [Impl `Clone` for `DefaultHasher`.][42799]
+ [Impl `Sync` for `SyncSender`.][42397]
+ [Impl `FromStr` for `char`][42271]
+ [Fixed how `{f32, f64}::{is_sign_negative, is_sign_positive}` handles
NaN.][42431]
+ [allow messages in the `unimplemented!()` macro.][42155]
ie. `unimplemented!("Waiting for 1.21 to be stable")`
+ [`pub(restricted)` is now supported in the `thread_local!` macro.][43185]
+ [Upgrade to Unicode 10.0.0][42999]
+ [Reimplemented `{f32, f64}::{min, max}` in Rust instead of using CMath.][42430]
+ [Skip the main thread's manual stack guard on Linux][43072]
+ [Iterator::nth for `ops::{Range, RangeFrom}` is now done in O(1) time][43077]
+ [`#[repr(align(N))]` attribute max number is now 2^31 + 1.][43097] This was
previously 2^15.
+ [`{OsStr, Path}::Display` now avoids allocations where possible][42613]
- Compatibility Notes
+ [Functions with `'static` in their return types will now not be as usable as
if they were using lifetime parameters instead.][42417]
+ [The reimplementation of `{f32, f64}::is_sign_{negative, positive}` now
takes the sign of NaN into account where previously didn't.][42430]
- adjust build process and add package for Rust source
- clean-up of useless provides
- add rpmlintrc
- Update to version 1.19
- Language updates:
+ [Numeric fields can now be used for creating tuple structs.][41145] [RFC 1506]
For example `struct Point(u32, u32); let x = Point { 0: 7, 1: 0 };`.
+ [Macro recursion limit increased to 1024 from 64.][41676]
+ [Added lint for detecting unused macros.][41907]
+ [`loop` can now return a value with `break`.][42016] [RFC 1624]
For example: `let x = loop { break 7; };`
+ [C compatible `union`s are now available.][42068] [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 `fn`s,][42162] [RFC 1558]
Example: `let foo: fn(u8) -> u8 = |v: u8| { v };`
- Compiler updates:
+ [Add support for bootstrapping the Rust compiler toolchain on Android.][41370]
+ [Change `arm-linux-androideabi` to correspond to the `armeabi`
official ABI.][41656] 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.][41873]
+ [Minor optimisation of string operations.][42037]
+ [Compiler error message is now `aborting due to previous error(s)` instead of
`aborting due to N previous errors`][42150] This was previously inaccurate and
would only count certain kinds of errors.
+ [The compiler now supports Visual Studio 2017][42225]
+ [The compiler is now built against LLVM 4.0.1 by default][42948]
+ [Added a lot][42264] of [new error codes][42302]
+ [Added `target-feature=+crt-static` option][37406] [RFC 1721] Which allows
libraries with C Run-time Libraries(CRT) to be statically linked.
+ [Fixed various ARM codegen bugs][42740]
- Librarie updates:
+ [`String` now implements `FromIterator<Cow<'a, str>>` and
`Extend<Cow<'a, str>>`][41449]
+ [`Vec` now implements `From<&mut [T]>`][41530]
+ [`Box<[u8]>` now implements `From<Box<str>>`][41258]
+ [`SplitWhitespace` now implements `Clone`][41659]
+ [`[u8]::reverse` is now 5x faster and `[u16]::reverse` is now
1.5x faster][41764]
+ [`eprint!` and `eprintln!` macros added to prelude.][41192] Same as the `print!`
macros, but for printing to stderr.
- Stabilized APIs
+ [`OsString::shrink_to_fit`]
+ [`cmp::Reverse`]
+ [`Command::envs`]
+ [`thread::ThreadId`]
- Misc
+ [Added `rust-windbg.cmd`][39983] for loading rust `.natvis` files in the
Windows Debugger.
+ [Rust will now release XZ compressed packages][rust-installer/57]
+ [rustup will now prefer to download rust packages with
XZ compression][rustup/1100] over GZip packages.
+ [Added the ability to escape `#` in rust documentation][41785] By adding
additional `#`'s ie. `##` is now `#`
- Temporarily disable generation of compiler docs due to build issue
- Change i586 build to produce i686 target instead of i586 so that
x86 Firefox can be built with Rust.
- Update to 1.18.0
-Language updates:
+ [Stabilize pub(restricted)][40556] `pub` can now accept amodule 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][40870] conservative exposure of the
`/SUBSYSTEM` linker flag on Windows platforms. [RFC 1665].
+ [Refactor of trait object type parsing][40043] 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][40589]
+ [Now warns if you bind a lifetime parameter to 'static][40734]
+ [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.][40377]
-Compiler updates
+ [rustc can now emit mir with `--emit mir`][39891]
+ [Improved LLVM IR for trivial functions][40367]
+ [Added explanation for E0090(Wrong number of lifetimes are supplied)][40723]
+ [rustc compilation is now 15%-20% faster][41469] Thanks to optimisation
opportunities found through profiling
+ [Improved backtrace formatting when panicking][38165]
- Library updates:
+ [Specialized `Vec::from_iter` being passed `vec::IntoIter`][40731] if the
iterator hasn't been advanced the original `Vec` is reassembled with no actual
iteration or reallocation.
+ [Simplified HashMap Bucket interface][40561] provides performance
improvements for iterating and cloning.
+ [Specialize Vec::from_elem to use calloc][40409]
+ [Fixed Race condition in fs::create_dir_all][39799]
+ [No longer caching stdio on Windows][40516]
+ [Optimized insertion sort in slice][40807] insertion sort in some cases
2.50%~ faster and in one case now 12.50% faster.
+ [Optimized `AtomicBool::fetch_nand`][41143]
- Stabilized APIs:
+ [`Child::try_wait`]
+ [`HashMap::retain`]
+ [`HashSet::retain`]
+ [`PeekMut::pop`]
+ [`TcpStream::peek`]
+ [`UdpSocket::peek`]
- Misc:
+ [rustdoc can now use pulldown-cmark with the `--enable-commonmark` flag][40338]
+ [Added rust-winbg script for better debugging on Windows][39983]
+ [Rust now uses the official cross compiler for NetBSD][40612]
+ [rustdoc now accepts `#` at the start of files][40828]
+ [Fixed jemalloc support for musl][41168]
- Compatibility Notes:
+ [Changes to how the `0` flag works in format!][40241] 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][40377], 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][40043] 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 `impl`s are now a hard error][40728]
+ [`PartialOrd` and `Ord` must agree on the ordering.][41270]
+ [`rustc main.rs -o out --emit=asm,llvm-ir`][41085] 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][41805] when
the size of `Self` cannot be statically determined.
+ [rustc now builds with a "pthreads" flavour of MinGW for Windows GNU][40805]
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)
- Adjustment of rust version dependency to prevent inability to
build in the adi rings.
- Add the cargo binaries for each arch, used for building rust only
these are not shipped, and don't factor in to the final product.
- Revert restriction of x86 arch to i586 for the interim.
- Update to 1.17.0
- Language updates
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Updates to libraries
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility Notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Restrict x86 builds to i686 only.
- Revert restriction on previous rust versions used for building
- Change x86 build target from i586 to i686
- Switch .spec to use rust-build compilation system
- Update config.toml to reflect rust-build changes
- Strict versioning for compilation so rustc always use previous
stable compiler
- Update to 1.16.0
- Language updates
* Lifetimes in statics and consts default to `'static`. [RFC 1623]
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Library updates
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc fixes
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Remove duplicate license files from _docdir: rpm 4.13 no longer
implicitly packages those files and we catch them using %license,
- remove bootstrap for s390x as binaries are available in
openSUSE:Factory:zSystems
- Fixes to build for archs armv7, aarch64, ppc64, s390x
- Update to 1.15.1
- Fix IntoIter::as_mut_slice's signature
- Correct rust-triples use in spec.
- Update to 1.15.0
- Language updates
* Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
stable. This allows popular code-generating crates like Serde and Diesel to
work ergonomically. [RFC 1681].
* [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
with curly braces][36868]. Part of [RFC 1506].
* [A number of minor changes to name resolution have been activated][37127].
They add up to more consistent semantics, allowing for future evolution of
Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
details of what is different. The breaking changes here have been transitioned
through the [`legacy_imports`] lint since 1.14, with no known regressions.
* [In `macro_rules`, `path` fragments can now be parsed as type parameter
bounds][38279]
* [`?Sized` can be used in `where` clauses][37791]
* [There is now a limit on the size of monomorphized types and it can be
modified with the `#![type_size_limit]` crate attribute, similarly to
the `#![recursion_limit]` attribute][37789]
- Compiler changes
* [On Windows, the compiler will apply dllimport attributes when linking to
extern functions][37973]. Additional attributes and flags can control which
library kind is linked and its name. [RFC 1717].
* [Rust-ABI symbols are no longer exported from cdylibs][38117]
* [The `--test` flag works with procedural macro crates][38107]
* [Fix `extern "aapcs" fn` ABI][37814]
* [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
* [The `format!` expander recognizes incorrect `printf` and shell-style
formatting directives and suggests the correct format][37613].
* [Only report one error for all unused imports in an import list][37456]
- Compiler performance
* [Avoid unnecessary `mk_ty` calls in `Ty::super_fold_with`][37705]
* [Avoid more unnecessary `mk_ty` calls in `Ty::super_fold_with`][37979]
* [Don't clone in `UnificationTable::probe`][37848]
* [Remove `scope_auxiliary` to cut RSS by 10%][37764]
* [Use small vectors in type walker][37760]
* [Macro expansion performance was improved][37701]
* [Change `HirVec<P<T>>` to `HirVec<T>` in `hir::Expr`][37642]
* [Replace FNV with a faster hash function][37229]
- For full change list, please see
https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md
- Adjust build so that aarch and ARM architectures use bootstrap for
initial build
- Fix provides/conflicts/obsoletes
- Remove patch 0001-Fix-armv7-autodetection.patch
+ appears to have been fixed upstream.
- Building armv7hl arch with bootstrap binary since previously
packaged versions haven't successfully built in the past
- Update to version 1.14.0
+ Announcement: https://blog.rust-lang.org/2016/12/22/Rust-1.14.html
+ Details: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1140-2016-12-22
- Release highlights:
+ support for RFC 1492. This small addition lets you use `..`
in more places, for example when destructuring a struct or tuple
+ println!(), with no arguments, prints newline
+ Wrapping impls standard binary and unary operators on
references, as well as the Sum and Product iterators, making
references to these types easier to use
+ Implement From<Cow<str>> for String and From<Cow<[T]>> for
Vec<T>. These implementations make sense, but were not yet added.
+ Expand .zip() specialization to .map() and .cloned() for
improved performance.
+ Implement RefUnwindSafe for atomic types, as these types are
“unwind safe,” though that wasn’t obvious at first.
+ Specialize Vec::extend to Vec::extend_from_slice for
performance gains.
+ Don’t reuse HashMap random seeds. This helps to mitigate one
type of DDoS attack.
+ The internal memory layout of HashMap is more cache-friendly,
for significant improvements in some operations
+ Impl Add<{str, Cow<str>}> for Cow<str>. We already support Add
for other string types, so not having it on Cow is inconsistent.
- Update to 1.13.0
- Add conflicts to help avoid situations where previous versions
or rustc-bootstrap may be installed
- Update to 1.12.1
- Remove patches:
+ 0003-Disable-embedding-timestamp-information.patch - fixed
by upstream
+ 0002-Add-armv6l-autodetection.patch - no-longer viable
- Revert from v1.13 to v1.11 in preparation for alternative
packaging.
- Add 0001-Fix-armv7-autodetection.patch
- Add 0002-Add-armv6l-autodetection.patch
* fix armv6 and armv7 builds
- Update to 1.11
+ Add support for cdylib crate types
- Remove merged patches:
* 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
* 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Set DT_SONAME when building dylibs
* Add add-soname.patch
- Move to package named rust
- Update to 1.10
+ -C panic=abort flag for rustc or equivalent in Cargo.toml
+ new crate type cdylib, embeded library for other languages
+ In addition, a number of performance improvements landed in
the compiler, and so did a number of usability improvements
across the documentation, rustdoc itself, and various error
messages.
+ This is the first release, which is guaranteed to be built
by previous stable release of rustc
- Packaging:
+ drop bootstrap mode and use rustc 1.9
+ move documentation to versioned directory
- Use smp_mflags for parallel building. Avoid sh invocation for
simple ldconfig calls. Drop archaic %clean section.
Drop filler words from summary.
- Rename source package to rustc-1_9 to conform to naming standards.
- Rename source package to rustc-190 to avoid unecessary rebuilds
of rustc packages on upgrade
- Move stage0 binaries into separate package
- Disable embedding timestamp information
- Add 0003-Disable-embedding-timestamp-information.patch
- Rename package to rustc-stable
- Add rpmlintrc
- Make bootstrapping conditional
- Fix misleading indentation errors on GCC 6.0
- Remove snap2.sh
- Add 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
- Add 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Update to version 1.9.0
+ Stabilization of std::panic
+ Deprecation warnings, #[deprecated] attribute
+ Compile time improvements
+ Rolling out use of specialization
+ Library stabilizations
About 80 library functions and methods are now stable in 1.
+ http://blog.rust-lang.org/2016/05/26/Rust-1.9.html
- Update to version 1.8.0:
+ Various “operator equals” operators, such as += and -=, are now
overloadable via various traits.
+ Empty struct declaration can contain cutly braces
+ New (non default) cargo based build system for rustc
+ About 20 library functions and methods are now stable in 1.8
- Update to version 1.7.0:
+ Many stabilized APIs
+ Improved library performance
+ BTreeSet and its iterators, Iter, IntoIter, and Range are covariant over their contained type.
+ LinkedList and its iterators, Iter and IntoIter are covariant over their contained type.
+ str::replace now accepts a Pattern, like other string searching methods.
+ Any is implemented for unsized types.
+ Hash is implemented for Duration.
+ Soundness fixes, may break code. See RFC 1214 for more information.
+ Several bugs in the compiler's visibility calculations were fixed.
+ Parsing "." as a float results in an error instead of 0.
+ Borrows of closure parameters may not outlive the closure.
- Update to version 1.6.0:
+ Stabilization of libcore and other library functions
+ Crates.io disallows wildcards
- Update to version 1.4.0:
+ Several changes have been made to fix type soundness and improve the
behavior of associated types. See RFC 1214. Although we have mostly
introduced these changes as warnings this release, to become errors next
release, there are still some scenarios that will see immediate breakage.
+ The str::lines and BufRead::lines iterators treat \r\n as line breaks in
addition to \n.
+ Loans of 'static lifetime extend to the end of a function.
+ str::parse no longer introduces avoidable rounding error when parsing
floating point numbers. Together with earlier changes to float
formatting/output, "round trips" like f.to_string().parse() now preserve
the value of f exactly. Additionally, leading plus signs are now accepted.
- Split the gdb support to rust-gdb subpackage
- Update to version 1.3.0:
+ API stabilization, including the new Duration API and
enhancements to Error and Hash/Hasher.
+ The substring matcher now uses a more efficient algorithm.
+ There were improvements to zero filling that speed up
Vec::resize and Read::read_to_end.
+ The implementation of Read::read_to_end has been specialized
for stdin and File, resulting in additional speedups.
+ The PartialEq implementation on slices is now much faster.
- Packaging: renamed source package to rustc to match upstream
- Update to version 1.2.0:
+ An across-the-board improvement to real-world compiler performance.
Representative crates include hyper (compiles 1.16x faster), html5ever
(1.62x faster), regex (1.32x faster) and rust-encoding (1.35x faster). You
can explore some of this performance data at Nick Cameron’s preliminary
tracking site, using dates 2015-05-15 to 2015-06-25.
+ Parallel codegen is now working, and produces a 33% speedup when
bootstrapping on a 4 core machine. Parallel codegen is particularly useful
for debug builds, since it prevents some optimizations; but it can also be
used with optimizations as an effective -O1 flag. It can be activated
by passing -C codegen-units=N to rustc, where N is the desired number
of threads.
- Update to version 1.1.0:
+ The std::fs module has been expanded to expand the set of
functionality exposed:
* DirEntry now supports optimizations like file_type and
metadata which don't incur a syscall on some platforms.
* A symlink_metadata function has been added.
* The fs::Metadata structure now lowers to its OS counterpart,
providing access to all underlying information.
+ The compiler now contains extended explanations of many errors.
When an error with an explanation occurs the compiler suggests
using the --explain flag to read the explanation. Error
explanations are also available online.
+ Thanks to multiple improvements to type checking, as well as other
work, the time to bootstrap the compiler decreased by 32%.
- drop tar_scm service and use source urls
- Update to version 1.0.0:
+ lint: deny transmuting from immutable to mutable, since it's undefined behavior
+ std: update select internals to not use mutable transmuting
+ std: Remove index notation on slice iterators
+ std: Destabilize io::BufStream
+ Make RwLock::try_write try to obtain a write lock
+ std: Remove addition on vectors for now
+ thread: right now you can't actually set those printers
+ Fix#24872, XSS in docs not found page.
+ Update AUTHORS.txt and RELEASES.md for 1.0
+ std: Mark `mem::forget` as a safe function
+ core: impl AsRef<[u8]> for str
+ collections: impl AsRef<[u8]> for String
+ collections: change bounds of SliceConcatExt implementations to use Borrow instead of AsRef
+ Fix invalid references due to the automated string substitution
+ dropck: must assume `Box<Trait + 'a>` has a destructor of interest.
- Rename binary package to rust
- Add build for i586
- Only run fdupes on SUSE builds
- Changed version format
- Update to version 1.0.0~beta4+git.1430848988.f873dc5:
+ Introduce a `FreeRegionMap` data structure. (#22779)
+ Fix#20616
+ std: Fix inheriting standard handles on windows
+ Fix#24895.
+ Fix zero-normalization of the pos of a `MultiByteChar`.
+ lint for mixing `#[repr(C)]` with an impl of `Drop`.
+ Bump prerelease version to .4
+ Add downcasting to std::error::Error
- Format spec file
- Update to version 1.0.0beta3+git.1429985089.5241bf9:
+ Update Windows caveats
+ Utilize if..let for get_mut doc-comment examples
+ Indicate keywords are code-like in Fuse::reset_fuse doc comment
+ doc: improve/fix 'let' FAQ
+ Fix broken links in the docs
+ Indicate None is code-like in doc comments
+ Fixed typo in hash_map::Entry documentation
+ Remove an unused import on windows
- Version 1.0.0-beta3.
OBS-URL: https://build.opensuse.org/request/show/520946
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=116
- adjust build process and add package for Rust source
- clean-up of useless provides
- add rpmlintrc
- Update to version 1.19
- Language updates:
+ [Numeric fields can now be used for creating tuple structs.][41145] [RFC 1506]
For example `struct Point(u32, u32); let x = Point { 0: 7, 1: 0 };`.
+ [Macro recursion limit increased to 1024 from 64.][41676]
+ [Added lint for detecting unused macros.][41907]
+ [`loop` can now return a value with `break`.][42016] [RFC 1624]
For example: `let x = loop { break 7; };`
+ [C compatible `union`s are now available.][42068] [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 `fn`s,][42162] [RFC 1558]
Example: `let foo: fn(u8) -> u8 = |v: u8| { v };`
- Compiler updates:
+ [Add support for bootstrapping the Rust compiler toolchain on Android.][41370]
+ [Change `arm-linux-androideabi` to correspond to the `armeabi`
official ABI.][41656] 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.][41873]
+ [Minor optimisation of string operations.][42037]
+ [Compiler error message is now `aborting due to previous error(s)` instead of
`aborting due to N previous errors`][42150] This was previously inaccurate and
would only count certain kinds of errors.
+ [The compiler now supports Visual Studio 2017][42225]
+ [The compiler is now built against LLVM 4.0.1 by default][42948]
+ [Added a lot][42264] of [new error codes][42302]
+ [Added `target-feature=+crt-static` option][37406] [RFC 1721] Which allows
libraries with C Run-time Libraries(CRT) to be statically linked.
+ [Fixed various ARM codegen bugs][42740]
- Librarie updates:
+ [`String` now implements `FromIterator<Cow<'a, str>>` and
`Extend<Cow<'a, str>>`][41449]
+ [`Vec` now implements `From<&mut [T]>`][41530]
+ [`Box<[u8]>` now implements `From<Box<str>>`][41258]
+ [`SplitWhitespace` now implements `Clone`][41659]
+ [`[u8]::reverse` is now 5x faster and `[u16]::reverse` is now
1.5x faster][41764]
+ [`eprint!` and `eprintln!` macros added to prelude.][41192] Same as the `print!`
macros, but for printing to stderr.
- Stabilized APIs
+ [`OsString::shrink_to_fit`]
+ [`cmp::Reverse`]
+ [`Command::envs`]
+ [`thread::ThreadId`]
- Misc
+ [Added `rust-windbg.cmd`][39983] for loading rust `.natvis` files in the
Windows Debugger.
+ [Rust will now release XZ compressed packages][rust-installer/57]
+ [rustup will now prefer to download rust packages with
XZ compression][rustup/1100] over GZip packages.
+ [Added the ability to escape `#` in rust documentation][41785] By adding
additional `#`'s ie. `##` is now `#`
- Temporarily disable generation of compiler docs due to build issue
- Change i586 build to produce i686 target instead of i586 so that
x86 Firefox can be built with Rust.
- Update to 1.18.0
-Language updates:
+ [Stabilize pub(restricted)][40556] `pub` can now accept amodule 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][40870] conservative exposure of the
`/SUBSYSTEM` linker flag on Windows platforms. [RFC 1665].
+ [Refactor of trait object type parsing][40043] 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][40589]
+ [Now warns if you bind a lifetime parameter to 'static][40734]
+ [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.][40377]
-Compiler updates
+ [rustc can now emit mir with `--emit mir`][39891]
+ [Improved LLVM IR for trivial functions][40367]
+ [Added explanation for E0090(Wrong number of lifetimes are supplied)][40723]
+ [rustc compilation is now 15%-20% faster][41469] Thanks to optimisation
opportunities found through profiling
+ [Improved backtrace formatting when panicking][38165]
- Library updates:
+ [Specialized `Vec::from_iter` being passed `vec::IntoIter`][40731] if the
iterator hasn't been advanced the original `Vec` is reassembled with no actual
iteration or reallocation.
+ [Simplified HashMap Bucket interface][40561] provides performance
improvements for iterating and cloning.
+ [Specialize Vec::from_elem to use calloc][40409]
+ [Fixed Race condition in fs::create_dir_all][39799]
+ [No longer caching stdio on Windows][40516]
+ [Optimized insertion sort in slice][40807] insertion sort in some cases
2.50%~ faster and in one case now 12.50% faster.
+ [Optimized `AtomicBool::fetch_nand`][41143]
- Stabilized APIs:
+ [`Child::try_wait`]
+ [`HashMap::retain`]
+ [`HashSet::retain`]
+ [`PeekMut::pop`]
+ [`TcpStream::peek`]
+ [`UdpSocket::peek`]
- Misc:
+ [rustdoc can now use pulldown-cmark with the `--enable-commonmark` flag][40338]
+ [Added rust-winbg script for better debugging on Windows][39983]
+ [Rust now uses the official cross compiler for NetBSD][40612]
+ [rustdoc now accepts `#` at the start of files][40828]
+ [Fixed jemalloc support for musl][41168]
- Compatibility Notes:
+ [Changes to how the `0` flag works in format!][40241] 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][40377], 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][40043] 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 `impl`s are now a hard error][40728]
+ [`PartialOrd` and `Ord` must agree on the ordering.][41270]
+ [`rustc main.rs -o out --emit=asm,llvm-ir`][41085] 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][41805] when
the size of `Self` cannot be statically determined.
+ [rustc now builds with a "pthreads" flavour of MinGW for Windows GNU][40805]
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)
- Adjustment of rust version dependency to prevent inability to
build in the adi rings.
- Add the cargo binaries for each arch, used for building rust only
these are not shipped, and don't factor in to the final product.
- Revert restriction of x86 arch to i586 for the interim.
- Update to 1.17.0
- Language updates
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Updates to libraries
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility Notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Restrict x86 builds to i686 only.
- Revert restriction on previous rust versions used for building
- Change x86 build target from i586 to i686
- Switch .spec to use rust-build compilation system
- Update config.toml to reflect rust-build changes
- Strict versioning for compilation so rustc always use previous
stable compiler
- Update to 1.16.0
- Language updates
* Lifetimes in statics and consts default to `'static`. [RFC 1623]
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
* [`Duration::checked_sub`]
* [`Duration::checked_div`]
* [`Duration::checked_mul`]
* [`str::replacen`]
* [`str::repeat`]
* [`SocketAddr::is_ipv4`]
* [`SocketAddr::is_ipv6`]
* [`IpAddr::is_ipv4`]
* [`IpAddr::is_ipv6`]
* [`Vec::dedup_by`]
* [`Vec::dedup_by_key`]
* [`Result::unwrap_or_default`]
* [`<*const T>::wrapping_offset`]
* [`<*mut T>::wrapping_offset`]
* `CommandExt::creation_flags`
* [`File::set_permissions`]
* [`String::split_off`]
- Library updates
* [`[T]::binary_search` and `[T]::binary_search_by_key` now take
their argument by `Borrow` parameter][37761]
* [All public types in std implement `Debug`][38006]
* [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
* [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [std: Fix partial writes in `LineWriter`][38062]
* [std: Clamp max read/write sizes on Unix][38062]
* [Use more specific panic message for `&str` slicing errors][38066]
* [`TcpListener::set_only_v6` is deprecated][38304]. This
functionality cannot be achieved in std currently.
* [`writeln!`, like `println!`, now accepts a form with no string
or formatting arguments, to just print a newline][38469]
* [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
* [Reduce the size of static data in `std_unicode::tables`][38781]
* [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
`CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
`Display`][38909]
* [`Duration` implements `Sum`][38712]
* [`String` implements `ToSocketAddrs`][39048]
- Misc fixes
* [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
the path to the Rust implementation][38589]
* [The `armv7-linux-androideabi` target no longer enables NEON
extensions, per Google's ABI guide][38413]
* [The stock standard library can be compiled for Redox OS][38401]
* [Rust has initial SPARC support][38726]. Tier 3. No builds
available.
* [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
builds available.
* [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
- Compatibility notes
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* In this release, references to uninhabited types can not be
pattern-matched. This was accidentally allowed in 1.15.
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Ctrl-Z returns from `Stdin.read()` when reading from the console on
Windows][38274]
* [Clean up semantics of `self` in an import list][38313]
- Remove duplicate license files from _docdir: rpm 4.13 no longer
implicitly packages those files and we catch them using %license,
- remove bootstrap for s390x as binaries are available in
openSUSE:Factory:zSystems
- Fixes to build for archs armv7, aarch64, ppc64, s390x
- Update to 1.15.1
- Fix IntoIter::as_mut_slice's signature
- Correct rust-triples use in spec.
- Update to 1.15.0
- Language updates
* Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
stable. This allows popular code-generating crates like Serde and Diesel to
work ergonomically. [RFC 1681].
* [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
with curly braces][36868]. Part of [RFC 1506].
* [A number of minor changes to name resolution have been activated][37127].
They add up to more consistent semantics, allowing for future evolution of
Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
details of what is different. The breaking changes here have been transitioned
through the [`legacy_imports`] lint since 1.14, with no known regressions.
* [In `macro_rules`, `path` fragments can now be parsed as type parameter
bounds][38279]
* [`?Sized` can be used in `where` clauses][37791]
* [There is now a limit on the size of monomorphized types and it can be
modified with the `#![type_size_limit]` crate attribute, similarly to
the `#![recursion_limit]` attribute][37789]
- Compiler changes
* [On Windows, the compiler will apply dllimport attributes when linking to
extern functions][37973]. Additional attributes and flags can control which
library kind is linked and its name. [RFC 1717].
* [Rust-ABI symbols are no longer exported from cdylibs][38117]
* [The `--test` flag works with procedural macro crates][38107]
* [Fix `extern "aapcs" fn` ABI][37814]
* [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
* [The `format!` expander recognizes incorrect `printf` and shell-style
formatting directives and suggests the correct format][37613].
* [Only report one error for all unused imports in an import list][37456]
- Compiler performance
* [Avoid unnecessary `mk_ty` calls in `Ty::super_fold_with`][37705]
* [Avoid more unnecessary `mk_ty` calls in `Ty::super_fold_with`][37979]
* [Don't clone in `UnificationTable::probe`][37848]
* [Remove `scope_auxiliary` to cut RSS by 10%][37764]
* [Use small vectors in type walker][37760]
* [Macro expansion performance was improved][37701]
* [Change `HirVec<P<T>>` to `HirVec<T>` in `hir::Expr`][37642]
* [Replace FNV with a faster hash function][37229]
- For full change list, please see
https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md
- Adjust build so that aarch and ARM architectures use bootstrap for
initial build
- Fix provides/conflicts/obsoletes
- Remove patch 0001-Fix-armv7-autodetection.patch
+ appears to have been fixed upstream.
- Building armv7hl arch with bootstrap binary since previously
packaged versions haven't successfully built in the past
- Update to version 1.14.0
+ Announcement: https://blog.rust-lang.org/2016/12/22/Rust-1.14.html
+ Details: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1140-2016-12-22
- Release highlights:
+ support for RFC 1492. This small addition lets you use `..`
in more places, for example when destructuring a struct or tuple
+ println!(), with no arguments, prints newline
+ Wrapping impls standard binary and unary operators on
references, as well as the Sum and Product iterators, making
references to these types easier to use
+ Implement From<Cow<str>> for String and From<Cow<[T]>> for
Vec<T>. These implementations make sense, but were not yet added.
+ Expand .zip() specialization to .map() and .cloned() for
improved performance.
+ Implement RefUnwindSafe for atomic types, as these types are
“unwind safe,” though that wasn’t obvious at first.
+ Specialize Vec::extend to Vec::extend_from_slice for
performance gains.
+ Don’t reuse HashMap random seeds. This helps to mitigate one
type of DDoS attack.
+ The internal memory layout of HashMap is more cache-friendly,
for significant improvements in some operations
+ Impl Add<{str, Cow<str>}> for Cow<str>. We already support Add
for other string types, so not having it on Cow is inconsistent.
- Update to 1.13.0
- Add conflicts to help avoid situations where previous versions
or rustc-bootstrap may be installed
- Update to 1.12.1
- Remove patches:
+ 0003-Disable-embedding-timestamp-information.patch - fixed
by upstream
+ 0002-Add-armv6l-autodetection.patch - no-longer viable
- Revert from v1.13 to v1.11 in preparation for alternative
packaging.
- Add 0001-Fix-armv7-autodetection.patch
- Add 0002-Add-armv6l-autodetection.patch
* fix armv6 and armv7 builds
- Update to 1.11
+ Add support for cdylib crate types
- Remove merged patches:
* 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
* 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Set DT_SONAME when building dylibs
* Add add-soname.patch
- Move to package named rust
- Update to 1.10
+ -C panic=abort flag for rustc or equivalent in Cargo.toml
+ new crate type cdylib, embeded library for other languages
+ In addition, a number of performance improvements landed in
the compiler, and so did a number of usability improvements
across the documentation, rustdoc itself, and various error
messages.
+ This is the first release, which is guaranteed to be built
by previous stable release of rustc
- Packaging:
+ drop bootstrap mode and use rustc 1.9
+ move documentation to versioned directory
- Use smp_mflags for parallel building. Avoid sh invocation for
simple ldconfig calls. Drop archaic %clean section.
Drop filler words from summary.
- Rename source package to rustc-1_9 to conform to naming standards.
- Rename source package to rustc-190 to avoid unecessary rebuilds
of rustc packages on upgrade
- Move stage0 binaries into separate package
- Disable embedding timestamp information
- Add 0003-Disable-embedding-timestamp-information.patch
- Rename package to rustc-stable
- Add rpmlintrc
- Make bootstrapping conditional
- Fix misleading indentation errors on GCC 6.0
- Remove snap2.sh
- Add 0001-Fix-misleading-intentation-errors-on-gcc-6.0.patch
- Add 0002-Fix-GCC-6-misleading-indentation-error-in-hoedown.patch
- Update to version 1.9.0
+ Stabilization of std::panic
+ Deprecation warnings, #[deprecated] attribute
+ Compile time improvements
+ Rolling out use of specialization
+ Library stabilizations
About 80 library functions and methods are now stable in 1.
+ http://blog.rust-lang.org/2016/05/26/Rust-1.9.html
- Update to version 1.8.0:
+ Various “operator equals” operators, such as += and -=, are now
overloadable via various traits.
+ Empty struct declaration can contain cutly braces
+ New (non default) cargo based build system for rustc
+ About 20 library functions and methods are now stable in 1.8
- Update to version 1.7.0:
+ Many stabilized APIs
+ Improved library performance
+ BTreeSet and its iterators, Iter, IntoIter, and Range are covariant over their contained type.
+ LinkedList and its iterators, Iter and IntoIter are covariant over their contained type.
+ str::replace now accepts a Pattern, like other string searching methods.
+ Any is implemented for unsized types.
+ Hash is implemented for Duration.
+ Soundness fixes, may break code. See RFC 1214 for more information.
+ Several bugs in the compiler's visibility calculations were fixed.
+ Parsing "." as a float results in an error instead of 0.
+ Borrows of closure parameters may not outlive the closure.
- Update to version 1.6.0:
+ Stabilization of libcore and other library functions
+ Crates.io disallows wildcards
- Update to version 1.4.0:
+ Several changes have been made to fix type soundness and improve the
behavior of associated types. See RFC 1214. Although we have mostly
introduced these changes as warnings this release, to become errors next
release, there are still some scenarios that will see immediate breakage.
+ The str::lines and BufRead::lines iterators treat \r\n as line breaks in
addition to \n.
+ Loans of 'static lifetime extend to the end of a function.
+ str::parse no longer introduces avoidable rounding error when parsing
floating point numbers. Together with earlier changes to float
formatting/output, "round trips" like f.to_string().parse() now preserve
the value of f exactly. Additionally, leading plus signs are now accepted.
- Split the gdb support to rust-gdb subpackage
- Update to version 1.3.0:
+ API stabilization, including the new Duration API and
enhancements to Error and Hash/Hasher.
+ The substring matcher now uses a more efficient algorithm.
+ There were improvements to zero filling that speed up
Vec::resize and Read::read_to_end.
+ The implementation of Read::read_to_end has been specialized
for stdin and File, resulting in additional speedups.
+ The PartialEq implementation on slices is now much faster.
- Packaging: renamed source package to rustc to match upstream
- Update to version 1.2.0:
+ An across-the-board improvement to real-world compiler performance.
Representative crates include hyper (compiles 1.16x faster), html5ever
(1.62x faster), regex (1.32x faster) and rust-encoding (1.35x faster). You
can explore some of this performance data at Nick Cameron’s preliminary
tracking site, using dates 2015-05-15 to 2015-06-25.
+ Parallel codegen is now working, and produces a 33% speedup when
bootstrapping on a 4 core machine. Parallel codegen is particularly useful
for debug builds, since it prevents some optimizations; but it can also be
used with optimizations as an effective -O1 flag. It can be activated
by passing -C codegen-units=N to rustc, where N is the desired number
of threads.
- Update to version 1.1.0:
+ The std::fs module has been expanded to expand the set of
functionality exposed:
* DirEntry now supports optimizations like file_type and
metadata which don't incur a syscall on some platforms.
* A symlink_metadata function has been added.
* The fs::Metadata structure now lowers to its OS counterpart,
providing access to all underlying information.
+ The compiler now contains extended explanations of many errors.
When an error with an explanation occurs the compiler suggests
using the --explain flag to read the explanation. Error
explanations are also available online.
+ Thanks to multiple improvements to type checking, as well as other
work, the time to bootstrap the compiler decreased by 32%.
- drop tar_scm service and use source urls
- Update to version 1.0.0:
+ lint: deny transmuting from immutable to mutable, since it's undefined behavior
+ std: update select internals to not use mutable transmuting
+ std: Remove index notation on slice iterators
+ std: Destabilize io::BufStream
+ Make RwLock::try_write try to obtain a write lock
+ std: Remove addition on vectors for now
+ thread: right now you can't actually set those printers
+ Fix#24872, XSS in docs not found page.
+ Update AUTHORS.txt and RELEASES.md for 1.0
+ std: Mark `mem::forget` as a safe function
+ core: impl AsRef<[u8]> for str
+ collections: impl AsRef<[u8]> for String
+ collections: change bounds of SliceConcatExt implementations to use Borrow instead of AsRef
+ Fix invalid references due to the automated string substitution
+ dropck: must assume `Box<Trait + 'a>` has a destructor of interest.
- Rename binary package to rust
- Add build for i586
- Only run fdupes on SUSE builds
- Changed version format
- Update to version 1.0.0~beta4+git.1430848988.f873dc5:
+ Introduce a `FreeRegionMap` data structure. (#22779)
+ Fix#20616
+ std: Fix inheriting standard handles on windows
+ Fix#24895.
+ Fix zero-normalization of the pos of a `MultiByteChar`.
+ lint for mixing `#[repr(C)]` with an impl of `Drop`.
+ Bump prerelease version to .4
+ Add downcasting to std::error::Error
- Format spec file
- Update to version 1.0.0beta3+git.1429985089.5241bf9:
+ Update Windows caveats
+ Utilize if..let for get_mut doc-comment examples
+ Indicate keywords are code-like in Fuse::reset_fuse doc comment
+ doc: improve/fix 'let' FAQ
+ Fix broken links in the docs
+ Indicate None is code-like in doc comments
+ Fixed typo in hash_map::Entry documentation
+ Remove an unused import on windows
- Version 1.0.0-beta3.
OBS-URL: https://build.opensuse.org/request/show/520549
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=114
- adjust build process and add package for Rust source
- Update to version 1.19
- Language updates:
+ [Numeric fields can now be used for creating tuple structs.][41145] [RFC 1506]
For example `struct Point(u32, u32); let x = Point { 0: 7, 1: 0 };`.
+ [Macro recursion limit increased to 1024 from 64.][41676]
+ [Added lint for detecting unused macros.][41907]
+ [`loop` can now return a value with `break`.][42016] [RFC 1624]
For example: `let x = loop { break 7; };`
+ [C compatible `union`s are now available.][42068] [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 `fn`s,][42162] [RFC 1558]
Example: `let foo: fn(u8) -> u8 = |v: u8| { v };`
- Compiler updates:
+ [Add support for bootstrapping the Rust compiler toolchain on Android.][41370]
+ [Change `arm-linux-androideabi` to correspond to the `armeabi`
official ABI.][41656] 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.][41873]
+ [Minor optimisation of string operations.][42037]
+ [Compiler error message is now `aborting due to previous error(s)` instead of
`aborting due to N previous errors`][42150] This was previously inaccurate and
would only count certain kinds of errors.
+ [The compiler now supports Visual Studio 2017][42225]
+ [The compiler is now built against LLVM 4.0.1 by default][42948]
+ [Added a lot][42264] of [new error codes][42302]
+ [Added `target-feature=+crt-static` option][37406] [RFC 1721] Which allows
libraries with C Run-time Libraries(CRT) to be statically linked.
+ [Fixed various ARM codegen bugs][42740]
- Librarie updates:
+ [`String` now implements `FromIterator<Cow<'a, str>>` and
`Extend<Cow<'a, str>>`][41449]
+ [`Vec` now implements `From<&mut [T]>`][41530]
+ [`Box<[u8]>` now implements `From<Box<str>>`][41258]
+ [`SplitWhitespace` now implements `Clone`][41659]
+ [`[u8]::reverse` is now 5x faster and `[u16]::reverse` is now
1.5x faster][41764]
+ [`eprint!` and `eprintln!` macros added to prelude.][41192] Same as the `print!`
macros, but for printing to stderr.
- Stabilized APIs
+ [`OsString::shrink_to_fit`]
+ [`cmp::Reverse`]
+ [`Command::envs`]
+ [`thread::ThreadId`]
- Misc
+ [Added `rust-windbg.cmd`][39983] for loading rust `.natvis` files in the
Windows Debugger.
+ [Rust will now release XZ compressed packages][rust-installer/57]
+ [rustup will now prefer to download rust packages with
XZ compression][rustup/1100] over GZip packages.
+ [Added the ability to escape `#` in rust documentation][41785] By adding
additional `#`'s ie. `##` is now `#`
- Temporarily disable generation of compiler docs due to build issue
OBS-URL: https://build.opensuse.org/request/show/520410
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=112
- Language updates
* Lifetimes in statics and consts default to `'static`. [RFC 1623]
* [The compiler's `dead_code` lint now accounts for type aliases][38051].
* [Uninhabitable enums (those without any variants) no longer permit wildcard
match patterns][38069]
* [Clean up semantics of `self` in an import list][38313]
* [`Self` may appear in `impl` headers][38920]
* [`Self` may appear in struct expressions][39282]
- Compiler updates
* [`rustc` now supports `--emit=metadata`, which causes rustc to emit
a `.rmeta` file containing only crate metadata][38571]. This can be
used by tools like the Rust Language Service to perform
metadata-only builds.
* [Levenshtein based typo suggestions now work in most places, while
previously they worked only for fields and sometimes for local
variables][38927]. Together with the overhaul of "no
resolution"/"unexpected resolution" errors (#[38154]) they result in
large and systematic improvement in resolution diagnostics.
* [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
`U`][38670]
* [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
* [`rustc` no longer attempts to provide "consider using an explicit
lifetime" suggestions][37057]. They were inaccurate.
- Stabilized APIs
* [`VecDeque::truncate`]
* [`VecDeque::resize`]
* [`String::insert_str`]
* [`Duration::checked_add`]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=80
- Language updates
* Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
stable. This allows popular code-generating crates like Serde and Diesel to
work ergonomically. [RFC 1681].
* [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
with curly braces][36868]. Part of [RFC 1506].
* [A number of minor changes to name resolution have been activated][37127].
They add up to more consistent semantics, allowing for future evolution of
Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
details of what is different. The breaking changes here have been transitioned
through the [`legacy_imports`] lint since 1.14, with no known regressions.
* [In `macro_rules`, `path` fragments can now be parsed as type parameter
bounds][38279]
* [`?Sized` can be used in `where` clauses][37791]
* [There is now a limit on the size of monomorphized types and it can be
modified with the `#![type_size_limit]` crate attribute, similarly to
the `#![recursion_limit]` attribute][37789]
- Compiler changes
* [On Windows, the compiler will apply dllimport attributes when linking to
extern functions][37973]. Additional attributes and flags can control which
library kind is linked and its name. [RFC 1717].
* [Rust-ABI symbols are no longer exported from cdylibs][38117]
* [The `--test` flag works with procedural macro crates][38107]
* [Fix `extern "aapcs" fn` ABI][37814]
* [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
* [The `format!` expander recognizes incorrect `printf` and shell-style
formatting directives and suggests the correct format][37613].
* [Only report one error for all unused imports in an import list][37456]
- Compiler performance
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35