De Solidity functie-dispatcher is een boom waar:
- Interne knooppunten binaire splitsingen uitvoeren.
- Bladknopen bevatten tot 4 functie-selectors, die lineair worden getest.
Protip 1: de bytecode van de `fallback` functie wordt twee keer gegenereerd in de bytecode. Om de bytecode-grootte te verkleinen, wikkel je de fallback-logica in een interne functie.
Protip 2: als je een zeer vaak gebruikte functie hebt, maak dan een alias met een `0x00000000` functie-selector, wat het de goedkoopste maakt om op te zoeken.
- Een van de uitdagingen bij het ontwerpen van een bibliotheek zal zijn welke algoritme moet worden gebruikt. Kijk op waarom de map van C++ een boom is, unordered_map kwam pas 15 jaar later.
- Bibliotheken met generics zijn sterk afhankelijk van het vermogen van de compiler om zero-cost-abstractie te bieden met minimale aanpassingen. In Solady doen we soms zeer vervelende dingen om de compiler te duwen. Waarom het schrijven van Rust en C++ goed aanvoelt, is omdat de compiler slim genoeg is om al deze duwtjes niet nodig te hebben. Dus de kern van Solidity zou een echt goede optimizer nodig hebben om verder te gaan dan syntactische suiker en generieke netheid.
- Voorzichtig met een mogelijke Python 2 vs 3 situatie. Hoop dat de lessen in de kern kunnen en zullen terugvloeien naar de klassieke versie.
- In een wereld van klassieke en kern Solidity, is Solady van plan om voor beide te onderhouden en te ontwikkelen. Talen met een gekke standaardbibliotheek hebben nog steeds derde partij bibliotheken (bijv. Eigen), voor domeinspecifieke kennis.
Presenting 'The Road to Core Solidity', a series of blog posts through which we will share where we are headed with the language.
Let's take a look at the overview!