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

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


Branch: CURRENT, Version: 1.24.0, Package name: rust-1.24.0, 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/libssh2] [lang/python27] [devel/libgit2] [www/http-parser]

Required to build:
[devel/cmake] [pkgtools/cwrappers]

Master sites:

SHA1: 067f5a3c39490573adb85caf6af8e7dca7fcba1d
RMD160: 5ba759d3620e5b37ca4d638b6511c8e4e6c3b009
Filesize: 65924.701 KB

Version history: (Expand)


CVS history: (Expand)


   2018-02-18 13:12:54 by Ryo ONODERA | Files touched by this commit (2) | Package updated
Log message:
Update to 1.24.0

* Disable SunOS support for a while

Changelog:
Version 1.24.0 (2018-02-15)
Language
    External sysv64 ffi is now available. eg. extern "sysv64" fn foo () {}

Compiler
    rustc now uses 16 codegen units by default for release builds. For
      the fastest builds, utilize codegen-units=1.
    Added armv4t-unknown-linux-gnueabi target.
    Add aarch64-unknown-openbsd support

Libraries
    str::find::<char> now uses memchr. This should lead to a 10x improvement
      in performance in the majority of cases.
    OsStr's Debug implementation is now lossless and consistent with Windows.
    time::{SystemTime, Instant} now implement Hash.
    impl From<bool> for AtomicBool
    impl From<{CString, &CStr}> for {Arc<CStr>, Rc<CStr>}
    impl From<{OsString, &OsStr}> for {Arc<OsStr>, Rc<OsStr>}
    impl From<{PathBuf, &Path}> for {Arc<Path>, Rc<Path>}
    float::from_bits now just uses transmute. This provides some optimisations
      from LLVM.
    Copied AsciiExt methods onto char
    Remove T: Sized requirement on ptr::is_null()
    impl From<RecvError> for {TryRecvError, RecvTimeoutError}
    Optimised f32::{min, max} to generate more efficent x86 assembly
    [u8]::contains now uses memchr which provides a 3x speed improvement

Stabilized APIs
    RefCell::replace
    RefCell::swap
    atomic::spin_loop_hint

The following functions can now be used in a constant expression.
eg. let buffer: [u8; size_of::<usize>()];, static COUNTER: AtomicUsize =
AtomicUsize::new(1);

    AtomicBool::new
    AtomicUsize::new
    AtomicIsize::new
    AtomicPtr::new
    Cell::new
    {integer}::min_value
    {integer}::max_value
    mem::size_of
    mem::align_of
    ptr::null
    ptr::null_mut
    RefCell::new
    UnsafeCell::new

Cargo
    Added a workspace.default-members config that overrides implied --all
      in virtual workspaces.
    Enable incremental by default on development builds. Also added
      configuration keys to Cargo.toml and .cargo/config to disable on
      a per-project or global basis respectively.

Misc
Compatibility Notes
    Floating point types Debug impl now always prints a decimal point.
    Ipv6Addr now rejects superfluous ::'s in IPv6 addresses This is in
      accordance with IETF RFC 4291 Sec. 2.2.
    Unwinding will no longer go past FFI boundaries, and will instead abort.
    Formatter::flags method is now deprecated. The sign_plus, sign_minus,
      alternate, and sign_aware_zero_pad should be used instead.
    Leading zeros in tuple struct members is now an error
    column!() macro is one-based instead of zero-based
    fmt::Arguments can no longer be shared across threads
    Access to #[repr(packed)] struct fields is now unsafe
    Cargo sets a different working directory for the compiler
   2018-01-09 12:47:33 by Ryo ONODERA | Files touched by this commit (2)
Log message:
Enable SunOS/Solaris support

However SunOS build fails with internal libtool.
   2018-01-08 10:33:58 by Ryo ONODERA | Files touched by this commit (6) | Package updated
Log message:
Update to 1.23.0

* Disable Solaris/SunOS suppprt for a while

Changelog:
# What's in 1.23.0 stable

New year, new Rust! For our first improvement today, we now avoid
some unnecessary copies in certain situations. We've seen memory
usage of using rustc to drop 5-10% with this change; it may be
different with your programs.

The documentation team has been on a long journey to move rustdoc
to use CommonMark. Previously, rustdoc never guaranteed which
markdown rendering engine it used, but we're finally committing to
CommonMark. As part of this release, we render the documentation
with our previous renderer, Hoedown, but also render it with a
CommonMark compliant renderer, and warn if there are any differences.
There should be a way for you to modify the syntax you use to render
correctly under both; we're not aware of any situations where this
is impossible. Docs team member Guillaume Gomez has written a blog
post showing some common differences and how to solve them. In a
future release, we will switch to using the CommonMark renderer by
default. This warning landed in nightly in May of last year, and
has been on by default since October of last year, so many crates
have already fixed any issues that they've found.

In other documentation news, historically, Cargo's docs have been
a bit strange. Rather than being on doc.rust-lang.org, they've been
at doc.crates.io. With this release, that's changing. You can now
find Cargo's docs at doc.rust-lang.org/cargo. Additionally, they've
been converted to the same format as our other long-form documentation.
We'll be adding a redirect from doc.crates.io to this page, and
you can expect to see more improvements and updates to Cargo's docs
throughout the year.

See the detailed release notes for more.

## Library stabilizations

As of Rust 1.0, a trait named AsciiExt existed to provide ASCII
related functionality on u8, char, [u8], and str. To use it, you'd
write code like this:

use std::ascii::AsciiExt;

let ascii = 'a';
let non_ascii = '❤';
let int_ascii = 97;

assert!(ascii.is_ascii());
assert!(!non_ascii.is_ascii());
assert!(int_ascii.is_ascii());

In Rust 1.23, these methods are now defined directly on those types,
and so you no longer need to import the trait. Thanks to our
stability guarantees, this trait still exists, so if you'd like to
still support Rust versions before Rust 1.23, you can do this:

#[allow(unused_imports)]
use std::ascii::AsciiExt;

...to suppress the related warning. Once you drop support for older
Rusts, you can remove both lines, and everything will continue to
work.

Additionally, a few new APIs were stabilized this release:

    The various std::sync::atomic types now implement From their
    non-atomic types. For example, let x = AtomicBool::from(true);.
    () now implements FromIterator<()>; check the PR for a neat
    use-case.  RwLock<T> has had its Send restriction lifted

See the detailed release notes for more.

## Cargo features

cargo check can now check your unit tests.

cargo uninstall can now uninstall more than one package in one
command.
   2018-01-04 16:18:51 by Jonathan Perkin | Files touched by this commit (4)
Log message:
rust: Restore SunOS support.
   2018-01-01 22:18:57 by Adam Ciarcinski | Files touched by this commit (629) | Package updated
Log message:
Revbump after boost update
   2017-12-20 06:38:21 by Maya Rashish | Files touched by this commit (1)
Log message:
rust: revert distinfo:r1.13

This is likely an accidental change and the distinfo uploaded was different.
PR pkg/52809
   2017-12-17 02:00:02 by Ryo ONODERA | Files touched by this commit (2)
Log message:
Fix NetBSD/i386 8 build. Fix PR pkg/52809
   2017-12-07 13:53:31 by Ryo ONODERA | Files touched by this commit (1) | Package updated
Log message:
Bump PKGREVISION after binary change