Lëshimi i Fil-C 0.682 - një kompilator C dhe C++, që siguron një siguri të plotë të punës me kujtesën (memory safety) dhe jep garanci më të larta se shumë gjuhë të tjera, si për shembull, Rust. Projekti po zhvillohet nga Filip Pizlo, i cili nuk ka nevojë për prezantime.
Fil-C është i bazuar në kodin burimor Clang/LLVM 20.x dhe lejon kompilarin kode tradicionale në C/C++ me garancinë e parandalimit të të gjitha dobësive kryesore (out-of-bounds access, use-after-free, double free, type confusion). Ndryshe nga ASan ose MTE, Fil-C përdor një model objektesh të sigurt dhe prinzipialisht nuk përmban të meta si bloket unsafe.
Gjatë vitit të kaluar, projekti ka kaluar nga një provë konceptuale e mundësive në një mjet të plotë me një ekosistem të madh.
Karakteristikat kryesore dhe detajet teknike:
- InvisiCaps 2.0 dhe zhvillimi i modelit Capability: ĂshtĂ« rishikuar ndjeshĂ«m sistemi i autorizimeve (capabilities), qĂ« ndjek kufijtĂ« dhe llojet e treguesve pa e ndryshuar madhĂ«sinĂ« e tyre 64-bit nĂ« hapĂ«sirĂ«n e adresave C. ĂshtĂ« optimizuar ruajtja e capability, janĂ« ulur shpenzimet dhe Ă«shtĂ« shtuar mbĂ«shtetje e saktĂ« pĂ«r union, memcpy, operacione atomike me struktura dhe kalimin e mandatoreve pĂ«rmes assemblerit inline.
- Grumbulluesi paralel i plehrave (FUGC): Në grumbulluesin e plehrave në kohë ekzekutimi Grumbulluesi i Jashtëzakonshëm i Plehrave të Fil janë shtuar grumbullimi paralel, mbështetje për objekte të komplikuara si mbylljet dhe Funkcioni Indirekt GNU.
- Mbështetje për ARM64: Jemë realizuar nga zero një backend, runtime, ngarkues dhe ABI për arkitekturën ARM64 (Linux/aarch64), projekti ka kaluar në fazën e testimit beta në këtë platformë.
- Assembleri i sigurt dhe SIMD: ĂshtĂ« shtuar mundĂ«sia unike e ekzekutimit tĂ« copĂ«zave assembleri tĂ« sigurta (duke pĂ«rfshirĂ« blloqet assembleri tĂ« OpenSSL) me ruajtjen e kontrollit tĂ« autorizimeve. ĂshtĂ« realizuar mbĂ«shtetje e plotĂ« pĂ«r instruksioneve vektoriale SSE, AVX, AVX2 dhe AVX512 (duke pĂ«rfshirĂ« ngarkim/ruajtje tĂ« maskuar, zgjerim/compression, sfence dhe prefetsh).
- Analiza e Ikjes: Duke filluar nga versioni 0.671 është implementuar analiza statike e ikjeve të kujtesës nga fushat e stack-ut. Kjo është bërë ndryshimi më i madh optimizues për vitin: shpejtësia e ekzekutimit të QuickJS është rritur më shumë se 6 herë, ndërsa shumica e programeve të tjera mbi 10%.
- Kompatibiliteti me C++ dhe standardet moderne: ĂshtĂ« realizuar mbĂ«shtetje pĂ«r pĂ«rjashtime C++, forca e shfuqizimit tĂ« stack-ut, ucontext, kalimet e llogaritura, std::optional dhe treguesit pĂ«r anĂ«tarĂ«t e klasave.
- Mbrojtja nga optimizimet e rrezikshme UB të LLVM: Fil-C në fakt çaktivizoi optimizimet agresive të LLVM që varen nga Undefined Behavior (UB). Në veçanti, është detyruar të çaktivizohet aliasing i rreptë dhe është aktivizuar ekuivalenti -fwrapv, që parandalon heqjen e papërshtatshme të kontrollimeve të sigurisë nga kompajleri.
- Kalimi në LLVM/Clang 20: Kompajleri është transferuar në bazën e kodit Clang 20 (nga versioni Fil-C 0.670), që ka siguruar përmirësim të pajtueshmërisë dhe portabilitetit të kodit të gjeneruar.
- Zgjerimi i Linux ABI dhe FFI tĂ« brezit tĂ« ri: ĂshtĂ« realizuar emulimi dhe mbĂ«shtjellje tĂ« sigurta pĂ«r dhjetĂ«ra thirrje sistemike nĂ« Linux (statx, openat2, pidfd, epoll, splice, futex, timer API etj.), si dhe mbĂ«shtetje pĂ«r dlopen, dlvsym, libffi dhe layer-in FFI pĂ«r ndĂ«rveprimin me kodin e jashtĂ«m.
- Kongres i ri i thirrjeve dhe API i runtime: ABI i brendshëm i thirrjes së funksioneve është optimizuar për të reduktuar overhead-in. Janë shtuar API të reja, përfshirë zlock_runtime_threads() (ngritja e thread-eve për ndërtimin e sandviçeve strikte), si dhe profiler-i i thjeshtë i sampling dhe mjete për dump-in e memories.
- Një distribucion i plotë userspace /opt/fil: një ambient sistemor i sigurt i bazuar në glibc 2.40, duke përfshirë OpenSSH, OpenSSL, sudo, git, curl, wget, rsync, tmux, make, grep, si dhe bibliotekat sistemore (PAM, Kerberos, SELinux, ICU).
Versionet binare të gatshme shpërndahen në dy variante: autonome të bazuara në musl (filc) dhe një ambient të plotë sistemor /opt/fil për arkitekturën x86_64 dhe ARM64.
Gjithashtu tĂ« theksojmĂ« se ekziston edhe njĂ« distribucion Linux i sigurt pĂ«r memorien â Pizlix
Burimi: linux.org.ru
