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

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

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

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

  • ಪೈಪ್‌ಲೈನ್ ಮಾಡಲಾದ ಸಂಕಲನ ಮೋಡ್ (ಪೈಪ್‌ಲೈನ್ಡ್) ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ಅವಲಂಬಿತ ಕ್ರೇಟ್ ಪ್ಯಾಕೇಜ್‌ನ ನಿರ್ಮಾಣವು ಅವಲಂಬಿತ ಮೆಟಾಡೇಟಾ ಲಭ್ಯವಾದ ತಕ್ಷಣ ಅದರ ಸಂಕಲನ ಪೂರ್ಣಗೊಳ್ಳುವವರೆಗೆ ಕಾಯದೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡುವಾಗ, ಅವಲಂಬನೆಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಜೋಡಿಸುವ ಅಗತ್ಯವಿಲ್ಲ, ಮೆಟಾಡೇಟಾವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು, ಇದು ಪ್ರಕಾರಗಳು, ಅವಲಂಬನೆಗಳು ಮತ್ತು ರಫ್ತು ಮಾಡಲಾದ ಅಂಶಗಳ ಪಟ್ಟಿಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಸಂಕಲನ ಪ್ರಕ್ರಿಯೆಯ ಆರಂಭದಲ್ಲಿಯೇ ಮೆಟಾಡೇಟಾ ಲಭ್ಯವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಲಿಂಕ್ ಮಾಡಲಾದ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಈಗ ಹೆಚ್ಚು ಮುಂಚಿತವಾಗಿ ಕಂಪೈಲ್ ಮಾಡಬಹುದು. ಏಕ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ, ಪ್ರಸ್ತಾವಿತ ಮೋಡ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ, ಆದರೆ ನಿರ್ಮಾಣವು ಶಾಖೆಯ ಅವಲಂಬನೆಗಳೊಂದಿಗೆ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಆವರಿಸಿದರೆ, ಒಟ್ಟಾರೆ ನಿರ್ಮಾಣ ಸಮಯವನ್ನು 10-20% ರಷ್ಟು ಕಡಿಮೆ ಮಾಡಬಹುದು;
  • ಕಾರ್ಯಗಳ ತಪ್ಪಾದ ಬಳಕೆಯ ಪತ್ತೆಯನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ std::mem:: ಪ್ರಾರಂಭಿಸದ и std::mem::zeroed. ಉದಾಹರಣೆಗೆ, std::mem::uninitialized ತ್ವರಿತವಾಗಿ ಅರೇಗಳನ್ನು ರಚಿಸಲು ಅನುಕೂಲಕರವಾಗಿದೆ, ಆದರೆ ಇದು ಕಂಪೈಲರ್ ಅನ್ನು ತಪ್ಪುದಾರಿಗೆಳೆಯುತ್ತದೆ ಏಕೆಂದರೆ ಅದು ಪ್ರಾರಂಭವಾದಂತೆ ಕಂಡುಬರುತ್ತದೆ, ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಮೌಲ್ಯವು ಪ್ರಾರಂಭಿಕವಾಗಿಲ್ಲ. mem:: uninitialised ಕಾರ್ಯವನ್ನು ಈಗಾಗಲೇ ಅಸಮ್ಮತಿಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ಗುರುತಿಸಲಾಗಿದೆ ಮತ್ತು ಬದಲಿಗೆ ಮಧ್ಯಂತರ ಪ್ರಕಾರವನ್ನು ಬಳಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ ಬಹುಶಃ ಘಟಕ. mem :: zeroed ಗಾಗಿ, ಈ ಕಾರ್ಯವು ಶೂನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗದ ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡಬಹುದು.

    ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆಯನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡಲು, ಹೊಸ ಬಿಡುಗಡೆಯು ಕಂಪೈಲರ್‌ಗೆ ಲಿಂಟ್ ಚೆಕ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ ಅದು mem::uninitialized ಅಥವಾ mem::zeroed ನೊಂದಿಗೆ ಕೆಲವು ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಶೂನ್ಯ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗದ ಪಾಯಿಂಟರ್ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವ &T ಮತ್ತು Box‹T› ಪ್ರಕಾರಗಳೊಂದಿಗೆ mem::uninitialized ಅಥವಾ mem::zeroed ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ನೀವು ಇದೀಗ ದೋಷವನ್ನು ಪಡೆಯುತ್ತೀರಿ;

  • ಕ್ರೇಟ್ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಬಳಕೆಯಲ್ಲಿಲ್ಲವೆಂದು ಗುರುತಿಸಲು ಮತ್ತು ಭವಿಷ್ಯದ ಅಳಿಸುವಿಕೆಗೆ ನಿಗದಿಪಡಿಸಲು "#[ಅಸಮ್ಮಿತಗೊಳಿಸಲಾಗಿದೆ]" ಗುಣಲಕ್ಷಣವನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ. ರಸ್ಟ್ 1.38 ರಂತೆ, ಈ ಗುಣಲಕ್ಷಣವನ್ನು ಮ್ಯಾಕ್ರೋಗಳಿಗೆ ಸಹ ಬಳಸಬಹುದು;
  • ಉಪಮಾಡ್ಯೂಲ್‌ಗಳಲ್ಲಿ "#[ಗ್ಲೋಬಲ್_ಅಲೋಕೇಟರ್]" ಗುಣಲಕ್ಷಣವನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • ಕಾರ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ std:: any::type_name, ಇದು ನಿಮಗೆ ಪ್ರಕಾರದ ಹೆಸರನ್ನು ಕಂಡುಹಿಡಿಯಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಡೀಬಗ್ ಮಾಡುವ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ಯಾವ ರೀತಿಯ ಕಾರ್ಯವನ್ನು ಕರೆಯಲಾಗಿದೆ ಎಂಬುದನ್ನು ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದು:

    fn gen_value‹T: Default>() -› T {
    println!(" {} ನ ನಿದರ್ಶನವನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ", std:: any::type_name::‹T›());
    ಡೀಫಾಲ್ಟ್::ಡೀಫಾಲ್ಟ್()
    }

    fn ಮುಖ್ಯ() {
    ಅವಕಾಶ _: i32 = gen_value(); # "i32" ಅನ್ನು ಮುದ್ರಿಸಲಾಗುತ್ತದೆ
    ಅವಕಾಶ _: ಸ್ಟ್ರಿಂಗ್ = gen_value(); # "alloc::string::String" ಅನ್ನು ಮುದ್ರಿಸುತ್ತದೆ
    }

  • ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯದ ವಿಸ್ತೃತ ಕಾರ್ಯಗಳು:
    • ಸ್ಲೈಸ್::{concat, connect, join} ಈಗ &T ಗೆ ಹೆಚ್ಚುವರಿಯಾಗಿ &[T] ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು;
    • "*const T" ಮತ್ತು "*mut T" ಈಗ ಮಾರ್ಕರ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ ::ಅನ್ಪಿನ್;
    • "Arc‹[T]›" ಮತ್ತು "Rc‹[T]›" ಈಗ FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} ಈಗ DoubleEndedIterator ಅನ್ನು ಅಳವಡಿಸಿ.
    • ascii::EscapeDefault ಕ್ಲೋನ್ ಮತ್ತು ಡಿಸ್ಪ್ಲೇ ಅನ್ನು ಅಳವಡಿಸುತ್ತದೆ.
  • API ಗಳ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರಗೊಳಿಸಿದ ವಿಧಾನಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ವರ್ಗಾಯಿಸಲಾಗಿದೆ
    • ‹*const T›::cast, ‹*mut T›::cast,
    • ಅವಧಿ::as_secs_f{32|64},
    • ಅವಧಿ::div_duration_f{32|64},
    • ಅವಧಿ::div_f{32|64},
    • ಅವಧಿ::from_secs_f{32|64},
    • ಅವಧಿ::mul_f{32|64},
    • ಶೇಷದೊಂದಿಗೆ ವಿಭಾಗ ಕಾರ್ಯಾಚರಣೆಗಳು
      ಡಿವ್_ಯೂಕ್ಲಿಡ್ ಮತ್ತು ರೆಮ್_ಯೂಕ್ಲಿಡ್ ಎಲ್ಲಾ ಪೂರ್ಣಾಂಕದ ಮೂಲರೂಪಗಳಿಗೆ;

  • ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ನಲ್ಲಿ ವಿಭಿನ್ನ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು "--ಫೀಚರ್ಸ್" ಆಯ್ಕೆಯನ್ನು ಹಲವು ಬಾರಿ ಸೂಚಿಸಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • ಕಂಪೈಲರ್ ಮೂರನೆಯದನ್ನು ಒದಗಿಸುತ್ತದೆ ಗ್ರೇಡ್ ಟಾರ್ಗೆಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಿಗೆ ಬೆಂಬಲ aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-known arminuns-msv7 -gnueabi, armv7-unknown-linux-musleabi, ಷಡ್ಭುಜಾಕೃತಿ-ಅಜ್ಞಾತ-ಲಿನಕ್ಸ್-musl ಮತ್ತು riscv32i-ಅಜ್ಞಾತ-ಯಾವುದೇ-ಎಲ್ಫ್. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಮತ್ತು ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳ ಪ್ರಕಟಣೆ ಇಲ್ಲದೆ.

ಮೂಲ: opennet.ru

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