ಕ್ರಿಸ್ಟಲ್ 1.16 ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ, ಅದರ ಅಭಿವರ್ಧಕರು ರೂಬಿ ಭಾಷೆಯಲ್ಲಿ ಅಭಿವೃದ್ಧಿಯ ಅನುಕೂಲತೆಯನ್ನು ಸಿ ಭಾಷೆಯ ಹೆಚ್ಚಿನ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದಾರೆ. ಕ್ರಿಸ್ಟಲ್ನ ಸಿಂಟ್ಯಾಕ್ಸ್ ರೂಬಿಗೆ ಹತ್ತಿರದಲ್ಲಿದೆ, ಆದರೆ ಸಂಪೂರ್ಣವಾಗಿ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ, ಆದಾಗ್ಯೂ ಕೆಲವು ರೂಬಿ ಪ್ರೋಗ್ರಾಂಗಳು ಮಾರ್ಪಾಡುಗಳಿಲ್ಲದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. ಕಂಪೈಲರ್ ಕೋಡ್ ಅನ್ನು ಕ್ರಿಸ್ಟಲ್ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು ಅಪಾಚೆ 2.0 ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಿತರಿಸಲಾಗಿದೆ.
ಭಾಷೆಯು ಸ್ಟ್ಯಾಟಿಕ್ ಟೈಪ್ ಚೆಕ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದನ್ನು ಕೋಡ್ನಲ್ಲಿನ ವೇರಿಯೇಬಲ್ಗಳ ಪ್ರಕಾರಗಳು ಮತ್ತು ವಿಧಾನದ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಅಗತ್ಯವಿಲ್ಲದೇ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಕ್ರಿಸ್ಟಲ್ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್ಗಳಾಗಿ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ, ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. ಕ್ರಿಸ್ಟಲ್ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ, C ನಲ್ಲಿ ಬರೆಯಲಾದ ಬೈಂಡಿಂಗ್ಗಳನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿದೆ. ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ನ ಸಮಾನಾಂತರೀಕರಣವನ್ನು "ಸ್ಪಾನ್" ಕೀವರ್ಡ್ ಬಳಸಿ ನಡೆಸಲಾಗುತ್ತದೆ, ಇದು ಮುಖ್ಯ ಥ್ರೆಡ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸದೆ ಅಸಮಕಾಲಿಕ ಮೋಡ್ನಲ್ಲಿ ಹಿನ್ನೆಲೆ ಕಾರ್ಯವನ್ನು ಚಲಾಯಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಫೈಬರ್ಗಳು ಎಂದು ಕರೆಯಲ್ಪಡುವ ಹಗುರವಾದ ಥ್ರೆಡ್ಗಳ ರೂಪದಲ್ಲಿ.
ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯವು CSV, YAML ಮತ್ತು JSON ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಪರಿಕರಗಳು, HTTP ಸರ್ವರ್ಗಳನ್ನು ರಚಿಸುವ ಘಟಕಗಳು ಮತ್ತು ವೆಬ್ಸಾಕೆಟ್ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಂತೆ ವಿಶಿಷ್ಟ ಕಾರ್ಯಗಳ ಗುಂಪನ್ನು ಒದಗಿಸುತ್ತದೆ. ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ, ನೀವು "ಕ್ರಿಸ್ಟಲ್ ಪ್ಲೇ" ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು, ಇದು ಕ್ರಿಸ್ಟಲ್ ಕೋಡ್ನ ಸಂವಾದಾತ್ಮಕ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಗಾಗಿ ವೆಬ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು (ಡೀಫಾಲ್ಟ್ ಆಗಿ ಲೋಕಲ್ಹೋಸ್ಟ್:8080) ಉತ್ಪಾದಿಸುತ್ತದೆ.
ಪ್ರಮುಖ ಬದಲಾವಣೆಗಳು:
- ಪ್ರತ್ಯೇಕ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಂದರ್ಭಗಳಲ್ಲಿ (ಎಕ್ಸಿಕ್ಯೂಶನ್ ಕಾಂಟೆಕ್ಸ್ಟ್ಗಳು) ಹಗುರವಾದ ಥ್ರೆಡ್ಗಳನ್ನು (ಫೈಬರ್) ಚಲಾಯಿಸಲು ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಕಾರ್ಯಗಳ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಸಮಾನಾಂತರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ - ಒಂದು ಸಂದರ್ಭದಲ್ಲಿ ಥ್ರೆಡ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವುದರಿಂದ ಇನ್ನೊಂದರಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ನಿಲ್ಲುವುದಿಲ್ಲ. mt_context = ಫೈಬರ್::ExecutionContext::MultiThreaded.new("worker-threads", 4) 10.times do mt_context.spawn do do_something end end gtk = ಫೈಬರ್::ExecutionContext::Isolated.new("Gtk") do Gtk.main end gtk.wait
- Slice.literal ವಿಧಾನವು ಈಗ ಸ್ಲೈಸ್ನಲ್ಲಿರುವ ಅಂಶಗಳಿಗೆ ಟೈಪ್ ಇನ್ಫರೆನ್ಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಇಂಟರ್ಪ್ರಿಟರ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸುತ್ತದೆ.
- ಮ್ಯಾಕ್ರೋಗಳ ಗಾತ್ರ ಮತ್ತು ಜೋಡಣೆಯು ಸ್ಥಿರ ಪ್ರಕಾರಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
- ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯಕ್ಕೆ ಹೊಸ ವಿಧಾನಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ: ಇಂಡೆಕ್ಸಬಲ್#ಫೈಂಡ್, #ಫೈಂಡ್!, ಈವೆಂಟ್ಲೂಪ್#ವೇಟ್_ರೀಡಬಲ್, ಮತ್ತು #ವೇಟ್_ರೈಟಬಲ್.
- ಕಂಪೈಲರ್ "-o" ಆಯ್ಕೆಯ ದೀರ್ಘ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿದೆ, "--output", ಮತ್ತು ಫೈಲ್ ಬದಲಿಗೆ ಡೈರೆಕ್ಟರಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ (ಕೋಡ್ನೊಂದಿಗೆ ಫೈಲ್ನ ಹೆಸರಿಗೆ ಅನುಗುಣವಾಗಿ ಫೈಲ್ ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ).
- ದಸ್ತಾವೇಜನ್ನು ಜನರೇಟರ್ ಈಗ ಖಾಸಗಿ ಮತ್ತು ಸಂರಕ್ಷಿತ ವಸ್ತುಗಳನ್ನು ಹಾಗೂ ಗ್ರಂಥಾಲಯ ಬೈಂಡಿಂಗ್ಗಳಲ್ಲಿರುವ ವಸ್ತುಗಳನ್ನು (ಲಿಬ್, ಫನ್, ಯೂನಿಯನ್, ಕಸ್ಟ್ರಕ್ಟ್, ಬಾಹ್ಯ, ಪ್ರಕಾರ) ದಸ್ತಾವೇಜನ್ನು ಸೇರಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದೆ.
- "ಫೈಲ್.ಮ್ಯಾಚ್?" ನಲ್ಲಿ ವಿಧಾನ ಹೊಸ ಫೈಲ್ ಪಾತ್ ಹೊಂದಾಣಿಕೆಯ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ, ಇದು ಕೆಲವು ಸಮಸ್ಯೆಗಳು ಮತ್ತು ಮಿತಿಗಳನ್ನು ನಿವಾರಿಸಿದೆ. ಉದಾಹರಣೆಗೆ, ಅಕ್ಷರ ತಪ್ಪಿಸಿಕೊಳ್ಳುವಿಕೆ ("\\t" ಮಾಸ್ಕ್ "\t" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಆದರೆ "t" ಅಕ್ಷರಕ್ಕೆ ಅಲ್ಲ), ಮಾರ್ಗ ವಿಭಜನೆ ("a**" ಮಾಸ್ಕ್ "ab" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಆದರೆ "ab/c" ಗೆ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ, ಆದರೆ "**/a" ಮಾಸ್ಕ್ "a" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ), ನೆಸ್ಟೆಡ್ ಪ್ಯಾಟರ್ನ್ಗಳು ("{[}]}" ಮಾಸ್ಕ್ "}" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ), ಮತ್ತು ಶ್ರೇಣಿಗಳು ("[a-]" ಮಾಸ್ಕ್ "-" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ) ಈಗ ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸಲಾಗಿದೆ.
- "?" ಎಂಬ ಪ್ರತ್ಯಯಗಳು ವ್ಯಾಖ್ಯಾನಗಳು (ಡೆಫ್ಸ್), ಮ್ಯಾಕ್ರೋಗಳು ಮತ್ತು ಬ್ಲಾಕ್ಗಳಲ್ಲಿನ ನಿಯತಾಂಕಗಳ ಹೆಸರುಗಳಲ್ಲಿ ಅಸಮ್ಮತಿಗೊಂಡಿವೆ. ಮತ್ತು "!".
- ಎಣಿಸಬಹುದಾದ#ಮೊತ್ತ ಮತ್ತು #ಉತ್ಪನ್ನ ವಿಧಾನಗಳಲ್ಲಿ, ಅಂಶ ಪ್ರಕಾರವು ಒಕ್ಕೂಟವಾಗಿದ್ದರೆ ರಿಟರ್ನ್ ಪ್ರಕಾರದ ಸ್ವಯಂಚಾಲಿತ ನಿರ್ಣಯವನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ. ಈ ವಿಧಾನಗಳನ್ನು ಕರೆಯುವಾಗ, ನೀವು ಈಗ ಪ್ರಕಾರವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, “[1, 10000000000_u64].sum” ಬದಲಿಗೆ ನೀವು “[1, 10000000000_u64].sum(0_u64)” ಎಂದು ಬರೆಯಬೇಕು.
- HTTP::Request URL ಭಾಗಗಳ ಸರಿಯಾದ ಪಾರ್ಸಿಂಗ್ ಅನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.
- LLVM 20 ಕಂಪೈಲರ್ ಸೂಟ್ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
- LLVM::ABI ಮತ್ತು LLVM::TargetMachine#abi ಗೆ ಕರೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ.
ಮೂಲ: opennet.ru
