LuaLanes / lanes

Lanes is a lightweight, native, lazy evaluating multithreading library for Lua 5.1 to 5.4.
Other
465 stars 96 forks source link

Cannot use DeepPrelude, #204

Closed jjvbsag closed 2 years ago

jjvbsag commented 2 years ago

I'm back with my deep userdata issue from some years ago. I wanted to check, if there are fixes in lanes, which solves issues with method __lanesclone, which we still have with 3.13.0.

Now In 3.15.1 I find, that userdata to be cloned is to be prefixed by DeepPrelude. THIS IS A NO GO for us. Our userdata (from protected sources) has a fixed size and structure and cannot be modified or prefixed by other data. The only thing, we can do is add methods to the metatable.

Please have a look at my https://github.com/jjvbsag/COMPLEX project and assume

struct S_COMPLEX
{
    double re;
    double im;
};

is in a foreign header file and cannot be modified. Also S_COMPLEX is part of heavy computations in lua-module, with our without using lanes, so adding overhead to normal operation like assign and arithmetics is unacceptable.

Or do I completely misunderstand example in deep_test.c ????


Please understand, S_COMPLEX is only an example for verifying cloning userdata in lanes/linda. The REAL data is much more complex, but proprietary and not to be published by us.

jjvbsag commented 2 years ago

To correct myself, everything is fine. I was confused by the example using DeepPrelude and did not read to the end of deep_test.c to find, old __lanesclones still work as expected