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

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

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

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

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

  • ಪೂರ್ಣಾಂಕ ಪ್ರಾತಿನಿಧ್ಯಗಳೊಂದಿಗೆ ಎಣಿಕೆಗಳಲ್ಲಿ (“#[repr(Int)]” ಗುಣಲಕ್ಷಣ), ಎಣಿಕೆಯು ಕ್ಷೇತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿದ್ದರೂ ಸಹ, ತಾರತಮ್ಯದ ಸ್ಪಷ್ಟ ಸೂಚನೆಯನ್ನು (ಎಣಿಕೆಯಲ್ಲಿನ ಆಯ್ಕೆಯ ಸಂಖ್ಯೆ) ಅನುಮತಿಸಲಾಗುತ್ತದೆ. #[repr(u8)] enum Foo {A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • core::hint::black_box ಕಾರ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಸ್ವೀಕರಿಸಿದ ಮೌಲ್ಯವನ್ನು ಸರಳವಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಕೊಟ್ಟಿರುವ ಕಾರ್ಯವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ಮಾಡುತ್ತದೆ ಎಂದು ಕಂಪೈಲರ್ ನಂಬಿರುವ ಕಾರಣ, ಕೋಡ್ ಕಾರ್ಯಕ್ಷಮತೆ ಪರೀಕ್ಷೆಯನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಅಥವಾ ರಚಿತವಾದ ಯಂತ್ರ ಸಂಕೇತವನ್ನು ಪರಿಶೀಲಿಸುವಾಗ ಕಂಪೈಲರ್‌ನ ಲೂಪ್‌ಗಳ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು black_box ಕಾರ್ಯವನ್ನು ಬಳಸಬಹುದು (ಇದರಿಂದಾಗಿ ಕಂಪೈಲರ್ ಕೋಡ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ತೆಗೆದುಹಾಕುವುದಿಲ್ಲ. ಇದು). ಉದಾಹರಣೆಗೆ, ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, black_box(v.as_ptr()) ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದರಿಂದ ವೆಕ್ಟರ್ v ಬಳಕೆಯಲ್ಲಿಲ್ಲ ಎಂದು ಕಂಪೈಲರ್ ಊಹಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ. std ಬಳಸಿ:: ಸುಳಿವು:: black_box; fn push_cap(v: &mut Vec) { ಫಾರ್ i in 0..4 {v.push(i); black_box(v.as_ptr()); } }
  • ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ "ಕಾರ್ಗೋ" "ತೆಗೆದುಹಾಕು" ಆಜ್ಞೆಯನ್ನು ನೀಡುತ್ತದೆ, ಇದು ಆಜ್ಞಾ ಸಾಲಿನಿಂದ Cargo.toml ಮ್ಯಾನಿಫೆಸ್ಟ್‌ನಿಂದ ಅವಲಂಬನೆಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
  • API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರತೆಯ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ವಿಧಾನಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{ಮೊದಲ, ಕೊನೆಯ, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • WASI ಬಳಸುವಾಗ stdio ಲಾಕ್ ಪ್ರಕಾರಗಳಿಗೆ AsFd ಅನುಷ್ಠಾನಗಳನ್ನು ಸೇರಿಸಿ.
    • ಇಂಪ್ಲ್ ಟ್ರೈಫ್ರಾಮ್ > ಪೆಟ್ಟಿಗೆಗೆ<[T; ಎನ್]>
    • ಕೋರ್::ಸುಳಿವು::black_box
    • ಅವಧಿ::try_from_secs_{f32,f64}
    • ಆಯ್ಕೆ:: ಅನ್ಜಿಪ್
    • std::os::fd
  • ಟೆಂಪ್ಲೇಟ್‌ಗಳಲ್ಲಿ "..X" ಮತ್ತು "..=X" ಶ್ರೇಣಿಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ.
  • rustc ಕಂಪೈಲರ್‌ನ ಮುಂಭಾಗ ಮತ್ತು LLVM ನ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಜೋಡಿಸುವಾಗ, ಆಪ್ಟಿಮೈಸೇಶನ್ ಮೋಡ್‌ಗಳು LTO (ಲಿಂಕ್ ಟೈಮ್ ಆಪ್ಟಿಮೈಸೇಶನ್) ಮತ್ತು BOLT (ಬೈನರಿ ಆಪ್ಟಿಮೈಸೇಶನ್ ಮತ್ತು ಲೇಔಟ್ ಟೂಲ್) ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಪರಿಣಾಮವಾಗಿ ಕೋಡ್‌ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
  • armv5te-none-eabi ಮತ್ತು thumbv5te-none-eabi ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಿಗೆ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಇಲ್ಲದೆ, ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳ ಪ್ರಕಟಣೆ ಮತ್ತು ಕೋಡ್ ನಿರ್ಮಾಣದ ಪರಿಶೀಲನೆ.
  • MacOS ಯುನಿವರ್ಸಲ್ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ ಲಿಂಕ್ ಮಾಡಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ಜಿಸಿಸಿ ಕೋಡ್ ಬೇಸ್‌ನಲ್ಲಿ ರಸ್ಟ್ ಲಾಂಗ್ವೇಜ್ ಕಂಪೈಲರ್ (ಜಿಸಿಸಿಆರ್‌ಎಸ್) ನ ಮುಂಭಾಗವನ್ನು ಸೇರಿಸುವುದನ್ನು ನಾವು ಗಮನಿಸಬಹುದು. ಮುಂಭಾಗವನ್ನು GCC 13 ಶಾಖೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಮೇ 2023 ರಲ್ಲಿ ಬಿಡುಗಡೆಯಾಗಲಿದೆ. GCC 13 ರಿಂದ ಪ್ರಾರಂಭಿಸಿ, LLVM ಅಭಿವೃದ್ಧಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ಮಿಸಲಾದ rustc ಕಂಪೈಲರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಅಗತ್ಯವಿಲ್ಲದೇ ರಸ್ಟ್ ಭಾಷೆಯಲ್ಲಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು ಸ್ಥಳೀಯ GCC ಪರಿಕರಗಳನ್ನು ಬಳಸಬಹುದು. ರಸ್ಟ್‌ನ GCC 13 ಅನುಷ್ಠಾನವು ಬೀಟಾ ಆವೃತ್ತಿಯಾಗಿರುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ.

ಮೂಲ: opennet.ru

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