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

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

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

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

  • ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ ಒಂದು ಹೊಸ ಅಸಮಕಾಲಿಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸಿಂಟ್ಯಾಕ್ಸ್ "ಅಸಿಂಕ್" ಫಂಕ್ಷನ್, ಅಸಿಂಕ್ ಮೂವ್ { ... } ಬ್ಲಾಕ್ ಮತ್ತು ".ವೇಯ್ಟ್" ಆಪರೇಟರ್ ಅನ್ನು ಆಧರಿಸಿದೆ, ಇದು ಮುಖ್ಯ ಕಮಾಂಡ್ ಫ್ಲೋ ಅನ್ನು ನಿರ್ಬಂಧಿಸದ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ಬರೆಯುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಅಸಮಕಾಲಿಕ I/O ಗಾಗಿ ಹಿಂದೆ ನೀಡಲಾದ API ಗೆ ಹೋಲಿಸಿದರೆ, async/.await ಕನ್‌ಸ್ಟ್ರಕ್ಟ್‌ಗಳು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸರಳವಾಗಿದೆ, ಹೆಚ್ಚು ಓದಬಲ್ಲವು ಮತ್ತು ಲೂಪ್‌ಗಳು, ಷರತ್ತುಬದ್ಧ ಹೇಳಿಕೆಗಳು ಮತ್ತು ವಿನಾಯಿತಿಗಳ ಆಧಾರದ ಮೇಲೆ ಪರಿಚಿತ ಹರಿವಿನ ನಿಯಂತ್ರಣ ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಂಕೀರ್ಣ ಅಸಮಕಾಲಿಕ ಸಂವಹನಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

    ಅಸಿಂಕ್-ವೇಯ್ಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅವುಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ವಿರಾಮಗೊಳಿಸಬಹುದಾದ ಕಾರ್ಯಗಳನ್ನು ರಚಿಸಲು, ಮುಖ್ಯ ಥ್ರೆಡ್‌ಗೆ ನಿಯಂತ್ರಣವನ್ನು ಹಿಂತಿರುಗಿಸಲು ಮತ್ತು ನಂತರ ಅವರು ನಿಲ್ಲಿಸಿದ ಸ್ಥಳದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪುನರಾರಂಭಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, I/O ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಾಗ ಅಂತಹ ವಿರಾಮದ ಅಗತ್ಯವಿದೆ, ಇದರಲ್ಲಿ ಮುಂದಿನ ಡೇಟಾ ಬರುವವರೆಗೆ ಕಾಯುತ್ತಿರುವಾಗ ಇತರ ಕೆಲಸವನ್ನು ಮಾಡಬಹುದು. "ಅಸಿಂಕ್ ಎಫ್‌ಎನ್" ಮತ್ತು "ಅಸಿಂಕ್ ಮೂವ್" ನೊಂದಿಗೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಾರ್ಯಗಳು ಮತ್ತು ಬ್ಲಾಕ್‌ಗಳು ಗುಣಲಕ್ಷಣವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ ಫ್ಯೂಚರ್, ಇದು ಮುಂದೂಡಲ್ಪಟ್ಟ ಅಸಮಕಾಲಿಕ ಕಂಪ್ಯೂಟೇಶನ್ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ನೀವು ನೇರವಾಗಿ ಮುಂದೂಡಲ್ಪಟ್ಟ ಲೆಕ್ಕಾಚಾರವನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು ಮತ್ತು ".waiit" ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯಬಹುದು. ಹೆಚ್ಚುವರಿ ಓವರ್ಹೆಡ್ ಇಲ್ಲದೆ ಸಂಕೀರ್ಣವಾದ ನೆಸ್ಟೆಡ್ ರಚನೆಗಳನ್ನು ರಚಿಸಲು ಅವಕಾಶ ನೀಡುವವರೆಗೆ .ವೇಯ್ಟ್ ಎಂದು ಕರೆಯುವವರೆಗೆ ಯಾವುದೇ ಕ್ರಿಯೆಯನ್ನು ನಡೆಸಲಾಗುವುದಿಲ್ಲ ಅಥವಾ ಪೂರ್ವ-ಯೋಜಿತವಾಗಿರುವುದಿಲ್ಲ.

    async fn first_function() -> u32 { ..}
    ...
    ಭವಿಷ್ಯದ ಅವಕಾಶ = ಮೊದಲ_ಫಂಕ್ಷನ್ ();
    ...
    ಫಲಿತಾಂಶವನ್ನು ಅನುಮತಿಸಿ: u32 = ಭವಿಷ್ಯ. ನಿರೀಕ್ಷಿಸಿ;

  • ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ "#![ವೈಶಿಷ್ಟ್ಯ(ಬೈಂಡ್_ಬೈ_ಮೂವ್_ಪ್ಯಾಟರ್ನ್_ಗಾರ್ಡ್ಸ್)]", ಬೈಂಡಿಂಗ್ ಪ್ರಕಾರದೊಂದಿಗೆ ವೇರಿಯೇಬಲ್‌ಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ "ಮೂಲಕ-ಚಲನೆ" ಟೆಂಪ್ಲೇಟ್‌ಗಳಲ್ಲಿ ಮತ್ತು ಅಭಿವ್ಯಕ್ತಿಯ "if" ವಿಭಾಗದಲ್ಲಿ ಈ ವೇರಿಯಬಲ್‌ಗಳಿಗೆ ಉಲ್ಲೇಖಗಳನ್ನು ಬಳಸಿ "ಪಂದ್ಯ". ಉದಾಹರಣೆಗೆ, ಈ ಕೆಳಗಿನ ನಿರ್ಮಾಣಗಳನ್ನು ಈಗ ಅನುಮತಿಸಲಾಗಿದೆ:

    fn ಮುಖ್ಯ() {
    ಲೆಟ್ ಅರೇ: ಬಾಕ್ಸ್<[u8; 4]> = ಬಾಕ್ಸ್::ಹೊಸ ([1, 2, 3, 4]);

    ಹೊಂದಾಣಿಕೆ ರಚನೆ {
    ಸಂಖ್ಯೆಗಳು
    ಒಂದು ವೇಳೆ nums.iter().sum::() == 10

    => {
    ಡ್ರಾಪ್ (ಸಂಖ್ಯೆಗಳು);
    }
    _ => ತಲುಪಲಾಗುವುದಿಲ್ಲ!(),
    }
    }

  • ಸೂಚನೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ ಗುಣಲಕ್ಷಣಗಳು ಫಂಕ್ಷನ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು, ಮುಚ್ಚುವಿಕೆಗಳು ಮತ್ತು ಫಂಕ್ಷನ್ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವಾಗ. ಲಿಂಟ್ ಮೂಲಕ ಡಯಾಗ್ನೋಸ್ಟಿಕ್ಸ್ ಅನ್ನು ನಿಯಂತ್ರಿಸುವ ಷರತ್ತುಬದ್ಧ ಸಂಕಲನ ಗುಣಲಕ್ಷಣಗಳು (cfg, cfg_attr) ಮತ್ತು ಸಹಾಯಕ ಮ್ಯಾಕ್ರೋ ಕರೆ ಮಾಡುವ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ.

    ಎಫ್ಎನ್ ಲೆನ್ (
    #[cfg(windows)] ಸ್ಲೈಸ್: &[u16], // Windows ನಲ್ಲಿ ಪ್ಯಾರಾಮೀಟರ್ ಬಳಸಿ
    #[cfg(ಅಲ್ಲ(ವಿಂಡೋಸ್))] ಸ್ಲೈಸ್: &[u8], // ಇತರೆ OS ನಲ್ಲಿ ಬಳಸಿ
    ) -> ಬಳಸಿ {
    slice.len()
    }

  • NLL (ನಾನ್-ಲೆಕ್ಸಿಕಲ್ ಲೈಫ್ಟೈಮ್ಸ್) ತಂತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು ಅಸ್ಥಿರಗಳ ಎರವಲು (ಸಾಲ ಪರೀಕ್ಷಕ) ಅನ್ನು ಪರಿಶೀಲಿಸುವಾಗ ಗುರುತಿಸಲಾದ ಸಮಸ್ಯೆಗಳ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆಗಳು, ಅನುವಾದಿಸಲಾಗಿದೆ ಮಾರಣಾಂತಿಕ ದೋಷಗಳ ವರ್ಗಕ್ಕೆ. ಎರವಲು ಪಡೆದ ವೇರಿಯಬಲ್‌ಗಳ ಜೀವಿತಾವಧಿಯನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವ ಹೊಸ ಕಾರ್ಯವಿಧಾನವನ್ನು ಆಧರಿಸಿದ ಪರಿಶೀಲನಾ ವ್ಯವಸ್ಥೆಯು ಹಳೆಯ ಪರಿಶೀಲನಾ ಕೋಡ್‌ನಿಂದ ಗಮನಿಸದೆ ಹೋದ ಕೆಲವು ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿತು ಎಂದು ನಾವು ನೆನಪಿಸಿಕೊಳ್ಳೋಣ. ಇಂತಹ ತಪಾಸಣೆಗಳಿಗೆ ದೋಷದ ಔಟ್‌ಪುಟ್ ಹಿಂದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಕೋಡ್‌ನೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದಾದ್ದರಿಂದ, ದೋಷಗಳ ಬದಲಿಗೆ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಆರಂಭದಲ್ಲಿ ನೀಡಲಾಯಿತು. ರಸ್ಟ್ 2018 ಮೋಡ್‌ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ ಎಚ್ಚರಿಕೆಗಳನ್ನು ದೋಷಗಳಿಂದ ಬದಲಾಯಿಸಲಾಗಿದೆ. ಮುಂದಿನ ಬಿಡುಗಡೆಯಲ್ಲಿ, ರಸ್ಟ್ 2015 ಮೋಡ್‌ನಲ್ಲಿ ದೋಷ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಸಹ ಅಳವಡಿಸಲಾಗುವುದು, ಇದು ಅಂತಿಮವಾಗಿ ಹಳೆಯ ಸಾಲ ಪರೀಕ್ಷಕವನ್ನು ತೊಡೆದುಹಾಕುತ್ತದೆ;
  • ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸುವ “const” ಗುಣಲಕ್ಷಣವನ್ನು Vec::new, String::new, LinkedList::new, str::len, [T]::len ಕಾರ್ಯಗಳಿಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. , str::as_bytes,
    abs, wrapping_abs ಮತ್ತು overflowing_abs;

  • API ಗಳ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರಗೊಳಿಸಿದ ವಿಧಾನಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ವರ್ಗಾಯಿಸಲಾಗಿದೆ
    Pin::into_inner, Instant::checked_duration_ince ಮತ್ತು Instant::saturating_duration_inn;

  • ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಈಗ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ಗಳಿಗಾಗಿ ".toml" ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದೆ. ಕಾರ್ಗೋದಿಂದ ನೇರವಾಗಿ ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯವನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾಥಮಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ವಿವಾದಾತ್ಮಕ "--ಎಲ್ಲಾ" ಧ್ವಜವನ್ನು ಬದಲಿಸಿ "--ಕಾರ್ಯಸ್ಥಳ" ಧ್ವಜವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಮೆಟಾಡೇಟಾಕ್ಕೆ ಹೊಸ ಕ್ಷೇತ್ರವನ್ನು ಸೇರಿಸಲಾಗಿದೆ "ಪ್ರಕಟಿಸು“, ಇದು ನಿಮಗೆ git ಟ್ಯಾಗ್ ಮತ್ತು ಆವೃತ್ತಿ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸುವ ಮೂಲಕ ಅವಲಂಬನೆಗಳನ್ನು ಪ್ರಕಟಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ವಿವಿಧ ಸಂಕಲನ ಹಂತಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದ HTML ವರದಿಯನ್ನು ರಚಿಸಲು "-Ztimings" ಪರೀಕ್ಷಾ ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • rustc ಕಂಪೈಲರ್‌ನಲ್ಲಿ, ಡಯಾಗ್ನೋಸ್ಟಿಕ್ ಸಂದೇಶಗಳು ಟರ್ಮಿನಲ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗದ ಕೋಡ್‌ನ ಬಾಲಗಳನ್ನು ಟ್ರಿಮ್ ಮಾಡುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಗುರಿ ವೇದಿಕೆಗಳಿಗೆ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಒದಗಿಸಲಾಗಿದೆ
    i686-unknown-uefi ಮತ್ತು sparc64-unknown-openbsd. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಮತ್ತು ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳ ಪ್ರಕಟಣೆ ಇಲ್ಲದೆ.

ಮೂಲ: opennet.ru

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