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

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

Branch: CURRENT, Version: 1.26.0, Package name: rust-1.26.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: dcd755df6b00cd5bed097be0a361428a45bf94a0
RMD160: 5f7c7180496cdc5dd1c694bba2fa4fce236e708e
Filesize: 93148.268 KB

Version history: (Expand)

CVS history: (Expand)

   2018-05-18 14:45:52 by Ryo ONODERA | Files touched by this commit (3) | Package updated
Log message:
Update to 1.26.0

Version 1.26.0 (2018-05-10)

    Closures now implement Copy and/or Clone if all captured variables implement \ 
either or both traits.
    The inclusive range syntax e.g. for x in 0..=10 is now stable.
    Stablise '_. The underscore lifetime can be used anywhere where a lifetime \ 
can be elided.
    impl Trait is now stable allowing you to have abstract types in returns or \ 
in function parameters. e.g. fn foo() -> impl Iterator<Item=u8> or fn \ 
open(path: impl AsRef<Path>).
    Pattern matching will now automatically apply dereferences.
    128-bit integers in the form of u128 and i128 are now stable.
    main can now return Result<(), E: Debug> in addition to ().
    A lot of operations are now available in a const context. E.g. You can now \ 
index into constant arrays, reference and dereference into constants, and use \ 
Tuple struct constructors.
    Fixed entry slice patterns are now stable. e.g.

    let points = [1, 2, 3, 4];
    match points {
        [1, 2, 3, 4] => println!("All points were sequential."),
        _ => println!("Not all points were sequential."),


    LLD is now used as the default linker for wasm32-unknown-unknown.
    Fixed exponential projection complexity on nested types. This can provide up \ 
to a ~12% reduction in compile times for certain crates.
    Added the --remap-path-prefix option to rustc. Allowing you to remap path \ 
prefixes outputted by the compiler.
    Added powerpc-unknown-netbsd target.


    Implemented From<u16> for usize & From<{u8, i16}> for isize.
    Added hexadecimal formatting for integers with fmt::Debug e.g. \ 
assert!(format!("{:02x?}", b"Foo\0") == "[46, 6f, 6f, \ 
    Implemented Default, Hash for cmp::Reverse.
    Optimized str::repeat being 8x faster in large cases.
    ascii::escape_default is now available in libcore.
    Trailing commas are now supported in std and core macros.
    Implemented Copy, Clone for cmp::Reverse
    Implemented Clone for char::{ToLowercase, ToUppercase}.

Stabilized APIs

    *const T::add
    *const T::copy_to_nonoverlapping
    *const T::copy_to
    *const T::read_unaligned
    *const T::read_volatile
    *const T::read
    *const T::sub
    *const T::wrapping_add
    *const T::wrapping_sub
    *mut T::add
    *mut T::copy_to_nonoverlapping
    *mut T::copy_to
    *mut T::read_unaligned
    *mut T::read_volatile
    *mut T::read
    *mut T::replace
    *mut T::sub
    *mut T::swap
    *mut T::wrapping_add
    *mut T::wrapping_sub
    *mut T::write_bytes
    *mut T::write_unaligned
    *mut T::write_volatile
    *mut T::write


    Cargo will now output path to custom commands when -v is passed with --list
    The Cargo binary version is now the same as the Rust version
    Cargo.lock files are now included in published crates.


    The second edition of "The Rust Programming Language" book is now \ 
recommended over the first.

Compatibility Notes

    aliasing a Fn trait as dyn no longer works. E.g. the following syntax is now \ 

    use std::ops::Fn as dyn;
    fn g(_: Box<dyn(std::fmt::Debug)>) {}

    The result of dereferences are no longer promoted to 'static. e.g.

    fn main() {
        const PAIR: &(i32, i32) = &(0, 1);
        let _reversed_pair: &'static _ = &(PAIR.1, PAIR.0); // Doesn't work

    Deprecate AsciiExt trait in favor of inherent methods.
    ".e0" will now no longer parse as 0.0 and will instead cause an error.
    Removed hoedown from rustdoc.
    Bounds on higher-kinded lifetimes a hard error.
   2018-05-06 03:59:36 by Maya Rashish | Files touched by this commit (1)
Log message:
Add a show-cargo-depends target, sparing the effort of listing cargo
dependencies manually.

Document a bit and give some helpful tips.
   2018-04-29 23:32:09 by Adam Ciarcinski | Files touched by this commit (629) | Package updated
Log message:
revbump for boost-libs update
   2018-04-05 00:38:27 by Jonathan Perkin | Files touched by this commit (2)
Log message:
rust: Re-enable SunOS support.
   2018-04-04 14:16:46 by Ryo ONODERA | Files touched by this commit (3) | Package updated
Log message:
Update to 1.25.0

Version 1.25.0 (2018-03-29)

    Stabilised #[repr(align(x))]. RFC 1358
    You can now use nested groups of imports. e.g. use std::{fs::File, io::Read, \ 
path::{Path, PathBuf}};
    You can now have | at the start of a match arm. e.g.

enum Foo { A, B, C }

fn main() {
    let x = Foo::A;
    match x {
        | Foo::A
        | Foo::B => println!("AB"),
        | Foo::C => println!("C"),


    Upgraded to LLVM 6.
    Added -C lto=val option.
    Added i586-unknown-linux-musl target


    Impl Send for process::Command on Unix.
    Impl PartialEq and Eq for ParseCharError.
    UnsafeCell::into_inner is now safe.
    Implement libstd for CloudABI.
    Float::{from_bits, to_bits} is now available in libcore.
    Implement AsRef<Path> for Component
    Implemented Write for Cursor<&mut Vec<u8>>
    Moved Duration to libcore.

Stabilized APIs


The following functions can now be used in a constant expression. eg. static \ 
MINUTE: Duration = Duration::from_secs(60);



    cargo new no longer removes rust or rs prefixs/suffixs.
    cargo new now defaults to creating a binary crate, instead of a library crate.


    Rust by example is now shipped with new releases

Compatibility Notes

    Deprecated net::lookup_host.
    rustdoc has switched to pulldown as the default markdown renderer.
    The borrow checker was sometimes incorrectly permitting overlapping borrows \ 
around indexing operations (see #47349). This has been fixed (which also enabled \ 
some correct code that used to cause errors (e.g. #33903 and #46095).
    Removed deprecated unstable attribute #[simd].
   2018-03-03 23:11:26 by Ryo ONODERA | Files touched by this commit (2) | Package updated
Log message:
Update to 1.24.1

    Do not abort when unwinding through FFI (this reverts behavior added
      in 1.24.0)
    Emit UTF-16 files for linker arguments on Windows
    Make the error index generator work again
    Cargo will warn on Windows 7 if an update is needed.
   2018-03-02 06:59:18 by =?UTF-8?B?RnLDqWTDqXJpYyBGYXViZXJ0ZWF1?= | Files touched by this commit (3)
Log message:
Enable FreeBSD support
   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

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

    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

    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

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


    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.

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