I will let eliot comment on that because I'm alien newbie. We cleaned it so that people can use it but
it is correct that alien touches the parser? The declarations are not pragmas compliant.
Yes -- there's a hack in there that allows an error code variable to be passed in the <primitive> pragma where otherwise the parser would expect a literal.
Of course your suggestion makes sense. When marcus is back in europe I will check the status of the new handwritten parser because it would be good to use it.
Thanks Stef. I've got some other ideas for Alien; is this list the best place to discuss those? Specifically:
* AlienLibrary shouldn't do its cleanup at shutdown, it should do it at image startup instead. That way a simple image save won't invalidate all of my external references.
* I'm creating a partial Alien library for GemStone so that I can use the CairoGraphics package in both Pharo and GLASS.
what is the cairoPackage? For pharo 1.1 I would like to see Rome cleaned and loadable/integrated in pharo.
But on x86-64, there there's a size difference between a pointer/ long and an integer. It'd be nice to have some more explicit APIs on Alien, so I could say "Alien newCInteger" or "Alien newCLong" and have the platform return me the proper size Alien. Even without the platform size differences, it seems awkward to use "Alien newC: 4" everywhere I want an integer, "Alien newC: 8" where I want a double, etc.
* Similarly, I'd like an API on AlienLibrary that distinguishes between integers and longs. In the CairoGraphics package I've added some methods to this effect:
CRLibrary int: 'cairo_surface_write_to_png' with: handle with: string address
or
patternHandle := CRLibrary pointer: 'cairo_pop_group' with: handle.
I like the way it reads. And even though on IA32 they both use the same 4-byte primitive, on x86-64 I could have pointers return an 8- byte Alien and ints return a 4-byte primitive.
* Same story with the basic data accessors like (un)signedLongAt: -- I'd want to add something like (un)signedIntAt et. al.
Yes, I realize that some of this is overkill for IA32 only, but on the other hand I think a couple of these intention-revealing changes would make Alien client code prettier.
Sorry to be so wordy. I'd be glad to do all of the Smalltalk-level coding on this -- much of it is done already in my image -- but I thought I'd better ask the maintainer(s) first and this list is the best forum I've found for Alien issues.
-- Ken Treis Miriam Technologies, Inc.
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project