Clause
← Toda la documentación

El original en inglés ha cambiado desde que se hizo esta traducción, por lo que partes de ella pueden estar desactualizadas. Leer en inglés

Traducido del original en inglés · 1e3a39c8-dirty · 2026-10-26

Builtins

Funciones que el runtime implementa en C++: BIF de erlang y funciones de otros módulos cuyos equivalentes en OTP son BIF, NIF o necesitan el runtime. Registradas por módulo, función y aridad; alcanzadas directamente, mediante llamadas dinámicas y como funs. Los fuentes están en runtime/src/builtins/; las diferencias observables respecto a OTP están en diferencias.

Qué builtins existen

Cómo los alcanzan las llamadas

Código fuenteRuta
abs(X), X + Y, display, halt, errorCódigo en línea o un servicio dedicado
Builtins del catálogo sin servicio en línea (A -- B, ...)Se entra como en una función: CLAUSE_builtin_frame_v1, argumentos en registros
Builtins directos (nunca hacen trap, esperan ni acceden a otro proceso)CLAUSE_builtin_call_v1 devuelve el resultado
Builtins rápidos (length, binary_to_list, list_to_binary, iolist_to_binary)Ruta rápida acotada (256 celdas, 4096 bytes de resultado); si no, se entra en el marco
A ++ BUn A propio corto se copia en línea; si no, se entra
fun abs/1, fun erlang:'+'/2Fun externo erlang:F/A vinculado al builtin
M:F(Args), apply/3, fun M:F/A en tiempo de ejecuciónPrimero la exportación del módulo, después el builtin

Porciones

Los builtins cuyo trabajo crece con una lista o un binary se ejecutan en porciones acotadas, como los BIF de OTP que hacen trapping.

Builtins tipados

Registro

Organización del código fuente

Módulo erlang

Formato externo de términos

erlang/term_encoding.cpp, term_decoding.cpp; códec compartido con el compilador (external_term.hpp), pilas explícitas.

Tiempo

erlang/time.cpp.

Información del sistema

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

Hashing

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

Carga de código

erlang/code.cpp. Todos los módulos se enlazan y permanecen cargados; el código dinámico queda aplazado.

Módulo lists

builtins/lists/. El lists de OTP es Erlang, por lo que los builtins lanzan lo que lanzan sus cláusulas.

Módulo math

builtins/math.cpp.

Módulo binary

builtins/binary/; replace/3,4 y list_to_bin/1 son Erlang.

Módulo maps

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

Colecciones

builtins/collections/: todas las funciones documentadas de ordsets, orddict, proplists, dict, sets, gb_trees, gb_sets, queue, array.

Conjuntos de conjuntos

Grafo

Grafo dirigido

ETS

builtins/ets/ sobre las tablas del runtime (runtime).

Dets

dets.erl sobre clause_dets (builtins/dets/): formato de archivo versión 9 de OTP idéntico byte a byte, mismos órdenes en los archivos.

Codificaciones

builtins/encoding/.

Mensajes POSIX

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

Nombres de red

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

Nombres de archivo

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: la transformación sintáctica de qlc en tiempo de ejecución, para qlc:string_to_handle/1,2,3 y qlc:q/1,2 en código evaluado. Los módulos compilados con qlc.hrl siguen recibiendo la transformación del OTP del anfitrión (transformaciones sintácticas).

Qlc

library/stdlib/qlc.erl: todas las funciones en Erlang, ya que la evaluación llama a los funs de la consulta. Escrito a partir de la documentación de OTP; los algoritmos son los de OTP donde los revelan las respuestas, su orden o info/1,2.

Cadenas

builtins/string/: todas las funciones de string.

Cadena URI

builtins/uri/.

Números aleatorios

builtins/rand/.

Calendario

builtins/calendar.cpp.

Temporizador

builtins/timer.cpp.

Términos persistentes

builtins/persistent_term.cpp sobre la tabla del runtime (runtime).

Módulo unicode

builtins/unicode/: todas las funciones son builtins.

Módulo code

builtins/code.cpp. Sin proceso code_server; las respuestas describen el programa enlazado.

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. Un sistema arrancado sin script de arranque.

Atomics y counters

builtins/atomics.cpp.

Erts internal

builtins/erts_internal.cpp, library/erts/erts_internal.erl: las funciones que llaman stdlib y kernel.

Unicode util

unicode_util.erl sobre builtins de clause_unicode y tablas generadas (unicode/tables.cpp).

io_lib

io_lib.erl, builtins/io_lib/. Listas profundas de caracteres de OTP construidas en un área de memoria de C++; io:format usa el mismo motor.

Tablas del compilador

builtins/front_end/.

Erl scan

erl_scan.erl sobre clause_erl_scan:scan/6 (front_end/scanner*.cpp), su propio analizador léxico que sigue scan1/5 de OTP.

Erl parse

erl_parse.erl sobre clause_erl_parse:parse/1 (front_end/parser*.cpp), un analizador de descenso recursivo de la gramática de OTP.

Erl eval

erl_eval.erl interpreta el formato abstracto en Erlang; los builtins de clause_erl_eval manejan segmentos de sintaxis de bits (front_end/erl_eval.cpp) y coincidencia de patrones (front_end/eval_match.cpp), y erl_eval:partial_eval/1 e is_constant_expr/1 también son builtins.

Erl lint

Las comprobaciones de erl_lint son builtins (front_end/lint*.cpp) escritos siguiendo el erl_lint de OTP cláusula por cláusula; erl_lint.erl conserva lo que llama a funs u otros módulos.

Erl pp

La impresión de erl_pp es un builtin (front_end/pp*.cpp), clause_erl_pp:print/2, portado de las dos pasadas del módulo Erlang anterior; erl_pp.erl conserva los hooks y legalize_vars/1.

Epp

Las condiciones -if y -elif de epp las evalúa un builtin, clause_epp:eval_if/1 (front_end/epp_eval.cpp), para que un programa que preprocesa archivos no enlace erl_eval.

Erl expand records

erl_expand_records:module/2 es un builtin (front_end/expand_records.cpp): la expansión recorre formas en C++ en lugar de un gran despacho de cláusulas Erlang, de modo que los programas que lo llaman no compilan 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.

Códec ASN.1

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

Clave pública

builtins/public_key/ en clause_runtime, library/public_key/clause_public_key.erl (public_key): los recorridos de records y tablas de pubkey_translation y pubkey_cert_records de OTP, que llama clause_public_key_codec.

Módulo crypto

builtins/crypto/ en el archivo de biblioteca independiente clause_runtime_crypto, library/crypto/crypto.erl y clause_crypto.erl.

Módulo re

builtins/re/, re.erl sobre la versión incluida de PCRE2 (PCRE2).

Prim eval

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