O despachador de funções Solidity é uma árvore onde:
- Os nós internos realizam divisões binárias.
- Os nós folha contêm até 4 seletores de função, testados linearmente.
Dica 1: o bytecode da função `fallback` é gerado duas vezes no bytecode. Para reduzir o tamanho do bytecode, envolva a lógica de fallback em uma função interna.
Dica 2: se você tiver uma função muito utilizada, crie um alias com um seletor de função `0x00000000`, o que a torna a mais barata para procurar.
- Um dos desafios na concepção de uma biblioteca será qual algoritmo deve ser utilizado. Pesquise por que o mapa do C++ é uma árvore, enquanto o unordered_map só surgiu 15 anos depois.
- Bibliotecas com generics dependem fortemente da capacidade do compilador de realizar abstrações de custo zero com o mínimo de ajustes. No Solady, às vezes fazemos coisas muito desagradáveis para ajustar o compilador. A razão pela qual escrever em Rust e C++ é agradável é porque o compilador é inteligente o suficiente para não precisar de todos esses ajustes. Portanto, o core do Solidity precisaria de um otimizador realmente bom para ir além das conveniências sintáticas dos generics.
- Cauteloso em relação a uma possível situação semelhante ao Python 2 vs 3. Espero que os aprendizados no core possam e irão voltar para o classic.
- Em um mundo de Solidity classic e core, o Solady planeja manter e desenvolver para ambos. Linguagens com uma biblioteca padrão louca ainda têm bibliotecas de terceiros (por exemplo, Eigen), para conhecimento específico de domínio.
Apresentando 'O Caminho para a Core Solidity', uma série de posts no blog através dos quais compartilharemos para onde estamos indo com a linguagem.
Vamos dar uma olhada na visão geral!