ืฉื—ืจื•ืจ ืฉืคืช ืชื›ื ื•ืช Rust 1.45

ื™ืฆื ืœืื•ืจ ื’ืจืกื” 1.45 ืฉืœ ืฉืคืช ื”ืชื›ื ื•ืช ืฉืœ ื”ืžืขืจื›ืช ื—ืœื•ื“ื”, ืฉื”ื•ืงืžื” ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ ืžื•ื–ื™ืœื”. ื”ืฉืคื” ืžืชืžืงื“ืช ื‘ื‘ื˜ื™ื—ื•ืช ื–ื™ื›ืจื•ืŸ, ืžืกืคืงืช ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™ ื•ืžืกืคืงืช ื›ืœื™ื ืœื”ืฉื’ืช ืžืงื‘ื™ืœื™ื•ืช ื’ื‘ื•ื”ื” ืฉืœ ืžืฉื™ืžื•ืช ืœืœื ืฉื™ืžื•ืฉ ื‘ืื•ืกืฃ ืืฉืคื” ื–ืžืŸ ืจื™ืฆื”.

ื ื™ื”ื•ืœ ื”ื–ื™ื›ืจื•ืŸ ื”ืื•ื˜ื•ืžื˜ื™ ืฉืœ Rust ืžื‘ื˜ืœ ืฉื’ื™ืื•ืช ื‘ืขืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืžืฆื‘ื™ืขื™ื ื•ืžื’ืŸ ืžืคื ื™ ื‘ืขื™ื•ืช ื”ื ื•ื‘ืขื•ืช ืžืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื–ื™ื›ืจื•ืŸ ื‘ืจืžื” ื ืžื•ื›ื”, ื›ื’ื•ืŸ ื’ื™ืฉื” ืœืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืฉื—ืจื•ืจื•, ื”ืคื ื™ื™ืช ืžืฆื‘ื™ืข ืืคืกื™ืช, ื—ืจื™ื’ื•ืช ืžืื’ืจ ื•ื›ื•'. ืžื ื”ืœ ื—ื‘ื™ืœื•ืช ืžืคื•ืชื— ืœื”ืคืฆืช ืกืคืจื™ื•ืช, ื”ื‘ื˜ื—ืช ื”ืจื›ื‘ื” ื•ื ื™ื”ื•ืœ ืชืœื•ืช ืขืœ ื™ื“ื™ ื”ืคืจื•ื™ืงื˜. ืžื˜ืขืŸ, ื”ืžืืคืฉืจ ืœืš ืœืงื‘ืœ ืืช ื”ืกืคืจื™ื•ืช ื”ื“ืจื•ืฉื•ืช ืœืชื•ื›ื ื™ืช ื‘ืœื—ื™ืฆื” ืื—ืช. ืžืื’ืจ ื ืชืžืš ื›ื“ื™ ืœืืจื— ืกืคืจื™ื•ืช crates.io.

ื”ืขื™ืงืจื™ ื—ื™ื“ื•ืฉื™ื:

  • ืžื‘ื•ื˜ืœ ืœืื•ืจืš ื–ืžืŸ ืคึผึฐื’ึธื ื‘ืขืช ื‘ื™ืฆื•ืข ื”ืžืจื•ืช ื‘ื™ืŸ ืžืกืคืจื™ื ืฉืœืžื™ื ืœืžืกืคืจื™ ื ืงื•ื“ื” ืฆืคื”. ืžื›ื™ื•ื•ืŸ ืฉื”ืžื”ื“ืจ Rust ืžืฉืชืžืฉ ื‘-LLVM ื‘ืชื•ืจ ืงืฆื” ืขื•ืจืคื™, ืคืขื•ืœื•ืช ื”ืžืจืช ืกื•ื’ ื‘ื•ืฆืขื• ื‘ืืžืฆืขื•ืช ื”ื•ืจืื•ืช ืงื•ื“ ื‘ื™ื ื™ื™ื ืฉืœ LLVM ื›ื’ื•ืŸ fptoui, ืฉื™ืฉ ืœื”ื ืชื›ื•ื ื” ืื—ืช ืžืฉืžืขื•ืชื™ืช - ื”ืชื ื”ื’ื•ืช ืœื ืžื•ื’ื“ืจืช ืื ื”ืขืจืš ื”ืžืชืงื‘ืœ ืื™ื ื• ืžืชืื™ื ืœืกื•ื’ ื”ื™ืขื“. ืœื“ื•ื’ืžื”, ื›ืืฉืจ ืžืžื™ืจื™ื ืืช ื”ืขืจืš ื”ืฆืฃ 300 ืขื ืกื•ื’ f32 ืœืกื•ื’ ืžืกืคืจ ืฉืœื u8, ื”ืชื•ืฆืื” ืื™ื ื” ื ื™ืชื ืช ืœื—ื™ื–ื•ื™ ื•ืขืฉื•ื™ื” ืœื”ืฉืชื ื•ืช ื‘ืžืขืจื›ื•ืช ืฉื•ื ื•ืช. ื”ื‘ืขื™ื” ื”ื™ื ืฉืชื›ื•ื ื” ื–ื• ืžื•ืคื™ืขื” ื‘ืงื•ื“ ืฉืื™ื ื• ืžืกื•ืžืŸ ื›"ืœื ื‘ื˜ื•ื—".

    ื”ื—ืœ ืž-Rust 1.45, ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ื”ืฆืคืช ื’ื•ื“ืœ ื”ืกื•ื’ ืžื•ืกื“ืจืช ื‘ืงืคื“ื ื•ืช, ื•ืคืขื•ืœืช ื”ื”ืžืจื” "ื›ืžื•" ื‘ื•ื“ืงืช ื’ืœื™ืฉื” ื•ืžืืœืฆืช ืืช ื”ืžืจืช ื”ืขืจืš ืœืขืจืš ื”ืžืงืกื™ืžืœื™ ืื• ื”ืžื™ื ื™ืžืœื™ ืฉืœ ืกื•ื’ ื”ื™ืขื“ (ืœื“ื•ื’ืžื” ืœืขื™ืœ, ืขืจืš ืฉืœ 300 ื™ื•ืžืจื• ืœ-255). ื›ื“ื™ ืœื”ืฉื‘ื™ืช ื‘ื“ื™ืงื•ืช ื›ืืœื”, ื ื™ืชื ื•ืช ืงืจื™ืื•ืช API ื ื•ืกืคื•ืช "{f64, f32}::to_int_unchecked", ื”ืคื•ืขืœื•ืช ื‘ืžืฆื‘ ืœื ื‘ื˜ื•ื—.

    fn cast(x: f32) -> u8 {
    x ื‘ืชื•ืจ u8
    }

    fn main() {
    let too_big = 300.0;
    let too_small = -100.0;
    let nan = f32::NAN;

    ืชืŸ x: f32 = 1.0;
    let y: u8 = unsafe { x.to_int_unchecked() };

    println!("ื‘ื’ื“ื•ืœ_ืžื’ื•ื“ = {}", ืฉื—ืงื ื™ื(ืžื“ื™_ื’ื“ื•ืœื”)); // ืคืœื˜ 255
    println!("too_small_casted = {}", cast(too_small)); // ืคืœื˜ 0
    println!("not_a_number_casted = {}", cast(nan)); // ืคืœื˜ 0
    }

  • ื”ืฉืชืžืฉ ืžื™ื•ืฆื‘ ืคืงื•ื“ื•ืช ืžืืงืจื• ืคืจื•ืฆื“ื•ืจืœื™ื•ืชื‘ื™ื˜ื•ื™ื™ื, ืชื‘ื ื™ื•ืช ื•ื”ืฆื”ืจื•ืช ื“ืžื•ื™ื™ ืคื•ื ืงืฆื™ื”. ื‘ืขื‘ืจ, ืœื ื ื™ืชืŸ ื”ื™ื” ืœืงืจื•ื ืคืงื•ื“ื•ืช ืžืืงืจื• ื›ืืœื” ื‘ื›ืœ ืžืงื•ื, ืืœื ืจืง ื‘ื—ืœืงื™ื ืžืกื•ื™ืžื™ื ืฉืœ ื”ืงื•ื“ (ื›ืงืจื™ืื” ื ืคืจื“ืช, ืœื ืฉื–ื•ืจื” ื‘ืงื•ื“ ืื—ืจ). ื”ืจื—ื‘ืช ื”ื“ืจืš ืฉื‘ื” ื ื™ืชืŸ ืœืงืจื•ื ืœืคืงื•ื“ื•ืช ืžืืงืจื•, ื‘ื“ื•ืžื” ืœืคื•ื ืงืฆื™ื•ืช, ื”ื™ื™ืชื” ืื—ืช ื”ื“ืจื™ืฉื•ืช ื›ื“ื™ ืœื’ืจื•ื ืœืžืกื’ืจืช ื”ืื™ื ื˜ืจื ื˜ ืœืขื‘ื•ื“ ืจืงื˜ื” ื‘ืžื”ื“ื•ืจื•ืช ื™ืฆื™ื‘ื•ืช ืฉืœ Rust. ื‘ืขื‘ืจ, ื”ืฉื’ืช ื’ืžื™ืฉื•ืช ื ื•ืกืคืช ื‘ื”ื’ื“ืจืช ืžื˜ืคืœื™ื ื‘- Rocket ื“ืจืฉื” ื”ืคืขืœืช ืชื›ื•ื ื” ื ื™ืกื™ื•ื ื™ืช ื‘ืฉื "proc_macro_hygiene", ืฉืื™ื ื” ื–ืžื™ื ื” ื‘ื’ืจืกืื•ืช ื™ืฆื™ื‘ื•ืช ืฉืœ Rust. ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื–ื• ืžื•ื‘ื ื™ืช ื›ืขืช ื‘ืžื”ื“ื•ืจื•ืช ื™ืฆื™ื‘ื•ืช ืฉืœ ื”ืฉืคื”.
  • ืžื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ื˜ื•ื•ื—ื™ื ืขื ืกื•ื’ "char" ื›ื“ื™ ืœื—ื–ื•ืจ ืขืœ ืขืจื›ื™ ื˜ื•ื•ื— (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    ืขื‘ื•ืจ ch in 'a'..='z' {
    print!("{}", ch);
    }
    println!(); // ื™ื“ืคื™ืก "abcdefghijklmnopqrstuvwxyz"

  • ื—ืœืง ื—ื“ืฉ ืฉืœ ืžืžืฉืงื™ API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื™ืช ื”ื™ืฆื™ื‘ื•ืช, ื›ื•ืœืœ ืžื™ื•ืฆื‘
    Arc::as_ptr,
    BTreeMap::remove_entry,
    Rc::as_ptr,
    rc::Weak::as_ptr,
    rc::ื—ืœืฉ::from_raw,
    rc::Weak::into_raw,
    str::strip_prefix,
    str::strip_suffix,
    sync::Weak::as_ptr,
    sync::Weak::from_raw,
    sync::Weak::into_raw,
    char::UNICODE_VERSION,
    span::resolved_at,
    Span::located_at,
    Span::mixed_site,
    unix::process::CommandExt::arg0.

  • ืžื”ื“ืจ rustc ื”ื•ืกื™ืฃ ืชืžื™ื›ื” ืœืขืงื•ืฃ ืชื›ื•ื ื•ืช ืฉื•ื ื•ืช ืฉืœ ืคืœื˜ืคื•ืจืžืช ื™ืขื“ ื‘ืืžืฆืขื•ืช ื“ื’ืœ "target-feature", ืœืžืฉืœ, "-C target-feature=+avx2,+fma". ื›ืžื• ื›ืŸ ื ื•ืกืคื• ื“ื’ืœื™ื ื—ื“ืฉื™ื:
    "ืœืฉื—ืจืจ ื˜ื‘ืœืื•ืช ื‘ื›ื•ื—" ืœื™ืฆื™ืจืช ื˜ื‘ืœืื•ืช ืฉื™ื—ื•ืช ืœืฉื—ืจื•ืจ, ืœืœื ืงืฉืจ ืœืืกื˜ืจื˜ื’ื™ื™ืช ื”ื˜ื™ืคื•ืœ ื‘ื”ืชืจืกืงื•ืช; "Embed-bitcode" ื›ื“ื™ ืœืฉืœื•ื˜ ืื LLVM bitcode ื›ืœื•ืœ ื‘-rlibs ืฉื ื•ืฆืจื•. ื”ื“ื’ืœ "Embed-bitcode" ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘-Cargo ื›ื“ื™ ืœื™ื™ืขืœ ืืช ื–ืžืŸ ื”ื‘ื ื™ื™ื” ื•ืฆืจื™ื›ืช ืฉื˜ื— ื”ื“ื™ืกืง.

  • ืจืžื” ืฉืœื™ืฉื™ืช ืฉืœ ืชืžื™ื›ื” ืกื•ืคืงื” ืขื‘ื•ืจ ื”ืคืœื˜ืคื•ืจืžื•ืช mipsel-sony-psp ื•-thumbv7a-uwp-windows-msvc. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื•ืคืจืกื•ื ืฉืœ ืžื‘ื ื™ื ืจืฉืžื™ื™ื.

ื‘ื ื•ืกืฃ, ื ื™ืชืŸ ืœืฆื™ื™ืŸ ื”ืกื™ืคื•ืจ ืขืœ ื™ืฆื™ืจืช ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ืืคืœื™ืงืฆื™ื•ืช ื‘ืฉืคืช Rust, ืžืชื—ื™ืœ ืœื”ืฉืชืžืฉ ื‘ืžื˜ืขืŸ ื”ืืชื—ื•ืœ ืฉืœ ื”ืžืขืจื›ืช ื•ืžื•ื›ืŸ ืœื˜ืขื™ื ื” ืขืฆืžืื™ืช ื‘ืžืงื•ื ืžืขืจื›ืช ื”ื”ืคืขืœื”.
ื”ืžืืžืจ ื”ื•ื ื”ืจืืฉื•ืŸ ื‘ืกื“ืจื” ื”ืžื•ืงื“ืฉ ืœื”ื“ื’ืžืช ื˜ื›ื ื™ืงื•ืช ืžื‘ื•ืงืฉื•ืช ื‘ืชื›ื ื•ืช ื‘ืจืžื” ื ืžื•ื›ื” ื•ื‘ืคื™ืชื•ื— ืžืขืจื›ืช ื”ืคืขืœื”.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”