Re: FFI callback is broken in last git version

Matthew Fluet <[email protected]> Wed, 28 Sep 2016 12:06:43 -0400
Newsgroups gmane.comp.lang.ml.mlton.user
Message-ID <CAMrhFL6Kvz-YUGUsZwg0XsO2TQ65Q0-1rS+TFEH_T9ORrZC+pw@mail.gmail.com>
On Wed, Sep 28, 2016 at 10:56 AM, Kostirya <[email protected]> wrote:
> Wow. Speed callback increased 6 times (compared with MLton 20130715)!

Interesting; I don't believe that anything special changed with
respect to callbacks themselves, but if you have an FFI heavy
application, you may benefit from the fact that non-"reentrant"
_import-ed functions have a little lower overhead (compared to the
default behavior in MLton 20130715).


> 2016-09-28 11:36 GMT+03:00 Florian Weimer <[email protected]>:
>>
>> > I updated MLton from git repository and detect what FFI callback is
>> > broken.
>>
>> I think it was merely changed in a backwards-incompatible way.
>>
>> >> mlton
>> > MLton gd201ca9-dirty (built Tue Sep 27 15:21:50 EEST 2016 on thinkpad)
>> >
>> >
>> >> cat callback.c
>> > void foo ( int n, void (*fn) (int) ) {
>> >         int i = 1;
>> >         while (n--) {
>> >                 (*fn)(i++);
>> >         }
>> >         return;
>> > }
>> >
>> >
>> >> cat cb-mlton.sml
>> > val foo = _import "foo" public: int * MLton.Pointer.t -> unit;
>> > val () = (_export "cb" : (int -> unit) -> unit;) (fn v => print
>> > ((Int.toString v) ^ "\n"))
>> > val cb = _address "cb" public: MLton.Pointer.t;
>> > val _ = foo(3, cb)
>>
>> You need to import foo with the “reentrant“ attribute, like this
>> (untested):
>>
>> val foo = _import "foo" public reentrant: int * MLton.Pointer.t -> unit;
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "MLton-user" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>>
>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> MLton-user mailing list
>> [email protected]; [email protected]
>> https://lists.sourceforge.net/lists/listinfo/mlton-user
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "MLton-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> MLton-user mailing list
> [email protected]; [email protected]
> https://lists.sourceforge.net/lists/listinfo/mlton-user
>

-- 
You received this message because you are subscribed to the Google Groups "MLton-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].


------------------------------------------------------------------------------
_______________________________________________
MLton-user mailing list
[email protected]; [email protected]
https://lists.sourceforge.net/lists/listinfo/mlton-user