Dispatchern för funktionen Solidity är ett träd där:
- Interna noder utför binära delningar.
- Bladnoder innehåller upp till 4 funktionsväljare, testade linjärt.
Tips 1: "reserv"-funktionens bytekod genereras två gånger i bytekoden. Om du vill minska bytekodsstorleken omsluter du återställningslogiken i en intern funktion.
Tips 2: om du har en mycket ofta använd funktion, skapa ett alias med en "0x00000000"-funktionsväljare, vilket gör den billigast att slå upp.
- En av utmaningarna med att designa ett bibliotek kommer att vara vad som ska användas. Ta reda på varför C++:s karta är ett träd, unordered_map kom först 15 år senare.
- Bibliotek med generiska läkemedel är starkt beroende av kompilatorns förmåga att abstrakt utan kostnad med minimal nudging. I Solady gör vi ibland väldigt äckliga saker för att knuffa kompilatorn. Varför det känns bra att skriva Rust och C++ är för att kompilatorn är smart nog att inte behöva alla dessa knuffar. Så core Solidity skulle behöva en riktigt bra optimerare för att gå bortom syntax, socker, generiska finesser.
- Försiktig med en eventuell Python 2 vs 3-situation. Hoppas att lärdomarna i kärnan kan och kommer att sippra tillbaka till klassikerna.
- I en värld av klassisk och grundläggande Solidity planerar Solady att underhålla och utveckla för båda. Språk med ett galet standardbibliotek har fortfarande tredjepartsbibliotek (t.ex. Eigen), för domänspecifik kunskap.
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!