This file documents a list of things that ICI needs. If you feel like doing one of them then by all means do so and if you are public minded donate your changes.
Things to add:
- literal form -> [vec32f 1, 2.0, 3.134, ....]
- sized integer types, vec16s, vec8u, etc...
- I/O (printf?)
So strings with NULs can be handled properly. There is a general problem all over the interpreter - we assume C strings. We pass ICI's string characters directly to C functions which can see a truncated string if the ICI string has an embedded NUL.
Native code modules should be collectable with unused modules being automatically unloaded. This requires the cfuncs and other objects that reference the contents of the module references some type of object which holds the module open. When the references are collected the module can be dlclose'd and unloaded.
What does it do? I forget. Perhaps outputs a "clean string" wit problematic characters escaped?
setof(array) ? It can be done via "call(set, array)" but that's a little idiosyncratic.
It can be done in a single ICI expression,
keys(call(set, ary))
But we can do that a little more efficiently in native code.
Form a set from the array to discard duplicates, get the contents of the set in a vector via keys(). And if sorted key are desired you just call sort on the result of keys().
sort(keys(call(set, v)))
join() does this and replaces many uses of implode.
I don't think this is made clear enough in the documentation.