ರಸ್ಟ್ 1.53 ಬಿಡುಗಡೆಯಾಗಿದೆ. ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ಗೆ ರಸ್ಟ್ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲು Google ಹಣವನ್ನು ನೀಡುತ್ತದೆ

ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ ರಸ್ಟ್ 1.53 ರ ಬಿಡುಗಡೆಯನ್ನು ಮೊಜಿಲ್ಲಾ ಯೋಜನೆಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ಆದರೆ ಈಗ ಸ್ವತಂತ್ರ ಲಾಭರಹಿತ ಸಂಸ್ಥೆ ರಸ್ಟ್ ಫೌಂಡೇಶನ್ ಆಶ್ರಯದಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಭಾಷೆಯು ಮೆಮೊರಿ ಸುರಕ್ಷತೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ, ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಕಸ ಸಂಗ್ರಾಹಕ ಅಥವಾ ರನ್ಟೈಮ್ ಅನ್ನು ಬಳಸದೆಯೇ ಹೆಚ್ಚಿನ ಕಾರ್ಯ ಸಮಾನಾಂತರತೆಯನ್ನು ಸಾಧಿಸಲು ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ (ರನ್ಟೈಮ್ ಅನ್ನು ಮೂಲ ಪ್ರಾರಂಭ ಮತ್ತು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದ ನಿರ್ವಹಣೆಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ).

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

ಮುಖ್ಯ ಆವಿಷ್ಕಾರಗಳು:

  • ಅರೇಗಳಿಗೆ, IntoIterator ಲಕ್ಷಣವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ, ಇದು ಮೌಲ್ಯಗಳ ಮೂಲಕ ರಚನೆಯ ಅಂಶಗಳ ಪುನರಾವರ್ತನೆಯನ್ನು ಸಂಘಟಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ: i ಗಾಗಿ [1, 2, 3] { .. }

    ಪುನರಾವರ್ತಕಗಳನ್ನು ಸ್ವೀಕರಿಸುವ ವಿಧಾನಗಳಿಗೆ ಸರಣಿಗಳನ್ನು ರವಾನಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ, ಉದಾಹರಣೆಗೆ: ಸೆಟ್ = BTreeSet::from_iter([1, 2, 3]); for (a, b) some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    ಹಿಂದೆ, IntoIterator ರಚನೆಯ ಉಲ್ಲೇಖಗಳಿಗಾಗಿ ಮಾತ್ರ ಅಳವಡಿಸಲಾಗಿತ್ತು, ಅಂದರೆ. ಮೌಲ್ಯಗಳ ಮೇಲೆ ಪುನರಾವರ್ತನೆ ಮಾಡಲು ಉಲ್ಲೇಖಗಳ ಬಳಕೆಯ ಅಗತ್ಯವಿದೆ (“&[1, 2, 3]”) ಅಥವಾ “[1, 2, 3].iter()”. array.into_iter() ನಿಂದ (&array).into_iter() ಗೆ ಹಿಂದಿನ ಕಂಪೈಲರ್ ಪರಿವರ್ತನೆಯಿಂದ ಉಂಟಾದ ಹೊಂದಾಣಿಕೆ ಸಮಸ್ಯೆಗಳಿಂದ ಅರೇಗಳಿಗೆ IntoIterator ನ ಅನುಷ್ಠಾನವು ಅಡ್ಡಿಯಾಯಿತು. ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹಾರೋಪಾಯದೊಂದಿಗೆ ಪರಿಹರಿಸಲಾಗಿದೆ - IntoIterator ಲಕ್ಷಣದ ಯಾವುದೇ ಅನುಷ್ಠಾನವಿಲ್ಲದಿರುವಂತೆ ಕಂಪೈಲರ್ array.into_iter() ಅನ್ನು (&array).into_iter() ಗೆ ಪರಿವರ್ತಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ, ಆದರೆ ".into_iter() ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಿಧಾನವನ್ನು ಕರೆಯುವಾಗ ಮಾತ್ರ )" ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು "ಇನ್ [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]" ರೂಪದಲ್ಲಿ ಕರೆಗಳನ್ನು ಮುಟ್ಟದೆ )".

  • "|" ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಸೂಚಿಸಲು ಸಾಧ್ಯವಿದೆ (ತಾರ್ಕಿಕ ಅಥವಾ ಕಾರ್ಯಾಚರಣೆ) ಟೆಂಪ್ಲೇಟ್‌ನ ಯಾವುದೇ ಭಾಗದಲ್ಲಿ, ಉದಾಹರಣೆಗೆ, ಬದಲಿಗೆ “ಕೆಲವು(1) | ಕೆಲವು(2)" ನೀವು ಈಗ "ಕೆಲವು(1 | 2)" ಎಂದು ಬರೆಯಬಹುದು: ಹೊಂದಾಣಿಕೆಯ ಫಲಿತಾಂಶ { ಸರಿ(ಕೆಲವು(1 | 2)) => { ..} ದೋಷ(MyError { ರೀತಿಯ: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. }}
  • ಯುನಿಕೋಡ್ UAX 31 ವಿವರಣೆಯಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಯಾವುದೇ ರಾಷ್ಟ್ರೀಯ ಅಕ್ಷರಗಳನ್ನು ಒಳಗೊಂಡಂತೆ, ಆದರೆ ಎಮೋಜಿ ಅಕ್ಷರಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ಗುರುತಿಸುವಿಕೆಗಳಲ್ಲಿ ASCII ಅಲ್ಲದ ಅಕ್ಷರಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ. ನೀವು ವಿಭಿನ್ನ ಆದರೆ ಒಂದೇ ರೀತಿಯ ಅಕ್ಷರಗಳನ್ನು ಬಳಸಿದರೆ, ಕಂಪೈಲರ್ ಎಚ್ಚರಿಕೆಯನ್ನು ನೀಡುತ್ತದೆ. const BLÅHAJ: &str = "🦈"; struct 人 {名字: ಸ್ಟ್ರಿಂಗ್, } α = 1; ಅವಕಾಶಗಳು = 2; ಎಚ್ಚರಿಕೆ: ಗುರುತಿಸುವಿಕೆಯ ಜೋಡಿಯು 's' ಮತ್ತು 's' ನಡುವೆ ಗೊಂದಲಮಯವಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗಿದೆ
  • API ಗಳ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ವರ್ಗಾಯಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ಕೆಳಗಿನ ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ:
    • ರಚನೆ:: from_ref
    • ರಚನೆ:: from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • ಬಿಟ್ರೀಸೆಟ್:: ಉಳಿಸಿಕೊಳ್ಳಿ
    • ಬಿಟ್ರೀಮ್ಯಾಪ್:: ಉಳಿಸಿಕೊಳ್ಳಿ
    • ಬಫ್ ರೀಡರ್::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • ಡೀಬಗ್‌ಸ್ಟ್ರಕ್ಟ್:: ಮುಕ್ತಾಯ_ನಾನ್_ಎಕ್ಸಾಸ್ಟಿವ್
    • ಅವಧಿ::ZERO
    • ಅವಧಿ::MAX
    • ಅವಧಿ::is_zero
    • ಅವಧಿ::saturating_add
    • ಅವಧಿ::saturating_sub
    • ಅವಧಿ::ಸ್ಯಾಚುರೇಟಿಂಗ್_ಮುಲ್
    • f32:: is_subnormal
    • f64:: is_subnormal
    • ಅರೇಗಳಿಗೆ IntoIterator
    • {integer} ::BITS
    • io::ದೋಷ::ಬೆಂಬಲವಿಲ್ಲ
    • ಶೂನ್ಯವಲ್ಲದ*:: ಪ್ರಮುಖ_ಸೊನ್ನೆಗಳು
    • ಶೂನ್ಯವಲ್ಲದ*:: trailing_zeros
    • ಆಯ್ಕೆ:: ಸೇರಿಸು
    • ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ::is_eq
    • ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ::is_ne
    • ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ::is_lt
    • ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ ::is_gt
    • ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ ::is_le
    • ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ::is_ge
    • OsStr::make_ascii_ಲೋವರ್ಕೇಸ್
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_ಲೋವರ್ಕೇಸ್
    • OsStr:: to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • ಪೀಕ್ ಮಾಡಬಹುದಾದ:: ಪೀಕ್_ಮಟ್
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • ಸ್ಲೈಸ್::IterMut:: as_slice
    • ಸ್ಲೈಸ್‌ಗಾಗಿ AsRef<[T]>::IterMut
    • ಇಂಪ್ಲ್ ಸ್ಲೈಸ್ ಇಂಡೆಕ್ಸ್ (ಬೌಂಡ್ , ಬೌಂಡ್ )
    • Vec::ವಿಸ್ತರಿಸಲು_ಒಳಗೆ
  • wasm64-ಅಜ್ಞಾತ-ಅಜ್ಞಾತ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗೆ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಇಲ್ಲದೆ, ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳನ್ನು ಪ್ರಕಟಿಸುವುದು ಅಥವಾ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು.
  • Git ರೆಪೊಸಿಟರಿಯ (HEAD) ಮುಖ್ಯ ಶಾಖೆಗೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ "ಮುಖ್ಯ" ಎಂಬ ಹೆಸರನ್ನು ಬಳಸಲು ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಸರಿಸಲಾಗಿದೆ. ಮಾಸ್ಟರ್ ಬದಲಿಗೆ ಮುಖ್ಯ ಹೆಸರನ್ನು ಬಳಸುವ ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ ಹೋಸ್ಟ್ ಮಾಡಲಾದ ಅವಲಂಬನೆಗಳು ಇನ್ನು ಮುಂದೆ ಶಾಖೆ = "ಮುಖ್ಯ" ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿಲ್ಲ.
  • ಕಂಪೈಲರ್‌ನಲ್ಲಿ, LLVM ನ ಕನಿಷ್ಠ ಆವೃತ್ತಿಯ ಅವಶ್ಯಕತೆಗಳನ್ನು LLVM 10 ಕ್ಕೆ ಹೆಚ್ಚಿಸಲಾಗಿದೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ರಸ್ಟ್ ಭಾಷೆಯಲ್ಲಿ ಘಟಕಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಉಪಕರಣಗಳ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ಗೆ ಏಕೀಕರಣದ ಅಭಿವೃದ್ಧಿಗೆ ನಿಧಿಯ ನಿಬಂಧನೆಯನ್ನು ನಾವು ಗಮನಿಸಬಹುದು. ಲೆಟ್ಸ್ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಯೋಜನೆಯ ಸಂಸ್ಥಾಪಕ ಮತ್ತು ಸುರಕ್ಷತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಎಚ್‌ಟಿಟಿಪಿಎಸ್ ಮತ್ತು ತಂತ್ರಜ್ಞಾನಗಳ ಅಭಿವೃದ್ಧಿಯನ್ನು ಉತ್ತೇಜಿಸುವ ಐಎಸ್‌ಆರ್‌ಜಿ ಸಂಸ್ಥೆಯ (ಇಂಟರ್ನೆಟ್ ಸೆಕ್ಯುರಿಟಿ ರಿಸರ್ಚ್ ಗ್ರೂಪ್) ಆಶ್ರಯದಲ್ಲಿ ಪ್ರೊಸಿಮೊ ಯೋಜನೆಯ ಚೌಕಟ್ಟಿನೊಳಗೆ ಕೆಲಸವನ್ನು ಕೈಗೊಳ್ಳಲಾಗುತ್ತದೆ. ಇಂಟರ್ನೆಟ್. ಹಣವನ್ನು Google ನಿಂದ ಒದಗಿಸಲಾಗುವುದು, ಇದು Rust-for-Linux ಯೋಜನೆಯ ಲೇಖಕ ಮಿಗುಯೆಲ್ ಒಜೆಡಾ ಅವರ ಕೆಲಸಕ್ಕೆ ಪಾವತಿಸುತ್ತದೆ. ಹಿಂದೆ, ISRG ಮತ್ತು Google ಕರ್ಲ್ ಯುಟಿಲಿಟಿಗಾಗಿ ಪರ್ಯಾಯ HTTP ಬ್ಯಾಕೆಂಡ್‌ನ ರಚನೆಗೆ ಮತ್ತು Apache http ಸರ್ವರ್‌ಗಾಗಿ ಹೊಸ TLS ಮಾಡ್ಯೂಲ್‌ನ ಅಭಿವೃದ್ಧಿಗೆ ಈಗಾಗಲೇ ಹಣವನ್ನು ಒದಗಿಸಿವೆ.

ಮೈಕ್ರೋಸಾಫ್ಟ್ ಮತ್ತು ಗೂಗಲ್ ಪ್ರಕಾರ, ಸುಮಾರು 70% ದುರ್ಬಲತೆಗಳು ಅಸುರಕ್ಷಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯಿಂದ ಉಂಟಾಗುತ್ತವೆ. ಡಿವೈಸ್ ಡ್ರೈವರ್‌ಗಳಂತಹ ಕರ್ನಲ್ ಘಟಕಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ರಸ್ಟ್ ಭಾಷೆಯನ್ನು ಬಳಸುವುದರಿಂದ ಅಸುರಕ್ಷಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯಿಂದ ಉಂಟಾಗುವ ದುರ್ಬಲತೆಗಳ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಮುಕ್ತಗೊಳಿಸಿದ ನಂತರ ಮೆಮೊರಿ ಪ್ರದೇಶವನ್ನು ಪ್ರವೇಶಿಸುವುದು ಮತ್ತು ಬಫರ್ ಮಿತಿಗಳನ್ನು ಮೀರುವಂತಹ ದೋಷಗಳನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಎಂದು ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ.

ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಮೆಮೊರಿ-ಸುರಕ್ಷಿತ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸಲಾಗುತ್ತದೆ, ಆಬ್ಜೆಕ್ಟ್ ಮಾಲೀಕತ್ವ ಮತ್ತು ಆಬ್ಜೆಕ್ಟ್ ಜೀವಿತಾವಧಿಯನ್ನು (ವ್ಯಾಪ್ತಿ) ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು, ಹಾಗೆಯೇ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ಮೆಮೊರಿ ಪ್ರವೇಶದ ಸರಿಯಾದ ಮೌಲ್ಯಮಾಪನದ ಮೂಲಕ. ರಸ್ಟ್ ಪೂರ್ಣಾಂಕದ ಉಕ್ಕಿ ಹರಿಯುವಿಕೆಯ ವಿರುದ್ಧ ರಕ್ಷಣೆ ನೀಡುತ್ತದೆ, ಬಳಕೆಗೆ ಮೊದಲು ವೇರಿಯಬಲ್ ಮೌಲ್ಯಗಳ ಕಡ್ಡಾಯ ಆರಂಭದ ಅಗತ್ಯವಿರುತ್ತದೆ, ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದಲ್ಲಿ ದೋಷಗಳನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಬದಲಾಗದ ಉಲ್ಲೇಖಗಳು ಮತ್ತು ವೇರಿಯೇಬಲ್‌ಗಳ ಪರಿಕಲ್ಪನೆಯನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ, ತಾರ್ಕಿಕ ದೋಷಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಬಲವಾದ ಸ್ಥಿರ ಟೈಪಿಂಗ್ ಅನ್ನು ನೀಡುತ್ತದೆ.

ಮೂಲ: opennet.ru

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