Hey everyone,
First thanks for all the efforts put in the creation of this language which is better and better every year !
There are 2 things that I would love to be improved though
- Mappings in memory
Key - value stores are super useful to improve time complexity of algos, which is good for us to save gas ! Unfortunately, this saving is often canceled by the fact that we can only put mappings in storage, making them expensive to manipulate…
I guess it is not straightforward to implement if it is not already, but allowing mappings in memory would be a great feature !
- Functions optimisation
You might know the 2 best practices in coding called SRP and DRY.
When you have a big chunk of code in a function, it is advised to break it into multiple smaller functions that each do only one thing. Also, If you have the same code in two or more functions, it is advised to put it into a single function and call it in the multiple places.
Those improve readability and maintainability.
Unfortunately, we tend to not apply them in Solidity to improve gas costs.
Not sure how possible it is, but it would be super useful to implement some kind of optimisation/transpilation at compilation that would allow to create many functions without affecting gas cost.
A naive way I can think of doing that would be to cut/paste the opcodes of private and internal functions into the functions who call them at compilation, removing the use of the JUMP opcode. The cases where this would happen would of course need to be adjusted depending if we want to rather optimise for deploy time or run time.
Hopefully this feedback can help in any way !