Emscripten 3.0 พร้อมใช้งานแล้ว ซึ่งเป็นคอมไพเลอร์ C/C++ ถึง WebAssembly

คอมไพเลอร์ Emscripten 3.0 ได้รับการเผยแพร่แล้ว ซึ่งช่วยให้คุณสามารถคอมไพล์โค้ดในภาษา C/C++ และภาษาอื่นๆ ที่ส่วนหน้าที่ใช้ LLVM พร้อมใช้งานในโค้ดระดับกลางสากลระดับต่ำ WebAssembly สำหรับการรวมเข้ากับโปรเจ็กต์ JavaScript ในภายหลัง การรัน ในเว็บเบราว์เซอร์ และใช้ใน Node.js หรือการสร้างแอปพลิเคชันหลายแพลตฟอร์มแบบสแตนด์อโลนที่ทำงานโดยใช้รันไทม์ wasm รหัสโครงการเผยแพร่ภายใต้ใบอนุญาต MIT คอมไพเลอร์ใช้การพัฒนาจากโครงการ LLVM และใช้ไลบรารี Binaryen สำหรับการสร้างและการเพิ่มประสิทธิภาพ WebAssembly

เป้าหมายหลักของโครงการ Emscripten คือการสร้างเครื่องมือที่ช่วยให้คุณสามารถรันโค้ดบนเว็บโดยไม่คำนึงถึงภาษาการเขียนโปรแกรมที่ใช้เขียนโค้ด แอปพลิเคชันที่คอมไพล์สามารถใช้การเรียกไลบรารี C และ C++ มาตรฐาน (libc, libcxx), ส่วนขยาย C++, มัลติเธรดที่ใช้ pthreads, POSIX API และไลบรารีมัลติมีเดียจำนวนมาก API สำหรับการผสานรวมกับโค้ด Web API และ JavaScript มีให้แยกกัน

Emscripten รองรับการออกอากาศเอาต์พุตของไลบรารี SDL2 ผ่าน Canvas และยังให้การสนับสนุน OpenGL และ EGL ผ่าน WebGL ซึ่งช่วยให้คุณสามารถแปลงแอปพลิเคชันกราฟิกและเกมเป็น WebAssembly (ตัวอย่างเช่น มีพอร์ตของชุดเครื่องมือ Qt และรองรับ Unreal Engine 4 และเอ็นจิ้นเกมยูนิต, เอ็นจิ้นกระสุนจริง) นอกเหนือจากการคอมไพล์โค้ดใน C/C++ แล้ว โปรเจ็กต์ยังได้รับการพัฒนาแยกต่างหากเพื่อให้แน่ใจว่ามีการเปิดตัวล่ามและเครื่องเสมือนในเบราว์เซอร์สำหรับภาษา Lua, C#, Python, Ruby และ Perl นอกจากนี้ยังเป็นไปได้ที่จะใช้ส่วนหน้าที่ไม่ใช่ Clang กับ LLVM ซึ่งมีให้สำหรับภาษาต่างๆ เช่น Swift, Rust, D และ Fortran

การเปลี่ยนแปลงที่สำคัญใน Emscripten 3.0:

  • ไลบรารี musl C ที่ใช้ใน emscripten ได้รับการอัพเดตเป็นเวอร์ชัน 1.2.2 (เวอร์ชัน 2 ถูกใช้ในสาขา Emscripten 1.1.15.x)
  • ส่วนหนึ่งของฟังก์ชันที่ใช้เป็นหลักภายในโปรเจ็กต์ได้ถูกลบออกจากไลบรารี parseTools.js แล้ว: RemovePointing, pointingLevels, RemoveAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossibilityFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType
  • ในเทมเพลต shell.html และ shell_minimal.html เอาต์พุตของข้อความแสดงข้อผิดพลาดที่เกิดขึ้นระหว่างการดำเนินการของ emscripten และเอาต์พุตโดยแอปพลิเคชันผ่าน stderr จะถูกสลับตามค่าเริ่มต้นเพื่อใช้ console.warn แทน console.error
  • เพิ่มความสามารถในการระบุการเข้ารหัสข้อความเฉพาะที่ใช้ในชื่อไฟล์ การเข้ารหัสสามารถระบุในรูปแบบของส่วนต่อท้ายเมื่อส่งชื่อไฟล์ เช่น "a.rsp.utf-8" หรือ "a.rsp.cp1251")

ที่มา: opennet.ru

เพิ่มความคิดเห็น