Platformlar arası standart C kitaplığı olan Cosmopolitan 2.0'ın yeni sürümüyle tanışın

Lansmanı projenin yeni versiyonu "Kozmopolit 2.0"Tercümanlar ve sanal makineler kullanılmadan farklı işletim sistemlerine yönelik programları dağıtmak için kullanılabilecek standart bir C kitaplığı ve evrensel yürütülebilir dosya formatı geliştiren.

Konteyner evrensel yürütülebilir dosyalar oluşturmak için farklı sistemlerden belirli segmentleri ve başlıkları birleştirmeye dayanır Unix, Windows ve macOS'ta kullanılan birkaç farklı formatı birleştiren işletim sistemlerini tek bir dosyada birleştirin.

Bunu sağlamak için tek bir yürütülebilir dosya sistemlerde çalıştırmak Windows ve Unix, Windows PE dosyalarını kabuk betiği olarak kodlamak için bir numara kullanılır, Thompson Shell'in "#!" komut dosyası işaretleyicisini kullanmaması gerçeğinden yararlanılıyor.

Birden fazla dosya içeren programlar oluşturmak için (tüm kaynakları tek bir dosyada birleştirerek), özel olarak tasarlanmış bir ZIP dosyası biçiminde yürütülebilir bir dosya oluşturulması desteklenir. Önerilen formatın şeması (örnek hello.com uygulaması):

Ek taşınabilirlik için qemu-x86_64 çağrısı sağlanmıştır ve x86_64 mimarisi için derlenen kodun, Raspberry Pi kartları ve ARM işlemcilerle donatılmış Apple cihazları gibi x86 olmayan platformlarda çalıştırılmasına olanak tanır. Proje aynı zamanda işletim sistemi olmadan (çıplak donanım) çalışan bağımsız uygulamalar oluşturmak için de kullanılabilir. Bu tür uygulamalarda, yürütülebilir dosyaya bir önyükleyici eklenir ve program, önyüklenebilir bir işletim sistemi gibi davranır.

Cosmopolitan 2.0'ın başlıca yeni özellikleri

Bu yeni versiyonda vurgulanmıştır ki İç kaynaklara erişim şeması değiştirildi içinde bir zip dosyasından (Dosyaları açarken artık zip:.. öneki yerine normal /zip/… yolları kullanılıyor). Benzer şekilde, Windows'ta disklere erişmek için "C:/..." yerine "/c/..." gibi yolları kullanmak mümkündür.

Yeni APE şarj cihazı önerildi (Aslında Taşınabilir Yürütülebilir), evrensel yürütülebilir dosyaların biçimini tanımlar. Yeni önyükleyici programı belleğe eşlemek için mmap'i kullanır ve artık içeriği anında değiştirmiyor. Gerekirse evrensel yürütülebilir dosya, bireysel platformlara bağlı normal yürütülebilir dosyalara dönüştürülebilir.

Linux'ta binfmt_misc çekirdek modülünü kullanmak mümkündür APE programlarını çalıştırmak için. Binfmt_misc kullanımının en hızlı başlatma yöntemi olduğu ayrıca gözlemlenmiştir. uygulanması OpenBSD projesi tarafından geliştirilen rehin() ve unveil() sistem çağrılarının işlevselliği ve ayrıca C, C++, Python ve Redbean programlarındaki çağrı verilerini kullanmak için bir API'nin sağlandığının yanı sıra söz verilen bir yardımcı programın vurgulanması .com keyfi süreçleri izole etmek için.

Bunu da bulabiliriz Linux için Clock_gettime ve gettimeofday çağrılarının performansı artırıldı Sistem çağrısı işleyicisinin kullanıcı alanına aktarılmasına ve anahtar bağlamından kaçınılmasına olanak tanıyan vDSO (sanal dinamik paylaşılan nesne) mekanizmasının kullanımı nedeniyle 10 kata kadar.

Yapı Landlock Make'ı kullanıyor, GNU Make'in daha sıkı bağımlılık kontrolüne sahip bir sürümü ve programı sistemin geri kalanından yalıtmak ve önbelleğe alma verimliliğini artırmak için Landlock sistem çağrısının kullanılması. Bir seçenek olarak derleme yeteneği ve olağan GNU Markası korunur.

Öte yandan, aynı zamanda vurgulamaktadır. çoklu iş parçacığı için uygulanan işlevler: _spawn() ve _join(), farklı işletim sistemleri için belirli API'lere yönelik evrensel bağlamalardır. POSIX iş parçacıklarına yönelik desteğin uygulanmasına yönelik çalışmalar da devam etmektedir.

Öne çıkan diğer değişikliklerden:

  • Tüm işlev çağrıları ve sistem çağrıları hakkında stderr'e bilgi göndermek için yürütülebilir dosyalara “–ftrace” ve “–strace” seçenekleri desteği eklendi.
  • Linux 5.9+, FreeBSD 8+ ve OpenBSD ile uyumlu closefrom() sistem çağrısı için destek eklendi.
  • Karmaşık sayılarla çalışmaya yönelik matematiksel işlevler Musl kütüphanesinden taşındı.
  • Birçok matematiksel fonksiyon hızlandırıldı.
  • Ağ yeteneklerini devre dışı bırakan nointernet() işlevi önerilmiştir.
  • Dizeleri verimli bir şekilde eklemek için yeni işlevler eklendi: Appendd, Appendf, Appendr, Appends, Appendw, Appendz, kappendf, kvappendf ve vappendf.
  • Yükseltilmiş ayrıcalıklarla çalışacak şekilde tasarlanmış kprintf() işlev ailesinin korumalı bir sürümü eklendi.
  • SSL, SHA, curve25519 ve RSA uygulamalarının performansı önemli ölçüde iyileştirildi.

Son olarak, eğer bu konu hakkında daha fazla bilgi edinmek istiyorsanız proje kodunu bilmelisiniz.veya ISC lisansı altında dağıtılır (MIT/BSD'nin basitleştirilmiş versiyonu).


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.