C/C++ ನಿಂದ WebAssembly ಮತ್ತು JavaScript ಗೆ ಓಪನ್ ಸೋರ್ಸ್ ಕಂಪೈಲರ್ ಅನ್ನು ಚೀರ್ಪ್ ಮಾಡಿ

ಹುರಿದುಂಬಿಸಿ

ಚೀರ್ಪ್: ವೆಬ್‌ಗಾಗಿ C++ ಕಂಪೈಲರ್

ಇದನ್ನು ಇತ್ತೀಚೆಗೆ ಘೋಷಿಸಲಾಯಿತು ಚೀರ್ಪ್ 3.0 ಬಿಡುಗಡೆ, ಒಂದು ಕಂಪೈಲರ್ ಅದು ಯಾವುದೇ C/C++ ಕೋಡ್ ಅನ್ನು WebAssembly ಅಥವಾ JavaScript ಗೆ ಕಂಪೈಲ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಹೊಸ ಶಾಖೆಯು ವಾಣಿಜ್ಯೇತರ ಯೋಜನೆಗಳಿಗೆ GPLv2.0 ಪರವಾನಗಿ ಆಯ್ಕೆಯನ್ನು ಮತ್ತು ವಾಣಿಜ್ಯ ಯೋಜನೆಗಳಿಗೆ ಪರವಾನಗಿ ಮಾಲೀಕರನ್ನು ಒದಗಿಸುವ ಈ ಹಿಂದೆ ಅನ್ವಯಿಸಲಾದ ಸೀಮಿತ ಪರವಾನಗಿ ನೀತಿಗಿಂತ ಹೆಚ್ಚಾಗಿ ಅನುಮತಿ ನೀಡುವ Apache 2 ಮತ್ತು LLVM ಪರವಾನಗಿಗಳನ್ನು ಬಳಸಲು ಕಂಪೈಲರ್ ಮತ್ತು ಅದರ ಜೊತೆಗಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಸರಿಸಲು ಗಮನಾರ್ಹವಾಗಿದೆ.

ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ C/C++ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ರನ್ ಮಾಡಲು ಲೈಬ್ರರಿಗಳನ್ನು ಪೋರ್ಟ್ ಮಾಡಲು ಅಥವಾ ಮೊದಲಿನಿಂದಲೂ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು WebAssembly ಘಟಕಗಳನ್ನು ರಚಿಸಲು Cheerp ಅನ್ನು ಬಳಸಬಹುದು.

ಚೀರ್ಪ್ (ಚೀರ್ಪ್ 2.7) ನ ಹಿಂದಿನ ಬಿಡುಗಡೆಯಿಂದ ಒಂದು ವರ್ಷ ಕಳೆದಿದೆ, ಮತ್ತು ಈ ಹೊಸ ಆವೃತ್ತಿಯು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳೊಂದಿಗೆ ಪ್ಯಾಕ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ, ಮತ್ತೊಮ್ಮೆ, ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿ C++ ಅನ್ನು ಬಳಸುವ ಕಲೆಯ ಸ್ಥಿತಿಯನ್ನು ಚಲಿಸುತ್ತದೆ. ಮತ್ತು ಆಟಗಳು.

ಬಹು ಮುಖ್ಯವಾಗಿ, ಈ ಬಿಡುಗಡೆಯೊಂದಿಗೆ ನಾವು ಚೀರ್ಪ್‌ನ ಪರವಾನಗಿ ಮಾದರಿಯಲ್ಲಿ ಗಮನಾರ್ಹ ಬದಲಾವಣೆಯನ್ನು ಮಾಡುತ್ತಿದ್ದೇವೆ. Cheerp 3.0 ರಂತೆ, ಎಲ್ಲಾ ಕೋರ್ ಕಂಪೈಲರ್ ಘಟಕಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳು ಈಗ Apache 2.0/LLVM ಲೈಸೆನ್ಸ್‌ನ ಅಡಿಯಲ್ಲಿ ಅನುಮತಿಯಾಗಿ ಪರವಾನಗಿ ಪಡೆದಿವೆ. ಇದು ನಮ್ಮ ಹಿಂದಿನ GPLv2/ಡ್ಯುಯಲ್ ವಾಣಿಜ್ಯ ಪರವಾನಗಿ ಮಾದರಿಯಿಂದ ಆಮೂಲಾಗ್ರ ನಿರ್ಗಮನವನ್ನು ಗುರುತಿಸುತ್ತದೆ, ಯಾವುದೇ ಉದ್ದೇಶಕ್ಕಾಗಿ Cheerp 3.0 ಅನ್ನು ನಿರ್ಬಂಧವಿಲ್ಲದೆ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.

ಚೀರ್ಪ್ ಬಗ್ಗೆ

ಯೋಜನೆಯು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ C/C++ ಕೋಡ್ ಮತ್ತು JavaScript ಅನ್ನು ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಮೂಲತಃ C/C++ ನಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ ಕಾರ್ಯಗಳಿಗೆ JavaScript ಕೋಡ್‌ನಿಂದ ಪ್ರವೇಶಿಸುವ ಸಾಮರ್ಥ್ಯದೊಂದಿಗೆ, ಮತ್ತು C/C++ ಕೋಡ್‌ನಿಂದ JavaScript ಆಬ್ಜೆಕ್ಟ್‌ಗಳು, JavaScript ಲೈಬ್ರರಿಗಳು, ವೆಬ್ APIಗಳು ಮತ್ತು ಎಲ್ಲಾ DOM ವೈಶಿಷ್ಟ್ಯಗಳು, ಜೊತೆಗೆ ಮಿಶ್ರ ಬಿಲ್ಡ್‌ಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. JavaScript ಮತ್ತು ಭಾಗಗಳನ್ನು WebAssembly ಗೆ ಕಂಪೈಲ್ ಮಾಡುವ ಕೋಡ್. ಸ್ಟ್ಯಾಂಡರ್ಡ್ libc ಮತ್ತು libc++ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸುವ ಬಿಲ್ಡ್ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.

ಎಂಸ್ಕ್ರಿಪ್ಟನ್ ಕಂಪೈಲರ್, ಚೀರ್ಪ್ಗೆ ಹೋಲಿಸಿದರೆ ಹೆಚ್ಚು ಆಪ್ಟಿಮೈಸ್ಡ್ ಮತ್ತು ಕಾಂಪ್ಯಾಕ್ಟ್ WebAssembly ಮಧ್ಯಂತರ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ (ಸರಾಸರಿ, ಪರಿಣಾಮವಾಗಿ ಫೈಲ್ ಗಾತ್ರಗಳು 7% ಚಿಕ್ಕದಾಗಿದೆ.)

ಕಲ್ಪನಾತ್ಮಕವಾಗಿ, ವ್ಯತ್ಯಾಸಗಳು ವಾಸ್ತವವಾಗಿ ಕುದಿಯುತ್ತವೆ ಎಂಸ್ಕ್ರಿಪ್ಟನ್ WebAssembly ನ ಆಬ್ಜೆಕ್ಟ್ ಫಾರ್ಮ್ಯಾಟ್ ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಸಂಸ್ಕರಣೆಯ ನಂತರದ ಹಂತದಲ್ಲಿ ಬೈಂಡಿಂಗ್ ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ವೆಬ್ಅಸೆಬಲ್ (wasm-ಆಯ್ಕೆ). Cheerp LLVM ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಗ್ರಂಥಾಲಯಗಳು ಮತ್ತು ಆಬ್ಜೆಕ್ಟ್ ಫೈಲ್‌ಗಳಿಗೆ ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯವಾಗಿ ಬಳಸುತ್ತದೆ, ನಂತರದ ಪ್ರಕ್ರಿಯೆಯ ಅಗತ್ಯವಿಲ್ಲದೇ LLVM-ಮಟ್ಟದ ಮೆಟಾಡೇಟಾವನ್ನು ಬಳಸಿಕೊಂಡು ವಿಶಾಲವಾದ ಪ್ರಾಜೆಕ್ಟ್-ವೈಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳಿಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನ:
ಎಮ್‌ಸ್ಕ್ರಿಪ್ಟನ್ 3.0, LLVM ಅನ್ನು ಬಳಸಿಕೊಂಡು WebAssembly ಗಾಗಿ ಬಿಲ್ಡ್ ಟೂಲ್‌ಚೈನ್

ಸಹ, ಪೂರ್ವಭಾವಿಯಾಗಿ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು Cheerp PreExecuter ಆಪ್ಟಿಮೈಜರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ, ಉದಾಹರಣೆಗೆ, ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ಗಳನ್ನು ಪರಿವರ್ತಿಸಲು ಜಾಗತಿಕ ವಸ್ತುಗಳನ್ನು ಸ್ಥಿರವಾಗಿ ಪ್ರಾರಂಭಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಸಂಕಲನದ ಸಮಯದಲ್ಲಿ PartialExecuter ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಕಾರ್ಯದ ನಿಯತಾಂಕಗಳನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವ ಆಧಾರದ ಮೇಲೆ, ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಬಳಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಖಾತರಿಪಡಿಸುವ ಕೋಡ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.

ಚೀರ್ಪ್ ಮೆಮೊರಿಯೊಂದಿಗೆ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಕೆಲಸ ಮಾಡಲು JavaScript ಕೋಡ್ ಅನ್ನು ಸಹ ರಚಿಸಬಹುದು. ಕಸ ಸಂಗ್ರಾಹಕರಿಂದ ಮುಚ್ಚಲ್ಪಟ್ಟಿದೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಟೈಪ್ ಮಾಡಿದ ಅರೇಗಳೊಂದಿಗೆ ಸಾಂಪ್ರದಾಯಿಕ ವಿಳಾಸ ಸ್ಥಳವನ್ನು ಅನುಕರಿಸುವ ಬದಲು, ಚೀರ್ಪ್ C++ ವಸ್ತುಗಳಿಂದ JavaScript ಆಬ್ಜೆಕ್ಟ್‌ಗಳಿಗೆ ನೇರ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಏಕೆಂದರೆ JavaScript ಕಸ ಸಂಗ್ರಾಹಕವು ಬಳಕೆಯಾಗದ ವಸ್ತುಗಳನ್ನು ತೆಗೆದುಹಾಕುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದೆ. ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು, ರಚಿತವಾದ WebAssembly ಮಧ್ಯಂತರ ಕೋಡ್ ಡೇಟಾ ಕಾರ್ಯಾಚರಣೆಗಳ ಸಮಾನಾಂತರತೆಯನ್ನು ಆರ್ಕೆಸ್ಟ್ರೇಟ್ ಮಾಡಲು SIMD ವಿಸ್ತರಣೆಗಳನ್ನು ಬಳಸುತ್ತದೆ.

ಎಂಬೆಡೆಡ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಚೀರ್ಪ್ ಅನ್ನು ವೇದಿಕೆಯಾಗಿ ಬಳಸಬಹುದು C++ ನಲ್ಲಿ ಕ್ಲೈಂಟ್/ಸರ್ವರ್. ಪ್ರಸ್ತುತ ಆಚರಣೆಯಲ್ಲಿ, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಪ್ರತ್ಯೇಕ ಬ್ರೌಸರ್-ಆಧಾರಿತ ಫ್ರಂಟ್-ಎಂಡ್ ಮತ್ತು PHP, ಪೈಥಾನ್, ರೂಬಿ, ಅಥವಾ JavaScript/Node.js ನಲ್ಲಿ ಬರೆಯಲಾದ ಪ್ರತ್ಯೇಕ ಬ್ಯಾಕ್-ಎಂಡ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿದೆ.

ಒಂದೇ ಕೋಡ್ ಬೇಸ್‌ನಲ್ಲಿ ಬ್ಯಾಕೆಂಡ್ ಮತ್ತು ಮುಂಭಾಗ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುವ ಸಂಪೂರ್ಣ C++ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಚೀರ್ಪ್ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ, ಸರ್ವರ್-ಸೈಡ್ ಅನ್ನು ಸ್ಥಳೀಯ ಕೋಡ್‌ಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ. ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಪರಿವರ್ತಿಸಲಾದವುಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಪ್ರಾಜೆಕ್ಟ್ ಘಟಕಗಳ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಮೂಲ ನಕ್ಷೆ ತಂತ್ರಜ್ಞಾನವನ್ನು ಬಳಸಿಕೊಂಡು C++ ಮೂಲ ಪಠ್ಯಗಳನ್ನು ಬಳಸಿ ಕೈಗೊಳ್ಳಲಾಗುತ್ತದೆ.

ಅಂತಿಮವಾಗಿ, ನೀವು ಅದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಲು ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ, ನೀವು ವಿವರಗಳನ್ನು ಪರಿಶೀಲಿಸಬಹುದು ಕೆಳಗಿನ ಲಿಂಕ್.

ಕಂಪೈಲರ್ ಕೋಡ್ LLVM ಮತ್ತು ಕ್ಲಾಂಗ್ ಬೆಳವಣಿಗೆಗಳನ್ನು ಆಧರಿಸಿದೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ಕಂಪೈಲ್ ಮಾಡಿದ ಔಟ್‌ಪುಟ್‌ನ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.


ನಿಮ್ಮ ಅಭಿಪ್ರಾಯವನ್ನು ಬಿಡಿ

ನಿಮ್ಮ ಈಮೇಲ್ ವಿಳಾಸ ಪ್ರಕಟವಾದ ಆಗುವುದಿಲ್ಲ. ಅಗತ್ಯವಿರುವ ಜಾಗ ಗುರುತಿಸಲಾಗಿದೆ *

*

*

  1. ಡೇಟಾಗೆ ಜವಾಬ್ದಾರಿ: AB ಇಂಟರ್ನೆಟ್ ನೆಟ್ವರ್ಕ್ಸ್ 2008 SL
  2. ಡೇಟಾದ ಉದ್ದೇಶ: ನಿಯಂತ್ರಣ SPAM, ಕಾಮೆಂಟ್ ನಿರ್ವಹಣೆ.
  3. ಕಾನೂನುಬದ್ಧತೆ: ನಿಮ್ಮ ಒಪ್ಪಿಗೆ
  4. ಡೇಟಾದ ಸಂವಹನ: ಕಾನೂನುಬದ್ಧ ಬಾಧ್ಯತೆಯನ್ನು ಹೊರತುಪಡಿಸಿ ಡೇಟಾವನ್ನು ಮೂರನೇ ವ್ಯಕ್ತಿಗಳಿಗೆ ಸಂವಹನ ಮಾಡಲಾಗುವುದಿಲ್ಲ.
  5. ಡೇಟಾ ಸಂಗ್ರಹಣೆ: ಆಕ್ಸೆಂಟಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು (ಇಯು) ಹೋಸ್ಟ್ ಮಾಡಿದ ಡೇಟಾಬೇಸ್
  6. ಹಕ್ಕುಗಳು: ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ನೀವು ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಮಿತಿಗೊಳಿಸಬಹುದು, ಮರುಪಡೆಯಬಹುದು ಮತ್ತು ಅಳಿಸಬಹುದು.