Upoznajte novu verziju Cosmopolitana 2.0, standardne C biblioteke za više platformi

Pokretanje nova verzija projekta "Cosmopolitan 2.0", koji razvija standardnu ​​C biblioteku i univerzalni format izvršne datoteke koji se može koristiti za distribuciju programa za različite operativne sisteme bez upotrebe interpretatora i virtuelnih mašina.

Kontejner za generiranje univerzalnih izvršnih datoteka oslanja se na kombinovanje specifičnih segmenata i zaglavlja iz različitih sistema operativne sisteme u jednu datoteku, kombinujući nekoliko različitih formata koji se koriste u Unixu, Windowsu i macOS-u.

Da bi se to osiguralo jedna izvršna datoteka pokrenuti na sistemima Windows i Unix, trik se koristi za kodiranje Windows PE datoteka kao shell skripte, koristeći prednost činjenice da Thompson Shell ne koristi marker skripte "#!".

Za kreiranje programa koji uključuju više datoteka (kombinirajući sve resurse u jednu datoteku), podržano je generiranje izvršne datoteke u obliku posebno izrađene ZIP arhive. Pregled predloženog formata (primjer aplikacije hello.com):

Poziv qemu-x86_64 je osiguran za dodatnu prenosivost i dozvoljava kodu kompajliranom za arhitekturu x86_64 da radi na platformama koje nisu x86, kao što su Raspberry Pi ploče i Apple uređaji opremljeni ARM procesorima. Projekat se takođe može koristiti za kreiranje samostalnih aplikacija koje rade bez operativnog sistema (goli metal). U takvim aplikacijama, pokretač je prikačen izvršnoj datoteci, a program se ponaša kao operativni sistem za pokretanje.

Glavne novine Cosmopolitana 2.0

U ovoj novoj verziji je istaknuto da promijenjena je šema za pristup internim resursima dentro iz zip datoteke (kada otvarate datoteke, sada se koriste uobičajene /zip/… putanje umjesto prefiksa zip:..). Slično, za pristup diskovima u Windows-u, moguće je koristiti putanje kao što je "/c/…" umjesto "C:/…".

Predložen je novi APE utovarivač (Actually Portable Executable), koji definira format univerzalnih izvršnih datoteka. Novi bootloader koristi mmap da dodijeli program u memoriju i više ne mijenja sadržaj u hodu. Ako je potrebno, univerzalni izvršni fajl se može pretvoriti u obične izvršne datoteke vezane za pojedinačne platforme.

Na Linuxu je moguće koristiti modul kernela binfmt_misc za pokretanje APE programa. Napominje se da je korištenje binfmt_misc najbrža metoda pokretanja, pored Implementacija funkcionalnost sistemskih poziva pledge() i unveil(), koje je razvio OpenBSD projekat, kao i pružanje API-ja za korištenje podataka o pozivima u C, C++, Python i Redbean programima, kao i uslužni program sa obećanja.com da se izoluju proizvoljni procesi.

To takođe možemo pronaći za Linux, performanse poziva clock_gettime i gettimeofday su povećane do 10 puta zahvaljujući korištenju vDSO (Virtual Dynamic Shared Object) mehanizma, koji omogućava prijenos rukovatelja sistemskim pozivima u korisnički prostor i zaobilaženje konteksta prekidača.

Izgradnja koristi Landlock Make, izdanje GNU Make sa strožom provjerom zavisnosti i korištenjem Landlock sistemskog poziva za izolaciju programa od ostatka sistema i poboljšanje efikasnosti keširanja. Kao opcija, sposobnost kompajlera i uobičajeni GNU Make su sačuvani.

S druge strane, također naglašava implementirane funkcije za multithreading: _spawn() i _join(), koji su univerzalna veza za specifične API-je za različite operativne sisteme. U toku je i rad na implementaciji podrške za POSIX niti.

Od ostalih promjena koje se ističu:

  • Dodata podrška za opcije “–ftrace” i “–strace” izvršnim datotekama za slanje informacija o svim pozivima funkcija i sistemskim pozivima na stderr.
  • Dodata podrška za closefrom() sistemski poziv kompatibilan sa Linux 5.9+, FreeBSD 8+ i OpenBSD.
  • Matematičke funkcije za rad s kompleksnim brojevima premještene su iz Musl biblioteke.
  • Mnoge matematičke funkcije su ubrzane.
  • Predložena je funkcija nointernet(), koja onemogućuje mrežne mogućnosti.
  • Dodane su nove funkcije za efikasno dodavanje stringova: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf i vappendf.
  • Dodata je zaštićena verzija kprintf() porodice funkcija, dizajnirana za rad s povišenim privilegijama.
  • Značajno poboljšane performanse SSL, SHA, curve25519 i RSA implementacija.

Konačno, ako ste zainteresirani da saznate više o tome, trebali biste znati da je kod projektaili se distribuira pod ISC licencom (pojednostavljena verzija MIT/BSD).


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.