พบกับเวอร์ชันใหม่ของ Cosmopolitan 2.0 ไลบรารี C มาตรฐานข้ามแพลตฟอร์ม

การเปิดตัว เวอร์ชันใหม่ของโครงการ "คอสโมโพลิแทน 2.0"ซึ่งพัฒนาไลบรารี C มาตรฐานและรูปแบบไฟล์ปฏิบัติการสากลที่สามารถใช้แจกจ่ายโปรแกรมสำหรับระบบปฏิบัติการต่างๆ ได้โดยไม่ต้องใช้ล่ามและเครื่องเสมือน

ภาชนะ เพื่อสร้างไฟล์ปฏิบัติการสากล อาศัยการรวมกลุ่มและส่วนหัวเฉพาะจากระบบต่างๆ เข้าด้วยกัน ระบบปฏิบัติการเป็นไฟล์เดียว โดยรวมรูปแบบต่างๆ ที่หลากหลายที่ใช้ใน Unix, Windows และ macOS

เพื่อให้แน่ใจว่า ปฏิบัติการเดียว ทำงานบนระบบ วินโดว์และยูนิกซ์ เคล็ดลับใช้เพื่อเข้ารหัสไฟล์ Windows PE เป็นเชลล์สคริปต์ ใช้ประโยชน์จากข้อเท็จจริงที่ว่า Thompson Shell ไม่ได้ใช้เครื่องหมายสคริปต์ "#!"

ในการสร้างโปรแกรมที่มีไฟล์หลายไฟล์ (รวมทรัพยากรทั้งหมดเป็นไฟล์เดียว) รองรับการสร้างไฟล์ปฏิบัติการในรูปแบบของไฟล์ ZIP ที่สร้างขึ้นเป็นพิเศษ โครงร่างของรูปแบบที่เสนอ (ตัวอย่างแอปพลิเคชัน hello.com):

มีการเรียก qemu-x86_64 เพื่อการพกพาเพิ่มเติม และอนุญาตให้คอมไพล์โค้ดสำหรับสถาปัตยกรรม x86_64 เพื่อทำงานบนแพลตฟอร์มที่ไม่ใช่ x86 เช่น บอร์ด Raspberry Pi และอุปกรณ์ Apple ที่ติดตั้งโปรเซสเซอร์ ARM โปรเจ็กต์นี้ยังสามารถใช้เพื่อสร้างแอปพลิเคชันแบบสแตนด์อโลนที่ทำงานโดยไม่มีระบบปฏิบัติการ (โลหะเปลือย) ในแอปพลิเคชันดังกล่าว bootloader จะแนบมากับไฟล์เรียกทำงาน และโปรแกรมทำหน้าที่เป็นระบบปฏิบัติการที่สามารถบู๊ตได้

ความแปลกใหม่ที่สำคัญของ Cosmopolitan 2.0

ในเวอร์ชั่นใหม่นี้จะเน้นว่า สคีมาสำหรับการเข้าถึงทรัพยากรภายในมีการเปลี่ยนแปลง Dentro จากไฟล์ zip (เมื่อเปิดไฟล์ เส้นทางปกติ /zip/… จะถูกใช้แทนการใช้คำนำหน้า zip:..) ในทำนองเดียวกัน ในการเข้าถึงดิสก์ใน Windows คุณสามารถใช้พาธเช่น "/c/…" แทน "C:/…"

มีการเสนอตัวโหลด APE ใหม่ (Actually Portable Executable) ซึ่งกำหนดรูปแบบของไฟล์ปฏิบัติการสากล ตัวโหลดบูตใหม่ ใช้ mmap เพื่อจัดสรรโปรแกรมไปยังหน่วยความจำ และไม่เปลี่ยนแปลงเนื้อหาทันทีอีกต่อไป หากจำเป็น Universal executable สามารถแปลงเป็น executables ปกติที่เชื่อมโยงกับแต่ละแพลตฟอร์ม

บน Linux คุณสามารถใช้ binfmt_misc kernel module เพื่อเรียกใช้โปรแกรม APE สังเกตว่าการใช้ binfmt_misc เป็นวิธีการเริ่มต้นที่เร็วที่สุด นอกเหนือจาก การดำเนินการของ ฟังก์ชันการทำงานของการเรียกระบบ pledge() และเปิดเผย () ที่พัฒนาโดยโปรเจ็กต์ OpenBSD รวมถึงการจัดเตรียม API สำหรับการใช้ข้อมูลการโทรในโปรแกรม C, C++, Python และ Redbean รวมถึงยูทิลิตี้จาก promise.com เพื่อแยกกระบวนการโดยพลการ

เรายังสามารถค้นหาได้ สำหรับ Linux ประสิทธิภาพของการโทร clock_gettime และ gettimeofday เพิ่มขึ้น มากถึง 10 ครั้งเนื่องจากการใช้กลไก vDSO (Virtual Dynamic Shared Object) ซึ่งอนุญาตให้ถ่ายโอนตัวจัดการการเรียกของระบบไปยังพื้นที่ผู้ใช้และข้ามบริบทของสวิตช์

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

ในทางกลับกัน มันยังเน้นที่ ฟังก์ชั่นการใช้งานสำหรับมัลติเธรด: _spawn() และ _join(), ซึ่งเป็นการเชื่อมโยงสากลกับ API เฉพาะสำหรับระบบปฏิบัติการที่แตกต่างกัน งานกำลังดำเนินการสนับสนุนเธรด POSIX

การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น:

  • เพิ่มการรองรับตัวเลือก “–ftrace” และ “–strace” ให้กับไฟล์สั่งการเพื่อส่งข้อมูลเกี่ยวกับการเรียกฟังก์ชันทั้งหมดและการเรียกระบบไปยัง stderr
  • เพิ่มการรองรับการเรียกระบบ closefrom() ที่เข้ากันได้กับ Linux 5.9+, FreeBSD 8+ และ OpenBSD
  • ฟังก์ชันทางคณิตศาสตร์สำหรับการทำงานกับจำนวนเชิงซ้อนได้ถูกย้ายจากไลบรารี Musl
  • ฟังก์ชันทางคณิตศาสตร์จำนวนมากได้รับการเร่งความเร็วขึ้น
  • มีการเสนอฟังก์ชัน nointernet() ซึ่งปิดใช้งานความสามารถของเครือข่าย
  • เพิ่มฟังก์ชันใหม่เพื่อต่อท้ายสตริงอย่างมีประสิทธิภาพ: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf และ vappendf
  • เพิ่มเวอร์ชันที่ได้รับการป้องกันของตระกูลฟังก์ชัน kprintf() ที่ได้รับการออกแบบมาเพื่อทำงานกับสิทธิ์ระดับสูง
  • ปรับปรุงประสิทธิภาพการใช้งาน SSL, SHA, curve25519 และ RSA อย่างมีนัยสำคัญ

สุดท้ายนี้ หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับมัน คุณควรรู้ว่ารหัสโครงการหรือจำหน่ายภายใต้ใบอนุญาต ISC (เวอร์ชันย่อของ MIT/BSD)


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

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

*

*

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