Tutustu Cosmopolitan 2.0:n uuteen versioon, joka on monialustainen standardi C-kirjasto

XNUMX käynnistäminen projektin uusi versio "Cosmopolitan 2.0", joka kehittää standardin C-kirjaston ja yleisen suoritettavan tiedostomuodon, jonka avulla voidaan jakaa ohjelmia eri käyttöjärjestelmille ilman tulkkeja ja virtuaalikoneita.

Säiliö yleisten suoritettavien tiedostojen luomiseen perustuu tiettyjen segmenttien ja otsikoiden yhdistämiseen eri järjestelmistä käyttöjärjestelmät yhdeksi tiedostoksi yhdistäen useita Unixissa, Windowsissa ja macOS:ssä käytettyjä muotoja.

Varmistaakseen yksi suoritettava tiedosto ajaa järjestelmissä Windows ja Unix, temppua käytetään Windows PE -tiedostojen koodaamiseen komentotulkkikomentosarjana, hyödyntää sitä tosiasiaa, että Thompson Shell ei käytä "#!"-skriptimerkkiä.

Useita tiedostoja sisältävien ohjelmien luomiseksi (yhdistämällä kaikki resurssit yhdeksi tiedostoksi) tuetaan suoritettavan tiedoston luomista erityisesti muodostetun ZIP-arkiston muodossa. Ehdotetun muodon pääpiirteet (esimerkki hello.com-sovellus):

qemu-x86_64-puhelu on tarkoitettu siirrettävyyden lisäämiseksi ja sallii x86_64-arkkitehtuuriin käännetyn koodin ajamisen muilla kuin x86-alustoilla, kuten Raspberry Pi -levyillä ja ARM-prosessoreilla varustetuilla Apple-laitteilla. Projektin avulla voidaan myös luoda itsenäisiä sovelluksia, jotka toimivat ilman käyttöjärjestelmää (paljas metalli). Tällaisissa sovelluksissa käynnistyslatain on liitetty suoritettavaan tiedostoon, ja ohjelma toimii käynnistettävänä käyttöjärjestelmänä.

Cosmopolitan 2.0:n tärkeimmät uutuudet

Tässä uudessa versiossa korostetaan sitä sisäisten resurssien käytön skeemaa on muutettu Dentro zip-tiedostosta (tiedostoja avattaessa käytetään nyt tavallisia /zip/…-polkuja zip:..-etuliiteen sijaan). Samoin levyjen käyttämiseksi Windowsissa on mahdollista käyttää polkuja kuten "/c/…" "C:/…" sijaan.

Uutta APE-kuormaajaa ehdotetaan (Actually Portable Executable), joka määrittää yleisten suoritettavien tiedostojen muodon. Uusi käynnistyslatain käyttää mmap-ohjelmaa varaamaan ohjelman muistiin eikä enää muuta sisältöä lennossa. Tarvittaessa universaali suoritettava tiedosto voidaan muuntaa tavallisiksi suoritettaviksi, jotka on sidottu yksittäisiin alustoihin.

Linuxissa on mahdollista käyttää ydinmoduulia binfmt_misc APE-ohjelmien suorittamiseen. On huomattava, että binfmt_misc:n käyttö on nopein käynnistystapa, lisäksi Toteutus OpenBSD-projektin kehittämien pledge()- ja unveil()-järjestelmäkutsujen toiminnallisuus sekä API:n tarjoaminen puhelutietojen käyttämiseen C-, C++-, Python- ja Redbean-ohjelmissa sekä apuohjelma, joka on peräisin osoitteesta lupaus.com eristää mielivaltaisia ​​prosesseja.

Voimme myös löytää sen Linuxissa clock_gettime- ja gettimeofday-kutsujen suorituskykyä on parannettu jopa 10 kertaa johtuen vDSO (Virtual Dynamic Shared Object) -mekanismin käytöstä, joka mahdollistaa järjestelmän kutsunkäsittelijän siirtämisen käyttäjätilaan ja kytkinkontekstin ohituksen.

Rakennus käyttää Landlock Make -merkkiä, GNU Make -versio, jossa on tiukempi riippuvuustarkistus ja Landlock-järjestelmäkutsu ohjelman eristämiseksi muusta järjestelmästä ja välimuistin tehokkuuden parantamiseksi. Vaihtoehtoisesti kääntäjäominaisuudet ja tavallinen GNU Make säilytetään.

Toisaalta se korostaa myös toteutetut funktiot monisäikeistykseen: _spawn() ja _join(), jotka ovat yleisiä sidoksia tiettyjen sovellusliittymien yli eri käyttöjärjestelmille. Myös POSIX-säikeiden tuen käyttöönotto on käynnissä.

Muista erottuvista muutoksista:

  • Lisätty tuki “–ftrace”- ja “–strace”-vaihtoehdoille suoritettaviin tiedostoihin tietojen lähettämiseksi kaikista funktiokutsuista ja järjestelmäkutsuista stderr:lle.
  • Lisätty tuki closefrom()-järjestelmäkutsulle, joka on yhteensopiva Linux 5.9+, FreeBSD 8+ ja OpenBSD:n kanssa.
  • Matemaattiset funktiot kompleksilukujen kanssa työskentelyyn on siirretty Musl-kirjastosta.
  • Monia matemaattisia funktioita on nopeutettu.
  • Nointernet()-funktiota ehdotetaan, mikä poistaa verkon ominaisuudet käytöstä.
  • Lisätty uusia toimintoja merkkijonojen tehokkaaseen liittämiseen: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf ja vappendf.
  • Suojattu versio kprintf()-funktioperheestä, joka on suunniteltu toimimaan korotetuilla oikeuksilla, on lisätty.
  • SSL-, SHA-, curve25519- ja RSA-toteutusten suorituskykyä parannettu merkittävästi.

Lopuksi, jos olet kiinnostunut oppimaan lisää siitä, sinun pitäisi tietää, että projektin kooditai sitä jaetaan ISC-lisenssillä (yksinkertaistettu versio MIT/BSD:stä).


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.