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

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


Branch: CURRENT, Version: 1.28.0, Package name: rust-1.28.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: 2256655a8e20e4ce29dcc2219079d9e418058690
RMD160: 97497baad42d04cb4157e02dc6a2d1b065117065
Filesize: 95465.74 KB

Version history: (Expand)


CVS history: (Expand)


   2018-08-13 15:09:38 by Jonathan Perkin | Files touched by this commit (2)
Log message:
rust: Switch to the 1.28.0 bootstrap for SunOS too.

It looks like I accidentally built the 1.27.2 bootstrap without the stack clash
fix required for newer illumos platforms, so just use 1.28.0 which was built
correctly for now.
   2018-08-09 21:10:06 by Ryo ONODERA | Files touched by this commit (2)
Log message:
Enable NetBSD/i386 support and fix NetBSD build

* 1.27.2 bootstrap kit has a serious bug and does not work under NetBSD.
  So use 1.28.0 instead.
   2018-08-09 19:04:03 by Jonathan Perkin | Files touched by this commit (5) | Package updated
Log message:
rust: Update to version 1.28.0.

NetBSD/i386 is temporarily disabled due to missing binary bootstraps.

Version 1.28.0 (2018-08-02)
===========================

Language
--------
- [The `#[repr(transparent)]` attribute is now stable.][51562] 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.][51196]
- [The `GlobalAlloc` trait and `#[global_allocator]` attribute are now
  stable.][51241] 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 `()`.][51298]
- [The `lifetime` specifier for `macro_rules!` is now stable.][50385] This
  allows macros to easily target lifetimes.

Compiler
--------
- [The `s` and `z` optimisation levels are now stable.][50265] 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.][49546] 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.][50143]
- [Reduced the number of allocations in the macro parser.][50855] This can
  improve compile times of macro heavy crates on average by 5%.

Libraries
---------
- [Implemented `Default` for `&mut str`.][51306]
- [Implemented `From<bool>` for all integer and unsigned number types.][50554]
- [Implemented `Extend` for `()`.][50234]
- [The `Debug` implementation of `time::Duration` should now be more easily
  human readable.][50364] 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`.][50170]
- [Implemented `Shl` and `Shr` for `Wrapping<u128>`
  and `Wrapping<i128>`.][50465]
- [`DirEntry::metadata` now uses `fstatat` instead of `lstat` when
  possible.][51050] This can provide up to a 40% speed increase.
- [Improved error messages when using `format!`.][50610]

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.][50486] This will allow dev tools to check whether a code suggestion
  would apply to them.

Compatibility Notes
-------------------
- [Rust will no longer consider trait objects with duplicated constraints to
  have implementations.][51276] 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"); }
  }
  ```
   2018-07-30 21:32:01 by Ryo ONODERA | Files touched by this commit (1)
Log message:
Regen for NetBSD/i386 bootstrap kit

I have accidentally removed old kit. It seems that ftp.NetBSD.org does not
mirror it.
   2018-07-22 10:02:27 by Ryo ONODERA | Files touched by this commit (2) | Package updated
Log message:
Update to 1.27.2

Changelog:
Version 1.27.2 (2018-07-20)

Compatibility Notes

 * The borrow checker was fixed to avoid potential unsoundness when using
   match ergonomics: #52213.

Version 1.27.1 (2018-07-10)

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.

   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: #51415, #49534.
   2018-07-18 18:24:38 by Jonathan Perkin | Files touched by this commit (1)
Log message:
rust: Add more libraries to the stage0 fixup.
   2018-07-16 03:58:58 by Ryo ONODERA | Files touched by this commit (2) | Package updated
Log message:
Update to 1.27.1

Changelog:
Version 1.27.1 (2018-07-10)
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.

    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: #51415, #49534
   2018-07-06 10:22:53 by Jonathan Perkin | Files touched by this commit (1)
Log message:
rust: Set CARGO_BUILD_JOBS to MAKE_JOBS.

cargo defaults to using the number of CPUs detected on the host machine, which
is a terrible heuristic and can easily lead to DRAM exhaustion, especially in a
zones environment where you have access to the full number of CPUs but will be
limited to a portion of available DRAM.

Tidy up a SunOS section while here.