Mariano,
Where do I find the class FFITypeArray? ... I have started the work to merge your 5.0 work and I'm missing that class ... I just did a fresh download of Pharo5.0 ... what am I missing? Dale On 04/01/2016 06:29 AM, Mariano
Martinez Peck wrote:
-- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
I've now loaded the #stable ConfigurationOfUnifiedFFI and still no
dice (latest version) ... is there a reason you didn't add the
configuration to the baseline?
Dale On 04/05/2016 03:21 PM, Dale Henrichs
wrote:
Mariano, -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Okay, I've manually pulled in Esteban's package so presumably I'll
be good to go now ...
I've reached the point in my smalltalkCI/GsDevKit_home work where I need a live example to work with and I was hoping to be able to build travis-ci test cases for Pharo 3-5, but with manual patching it will be a challenge to get the tests runnable on travis ---- but there needs to be a way :) Dale On 04/05/2016 03:27 PM, Dale Henrichs
wrote:
I've now loaded the #stable ConfigurationOfUnifiedFFI and still no dice (latest version) ... is there a reason you didn't add the configuration to the baseline? -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On Tue, Apr 5, 2016 at 7:34 PM, Dale Henrichs <[hidden email]> wrote:
Sorry, I forgot to document that part. Yes, you needed latest package version from UFFI as it is not yet integrated into Pharo. Note that I hope that latest UFFI would be integrated in Pharo 5.0 before release. But as for now, bringing latest UFFI is the way to go.
Well... for my CI on Travis for OSSubprocess and FFIExternalCHeader, since they were targeted for 5.0, I was always having to somehow patch latest image. This was because there was always something that I missed, or found a bug, or I was using not yet integrated UFFI or whatever.... So... besides this particular case, when you target the unstable release (in this case, Pharo 5.0), I think it is very frequent to be able to "patch" the fresh image.
You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On 04/05/2016 03:48 PM, Mariano
Martinez Peck wrote:
haha, you misinterpretted my "but there needs to be a way" ... I have evil plans to make it possible to run travis tests when the project needs this kind of patching ... just because things are patched shouldn't keep you from being able to utilize travis for testing... but we'll see how var I get with evil plans ... right now I haven't got the pharo30/40 stuff working:) BTW, I just finished doing the merge between your 50 and my master branch ... and I'm just at the point of running tests for PHaro4.0 and Pharo5.0 :) manually for now... Dale -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Well, I've hit one of the major milestones: travis job that runs
both client and server tests[1] --- the client in this case is not
using GCI to connect to the stone (it's not connecting at all), but
GsDevKit_home is building and launching a Pharo5.0 client ... I have
already run local tests with smalltalkCI to use the same mechanism
for launching and testing GemStone-GCI (which is now running green
for Pharo3.0, 4.0 and 50) ... still some work to do before
GemStone-GCI can be tested on Travis, but I'm over the hump!
Dale [1] https://travis-ci.org/dalehenrich/smalltalkCI/jobs/121343559 On 04/05/2016 04:02 PM, Dale Henrichs
wrote:
-- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
In reply to this post by Dale Henrichs-3
Hi Dale,
-- What kinds of objects am I actually supposed to be able to convert to a local object? Where do I find out about that? Stephan You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On 04/08/2016 09:59 AM, Stephan Eggermont wrote: > Hi Dale, > > What kinds of objects am I actually supposed to be able to convert to > a local object? > Where do I find out about that? > I guess you are asking about objects beyond the specials that are already converted (special objects and byte objects)? Well that is where GBS comes into play ... with GBS (and traversal buffers) you can create local objects from just about anything that is the GemStone server repository (see GBS docs for details) ... The GCI has no facility for creating local object copies of server-side objects, so each user of the GCI has to roll their own technique ... tODE and Tugrik both use STON to serialize objects between the server and client (for going both directions), but you need to be careful that you don't send too much ... tODE pretty much restricts the objects to the classes in the TodeClientElement hierarchy where the objects being passed back and forth are fairly well known and pretty strictly controlled ... the oops of the more complex objects like blocks are used to provide "remote procedure call" services for server-side objects. Tugrik also works with a restricted set of objects that are being serialized by STON as well (at least as far as I've gotten so far) ... Are you working with Doru or do you have other plans for the GemStone-GCI project? If you are working with Doru, then I think the approach will be to build objects similar to the TodeClientElements that have oops of blocks and perhaps tools instances and work is done on the server by evaluating blocks on server passing in args with well-controlled types, or sending remote message to server-side objects again controlling the types of objects passed as arguments ... If you are thinking of doing some sort of generic client-side proxies, then the general case is pretty complicated to solve (that is what GBS was invented for) ... My Tugrik project is kind of headed in the that direction -- ultimately --- my plan is to eventually develop some sort of limited proxy capabilities that provide a bit more utility than a Mongo backend, but not approaching the generic GBS replication ... Dale -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On Friday, April 8, 2016 at 9:07:07 PM UTC+2, Dale Henrichs wrote: I guess you are asking about objects beyond the specials that are Yes, I was able to get strings/symbols/numbers out well. And yes, the traversal buffers of GBS look nice. tODE and Tugrik both use STON to serialize objects between the server Ok, that looks workable. Are you working with Doru or do you have other plans for the Looking with Doru at GT-Inspector for Gemstone, yes. If you are working with Doru, then I think the approach will be to build Ah yes, I'll try that. Thanks, Stephan You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On 04/08/2016 12:42 PM, Stephan
Eggermont wrote:
In that case, you may want to wait just a bit more as I plan to provide a minimal tODE api for GemStone-GCI and Pharo5.0 ... it will properly log into tODE (there is a wire version protocol that needs to be negotiated) and setup the bare minimum needed to communicate with tODE --- I've all but wrapped up my smalltalkCI and GsDevKit_home generic pharo client work --- pretty much documentation and pull requests are all that's left --- a couple of days now ... In the meantime, in tODE you could do the following: eval `Dictionary new`; edit and in the Inspector window that pops up, select the "Window > inspect client element" menu item to bring up a client element instance used to produce the inspector window and you can see how tODE manages things ... if you want I can tell you a good place to put a halt in a Pharo3.0 tode client to see what happens to the client element once it gets to the client ... I can answer any questions you might have about what's going ... Dale -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Hi Dale, Just to say that I am happy to see all the progress made :) On Fri, Apr 8, 2016 at 5:05 PM, Dale Henrichs <[hidden email]> wrote:
You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
In reply to this post by Dale Henrichs-3
Mariano, Stephan, Doru,
I've just pushed an update to the GemStone-GCI project with updated installation[1] and usage instructions[2]. The new instructions are based on leveraging my recent work with SmalltalkCI[3] and GsDevKit_home[4]. The upshot for you guys is that it is possible to: - create GemStone-GCI client images and stones using local git clones that are shared by both the stone and client - the GemStone GCI libraries needed by the client are automatically installed and updates when new versions of GemStone are created - the client tests are run against the stone of your choosing and you can use command line args on the $GS_HOME/startClient command to specify which stone you want to log into - run batch test jobs where the test results are nicely displayed (attached image) Sooo next up for me is to work on the minimal tODE api that uses GemStone-GCI to log into tODE ... Are you guys still interested? If not, I've got plenty of other work that is calling for my attention:) Dale [1] https://github.com/GsDevKit/GemStone-GCI/blob/master/README.md#installation [2] https://github.com/GsDevKit/GemStone-GCI/blob/master/README.md#create-a-gemstone-gci-stone-and-pharo50-client [3] https://github.com/hpi-swa/smalltalkCI/pull/123 [4] https://github.com/GsDevKit/GsDevKit_home/pull/100 -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. localClientServerTestResults.png (89K) Download Attachment |
Hi Dale, What a fantastic job!!! Congrats! Very cool. Having a decoupled (project agnostic) pharo client for GemStone is very very cool. And I love all the CI infrastructure. Thanks! On Fri, Apr 15, 2016 at 2:51 PM, Dale Henrichs <[hidden email]> wrote: Mariano, Stephan, Doru, You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On 04/15/2016 11:14 AM, Mariano Martinez Peck wrote: > Hi Dale, > > What a fantastic job!!! Congrats! Very cool. Having a decoupled > (project agnostic) pharo client for GemStone is very very cool. And I > love all the CI infrastructure. > > Thanks! > Yes, I am pretty excited by these developments --- multi-client testing on travis dovetailed with creating multiple local clients for GsDevKit_home --- the .smalltalk.ston file provides a cross platform way of SPECIFYING a Metacello load, the tests to be run and the stone configuration info --- which then makes it possible to run CI tests locally using existing stones/clients within GsDevKit_home ... There are some optimizations (i.e., sharing client smalltalk vms) that need to be done --- but I can't spend all of my time on infrastructure alone as I've got a number of balls in the air that need to stay in the air:) Dale -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
In reply to this post by Dale Henrichs-3
On 15/04/16 19:51, Dale Henrichs wrote: > I've just pushed an update to the GemStone-GCI project with updated > installation[1] and usage instructions[2]. Nice. > Are you guys still interested? If not, I've got plenty of other work > that is calling for my attention:) I made some progress with a proxy for an inspector node, looking up for a given oop the instvars of the object and returning their oop and inspectorName. Stephan -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Do you have code to share? Did you look at the TodeClientElement? You
can start racking up round trips (very expensive over the WAN) if you are accessing individual oops -- which is why I've gone the TodeClientElement route --- somewhat like Seaside in that the server is generating the information ... a good way to get your feet wet, nonetheless ! I'll start delving into the minimal tode api over the weekend .... Dale On 4/15/16 3:28 PM, Stephan Eggermont wrote: > > > On 15/04/16 19:51, Dale Henrichs wrote: >> I've just pushed an update to the GemStone-GCI project with updated >> installation[1] and usage instructions[2]. > Nice. >> Are you guys still interested? If not, I've got plenty of other work >> that is calling for my attention:) > I made some progress with a proxy for an inspector node, looking up > for a given oop the instvars > of the object and returning their oop and inspectorName. > > Stephan > -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Hi Dale,
We are still very interested in the minimal tODE API. What Stephan is saying is that for the use case of inspecting 1 object, you need 1 starting oop. The result of the call is another object that collects all information needed for displaying a view on that object, so we want to do the least amount of round-tripping we can :). But, in any case, learning from tODE is a useful thing and we would benefit from the API. Cheers, Doru > On Apr 16, 2016, at 3:37 AM, Dale Henrichs <[hidden email]> wrote: > > Do you have code to share? Did you look at the TodeClientElement? You can start racking up round trips (very expensive over the WAN) if you are accessing individual oops -- which is why I've gone the TodeClientElement route --- somewhat like Seaside in that the server is generating the information ... a good way to get your feet wet, nonetheless ! > > I'll start delving into the minimal tode api over the weekend .... > > Dale > > On 4/15/16 3:28 PM, Stephan Eggermont wrote: >> >> >> On 15/04/16 19:51, Dale Henrichs wrote: >>> I've just pushed an update to the GemStone-GCI project with updated installation[1] and usage instructions[2]. >> Nice. >>> Are you guys still interested? If not, I've got plenty of other work that is calling for my attention:) >> I made some progress with a proxy for an inspector node, looking up for a given oop the instvars >> of the object and returning their oop and inspectorName. >> >> Stephan >> > > -- > You received this message because you are subscribed to the Google Groups "tODE" group. > To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. > For more options, visit https://groups.google.com/d/optout. -- www.tudorgirba.com www.feenk.com "Problem solving efficiency grows with the abstractness level of problem understanding." -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
On 4/16/16 3:11 PM, Tudor Girba wrote: > Hi Dale, > > We are still very interested in the minimal tODE API. > > What Stephan is saying is that for the use case of inspecting 1 object, you need 1 starting oop. The result of the call is another object that collects all information needed for displaying a view on that object, so we want to do the least amount of round-tripping we can :). But, in any case, learning from tODE is a useful thing and we would benefit from the API. I understand, but at least in tODE, the server "knows" that an inspector is desired - the object receives the #inspect message on the server and that message triggers a lookup within tODE for the inspector builder and the inspector builder creates a fully-populated TodeClientElement (with a fully populated set of fields for the inspector viewer on the client), so basically there is no need for the initial round trip to build up a view of the object --- the basic display object can be created right off the bat ... this is the essence of the "Ultra Thin Client" model used for tODE ... So in your use case, you _could_ install a custom builder for the inspector to create a client element with the fields that you need for your inspector --- which is a function of the type of operations you expect to perform on the object ... This is where some shared example code (ideally on GitHub) would make it easier to illustrate what I'm talking about ... You are free to build your api in any way that you'd like, but I **have** constructed tODE to allow for custom GUI's so it is probably worth keeping that in mind as you move forward ... Dale -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
In reply to this post by Mariano Martinez Peck
Mariano,
I've got the following declaration and I'm not sure how to declare GciSaveObjs(const OopType theOops[], int numOops); using UFFI ... I've poked around a little bit and didn't see any examples in the tests and thought you might know offhand. Thanks in advance, Dale /* ========================================================================== * GciSaveObjs (behavior has changed in Gemstone64) * * If called from a user action * adds specified objects to the user action's exportSet, * else * adds the specified objects to the sessions internal PureExportSet. * to prevent their being garabage collected. * * The user action's export set does not contributed to objects appearing * in the ExportedDirtyObjs set . * * This will prevent Gemstone garbage collection from causing * the objects to disappear during a session because they are unreferenced. * Does NOT cause the objects to be referenced from a permanent object, * and thus there is no guarantee that they will be saved to disk at commit. * * Note that for results of GciNew*, GciCreate*, GciSend*, GciPerform*, * GciExecute* GciResolve* and GciI64ToOop * an automatic GciSaveObjs() is performed with the results as argument. * GciRelease* calls may be used to cancel the effect of a GciSaveObjs call, * thus making objects eligible for garbage collection. * * See also GciDirtyExportedObjs() . * * arguments: theOops, an array of oops, * numOops, the number of elements in theOops * ========================================================================== */ GCI_ALIGN_STACK EXTERN_GCI_DEC(void) GciSaveObjs(const OopType theOops[], int numOops); -- You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Good question. I really don't know. I am asking Esteban. Will let you know. The obvious mapping does not work, does it? self ffiCall: #( GciSaveObjs(GsGciOopType[] theOops, int numOops) ) Btw...is there a unit test I could run once I have a solution? Thanks! On Sun, Apr 17, 2016 at 12:57 PM, Dale Henrichs <[hidden email]> wrote: Mariano, You received this message because you are subscribed to the Google Groups "tODE" group. To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email]. For more options, visit https://groups.google.com/d/optout. |
Free forum by Nabble | Edit this page |