Does your file include the line
at some point?
I made changes to a number of libraries yesterday which hide them (to the extent possible) from interference from outside code (previously, if someone redefined the global variable string, most libraries would have ceased to work). The libraries now define the tables they rely on locally from the package.loaded table, rather than pulling from the global table.
I found no conflicts when I tested the changes, but I overlooked this case.
Gearswap redefines the require function within user files, and the implementation does not check package.loaded. As a result, when you require the functions library, it can't find Lua's basic string table.
I think the best solution is to add a check to package.loaded within Gearswap's include_user function (and to add the functions table to the user environment, which seems like something that was just overlooked).