'22 and '23 upgrades got us a great deal of functionality, however it also made the builders aware of many other limitations such as script size limits and lack of some basic operations such as shift operations, which brings me to raise a general question:
Why was the VM left incomplete? There are certain operations common to almost all programming languages, that are considered to be pretty standard. Why didn’t we just complete the VM with ALL of them in one sweep?
Also, sometimes working with numbers is so frustrating because there’s no uint type. I think this is solvable: we could define one NOP opcode as VM int/uint mode toggle which would modify behavior of all arithmetic opcodes.
Also, I’ve seen that some builders would like some aggregate operations. There are TX aggregates that validating nodes have to perform anyway. Exposing these values through some new opcodes would add negligible costs IMO, so why not do it? Remove as many bottlenecks as we can so downstream builders can build faster and easier.
Then, what’s the lowest common denominator of int64 architecture CPUs & GPUs? Couldn’t we work towards better mapping to native instructions? I’ve seen some other networks are working towards a RISV-V VM for their needs.
I’m not saying “hey let’s yolo and make a big and drastic change now!”, I’m just interested in overall strategy, then we can work towards slowly adding the pieces.