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

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

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

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

  • crates.io ಪಬ್ಲಿಕ್ ರಿಜಿಸ್ಟ್ರಿಯೊಂದಿಗೆ ಸಹಬಾಳ್ವೆ ಮಾಡಬಹುದಾದ ಪರ್ಯಾಯ ಪ್ಯಾಕೇಜ್ ರಿಜಿಸ್ಟ್ರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ಗೆ ಪರಿಕರಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಖಾಸಗಿ ಅಪ್ಲಿಕೇಶನ್ ಡೆವಲಪರ್‌ಗಳು ಈಗ ತಮ್ಮದೇ ಆದ ಖಾಸಗಿ ನೋಂದಾವಣೆಯನ್ನು ಬಳಸಬಹುದು, ಅದನ್ನು Cargo.toml ನಲ್ಲಿ ಅವಲಂಬನೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವಾಗ ಬಳಸಬಹುದಾಗಿದೆ ಮತ್ತು ಅವರ ಉತ್ಪನ್ನಗಳಿಗೆ crates.io ಅನ್ನು ಹೋಲುವ ಆವೃತ್ತಿಯ ಮಾದರಿಯನ್ನು ಬಳಸಬಹುದು, ಜೊತೆಗೆ crates.io ಮತ್ತು crates.io ಎರಡನ್ನೂ ಉಲ್ಲೇಖಿಸಬಹುದು. ಅವಲಂಬನೆಗಳಲ್ಲಿ. ನಿಮ್ಮ ಸ್ವಂತ ನೋಂದಾವಣೆಗೆ.

    .cargo/config ಗೆ ಬಾಹ್ಯ ದಾಖಲಾತಿಗಳನ್ನು ಸೇರಿಸಲು ($HOME ಅಥವಾ ಪ್ಯಾಕೇಜ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿದೆ)
    ಒದಗಿಸಲಾಗಿದೆ "[ರಿಜಿಸ್ಟ್ರಿಗಳು]" ವಿಭಾಗ, ಮತ್ತು ಬಾಹ್ಯ ನೋಂದಾವಣೆ ಬಳಸಲು, "ರಿಜಿಸ್ಟ್ರಿ" ಆಯ್ಕೆಯು Cargo.toml ನಲ್ಲಿನ ಪ್ರತಿ ಅವಲಂಬನೆಯ ವಿವರಣೆಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಿದೆ. ಹೆಚ್ಚುವರಿ ನೋಂದಾವಣೆಗೆ ಸಂಪರ್ಕಿಸಲು, ~/.cargo/credentials ಫೈಲ್‌ನಲ್ಲಿ ದೃಢೀಕರಣ ಟೋಕನ್ ಅನ್ನು ಇರಿಸಿ ಮತ್ತು ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ
    "ಸರಕು ಲಾಗಿನ್ --ರಿಜಿಸ್ಟ್ರಿ=ಮೈ-ರಿಜಿಸ್ಟ್ರಿ", ಮತ್ತು ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಪ್ರಕಟಿಸಲು -
    "ಸರಕು ಪ್ರಕಟಣೆ --ನೋಂದಣಿ=ನನ್ನ-ನೋಂದಣಿ";

  • "?" ಅನ್ನು ಬಳಸಲು ಸಂಪೂರ್ಣ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಪರೀಕ್ಷೆಗಳಲ್ಲಿ ಡಾಕ್ಟಸ್ಟ್ಗಳು, ದಾಖಲಾತಿಯಿಂದ ಉದಾಹರಣೆಗಳ ಕೋಡ್ ಅನ್ನು ಪರೀಕ್ಷೆಗಳಾಗಿ ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಹಿಂದೆ ಆಪರೇಟರ್
    "?" "fn main()" ಫಂಕ್ಷನ್ ಅಥವಾ "#[test]" ಫಂಕ್ಷನ್‌ಗಳಲ್ಲಿ ಮಾತ್ರ ಪರೀಕ್ಷಾ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಸಮಯದಲ್ಲಿ ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬಳಸಬಹುದು;

  • ಕಾರ್ಯವಿಧಾನದ ಮ್ಯಾಕ್ರೋಗಳೊಂದಿಗೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಸ್ಟಮ್ ಗುಣಲಕ್ಷಣಗಳಲ್ಲಿ ಭದ್ರಪಡಿಸಲಾಗಿದೆ ಟೋಕನ್‌ಗಳ ಅನಿಯಂತ್ರಿತ ಸೆಟ್‌ಗಳನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯ ("#[attr($tokens)]", "#[attr[$tokens]] ಮತ್ತು #[attr{$tokens}]"). ಹಿಂದೆ, "#[foo(bar, baz(quux, foo = "bar"))]" ನಂತಹ ಸ್ಟ್ರಿಂಗ್ ಅಕ್ಷರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಟ್ರೀ/ರಿಕರ್ಸಿವ್ ರೂಪದಲ್ಲಿ ಅಂಶಗಳನ್ನು ಮಾತ್ರ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದಾಗಿತ್ತು, ಆದರೆ ಈಗ enums ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿದೆ ('# [ರೇಂಜ್(0. .10)]') ಮತ್ತು "#[ಬೌಂಡ್(ಟಿ: ಮೈಟ್ರೇಟ್)]" ನಂತಹ ನಿರ್ಮಾಣಗಳು;
  • ಸ್ಥಿರವಾದ ಲಕ್ಷಣಗಳು (ಲಕ್ಷಣ) ರಿಂದ ಪ್ರಯತ್ನಿಸಿ и ಪ್ರಯತ್ನಿಸಿ, ಇದು ದೋಷ ನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಟೈಪ್ ಪರಿವರ್ತನೆಗಳನ್ನು ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳೊಂದಿಗೆ from_be_bytes ನಂತಹ ವಿಧಾನಗಳು ಅರೇಗಳನ್ನು ಇನ್‌ಪುಟ್‌ನಂತೆ ಬಳಸುತ್ತವೆ, ಆದರೆ ಡೇಟಾವು ಸಾಮಾನ್ಯವಾಗಿ ಸ್ಲೈಸ್‌ನ ಪ್ರಕಾರವಾಗಿದೆ, ಮತ್ತು ಅರೇಗಳು ಮತ್ತು ಸ್ಲೈಸ್‌ಗಳ ನಡುವೆ ಪರಿವರ್ತಿಸುವುದು ಹಸ್ತಚಾಲಿತವಾಗಿ ಮಾಡಲು ಸಮಸ್ಯಾತ್ಮಕವಾಗಿರುತ್ತದೆ. ಹೊಸ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ, ಈ ಕಾರ್ಯಾಚರಣೆಯನ್ನು .try_into() ಗೆ ಕರೆ ಮಾಡುವ ಮೂಲಕ ಹಾರಾಡುತ್ತ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ, "ಲೆಟ್ num = u32::from_be_bytes(slice.try_into()?)". ಯಾವಾಗಲೂ ಯಶಸ್ವಿಯಾಗುವ ಪರಿವರ್ತನೆಗಳಿಗಾಗಿ ದೋಷ ಪ್ರಕಾರವನ್ನು ಸೇರಿಸಲಾಗಿದೆ (ಉದಾ. ಪ್ರಕಾರ u8 ರಿಂದ u32 ವರೆಗೆ) ದೋಷರಹಿತ, ನೀವು ಪಾರದರ್ಶಕವಾಗಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ
    ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಎಲ್ಲಾ "ಇಂದ" ಅಳವಡಿಕೆಗಳಿಗಾಗಿ TryFrom;

  • ಕಾರ್ಯವನ್ನು ತಡೆಹಿಡಿಯಲಾಗಿದೆ CommandExt::before_exec, ಇದು ಫೋರ್ಕ್() ಕರೆ ನಂತರ ಫೋರ್ಕ್ ಮಾಡಲಾದ ಚೈಲ್ಡ್ ಪ್ರಕ್ರಿಯೆಯ ಸಂದರ್ಭದಲ್ಲಿ ನಡೆಯುವ ಎಕ್ಸಿಕ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡುವ ಮೊದಲು ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟಿತು. ಅಂತಹ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ, ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳು ಮತ್ತು ಮ್ಯಾಪ್ ಮಾಡಲಾದ ಮೆಮೊರಿ ಪ್ರದೇಶಗಳಂತಹ ಪೋಷಕ ಪ್ರಕ್ರಿಯೆಯ ಕೆಲವು ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಕಲು ಮಾಡಬಹುದು, ಇದು ವಿವರಿಸಲಾಗದ ನಡವಳಿಕೆ ಮತ್ತು ಲೈಬ್ರರಿಗಳ ತಪ್ಪಾದ ಕೆಲಸಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು.
    before_exec ಬದಲಿಗೆ ಅಸುರಕ್ಷಿತ ಕಾರ್ಯವನ್ನು ಬಳಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ CommandExt::pre_exec.

  • 8 ರಿಂದ 64 ಬಿಟ್‌ಗಳವರೆಗೆ ಸಹಿ ಮಾಡಿದ ಮತ್ತು ಸಹಿ ಮಾಡದ ಪರಮಾಣು ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಪರಮಾಣು ಯು8), ಹಾಗೆಯೇ ಸಹಿ ಮಾಡಿದ ಪ್ರಕಾರಗಳು ಶೂನ್ಯವಲ್ಲದ[8|16|32|64|128].
  • ಯಾವುದೇ::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, ತತ್‌ಕ್ಷಣ::checked_[ಸೇರಿಸಿದಂತೆ API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರತೆಯ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ. |ಉಪ] ಮತ್ತು ಸಿಸ್ಟಂಟೈಮ್ ಅನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ ::ಪರಿಶೀಲಿಸಲಾಗಿದೆ_[ಸೇರಿಸು|ಉಪ]. iter::from_fn ಮತ್ತು iter:: ಉತ್ತರಾಧಿಕಾರಿಗಳ ಕಾರ್ಯಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ;
  • ಎಲ್ಲಾ ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳಿಗೆ, ಚೆಕ್ಡ್_ಪೌ, ಸ್ಯಾಚುರೇಟಿಂಗ್_ಪೌ, ರಾಪಿಂಗ್_ಪೌ, ಮತ್ತು ಓವರ್‌ಫ್ಲೋವಿಂಗ್_ಪೌ ವಿಧಾನಗಳನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ;
  • "-C linker-plugin-lto" ಬಿಲ್ಡ್ ಆಯ್ಕೆಯನ್ನು ಸೂಚಿಸುವ ಮೂಲಕ ಲಿಂಕ್ ಮಾಡುವ ಹಂತದಲ್ಲಿ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

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