Cheerp คอมไพเลอร์โอเพ่นซอร์สจาก C/C++ ไปจนถึง WebAssembly และ JavaScript

กำลังใจ

Cheerp: คอมไพเลอร์ C++ สำหรับเว็บ

เพิ่งประกาศ เปิดตัว Cheerp 3.0ซึ่งเป็นคอมไพเลอร์ที่ อนุญาตให้คุณคอมไพล์โค้ด C/C++ ลงใน WebAssembly หรือ JavaScript. สาขาใหม่มีความโดดเด่นในการย้ายคอมไพเลอร์และไลบรารีที่เกี่ยวข้องเพื่อใช้สิทธิ์การใช้งาน Apache 2.0 และ LLVM ที่อนุญาต แทนที่จะใช้นโยบายสิทธิ์การใช้งานแบบจำกัดที่ใช้ก่อนหน้านี้ ซึ่งเสนอตัวเลือกสิทธิ์การใช้งาน GPLv2 สำหรับโครงการที่ไม่ใช่เชิงพาณิชย์และเจ้าของสิทธิ์การใช้งานสำหรับโครงการเชิงพาณิชย์

สามารถใช้ Cheerp เพื่อพอร์ตแอปพลิเคชันและไลบรารี C/C++ ที่มีอยู่เพื่อเรียกใช้ในเบราว์เซอร์ หรือเพื่อสร้างเว็บแอปพลิเคชันประสิทธิภาพสูงและคอมโพเนนต์ WebAssembly ตั้งแต่เริ่มต้น

เป็นเวลากว่าหนึ่งปีแล้วที่ Cheerp รุ่นก่อนหน้า ( Cheerp 2.7 ) และเวอร์ชันใหม่นี้อัดแน่นไปด้วยคุณสมบัติใหม่และการเพิ่มประสิทธิภาพที่ย้ายสถานะของศิลปะของการใช้ C ++ เป็นภาษาโปรแกรมสำหรับเว็บแอปพลิเคชันอีกครั้ง และ เกม.

สิ่งที่สำคัญที่สุด ในการเปิดตัวครั้งนี้ เรากำลังทำการเปลี่ยนแปลงรูปแบบลิขสิทธิ์ของ Cheerp อย่างมีนัยสำคัญ ในฐานะของ Cheerp 3.0 คอมโพเนนต์คอมไพเลอร์หลักและไลบรารีทั้งหมดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0/LLVM ซึ่งนับเป็นการออกจากรูปแบบ GPLv2/ใบอนุญาตเชิงพาณิชย์แบบคู่ก่อนหน้านี้อย่างสิ้นเชิง ทำให้สามารถใช้ Cheerp 3.0 เพื่อวัตถุประสงค์ใดก็ได้โดยไม่มีข้อจำกัด

เกี่ยวกับ เชียร์

โครงการ อนุญาตให้คุณรวมโค้ด C/C++ และ JavaScript ในเว็บแอปพลิเคชัน ด้วยความสามารถในการเข้าถึงจากโค้ด JavaScript ไปยังฟังก์ชันที่พัฒนาขึ้นใน C/C++ และจากโค้ด C/C++ ไปยังออบเจกต์ JavaScript, ไลบรารี JavaScript, Web API และคุณสมบัติ DOM ทั้งหมด รวมทั้งอนุญาตให้คุณสร้างบิลด์แบบผสม ซึ่งเป็นส่วนหนึ่งของ โค้ดที่คอมไพล์เป็น JavaScript และส่วนของ WebAssembly รองรับโครงการบิลด์ที่ใช้ไลบรารี libc และ libc++ มาตรฐาน

เมื่อเทียบกับคอมไพเลอร์ Emscripten แล้ว Cheerp สร้างโค้ดระดับกลางของ WebAssembly ที่ปรับให้เหมาะสมและกะทัดรัดยิ่งขึ้น (โดยเฉลี่ยแล้ว ขนาดไฟล์ที่ได้จะเล็กลง 7%)

ตามแนวคิดแล้ว ความแตกต่างเกิดจากข้อเท็จจริงที่ว่า ลงชื่อ ถูกใช้เป็นรูปแบบวัตถุของ WebAssembly และทำการรวมและปรับให้เหมาะสมในขั้นตอนหลังการประมวลผลของ WebAssembly (wasm-opt). Cheerp ใช้ LLVM bytecode เป็นตัวแทนระดับกลางสำหรับไลบรารีและไฟล์ออบเจกต์ ทำให้สามารถเพิ่มประสิทธิภาพทั่วทั้งโครงการได้กว้างขึ้นโดยใช้ข้อมูลเมตาระดับ LLVM โดยไม่จำเป็นต้องดำเนินการภายหลัง

บทความที่เกี่ยวข้อง:
Emscripten 3.0 เครื่องมือสร้างสำหรับ WebAssembly โดยใช้ LLVM

นอกจากนี้ Cheerp ใช้เครื่องมือเพิ่มประสิทธิภาพ PreExecuter เพื่อดำเนินการโค้ดล่วงหน้า เวลาคอมไพล์ ตัวอย่างเช่น เพื่อแปลงคอนสตรัคเตอร์ที่ใช้ในการเตรียมใช้งานออบเจกต์ส่วนกลางเป็นค่าคงที่ นอกจากนี้ ยังมีการใช้ PartialExecuter ระหว่างการคอมไพล์ ซึ่งขึ้นอยู่กับการแยกวิเคราะห์พารามิเตอร์ของฟังก์ชัน โดยจะลบโค้ดที่รับประกันว่าจะไม่ถูกนำไปใช้ในการดำเนินการ

Cheerp ยังสามารถสร้างโค้ด JavaScript เพื่อทำงานแบบไดนามิกด้วยหน่วยความจำ ครอบคลุมโดยคนเก็บขยะ โดยเฉพาะอย่างยิ่ง แทนที่จะจำลองพื้นที่แอดเดรสแบบดั้งเดิมด้วยอาร์เรย์แบบพิมพ์ Cheerp จัดเตรียมการแมปโดยตรงจากออบเจ็กต์ C++ ไปยังออบเจกต์ JavaScript ซึ่งลดการใช้หน่วยความจำเนื่องจากตัวรวบรวมขยะ JavaScript มีความสามารถในการลบออบเจ็กต์ที่ไม่ได้ใช้ เพื่อปรับปรุงประสิทธิภาพ โค้ดระดับกลางของ WebAssembly ที่สร้างขึ้นจะใช้ส่วนขยาย SIMD เพื่อจัดการการดำเนินการข้อมูลแบบขนาน

สามารถใช้ Cheerp เป็นแพลตฟอร์มในการสร้างเว็บแอปพลิเคชันแบบฝังตัว ไคลเอ็นต์/เซิร์ฟเวอร์ใน C++ ในทางปฏิบัติในปัจจุบัน เป็นเรื่องปกติที่จะพัฒนาส่วนหน้าบนเบราว์เซอร์แยกต่างหากที่เขียนด้วย JavaScript และส่วนหลังแยกต่างหากที่เขียนด้วย PHP, Python, Ruby หรือ JavaScript/Node.js

Cheerp มีวิธีในการสร้างเว็บแอปพลิเคชัน C++ ที่สมบูรณ์ซึ่งรองรับทั้งแบ็กเอนด์และฟรอนท์เอนด์ในโค้ดฐานเดียว

ในระหว่างกระบวนการบิลด์ ฝั่งเซิร์ฟเวอร์จะถูกคอมไพล์เป็นโค้ดเนทีฟ และอินเทอร์เฟซจะถูกแปลงเป็นการแสดง JavaScript การดีบักคอมโพเนนต์ของโปรเจ็กต์ทั้งหมด รวมถึงที่แปลงเป็น JavaScript ดำเนินการโดยใช้ซอร์สเท็กซ์ C++ โดยใช้เทคโนโลยีซอร์สแมป

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดได้ในไฟล์ ลิงค์ต่อไปนี้

รหัสคอมไพเลอร์อิงตามการพัฒนาของ LLVM และ Clang และรวมถึงการเพิ่มประสิทธิภาพเพิ่มเติมเพื่อปรับปรุงประสิทธิภาพและลดขนาดของเอาต์พุตที่คอมไพล์แล้ว


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา