Çok oyunculu bir programlama oyunu için, oyuncular tarafından sunulan çoklu, bağımsız kaynak ağaçlarının derlenmesini destekleyen Scala için bir arka plan derleme sunucusunda çalışıyorum. Ben şimdi ideal sunucu parallelize istiyorumScala derleyicisinin reentrantı var mı?
val run = new compilerGlobal.Run
run.compile(sourceFilePathList)
aracılığıyla bireysel derleme işleri çalıştıran sonra
val compilerGlobal = new Global(settings, reporter)
ve üzeri Global
derleyici nesnesini başlatarak derleyici yeniden yüklemeden hızlı, sıralı derlemeleri çalışan başardı (Örneğin, birden fazla derlemeyi eşzamanlı olarak çalıştırır), ancak yine de derleyiciyi yeniden yüklemeden (öncelikle lib'i yeniden ayrıştırmaktan kaçınmak için) her defasında sıfırdan. Bu mümkün mudur, yani yukarıda gösterilen ikinci kısımdır (güvenli bir şekilde :-) yeniden giriş yapıyor mu, yoksa küresel durumu koruyor mu?) Eğer değilse, deneyebileceğim başka bir şey var mı? Şu anda Scala 2.9.1'i desteklemeye odaklandım.
Bir başlangıç için sembol tablosunun 'genel durumunu' tutar. – EJP
Bir derleyici havuzu havuzu kullanın. – retronym
@retronym Öneri için teşekkürler. Ancak asıl sorum, "ne kadar geri dönüşebilirim?" Yorumunuz, iyi bir başlangıç olan (bellek içi) derleyici örnekleri (Global Sınıf) arasında global paylaşılmış bir durum olmadığını gösterir. Fakat aynı zamanda bireyin DO paylaşım durumunu (ayrıştırılmış standart lib'in ötesinde) çalıştırdığını mı düşünüyorsunuz? Daha fazla bilgiye ihtiyacım var. –