rust/rust.spec

652 lines
21 KiB
RPMSpec
Raw Normal View History

#
# spec file for package rust
#
Accepting request 787613 from home:federico-mena:branches:devel:languages:rust - 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
2020-03-26 19:40:33 +01:00
# Copyright (c) 2020 SUSE LLC.
# Copyright (c) 2019 Luke Jones, luke@ljones.dev
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global version_current 1.42.0
%global version_previous 1.41.1
%global version_bootstrap 1.41.1
# some sub-packages are versioned independently
Accepting request 787613 from home:federico-mena:branches:devel:languages:rust - 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
2020-03-26 19:40:33 +01:00
%global rustfmt_version 1.4.11
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%global clippy_version 0.0.212
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# Build the rust target triple.
# Some rust arches don't match what SUSE labels them.
Accepting request 520946 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-05 03:10:50 +02:00
%global rust_arch %{_arch}
%global abi gnu
%ifarch armv7hl
Accepting request 520946 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-05 03:10:50 +02:00
%global rust_arch armv7
%global abi gnueabihf
%endif
%ifarch armv6hl
%global rust_arch arm
%global abi gnueabihf
%endif
%ifarch ppc
%global rust_arch powerpc
%endif
%ifarch ppc64
Accepting request 520946 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-05 03:10:50 +02:00
%global rust_arch powerpc64
%endif
%ifarch ppc64le
Accepting request 520946 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-05 03:10:50 +02:00
%global rust_arch powerpc64le
%endif
# Must restrict the x86 build to i686 since i586 is currently
# unsupported
%ifarch %{ix86}
%global rust_arch i686
%endif
Accepting request 520946 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-05 03:10:50 +02:00
%global rust_triple %{rust_arch}-unknown-linux-%{abi}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# All sources and bootstraps are fetched form here
%global dl_url https://static.rust-lang.org/dist
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# Rust doesn't function well when put in /usr/lib64
Accepting request 520410 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-03 21:08:10 +02:00
%global common_libdir %{_prefix}/lib
%global rustlibdir %{common_libdir}/rustlib
# Will build with distro LLVM by default, but the following versions
# do not have a version new enough, >= 6.0 add --without bundled_llvm
# option, i.e. enable bundled_llvm by default Leap 42 to 42.3, SLE12
# SP1 to SLE12 SP3, Leap 15.0, SLE15 SP0
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} <= 150000
%bcond_without bundled_llvm
%endif
# RLS requires 64-bit atomics
%ifarch ppc
%bcond_with rls
%else
%bcond_without rls
%endif
# Debuginfo can exhaust memory on these architecture workers
%ifarch %{arm} %{ix86}
%define codegen_units --set rust.codegen-units=2
%define debug_info --disable-debuginfo --disable-debuginfo-only-std --disable-debuginfo-tools --disable-debuginfo-lines
%else
%define codegen_units --set rust.codegen-units=0
%define debug_info --enable-debuginfo --disable-debuginfo-only-std --enable-debuginfo-tools --disable-debuginfo-lines
%endif
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} <= 120500
# Use hardening ldflags, plus link path for gcc7's libstdc++
%global gcc_arch %{_arch}
%ifarch %{ix86}
# This is where gcc7 puts things in 32-bit x86.
%global gcc_arch i586
%endif
%ifarch ppc64le
# This is where gcc7 puts things in ppc64le.
%global gcc_arch powerpc64le
%endif
%global rustflags -Clink-arg=-Wl,-z,relro,-z,now -L%{_libdir}/gcc/%{gcc_arch}-suse-linux/7
%else
# Use hardening ldflags
%global rustflags -Clink-arg=-Wl,-z,relro,-z,now
%endif
# Exclude implicitly-scanned Provides, especially the libLLVM.so ones:
%global __provides_exclude_from ^%{rustlibdir}/.*$
# enable the --with-rust_bootstrap flag
%bcond_with rust_bootstrap
Name: rust
Version: %{version_current}
Release: 0
Summary: A systems programming language
License: MIT OR Apache-2.0
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
Group: Development/Languages/Rust
URL: https://www.rust-lang.org
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
Source0: %{dl_url}/rustc-%{version}-src.tar.xz
Accepting request 520549 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-04 05:30:42 +02:00
Source99: %{name}-rpmlintrc
Source100: %{dl_url}/rust-%{version_bootstrap}-x86_64-unknown-linux-gnu.tar.xz
Source101: %{dl_url}/rust-%{version_bootstrap}-i686-unknown-linux-gnu.tar.xz
Source102: %{dl_url}/rust-%{version_bootstrap}-aarch64-unknown-linux-gnu.tar.xz
Source103: %{dl_url}/rust-%{version_bootstrap}-armv7-unknown-linux-gnueabihf.tar.xz
Source105: %{dl_url}/rust-%{version_bootstrap}-powerpc64-unknown-linux-gnu.tar.xz
Source106: %{dl_url}/rust-%{version_bootstrap}-powerpc64le-unknown-linux-gnu.tar.xz
Source107: %{dl_url}/rust-%{version_bootstrap}-s390x-unknown-linux-gnu.tar.xz
Source108: %{dl_url}/rust-%{version_bootstrap}-powerpc-unknown-linux-gnu.tar.xz
# Make factory-auto stop complaining...
Source1000: README.suse-maint
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# PATCH-FIX-OPENSUSE: edit src/librustc_llvm/build.rs to ignore GCC incompatible flag
Patch0: ignore-Wstring-conversion.patch
# PATCH-FIX-UPSTREAM: fix rustdoc compilation: https://github.com/rust-lang/rust/issues/66224
BuildRequires: ccache
BuildRequires: curl
BuildRequires: fdupes
BuildRequires: git
BuildRequires: pkgconfig
BuildRequires: procps
BuildRequires: python3-base
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(zlib)
# Leap 42 to 42.3, SLE12 SP1, SP2
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} <= 120200
# In these distros cmake is 2.x, so we need cmake3 for building llvm.
BuildRequires: cmake3
%else
# cmake got upgraded to 3.5 in SLE-12 SP2
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
BuildRequires: cmake
%endif
# In all of SLE12, the default gcc is 4.8. Rust's LLVM wants 5.1 at least.
# So, we'll just use gcc7.
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} <= 120500
BuildRequires: gcc7-c++
%else
BuildRequires: gcc-c++
%endif
# The following requires must mirror: LIBSSH2_SYS_USE_PKG_CONFIG
%if !%{with rust_bootstrap} && 0%{?sle_version} >= 150000
BuildRequires: pkgconfig(libssh2) >= 1.6.0
%endif
# Real LLVM minimum version should be 7.x, but rust has a fallback
# mode
%if !%with bundled_llvm
BuildRequires: llvm-devel >= 6.0
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%endif
%if !%with rust_bootstrap
# We will now package cargo using the version number of rustc since it
# is being built from rust sources. Old cargo packages have a 0.x
# number
BuildRequires: cargo <= %{version_current}
BuildRequires: cargo >= %{version_previous}
BuildRequires: rust <= %{version_current}
BuildRequires: rust >= %{version_previous}
BuildRequires: rust-std-static <= %{version_current}
BuildRequires: rust-std-static >= %{version_previous}
%endif
# The compiler is not generally useful without the std library
# installed and the std library is exactly specific to the version of
# the compiler
Requires: %{name}-std-static = %{version}
Recommends: %{name}-doc
Recommends: cargo
Conflicts: rust
Conflicts: rustc-bootstrap
# Restrict the architectures as building rust relies on being
# initially bootstrapped before we can build the n+1 release
ExclusiveArch: x86_64 %{arm} aarch64 ppc ppc64 ppc64le s390x %{ix86}
%ifarch %{ix86}
ExclusiveArch: i686
%endif
%description
Rust is a systems programming language focused on three goals: safety,
speed, and concurrency. It maintains these goals without having a
garbage collector, making it a useful language for a number of use
cases other languages are not good at: embedding in other languages,
programs with specific space and time requirements, and writing
low-level code, like device drivers and operating systems. It improves
on current languages targeting this space by having a number of
compile-time safety checks that produce no runtime overhead, while
eliminating all data races. Rust also aims to achieve "zero-cost
abstractions", even though some of these abstractions feel like those
of a high-level language. Even then, Rust still allows precise control
like a low-level language would.
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%package -n rust-std-static
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
Summary: Standard library for Rust
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
Conflicts: rust-std < %{version}
Obsoletes: rust-std < %{version}
Provides: rust-std = %{version}
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%description -n rust-std-static
This package includes the standard libraries for building applications
written in Rust.
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
%package -n rust-doc
Summary: Rust documentation
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
%description -n rust-doc
Documentation for the Rust language.
%package -n rust-gdb
Summary: Gdb integration for rust binaries
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
%if 0%{?suse_version} && 0%{?suse_version} < 1500
# Legacy SUSE-only form
Supplements: packageand(%{name}:gdb)
%else
# Standard form
Supplements: (%{name} and gdb)
%endif
%description -n rust-gdb
This subpackage provides pretty printers and a wrapper script for
invoking gdb on rust binaries.
Accepting request 520549 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-04 05:30:42 +02:00
%package -n rust-src
Summary: Sources for the Rust standard library
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
Accepting request 520549 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-04 05:30:42 +02:00
BuildArch: noarch
%description -n rust-src
This package includes source files for the Rust standard library. This
is commonly used for function detail lookups in helper programs such
as RLS or racer.
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%package -n rls
Summary: Language server for Rust lang
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
Requires: %{name}-analysis = %{version}
Requires: %{name}-src = %{version}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%description -n rls
The RLS provides a server that runs in the background, providing IDEs,
editors, and other tools with information about Rust programs. It
supports functionality such as 'goto definition', symbol search,
reformatting, and code completion, and enables renaming and
refactorings. It can be used with an IDE such as Gnome-Builder.
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%package -n rust-analysis
Summary: Compiler analysis data for the Rust standard library
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: rust-std-static = %{version}
%description -n rust-analysis
This package contains analysis data files produced with rustc's
-Zsave-analysis feature for the Rust standard library. The RLS (Rust
Language Server) uses this data to provide information about the Rust
standard library.
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%package -n rustfmt
Summary: Code formatting tool for Rust lang
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
Requires: cargo = %{version}
Provides: cargo-fmt = %{rustfmt_version}
Provides: rustfmt = %{rustfmt_version}
%if 0%{?suse_version} && 0%{?suse_version} < 1500
# Legacy SUSE-only form
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
Supplements: packageand(%{name}:cargo)
%else
# Standard form
Supplements: (%{name} and cargo)
%endif
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%description -n rustfmt
A tool for formatting Rust code according to style guidelines.
%package -n clippy
Summary: Lints to catch common mistakes and improve Rust code
# /usr/bin/clippy-driver is dynamically linked against internal rustc libs
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
License: MPL-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
Requires: cargo = %{version}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
Provides: clippy = %{clippy_version}
%description -n clippy
A collection of lints to catch common mistakes and improve Rust code.
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%package -n cargo
Summary: The Rust package manager
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Requires: %{name} = %{version}
Conflicts: cargo < %{version}
Obsoletes: cargo < %{version}
Conflicts: cargo-vendor < %{version}
Obsoletes: cargo-vendor < %{version}
Provides: rustc:%{_bindir}/cargo = %{version}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%description -n cargo
Cargo downloads dependencies of Rust projects and compiles it.
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%package -n cargo-doc
Summary: Documentation for Cargo
# Cargo no longer builds its own documentation
# https://github.com/rust-lang/cargo/pull/4904
License: MIT OR Apache-2.0
Group: Development/Languages/Rust
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
Requires: rust-doc = %{version}
BuildArch: noarch
%description -n cargo-doc
This package includes HTML documentation for Cargo.
%prep
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%if %{with rust_bootstrap}
%ifarch x86_64
%setup -q -T -b 100 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch %{ix86}
%setup -q -T -b 101 -n rust-%{version_bootstrap}-i686-unknown-linux-%{abi}
%endif
%ifarch aarch64
%setup -q -T -b 102 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch armv7hl
%setup -q -T -b 103 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch armv6hl
%setup -q -T -b 104 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch ppc64
%setup -q -T -b 105 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch ppc64le
%setup -q -T -b 106 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch s390x
%setup -q -T -b 107 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
%ifarch ppc
%setup -q -T -b 108 -n rust-%{version_bootstrap}-%{rust_triple}
%endif
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
./install.sh --components=cargo,rustc,rust-std-%{rust_triple} --prefix=.%{_prefix} --disable-ldconfig
%endif
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%if %{with rust_bootstrap}
%global rust_root %{_builddir}/rust-%{version_bootstrap}-%{rust_triple}%{_prefix}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%else
%global rust_root %{_prefix}
%endif
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
%setup -q -n rustc-%{version}-src
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%patch0 -p1
# use python3
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
sed -i -e "1s|#!.*|#!%{_bindir}/python3|" x.py
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
# We never enable emscripten.
rm -rf src/llvm-emscripten/
# We never enable other LLVM tools.
rm -rf src/tools/clang
rm -rf src/tools/lld
rm -rf src/tools/lldb
# CI tooling won't be used
rm -rf src/ci
# Remove hidden files from source
Accepting request 694642 from home:luke_nukem:branches:devel:languages:rust - 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
2019-04-16 12:32:05 +02:00
find src/ -type f -name '.appveyor.yml' -exec rm -v '{}' '+'
find src/ -type f -name '.travis.yml' -exec rm -v '{}' '+'
find src/ -type f -name '.cirrus.yml' -exec rm -v '{}' '+'
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%if !%with bundled_llvm
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
rm -rf src/llvm/
%endif
# The configure macro will modify some autoconf-related files, which upsets
# cargo when it tries to verify checksums in those files. If we just truncate
# that file list, cargo won't have anything to complain about.
Accepting request 667330 from home:luke_nukem:branches:devel:languages:rust - 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
2019-01-22 02:49:01 +01:00
find vendor -name .cargo-checksum.json \
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
-exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
# Fix rpmlint error "This script uses 'env' as an interpreter"
sed -i '1s|#!%{_bindir}/env python|#!%{_bindir}/python3|' src/libcore/unicode/printable.py
chmod +x src/libcore/unicode/printable.py
%build
%define _lto_cflags %{nil}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%configure \
Accepting request 734169 from home:luke_nukem:branches:devel:languages:rust - 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
2019-10-01 05:31:42 +02:00
--set rust.deny-warnings=false \
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
--disable-option-checking \
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
--enable-local-rust \
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
--local-rust-root=%{rust_root} \
--libdir=%{common_libdir} \
--docdir=%{_docdir}/%{name} \
%{!?with_bundled_llvm: --llvm-root=%{_prefix} --enable-llvm-link-shared} \
%{?with_bundled_llvm: --disable-llvm-link-shared --set llvm.link-jobs=4} \
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
--disable-codegen-tests \
--enable-optimize \
--enable-ccache \
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
--enable-docs \
--enable-verbose-tests \
--disable-jemalloc \
--disable-rpath \
%{debug_info} \
%{codegen_units} \
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
--enable-vendor \
--enable-extended \
%if %{with rls}
--tools="cargo","rls","clippy","rustfmt","analysis","src" \
%else
--tools="cargo","clippy","rustfmt","analysis","src" \
%endif
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
--release-channel="stable"
# Sometimes we may be rebuilding with the same compiler,
# setting local-rebuild will skip stage0 build, reducing build time
if [ $(%{rust_root}/bin/rustc --version | sed -En 's/rustc ([0-9].[0-9][0-9].[0-9]).*/\1/p') = '%{version}' ]; then
sed -i -e "s|#local-rebuild = false|local-rebuild = true|" config.toml;
fi
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# BEGIN EXPORTS
# Keep all the "export VARIABLE" together here, so they can be
Accepting request 694642 from home:luke_nukem:branches:devel:languages:rust - 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
2019-04-16 12:32:05 +02:00
# cut&pasted to the %%install section below. And please keep them
# in sync!
# If the environments between build and install and different,
# everything will be rebuilt during installation!
export RUSTFLAGS="%{rustflags}"
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} <= 120500
export CC=gcc-7
export CXX=g++-7
%endif
# Make cargo use system libs if not bootstrapping
%if !%{with rust_bootstrap} && 0%{?sle_version} >= 150000
export LIBSSH2_SYS_USE_PKG_CONFIG=1
%endif
# eliminate complain from RPMlint
export CPPFLAGS="%{optflags}"
export DESTDIR=%{buildroot}
# END EXPORTS
Accepting request 667330 from home:luke_nukem:branches:devel:languages:rust - 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
2019-01-22 02:49:01 +01:00
./x.py build -v
./x.py doc -v
%install
# BEGIN EXPORTS
# Keep all the "export VARIABLE" together here, so they can be
Accepting request 694642 from home:luke_nukem:branches:devel:languages:rust - 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
2019-04-16 12:32:05 +02:00
# cut&pasted to the %%install section below. And please keep them
# in sync!
# If the environments between build and install and different,
# everything will be rebuilt during installation!
export RUSTFLAGS="%{rustflags}"
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} <= 120500
export CC=gcc-7
export CXX=g++-7
%endif
# Make cargo use system libs if not bootstrapping
%if !%{with rust_bootstrap} && 0%{?sle_version} >= 150000
export LIBSSH2_SYS_USE_PKG_CONFIG=1
%endif
# eliminate complain from RPMlint
export CPPFLAGS="%{optflags}"
export DESTDIR=%{buildroot}
# END EXPORTS
./x.py install
./x.py install src
# Remove executable permission from HTML documentation
# to prevent RPMLINT errors.
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
chmod -R -x+X %{buildroot}%{_docdir}/%{name}/html
# Remove lockfile to avoid errors.
rm %{buildroot}%{_docdir}/%{name}/html/.lock
# Sanitize the HTML documentation
find %{buildroot}%{_docdir}/%{name}/html -empty -delete
find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+'
Accepting request 694642 from home:luke_nukem:branches:devel:languages:rust - 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
2019-04-16 12:32:05 +02:00
find %{buildroot}%{_docdir}/%{name}/html -type f -name '.nojekyll' -exec rm -v '{}' '+'
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# Remove the license files from _docdir: make install put duplicates there
rm %{buildroot}%{_docdir}/%{name}/{README.md,COPYRIGHT,LICENSE*}
rm %{buildroot}%{_docdir}/%{name}/*.old
# Remove installer artifacts (manifests, uninstall scripts, etc.)
find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+'
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
# The shared libraries should be executable for debuginfo extraction.
find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -name '*.so' -exec chmod -v +x '{}' '+'
# The html docs for x86 and x86_64 are the same in most places
%fdupes -s %{buildroot}%{_docdir}/%{name}/html
%fdupes -s %{buildroot}/%{_mandir}
%fdupes %{buildroot}/%{_prefix}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
# Create the path for crate-devel packages
mkdir -p %{buildroot}%{_datadir}/cargo/registry
# Cargo no longer builds its own documentation
# https://github.com/rust-lang/cargo/pull/4904
mkdir -p %{buildroot}%{_docdir}/cargo
ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html
# Move the bash-completition to correct directory for openSUSE
install -D %{buildroot}%{_sysconfdir}/bash_completion.d/cargo %{buildroot}%{_datadir}/bash-completion/completions/cargo
# There should be nothing here at all
rm -rf %{buildroot}%{_sysconfdir}
# Remove llvm installation
rm -rf %{buildroot}/home
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%if 0%{?suse_version} == 1315
%doc COPYRIGHT LICENSE-APACHE LICENSE-MIT
%else
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
%license COPYRIGHT LICENSE-APACHE LICENSE-MIT
%endif
%doc CONTRIBUTING.md README.md RELEASES.md
%{_bindir}/rustc
%{_bindir}/rustdoc
%{_bindir}/rust-lldb
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%{_mandir}/man1/rustc.1%{?ext_man}
%{_mandir}/man1/rustdoc.1%{?ext_man}
%{_prefix}/lib/lib*.so
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%dir %{rustlibdir}
%dir %{rustlibdir}/%{rust_triple}
%dir %{rustlibdir}/%{rust_triple}/lib
%{rustlibdir}/%{rust_triple}/lib/*.so
%exclude %{_docdir}/%{name}/html
Accepting request 520549 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-04 05:30:42 +02:00
%exclude %{rustlibdir}/src
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%files -n rust-std-static
Accepting request 520410 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-03 21:08:10 +02:00
%dir %{rustlibdir}
%dir %{rustlibdir}/%{rust_triple}
%dir %{rustlibdir}/%{rust_triple}/lib
%{rustlibdir}/%{rust_triple}/lib/*.rlib
%files -n rust-gdb
%{_bindir}/rust-gdb
Accepting request 694642 from home:luke_nukem:branches:devel:languages:rust - 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
2019-04-16 12:32:05 +02:00
%{_bindir}/rust-gdbgui
Accepting request 520410 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-03 21:08:10 +02:00
%dir %{rustlibdir}
%dir %{rustlibdir}%{_sysconfdir}
%{rustlibdir}%{_sysconfdir}/debugger_pretty_printers_common.py
%{rustlibdir}%{_sysconfdir}/gdb_load_rust_pretty_printers.py
%{rustlibdir}%{_sysconfdir}/gdb_rust_pretty_printing.py
%{rustlibdir}%{_sysconfdir}/lldb_rust_formatters.py
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
%files -n rust-doc
- 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 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=35
2017-02-06 09:25:50 +01:00
%dir %{_docdir}/%{name}
%dir %{_docdir}/%{name}/html
%doc %{_docdir}/%{name}/html/*
Accepting request 520549 from home:luke_nukem:branches:devel:languages:rust - 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
2017-09-04 05:30:42 +02:00
%files -n rust-src
%dir %{rustlibdir}
%{rustlibdir}/src
%if %{with rls}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%files -n rls
%if 0%{?suse_version} == 1315 && !0%{?is_opensuse}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%doc src/tools/rls/LICENSE-{APACHE,MIT}
%else
%license src/tools/rls/LICENSE-{APACHE,MIT}
%endif
%doc src/tools/rls/{README.md,COPYRIGHT,debugging.md}
%{_bindir}/rls
%endif
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%files analysis
%{rustlibdir}/%{rust_triple}/analysis/
%files -n rustfmt
%if 0%{?suse_version} == 1315 && !0%{?is_opensuse}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%doc src/tools/rustfmt/LICENSE-{APACHE,MIT}
%else
%license src/tools/rustfmt/LICENSE-{APACHE,MIT}
%endif
%doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md
%{_bindir}/cargo-fmt
%{_bindir}/rustfmt
%files -n clippy
%if 0%{?suse_version} == 1315 && !0%{?is_opensuse}
Accepting request 656172 from home:luke_nukem:branches:devel:languages:rust - 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
2018-12-10 23:23:11 +01:00
%doc src/tools/clippy/LICENSE-{APACHE,MIT}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%else
Accepting request 656172 from home:luke_nukem:branches:devel:languages:rust - 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
2018-12-10 23:23:11 +01:00
%license src/tools/clippy/LICENSE-{APACHE,MIT}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%endif
%doc src/tools/clippy/{README.md,CHANGELOG.md}
%{_bindir}/cargo-clippy
%{_bindir}/clippy-driver
%files -n cargo
%if 0%{?suse_version} == 1315 && !0%{?is_opensuse}
Accepting request 646330 from home:luke_nukem:branches:devel:languages:rust - 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
2018-11-05 09:18:23 +01:00
%doc src/tools/cargo/LICENSE-{APACHE,MIT,THIRD-PARTY}
%else
%license src/tools/cargo/LICENSE-{APACHE,MIT,THIRD-PARTY}
%endif
%{_bindir}/cargo
%{_mandir}/man1/cargo*.1%{?ext_man}
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/cargo
%dir %{_datadir}/zsh
%dir %{_datadir}/zsh/site-functions
%{_datadir}/zsh/site-functions/_cargo
%dir %{_datadir}/cargo
%dir %{_datadir}/cargo/registry
%files -n cargo-doc
%dir %{_docdir}/cargo
%{_docdir}/cargo/html
%changelog