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

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

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

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

  • ಲೈನ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ, ಸಂಖ್ಯೆ ಮತ್ತು ಹೆಸರಿನ ಮೂಲಕ ಸಾಲಿನ ನಂತರ ಸ್ಪಷ್ಟವಾಗಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಅಸ್ಥಿರಗಳನ್ನು ಬದಲಿಸುವ ಹಿಂದೆ ಲಭ್ಯವಿರುವ ಸಾಮರ್ಥ್ಯದ ಜೊತೆಗೆ, ಸಾಲಿಗೆ “{ಐಡೆಂಟಿಫೈಯರ್}” ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಅನಿಯಂತ್ರಿತ ಗುರುತಿಸುವಿಕೆಗಳನ್ನು ಬದಲಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ: // ಹಿಂದೆ ಬೆಂಬಲಿತ ನಿರ್ಮಾಣಗಳು: println!("ಹಲೋ, {}!", get_person()); println!("ಹಲೋ, {0}!", get_person()); println!("ಹಲೋ, {ವ್ಯಕ್ತಿ}!", ವ್ಯಕ್ತಿ = get_person()); // ಈಗ ನೀವು ವ್ಯಕ್ತಿಗೆ ಅವಕಾಶ ನೀಡಬಹುದು = get_person(); println!("ಹಲೋ, {ವ್ಯಕ್ತಿ}!");

    ಐಡೆಂಟಿಫೈಯರ್‌ಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಆಯ್ಕೆಗಳಲ್ಲಿ ನೇರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. ಅವಕಾಶ (ಅಗಲ, ನಿಖರತೆ) = get_format (); ಗೆಟ್_ಸ್ಕೋರ್ಸ್‌ನಲ್ಲಿ (ಹೆಸರು, ಸ್ಕೋರ್) {println!("{name}: {score:width$.precision$}"); }

    "ಪ್ಯಾನಿಕ್!" ಮ್ಯಾಕ್ರೋವನ್ನು ಹೊರತುಪಡಿಸಿ, ಸ್ಟ್ರಿಂಗ್ ಫಾರ್ಮ್ಯಾಟ್ ವ್ಯಾಖ್ಯಾನವನ್ನು ಬೆಂಬಲಿಸುವ ಎಲ್ಲಾ ಮ್ಯಾಕ್ರೋಗಳಲ್ಲಿ ಹೊಸ ಪರ್ಯಾಯವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ರಸ್ಟ್ ಭಾಷೆಯ 2015 ಮತ್ತು 2018 ರ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಪ್ಯಾನಿಕ್!("{ident}") ಅನ್ನು ಸಾಮಾನ್ಯ ಸ್ಟ್ರಿಂಗ್ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ (ರಸ್ಟ್ 2021 ರಲ್ಲಿ ಪರ್ಯಾಯವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ).

  • std::process:: Windows ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿನ ಕಮಾಂಡ್ ರಚನೆಯ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ ಆದ್ದರಿಂದ ಆದೇಶಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ, ಭದ್ರತಾ ಕಾರಣಗಳಿಗಾಗಿ, ಇದು ಪ್ರಸ್ತುತ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ಗಳಿಗಾಗಿ ನೋಡುವುದಿಲ್ಲ. ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಡೈರೆಕ್ಟರಿಗಳಲ್ಲಿ (CVE-2021-3013) ಪ್ರೊಗ್ರಾಮ್‌ಗಳು ರನ್ ಆಗಿದ್ದರೆ ದುರುದ್ದೇಶಪೂರಿತ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಬಳಸಬಹುದಾದ ಕಾರಣ ಪ್ರಸ್ತುತ ಡೈರೆಕ್ಟರಿಯನ್ನು ಹೊರಗಿಡಲಾಗಿದೆ. ಹೊಸ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಪತ್ತೆ ತರ್ಕವು ರಸ್ಟ್ ಡೈರೆಕ್ಟರಿಗಳು, ಅಪ್ಲಿಕೇಶನ್ ಡೈರೆಕ್ಟರಿ, ವಿಂಡೋಸ್ ಸಿಸ್ಟಮ್ ಡೈರೆಕ್ಟರಿ ಮತ್ತು PATH ಪರಿಸರ ವೇರಿಯೇಬಲ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಹುಡುಕುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
  • ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಯು ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿದರೆ ಎಚ್ಚರಿಕೆಯನ್ನು ನೀಡಲು "#[ಬೇಕು_ಬಳಸಬೇಕು]" ಎಂದು ಗುರುತಿಸಲಾದ ಕಾರ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ವಿಸ್ತರಿಸಿದೆ, ಇದು ಹೊಸ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುವ ಬದಲು ಕಾರ್ಯವು ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ ಎಂದು ಭಾವಿಸುವುದರಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
  • API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರತೆಯ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ವಿಧಾನಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ:
    • ಮೆಟಾಡೇಟಾ::is_symlink
    • ಮಾರ್ಗ::_symlink
    • {integer}::saturating_div
    • ಆಯ್ಕೆ:: unwrap_unchecked
    • ಫಲಿತಾಂಶ:: unwrap_unchecked
    • ಫಲಿತಾಂಶ::unwrap_err_unchecked
  • ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಅದನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸುವ "const" ಗುಣಲಕ್ಷಣವನ್ನು ಕಾರ್ಯಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ:
    • ಅವಧಿ::ಹೊಸ
    • ಅವಧಿ:: checked_add
    • ಅವಧಿ::saturating_add
    • ಅವಧಿ:: checked_sub
    • ಅವಧಿ::saturating_sub
    • ಅವಧಿ:: checked_mul
    • ಅವಧಿ::ಸ್ಯಾಚುರೇಟಿಂಗ್_ಮುಲ್
    • ಅವಧಿ::checked_div
  • "const" ಸಂದರ್ಭಗಳಲ್ಲಿ "*const T" ಪಾಯಿಂಟರ್‌ಗಳ ಡಿಫರೆನ್ಸಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ.
  • ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ನಲ್ಲಿ, ಪ್ಯಾಕೇಜ್ ಮೆಟಾಡೇಟಾಕ್ಕೆ rust_version ಕ್ಷೇತ್ರವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು "--message-format" ಆಯ್ಕೆಯನ್ನು "ಕಾರ್ಗೋ ಇನ್‌ಸ್ಟಾಲ್" ಆಜ್ಞೆಗೆ ಸೇರಿಸಲಾಗಿದೆ.
  • ಕಂಪೈಲರ್ ಸಿಎಫ್‌ಐ (ಕಂಟ್ರೋಲ್ ಫ್ಲೋ ಇಂಟೆಗ್ರಿಟಿ) ಸಂರಕ್ಷಣಾ ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ಬೆಂಬಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಇದು ಪ್ರತಿ ಪರೋಕ್ಷ ಕರೆಗೆ ಮೊದಲು ಕೆಲವು ರೀತಿಯ ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಚೆಕ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ, ಇದು ಪರಿಣಾಮವಾಗಿ ಸಾಮಾನ್ಯ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಆರ್ಡರ್ (ನಿಯಂತ್ರಣ ಹರಿವು) ಉಲ್ಲಂಘನೆಗೆ ಕಾರಣವಾಗಬಹುದು. ಕಾರ್ಯಗಳ ಮೇಲೆ ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವ ಶೋಷಣೆಗಳ ಬಳಕೆ.
  • ಕಂಪೈಲರ್ LLVM ಕವರೇಜ್ ಹೋಲಿಕೆ ಸ್ವರೂಪದ ಆವೃತ್ತಿ 5 ಮತ್ತು 6 ಕ್ಕೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿದೆ, ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಕೋಡ್ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ.
  • ಕಂಪೈಲರ್‌ನಲ್ಲಿ, LLVM ನ ಕನಿಷ್ಠ ಆವೃತ್ತಿಯ ಅವಶ್ಯಕತೆಗಳನ್ನು LLVM 12 ಕ್ಕೆ ಹೆಚ್ಚಿಸಲಾಗಿದೆ.
  • x86_64-unknown-none ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗೆ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಇಲ್ಲದೆ, ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳನ್ನು ಪ್ರಕಟಿಸುವುದು ಅಥವಾ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ವಿಂಡೋಸ್ 0.30 ಲೈಬ್ರರಿಗಳಿಗಾಗಿ ರಸ್ಟ್ ಬಿಡುಗಡೆಯ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಪ್ರಕಟಣೆಯನ್ನು ನಾವು ಗಮನಿಸಬಹುದು, ಇದು ವಿಂಡೋಸ್ ಓಎಸ್‌ಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ರಸ್ಟ್ ಭಾಷೆಯನ್ನು ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಸೆಟ್ ಎರಡು ಕ್ರೇಟ್ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ (ವಿಂಡೋಸ್ ಮತ್ತು ವಿಂಡೋಸ್-ಸಿಸ್), ಅದರ ಮೂಲಕ ನೀವು ರಸ್ಟ್ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ವಿನ್ API ಅನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. API ಬೆಂಬಲಕ್ಕಾಗಿ ಕೋಡ್ ಅನ್ನು API ಅನ್ನು ವಿವರಿಸುವ ಮೆಟಾಡೇಟಾದಿಂದ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ರಚಿಸಲಾಗಿದೆ, ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ Win API ಕರೆಗಳಿಗೆ ಮಾತ್ರವಲ್ಲದೆ ಭವಿಷ್ಯದಲ್ಲಿ ಗೋಚರಿಸುವ ಕರೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಹೊಸ ಆವೃತ್ತಿಯು UWP (ಯುನಿವರ್ಸಲ್ ವಿಂಡೋಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್) ಗುರಿ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ಹ್ಯಾಂಡಲ್ ಮತ್ತು ಡೀಬಗ್ ಪ್ರಕಾರಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.

ಮೂಲ: opennet.ru

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