Clause
← Toda a documentação

O original em inglês mudou desde esta tradução, pelo que partes dela podem estar desatualizadas. Ler em inglês

Traduzido do original em inglês · 1e3a39c8-dirty · 2026-10-26

Builtins

Funções que o runtime implementa em C++: BIFs de erlang e funções de outros módulos cujas contrapartes no OTP são BIFs, NIFs ou precisam do runtime. Registadas por módulo, função e aridade; chamadas diretamente, por chamadas dinâmicas e como funs. O código-fonte está em runtime/src/builtins/; as diferenças observáveis face ao OTP estão em diferenças.

Que builtins existem

Como as chamadas chegam até eles

Código-fonteCaminho
abs(X), X + Y, display, halt, errorCódigo inline ou um serviço dedicado
Builtins do catálogo sem serviço inline (A -- B, ...)Entrada como numa função: CLAUSE_builtin_frame_v1, argumentos nos registos
Builtins diretos (nunca fazem trap, esperam ou atuam sobre outro processo)CLAUSE_builtin_call_v1 devolve o resultado
Builtins rápidos (length, binary_to_list, list_to_binary, iolist_to_binary)Caminho rápido limitado (256 células, 4096 bytes de resultado); caso contrário, entrada no frame
A ++ BUm A próprio e curto é copiado inline; caso contrário, entrada
fun abs/1, fun erlang:'+'/2Fun externa erlang:F/A associada ao builtin
M:F(Args), apply/3, fun M:F/A em runtimePrimeiro a exportação do módulo, depois o builtin

Porções

Os builtins cujo trabalho cresce com uma lista ou binary executam em porções limitadas, como as BIFs com trap do OTP.

Builtins tipados

Registo

Organização do código-fonte

Módulo erlang

Formato externo de termos

erlang/term_encoding.cpp, term_decoding.cpp; codec partilhado com o compilador (external_term.hpp), pilhas explícitas.

Tempo

erlang/time.cpp.

Informação do sistema

erlang/system.cpp, erlang/system_flags.cpp.

Hashing

erlang/hashing.cpp, erlang/md5.cpp.

Carregamento de código

erlang/code.cpp. Todos os módulos são ligados e ficam carregados; o código dinâmico fica para mais tarde.

Módulo lists

builtins/lists/. O lists do OTP é Erlang, pelo que os builtins lançam o que as suas cláusulas lançam.

Módulo math

builtins/math.cpp.

Módulo binary

builtins/binary/; replace/3,4 e list_to_bin/1 são Erlang.

Módulo maps

builtins/maps.cpp, builtins/os.cpp.

Coleções

builtins/collections/: todas as funções documentadas de ordsets, orddict, proplists, dict, sets, gb_trees, gb_sets, queue, array.

Conjuntos de conjuntos

Grafo

Dígrafo

ETS

builtins/ets/ sobre as tabelas do runtime (runtime).

Dets

dets.erl sobre clause_dets (builtins/dets/): formato de ficheiro versão 9 do OTP byte a byte, mesmas ordens nos ficheiros.

Codificações

builtins/encoding/.

Mensagens POSIX

builtins/erl_posix_msg.cpp, library/stdlib/erl_posix_msg.erl.

Nomes de rede

builtins/net/, library/kernel/clause_net.erl, library/kernel/net.erl.

Filename

builtins/filename/.

Filelib

builtins/filelib.cpp, library/stdlib/filelib.erl, library/stdlib/clause_filelib.erl.

Argparse

builtins/argparse/, library/stdlib/argparse.erl, library/stdlib/clause_argparse.erl.

Qlc pt

builtins/qlc_pt/, library/stdlib/qlc_pt.erl, library/stdlib/clause_qlc_pt.erl: a transformação de análise de qlc em tempo de execução, para qlc:string_to_handle/1,2,3 e qlc:q/1,2 em código avaliado. Os módulos compilados com qlc.hrl continuam a receber a transformação do OTP do anfitrião (transformações de análise).

Qlc

library/stdlib/qlc.erl: todas as funções em Erlang, pois a avaliação chama as funs da consulta. Escrito a partir da documentação do OTP; os algoritmos são os do OTP onde as respostas, a sua ordem ou info/1,2 os revelam.

String

builtins/string/: todas as funções de string.

String URI

builtins/uri/.

Números aleatórios

builtins/rand/.

Calendar

builtins/calendar.cpp.

Timer

builtins/timer.cpp.

Termos persistentes

builtins/persistent_term.cpp sobre a tabela do runtime (runtime).

Módulo unicode

builtins/unicode/: todas as funções são builtins.

Módulo code

builtins/code.cpp. Sem processo code_server; as respostas descrevem o programa ligado.

Módulo io

builtins/terminal.cpp, library/stdlib/clause_io.erl.

Módulo os

builtins/os.cpp, library/kernel/os.erl.

Módulo init

builtins/init.cpp, library/erts/init.erl. Um sistema iniciado sem um script de arranque.

Atomics e contadores

builtins/atomics.cpp.

Erts internal

builtins/erts_internal.cpp, library/erts/erts_internal.erl: as funções que stdlib e kernel chamam.

Unicode util

unicode_util.erl sobre builtins de clause_unicode e tabelas geradas (unicode/tables.cpp).

io_lib

io_lib.erl, builtins/io_lib/. Listas profundas de caracteres do OTP construídas numa arena C++; io:format usa o mesmo motor.

Tabelas do compilador

builtins/front_end/.

Erl scan

erl_scan.erl sobre clause_erl_scan:scan/6 (front_end/scanner*.cpp), um analisador léxico próprio que segue scan1/5 do OTP.

Erl parse

erl_parse.erl sobre clause_erl_parse:parse/1 (front_end/parser*.cpp), um analisador de descida recursiva da gramática do OTP.

Erl eval

erl_eval.erl interpreta o formato abstrato em Erlang; builtins de clause_erl_eval tratam segmentos de sintaxe de bits (front_end/erl_eval.cpp) e correspondência de padrões (front_end/eval_match.cpp), e erl_eval:partial_eval/1 e is_constant_expr/1 também são builtins.

Erl lint

As verificações de erl_lint são builtins (front_end/lint*.cpp) escritos a partir de erl_lint do OTP cláusula a cláusula; erl_lint.erl mantém o que chama funs ou outros módulos.

Erl pp

A impressão de erl_pp é um builtin (front_end/pp*.cpp), clause_erl_pp:print/2, portado das duas passagens do módulo Erlang anterior; erl_pp.erl mantém os hooks e legalize_vars/1.

Epp

As condições -if e -elif de epp são avaliadas por um builtin, clause_epp:eval_if/1 (front_end/epp_eval.cpp), pelo que um programa que pré-processa ficheiros não liga erl_eval.

Erl expand records

erl_expand_records:module/2 é um builtin (front_end/expand_records.cpp): a expansão percorre formas em C++ em vez de um grande despacho de cláusulas Erlang, pelo que os programas que a chamam não compilam código adicional.

Módulo zlib

builtins/zlib/streams.cpp, library/erts/zlib.erl.

Módulo zstd

builtins/zstd/contexts.cpp, library/stdlib/zstd.erl.

Codec ASN.1

builtins/asn1/ em clause_runtime, library/asn1/clause_asn1.erl (ASN.1).

Chave pública

builtins/public_key/ em clause_runtime, library/public_key/clause_public_key.erl (public_key): os percursos de records e tabelas de pubkey_translation e pubkey_cert_records do OTP, que clause_public_key_codec chama.

Módulo crypto

builtins/crypto/ no arquivo separado clause_runtime_crypto, library/crypto/crypto.erl e clause_crypto.erl.

Módulo re

builtins/re/, re.erl sobre o PCRE2 incluído (PCRE2).

Prim eval

process/receive.cpp, library/erts/prim_eval.erl.