Fil-C 0.682 — mäluhüved ilma ümberkirjutamiseta


2

Fil-C 0.682 väljaanne — C ja C++ kompilaator, mis tagab täieliku mälukaitse (memory safety) ja annab suuremad garantiid kui paljud teised keeled, näiteks Rust. Projekti arendab Filip Pizlo, kes ei vaja tutvustamist.

Fil-C põhineb Clang/LLVM 20.x koodibaasil ja võimaldab kompileerida traditsioonilist C/C++ koodi, tagades kõigi peamiste haavatavuste vältimise (out-of-bounds access, use-after-free, double free, type confusion). Erinevalt ASan'ist või MTE'st, kasutab Fil-C rangelt ohutut objekti mudelit ja põhimõtteliselt ei sisalda see auke nagu unsafe plokid.

Eelmise aasta jooksul on projekt arenenud kontseptuaalsest tõestusest täielikuks tööriistaks, millel on suur ökosüsteem.

Peamised omadused ja tehnilised detailid:

  • InvisiCaps 2.0 ja Capability mudeli areng: Oluliselt on ümber töötatud volituste süsteem (capabilities), mis jälgivad piiride ja näidikute tüüpe, muutmata nende 64-bitise suurust C-aadressiruumis. Optimiseeritud on capability talletamine, kulusid on vähendatud, samuti on lisatud korrektne tugi union'ile, memcpy'le, aatomsetele operatsioonidele struktuuridega ja mandaadi edastamiseks inline-assembleri kaudu.
  • Paralleelne prügikoristus (FUGC): Runtime prügikoristaja Fil’i uskumatu prügikoristaja on lisatud paralleelne kogu, tugi keerukatele objektidele, nagu sulud ja GNU Indirect Function.
  • ARM64 tugi: Peaaegu nullist on rakendatud back-end, runtime, loader ja ABI ARM64 (Linux/aarch64) arhitektuurile, projekt on läinud beta-testimise faasi sellel platvormil.
  • Ohutu inline-assembler ja SIMD: On lisatud ainulaadne võimalus teostada ohutuid assembleri sisendeid (sealhulgas assembleri plokid OpenSSL) säilitades volituste kontrolli. On rakendatud täielik tugi vektorialgoritmidele SSE, AVX, AVX2 and AVX512 (sealhulgas masked load/store, expand/compress, sfence ja prefetch).
  • Escape analüüs: Alates versioonist 0.671 on rakendatud staatiline analüüs mäluleketest staki aladelt. See on olnud aasta suurim optimeerimis muudatus: QuickJS käitamise kiirus on kasvanud rohkem kui 6 korda ja enamikul teistest programmidest rohkem kui 10%.
  • C++ ja kaasaegsete standarditega ühilduvus: C++ väljalülitamise toetamine, pilveseisundi võimalus, ucontext, arvutatud üleminekud, std::optional ja klassi liikmete näitajad.
  • Kaitse ohtlike UB-optimisatsioonide eest LLVM: Fil-C on sisuliselt keelatud LLVM-i agressiivsed optimisatsioonid, mis tuginevad määratlemata käitumisele (UB). Erinevalt sellest on ranget aliasingut keelatud ja sisse lülitatud sarnane -fwrapv, mis takistab kompilatsiooni vale turvavaatluse eemaldamist.
  • Üleminek LLVM/Clang 20-le: Kompilaator on viidud Clang 20 koodibaasile (Fil-C versioonist 0.670), mis tagab parema ühilduvuse ja ülekantavuse koodigeneratsioonis.
  • Linuxi ABI ja järgmise põlvkonna FFI laiendamine: On ellu viidud emulatsioon ja turvalised ümbrikud kümnete Linuxi süsteemikõnede (statx, openat2, pidfd, epoll, splice, futex, timer API jne), samuti toeks dlopen, dlvsym, libffi ja FFI-kiht välise koodiga suhtlemiseks.
  • Uus kõnede konventsioon ja tööaja API: On optimeeritud funktsioonide kõne sisemine ABI üle, et vähendada koormust. Lisatud uued API-d, sealhulgas zlock_runtime_threads() (moodustamiseks rangete liivakastide kinnitamine), samuti sisseehitatud proovivõtja profiler ja mäludumptööriistad.
  • Täielik userspace-distro /opt/fil: ohutu süsteemikeskkond, mis põhineb glibc 2.40-l, hõlmab OpenSSH-d, OpenSSL-i, sudo, git, curl, wget, rsync, tmux, make, grep ja ka süsteemiraamatukogusid (PAM, Kerberos, SELinux, ICU).

Valmis binaarsed kogumikud jagatakse kahe versioonina: iseseisev musl põhinev (filc) ja täielik süsteemikeskkond /opt/fil arhitektuuridele x86_64 ja ARM64.

Projekti GitHub

Peame märkima, et on olemas ka turvaline mäludistro Linux — Pizlix

Allikas: linux.org.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster