Saya sedang mengerjakan spesifikasi Concrete v2. Versi pertama sudah memiliki kode yang berfungsi dan kami belajar banyak dengan menerapkannya. Sekarang saya menambahkan beberapa fitur menarik baru yang berasal dari Zig, Austral, Lean/Coq. Saya merancang bahasa sistem seputar verifikasi formal sejak awal dengan beberapa fitur menarik. Fitur: - kernel diformalkan dalam Lean 4 - tipe linier (gaya Austral, bukan affine Rust) - meminjam tanpa anotasi seumur hidup - kemampuan untuk pelacakan efek - allocator diteruskan sebagai kemampuan (gaya Zig) - murni secara default - ! untuk fungsi najis (dari Roc) Bagaimana mereka menyusun: Jenis linier adalah fondasinya. Setiap nilai dikonsumsi tepat sekali. Tidak ada kebocoran, tidak ada bebas ganda, tidak ada penggunaan setelah gratis. Keamanan memori tanpa GC. Ini lebih bertele-tele tetapi lebih konkret dan jelas daripada tipe affine. Meminjam membuat linearitas dapat digunakan. Referensikan nilai untuk sementara tanpa mengkonsumsinya. Wilayah leksikal, bukan anotasi masa pakai Rust. Kompiler menyimpulkan apa yang Rust buat Anda tulis. Kemampuan melacak efek. Fungsi yang membaca file menyatakannya. Fungsi yang mengalokasikan mendedeklarasikannya. Tidak ada deklarasi berarti tidak ada efek, dijamin. grep with(Jaringan) menemukan setiap fungsi yang menyentuh jaringan. Allocator sebagai kemampuan membuat alokasi terlihat. Kode tanpa dengan (Alloc) terbukti tidak pernah menyentuh tumpukan. Anda mengontrol alokator mana yang melayani jalur kode mana. Arena, pool, alokasi tumpukan, semuanya eksplisit. Murni secara default membalikkan model biasa. Efek memerlukan deklarasi. Kasus umum (komputasi murni) tidak memerlukan anotasi. Kernel Lean mengikatnya bersama-sama. Ketika kompiler mengatakan program Anda aman, klaim itu didukung oleh bukti.