See http://www.lua.org/work/diffu-lua-5.3.2-lua-5.3.3.html (Ctrl+F for strlib). Of note: removal of non-linear complexity stuff, adjustments to handle a coroutine bug (see issue #17), and changes to how gmatch and gsub handle empty matches.
This last item is a bit tricky; technically this change can be made freely since the behavior is undefined, but many use cases depend on a specific behavior for empty matches (e.g. split functions) and so some code has come to rely on the existing behavior. To be consistent with upstream, the default functions ought to be changed. However, is there any good reason to retain the older behavior in a new set of functions, or with an optional flag to the existing functions? I don't think so, but it's worth considering.
See http://www.lua.org/work/diffu-lua-5.3.2-lua-5.3.3.html (Ctrl+F for
strlib
). Of note: removal of non-linear complexity stuff, adjustments to handle a coroutine bug (see issue #17), and changes to howgmatch
andgsub
handle empty matches.This last item is a bit tricky; technically this change can be made freely since the behavior is undefined, but many use cases depend on a specific behavior for empty matches (e.g. split functions) and so some code has come to rely on the existing behavior. To be consistent with upstream, the default functions ought to be changed. However, is there any good reason to retain the older behavior in a new set of functions, or with an optional flag to the existing functions? I don't think so, but it's worth considering.