« Tüm yayınlar

Rust, Allocator API'sini Box ve Vec için Kararlı Hale Getirdi

Rust, Allocator trait'ini ve Box/Vec için özel ayırıcı desteğini kararlı hale getirdi; güvenlik kuralları sıkılaştırıldı, soundness hataları giderildi.

Rust'ın allocator_api özelliği, Allocator trait'i ile Box/Vec için özel bellek ayırıcı desteğini kapsayan bir çekirdek MVP alt kümesiyle kararlı (stable) duruma geldi. wg-allocators ve RFC 1398 öncülüğünde yürütülen çalışma ikiye bölündü: stabilize edilen yüzey artık kullanılabilir hale geldi, kalan işlevsellik ise yeni allocator_ext özelliğine taşındı.

Kararlı hale gelen trait, güvenlik gereksinimlerini önemli ölçüde sıkılaştırıyor. Uygulayıcılar artık drop veya mutable erişim sırasında ayrılmış belleği geçersiz kılamayacak ve Allocator metotlarından veya destructor'lardan asla panic ile unwind edemeyecek. Daha önce zımnen varsayılan ama düzgün belgelenmemiş bir Clone ile ilişkili invariant, denetlenemez bulunduğu için kaldırıldı ve gelecekte unstable bir marker trait'e bırakıldı. Allocator artık dyn-uyumlu; Box ve Vec, özel ayırıcılar için yeni constructor'lar ve erişim metotları, ayrıca referanslar, Box, Rc ve Arc için blanket implementasyonlar kazandı.

Stabilizasyon süreci, özellikle Box'ın ayırıcı üzerindeki kovaryansının Clone ve Pin ile etkileşiminde gerçek soundness hataları ortaya çıkardı. Bu nedenle özel ayırıcılarla Box::into_pin kullanımı şimdilik ertelendi; Global ve System için uygulanacak yeni unstable StaticAllocator marker trait'i pin-safety garantilerini kontrol edecek, mevcut noalias hack'i de yakında gelecek LLVM allocator intrinsic'leriyle uyumlu çalışacak unstable bir NativeAllocator wrapper'ına taşınacak.

Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz