> On Dec 22, 2015, at 08:26 , james anderson <james.ander...@setf.de> wrote: > > good morning; > >> On 2015-12-21, at 20:15, Attila Lendvai <att...@lendvai.name> wrote: >> >> i wrote up some ideas here: >> >> https://github.com/cffi/cffi/wiki/Type-propagation-proposal >> >> you're invited to comment/edit it. > > > [transported from otherwise private correspondence…] > >> On 2015-12-22, at 00:16, Attila Lendvai <att...@lendvai.name> wrote: >> >> hello, >> >> […] >> >>> the question is, did you consider using declarations and environments? >>> i have found the sbcl implementation of those to be quite serviceable and i >>> would expect it to provide all of the definition and access facilities which >>> type-based operations could require. >> >> as this is CFFI it should be portable, but i'm willing to give this up >> if sane implementations can be made to work. there's an issue already >> with portable access to the environment, but that has been dealt with >> already.
I beg to differ. There is NO code out there that correctly and portably has access to “the environment”. I.e., at the level of CLtL2 Chapter 8.5. >> do you think this could be implemented portably in a sane way? if so >> maybe we should do that, but i never used user declarations. > > i have never tried to validate my particular current use of the declaration > facilities against some implementation other than sbcl, but i recall using > them in lispworks, allegro and even mcl and see that ccl appears to implement > them as well. > the are cltl2 rather than ansi, but as they expose something which any > implementation must already implement, they are a reasonable expectation. Alas, they are not. At this point only Allegro offers a working (and incomprehensibly non-cltl2-compliant - cfr., the return values order) version. CMUCL and CCL do a reasonable job as does LW. SBCL has lost SB-CLTL2 in the most recent (Mac) version. ABCL’s maintainers are on record (personal communication :) :) :) ) as being ready to provide CLtL2 Chapter 8.5 functions “Very Soon Now”(TM). I cannot say anything for ECL, CLISP or other implementations at this point. > for sbcl i recall to need only to include :sb-cltl2 as an asdf dependency. See above. > the mechanism is pretty much transparent as to what the declaration can carry- > that is, subject to scope and extent requirements, you can do pretty much > whatever you want. If it worked. Having said that, I point you guys to CLAST: http://clast.sourceforge.net; any help is welcome, especially in lobbying the implementors to support CLtL2 Chapter 8.5. I would like to have you note that CLAST constructs a “source level” AST for CL code, and that the PARSE-FORM generic function is the “form-level” hook to actually write an extension for CFFI definition forms. Cheers -- Marco Antoniotti