Hola gente!
Pregunta para Uds. que saben: Estoy trabajando en una nueva implementacion de una VM Smalltalk, basada en bytecodes, esta vez en Java, asi el bueno de @garduino que esta trabajando con Eclipse, no podra eludir ;-) (se me rehusa a tocar mi implementacion en C#, no la quiere tocar ni con un palo, y la de Javascript esta verde todavia ;-) Bueno, decia que estaba en eso, y me falta. Tengo un lexer, un parser, una lista de bytecodes implementados, un objeto primitivo, una clase con behavior primitivo, un lector de chunks, un AST en memoria, un compilador que visita el AST y lo pasa a bytecodes y codigo a ejecutar, etc.. Pero estaba yo en eso, cuando me pregunto a mi mismo, algo YAGNI, pero que quiero que alguna vez llegue a este punto: como guardar la imagen? Tengo algunas ideas, pero quisiera saber como hacen los Smalltalks. Por lo que pregunto: - Como graban la imagen? Son varias preguntas. Una, es como determinan que hay que grabar? Se me ocurren dos algoritmos: Algoritmo A: - Grabar todo lo que quede dentro del diccionario Smalltalk, y los objetos referidos desde ahi, directa o indirectamente - Y cuando se alcanza una clase, guardar allInstances Algoritmo B: - Grabar todo lo que quede dentro del diccionario Smalltalk y su grafo derivado (como en el punto 1 de A) - Grabar todo lo que este referenciado en los Execution Blocks (no se si se llaman asi) que estan en proceso Es asi? La diferencia para mi, es que en el algoritmo A tengo que implementar un allInstances, que puede variar grandemente dependiendo de la implementacion de la VM por dentro (que recuerdo, Squeak se paseaba por toda la memoria para conseguir eso, .... otras implementaciones, si tienen una Object Table, ven facilitado eso) Luego, por lo que entiendo, el grabar la imagen se puede disparar desde un metodo del objeto/diccionario Smalltalk. Vi por ahi http://stackoverflow.com/questions/4655537/how-to-save-a-pharo-image-automatically-every-hour donde usan Smalltalk snapshot: ... Pero, cual es la diferencia con usar current: Smalltalk current snapshot: .... ? Y como hacen si tienen Process ejecutandose en threads nativos? snapshot toma una "foto" a un punto determinado, y permite que los procesos sigan modificando objetos? O la mayoria de los Smalltalks tienen "green threads", paran todo, y hacen un grabado de la imagen? Gracias por cualquier info! Ah, sabiendo que el bueno de Valloud esta en esta lista, les dejo este enlace, para los que gustan de algun puzzle matematico. Es mi daily post de hoy: http://ajlopez.zoomblog.com/archivo/2012/06/25/un-problema-de-Kolmogorov-1.html Nos leemos! Angel "Java" Lopez http://ajlopez.wordpress.com http://twitter.com/ajlopez |
Hola Angel:
El 25 de junio de 2012 14:38, Angel Java Lopez <[hidden email]>escribió: > ** > > > Hola gente! > > Pregunta para Uds. que saben: > > Estoy trabajando en una nueva implementacion de una VM Smalltalk, basada > en bytecodes, esta vez en Java, asi el bueno de @garduino que esta > trabajando con Eclipse, no podra eludir ;-) (se me rehusa a tocar mi > implementacion en C#, no la quiere tocar ni con un palo, y la de Javascript > esta verde todavia ;-) > jejeje, era una buena excusa que no toco cosas MS, ahora me vas a obligar a mirarlo :) > > Bueno, decia que estaba en eso, y me falta. Tengo un lexer, un parser, una > lista de bytecodes implementados, un objeto primitivo, una clase con > behavior primitivo, un lector de chunks, un AST en memoria, un compilador > que visita el AST y lo pasa a bytecodes y codigo a ejecutar, etc.. > > Pero estaba yo en eso, cuando me pregunto a mi mismo, algo YAGNI, pero que > quiero que alguna vez llegue a este punto: como guardar la imagen? Tengo > algunas ideas, pero quisiera saber como hacen los Smalltalks. > > Por lo que pregunto: > > - Como graban la imagen? > > Son varias preguntas. Una, es como determinan que hay que grabar? > > Se me ocurren dos algoritmos: > > Algoritmo A: > - Grabar todo lo que quede dentro del diccionario Smalltalk, y los objetos > referidos desde ahi, directa o indirectamente > - Y cuando se alcanza una clase, guardar allInstances > > Algoritmo B: > - Grabar todo lo que quede dentro del diccionario Smalltalk y su grafo > derivado (como en el punto 1 de A) > - Grabar todo lo que este referenciado en los Execution Blocks (no se si > se llaman asi) que estan en proceso > > Es asi? La diferencia para mi, es que en el algoritmo A tengo que > implementar un allInstances, que puede variar grandemente dependiendo de la > implementacion de la VM por dentro (que recuerdo, Squeak se paseaba por > toda la memoria para conseguir eso, .... otras implementaciones, si tienen > una Object Table, ven facilitado eso) > > Luego, por lo que entiendo, el grabar la imagen se puede disparar desde un > metodo del objeto/diccionario Smalltalk. Vi por ahi > > http://stackoverflow.com/questions/4655537/how-to-save-a-pharo-image-automatically-every-hour > > donde usan > > Smalltalk snapshot: ... > > Pero, cual es la diferencia con usar current: > > Smalltalk current snapshot: .... ? > > Y como hacen si tienen Process ejecutandose en threads nativos? snapshot > toma una "foto" a un punto determinado, y permite que los procesos sigan > modificando objetos? O la mayoria de los Smalltalks tienen "green threads", > paran todo, y hacen un grabado de la imagen? > > Gracias por cualquier info! > > Estas son las cosas que precisamente son más interesantes pero que requieren tiempo y entonces uno usualmente usa todo sin entender mucho que pasa debajo. Si yo tuviera que hacerlo, miraría como está hecho Cuis (por lejos el Smalltalk que más entiendo), ahí estuve mirando un poco y en SystemDictionary, en particular el método #snapshot: andQuit: embedded: Un tema es que Cuis usa ActiveModel (una metáfora que prescinde del controller (corregime Juan please)) y que a mi me gusta mucho porque simplifica el desarrollo. No te estoy ayudando mucho con esto, pero es por donde empezaría a recolectar ideas...... > Ah, sabiendo que el bueno de Valloud esta en esta lista, les dejo este > enlace, para los que gustan de algun puzzle matematico. Es mi daily post de > hoy: > > http://ajlopez.zoomblog.com/archivo/2012/06/25/un-problema-de-Kolmogorov-1.html > > Nos leemos! > > Angel "Java" Lopez > http://ajlopez.wordpress.com > http://twitter.com/ajlopez > > > > Saludos! |
Gracias German, me ayudaste a ver algunas cosas.
Hmmmm... tengo en mi folder Downloads un CuisV4.sources, encuentro ahi !SystemDictionary methodsFor: 'snapshot and quit' stamp: 'JMM 11/21/2000 21:02'! snapshotEmbeddedPrimitive <primitive: 247> ^nil "indicates error writing embedded image file"! ! !SystemDictionary methodsFor: 'snapshot and quit' stamp: 'ar 7/22/2000 14:34'! snapshotPrimitive "Primitive. Write the current state of the object memory on a file in the same format as the Smalltalk-80 release. The file can later be resumed, returning you to this exact state. Return normally after writing the file. Essential. See Object documentation whatIsAPrimitive." <primitive: 97> ^nil "indicates error writing image file"! ! Curiosamente, en un PharoV10.sources que tengo por ahi, todo esto esta en SmalltalkImage, pro con stamp de 2003, hubiera esperado que el codigo de CuisV4.sources tuviera un stamp mas nuevo que PharoV10.source que lo tengo en PharoCore-1.3-13315 !SmalltalkImage methodsFor: 'snapshot and quit' stamp: 'sd 11/16/2003 13:58'! snapshotEmbeddedPrimitive <primitive: 247> ^nil "indicates error writing embedded image file"! ! !SmalltalkImage methodsFor: 'snapshot and quit' stamp: 'sd 11/16/2003 13:59'! snapshotPrimitive "Primitive. Write the current state of the object memory on a file in the same format as the Smalltalk-80 release. The file can later be resumed, returning you to this exact state. Return normally after writing the file. Essential. See Object documentation whatIsAPrimitive." <primitive: 97> ^nil "indicates error writing image file"! ! No parece que haya mas info. Es esto lo que se termina ejecutando? estas primitivas? Diferencia entre snapshotPrimitive y snapshotEmbeddedPrimitive? Donde veo el codigo de las primitivas? Nos leemos! Angel "Java" Lopez http://ajlopez.wordpress.com http://ajlopez.zoomblog.com http://twitter.com/ajlopez gh:ajlopez 2012/6/25 Germán Arduino <[hidden email]> > ** > > > Hola Angel: > > > > El 25 de junio de 2012 14:38, Angel Java Lopez <[hidden email]>escribió: > > ** >> >> >> Hola gente! >> >> Pregunta para Uds. que saben: >> >> Estoy trabajando en una nueva implementacion de una VM Smalltalk, basada >> en bytecodes, esta vez en Java, asi el bueno de @garduino que esta >> trabajando con Eclipse, no podra eludir ;-) (se me rehusa a tocar mi >> implementacion en C#, no la quiere tocar ni con un palo, y la de Javascript >> esta verde todavia ;-) >> > > > jejeje, era una buena excusa que no toco cosas MS, ahora me vas a obligar > a mirarlo :) > > > >> >> Bueno, decia que estaba en eso, y me falta. Tengo un lexer, un parser, >> una lista de bytecodes implementados, un objeto primitivo, una clase con >> behavior primitivo, un lector de chunks, un AST en memoria, un compilador >> que visita el AST y lo pasa a bytecodes y codigo a ejecutar, etc.. >> >> Pero estaba yo en eso, cuando me pregunto a mi mismo, algo YAGNI, pero >> que quiero que alguna vez llegue a este punto: como guardar la imagen? >> Tengo algunas ideas, pero quisiera saber como hacen los Smalltalks. >> >> Por lo que pregunto: >> >> - Como graban la imagen? >> >> Son varias preguntas. Una, es como determinan que hay que grabar? >> >> Se me ocurren dos algoritmos: >> >> Algoritmo A: >> - Grabar todo lo que quede dentro del diccionario Smalltalk, y los >> objetos referidos desde ahi, directa o indirectamente >> - Y cuando se alcanza una clase, guardar allInstances >> >> Algoritmo B: >> - Grabar todo lo que quede dentro del diccionario Smalltalk y su grafo >> derivado (como en el punto 1 de A) >> - Grabar todo lo que este referenciado en los Execution Blocks (no se si >> se llaman asi) que estan en proceso >> >> Es asi? La diferencia para mi, es que en el algoritmo A tengo que >> implementar un allInstances, que puede variar grandemente dependiendo de la >> implementacion de la VM por dentro (que recuerdo, Squeak se paseaba por >> toda la memoria para conseguir eso, .... otras implementaciones, si tienen >> una Object Table, ven facilitado eso) >> >> Luego, por lo que entiendo, el grabar la imagen se puede disparar desde >> un metodo del objeto/diccionario Smalltalk. Vi por ahi >> >> http://stackoverflow.com/questions/4655537/how-to-save-a-pharo-image-automatically-every-hour >> >> donde usan >> >> Smalltalk snapshot: ... >> >> Pero, cual es la diferencia con usar current: >> >> Smalltalk current snapshot: .... ? >> >> Y como hacen si tienen Process ejecutandose en threads nativos? snapshot >> toma una "foto" a un punto determinado, y permite que los procesos sigan >> modificando objetos? O la mayoria de los Smalltalks tienen "green threads", >> paran todo, y hacen un grabado de la imagen? >> >> Gracias por cualquier info! >> >> > > Estas son las cosas que precisamente son más interesantes pero que > requieren tiempo y entonces uno usualmente usa todo sin entender mucho que > pasa debajo. > > Si yo tuviera que hacerlo, miraría como está hecho Cuis (por lejos el > Smalltalk que más entiendo), ahí estuve mirando un poco y en > SystemDictionary, en particular el método #snapshot: andQuit: embedded: > > Un tema es que Cuis usa ActiveModel (una metáfora que prescinde del > controller (corregime Juan please)) y que a mi me gusta mucho porque > simplifica el desarrollo. > > No te estoy ayudando mucho con esto, pero es por donde empezaría a > recolectar ideas...... > > > >> Ah, sabiendo que el bueno de Valloud esta en esta lista, les dejo este >> enlace, para los que gustan de algun puzzle matematico. Es mi daily post de >> hoy: >> >> http://ajlopez.zoomblog.com/archivo/2012/06/25/un-problema-de-Kolmogorov-1.html >> >> Nos leemos! >> >> Angel "Java" Lopez >> http://ajlopez.wordpress.com >> http://twitter.com/ajlopez >> >> >> > Saludos! > > > > |
Hola Angel:
Te contesto medio de memoria, sin mucho research porque me corre el tiempo, sobre primitivas (más allá de los nombres de clases que hayan cambiado con el tiempo), acá hay algo: http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Tutorials/SqOnlineBook_(SOB)/englisch/sqk/sqk00096.htm y también en el swiki de squeak. Por lo del código de Cuis, posiblemente sea porque Cuis deriva de Squeak, no de Pharo, quizás eso explique lo de las fechas en el sources. Saludos y perdón x lo escueto. A la tarde veo si puedo aportar algo más. El 26 de junio de 2012 07:56, Angel Java Lopez <[hidden email]>escribió: > ** > > > Gracias German, me ayudaste a ver algunas cosas. > > Hmmmm... tengo en mi folder Downloads un CuisV4.sources, encuentro ahi > > !SystemDictionary methodsFor: 'snapshot and quit' stamp: 'JMM 11/21/2000 > 21:02'! > snapshotEmbeddedPrimitive > <primitive: 247> > ^nil "indicates error writing embedded image file"! ! > > !SystemDictionary methodsFor: 'snapshot and quit' stamp: 'ar 7/22/2000 > 14:34'! > snapshotPrimitive > "Primitive. Write the current state of the object memory on a file in the > same format as the Smalltalk-80 release. The file can later be resumed, > returning you to this exact state. Return normally after writing the file. > Essential. See Object documentation whatIsAPrimitive." > > <primitive: 97> > ^nil "indicates error writing image file"! ! > > > Curiosamente, en un PharoV10.sources que tengo por ahi, todo esto esta en > SmalltalkImage, pro con stamp de 2003, hubiera esperado que el codigo de > CuisV4.sources tuviera un stamp mas nuevo que PharoV10.source que lo tengo > en PharoCore-1.3-13315 > > !SmalltalkImage methodsFor: 'snapshot and quit' stamp: 'sd 11/16/2003 > 13:58'! > snapshotEmbeddedPrimitive > <primitive: 247> > ^nil "indicates error writing embedded image file"! ! > > !SmalltalkImage methodsFor: 'snapshot and quit' stamp: 'sd 11/16/2003 > 13:59'! > snapshotPrimitive > "Primitive. Write the current state of the object memory on a file in the > same format as the Smalltalk-80 release. The file can later be resumed, > returning you to this exact state. Return normally after writing the > file. > Essential. See Object documentation whatIsAPrimitive." > > <primitive: 97> > ^nil "indicates error writing image file"! ! > > > No parece que haya mas info. > > Es esto lo que se termina ejecutando? estas primitivas? > Diferencia entre snapshotPrimitive y snapshotEmbeddedPrimitive? > Donde veo el codigo de las primitivas? > > Nos leemos! > > Angel "Java" Lopez > http://ajlopez.wordpress.com > http://ajlopez.zoomblog.com > http://twitter.com/ajlopez > gh:ajlopez > > > 2012/6/25 Germán Arduino <[hidden email]> > >> ** >> >> >> Hola Angel: >> >> >> >> El 25 de junio de 2012 14:38, Angel Java Lopez <[hidden email]>escribió: >> >> ** >>> >>> >>> Hola gente! >>> >>> Pregunta para Uds. que saben: >>> >>> Estoy trabajando en una nueva implementacion de una VM Smalltalk, basada >>> en bytecodes, esta vez en Java, asi el bueno de @garduino que esta >>> trabajando con Eclipse, no podra eludir ;-) (se me rehusa a tocar mi >>> implementacion en C#, no la quiere tocar ni con un palo, y la de Javascript >>> esta verde todavia ;-) >>> >> >> >> jejeje, era una buena excusa que no toco cosas MS, ahora me vas a obligar >> a mirarlo :) >> >> >> >>> >>> Bueno, decia que estaba en eso, y me falta. Tengo un lexer, un parser, >>> una lista de bytecodes implementados, un objeto primitivo, una clase con >>> behavior primitivo, un lector de chunks, un AST en memoria, un compilador >>> que visita el AST y lo pasa a bytecodes y codigo a ejecutar, etc.. >>> >>> Pero estaba yo en eso, cuando me pregunto a mi mismo, algo YAGNI, pero >>> que quiero que alguna vez llegue a este punto: como guardar la imagen? >>> Tengo algunas ideas, pero quisiera saber como hacen los Smalltalks. >>> >>> Por lo que pregunto: >>> >>> - Como graban la imagen? >>> >>> Son varias preguntas. Una, es como determinan que hay que grabar? >>> >>> Se me ocurren dos algoritmos: >>> >>> Algoritmo A: >>> - Grabar todo lo que quede dentro del diccionario Smalltalk, y los >>> objetos referidos desde ahi, directa o indirectamente >>> - Y cuando se alcanza una clase, guardar allInstances >>> >>> Algoritmo B: >>> - Grabar todo lo que quede dentro del diccionario Smalltalk y su grafo >>> derivado (como en el punto 1 de A) >>> - Grabar todo lo que este referenciado en los Execution Blocks (no se si >>> se llaman asi) que estan en proceso >>> >>> Es asi? La diferencia para mi, es que en el algoritmo A tengo que >>> implementar un allInstances, que puede variar grandemente dependiendo de la >>> implementacion de la VM por dentro (que recuerdo, Squeak se paseaba por >>> toda la memoria para conseguir eso, .... otras implementaciones, si tienen >>> una Object Table, ven facilitado eso) >>> >>> Luego, por lo que entiendo, el grabar la imagen se puede disparar desde >>> un metodo del objeto/diccionario Smalltalk. Vi por ahi >>> >>> http://stackoverflow.com/questions/4655537/how-to-save-a-pharo-image-automatically-every-hour >>> >>> donde usan >>> >>> Smalltalk snapshot: ... >>> >>> Pero, cual es la diferencia con usar current: >>> >>> Smalltalk current snapshot: .... ? >>> >>> Y como hacen si tienen Process ejecutandose en threads nativos? snapshot >>> toma una "foto" a un punto determinado, y permite que los procesos sigan >>> modificando objetos? O la mayoria de los Smalltalks tienen "green threads", >>> paran todo, y hacen un grabado de la imagen? >>> >>> Gracias por cualquier info! >>> >>> >> >> Estas son las cosas que precisamente son más interesantes pero que >> requieren tiempo y entonces uno usualmente usa todo sin entender mucho que >> pasa debajo. >> >> Si yo tuviera que hacerlo, miraría como está hecho Cuis (por lejos el >> Smalltalk que más entiendo), ahí estuve mirando un poco y en >> SystemDictionary, en particular el método #snapshot: andQuit: embedded: >> >> Un tema es que Cuis usa ActiveModel (una metáfora que prescinde del >> controller (corregime Juan please)) y que a mi me gusta mucho porque >> simplifica el desarrollo. >> >> No te estoy ayudando mucho con esto, pero es por donde empezaría a >> recolectar ideas...... >> >> >> >>> Ah, sabiendo que el bueno de Valloud esta en esta lista, les dejo este >>> enlace, para los que gustan de algun puzzle matematico. Es mi daily post de >>> hoy: >>> >>> http://ajlopez.zoomblog.com/archivo/2012/06/25/un-problema-de-Kolmogorov-1.html >>> >>> Nos leemos! >>> >>> Angel "Java" Lopez >>> http://ajlopez.wordpress.com >>> http://twitter.com/ajlopez >>> >>> >>> >> Saludos! >> >> >> > > -- ============================================ Germán S. Arduino <gsa @ arsol.net> Twitter: garduino Arduino Software http://www.arduinosoftware.com PasswordsPro http://www.passwordspro.com greensecure.blogspot.com germanarduino.blogpost.com ============================================ |
Free forum by Nabble | Edit this page |