Towards An Ideal Execution Environment For Programmable Network Switches