[Openmcl-devel] ? jfli

james anderson james.anderson at setf.de
Thu Jun 11 13:06:21 PDT 2009

On 2009-06-11, at 14:39 , Gary Byers wrote:

> I don't know if anyone's using the jfli port or not, but whether
> they are or not has nothing to do with whether entry point names
> have leading underscores on Darwin.
> The old way of looking up the addresses of foreign symbols on Darwin
> (which viewed all external symbols as having leading underscores and
> required its argument to have such a leading underscore) has been
> deprecated (certainly as of Tiger, possibly before - it's been a few
> years) in favor of a new (previously deprecated) way which pretends
> that Darwin symbols don't have leading underscores (at a lower level,
> they still do) and which strips an initial leading underscore from
> its argument.  So:
> ? (foreign-symbol-address "read")
> #<A Foreign Pointer #x7FFF81232284>
> ? (foreign-symbol-address "_read")
> #<A Foreign Pointer #x7FFF81232284>

that is not what i see happen.

marbella:/Development/Applications/LISP/ccl-1.3 james$  
system_profiler SPSoftwareDataType

     System Software Overview:

       System Version: Mac OS X 10.4.11 (8S165)
       Kernel Version: Darwin 8.11.0
       Boot Volume: marbella-backup
       Computer Name: marbella
       User Name: james anderson (james)

marbella:/Development/Applications/LISP/ccl-1.3 james$ ./dppccl
Welcome to Clozure Common Lisp Version 1.3-RC1-r11719M  (DarwinPPC32)!
? (foreign-symbol-address "read")

1.3-r11936 does this as well.

> the leading underscore is usually optional, and Apple has cleverly
> designed a symbol-lookup mechanism that makes it awkward to refer
> to foreign symbols that actually have meaningful leading underscores
> in their C-visible names.  (But I digress ...).
> You're correct in noting that if the advocated way of resolving
> foreign symbol addresses on Darwin still required its argument
> to have a leading underscore the jfli example (and lots of other
> things, including lots of code in CCL itself) wouldn't work.

i wrote the note, because it didn't.
what would make the "_" not optional?

>   Those
> things generally do (or at least aren't affected by this ...), and
> AFAIK jfli more-or-less does as well.  (The "or less" parts that I'm
> aware of have to do with JNI objects not being freed when they should
> be, and the general plan is to RTFJNIM to get a clearer idea of when
> they should be.)
> What's there does seem to work at least well enough to run simple
> demos, including the simple SWT demo that's included (assuming that
> you can find an SWT library for your platform and can adjust the paths
> to it and the JFM that're hardwired into the examples.)  One platform
> for which there was not a released SWT library (unless it's been
> released very recently) is 64-bit OSX: the OSX version of SWT has been
> based on Carbon (and is therefore 32-bit only), though work on a
> Cocoa-based version is ongoing.)

i intend to use it in 64-bit linux.

> Nick Levine made some changes to Rich Hickey's original jfli code
> a year or so ago; I wasn't aware of those changes when I did the
> CCL port last winter.  Nick's changes include improvements to
> pathname handling and ways of abstracting away some Windows/Unix
> differences, and it'd be good to merge those changes into the CCL
> port when time permits.

i will keep that in mind. from the list of things mr levine had in  
that blog note about the changes, i will look at them before i try to  
do anything serious with it.

More information about the Openmcl-devel mailing list