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

Biblioteksmoduler

Clause levererar egna versioner av de OTP-moduler som program anropar, skrivna i Erlang utifrån OTP:s dokumenterade beteende (inte kopierade från OTP:s källkod) ovanpå runtimens inbyggda funktioner, och kompilerar dem tillsammans med de program som använder dem.

Innehåll

Varje tillhandahållen modul exporterar OTP 29:s fullständiga lista för sitt namn; dess inventering <module>.terms (filer) registrerar vilka funktioner som är implementerade och vilka som är stubbar.

ModulInnehåll
listsDe vanliga funktionerna; datafunktioner som sublist/2,3, flatten/1,2, sort/1, usort/1, keymember/3, zip/2,3, merge/2 är inbyggda funktioner i runtime; varje dokumenterad funktion är implementerad (modulen lists)
mapsVarje dokumenterad funktion; get/3, merge/2, intersect/2, with/2, ... är inbyggda funktioner i runtime, funktionerna som tar funs är Erlang (modulen maps)
ordsets, orddict, proplistsVarje dokumenterad funktion; listgenomgångarna är inbyggda funktioner i runtime, funktionerna som tar funs är Erlang (samlingar)
calendarVarje dokumenterad funktion; den gregorianska aritmetiken som inbyggda funktioner i runtime, lokal tid och RFC 3339 i Erlang (calendar)
proc_lib, sysVarje dokumenterad funktion: skapande av processer med förfäder och initiala anrop, synkrona starter (init_ack, init_fail), etiketter, stop/1,3, kraschrapporter och deras text; systemmeddelandeprotokollet och felsökningsalternativ (trace, log, statistics, log_to_file, installerade funs) med OTP:s former för felsökningslistor
gen_server, gen_statem, gen_event, gen_fsm, genVarje dokumenterad funktion i Erlang ovanpå proc_lib och sys, med OTP:s meddelanden ('$gen_call' med aliastaggar, '$gen_cast', ...), återanropsresultat och åtgärder, samlingar av begärans-id:n, feltermer och rapporttexter; gen innehåller det de delar
supervisor, supervisor_bridgeVarje dokumenterad funktion: OTP:s barnspecifikationer och fel, strategier, omstartsintensitet, regler för avslutning, simple_one_for_one-barn och automatisk avslutning, som en gen_server
logger, logger_formatter, logger_std_h, logger_filters, logger_handlerVarje dokumenterad funktion i Erlang: primär-, hanterar- och proxykonfiguration med OTP:s kontroller och feltermer, modulnivåer, processmetadata, filter, makrona ?LOG_* i kernel/include/logger.hrl, formateringsmallar och den äldre rubriken, logger_std_h på enheter och filer med rotation, komprimering och filesync/1, logger_disk_log_h på diskloggar av typerna halt och wrap (båda ovanpå clause_logger_h, OTP:s gemensamma hanteraralternativ och kontroller). Servern logger är Clauses clause_logger, som startas vid första användningen med OTP:s standardhanterare på standard_io (miljövariabeln CLAUSE_LOGGER_TYPE=standard_error flyttar den till standard-fel, som golden-köraren gör för att matcha goldens skapade med OTP:s hanterare där); applikationsnivåer behöver application
disk_log, wrap_log_reader, clause_disk_log, clause_disk_log_serverVarje dokumenterad funktion i Erlang: halt-, wrap- och rotate-loggar, interna och externa, med OTP:s filformat (logghuvuden, postramar med MD5 för stora poster, wrap-index- och storleksfiler, rotate-arkiv), så filerna är byte för byte som OTP:s; en process per logg med ägare, användare, aviseringar, blockering med köade begäranden, framåtblickande loggning, en skrivcache som töms efter storlek och timer, reparation, skrivskyddade block som räknar felaktiga byte; registerservern disk_log_server med de namngivna tabellerna disk_log_names och disk_log_pids; wrap_log_reader ovanpå samma blockläsare
error_logger, error_logger_file_h, log_mf_hVarje dokumenterad funktion: meddelanden och rapporter som logghändelser med OTP:s error_logger-metadata, rapporthanterare på händelsehanteraren error_logger som matas av logghanteraren error_logger, logfile/1 med den gamla rapporttexten, wrap-filer med OTP:s index- och record-format
pg, data_publisherVarje dokumenterad funktion: omfång som data_publisher-servrar med OTP:s ETS-tabeller, anslutningar, utträden, medlemmar som avslutas, omfångs- och gruppmonitorer; omfånget har inga jämlikar
global, global_groupVarje dokumenterad funktion som på en nod som inte är distribuerad: namn (även {global, Name} i beteendena), lås och transaktioner ovanpå en global_name_server som startas vid första användningen; global_group utan grupper; låsprocessen och de interna distributionsdelarna avböjda
rpc, erpcVarje dokumenterad funktion: anrop till denna nod körs i skapade processer (rex startas vid första användningen) med OTP:s resultat och fel; andra noder är nere ({badrpc, nodedown}, {erpc, noconnection})
net_adm, net_kernel, auth, seq_traceOTP:s svar för en nod som inte är aktiv (pang, ignored, #{started => no}, nocookie); net_kernel:start/1,2 och distributionens interna delar avböjda; seq_trace behåller varje process token utan spårning
trace, erl_tracerSpårning stöds inte: varje trace-funktion och erl_tracer:s standardspårare (enabled/3, trace/5) kastar notsup, som erlangs spårningsfunktioner gör (modulen erlang); erl_tracer:behaviour_info/1 listar OTP:s återanrop
error_handlerFunktionerna för odefinierade anrop, direkt anropbara; runtime kastar själv undef och anropar dem aldrig; breakpoint/3 avböjd (ingen tolk)
timerVarje dokumenterad funktion utan OTP:s timerserver: tidsstyrda sändningar till lokala pid:ar är erlang:send_after/3, varje annan timer en egen process som nås genom ett alias i dess TRef; konverteringarna och now_diff/2 är inbyggda funktioner i runtime (timer)
filelib, clause_filelibVarje dokumenterad funktion: jokertecken kompileras och matchas av inbyggda funktioner i runtime med OTP:s regler, egenheter och fel, kataloggenomgången, frågor, ensure_dir/1, ensure_path/1, fold_files/5,6, find_file/2,3, find_source/1,2,3 (kernels source_search_rules eller OTP:s standardvärden) och safe_relative_path/2 i Erlang; även de odokumenterade formerna som tar en modul (file, erl_prim_loader eller en annan), compile_wildcard/1 (OTP:s felsökningshjälp) en stubbe (filelib)
file_sorterVarje dokumenterad funktion i Erlang: OTP:s delsekvenser (size byte sorterade i minnet), sammanslagningar (no_files temporära filer åt gången, block på 16 KiB, strömmar ordnade efter sina buffrade objekt och filnummer) och kontroller följs steg för steg, så termer som jämförs lika kommer ut och överlever unique som i OTP; formaten binary_term, binary, term och fun, header, compressed (genom file:s gzip-lager), tmpdir, indata- och utdata-funs, OTP:s feltermer
zipVarje dokumenterad funktion i Erlang, följer OTP:s arkivlayout byte för byte (lokala och centrala huvuden skapade av UNIX 6.1, utökad tidsstämpel och extra UNIX uid/gid-fält, zip64 över 4 GiB, deflate-block på 8 KiB med fullständiga tömningar ovanpå zlib), så arkiven är lika OTP:s; filer eller binaries in och ut genom OTP:s indata- och utdata-funs, filter, cwd, keep_old_files, skip_directories, foldl/3, zip_open/1,2-arkiv betjänade av en länkad process, t/1, tt/1, OTP:s feltermer; records i stdlib/include/zip.hrl
erl_tarVarje dokumenterad funktion i Erlang, följer OTP:s formatregler byte för byte: USTAR-huvuden, långa namn delas upp i ett prefix eller flyttas till utökade pax-huvuden (liksom långa namn eller namn utanför ASCII, länkar och ägarnamn, och tal för breda för oktal form), läsning av v7-, GNU- (långa namn och länkar, glesa filer), STAR-, USTAR- och pax-arkiv med OTP:s egenheter (bas-256-fält, pax-tider), compressed genom file:s gzip-lager, binaries lästa som ram-filer, enheter, init/3 för användarens I/O-funs, max_size, keep_old_files, files, cwd, verbose, kontroller av osäkra sökvägar, OTP:s feltermer och format_error/1
zstd, clause_zstdVarje dokumenterad funktion: komprimering och dekomprimering i ett anrop och som ström, parametrar, ordböcker (råa eller refererade), ramhuvuden och ordboks-id:n, i Erlang ovanpå inbyggda funktioner i runtime som håller libzstd 1.5.7-kontexter som OTP:s NIF gör (zstd); file:open/2 tar {zstd, Options}
beam_lib, erl_abstract_codeVarje dokumenterad funktion i Erlang, följer OTP:s blockhantering: IFF-genomgången med OTP:s fel, atomtabeller i båda kodningarna, symboltabeller, attribut, kompileringsinformation, literaler, felsökningsinformation och abstrakt kod genom erl_abstract_code-bakänden, dokumentation (records i kernel/include/eep48.hrl), MD5 över de betydelsebärande blocken, jämförelse och rensning av filer, kataloger och releaser, gzip-komprimerade beam-filer, build_module/1 och kryptonyckelservern med dekryptering av felsökningsinformation (genom crypto, anropad dynamiskt: länka den med --with-crypto)
io_ansiVarje dokumenterad funktion i Erlang: OTP 29:s virtuella terminalsekvenser som de inbyggda ANSI-sekvenser OTP använder utan terminfo (terminfo-frågorna svarar {error, enotsup}), format/1,2,3 och render/1,2 ovanpå io_lib, fwrite/1,2,3,4 som put_ansi-begäranden som servern för standard-indata renderar, scan/1 och enabled/0,1 från enhetens terminalflagga (modulen io)
win32regVarje dokumenterad funktion: OTP:s nyckeltolkning (rötter, absoluta, relativa och ..-sökvägar), aktuell nyckel, heltals-, sträng- och binary-värden, listningar och borttagningar ovanpå Windows registerdrivrutin (registret); {error, enotsup} på andra plattformar, som OTP
argparse, clause_argparseVarje funktion: validering med OTP:s fel, tolkning (alternativ, flaggor, nargs, åtgärder, typer med val, gränser och reguljära uttryck, anpassade typer, underkommandon, prefix, standardvärden) med OTP:s argument-maps och fel, help/1,2 med OTP:s layout och mallar, run/3 med varje hanterarform, som inbyggda funktioner i runtime som ber Erlang att anropa funs (argparse); utan progname programmets eget namn
escriptcreate/2 och extract/2 följer OTP:s sektionslayout och headerläsning (shebang-, kommentar- och emulatorargumentrader; källkod, beam- och arkivkroppar genom zip); script_name/0 är den körbara filens sökväg; körning av escripts (start/0,1, parse_file/1) avböjd
filenameVarje dokumenterad funktion enligt OTP:s Unix- och Windows-regler för värden; namngenomgångarna är inbyggda funktioner i runtime, absname/1,2 och basedir/2,3 (från HOME, XDG-variablerna och APPDATA) är Erlang (filename)
uri_stringVarje dokumenterad funktion som inbyggd funktion i runtime: RFC 3986-tolkning med OTP:s felfragment, återsammansättning, normalisering, upplösning, procentkodning och form-urlencoded-frågor (uri_string)
jsonVarje dokumenterad funktion med OTP:s iodata, fel och återanropsordning; decode/1, encode/1, format/1,2 och binary-escape-funktionerna är inbyggda funktioner i runtime, kodarna och formaterarna som tar funs och avkodarna med återanrop är Erlang (kodningar)
rand, randomVarje dokumenterad funktion med OTP:s tillstånd och sekvenser; OTP:s algoritmer körs som inbyggda funktioner i runtime, insticksgeneratorer i Erlang (slumptal)
stringVarje dokumenterad funktion som inbyggd funktion i runtime, går igenom chardata som OTP:s string.erl så att resultaten behåller OTP:s former (string)
base64Varje dokumenterad funktion som inbyggd funktion i runtime (kodningar)
arrayVarje dokumenterad funktion över OTP 29:s record; record-operationerna är inbyggda funktioner i runtime, fold- och mapfold-funktionerna är Erlang (samlingar)
gb_trees, gb_sets, queueVarje dokumenterad funktion över OTP:s träd- och köformer; operationerna utan funs är inbyggda funktioner i runtime (samlingar)
dict, setsVarje dokumenterad funktion över OTP:s records (mängder av version 1) och maps (version 2); operationer utan funs är inbyggda funktioner i runtime (samlingar)
ioget_line/1,2, get_chars/2,3 (server för standard-indata eller en öppen fil), fread/2,3 (en get_until-begäran ovanpå io_lib:fread/3), read/1..4, scan_erl_exprs/1..4, scan_erl_form/1..4, parse_erl_exprs/1..4, parse_erl_form/1..4 (get_until-begäranden ovanpå erl_scan:tokens/3,4, tolkade av erl_parse), request/1,2, requests/1,2 (OTP:s I/O-protokoll, filer), getopts/0,1, setopts/1,2, columns/0,1, rows/0,1 (terminalstorlek ovanpå clause_io:s inbyggda funktioner), get_password/0,1, write/1,2; format/1,2,3, fwrite/1,2,3, put_chars/1,2 och nl/0,1 är inbyggda funktioner i runtime (io)
io_libSkrivare, kontroller, insamlingsfunktioner, formatmotorn, pretty printer (print/1,4, ~p, chars_limit) och skannern (fread/2,3) som inbyggda funktioner i runtime med OTP:s djupa listformer, maps_order-funs som sorterar nycklar i clause_io_lib; get_until, format_prompt och write/3 är Erlang (io_lib)
sofs, clause_sofsVarje funktion; dataoperationer är inbyggda funktioner i runtime, funktionerna som tar funs och digraph-konverteringarna är Erlang (mängder av mängder)
etsTabeller, läsningar, skrivningar, genomgångar och uppdateringar som inbyggda funktioner i runtime ovanpå runtime-tabellerna; foldl/3, foldr/3, i/0..3 och fun2ms/1 i Erlang; matchningsspecifikationer (familjerna select, match, match_spec) som inbyggda funktioner ovanpå runtimens tolk, match_spec_run/2, test_ms/2, repair_continuation/2, match_delete/2 och init_table/2 i Erlang; tabellfiler (tab2file/2,3, file2tab/1,2, tabfile_info/1) i Erlang ovanpå file och clause_disk_log; to_dets/2 och from_dets/2 i Erlang ovanpå dets; table/1,2 i Erlang ovanpå qlc:table/2 (ets)
graphVarje funktion ovanpå OTP:s record; frågorna och genomgångarna är inbyggda funktioner i runtime, uppdateringarna är Erlang (graph)
digraph, digraph_utilsVarje funktion ovanpå OTP:s record med tre tabeller; uppdateringarna och läsningarna är Erlang ovanpå ets, sökningarna efter vägar och digraph_utils genomgångar är inbyggda funktioner i runtime som läser tabellerna, subgraph/2,3 och condensation/1 är Erlang (digraph)
dets, clause_detsVarje dokumenterad funktion: OTP:s server- och tabellprocesser i Erlang ovanpå en C++-motor för OTP:s version 9-filformat, filer byte för byte som OTP skriver dem; table/1,2 i Erlang ovanpå qlc:table/2 (dets)
ms_transformVarje funktion i Erlang ovanpå det abstrakta formatet: parse_transform/2 översätter literala funs som ges till ets:fun2ms/1 och dbg:fun2ms/1 i en moduls former, transform_from_shell/3 en skal-funs klausuler, med OTP:s matchningsspecifikationer, skuggningsvarningar och felkoder. En modul som använder transformeringen vid kompilering kör fortfarande värd-OTP:s ms_transform (parse transforms)
qlc_pt, clause_qlc_ptqlc:s parse transform vid körning (odokumenterad i OTP): transform_expression/2, transform_from_evaluator/2 och parse_transform/2 som inbyggda funktioner i runtime med OTP:s genererade frågekod, meddelanden och annoteringar; ms_transform körs i Erlang på begäran (qlc_pt). Kompilerade moduler som inkluderar qlc.hrl använder fortfarande värd-OTP:s transformering (parse transforms)
qlcVarje funktion i Erlang, skriven utifrån OTP:s dokumentation: frågehandtag för kompilerade frågor (OTP:s qlc_lc-handtag från transformeringen), listor, table/2-tabeller, append/1,2, sort/1,2 och keysort/2,3; utvärdering med konstanta uppslagningar, matchningsspecifikationer, sammanslagnings- och uppslagningskopplingar, cache (ets, list som spiller över till temporära filer), unique, file_sorter-sorteringar, markörer som processer, info/1,2 ovanpå erl_pp, string_to_handle/1,2,3 ovanpå qlc_pt, OTP:s feltermer och format_error/1. Handtag, tabeller, processordboksnycklar och temporära filnamn är OTP:s. stdlib/include/qlc.hrl anger transformeringen qlc, som körs på värdens OTP (qlc)
shell, clause_shell, clause_shell_eval, clause_shell_commands, clause_shell_recordsVarje dokumenterad funktion i Erlang, skriven utifrån OTP:s dokumentation: det interaktiva skalet på standard-indata (interaktivt skal): OTP:s promptar, starttext, historik (e/1, v/1, h/0), bindningar, records (rd, rr, rl, rp, rf), funktioner, typer och specs definierade vid prompten, undantagsrapporter ovanpå erl_error, resultat utskrivna som OTP skriver dem (djup 30, records), begränsade skal, catch_exception/1 och inställningsfunktionerna
shell_default, cVarje funktion: c:s kommandon med OTP:s utdata (i/0, regs/0, m/0,1, ls/0,1, flush/0, help/0, ...); kompilering (c/1,2,3, lc/1, nc/1,2), xm/1 och y/1,2 rapporterar det misslyckade anropet som OTP gör utan compiler, tools eller parsetools; h/1,2,3 hittar ingen dokumentation i länkad kod; felsökarens i-kommandon rapporterar den saknade applikationen
edlin, edlin_expandedlin:keymap/0 (den anropande radredigerarens tangentkarta; undefined utanför en sådan); edlin_expand:expand/1,2 i Erlang: komplettering av moduler, funktioner (Mod:, fun Mod:Fun/-ariteter), BIF:ar, skalkommandon, funktioner definierade i skalet, nyckelord, bindningar, record-namn och fält, map-nycklar och filsökvägar, med OTP:s sektioner och äldre matchningar; ett anrops argument föreslås som Mod:Fun/Arity-huvuden (länkad kod har inga specifikationer)
shell_docs, clause_shell_docs_markdownVarje funktion i Erlang, skriven utifrån OTP:s dokumentation: render/2..5, render_type/2..5 och render_callback/2..5 av ett givet docs_v1-block (application/erlang+html, text/markdown konverterad som OTP:s skal konverterar den, andra text/-format som de är) med OTP:s layout, radbrytning, punkter och ANSI-stilar, normalize/1, validate/1, supported_tags/0; identisk med OTP över de 51,249 renderingarna av OTP 29:s egna dokumentationsblock. Länkad kod har inga egna block (code:get_doc/1)
erl_parse, clause_erl_parseVarje funktion: parse_form/1, parse_exprs/1, parse_term/1 och yecc:s parse/1, parse_and_scan/1 ovanpå en runtime-tolk med OTP:s abstrakta format och fel; normalise/1, abstract/1,2, tokens/1,2 och precedenstabellerna som inbyggda funktioner; annoteringsgenomgångarna och format_error/1 i Erlang (erl_parse)
erl_eval, clause_erl_evalVarje funktion i Erlang ovanpå det abstrakta formatet: bindningar som orddicts eller maps, lokala och icke-lokala funktionshanterare (operatorer, BIF:ar och fel som erlang:raise/3-anrop går genom den senare), tolkade funs med OTP:s miljö, comprehensions med strikta generatorer och zip-generatorer, maybe, native records, receive ovanpå prim_eval; mönstermatchning, bit-syntaxsegment och konstantvikning är inbyggda funktioner i runtime (erl_eval). exprs/2 och expr/2 kontrollerar ett kommando med erl_lint:exprs_opt/3; qlc:q/1,2 av en frågelist-comprehension går genom qlc:transform_from_evaluator/2 med lokala anrop dolda, som OTP:s
erl_errorVarje funktion i Erlang ovanpå io_lib: format_exception/3,4 och de interna formaterarna (format_exception/6,7,8, format_stacktrace/4,5, format_call/4,5, format_fun/1,2) med OTP:s förklaringar, layouter, error_info-återanrop och alternativ. Clauses egna stackspårningar saknar platser eller error_info (skillnader), så deras rapporter visar ingetdera
erl_pp, clause_erl_ppVarje funktion; utskriften är en inbyggd funktion i runtime (erl_pp): former, attribut, typer och specs, funktioner, guards och uttryck med OTP:s layout (radbredd, indrag, strängdelar, precedensparenteser) och alternativ; hooks och legalize_vars/1 körs här; identisk med OTP över formerna i 347 OTP-källfiler och testsviter, och över 80 av dem med fem uppsättningar alternativ, inklusive hooks
erl_lint, clause_erl_lintVarje funktion; kontrollerna är inbyggda funktioner i runtime (erl_lint) med OTP:s fel, varningar, alternativ och ordning, och format_error/1-texter; beteendenas behaviour_info/1 anropas här, och is_guard_test/3 frågar först sin fun om de lokala anropen; identisk med OTP över 481 OTP-källfiler och testsviter, 474 svitfragment och 816 kommandouttryck
erl_expand_recordsmodule/2 en inbyggd funktion i runtime (erl_expand_records): tupel-records expanderas till tupeloperationer, native och importerade native records behålls, import- och BIF-anrop får sin modul, is_record/3-guard-tester omvandlas till mönster, med alternativen dialyzer, expand_inits och [no_]strict_record_tests; identisk med OTP över formerna i 347 OTP-källfiler och testsviter
epp, clause_eppVarje funktion i Erlang utom -if-villkoren, som utvärderas av en inbyggd funktion (epp): en server per öppen källfil med OTP:s former, makron (argument, överlagring, ??Arg, ?FUNCTION_NAME, fördefinierade och de från alternativet macros), inkluderingar, villkor, -file, -feature, -error/-warning, dokumentationsfiler och fel; filer läses i sin helhet och avkodas enligt sin kodningskommentar. Identisk med OTP över 1,110 parse_file/scan_file-anrop på OTP-källfiler och testsviter. -include_lib hittar headrar enbart genom inkluderingssökvägen tills code:lib_dir/1
erl_scanVarje funktion: string/1,2,3 och de återinträdesbara tokens/3,4 ovanpå en runtime-skanner med OTP:s token, annoteringar, alternativ, återanrop och fel; åtkomstfunktioner och format_error/1 i Erlang (erl_scan)
erl_internal, erl_annoVarje funktion som inbyggd funktion i runtime: OTP:s tabeller för BIF:ar, guards, typtester och operatorer, fördefinierade funktioner och annoteringar (kompilatortabeller)
records, erl_featuresReflektion för native records, definitioner vid körning och kompilerade definitioner med vikta standardvärden (native records); OTP 29:s funktioner och de som varje modul kompilerades med (kompilatortabeller)
binaryVarje funktion; replace/3,4 och list_to_bin/1 i Erlang, de övriga inbyggda funktioner i runtimen (modulen binary)
mathVarje funktion som inbyggd funktion i runtimen (modulen math)
unicodeVarje funktion som inbyggd funktion i runtime: konverteringar, bin_is_7bit/1, byteordningsmärken, normalformer, kategorier och identifieraregenskaper (modulen unicode)
unicode_utilVarje funktion över genererade tabeller, chardata-genomgångarna som inbyggda funktioner i runtime (unicode_util)
reVarje funktion utom import/1, ovanpå PCRE2 (modulen re)
fileVarje dokumenterad funktion: öppna, läsa, skriva, positionera och stänga filer (på disk, compressed eller i minnet med ram), positionerade läsningar och skrivningar, truncate/1, advise/4, allocate/3, läsning och skrivning av hela filer, consult/1, eval/1,2, script/1,2 och deras path_-former med path_open/3 (filen läses i sin helhet och avkodas enligt sin kodningskommentar, UTF-8 som standard, som epp:set_encoding/1 gör i clause_epp, och skannas sedan form för form med OTP:s resultat och fel), filinformation och dess ändringar (write_file_info/2,3, change_*), katalogoperationer ovanpå fildrivrutinen, sendfile/2,5 som OTP:s blockvisa reservlösning och format_error/1 (filer)
erl_posix_msgOTP:s interna modul för file:format_error/1: message/1 som inbyggd funktion i runtime (POSIX-meddelanden)
gen_tcp, gen_udp, inet, clause_socket, clause_socket_optionsSocketar ovanpå socketportar, med deras alternativ, statistik, status och listningar (socketar); inet:get_rc/0 från clause_inet_config
socketVarje dokumenterad funktion i Erlang ovanpå socketdrivrutinens portar (socketar): {'$socket', Ref}-handtag hållna av en clause_socket_registry-process och tabell (ägare, tillstånd, räknare, meta, monitorer, listningar), open/bind/listen/accept/connect, send/sendto/sendmsg/sendv/sendfile/sendmmsg, recv/recvfrom/recvmsg/recvmmsg med OTP:s fel för partiella data, nowait som slutförandemeddelanden på Windows och select-meddelanden på andra plattformar, cancel/2, OTP:s alternativnamn och fel för ogiltiga värden, info/0,1, i/0,1,2, supports/0,1,2; SCTP-anrop kastar notsup och gränssnittsbegäranden avvisas, som OTP på Windows
gen_sctpVarje dokumenterad funktion: ingen SCTP, så open/0,1,2 svarar {error, eprotonosupport} efter OTP:s alternativkontroller och de andra ser en stängd eller främmande socket; error_string/1 har OTP:s texter
inet_res, clause_inet_configVarje dokumenterad funktion i Erlang: OTP:s DNS-klient ovanpå gen_udp och gen_tcp (omförsök, alternativa namnservrar, EDNS, trunkering över TCP, servfail-väntetider, OTP:s fel, söklistor, CNAME-kedjor och hostents) med meddelanden kodade och avkodade av DNS-kodeken i clause_net (nätverksnamn); namnuppslagningskonfigurationen som OTP laddar den på en nod som inte är distribuerad (ingen på Windows; resolv.conf och hosts-filen på andra plattformar)
net, clause_netVarje dokumenterad funktion: värd-, adress- och tjänsteuppslagningar och gränssnittslistorna som inbyggda funktioner i runtime med prim_net:s resultat, filtren i Erlang; inga nätverksnamnrymder (nätverksnamn)
clause_socketClauses egen: protokollet för socketdrivrutinen som de tre modulerna ovan delar
oscmd/1,2 ovanpå en port med OTP:s skalprotokoll, max_size och exception_on_failure; frågor om miljö, tid och version, find_executable/1,2 och set_signal/2 som inbyggda funktioner (modulen os)
codeFrågor om laddade moduler utan kodserver; kodsökvägen i en persistent term med OTP:s sökvägsändringar, lib_dir/priv_dir-uppslagningar, where_is_file/1, all_available/0, clash/0; laddningssvar för länkad kod (modulen code)
application, application_controllerVarje dokumenterad funktion: laddning, nycklar, miljöer, starter med beroenden och startfaser, stopp, behörigheter och omstartstyper med OTP:s fel och rapporter, ovanpå en styrenhet som startas vid första användningen och clause_application_master (applikationer); releasehantering, uppstart och distribuerad styrning avböjda
erlangGenererade stubbar för varje export i OTP 29:s erlang; katalogens inbyggda funktioner har platshållarkroppar, nif_error/1,2 har kroppar, andra kastar {not_implemented, F, A} när de anropas (modulen erlang)
initEtt startat systems svar; boot/1, restart/0,1 och make_permanent/2 avvisas (modulen init)
persistent_termVarje funktion som inbyggd funktion i runtimen (persistenta termer)
atomics, countersVarje funktion (atomics och counters)
erts_internal, erts_code_purgerDet som stdlib och kernel anropar; grupperna för distribution, .beam, emulator och rensningsprocess avböjda (erts_internal)
erl_prim_loaderFilfrågor ovanpå file; laddning och arkiv avböjda (filer)
zlibVarje funktion ovanpå den fastlåsta zlib (modulen zlib)
prim_eval'receive'/2 ovanpå stegen i en kompilerad receive (prim eval)
public_key:s ASN.1-moduler ('OTP-PKIX', 'PKIX1Explicit-2009', ...) och public_key.hrlGenererade vid byggning från library/public_key/asn1/ till byggträdets library-asn1/public_key/ (public_key)
public_key, clause_public_key_codec, clause_public_key_keys, clause_public_keyApplikationen public_key (med public_key.app): DER- och PEM-kodning, PEM-kryptering, privata PKCS #8-nycklar av varje typ och certifikat i plain- och otp-formerna ovanpå de genererade modulerna (public_key, publik nyckel); nycklar, signaturer, RSA-kryptering, nyckelgenerering och nyckelöverenskommelse, certifikatsignering ovanpå crypto (clause_public_key_keys, nycklar); valideringsfunktionerna är stubbar
clause_asn1Kodeken som modulerna clau genererar från ASN.1-specifikationer anropar (ASN.1-kodek, ASN.1); OTP:s applikation asn1 (asn1ct, asn1rt_nif) tillhandahålls inte
crypto, clause_cryptoApplikationen crypto (med crypto.app), ovanpå OpenSSL:s libcrypto i runtime-arkivet för kryptografi (modulen crypto, OpenSSL): algoritmlistorna som länkad OpenSSL har (supports/0,1, hash_info/1, info/0, info_lib/0), kondensat och hashtillstånd, HMAC/CMAC/Poly1305 och MAC-tillstånd, pbkdf2_hmac/5, hash_equals/2, exor/2, mod_pow/3, chiffer och deras tillstånd (crypto_init/3,4, crypto_update/2, crypto_final/1, crypto_get_data/1, crypto_one_time/4,5, cipher_info/1), AEAD (crypto_one_time_aead/4,6,7, crypto_one_time_aead_init/4), starka slumptal och rand-insticken crypto, crypto_cache, crypto_aes och crypto_prng1, OTP:s feltermer; motorer avvisas (notsup); FIPS-läge kan växlas som OTP:s, eller låsas med clau --fips; publika nycklar (sign/4,5, verify/5,6, RSA-kryptering, generate_key/2,3, compute_key/4, privkey_to_pubkey/2: RSA, DSA, DH, ECDSA/ECDH på namngivna och explicita kurvor, EdDSA, X25519/X448, ML-DSA, SLH-DSA, SRP), ec_curve/1 och ec_curves/0 (explicita parametrar från länkad libcrypto), ML-KEM (encapsulate_key/2, decapsulate_key/3)

Resultat och felorsaker stämmer med OTP 29, inklusive felens form i OTP:s Erlang-implementationer (lists:map(F, x) är {case_clause, x}, lists:nth(0, L) function_clause, lists:seq(1, 10, 0) badarg) och i dess BIF:ar (lists:member/2, lists:keyfind/3, lists:reverse/2, maps-funktionerna: badarg, {badmap, M}, {badkey, K}). lists:member/2 matchar med =:=, lists:keyfind/3 med ==. lists:sort/1 är en stabil inbyggd funktion i runtime (jämförelse och ordning). Stackspårningar anger biblioteksfunktionerna, inte OTP:s.

Interaktivt skal

shell:start_interactive/0,1 startar Erlang-skalet på standardströmmarna, och clau --shell länkar in det i en körbar fil vars ingångspunkt det är om inte --entry anger en annan (kompilera). Processen clause_shell tar den plats som OTP:s user_drv har: den skriver ut systemversionen, startar shell:s server och startar en ny när ett skal avslutas (exit().). Servern läser varje kommando genom io:s server för standard-indata med prompten utskriven på nytt för varje ytterligare rad i ett kommando, behåller historiken och startar utvärderaren, som kontrollerar varje uttryck med erl_lint, expanderar records och utvärderar det med erl_eval. Resultat skrivs ut med skalets records genom runtimens pretty printer (clause_io_lib:pretty/2, io_lib). Slutet på indata avslutar programmet med status 0 efter *** Terminating erlang (nonode@nohost).

Kommandon anropar moduler med namn, så ett program som startar skalet behöver varje export anropbar: --shell behåller dem (exporters livslängd) och länkar in varje biblioteksmodul; ett program byggt utan det når bara de moduler det anger. Indatarader läses som terminalen levererar dem, redigerade av terminalen själv: det finns ingen edlin-radredigering, historiktangenter eller tabbkomplettering (skillnader).

Hur program får dem

Ersättningar för runtime-moduler

Clause ersätter de OTP-moduler som ERTS implementerar i C (NIF:ar, BIF:ar, portdrivrutiner, de förladdade modulerna i erts/preloaded/src) och moduler som OTP genererar när det byggs (unicode_util). OTP:s kernel och stdlib är vanlig Erlang men anropar dessa moduler.

Tillhandahållen eller saknad

Allt som behöver runtimen och inte kan skrivas i vanlig Erlang avgörs per modul, och per grupp av funktioner där en modul blandar ansvarsområden:

Funktioner som är triviala för runtimen implementeras utan ett separat beslut.

Vilken modul ett namn löses till

OTP är valfritt på användarens maskin; när det finns får det inte ändra vad ett bygge kompilerar. Ett modulnamn löses i denna ordning:

  1. Explicita indata: källfiler som användaren listar (sources, source_dirs, positionella indata). En som har namnet på en Clause-modul ersätter den, med en varning som namnger båda filerna.
  2. Clause-moduler: biblioteksmodulerna, inklusive tillhandahållna ersättningar.
  3. source_search_paths, så som beskrivs i projekt.

Namnet på en saknad modul är reserverat: en fil med samma namn på en söksökväg (till exempel OTP:s erts/preloaded/src/prim_file.erl) används inte, och diagnostiken säger att Clause inte tillhandahåller modulen. En explicit indata kan ändå tillhandahålla den, med ersättningsvarningen.

ignore_modules gäller även Clause-moduler: en ignorerad Clause-modul saknas i batchen, och en explicit indata kan då tillhandahålla den utan varning, eftersom inget ersätts.

Filer

Dokumenterade funktioner

library/documented.terms listar de publika funktioner som OTP 29 dokumenterar för erts, kernel, stdlib, crypto och public_key: {Module, Application, Name, Arity}. per funktion vars modul- och funktionsdokumentation inte är dold och som inte är föråldrad, observerade från värd-OTP:s dokumentationsblock av tests/compiler/library/observe_docs.escript (körs uttryckligen). Odokumenterade exporter stannar i inventeringarna men får förbli stubbar.

Typer

Eftersom Clauses moduler vinner över OTP:s måste OTP-kod som anger file:filename() eller erlang:time_unit() i sina specs hitta de typerna i Clauses moduler. Varje tillhandahållen modul vars OTP-motsvarighet exporterar typer inkluderar <module>.types.hrl från sin egen katalog: listan -export_type, sedan de exporterade typerna och de lokala typer och records som de använder, så som OTP definierar dem (dokumentationen visar samma definitioner; den installerade dokumentationen innehåller inga typdefinitioner, så de kommer från implementationen: beam-filens felsökningsinformation, eller den levererade källkoden för en förladdad modul som erlang). escript tests/compiler/library/observe_types.escript LIBRARY APP MODULE skriver headern från värdens OTP, och --check jämför dess former med en ny observation (CTest library_freshness); library_modules.py check kräver att varje header inkluderas av sin modul. Typer som headrarna anger från moduler utanför programmet (unicode:chardata(), calendar:datetime()) och OTP:s breda unioner (file:posix() har fler medlemmar än typgrafen behåller) löses till term() utan varning: diagnostiken hör till Clauses bibliotek, inte till användarens program.

Kärntjänster vid uppstart

OTP:s file, io och code anropar registrerade servrar (file_server_2, code_server, en gruppledares io-server) som applikationen kernel startar vid uppstart. En körbar fil från Clause startar ingen av dem: Clauses egna file och io behöver ingen server, Clauses logger startar sin server vid första användningen, och en OTP-modul som behöver en misslyckas på samma sätt som den misslyckas i OTP utan den servern (noproc). OTP-kod som anropar code under körning fungerar därför inte. Att starta hela applikationen kernel är inte planerat.

Applikationer

Liggare

Projektplanen schemalägger varje dokumenterad modul i erts, kernel och stdlib; verkliga program (luerl först) sätter prioriteringarna. Kompilera och kör det, klassificera varje fel (unknown module, undefined function M:F/A, syntax eller funktion som inte stöds, annat) och tilldela vart och ett ett plan step, en annan post i eftersläpningen eller ett registrerat avböjande. Med körningens stderr sparad i en fil skriver python tests/compiler/library/library_modules.py report FILE ut klassificeringen som tabeller: varje okänd modul med sitt antal fel, anropande moduler och anropade funktioner med ariteter; odefinierade funktioner per modul; andra meddelanden med sina antal.

Verktyg

Alla finns i tests/compiler/library/: