Il dispatcher della funzione Solidity è un albero dove:
- I nodi interni eseguono divisioni binarie.
- I nodi foglia contengono fino a 4 selettori di funzione, testati linearmente.
Protip 1: il bytecode della funzione `fallback` viene generato due volte nel bytecode. Per ridurre la dimensione del bytecode, racchiudi la logica di fallback in una funzione interna.
Protip 2: se hai una funzione utilizzata molto frequentemente, crea un alias con un selettore di funzione `0x00000000`, che la rende la più economica da cercare.
- Una delle sfide nella progettazione di una libreria sarà quale algoritmo utilizzare. Scopri perché la mappa di C++ è un albero, unordered_map è arrivato solo 15 anni dopo.
- Le librerie con generics dipendono fortemente dalla capacità del compilatore di astrarre a costo zero con il minimo intervento. In Solady, a volte facciamo cose molto disgustose per spingere il compilatore. Perché scrivere in Rust e C++ è piacevole è perché il compilatore è abbastanza intelligente da non aver bisogno di tutti questi interventi. Quindi il core di Solidity avrebbe bisogno di un ottimo ottimizzatore per andare oltre le carinerie sintattiche dei generics.
- Cautela su una possibile situazione Python 2 vs 3. Spero che gli insegnamenti nel core possano e torneranno a influenzare il classico.
- In un mondo di Solidity classico e core, Solady prevede di mantenere e sviluppare per entrambi. Linguaggi con una libreria standard pazzesca, hanno comunque librerie di terze parti (ad es. Eigen), per conoscenze specifiche del dominio.
Presentiamo 'La Strada verso la Core Solidity', una serie di post sul blog attraverso i quali condivideremo la direzione in cui ci stiamo muovendo con il linguaggio.
Diamo un'occhiata all'overview!