QEMU, FFmpeg, BPG, QuickJS, TinyGL, ಮತ್ತು TinyCC ಯೋಜನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿದ ಫ್ರೆಂಚ್ ಗಣಿತಜ್ಞ ಫ್ಯಾಬ್ರಿಸ್ ಬೆಲ್ಲಾರ್ಡ್, ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಗಳಿಗಾಗಿ ಹೊಸ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎಂಜಿನ್ ಅನ್ನು ಪ್ರಕಟಿಸಿದ್ದಾರೆ - ಮೈಕ್ರೋ ಕ್ವಿಕ್ಜೆಎಸ್. ಇದು ಕೇವಲ 10 KB RAM ಅನ್ನು ಬಳಸುವಾಗ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಂಪೈಲ್ ಮಾಡಬಹುದು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. C ಲೈಬ್ರರಿಯೊಂದಿಗೆ, ಎಂಜಿನ್ ಸರಿಸುಮಾರು 100 KB ಮೆಮೊರಿಯನ್ನು ಆಕ್ರಮಿಸುತ್ತದೆ. ಇದು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬೈಟ್ಕೋಡ್ಗೆ ಕಂಪೈಲ್ ಮಾಡಬಹುದು ಮತ್ತು ಬೈಟ್ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಚಲಾಯಿಸಬಹುದು. ಯೋಜನೆಯ ಕೋಡ್ ಅನ್ನು C ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಿತರಿಸಲಾಗುತ್ತದೆ.
ಎಂಜಿನ್ ECMAScript 5 (ES2019) ವಿವರಣೆಗೆ ಹತ್ತಿರವಿರುವ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಭಾಷೆಯ ಉಪವಿಭಾಗವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಆದರೆ ಕಟ್ಟುನಿಟ್ಟಾದ ಕೋಡ್ ಅವಶ್ಯಕತೆಗಳನ್ನು ವಿಧಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಅಸಮರ್ಥ ಅಥವಾ ದೋಷ-ಪೀಡಿತ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ರಚನೆಗಳ ಬಳಕೆಯನ್ನು ನಿಷೇಧಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಜಾಗತಿಕ ವೇರಿಯೇಬಲ್ಗಳನ್ನು "var" ಕೀವರ್ಡ್ ಬಳಸಿ ಘೋಷಿಸಬೇಕು, "with" ಬಳಕೆಯನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ, ಅರೇಗಳು ಖಾಲಿಯಾಗಿರಬಾರದು, "new Number(1)" ರೂಪದ ಘೋಷಣೆಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ, ಮತ್ತು ಸ್ಥಳೀಯ ವೇರಿಯೇಬಲ್ಗಳನ್ನು eval ನಿಂದ ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ.
ಮೈಕ್ರೋ ಕ್ವಿಕ್ಜೆಎಸ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯು 2019 ರಿಂದ ಫ್ಯಾಬ್ರಿಸ್ ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ ಕ್ವಿಕ್ಜೆಎಸ್ ಎಂಜಿನ್ಗೆ ಹತ್ತಿರದಲ್ಲಿದೆ. ಮೈಕ್ರೋ ಕ್ವಿಕ್ಜೆಎಸ್ ಕ್ವಿಕ್ಜೆಎಸ್ ಎಂಜಿನ್ನಂತೆಯೇ ಕೆಲವು ಕೋಡ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ ಅದರ ವಾಸ್ತುಶಿಲ್ಪವು ಗಮನಾರ್ಹವಾಗಿ ವಿಭಿನ್ನವಾಗಿದೆ ಮತ್ತು ಕನಿಷ್ಠ ಮೆಮೊರಿ ಬಳಕೆಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಮೈಕ್ರೋ ಕ್ವಿಕ್ಜೆಎಸ್ ಟ್ರೇಸಿಂಗ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ ಕ್ವಿಕ್ಜೆಎಸ್ ಉಲ್ಲೇಖ ಎಣಿಕೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಕಸ ಸಂಗ್ರಾಹಕನ ಓವರ್ಹೆಡ್ ಹಂಚಿಕೆಯಾದ ಮೆಮೊರಿ ಬ್ಲಾಕ್ಗೆ ಕೆಲವೇ ಬಿಟ್ಗಳು. ಮೆಮೊರಿ ಹಂಚಿಕೆಯು malloc() ಲೈಬ್ರರಿ ಕಾರ್ಯದಿಂದ ಸ್ವತಂತ್ರವಾಗಿ ತನ್ನದೇ ಆದ ಹಂಚಿಕೆಯನ್ನು ಬಳಸುತ್ತದೆ.
QuickJS ಗಿಂತ ಇತರ ವ್ಯತ್ಯಾಸಗಳು: ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸುವುದಿಲ್ಲ. ವರ್ಚುವಲ್ ಯಂತ್ರ; ವಸ್ತುಗಳ ವಿಭಿನ್ನ ಆಂತರಿಕ ಪ್ರಾತಿನಿಧ್ಯ; UTF-8 ಎನ್ಕೋಡಿಂಗ್ನಲ್ಲಿ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು; ಸಂಕಲನದ ಸಮಯದಲ್ಲಿ ಪ್ರಮಾಣಿತ ಲೈಬ್ರರಿಯನ್ನು ಉತ್ಪಾದಿಸುವುದು ಮತ್ತು RAM ನಲ್ಲಿ ಕೆಲವೇ ವಸ್ತುಗಳ ರಚನೆಯೊಂದಿಗೆ ಅದನ್ನು ನಿರಂತರ ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸುವುದು; QuickJS ಗೆ ಹೋಲುವ ಪಾರ್ಸರ್, ಆದರೆ ಪುನರಾವರ್ತನೆಯನ್ನು ಬಳಸುವುದಿಲ್ಲ; ಒಂದೇ ಪಾಸ್ನಲ್ಲಿ ಬೈಟ್ಕೋಡ್ ಉತ್ಪಾದನೆ ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಸಂಯೋಜಿಸುವುದು (QuickJS ಆಪ್ಟಿಮೈಸೇಶನ್ಗಾಗಿ ಹಲವಾರು ಪಾಸ್ಗಳನ್ನು ಹೊಂದಿದೆ).
ಮೂಲ: opennet.ru
