ರೂಬಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆ 3.2

ರೂಬಿ 3.2.0 ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗಿದೆ, ಇದು ಕ್ರಿಯಾತ್ಮಕ ವಸ್ತು-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿದ್ದು ಅದು ಪ್ರೋಗ್ರಾಂ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ ಮತ್ತು ಪರ್ಲ್, ಜಾವಾ, ಪೈಥಾನ್, ಸ್ಮಾಲ್‌ಟಾಕ್, ಐಫೆಲ್, ಅಡಾ ಮತ್ತು ಲಿಸ್ಪ್‌ನ ಅತ್ಯುತ್ತಮ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಪ್ರಾಜೆಕ್ಟ್ ಕೋಡ್ ಅನ್ನು BSD ("2-ಕ್ಲಾಸ್ BSDL") ಮತ್ತು "ರೂಬಿ" ಪರವಾನಗಿಗಳ ಅಡಿಯಲ್ಲಿ ವಿತರಿಸಲಾಗಿದೆ, ಇದು GPL ಪರವಾನಗಿಯ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ ಮತ್ತು GPLv3 ನೊಂದಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ.

ಮುಖ್ಯ ಸುಧಾರಣೆಗಳು:

  • ವೆಬ್ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಅಥವಾ ವಾಸ್‌ಟೈಮ್‌ನಂತಹ ಸ್ವತಂತ್ರ ರನ್‌ಟೈಮ್‌ಗಳ ಅಡಿಯಲ್ಲಿ ರನ್ ಮಾಡಲು WebAssembly ಮಧ್ಯಂತರ ಕೋಡ್‌ಗೆ ಕಂಪೈಲ್ ಮಾಡುವ CRuby ಇಂಟರ್ಪ್ರಿಟರ್‌ನ ಆರಂಭಿಕ ಪೋರ್ಟ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಪ್ರತ್ಯೇಕವಾಗಿ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನೊಂದಿಗೆ ನೇರ ಸಂವಹನಕ್ಕಾಗಿ, WASI (WebAssembly System Interface) API ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, WASI ಮೇಲೆ VFS ಬೈಂಡಿಂಗ್ ಅನ್ನು ಒದಗಿಸಲಾಗಿದೆ, ಇದು ರೂಬಿ ಭಾಷೆಯಲ್ಲಿ ಸಂಪೂರ್ಣ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಒಂದೇ ವಾಸ್ಮ್ ಫೈಲ್ ರೂಪದಲ್ಲಿ ವೀಕ್ಷಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಟ್ಯುಟೋರಿಯಲ್ ಮತ್ತು ಡೆಮೊ ವೆಬ್ ಸೇವೆಗಳಾದ TryRuby ಅನ್ನು ರಚಿಸಲು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ರನ್ ಆಗುವುದನ್ನು ಬಳಸಬಹುದು. ಅಭಿವೃದ್ಧಿಯ ಪ್ರಸ್ತುತ ಹಂತದಲ್ಲಿ, ಥ್ರೆಡ್ API ಅನ್ನು ಬಳಸದ ಮೂಲಭೂತ ಮತ್ತು ಬೂಟ್‌ಸ್ಟ್ರ್ಯಾಪ್ ಪರೀಕ್ಷಾ ಸೂಟ್‌ಗಳನ್ನು ಪೋರ್ಟ್ ಯಶಸ್ವಿಯಾಗಿ ಹಾದುಹೋಗುತ್ತದೆ. ಪೋರ್ಟ್ ಫೈಬರ್, ವಿನಾಯಿತಿಗಳು ಅಥವಾ ಕಸ ಸಂಗ್ರಹಣೆಯನ್ನು ಸಹ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.
  • ರೈಲ್ಸ್ ಫ್ರೇಮ್‌ವರ್ಕ್ ಅನ್ನು ಬಳಸುವ ಮತ್ತು ಬಹಳಷ್ಟು ವಿಧಾನಗಳನ್ನು ಕರೆಯುವ ರೂಬಿ ಕಾರ್ಯಕ್ರಮಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ಉಪಕ್ರಮದ ಭಾಗವಾಗಿ Shopify ಇ-ಕಾಮರ್ಸ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನ ಡೆವಲಪರ್‌ಗಳು ರಚಿಸಿರುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿರುವ JIT ಕಂಪೈಲರ್ YJIT, ಸ್ಥಿರ ಮತ್ತು ಸಿದ್ಧವಾಗಿದೆ ಎಂದು ಘೋಷಿಸಲಾಗಿದೆ. ಉತ್ಪಾದನಾ ಬಳಕೆ. ಈ ಹಿಂದೆ ಬಳಸಿದ MJIT JIT ಕಂಪೈಲರ್‌ನಿಂದ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸವೆಂದರೆ, ಇದು ವಿಧಾನ ಸಂಸ್ಕರಣೆಯನ್ನು ಆಧರಿಸಿದೆ ಮತ್ತು ಬಾಹ್ಯ C ಕಂಪೈಲರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, YJIT ಲೇಜಿ ಬೇಸಿಕ್ ಬ್ಲಾಕ್ ಆವೃತ್ತಿಯನ್ನು (LBBV) ಬಳಸುತ್ತದೆ ಮತ್ತು ಸಂಯೋಜಿತ JIT ಕಂಪೈಲರ್ ಅನ್ನು ಹೊಂದಿದೆ. LBBV ಗೆ ಧನ್ಯವಾದಗಳು, JIT ಮೊದಲಿಗೆ ವಿಧಾನದ ಪ್ರಾರಂಭವನ್ನು ಮಾತ್ರ ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಸಮಯದ ನಂತರ ಉಳಿದವನ್ನು ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ, ಮರಣದಂಡನೆಯ ಸಮಯದಲ್ಲಿ ಬಳಸಿದ ಅಸ್ಥಿರ ಮತ್ತು ವಾದಗಳ ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ಧರಿಸಿದ ನಂತರ. YJIT Linux, MacOS, BSD, ಮತ್ತು ಇತರ UNIX ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಲ್ಲಿ x86-64 ಮತ್ತು arm64/aarch64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗೆ ಲಭ್ಯವಿದೆ.

    CRuby ಗಿಂತ ಭಿನ್ನವಾಗಿ, YJIT ಕೋಡ್ ಅನ್ನು Rust ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು ಕಂಪೈಲ್ ಮಾಡಲು rustc 1.58.0+ ಕಂಪೈಲರ್ ಅಗತ್ಯವಿರುತ್ತದೆ, ಆದ್ದರಿಂದ YJIT ಸಂಕಲನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿರುತ್ತದೆ. YJIT ಅನ್ನು ಬಳಸುವಾಗ, ವ್ಯಾಖ್ಯಾನವನ್ನು ಬಳಸುವುದಕ್ಕೆ ಹೋಲಿಸಿದರೆ yjit-ಬೆಂಚ್ ಪರೀಕ್ಷೆಯನ್ನು ನಡೆಸುವಾಗ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ 41% ಹೆಚ್ಚಳವನ್ನು ದಾಖಲಿಸಲಾಗಿದೆ.

    ರೂಬಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆ 3.2

  • ಅಸಮರ್ಥ ಮತ್ತು ದೀರ್ಘಾವಧಿಯ ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲಿ (ReDoS) ಬಾಹ್ಯ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಾಗ ಸೇವೆಯ ನಿರಾಕರಣೆಗೆ ಕಾರಣವಾಗುವ ದಾಳಿಗಳ ವಿರುದ್ಧ ಹೆಚ್ಚುವರಿ ರಕ್ಷಣೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿತ ಹೊಂದಾಣಿಕೆಯ ಅಲ್ಗಾರಿದಮ್, ಇದು ಕಂಠಪಾಠ ತಂತ್ರವನ್ನು ಬಳಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, '/^a*b?a*$/ =~ "a" * 50000 + "x"' ಅಭಿವ್ಯಕ್ತಿಯ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯವನ್ನು 10 ರಿಂದ 0.003 ಸೆಕೆಂಡುಗಳವರೆಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ. ಆಪ್ಟಿಮೈಸೇಶನ್ ಬೆಲೆಯು ಮೆಮೊರಿ ಬಳಕೆಯಲ್ಲಿ ಹೆಚ್ಚಳವಾಗಿದೆ, ಇದರ ಬಳಕೆ ಇನ್ಪುಟ್ ಡೇಟಾದ ಗಾತ್ರಕ್ಕಿಂತ ಸುಮಾರು 10 ಪಟ್ಟು ಹೆಚ್ಚಾಗಿದೆ. ಎರಡನೆಯ ಸುರಕ್ಷತಾ ಅಳತೆಯು ಸಮಯ ಮೀರುವಿಕೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸಾಮರ್ಥ್ಯವಾಗಿದೆ (ಉದಾಹರಣೆಗೆ, "Regexp.timeout = 1.0"), ಇದಕ್ಕಾಗಿ ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಮಯವನ್ನು ಹೊಂದಿರಬೇಕು.
  • ಕಾಣೆಯಾದ ಅಥವಾ ಅನಗತ್ಯವಾದ "ಅಂತ್ಯ" ಮುಚ್ಚುವಿಕೆಯ ಹೇಳಿಕೆಯೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ದೋಷಗಳ ಕಾರಣಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಹಾಯ ಮಾಡಲು ಸಿಂಟ್ಯಾಕ್ಸ್_ಸಜೆಸ್ಟ್ ಮೋಡ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಸಾಟಿಯಿಲ್ಲದ `ಅಂತ್ಯ', ಕಾಣೆಯಾದ ಕೀವರ್ಡ್ (`ಡು', `ಡೆಫ್`, `ಇಫ್`, ಇತ್ಯಾದಿ) ? 1 ವರ್ಗ ನಾಯಿ > 2 ಡಿಫ್‌ಬಾರ್ಕ್ > 3 ಎಂಡ್ 4 ಎಂಡ್
  • ದೋಷದ ಸ್ಥಳ ಮೋಡ್‌ಗೆ ವಿಧಗಳು ಮತ್ತು ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ದೋಷಗಳ ಸಂದರ್ಭದಲ್ಲಿ ವಾದಗಳನ್ನು ಗುರುತಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಉದಾಹರಣೆಗೆ: test.rb:2:`+' ನಲ್ಲಿ: Nil ಅನ್ನು ಪೂರ್ಣಾಂಕಕ್ಕೆ ಒತ್ತಾಯಿಸಲಾಗುವುದಿಲ್ಲ (ಟೈಪ್‌ಎರರ್) ಮೊತ್ತ = ary[ 0] + ಆರಿ [1] ^^^^^^
  • ಇತರ ಆರ್ಗ್ಯುಮೆಂಟ್ ಸೆಟ್ ವಿಧಾನಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸಲು ಹೊಸ ಸಿಂಟ್ಯಾಕ್ಸ್ ಸೇರಿಸಲಾಗಿದೆ: ಡೆಫ್ ಫೂ(*) ಬಾರ್(*) ಎಂಡ್ ಡೆಫ್ ಬಾಜ್(**) ಕ್ಯುಕ್ಸ್(**) ಎಂಡ್
  • Ruby_vm/mjit/compiler ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ - ಹಳೆಯ MJIT JIT ಕಂಪೈಲರ್‌ನ ರೂಪಾಂತರ, ರೂಬಿ ಭಾಷೆಯಲ್ಲಿ ಪುನಃ ಬರೆಯಲಾಗಿದೆ. MJIT ವರ್ಕರ್ ಥ್ರೆಡ್‌ನಲ್ಲಿ ಮರಣದಂಡನೆಗೆ ಬದಲಾಗಿ ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ MJIT ಮರಣದಂಡನೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸಲಾಗಿದೆ.
  • ಬಂಡ್ಲರ್ 2.4 ರಲ್ಲಿ, ಅವಲಂಬನೆ ನಿರ್ವಹಣೆಯು ಪಬ್‌ಗ್ರಬ್ ಆವೃತ್ತಿ ಫೈಂಡರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದನ್ನು ಡಾರ್ಟ್‌ಗಾಗಿ ಪಬ್ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಸಹ ಬಳಸುತ್ತಾರೆ. ಹಿಂದೆ ಬಳಸಿದ Molinillo ಅಲ್ಗಾರಿದಮ್ ರೂಬಿಜೆಮ್ಸ್‌ನಲ್ಲಿ ಬಳಸುವುದನ್ನು ಮುಂದುವರೆಸಿದೆ, ಆದರೆ ಭವಿಷ್ಯದಲ್ಲಿ PubGrub ನಿಂದ ಬದಲಾಯಿಸಲ್ಪಡುತ್ತದೆ.
  • ಅಂತರ್ನಿರ್ಮಿತ ಮತ್ತು ಪ್ರಮಾಣಿತ ಲೈಬ್ರರಿ ಜೆಮ್ ಮಾಡ್ಯೂಲ್‌ಗಳ ನವೀಕರಿಸಿದ ಆವೃತ್ತಿಗಳು.

ಮೂಲ: opennet.ru

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