Hi, CFFI developers
Digitool MCL was a old&famous Common Lisp implementation on PPC Mac OS. Recently it was ported into Intel Mac OS X by running in Rosetta (a PPC emulator by Apple). So there're people still using this platform even when Clozure CL is a better choice.
Attach is two patches, one is a CFFI MCL support patch made by James Anderson, the other is a trivial patch for MCL support of trivial-features made by me. With these two patch, CFFI can now be loaded into Digitool MCL.
This work seems work with James' own project which is based on CFFI. But CFFI-TESTS cannot run at this time, because ASDF:RUN-SHELL-COMMAND doesn't support MCL (I don't know how to fix this right now). IOlib also cannot work in MCL because Gray Streams wasn't supported by MCL yet ...
However, I hope CFFI maintainer could merge this patch and let other MCL users help improving exist work.
Chun Tian (binghe)
在 2010-9-28,06:41, james anderson 写道:
> good morning;
>
> i have worked out enough of a cffi-mcl to be able to accomplish the immediate goal - to use the cl-zmq zeromq ffi binding.[1]
> in case someone wants to carry it further, it's posted along with a mcl-compatible zmq version,[2] which eliminates un-ported dependencies.
>
> ---
> [1] : http://repo.or.cz/w/cl-zmq.git
> [2] : http://github.com/lisp/de.setf.zeromq
>
> On 2010-09-22, at 08:29 , Chun Tian (binghe) wrote:
>
>> I've read these documents. MCL 4.0's FFI seems based on the function "define-entry-point" which then depends on "ppc-ff-call", both of them are still available in MCL 5.x, and the related MCL source code is "lib/deftrap.lisp", which was last modified in 2005.
>>
>> However, I think "define-entry-point" is not the preferred way any more:
>>
>> ; Change log
>> ;
>> ; put back define-entry-point and things it depends on - though MCL doesn't use it users may
>> ; ------ 5.2b2
>>
>> I think CFFI people, if want to support MCL, should research "deftrap.lisp" and figure out the preferred way to do the work. But for me, a USOCKET maintainer, I'd like to use this interface directly to implement UDP networking, which was lack from OpenTransport.
>>
>> --binghe
>>
>> 在 2010-9-22,13:30, james anderson 写道:
>>
>>> there are two sources.
>>>
>>> if you go to ftp.clozure.com, you will find the 5.2 release and a copy of the documentation for 4.0.
>>> i know of no revised documentation for 5.2. other than that, there is always the source.
>>> i believe 5.2 has a very different calling mechanism then 4.0, as it uses a different os x facility to manage foreign libraries.
>>>
>>> the biggest '?' is turning off the gc for the dynamic extent of any foreign calls which pass lisp data. i do not know if that is possible in mcl, but it could be faked by moving the data to/from temporary external storage just to get it working.
>>> two little question marks are the data type size calculations and the call-back protocol.
>>> since the source is there, there's nothing stopping me from adapting the clozure-specific code to work in mcl.
>>> i was just hoping to avoid having to wrap my head around those bits.
>>>
>>>
>>> On 2010-09-22, at 04:45 , Chun Tian (binghe) wrote:
>>>
>>>> Never know how to do FFI in Digitool MCL ... Where can I find some API documents?
>>>>
>>>> --binghe
>>>>
>>>> 在 2010-9-22,05:36, james anderson 写道:
>>>>
>>>>> good morning;
>>>>>
>>>>> has anyone ported cffi to mcl?
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> info-mcl mailing list
>>>>> info-mcl(a)clozure.com
>>>>> http://clozure.com/mailman/listinfo/info-mcl
>>>>
>>>> _______________________________________________
>>>> info-mcl mailing list
>>>> info-mcl(a)clozure.com
>>>> http://clozure.com/mailman/listinfo/info-mcl
>>>
>>> _______________________________________________
>>> info-mcl mailing list
>>> info-mcl(a)clozure.com
>>> http://clozure.com/mailman/listinfo/info-mcl
>>
>> _______________________________________________
>> info-mcl mailing list
>> info-mcl(a)clozure.com
>> http://clozure.com/mailman/listinfo/info-mcl
>
> _______________________________________________
> info-mcl mailing list
> info-mcl(a)clozure.com
> http://clozure.com/mailman/listinfo/info-mcl
Hi!
The CFFI generator in SWIG produces incomplete stubs compared to
the Allegro CL one. The case in question are the stubs for Mapserver's
MapScript wrapper:
http://mapserver.org/mapscript/index.html
The Lisp wrapper code generated for ACL is pretty much an ordinary
Common Lisp. Except for a bunch of ACL-specific functions (from EXCL
and FF packages). The functions from EXCL package are easy to replace
with freely-available replacements.
But the functions from FF package are a little bit different than the
functions from CFFI. They look like more similar to the UFFI but still
are not the same.
Did anybody face a similar problem already? What is the best way to
refactor the ACL wrappers to be portable across implementations?
Does anybody have improved CFFI generator for SWIG?
Thanks,
Victor
-- реклама -----------------------------------------------------------
Никогда не покупали в интернете?
Лучшее место для покупок онлайн - http://aukro.ua