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

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

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

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

  • "ಪ್ಯಾನಿಕ್!" ಮ್ಯಾಕ್ರೋ ಬಳಕೆಯನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ. "const fn" ಘೋಷಣೆಗಳಂತಹ ಸಂಕಲನದ ಸಮಯದಲ್ಲಿ ರಚಿಸಲಾದ ಸಂದರ್ಭಗಳಲ್ಲಿ. ಹೆಚ್ಚುವರಿಯಾಗಿ, "ಪ್ಯಾನಿಕ್!" ಅನ್ನು ಬಳಸುವುದರ ಜೊತೆಗೆ const ಘೋಷಣೆಗಳು "ದೃಢೀಕರಣ!" ಮ್ಯಾಕ್ರೋ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಮತ್ತು ಕೆಲವು ಇತರ ಪ್ರಮಾಣಿತ ಲೈಬ್ರರಿ API ಗಳು. ಸ್ಥಿರೀಕರಣವು ಸಂಪೂರ್ಣ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಮೂಲಸೌಕರ್ಯವನ್ನು ಇನ್ನೂ ಒಳಗೊಂಡಿಲ್ಲ, ಆದ್ದರಿಂದ ಅದರ ಪ್ರಸ್ತುತ ರೂಪದಲ್ಲಿ "ಪ್ಯಾನಿಕ್!" ಮ್ಯಾಕ್ರೋ ಸ್ಟ್ಯಾಟಿಕ್ ಸ್ಟ್ರಿಂಗ್‌ಗಳೊಂದಿಗೆ ಮಾತ್ರ ಬಳಸಬಹುದು (ಪ್ಯಾನಿಕ್!("...")) ಅಥವಾ ಬದಲಿ ಮಾಡುವಾಗ "&str" ಒಂದೇ ಇಂಟರ್‌ಪೋಲೇಟೆಡ್ ಮೌಲ್ಯದೊಂದಿಗೆ (ಪ್ಯಾನಿಕ್!("{}", ಎ)), ಇದನ್ನು "{"ಬದಲಿಯಾಗಿ ಸೀಮಿತಗೊಳಿಸಬೇಕು }" ಸ್ಪೆಸಿಫೈಯರ್‌ಗಳು ಮತ್ತು ಇತರ ಪ್ರಕಾರಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡದೆ. ಭವಿಷ್ಯದಲ್ಲಿ, ಸ್ಥಿರ ಸಂದರ್ಭಗಳಲ್ಲಿ ಮ್ಯಾಕ್ರೋಗಳ ಅನ್ವಯವನ್ನು ವಿಸ್ತರಿಸಲಾಗುವುದು, ಆದರೆ ಸಂಕಲನ ಹಂತದಲ್ಲಿ ಪ್ರತಿಪಾದಿಸುವ ಪರಿಶೀಲನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸ್ಥಿರವಾದ ಸಾಮರ್ಥ್ಯಗಳು ಈಗಾಗಲೇ ಸಾಕಾಗುತ್ತದೆ: const _: () = ದೃಢೀಕರಣ!(std::mem::size_of:: () == 64); const _: () = ಪ್ರತಿಪಾದಿಸಿ!(std::mem::size_of:: () == 8);
  • ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನಿಯಂತ್ರಿತ ಹೆಸರುಗಳೊಂದಿಗೆ ಪ್ರೊಫೈಲ್‌ಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ, "ದೇವ್", "ಬಿಡುಗಡೆ", "ಪರೀಕ್ಷೆ" ಮತ್ತು "ಬೆಂಚ್" ಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ಅಂತಿಮ ಉತ್ಪನ್ನ ಅಸೆಂಬ್ಲಿಗಳನ್ನು ರಚಿಸಿದಾಗ ಮಾತ್ರ ಲಿಂಕ್ ಮಾಡುವ ಹಂತದಲ್ಲಿ (LTO) ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ನೀವು Cargo.toml ನಲ್ಲಿ "ಪ್ರೊಡಕ್ಷನ್" ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸಬಹುದು ಮತ್ತು ಅದಕ್ಕೆ "lto = true" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ನಿಮ್ಮ ಸ್ವಂತ ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವಾಗ, ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ನೀವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ರೊಫೈಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು. ಕೆಳಗಿನ ಉದಾಹರಣೆಯು "lto = true" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ "ಬಿಡುಗಡೆ" ಪ್ರೊಫೈಲ್ ಅನ್ನು ಪೂರೈಸುವ "ಪ್ರೊಡಕ್ಷನ್" ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ. "--ಪ್ರೊಫೈಲ್ ಪ್ರೊಡಕ್ಷನ್" ಆಯ್ಕೆಯೊಂದಿಗೆ ಸರಕು ಕರೆ ಮಾಡುವ ಮೂಲಕ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅಸೆಂಬ್ಲಿ ಕಲಾಕೃತಿಗಳನ್ನು "ಗುರಿ/ಉತ್ಪಾದನೆ" ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ. [profile.production] inherits = "ಬಿಡುಗಡೆ" lto = true
  • Vec, String, HashMap, HashSet ಮತ್ತು VecDeque ಪ್ರಕಾರಗಳಿಗೆ try_reserve ಬಳಕೆಯನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಮೆಮೊರಿ ಹಂಚಿಕೆ ಕಾರ್ಯಾಚರಣೆಗಳ ಆವರ್ತನವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಮತ್ತು ತಪ್ಪಿಸಲು ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರದ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ಅಂಶಗಳಿಗೆ ಮುಂಚಿತವಾಗಿ ಜಾಗವನ್ನು ಕಾಯ್ದಿರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಮೆಮೊರಿ ಕೊರತೆಯಿಂದಾಗಿ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ.
  • "m!{ .. }.method()" ಮತ್ತು "m!{ .. }?" ನಂತಹ ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲಿ ಕರ್ಲಿ ಬ್ರೇಸ್‌ಗಳೊಂದಿಗೆ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ.
  • ಫೈಲ್::read_to_end ಮತ್ತು read_to_string ಕಾರ್ಯಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ.
  • ಯುನಿಕೋಡ್ ವಿವರಣೆಗೆ ಬೆಂಬಲವನ್ನು ಆವೃತ್ತಿ 14.0 ಗೆ ನವೀಕರಿಸಲಾಗಿದೆ.
  • ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿದರೆ ಎಚ್ಚರಿಕೆ ನೀಡಲು "#[ಬೇಕು_ಬಳಸಬೇಕು]" ಎಂದು ಗುರುತಿಸಲಾದ ಕಾರ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ, ಇದು ಹೊಸ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುವ ಬದಲು ಕಾರ್ಯವು ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ ಎಂದು ಭಾವಿಸುವುದರಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
  • libgccjit ಬಳಸಿಕೊಂಡು ಕೋಡ್ ಉತ್ಪಾದನೆಗೆ ಪ್ರಾಯೋಗಿಕ ಬ್ಯಾಕೆಂಡ್ ಸೇರಿಸಲಾಗಿದೆ.
  • API ಯ ಹೊಸ ಭಾಗವನ್ನು ಸ್ಥಿರತೆಯ ವರ್ಗಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ, ಇದರಲ್ಲಿ ವಿಧಾನಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಥಿರಗೊಳಿಸಲಾಗಿದೆ:
    • [ಟಿ; N]:: as_mut_slice
    • [ಟಿ; ಎನ್]::_ಸ್ಲೈಸ್
    • ಸಂಗ್ರಹಣೆಗಳು::TryReserveError
    • HashMap :: try_reserve
    • HashSet :: try_reserve
    • ಸ್ಟ್ರಿಂಗ್:: try_reserve
    • ಸ್ಟ್ರಿಂಗ್:: try_reserve_exact
    • Vec:: try_reserve
    • Vec:: try_reserve_exact
    • VecDeque:: try_reserve
    • VecDeque:: try_reserve_exact
    • ಪುನರಾವರ್ತಕ ::map_while
    • iter::MapWhile
    • proc_macro:: is_available
    • ಆದೇಶ:: get_program
    • ಆದೇಶ:: get_args
    • ಆದೇಶ::get_envs
    • ಆದೇಶ:: get_current_dir
    • ಕಮಾಂಡ್ ಆರ್ಗ್ಸ್
    • CommandEnvs
  • ಸ್ಥಿರಾಂಕಗಳ ಬದಲಿಗೆ ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಬಳಸಬಹುದೇ ಎಂದು ನಿರ್ಧರಿಸುವ “const” ಗುಣಲಕ್ಷಣವನ್ನು ಫಂಕ್ಷನ್ ಸುಳಿವು::unreachable_unchecked ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.
  • armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi ಮತ್ತು armcv7a-ಗಾಗಿ ಮೂರನೇ ಹಂತದ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. solid_asp3-eabihf ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳು. ಮೂರನೇ ಹಂತವು ಮೂಲಭೂತ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆ ಇಲ್ಲದೆ, ಅಧಿಕೃತ ನಿರ್ಮಾಣಗಳನ್ನು ಪ್ರಕಟಿಸುವುದು ಅಥವಾ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು.

ಮೂಲ: opennet.ru

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