The problem/use-case that the feature addresses

Redis now is using Lua 5.1 that supports only 32 bits operations, which may lead to incorrect outcome when using 64-bit integers. For example, when the user wants to perform bit arithmetic (bit.rshift/bit.lshift/...) on scores stored in zset that are greater than INT_MAX through Lua script, it may cause inconvenience that he/she should take the scores out to process and then put them back rather than directly operate in the script.

Description of the feature

64-bit operation is expected to be supported in Lua script. Below shows what will happen if using 64-bit integers in script.

127.0.0.1:6379> eval "return bit.rshift(5978328353,32)" 0 
(integer) 1683361057
127.0.0.1:6379> eval "return bit.lshift(32,32)" 0 
(integer) 32

And what's expected respectively is 1 and 137438953472, that is to say, the output below is correct.

127.0.0.1:6379> eval "return bit.rshift(5978328353,32)" 0 
(integer) 1
127.0.0.1:6379> eval "return bit.lshift(32,32)" 0 
(integer) 137438953472