Cheerp 3.0, C/C++ JavaScript tərtibçisinə, Apache 2.0 və LLVM lisenziyalarına köçdü

Sizə istənilən C/C++ kodunu WebAssembly və ya JavaScript-də tərtib etməyə imkan verən Cheerp 3.0 kompilyatoru təqdim olunub. Yeni filial qeyri-kommersiya layihələri üçün GPLv2.0 lisenziya seçimini və kommersiya layihələri üçün mülkiyyət lisenziyasını təklif edərək, əvvəllər tətbiq edilmiş məhdud lisenziyalaşdırma siyasəti əvəzinə tərtibçini və onu müşayiət edən kitabxanaları Apache 2 və LLVM icazəli lisenziyalarından istifadə etməyə köçürməsi ilə diqqət çəkir. Kompilyator kodu LLVM və Clang-ın inkişaflarına əsaslanır və performansı yaxşılaşdırmaq və tərtib edilmiş nəticənin ölçüsünü azaltmaq üçün əlavə optimallaşdırmaları ehtiva edir.

Cheerp həm mövcud C/C++ kitabxanalarını, həm də brauzerdə işləmək üçün proqramları portlaşdırmaq, həm də sıfırdan yüksək performanslı veb proqramları və WebAssembly komponentlərini yaratmaq üçün istifadə edilə bilər. Layihə C/C++ və JavaScript kodunu bir veb proqramda birləşdirməyə imkan verir ki, bu da JavaScript kodundan C/C++-da hazırlanmış funksiyalara və C/C++ kodundan JavaScript obyektlərinə, JavaScript-ə daxil olmaq imkanı verir. kitabxanalar, Web API və bütün funksiyalar DOM. Kodların bir hissəsi JavaScript-də, bəziləri isə WebAssembly-də tərtib edilmiş birləşdirilmiş montajlar yaratmağa icazə verilir. O, libc və libc++ standart kitabxanalarından istifadə edən tikinti layihələrini dəstəkləyir.

Emscripten kompilyatoru ilə müqayisədə Cheerp daha optimallaşdırılmış və yığcam WebAssembly aralıq kodunu yaradır (orta hesabla nəticələnən faylların ölçüsü 7% kiçikdir). Konseptual olaraq, fərqlər Emscripten-in WebAssembly obyekt formatı kimi istifadə edilməsi və WebAssembly-nin sonrakı emal mərhələsində (wasm-opt) bağlama və optimallaşdırmanı yerinə yetirməsi faktı ilə nəticələnir. Cheerp, LLVM bayt kodunu kitabxanalar və obyekt faylları üçün aralıq təmsilçi kimi istifadə edir, bu da LLVM səviyyəli metadatadan sonrakı emal tələb etmədən istifadə edən daha geniş layihə miqyasında optimallaşdırmalara imkan verir.

Bundan əlavə, Cheerp, məsələn, qlobal obyektləri sabitlərə işə salmaq üçün istifadə olunan konstruktorları çevirmək üçün tərtib zamanı kodun qabaqcadan icrasını təmin edən PreExecuter optimallaşdırıcısından istifadə edir. Həmçinin, kompilyasiya edərkən, funksiya parametrlərinin təhlilinə əsaslanaraq, icra zamanı istifadə olunmayacağına zəmanət verilən kodu silən PartialExecuter istifadə olunur.

Cheer həmçinin zibil kollektorunun əhatə etdiyi yaddaşla dinamik işləmək üçün JavaScript kodu yarada bilər. Xüsusilə, ənənəvi ünvan məkanını tiplənmiş massivlərlə təqlid etmək əvəzinə, Cheerp C++ obyektlərinin JavaScript obyektləri ilə birbaşa xəritələşdirilməsini təmin edir ki, bu da yaddaş sərfini azaldır, çünki JavaScript zibil toplayıcısı istifadə olunmamış obyektləri silmək qabiliyyətinə malikdir. Performansı yaxşılaşdırmaq üçün yaradılan WebAssembly aralıq kodu məlumat əməliyyatlarının paralelləşdirilməsini təşkil etmək üçün SIMD genişləndirmələrindən istifadə edir.

Cheerp C++-da inteqrasiya olunmuş müştəri/server veb proqramlarının yaradılması üçün platforma kimi istifadə edilə bilər. Mövcud təcrübədə JavaScript-də yazılmış ayrıca brauzer əsaslı frontend və PHP, Python, Ruby və ya JavaScript/Node.js-də yazılmış ayrıca back-end hazırlamaq adi haldır. Cheerp tək kod bazasında backend və frontendləri dəstəkləyən tam C++ veb proqramlarını qurmaq üçün vasitələr təqdim edir. Kompilyasiya prosesi zamanı server tərəfi yerli koda tərtib edilir və interfeys JavaScript təmsilçiliyinə çevrilir. JavaScript-ə çevrilənlər də daxil olmaqla, bütün layihə komponentlərinin sazlanması, Mənbə Xəritə texnologiyasından istifadə etməklə C++ mənbə mətnlərindən istifadə etməklə həyata keçirilir (səhv baş verərsə, siz C++ kodunun bölməsini, C++ kodunda kəsilmə nöqtələrinin təyin edilməsini və sətir-sətir addımını görə bilərsiniz. -C++ kodunun addım-addım icrası dəstəklənir).

Mənbə: opennet.ru

Добавить комментарий