Penso che questa sia un'idea di dinamite e una funzione che mi piacerebbe avere! Hai pensato a come vorresti interfacciarti con la funzione?
obj1 = Foo()
compiler.Recompile(Foo, '/some/path/myapp/newsrc/foo.blah');
obj2 = Foo()
// Would this be True?
type(obj1) == type(obj2)
Suppongo che ci si aspetti che le istanze esistenti rimangano invariate dal ricompilare? Sembra che sarebbe più semplice con le funzioni, a patto che abbiano mantenuto lo stesso prototipo, ma farlo con le classi sembra essere un po 'disordinato.
Inoltre, cosa fare della filettatura?
Thread.start(wait 1; bar();); // bar is a function
compiler.Recompile(bar, '/some/path/myapp/newsrc/bar.blah');
Diciamo che nella nostra discussione abbiamo cominciare a chiamare "bar" durante la ricompilazione. Il blocco delle chiamate viene eseguito fino a quando la ricompilazione non viene completata e quindi chiama la nuova funzione? La vecchia funzione esiste ancora fino al completamento della compilazione? Cosa succede se abbiamo un puntatore a funzione, dopo la ricompilazione, dove punta? Alla funzione originale o alla nuova?
Qualcuno ha qualche idea su come questo potrebbe essere implementato in modo stretto?
fonte
2010-08-31 01:54:34
Ho intenzione di farlo con gli oggetti. L'idea è che aggiorniamo quando nessun codice è in esecuzione in oggetti aggiornabili. Quindi serializziamo tutte le istanze e facciamo l'aggiornamento e il ricollegamento. Quindi ricrea tutte le istanze, deserializza e aggiorna tutti i puntatori. Voila, pezzo di torta :-) – BarsMonster