./lang/rust, Safe, concurrent, practical language

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 1.43.1nb1, Package name: rust-1.43.1nb1, Maintainer: pkgsrc-users

Rust is a systems programming language focused on three goals: safety,
speed, and concurrency. It maintains these goals without having a
garbage collector, making it a useful language for a number of use cases
other languages aren't good at: embedding in other languages, programs
with specific space and time requirements, and writing low-level code,
like device drivers and operating systems.

It improves on current languages targeting this space by having a number
of compile-time safety checks that produce no runtime overhead, while
eliminating all data races. Rust also aims to achieve "zero-cost
abstractions" even though some of these abstractions feel like those of
a high-level language. Even then, Rust still allows precise control
like a low-level language would.

Required to run:
[www/curl] [security/openssl] [lang/llvm]

Required to build:
[pkgtools/cwrappers] [lang/gcc5] [lang/python37]

Master sites:

SHA1: 0b52e365b5eff1fcc1a7b311ce2b666d2b2710da
RMD160: 074b72f9fe69342c6071ef254b96c32911710260
Filesize: 132905.367 KB

Version history: (Expand)

CVS history: (Expand)

   2020-07-08 16:46:14 by Jonathan Perkin | Files touched by this commit (12)
Log message:
rust: Add support for cross-compiling illumos.

It's not really cross-compiled, it's just a different target name, but is
treated the same way.  Once stabilised and crate support catches up we'll
switch over to it by default from x86_64-sun-solaris.  Until then I'll
build bootstrap kits for both natively.

While here fix up a bunch of obvious pkglint warnings.
   2020-07-07 12:44:02 by Havard Eidnes | Files touched by this commit (2)
Log message:
Upgrade to rust version 1.44.1.

Pkgsrc changes:
 * None.

Upstream changes:

Version 1.44.1 (2020-06-18)

* [rustfmt accepts rustfmt_skip in cfg_attr again.][73078]
* [Don't hash executable filenames on apple platforms, fixing backtraces.]
* [Fix crashes when finding backtrace on macOS.][71397]
* [Clippy applies lint levels into different files.][clippy/5356]

[71397]: https://github.com/rust-lang/rust/issues/71397
[73078]: https://github.com/rust-lang/rust/issues/73078
[cargo/8329]: https://github.com/rust-lang/cargo/pull/8329
[clippy/5356]: https://github.com/rust-lang/rust-clippy/issues/5356
   2020-07-06 21:09:29 by Havard Eidnes | Files touched by this commit (2)
Log message:
Based on suggestion, add the "cross.mk" file which contains
settings which may be tweaked to do a cross-build of rust.
Include it from the main Makefile.
   2020-07-06 18:12:14 by Havard Eidnes | Files touched by this commit (1)
Log message:
On second thought, put back the settings for powerpc and earmv7hf,
as they are needed when building natively on those platforms.
   2020-07-06 18:03:00 by Havard Eidnes | Files touched by this commit (1)
Log message:
Remove more of the cross-compile settings now consigned to my
own private cross.mk file.
   2020-07-06 15:56:32 by Havard Eidnes | Files touched by this commit (6) | Package updated
Log message:
Re-update rust to version 1.44.0.

Pkgsrc changes:
 * Remove the clutter caused by the cross-compile setup from Makefile
   (Now consigned to my own private cross.mk file.)
 * Remove a couple of patches which are now integrated upstream.
 * Minor adjustments to a couple of other patches.
 * Adjust cargo checksums after upstream upgrades.
 * Belatedly bump the curl dependency
 * If doing a "dist" build, unset DESTDIR during the build phase,
   to work around a mysterious build bug deep in the bowels of llvm,
   causing llvm tools to be installed to a directory unexpecetd by
   the rest of the rust build, ref.
   A "dist" build is not expected to be followed by an "install".
 * Bump nearly all bootstraps to 1.43.1; NetBSD earmv7hf bootstrap
   bumped to 1.44.0, as that one now finally builds and works.

Upstream changes:

Version 1.44.0 (2020-06-04)

- [You can now use `async/.await` with `#[no_std]` enabled.][69033]
- [Added the `unused_braces` lint.][70081]

**Syntax-only changes**

- [Expansion-driven outline module parsing][69838]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!

These are still rejected semantically, so you will likely receive an error but
these changes can be seen and parsed by macros and conditional compilation.

- [Rustc now respects the `-C codegen-units` flag in incremental mode.][70156]
  Additionally when in incremental mode rustc defaults to 256 codegen units.
- [Refactored `catch_unwind`, to have zero-cost unless unwinding is enabled and
  a panic is thrown.][67502]
- [Added tier 3\* support for the `aarch64-unknown-none` and
  `aarch64-unknown-none-softfloat` targets.][68334]
- [Added tier 3 support for `arm64-apple-tvos` and
  `x86_64-apple-tvos` targets.][68191]

- [Special cased `vec![]` to map directly to `Vec::new()`.][70632] This allows
  `vec![]` to be able to be used in `const` contexts.
- [`convert::Infallible` now implements `Hash`.][70281]
- [`OsString` now implements `DerefMut` and `IndexMut` returning
  a `&mut OsStr`.][70048]
- [Unicode 13 is now supported.][69929]
- [`String` now implements `From<&mut str>`.][69661]
- [`IoSlice` now implements `Copy`.][69403]
- [`Vec<T>` now implements `From<[T; N]>`.][68692] Where `N` is less \ 
than 32.
- [`proc_macro::LexError` now implements `fmt::Display` and `Error`.][68899]
- [`from_le_bytes`, `to_le_bytes`, `from_be_bytes`, `to_be_bytes`,
  `from_ne_bytes`, and `to_ne_bytes` methods are now `const` for all
  integer types.][69373]

Stabilized APIs
- [`PathBuf::with_capacity`]
- [`PathBuf::capacity`]
- [`PathBuf::clear`]
- [`PathBuf::reserve`]
- [`PathBuf::reserve_exact`]
- [`PathBuf::shrink_to_fit`]
- [`f32::to_int_unchecked`]
- [`f64::to_int_unchecked`]
- [`Layout::align_to`]
- [`Layout::pad_to_align`]
- [`Layout::array`]
- [`Layout::extend`]

- [Added the `cargo tree` command which will print a tree graph of
  your dependencies.][cargo/8062] E.g.
    mdbook v0.3.2 (/Users/src/rust/mdbook)
  +-- ammonia v3.0.0
  |   +-- html5ever v0.24.0
  |   |   +-- log v0.4.8
  |   |   |   +-- cfg-if v0.1.9
  |   |   +-- mac v0.1.1
  |   |   +-- markup5ever v0.9.0
  |   |       +-- log v0.4.8 (*)
  |   |       +-- phf v0.7.24
  |   |       |   +-- phf_shared v0.7.24
  |   |       |       +-- siphasher v0.2.3
  |   |       |       +-- unicase v1.4.2
  |   |       |           [build-dependencies]
  |   |       |           +-- version_check v0.1.5
  You can also display dependencies on multiple versions of the same crate with
  `cargo tree -d` (short for `cargo tree --duplicates`).

- [Rustdoc now allows you to specify `--crate-version` to have rustdoc include
  the version in the sidebar.][69494]

Compatibility Notes
- [Rustc now correctly generates static libraries on Windows GNU targets with
  the `.a` extension, rather than the previous `.lib`.][70937]
- [Removed the `-C no_integrated_as` flag from rustc.][70345]
- [The `file_name` property in JSON output of macro errors now points the actual
  source file rather than the previous format of `<NAME macros>`.][70969]
  **Note:** this may not point a file that actually exists on the user's system.
- [The minimum required external LLVM version has been bumped to LLVM 8.][71147]
- [`mem::{zeroed, uninitialised}` will now panic when used with types that do
  not allow zero initialization such as `NonZeroU8`.][66059] This was
  previously a warning.
- [In 1.45.0 (the next release) converting a `f64` to `u32` using the `as`
  operator has been defined as a saturating operation.][71269] This was
  previously undefined behaviour, you can use the `{f64, f32}::to_int_unchecked`
  methods to continue using the current behaviour which may desirable in rare
  performance sensitive situations.

Internal Only
These changes provide no direct user facing benefits, but represent significant
improvements to the internals and overall performance of rustc and
related tools.

- [dep_graph Avoid allocating a set on when the number reads are small.][69778]
- [Replace big JS dict with JSON parsing.][71250]

[69373]: https://github.com/rust-lang/rust/pull/69373/
[66059]: https://github.com/rust-lang/rust/pull/66059/
[68191]: https://github.com/rust-lang/rust/pull/68191/
[68899]: https://github.com/rust-lang/rust/pull/68899/
[71147]: https://github.com/rust-lang/rust/pull/71147/
[71250]: https://github.com/rust-lang/rust/pull/71250/
[70937]: https://github.com/rust-lang/rust/pull/70937/
[70969]: https://github.com/rust-lang/rust/pull/70969/
[70632]: https://github.com/rust-lang/rust/pull/70632/
[70281]: https://github.com/rust-lang/rust/pull/70281/
[70345]: https://github.com/rust-lang/rust/pull/70345/
[70048]: https://github.com/rust-lang/rust/pull/70048/
[70081]: https://github.com/rust-lang/rust/pull/70081/
[70156]: https://github.com/rust-lang/rust/pull/70156/
[71269]: https://github.com/rust-lang/rust/pull/71269/
[69838]: https://github.com/rust-lang/rust/pull/69838/
[69929]: https://github.com/rust-lang/rust/pull/69929/
[69661]: https://github.com/rust-lang/rust/pull/69661/
[69778]: https://github.com/rust-lang/rust/pull/69778/
[69494]: https://github.com/rust-lang/rust/pull/69494/
[69403]: https://github.com/rust-lang/rust/pull/69403/
[69033]: https://github.com/rust-lang/rust/pull/69033/
[68692]: https://github.com/rust-lang/rust/pull/68692/
[68334]: https://github.com/rust-lang/rust/pull/68334/
[67502]: https://github.com/rust-lang/rust/pull/67502/
[cargo/8062]: https://github.com/rust-lang/cargo/pull/8062/
[`PathBuf::with_capacity`]: \ 
https://doc.rust-lang.org/std/path/stru … h_capacity
[`PathBuf::capacity`]: \ 
https://doc.rust-lang.org/std/path/stru … d.capacity
[`PathBuf::clear`]: \ 
https://doc.rust-lang.org/std/path/stru … thod.clear
[`PathBuf::reserve`]: \ 
https://doc.rust-lang.org/std/path/stru … od.reserve
[`PathBuf::reserve_exact`]: \ 
https://doc.rust-lang.org/std/path/stru … erve_exact
[`PathBuf::shrink_to_fit`]: \ 
https://doc.rust-lang.org/std/path/stru … ink_to_fit
[`f32::to_int_unchecked`]: \ 
https://doc.rust-lang.org/std/primitive … _unchecked
[`f64::to_int_unchecked`]: \ 
https://doc.rust-lang.org/std/primitive … _unchecked
[`Layout::align_to`]: \ 
https://doc.rust-lang.org/std/alloc/str … d.align_to
[`Layout::pad_to_align`]: \ 
https://doc.rust-lang.org/std/alloc/str … d_to_align
[`Layout::array`]: \ 
https://doc.rust-lang.org/std/alloc/str … thod.array
[`Layout::extend`]: \ 
https://doc.rust-lang.org/std/alloc/str … hod.extend
   2020-06-24 11:46:26 by Nia Alarie | Files touched by this commit (2)
Log message:
rust: uses -std=c++14
   2020-06-18 17:00:21 by Greg Troxel | Files touched by this commit (1)
Log message:
rust/platform.mk: Note PR about earmv7, and requirement for PR links

Following discussion on tech-net, note that disabling rust on a
platform where it ought to work requires a link to an open PR.

Add a link to the PR about NetBSD/earmv7hf.