[Cuis-dev] FFI changed?
Stephen Travis Pope
stephen at heaveneverywhere.com
Fri Apr 21 17:12:30 PDT 2023
Holà Juan et al.,
So, I put the attached dylib in the Resources folder of the Squeak-jit VM (like always), then I fired up a fresh 5772 image and loaded the FFI and FFI-Test packages, and filed in the attached ST code (PortMIDILibrary class).
(I checked and the dylib exports a code token named “pm_count_devices” (try nm -ng libportmidi.dylib | grep pm_ ))
These tests worked:
FFITestLibrary ffiTestInt: $A asCharacter with: 65 with: 65.0 with: true.
FFITestLibrary new ffiPrintString:'Hello World!!' asUtf8BytesOrByteString.
FFIPluginTests new testBiggerStruct
FFIPluginTests new testConstructedPrintString
and this returned a nice string
FFITestLibrary moduleName
and this returned the expected lib name
PortMIDILibrary moduleName
But trying to call a simple prim like
PortMIDILibrary pm_count_devices
failed, not being able to locate the C fcn. All that the method does is,
pm_count_devices
"Answer the number of MIDI ports"
"PortMIDILibrary pm_count_devices”
< cdecl: long 'pm_count_devices' (void) module: 'libportmidi.dylib' >
^self externalCallFailed
So I tried the lower-level way, as in,
Works
[ExternalAddress loadSymbol: 'ffiTestFloats' asUtf8BytesOrByteString
module: FFITestLibrary moduleName asUtf8BytesOrByteString]
Doesn’t work
[ExternalAddress loadSymbol: 'pm_count_devices' asUtf8BytesOrByteString
module: PortMIDILibrary moduleName asUtf8BytesOrByteString]
All variations of this return a function with address 0
[ExternalLibraryFunction
name: 'pm_count_devices' asUtf8BytesOrByteString
module: ‘libportmidi.dylib' asUtf8BytesOrByteString
callType: 0
returnType: ExternalType long
argumentTypes: ((1 to: 1) collect: [ :i | ExternalType void])]
And this fails, of course
[ | meth |
meth := ExternalLibraryFunction
name: 'pm_count_devices' asUtf8BytesOrByteString
module: 'libportmidi' asUtf8BytesOrByteString
callType: 0
returnType: ExternalType long
argumentTypes: ((1 to: 1) collect: [ :i | ExternalType void]).
result := meth invoke.
result]
Is there something obvious that I’m doing wrong?
I’m running on an ARM-based MacStudio.
The prims work fine with Squeak and the Squeak6.1alpha VM.
…any reply MOST appreciated…
stp
——
Attachments
Minimal ST class w prim interface

PortMIDI dylib

--------
Stephen Travis Pope Ojai, California, USA

http://HeavenEverywhere.com
http://FASTLabInc.com
https://vimeo.com/user19434036/videos
http://heaveneverywhere.com/Reflections
> On Apr 20, 2023, at 4:35 AM, Juan Vuletich via Cuis-dev <cuis-dev at lists.cuis.st> wrote:
>
> Hi Stephen,
>
> On 4/19/2023 9:17 PM, Stephen Travis Pope via Cuis-dev wrote:
>>
>>
>> Hi all,
>>
>> I’m porting Siren back from Squeak to Cuis, hoping to be able to use the vector graphics extensively.
>
> That is great news! I believe that VG can simplify the UI and improve the looks and experience for any kind of apps, like it does for DrGeo.
>
>> One issue that has come up is that the FFI interface to the PortMIDI library that worked a few months ago stopped working.
>>
>> Has something changed in the VM FFI interface?
>
> In November 2022, I integrated UnicodeString. Since them, anywhere you may expect an instance of String, you may instead get an instance of UnicodeString. This hasn't brought much trouble, as they are polymorphic. But a few tweaks here and there were needed. Last commit to FFI.pck.st <http://ffi.pck.st/> is from Jan 6 and it was specifically for this.
>
> On my Intel Mac, using an updated Cuis, and loading `Feature require: 'Tests-FFI'`, all the FFI test pass. Do they pass on your Apple Silicon Mac?
>
>> Can we still load dylibs (rather than only bundles) on Macs?
>
> I believe we can. Not too long ago, before Apple dropped support for OpenCL, I used it extensively, and I believe it was a dylib. Nowadays, I'm not using FFI much.
>
> Can you help me reproduce what you are doing on my Mac? I'd like to see it running on a Cuis from the date it did work from you, and also reproduce your updated setup to see the failure.
>
> Do you get a debugger? Error messages? Something on the Transcript or StdIO (in Terminal)?
>
> If I can reproduce your setup and the problems you see, I'm sure we'll fix them.
>
>> …any reply appreciated…
>>
>> stp
>>
>> --------
>>
>> Stephen Travis Pope Ojai, California, USA
>> http://HeavenEverywhere.com <http://heaveneverywhere.com/>
>> http://FASTLabInc.com <http://fastlabinc.com/>
>> https://vimeo.com/user19434036/videos
>> http://heaveneverywhere.com/Reflections
>>
>
> Thanks,
> --
> Juan Vuletich
> cuis.st <http://cuis.st/>
> github.com/jvuletich <http://github.com/jvuletich>
> researchgate.net/profile/Juan-Vuletich <http://researchgate.net/profile/Juan-Vuletich>
> independent.academia.edu/JuanVuletich <http://independent.academia.edu/JuanVuletich>
> patents.justia.com/inventor/juan-manuel-vuletich <http://patents.justia.com/inventor/juan-manuel-vuletich>
> linkedin.com/in/juan-vuletich-75611b3 <http://linkedin.com/in/juan-vuletich-75611b3>
> twitter.com/JuanVuletich <http://twitter.com/JuanVuletich>--
> Cuis-dev mailing list
> Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
> https://lists.cuis.st/mailman/listinfo/cuis-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0004.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MusicIO-MIDI.st
Type: application/octet-stream
Size: 7508 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0002.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0005.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libportmidi.dylib
Type: application/octet-stream
Size: 97120 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0003.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0006.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.tiff
Type: image/tiff
Size: 2442 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0001.tiff>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230421/e8d5615f/attachment-0007.htm>
More information about the Cuis-dev
mailing list