Funkcja dispatcher w Solidity to drzewo, w którym:
- Węzły wewnętrzne wykonują podziały binarne.
- Węzły liściaste zawierają do 4 selektorów funkcji, testowanych liniowo.
Protip 1: bajtkod funkcji `fallback` jest generowany dwukrotnie w bajtkodzie. Aby zmniejszyć rozmiar bajtkodu, owiń logikę fallback w funkcję wewnętrzną.
Protip 2: jeśli masz bardzo często używaną funkcję, stwórz alias z selektorem funkcji `0x00000000`, co sprawia, że jest najtańsza do wyszukiwania.
- Jednym z wyzwań przy projektowaniu biblioteki będzie to, jaki algorytm powinien być użyty. Sprawdź, dlaczego mapa C++ jest drzewem, a unordered_map pojawił się dopiero 15 lat później.
- Biblioteki z generykami w dużej mierze zależą od zdolności kompilatora do zero-kosztowej abstrakcji przy minimalnym nudzeniu. W Solady czasami robimy bardzo obrzydliwe rzeczy, aby zmusić kompilator do działania. Dlaczego pisanie w Rust i C++ jest przyjemne, to dlatego, że kompilator jest na tyle inteligentny, że nie potrzebuje całego tego nudzenia. Dlatego rdzeń Solidity potrzebowałby naprawdę dobrego optymalizatora, aby wyjść poza syntaktyczny cukier i generyczne przyjemności.
- Ostrożnie podchodzę do możliwej sytuacji z Pythonem 2 vs 3. Mam nadzieję, że nauki w rdzeniu mogą i będą przenikać z powrotem do klasyki.
- W świecie klasycznego i rdzeniowego Solidity, Solady planuje utrzymywać i rozwijać obie wersje. Języki z szaloną standardową biblioteką wciąż mają biblioteki stron trzecich (np. Eigen), dla wiedzy specyficznej dla dziedziny.