Clause
← Gesamte Dokumentation

Das englische Original wurde seit dieser Übersetzung geändert, daher können Teile davon veraltet sein. Auf Englisch lesen

Übersetzt aus dem englischen Original · 1e3a39c8-dirty · 2026-10-26

Builtins

Funktionen, die die Runtime in C++ implementiert: erlang-BIFs und Funktionen anderer Module, deren OTP-Gegenstücke BIFs oder NIFs sind oder die Runtime brauchen. Nach Modul, Funktion und Stelligkeit registriert; direkt, über dynamische Aufrufe und als funs erreichbar. Die Quellen liegen in runtime/src/builtins/; beobachtbare Abweichungen von OTP stehen unter Unterschiede.

Welche Builtins es gibt

Wie Aufrufe sie erreichen

QuelleWeg
abs(X), X + Y, display, halt, errorInline-Code oder ein eigener Dienst
Katalog-Builtins ohne Inline-Dienst (A -- B, ...)Wie eine Funktion betreten: CLAUSE_builtin_frame_v1, Argumente in Registern
Direkte Builtins (kein Trap, kein Warten, kein Zugriff auf einen anderen Prozess)CLAUSE_builtin_call_v1 liefert das Ergebnis
Schnelle Builtins (length, binary_to_list, list_to_binary, iolist_to_binary)Begrenzter Schnellpfad (256 Zellen, 4096 Ergebnisbytes); sonst den Frame betreten
A ++ BKurzes echtes A inline kopiert; sonst betreten
fun abs/1, fun erlang:'+'/2Externer fun erlang:F/A, an das Builtin gebunden
M:F(Args), apply/3, fun M:F/A zur LaufzeitZuerst Modulexport, dann Builtin

Portionen

Builtins, deren Arbeit mit einer Liste oder einem binary wächst, laufen in begrenzten Portionen, wie die trappenden BIFs von OTP.

Typisierte Builtins

Registrierung

Aufbau der Quelltexte

Modul erlang

Externes Termformat

erlang/term_encoding.cpp, term_decoding.cpp; mit dem Compiler geteilter Codec (external_term.hpp), explizite Stacks.

Zeit

erlang/time.cpp.

Systeminformationen

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

Hashing

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

Laden von Code

erlang/code.cpp. Jedes Modul wird eingebunden und bleibt geladen; dynamischer Code ist aufgeschoben.

Modul lists

builtins/lists/. OTPs lists ist Erlang, daher lösen Builtins aus, was seine Klauseln auslösen.

Modul math

builtins/math.cpp.

Modul binary

builtins/binary/; replace/3,4 und list_to_bin/1 sind Erlang.

Modul maps

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

Sammlungen

builtins/collections/: jede dokumentierte Funktion von ordsets, orddict, proplists, dict, sets, gb_trees, gb_sets, queue, array.

Mengen von Mengen

Graph

Digraph

ETS

builtins/ets/ über den Tabellen der Runtime (Runtime).

Dets

dets.erl über clause_dets (builtins/dets/): OTP-Dateiformat der Version 9 Byte für Byte, gleiche Dateireihenfolgen.

Kodierungen

builtins/encoding/.

POSIX-Meldungen

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

Netzwerknamen

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

Dateinamen

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: der qlc-Parse-Transform zur Laufzeit, für qlc:string_to_handle/1,2,3 und qlc:q/1,2 in ausgewertetem Code. Mit qlc.hrl kompilierte Module erhalten weiterhin den Transform des Host-OTP (Parse-Transforms).

Qlc

library/stdlib/qlc.erl: jede Funktion in Erlang, da die Auswertung die funs der Abfrage aufruft. Nach OTPs Dokumentation geschrieben; die Algorithmen sind die von OTP, wo Antworten, ihre Reihenfolge oder info/1,2 sie sichtbar machen.

Zeichenketten

builtins/string/: jede string-Funktion.

URI-Zeichenketten

builtins/uri/.

Zufallszahlen

builtins/rand/.

Kalender

builtins/calendar.cpp.

Timer

builtins/timer.cpp.

Persistente Terme

builtins/persistent_term.cpp über der Tabelle der Runtime (Runtime).

Modul unicode

builtins/unicode/: jede Funktion ist ein Builtin.

Modul code

builtins/code.cpp. Kein code_server-Prozess; Antworten beschreiben das eingebundene Programm.

Io-Modul

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

Os-Modul

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

Modul init

builtins/init.cpp, library/erts/init.erl. Ein gestartetes System ohne Boot-Skript.

Atomics und Counters

builtins/atomics.cpp.

Erts internal

builtins/erts_internal.cpp, library/erts/erts_internal.erl: die von stdlib und kernel aufgerufenen Funktionen.

Unicode util

unicode_util.erl über clause_unicode-Builtins und erzeugten Tabellen (unicode/tables.cpp).

io_lib

io_lib.erl, builtins/io_lib/. OTPs tief verschachtelte Zeichenlisten, aufgebaut in einer C++-Arena; io:format verwendet dieselbe Implementierung.

Compiler-Tabellen

builtins/front_end/.

Erl scan

erl_scan.erl über clause_erl_scan:scan/6 (front_end/scanner*.cpp), ein eigener Scanner nach OTPs scan1/5.

Erl parse

erl_parse.erl über clause_erl_parse:parse/1 (front_end/parser*.cpp), ein Parser mit rekursivem Abstieg für OTPs Grammatik.

Erl eval

erl_eval.erl interpretiert das abstrakte Format in Erlang; clause_erl_eval-Builtins behandeln Bitsyntaxsegmente (front_end/erl_eval.cpp) und Musterabgleich (front_end/eval_match.cpp), und erl_eval:partial_eval/1 sowie is_constant_expr/1 sind ebenfalls Builtins.

Erl lint

Die Prüfungen von erl_lint sind Builtins (front_end/lint*.cpp), Klausel für Klausel nach OTPs erl_lint geschrieben; erl_lint.erl behält, was funs oder andere Module aufruft.

Erl pp

Die Ausgabe von erl_pp ist ein Builtin (front_end/pp*.cpp), clause_erl_pp:print/2, aus den zwei Durchläufen des früheren Erlang-Moduls portiert; erl_pp.erl behält die Hooks und legalize_vars/1.

Epp

Die -if- und -elif-Bedingungen von epp werden von einem Builtin ausgewertet, clause_epp:eval_if/1 (front_end/epp_eval.cpp), sodass ein Programm, das Dateien vorverarbeitet, erl_eval nicht einbindet.

Erl expand records

erl_expand_records:module/2 ist ein Builtin (front_end/expand_records.cpp): Die Expansion durchläuft Formen in C++ statt über eine große Erlang-Klauselauswahl, sodass Programme, die sie aufrufen, keinen zusätzlichen Code kompilieren.

Modul zlib

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

Zstd-Modul

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

ASN.1-Codec

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

Öffentliche Schlüssel

builtins/public_key/ in clause_runtime, library/public_key/clause_public_key.erl (public_key): die record-Durchläufe und Tabellen von OTPs pubkey_translation und pubkey_cert_records, die clause_public_key_codec aufruft.

Crypto-Modul

builtins/crypto/ im separaten Archiv clause_runtime_crypto, library/crypto/crypto.erl und clause_crypto.erl.

Modul re

builtins/re/, re.erl über dem gebündelten PCRE2 (PCRE2).

Prim eval

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