2011-05-12 32 views
27

Rasgele bir Haskell kodunu güvenli bir şekilde çalıştırmanın bir yolunu arıyorum (ya da güvenli olmayan kodu çalıştırmayı reddetme).Güvenilmeyen Haskell kodunun güvenli yürütülmesi

olmalı:

  • modül/fonksiyon beyaz liste
  • Ben gibi görmeyi istiyorum yürütme
  • zaman aşımı
  • bellek kullanımı kısıtlama

Yetenekleri:

    derlenmiş kod
  • önbelleğe
  • birkaç tercüman ile çalışan yerel kod modülleri derleme iplik
  • öldürmeyeyeteneği eş zamanlı derleyici hataları için
  • karmaşık veri türü

(Dize basit mesajın Insted) Bu tür bir işlevsellikle, akılda tuttuğum fikir olan keyfi Haskell kodunu çalıştırabilen bir tarayıcı eklentisini uygulamak mümkün olacaktır.

DÜZENLEME: İki yanıtım var, ikisi de harika. Teşekkürler! Hüzünlü kısım, sadece benzer bir program olan, kullanıma hazır kütüphane olmadığı görülüyor. Yine de yararlı bir kaynak. Her neyse, sanırım 7.2.1'in piyasaya sürülmesini bekleyeceğim ve kendi programımda SafeHaskell'i kullanmaya çalışacağım. destekler

cevap

31

Biz lambdabot şimdi yaklaşık 8 yıldır bu işi yapıyorum,:

  • kontrollü bir ad
  • OS zorlanan zaman aşımları
  • yerel kod modülleri
  • önbelleğe alma
  • Eşzamanlı etkileşimli üst düzey
  • özel hata iletisi döndürür.
kuralların Bu seri belgelenmiştir

, bkz:

alınan güvenliği yaklaşımı temelinde lambdabot, Safe Haskell dil uzantısı çalışmasına ilham verdi.

derlenmiş Haskell uygulamalarının dinamik uzatma yaklaşımlar için

, Haskell, iki bildiri bkz:

+0

Cevabı kabul ediyorum çünkü bu konuda daha fazla kişi oy kullandı. Simon'ın cevabı da harika. Yanıtlarınız için teşekkürler! – Tener

+0

Alttaki iki bağlantı çalışmıyor. –

26

GHC 7.2.1'in, muhtemelen istediğinizi kapsayan SafeHaskell adlı yeni bir tesisi olacaktır. SafeHaskell, tür güvenliği sağlar (unsafePerformIO gibi şeyler yasa dışıdır) ve bir güven mekanizması oluşturur, böylece güvenli bir API'ye sahip ancak güvensiz özellikler kullanılarak uygulanan bir kütüphaneye güvenilebilir. Güvenilmeyen kod çalıştırmak için tam olarak tasarlanmıştır.

Diğer pratik yönler için (zaman aşımları ve benzeri), Don'un dediği gibi lambdabot bakmak için harika bir yer olurdu.

+0

SafeHaskell teklifinin hangi kısmı 7.2.1'de uygulanacak? Hepsi? – Tener

+0

David Terei, SafeHaskell'in derleyici bölümlerini uyguladı, yama, inceleme sıranın içinde bekliyor. Gerisi, temel paketi ve diğer kütüphaneleri uygun şekilde Güvenli ve Güvenilir kullanacak şekilde değiştiriyor. David şu an bu kısımda çalışıyor. SafeHaskell'in 7.2.1'de bazı deneysel durumlarda bulunacağını umuyorum. –

+0

@ Simon Marlow Bu gerçekten ilginç bir haber, teşekkürler. – Tener