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

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

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

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

  • ಗುಣಲಕ್ಷಣವನ್ನು ಬಳಸಿಕೊಂಡು ರಚನೆಗಳನ್ನು (ಸ್ಟ್ರಕ್ಟ್) ಮತ್ತು ಎಣಿಕೆಗಳನ್ನು (ವೇರಿಯಂಟ್ ಬ್ಲಾಕ್‌ನೊಂದಿಗೆ enum) ಗುರುತಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ "#[ನಾನ್_ಎಕ್ಸಾಸ್ಟಿವ್]", ಇದು ಅನುಮತಿಸುತ್ತದೆ ಭವಿಷ್ಯದಲ್ಲಿ, ಘೋಷಿತ ರಚನೆಗಳು ಮತ್ತು ಎಣಿಕೆಗಳಿಗೆ ಹೊಸ ಕ್ಷೇತ್ರಗಳು ಮತ್ತು ಆಯ್ಕೆಗಳನ್ನು ಸೇರಿಸಿ. ಉದಾಹರಣೆಗೆ, ಸಾರ್ವಜನಿಕವಾಗಿ ಘೋಷಿಸಲಾದ ಕ್ಷೇತ್ರಗಳೊಂದಿಗೆ ರಚನೆಗಳನ್ನು ಹೊಂದಿರುವ ಮಾಡ್ಯೂಲ್‌ಗಳ ಡೆವಲಪರ್‌ಗಳು ಭವಿಷ್ಯದಲ್ಲಿ ಹೊಸ ಕ್ಷೇತ್ರಗಳನ್ನು ಸೇರಿಸಬಹುದಾದ ರಚನೆಗಳನ್ನು ಗುರುತಿಸಲು "#[ನಾನ್_ಎಕ್ಸಾಸ್ಟಿವ್]" ಅನ್ನು ಬಳಸಬಹುದು. ಇಲ್ಲಿಯವರೆಗೆ, ಈ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಡೆವಲಪರ್ ಕ್ಷೇತ್ರಗಳನ್ನು ಖಾಸಗಿಯಾಗಿ ಘೋಷಿಸುವ ಮತ್ತು ಕ್ಷೇತ್ರಗಳ ಬದಲಾಗದ ಪಟ್ಟಿಗೆ ಬಂಧಿಸುವ ನಡುವೆ ಆಯ್ಕೆ ಮಾಡಲು ಒತ್ತಾಯಿಸಲಾಯಿತು. ಹೊಸ ಗುಣಲಕ್ಷಣವು ಈ ಮಿತಿಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ ಮತ್ತು ಹಿಂದೆ ಸಂಕಲಿಸಿದ ಬಾಹ್ಯ ಕೋಡ್ ಅನ್ನು ಮುರಿಯುವ ಅಪಾಯವಿಲ್ಲದೆ ಭವಿಷ್ಯದಲ್ಲಿ ಹೊಸ ಕ್ಷೇತ್ರಗಳನ್ನು ಸೇರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕ್ರೇಟ್ ಪ್ಯಾಕೇಜ್‌ಗಳಲ್ಲಿ, “ಹೊಂದಾಣಿಕೆ” ವಿಭಾಗದಲ್ಲಿ ಆಯ್ಕೆಗಳನ್ನು ಹೊಂದಿಸುವಾಗ, “_ => {...}” ಮಾಸ್ಕ್‌ನ ಸ್ಪಷ್ಟವಾದ ವ್ಯಾಖ್ಯಾನದ ಅಗತ್ಯವಿದೆ, ಭವಿಷ್ಯದ ಸಂಭವನೀಯ ಕ್ಷೇತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಇಲ್ಲದಿದ್ದರೆ ಹೊಸ ಕ್ಷೇತ್ರಗಳನ್ನು ಸೇರಿಸುವಾಗ ದೋಷವನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ.
  • ಸೇರಿಸಲಾಗಿದೆ ಕಾರ್ಯವಿಧಾನದ ಮ್ಯಾಕ್ರೋ ಮ್ಯಾಕ್!() ಅನ್ನು ಒಂದು ಪ್ರಕಾರದ ಸಂದರ್ಭದಲ್ಲಿ ಕರೆಯುವ ಸಾಮರ್ಥ್ಯ. ಉದಾಹರಣೆಗೆ, "ವಿಸ್ತರಣೆ_ಟು_ಟೈಪ್" ಕಾರ್ಯವಿಧಾನದ ಮ್ಯಾಕ್ರೋ ಆಗಿದ್ದರೆ ನೀವು ಈಗ "ಟೈಪ್ ಫೂ = ಎಕ್ಸ್‌ಪಾಂಡ್_ಟು_ಟೈಪ್!(ಬಾರ್);" ಎಂದು ಬರೆಯಬಹುದು.
  • "ಬಾಹ್ಯ { ... }" ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ "ಬ್ಯಾಂಗ್!()" ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಕಾರ್ಯವಿಧಾನದ ಮತ್ತು ಗುಣಲಕ್ಷಣ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯ, ಉದಾಹರಣೆಗೆ:

    ಮ್ಯಾಕ್ರೋ_ನಿಯಮಗಳು! make_item { ($ name:ident) => {fn $name(); } }

    ಬಾಹ್ಯ {
    ಮಾಡು_ಐಟಂ!(ಆಲ್ಫಾ);
    ಮಾಡು_ಐಟಂ!(ಬೀಟಾ);
    }

    ಬಾಹ್ಯ "ಸಿ" {
    #[ನನ್ನ_ಗುರುತಿನ_ಮ್ಯಾಕ್ರೋ] fn foo();
    }

  • ಮ್ಯಾಕ್ರೋಗಳಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ "macro_rules!" ಅಂಶಗಳನ್ನು ಉತ್ಪಾದಿಸುವ ಸಾಮರ್ಥ್ಯ. "ಮ್ಯಾಕ್ರೋ_ರೂಲ್ಸ್!" ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ ಕಾರ್ಯ-ರೀತಿಯ ಮ್ಯಾಕ್ರೋಗಳಲ್ಲಿ (“ಮ್ಯಾಕ್!()”) ಮತ್ತು ಮ್ಯಾಕ್ರೋಗಳಲ್ಲಿ ಗುಣಲಕ್ಷಣಗಳ ರೂಪದಲ್ಲಿ (“#[ಮ್ಯಾಕ್]”) ಸಾಧ್ಯ.
  • $m:ಮೆಟಾ ಮ್ಯಾಪಿಂಗ್ ಅಂಶದಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ ಅನಿಯಂತ್ರಿತ ಟೋಕನ್ ಎಣಿಕೆ ಮೌಲ್ಯಗಳಿಗೆ ಬೆಂಬಲ ("[TOKEN_STREAM]", "{TOKEN_STREAM}" ಮತ್ತು "(TOKEN_STREAM)"), ಉದಾಹರಣೆಗೆ:

    ಮ್ಯಾಕ್ರೋ_ನಿಯಮಗಳು! accept_meta { ($m:meta) => {}}
    ಸ್ವೀಕರಿಸಿ_ಮೆಟಾ!( ನನ್ನ::ಮಾರ್ಗ );
    accept_meta!( my::path = "lit" );
    ಸ್ವೀಕರಿಸು_ಮೆಟಾ!( ನನ್ನ::ಮಾರ್ಗ (ಎಬಿಸಿ) );
    ಸ್ವೀಕರಿಸು_ಮೆಟಾ!( ನನ್ನ:: ಮಾರ್ಗ [ಎಬಿಸಿ ] );
    accept_meta!( ನನ್ನ:: ಮಾರ್ಗ {abc } );

  • ರಸ್ಟ್ 2015 ಮೋಡ್‌ನಲ್ಲಿ, ಎನ್‌ಎಲ್‌ಎಲ್ (ನಾನ್-ಲೆಕ್ಸಿಕಲ್ ಲೈಫ್‌ಟೈಮ್ಸ್) ತಂತ್ರವನ್ನು ಬಳಸಿಕೊಂಡು ವೇರಿಯೇಬಲ್‌ಗಳ ಎರವಲು (ಬಾರೋ ಚೆಕರ್) ಅನ್ನು ಪರಿಶೀಲಿಸುವಾಗ ಗುರುತಿಸಲಾದ ಸಮಸ್ಯೆಗಳಿಗೆ ದೋಷ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಈ ಹಿಂದೆ, ರಸ್ಟ್ 2018 ಮೋಡ್‌ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ ಎಚ್ಚರಿಕೆಗಳನ್ನು ದೋಷಗಳಿಂದ ಬದಲಾಯಿಸಲಾಗಿತ್ತು.
    ಬದಲಾವಣೆಯನ್ನು ರಸ್ಟ್ 2015 ಮೋಡ್‌ಗೆ ವಿಸ್ತರಿಸಿದ ನಂತರ, ಡೆವಲಪರ್‌ಗಳು ಅಂತಿಮವಾಗಿ ಸಾಧ್ಯವಾಯಿತು ತೊಡೆದುಹಾಕಲು ಹಳೆಯ ಸಾಲ ಪರೀಕ್ಷಕರಿಂದ.

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

  • ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಅದನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆಯನ್ನು ನಿರ್ಧರಿಸುವ "const" ಗುಣಲಕ್ಷಣವನ್ನು is_power_of_two ಕಾರ್ಯಕ್ಕಾಗಿ (ಸಹಿ ಮಾಡದ ಪೂರ್ಣಾಂಕಗಳಿಗೆ) ಬಳಸಲಾಗುತ್ತದೆ.
  • Todo!() ಮ್ಯಾಕ್ರೋ ಮತ್ತು ಸ್ಲೈಸ್::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, ವಿಧಾನಗಳನ್ನು ಒಳಗೊಂಡಂತೆ API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ.
    ಆಯ್ಕೆ::as_deref, ಆಯ್ಕೆ::as_deref_mut, ಆಯ್ಕೆ:: ಚಪ್ಪಟೆ, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}:: {32_bytes, f64}::from_be_bytes, {f32,f64}::from_le_bytes, ಮತ್ತು {f32,f64}::from_ne_bytes.

  • ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಕಾರ್ಗೋದಲ್ಲಿ
    ಅಳವಡಿಸಲಾಗಿದೆ ಡಿಸ್ಕ್ನಲ್ಲಿ ಕಂಪೈಲರ್ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದು. "ಕಾರ್ಗೋ ಮೆಟಾಡೇಟಾ" ಕಮಾಂಡ್‌ಗೆ "ಕಾರ್ಗೋ ಮೆಟಾಡೇಟಾ" ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ--ಫಿಲ್ಟರ್-ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ಅವಲಂಬನೆ ರೆಸಲ್ಯೂಶನ್ ಕಾಲಮ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಗುರಿ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗೆ ಬದ್ಧವಾಗಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಮಾತ್ರ ತೋರಿಸಲು. ಮಾನ್ಯ TLS ಆವೃತ್ತಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು http.ssl-version ಕಾನ್ಫಿಗರೇಶನ್ ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
    ವಿಭಾಗವನ್ನು ಪ್ರಕಟಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ "ದೇವ್-ಅವಲಂಬನೆಗಳು"ಆವೃತ್ತಿ" ಕೀಲಿಯನ್ನು ಸೂಚಿಸದೆ.

  • rustc ಕಂಪೈಲರ್ ಗುರಿ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಾದ thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ಮತ್ತು mips64el-unknown-linux-muslabi64 ಗಾಗಿ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಮತ್ತು ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳ ಪ್ರಕಟಣೆ ಇಲ್ಲದೆ.

ಮೂಲ: opennet.ru

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