Clause
← All dokumentation

Det engelska originalet har ändrats sedan översättningen gjordes, så delar av den kan vara inaktuella. Läs på engelska

Översatt från det engelska originalet · 1e3a39c8-dirty · 2026-10-26

Inbyggda funktioner

Funktioner som runtime implementerar i C++: erlang-BIF:ar och funktioner i andra moduler vars motsvarigheter i OTP är BIF:ar, NIF:ar eller behöver runtime. Registrerade efter modul, funktion och aritet; nås direkt, via dynamiska anrop eller som funs. Källkoden finns i runtime/src/builtins/; observerbara skillnader från OTP finns i skillnader.

Vilka inbyggda funktioner som finns

Hur anrop når dem

KällaVäg
abs(X), X + Y, display, halt, errorInline-kod eller en särskild tjänst
Inbyggda funktioner i katalogen utan inline-tjänst (A -- B, ...)Inträde som i en funktion: CLAUSE_builtin_frame_v1, argument i register
Direkta inbyggda funktioner (gör aldrig trap, väntar aldrig och rör aldrig en annan process)CLAUSE_builtin_call_v1 returnerar resultatet
Snabba inbyggda funktioner (length, binary_to_list, list_to_binary, iolist_to_binary)Begränsad snabb väg (256 celler, 4096 resultatbyte); annars inträde i ramen
A ++ BKort äkta A kopieras inline; annars inträde
fun abs/1, fun erlang:'+'/2Extern fun erlang:F/A bunden till den inbyggda funktionen
M:F(Args), apply/3, fun M:F/A vid körningModulexport först, sedan inbyggd funktion

Portioner

Inbyggda funktioner vars arbete växer med en lista eller binary körs i begränsade portioner, som OTP:s trapping-BIF:ar.

Typade inbyggda funktioner

Registrering

Källkodslayout

Modulen erlang

Externt termformat

erlang/term_encoding.cpp, term_decoding.cpp; kodek delad med kompilatorn (external_term.hpp), explicita stackar.

Tid

erlang/time.cpp.

Systeminformation

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

Hashning

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

Kodladdning

erlang/code.cpp. Varje modul länkas och förblir laddad; dynamisk kod är uppskjuten.

Modulen lists

builtins/lists/. OTP:s lists är Erlang, så inbyggda funktioner ger de fel som dess klausuler ger.

Modulen math

builtins/math.cpp.

Modulen binary

builtins/binary/; replace/3,4 och list_to_bin/1 är Erlang.

Modulen maps

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

Samlingar

builtins/collections/: varje dokumenterad funktion i ordsets, orddict, proplists, dict, sets, gb_trees, gb_sets, queue, array.

Mängder av mängder

Graf

Digraph

ETS

builtins/ets/ ovanpå runtimens tabeller (runtime).

Dets

dets.erl ovanpå clause_dets (builtins/dets/): OTP:s filformat version 9, byte för byte, samma filordningar.

Kodningar

builtins/encoding/.

POSIX-meddelanden

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

Nätverksnamn

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

Filnamn

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: qlc:s parse transform vid körning, för qlc:string_to_handle/1,2,3 och qlc:q/1,2 i utvärderad kod. Moduler som kompileras med qlc.hrl får fortfarande värd-OTP:ns transformering (parse transforms).

Qlc

library/stdlib/qlc.erl: varje funktion i Erlang, eftersom utvärderingen anropar frågans funs. Skriven utifrån OTP:s dokumentation; algoritmerna är OTP:s där svar, deras ordning eller info/1,2 visar dem.

Strängar

builtins/string/: varje string-funktion.

URI-strängar

builtins/uri/.

Slumptal

builtins/rand/.

Kalender

builtins/calendar.cpp.

Timer

builtins/timer.cpp.

Persistenta termer

builtins/persistent_term.cpp ovanpå runtimens tabell (runtime).

Modulen unicode

builtins/unicode/: varje funktion är inbyggd.

Modulen code

builtins/code.cpp. Ingen code_server-process; svaren beskriver det länkade programmet.

Modulen io

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

Modulen os

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

Modulen init

builtins/init.cpp, library/erts/init.erl. Ett startat system utan bootskript.

Atomics och counters

builtins/atomics.cpp.

Erts internal

builtins/erts_internal.cpp, library/erts/erts_internal.erl: funktionerna som stdlib och kernel anropar.

Unicode util

unicode_util.erl ovanpå inbyggda funktioner i clause_unicode och genererade tabeller (unicode/tables.cpp).

io_lib

io_lib.erl, builtins/io_lib/. OTP:s djupa teckenlistor byggs i en C++-arena; io:format använder samma motor.

Kompilatortabeller

builtins/front_end/.

Erl scan

erl_scan.erl ovanpå clause_erl_scan:scan/6 (front_end/scanner*.cpp), dess egen skanner som följer OTP:s scan1/5.

Erl parse

erl_parse.erl ovanpå clause_erl_parse:parse/1 (front_end/parser*.cpp), en rekursiv nedstigningstolk för OTP:s grammatik.

Erl eval

erl_eval.erl tolkar det abstrakta formatet i Erlang; inbyggda funktioner i clause_erl_eval hanterar bitsyntaxsegment (front_end/erl_eval.cpp) och mönstermatchning (front_end/eval_match.cpp), och erl_eval:partial_eval/1 och is_constant_expr/1 är också inbyggda funktioner.

Erl lint

Kontrollerna i erl_lint är inbyggda funktioner (front_end/lint*.cpp), skrivna efter OTP:s erl_lint klausul för klausul; erl_lint.erl behåller det som anropar funs eller andra moduler.

Erl pp

Utskriften i erl_pp är en inbyggd funktion (front_end/pp*.cpp), clause_erl_pp:print/2, porterad från den tidigare Erlang-modulens två pass; erl_pp.erl behåller krokarna och legalize_vars/1.

Epp

Villkoren i epp:s -if och -elif utvärderas av en inbyggd funktion, clause_epp:eval_if/1 (front_end/epp_eval.cpp), så ett program som förbehandlar filer inte länkar erl_eval.

Erl expand records

erl_expand_records:module/2 är en inbyggd funktion (front_end/expand_records.cpp): expansionen går igenom former i C++ i stället för en stor klausuldispatch i Erlang, så program som anropar den inte kompilerar någon extra kod.

Modulen zlib

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

Modulen zstd

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

ASN.1-kodek

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

Publik nyckel

builtins/public_key/ i clause_runtime, library/public_key/clause_public_key.erl (public_key): record-genomgångarna och tabellerna i OTP:s pubkey_translation och pubkey_cert_records, som clause_public_key_codec anropar.

Modulen crypto

builtins/crypto/ i det separata arkivet clause_runtime_crypto, library/crypto/crypto.erl och clause_crypto.erl.

Modulen re

builtins/re/, re.erl ovanpå medföljande PCRE2 (PCRE2).

Prim eval

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