Thanks a lot, Gaetan! Your comments helped me greatly with implementing this, here's the first draft:
https://github.com/mrkafk/numexpr/compare/pydata:master...masterI've added several tests and they pass.
However, "stringcontains" implementation in numexpr/interpreter.cpp is not quite optimal yet I think - it's brute-force approach with copying source and substring into additional areas of memory and then calling strstr on those. I guess since one of the important (main?) points of numexpr is keeping things in CPU cache as much as possible, malloc() and free() do not necessarily perform well here, do they? I'd have to add smth like Rabin-Karp implementation "inline" in that function I think, would that be optimum for performance?