This file contains random musings on the past, present, and future state of Inline::SLang. Just because an item has made it here does not mean it is going to be worked on in the near (or far) future. PDL Support ----------- - need to test on a 64-bit machine to check that the assumptions I've made about sizes of the various types is sensible. Or improve the code that compares PDL and S-Lang datatype sizes. - Should we convert 0D piddles to S-Lang scalars or 1D, 1-element arrays? Other data types ---------------- - Structs: need to improve checking of valid field names in Perl eg in Perl can use 1x3, but this is not a valid field name in S-Lang Configuration ------------- - do we need a way to say 'bind all the functions EXCEPT blah'? - provide a means of querying the package to find out what namespaces and functions have been bound. - The PDL code could be conditionally loaded by Inline::SLang - either via "use Inline::SLang => Config => PDL => 1;" or a separate "Use Inline::SLang::PDL;". Inline::Slang would have a struct (like PDL's Core struct) with function pointers set to NULL. When the PDL support is loaded these get set to the necessary code to convert from/to piddles. The question is, is having PDL support in Inline::SLang proper that much of a pain? Tests ----- - check that S-Lang "opaque" variables passed through Perl and back to S-Lang still exist once the perl variable that referenced them has called it's DESTROY method. General ------- - Support version 2 of the S-Lang library. From a quick look at the development snapshots it appears that changes will be needed in (not a complete list): = error handling (access to the error variable has changed and need to look at new hooks to see how to handle passing the error back to Perl) = support for the new List_Type variable; this can be converted into a normal Perl list, but we may want to re-think the conversion of Perl lists into S-Lang. = the SLtype variable has changed from 'unsigned int' (or char) and some internal changes to the library and/or interpreter API may make the type support easier (it will definitely need looking at whatever). = will the UTF-8 support in S-Lang v2 support cause problems? Compilation ----------- If a user says use Inline 'SLang' => <<'EOS1'; .. EOS1 use Inline 'SLang' => <<'EOS2'; .. EOS2 perhaps with some configuration changes in between, do we create 2 files, and does the second one include those functions bound from the first code (EOS1) ? Previous thoughts that are unlikely to be implemented ----------------------------------------------------- - we *could* try and ensure that changes made (in PDL) to an array sent from S-Lang to PDL are propogated back to S-Lang [ie use the same memory for the two arrays]. I am not convinced it would really help things, and would definitely complicate the internal code. - S-Lang has support for byte-compiled code. The module could save the byte-compiled code instead of (or as well as) the text version of the code. It may provide a slight performance gain when loading? Have decided not to try and support this, since it would mean more-complicated build()/load() routines for a (I'm guessing) effectively negligible speed increase - *could* steal the PDL::NiceSlice approach and provide a syntax to access Perl versions of S-lang's arrays/structs - eg $a(0,2,1) gets translated to $a->get(0,2,3) $b.foo $$b{foo} BUT this is hard going to clash with PDL going to clash with Perl 6 So *very unlikely* to do Variables: - do we want to allow access to S-Lang variables (ie have them bound to a perl 'lvalue' routine)? I think this would be hard to do properly and we can work around things by the somewhat ugly my $var = sl_eval( "slang_variable_name" );