ರಸ್ಟ್ 1.45 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆ

ಪ್ರಕಟಿಸಲಾಗಿದೆ ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ 1.45 ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿ ತುಕ್ಕು, ಮೊಜಿಲ್ಲಾ ಯೋಜನೆಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಭಾಷೆ ಮೆಮೊರಿ ಸುರಕ್ಷತೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ, ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಕಸ ಸಂಗ್ರಾಹಕವನ್ನು ಬಳಸದೆಯೇ ಹೆಚ್ಚಿನ ಕಾರ್ಯ ಸಮಾನಾಂತರತೆಯನ್ನು ಸಾಧಿಸಲು ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ರನ್ಟೈಮ್.

ರಸ್ಟ್‌ನ ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯು ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ ದೋಷಗಳನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಮತ್ತು ಕಡಿಮೆ ಮಟ್ಟದ ಮೆಮೊರಿ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್‌ನಿಂದ ಉಂಟಾಗುವ ಸಮಸ್ಯೆಗಳಿಂದ ರಕ್ಷಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಮೆಮೊರಿ ಪ್ರದೇಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಿದ ನಂತರ ಪ್ರವೇಶಿಸುವುದು, ಶೂನ್ಯ ಪಾಯಿಂಟರ್ ಡಿರೆಫರೆನ್ಸ್, ಬಫರ್ ಓವರ್‌ರನ್‌ಗಳು ಇತ್ಯಾದಿ. ಲೈಬ್ರರಿಗಳನ್ನು ವಿತರಿಸಲು, ಜೋಡಣೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಯೋಜನೆಯ ಮೂಲಕ ಅವಲಂಬನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತಿದೆ. ಕಾರ್ಗೋ, ಇದು ಪ್ರೋಗ್ರಾಂಗೆ ಅಗತ್ಯವಿರುವ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಒಂದೇ ಕ್ಲಿಕ್‌ನಲ್ಲಿ ಪಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಲೈಬ್ರರಿಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು ರೆಪೊಸಿಟರಿಯನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ crates.io.

ಮುಖ್ಯ ನಾವೀನ್ಯತೆಗಳು:

  • ದೀರ್ಘಕಾಲದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ ನ್ಯೂನತೆ ಪೂರ್ಣಾಂಕಗಳು ಮತ್ತು ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಗಳ ನಡುವೆ ಪರಿವರ್ತನೆಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ. ರಸ್ಟ್ ಕಂಪೈಲರ್ LLVM ಅನ್ನು ಬ್ಯಾಕೆಂಡ್ ಆಗಿ ಬಳಸುವುದರಿಂದ, ಟೈಪ್ ಪರಿವರ್ತನೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು LLVM ಮಧ್ಯಂತರ ಕೋಡ್ ಸೂಚನೆಗಳ ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ fptoui, ಇದು ಒಂದು ಮಹತ್ವದ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿದೆ - ಫಲಿತಾಂಶದ ಮೌಲ್ಯವು ಗುರಿ ಪ್ರಕಾರಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆ. ಉದಾಹರಣೆಗೆ, ಫ್ಲೋಟ್ ಮೌಲ್ಯ 300 ಅನ್ನು ಟೈಪ್ ಎಫ್ 32 ನೊಂದಿಗೆ ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರ u8 ಗೆ ಪರಿವರ್ತಿಸುವಾಗ, ಫಲಿತಾಂಶವು ಅನಿರೀಕ್ಷಿತವಾಗಿರುತ್ತದೆ ಮತ್ತು ವಿಭಿನ್ನ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಬದಲಾಗಬಹುದು. ಸಮಸ್ಯೆಯೆಂದರೆ ಈ ವೈಶಿಷ್ಟ್ಯವು "ಅಸುರಕ್ಷಿತ" ಎಂದು ಗುರುತಿಸದ ಕೋಡ್‌ನಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ.

    ರಸ್ಟ್ 1.45 ರಂತೆ, ಪ್ರಕಾರದ ಗಾತ್ರದ ಓವರ್‌ಫ್ಲೋನ ನಡವಳಿಕೆಯನ್ನು ಕಟ್ಟುನಿಟ್ಟಾಗಿ ನಿಯಂತ್ರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು "ಆಸ್" ಪರಿವರ್ತನೆ ಕಾರ್ಯಾಚರಣೆಯು ಓವರ್‌ಫ್ಲೋಗಾಗಿ ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಮೌಲ್ಯವನ್ನು ಗುರಿ ಪ್ರಕಾರದ ಗರಿಷ್ಠ ಅಥವಾ ಕನಿಷ್ಠ ಮೌಲ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸಲು ಒತ್ತಾಯಿಸುತ್ತದೆ (ಮೇಲಿನ ಉದಾಹರಣೆಗಾಗಿ, ಮೌಲ್ಯ 300 ಅನ್ನು 255 ಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ). ಅಂತಹ ತಪಾಸಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ API ಕರೆಗಳನ್ನು “{f64, f32}::to_int_unchecked” ಒದಗಿಸಲಾಗಿದೆ, ಅಸುರಕ್ಷಿತ ಮೋಡ್‌ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

    fn cast(x: f32) -> u8 {
    x u8 ನಂತೆ
    }

    fn ಮುಖ್ಯ() {
    ಲೆಟ್ ಟೂ_ಬಿಗ್ = 300.0;
    ತುಂಬಾ_ಸಣ್ಣ = -100.0;
    nan = f32 ::NAN;

    ಅವಕಾಶ x: f32 = 1.0;
    y: u8 = ಅಸುರಕ್ಷಿತ {x.to_int_unchecked()};

    println!("too_big_casted = {}", cast(too_big)); // ಔಟ್ಪುಟ್ 255
    println!("too_small_casted = {}", cast(too_small)); // ಔಟ್ಪುಟ್ 0
    println!("not_a_number_casted = {}", cast(nan)); // ಔಟ್ಪುಟ್ 0
    }

  • ಸ್ಥಿರಗೊಳಿಸಿದ ಬಳಸಿ ಕಾರ್ಯವಿಧಾನದ ಮ್ಯಾಕ್ರೋಗಳುಕ್ರಿಯೆಯಂತಹ ಅಭಿವ್ಯಕ್ತಿಗಳು, ಟೆಂಪ್ಲೇಟ್‌ಗಳು ಮತ್ತು ಹೇಳಿಕೆಗಳು. ಹಿಂದೆ, ಅಂತಹ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಎಲ್ಲೆಡೆ ಕರೆಯಲಾಗಲಿಲ್ಲ, ಆದರೆ ಕೋಡ್ನ ಕೆಲವು ಭಾಗಗಳಲ್ಲಿ ಮಾತ್ರ (ಪ್ರತ್ಯೇಕ ಕರೆಯಾಗಿ, ಇತರ ಕೋಡ್ನೊಂದಿಗೆ ಹೆಣೆದುಕೊಂಡಿಲ್ಲ). ಕಾರ್ಯಗಳಂತೆಯೇ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಕರೆಯುವ ವಿಧಾನವನ್ನು ವಿಸ್ತರಿಸುವುದು ವೆಬ್ ಫ್ರೇಮ್‌ವರ್ಕ್ ಕೆಲಸ ಮಾಡಲು ಅಗತ್ಯತೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ ರಾಕೆಟ್ ರಸ್ಟ್ನ ಸ್ಥಿರ ಬಿಡುಗಡೆಗಳಲ್ಲಿ. ಹಿಂದೆ, ರಾಕೆಟ್‌ನಲ್ಲಿ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವಲ್ಲಿ ಹೆಚ್ಚುವರಿ ನಮ್ಯತೆಯನ್ನು ಸಾಧಿಸಲು "proc_macro_hygiene" ಎಂಬ ಪ್ರಾಯೋಗಿಕ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಅಗತ್ಯವಿದೆ, ಇದು ರಸ್ಟ್‌ನ ಸ್ಥಿರ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ. ಈ ಕಾರ್ಯವನ್ನು ಈಗ ಭಾಷೆಯ ಸ್ಥಿರ ಬಿಡುಗಡೆಗಳಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ.
  • ಶ್ರೇಣಿಯ ಮೌಲ್ಯಗಳನ್ನು ಪುನರಾವರ್ತಿಸಲು "ಚಾರ್" ಪ್ರಕಾರದೊಂದಿಗೆ ಶ್ರೇಣಿಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿಸಲಾಗಿದೆ (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    'a' ನಲ್ಲಿ ch..='z' {
    ಪ್ರಿಂಟ್!("{}", ch);
    }
    println!(); // "abcdefghijklmnopqrstuvwxyz" ಅನ್ನು ಮುದ್ರಿಸುತ್ತದೆ

  • API ಗಳ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರಗೊಳಿಸಿದ ಸೇರಿದಂತೆ ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ವರ್ಗಾಯಿಸಲಾಗಿದೆ
    ಆರ್ಕ್:: as_ptr,
    BTreeMap::remove_entry,
    Rc:: as_ptr,
    rc:: ದುರ್ಬಲ:: as_ptr,
    rc::ದುರ್ಬಲ:: from_raw,
    ಆರ್ಸಿ::ದುರ್ಬಲ::ಇನ್ಟು_ರಾ,
    str::strip_prefix,
    str::strip_suffix,
    ಸಿಂಕ್:: ದುರ್ಬಲ:: as_ptr,
    ಸಿಂಕ್:: ದುರ್ಬಲ:: from_raw,
    ಸಿಂಕ್::ದುರ್ಬಲ::ಇನ್ಟು_ರಾ,
    ಅಕ್ಷರ::UNICODE_VERSION,
    ಸ್ಪ್ಯಾನ್::ಪರಿಹರಿಸಲಾಗಿದೆ,
    ಸ್ಪ್ಯಾನ್::ಸ್ಥಳದಲ್ಲಿ_
    ಸ್ಪ್ಯಾನ್::ಮಿಶ್ರ_ಸೈಟ್,
    unix::process::CommandExt::arg0.

  • rustc ಕಂಪೈಲರ್ "ಟಾರ್ಗೆಟ್-ಫೀಚರ್" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಿವಿಧ ಟಾರ್ಗೆಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅತಿಕ್ರಮಿಸಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿದೆ, ಉದಾಹರಣೆಗೆ, "-C target-feature=+avx2,+fma". ಹೊಸ ಧ್ವಜಗಳನ್ನು ಸಹ ಸೇರಿಸಲಾಗಿದೆ:
    ಕ್ರ್ಯಾಶ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ತಂತ್ರವನ್ನು ಲೆಕ್ಕಿಸದೆ, ಬಿಚ್ಚುವ ಕರೆ ಕೋಷ್ಟಕಗಳನ್ನು ರಚಿಸಲು "ಫೋರ್ಸ್-ಅನ್‌ವೈಂಡ್-ಟೇಬಲ್‌ಗಳು"; "ಎಂಬೆಡ್-ಬಿಟ್‌ಕೋಡ್" LLVM ಬಿಟ್‌ಕೋಡ್ ಅನ್ನು ರಚಿಸಲಾದ rlibs ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆಯೇ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಲು. "ಎಂಬೆಡ್-ಬಿಟ್ಕೋಡ್" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಕಾರ್ಗೋದಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಬಿಲ್ಡ್ ಸಮಯ ಮತ್ತು ಡಿಸ್ಕ್ ಸ್ಪೇಸ್ ಬಳಕೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.

  • mipsel-sony-psp ಮತ್ತು thumbv7a-uwp-windows-msvc ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಿಗೆ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಒದಗಿಸಲಾಗಿದೆ. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಮತ್ತು ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳ ಪ್ರಕಟಣೆ ಇಲ್ಲದೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ಇದನ್ನು ಗಮನಿಸಬಹುದು ಕಥೆ ಸರಳವಾದದನ್ನು ರಚಿಸುವ ಬಗ್ಗೆ ಅಪ್ಲಿಕೇಶನ್ಗಳು ರಸ್ಟ್ ಭಾಷೆಯಲ್ಲಿ, ಸಿಸ್ಟಮ್ ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬಳಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗೆ ಬದಲಾಗಿ ಸ್ವಯಂ-ಒಳಗೊಂಡಿರುವ ಲೋಡಿಂಗ್‌ಗೆ ಸಿದ್ಧವಾಗಿದೆ.
ಕಡಿಮೆ ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮತ್ತು OS ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಬೇಡಿಕೆಯಲ್ಲಿರುವ ತಂತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಮೀಸಲಾದ ಸರಣಿಯಲ್ಲಿ ಲೇಖನವು ಮೊದಲನೆಯದು.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ