Subrust: Rust alt kümesi için no_std, alloc'suz yorumlayıcı
Subrust, rustc ile aynı davranışı garanti eden no_std, alloc'suz, sıfır bağımlılıklı bir Rust alt kümesi yorumlayıcısı; 229 baytlık seed'den bootstrap edilebiliyor.
Subrust, Rust dilinin katı bir alt kümesini yorumlayan, bağımlılığı olmayan bir motor. Kabul ettiği her program aynı zamanda geçerli bir Rust programı olup rustc altında hem derlenir hem de aynı sonucu üretir; test paketi bu iki kuralı (L1/L2) diferansiyel olarak doğruluyor. Kütüphane #![no_std], heap tahsisi yapmıyor, #![forbid(unsafe_code)] ile işaretli ve sıfır bağımlılığa sahip.
Bu tasarım, kullanıcı tarafından düzenlenebilir kontrol betikleri gerektiren sandboxlı, deterministik ve air-gapped sistemler için düşünülmüş. Geliştirme sırasında betik yorumlanarak hot-reload yapılabiliyor, üretimde ise aynı kaynak doğrudan rustc ile derlenerek yorumlayıcı ikili dosyadan çıkarılıyor. Fuel, çağrı derinliği ve bellek sınırları sayesinde güvenilmeyen kod her zaman sonlanıyor ve yalnızca host'un izin verdiği efektleri çalıştırabiliyor. no_std/no-alloc/unsafe'siz yapısı sayesinde mikrodenetleyicilerde ve hatta kernel alanında da çalışabiliyor.
Dil, SR-seed ⊂ SR-intermediate ⊂ subrust ⊂ Rust şeklinde iç içe geçmiş üç alt kümeden oluşuyor; her katman geçerli Rust kodu. Tüm zincir, 229 baytlık bir hex0 seed'den, önceden var olan bir derleyiciye güvenmeden yeniden inşa edilebiliyor — hem klasik C tabanlı bootstrap yolu hem de C içermeyen alternatif yol birebir aynı ikiliyi üretip rustc ile çapraz doğrulanıyor.