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

Skillnader mot Erlang/OTP

Observerbart beteende där Clause medvetet skiljer sig från den fastlåsta OTP 29 (maint-29, se otp-reference.md). Varje post länkar till det kontrakt som äger den. Ta bort en post när skillnaden är åtgärdad. Funktioner som ännu inte är implementerade (rapporteras som notimpl) listas inte här; se features.md och planen.

Maps

SkillnadOTPClauseÄgare
Ordning för map-generatorer (K := V <- M)Platta maps (upp till 32 nycklar) itereras i nyckelordning, men atomnycklar i atomtabellens ordning, som varierar mellan VM-körningar; större maps i hashordningAlltid kanonisk nyckelordning (termordning)mönster
bad_generators-nyttolast för en map-generator i en zip-gruppDess iterator: en {K, V, Next}-kedja som slutar i none, i OTP:s ordningSamma kedja, byggd i kanonisk nyckelordningmönster
maps:iterator/1,2, maps:next/1, erts_internal:map_next/3, ordningen som maps-funs körs i (intersect_with/3, merge_with/3, ...), proplists:get_keys/1, sets av version 2 (to_list/1, fold/3)Intern ordning (atomtabellordning för atomnycklar, hashordning över 32 nycklar); en iterator är en position eller en {K, V, Next}-kedjaKanonisk nyckelordning; en iterator fortsätter över en nyckellistainbyggda funktioner
Utskrift av maps (erlang:display/1, ~w, ~p)Intern layoutordning (atomtabellens ordning för atomnycklar, hashordning över 32 nycklar)Map-nyckelordning, som OTP:s ~kwtermer
Ordning för digraph:vertices/1, edges/1, source_vertices/1, sink_vertices/1 samt för ordningar och komponenter i digraph_utils som utgår från dessa listorNod- och kanttabellernas hashordningClauses hashordning (ETS); vägar och grannlistor följer kantinsättningen i bådainbyggda funktioner
Ordningen för maps:keys/1, values/1, to_list/1, fold/3, medlemmarna som json:encode/1 skriver, fälten som erl_parse:abstract/1,2 ger en map samt nodlistor och traverseringar i graphMapens interna ordning (atomtabellsordning för atomnycklar, hashordning över 32 nycklar)Nyckelordningbibliotek
Utskrift av native records (erlang:display/1)Fält i atomtabellens indexordningDefinitionsordning, som ~wnative records
== mellan native records vars fält skiljer sig endast som heltal/flyttalKompilatorn kan vika det till =:= (falskt)Numerisk jämförelse (sant)native records
Extern konstruktion av ett native record från en modul som inte är laddadMisslyckas tills den definierande modulen laddasVarje modul i batchen laddas vid uppstart; en modul utanför batchen misslyckas alltidnative records
Utskrift av lokala funs (#Fun<M.Index.Uniq>)Index från kompilatorns lambdanumrering, Uniq en hash av modulens kodIndex bland modulens lokala funs i källkodsordning, Uniq alltid 0funs
Ordning mellan två lokala funs i en modulEnligt OTP:s indexEnligt index i källkodsordning, så funs från olika funktioner kan ordnas annorlundafuns
Namn på anonyma funs i stackspårningar (-f/1-fun-N-)N från kompilatorns numreringN räknar funs i f/1 i källkodsordningfuns
En anonym fun i ett standardvärde för ett record-fältVarje konstruktionsställe expanderar en egen kopia: funs från två ställen är olikaEn fun för standardvärdet: funs från alla konstruktionsställen är likafuns
Ordning för infångade värden i funs som skapas i comprehensionsFria variabler i comprehensionens genererade funktionDefinitionsordning i den omslutande funktionen; syns endast när två sådana funs jämförsfuns

Pids, referenser och processer

SkillnadOTPClauseÄgare
Engångs- och intervalltimers i timer utom sändningar till lokala pidsKörs av processen timer_server, som startas under kernel_sup vid första användningen; signalerna från exit_after/2,3 kommer från denIngen timerserver: varje timer är en egen process som skickar signalen från exit_after; cancel/1 returnerar innan processen har sett avbrytandetinbyggda funktioner
Pid-nummerDen första användarprocessen är ungefär <0.80.0>; nummer återanvänds när pid-tabellen slår runtDen första processen är <0.1.0>; nummer kommer från en enda sekvens och återanvänds aldrigtermer
Kod efter spawn(Fun) av en fun med annan aritetKompilatorns typanalys kan betrakta koden efter anropet som onåbar och ta bort den, så att anroparen genast returnerar pid:enAnroparen fortsätter; endast den nya processen misslyckas med {badarity, {Fun, []}}processer
Stacken för en function_clause som en inbyggd funktion i lists ger (lists:sublist/2, lists:max/1, ...)Den översta ramen är Erlang-funktionen, ofta en intern hjälpfunktion (lists:sublist_2/2), med dess argumentAnroparen ligger överst: inbyggda funktioner lägger inte upp någon raminbyggda funktioner
Sista biten i resultat från math (math:erfc(1), ...)Det C-bibliotek som OTP byggdes medDet C-bibliotek som Clause-program länkar (Windows: 0.15729920705028513 för erfc(1), OTP 0.1572992070502851)inbyggda funktioner
Resultatet av binary:compile_pattern/1{bm, Ref} eller {ac, Ref} med en ogenomskinlig referens{bm, [Pattern]} eller {ac, Patterns}inbyggda funktioner
binary:referenced_byte_size/1 för en sub-binaryStorleken på den binary den pekar in iDess egen storlekinbyggda funktioner
Minne för ersatta eller raderade persistenta termerÅtervinns av en insamlarprocess för literalområden som får varje process att kopiera ut värdet i bakgrundenVarje process kopierar ut det vid nästa tidskvantum (parkerade direkt, av put/erase), sedan frigörs området; ingen insamlarprocessruntime
Persistenta termer som skickas i meddelandenFörblir delade, som literaler: mottagarens heap växer inteKopieras till mottagarens heap som alla andra termerruntime
persistent_term:info/0 och get/0Innefattar de termer som OTP:s kernel och stdlib lagrar vid uppstart (26 i OTP 29)Endast programmets egna termerinbyggda funktioner
code:is_loaded/1, code:which/1, code:all_loaded/0 för en kompilerad modulDen .beam-fil den laddades frånpreloaded: varje modul är länkad in i den körbara fileninbyggda funktioner
Alternativet priority till send/3, link/2, exit/3, exit_signal/3Prioriterade meddelanden och signaler går före vanligaGodtas; levereras som vanliga meddelanden och signalerprocesser
spawn/2,4, spawn_link/2,4, spawn_monitor/2,4 som anger en annan nodEn varningsrapport ** Can not start ... on Node ** loggasIngenting skrivs ut; den oanvändbara piden avslutas ändå med noconnectionprocesser
Flaggor för system_flag/2 utom backtrace_depth och min_heap_size (fullsweep_after, schedulers_online, multi_scheduling, max_heap_size, ...)Ändrar emulatornKontrolleras och läses tillbaka utan effekt; system_logger börjar som undefined (ingen loggerprocess); cpu_topology, erts_alloc, scheduler_bind_type ger badarginbyggda funktioner
Timers för en suspenderad process (receive ... after, send_after/3 och start_timer/3 till dess pid)Suspenderas med processen tills den återupptas (OTP 28, 29)Fortsätter köras: en timeout som löper ut under suspenderingen hanteras när processen återupptas; ett timermeddelande väntar i dess brevlådaprocesser
Utdata från process_display/2OTP:s stackdump med adresser och stackplatserEn Module:Function/Arity per ramprocesser
process_flag(save_calls, N)Sparar de senaste N anropen för process_info(Pid, last_calls)Behålls och läses tillbaka; inga anrop sparasprocesser
adler32_combine/3, crc32_combine/3 med en andra storlek över 2^31 - 1 på WindowsKombinerasbadarg (zlibs z_off_t är 32 bitar där)inbyggda funktioner
init:get_arguments/0, init:get_argument/1Emulatorns flaggor: root, bindir, progname, home och varje -Flag på kommandoradenEndast home; en körbar fil har inga emulatorflaggorinbyggda funktioner
init:script_name/0, init:script_id/0Startskriptets sökväg och {"Erlang/OTP", "29"}Den körbara filens absoluta sökväg och {"Clause", "29"}inbyggda funktioner
init:get_status/0, init:ensure_loaded/1 i ingången{starting, started} och kodladdning medan escript-, -s- eller -eval-kod körs under uppstarten; {started, started} och not_allowed när systemet har startatAlltid svaren för ett startat systeminbyggda funktioner
init:stop/0,1, init:reboot/0Returnerar ok; init tar sedan ner applikationerna och stoppar, medan anroparen fortsätter köraStoppar direkt; anropet returnerar aldriginbyggda funktioner
init:get_argument(home) på Windows utan HOMEDRIVE/HOMEPATHSkalets profilmappUSERPROFILE, normalt samma mappinbyggda funktioner
erlang:halt(Slogan), init:stop(Slogan)Skriver ut sloganen, skriver erl_crash.dump i aktuell katalog och meddelar det på stderr; slutstatus 1Skriver ut sloganen på stderr, skriver ingen kraschdump; slutstatus 1körbara filer
init:restart/0,1, init:boot/1, init:make_permanent/2Startar om systemet i samma nod, startar det, eller anger startskriptet för nästa omstartAvvisas: felet notsup, {error, notsup} från make_permanent/2inbyggda funktioner
Aritet för atomics:new/2Varje positivt heltal som allokeraren kan betjäna; ett enormt värde avslutar noden med en kraschdump1 till 2^27, annars badarginbyggda funktioner
counters med write_concurrencyRäknare per schemaläggare som summeras vid läsning; minnet i info/1 växer med antalet schemaläggareEn atomics-array; minnet i info/1 är arrayensinbyggda funktioner
erts_internal:term_type/1Den interna representationen: flatmap eller hashmap, heap_binary, refc_binary eller sub_binary, ...Varje map är flatmap, varje bitstring sub_binaryinbyggda funktioner
erl_prim_loader:get_path/0Uppstartens kodsökväg["."] fram till set_path/1portar
file:read_link_info/1,2 för en symbolisk länk på WindowsLänkens egna reparse-point-dataMålets storlek och tider med typen symlinkportar
inet:gethostbyname/1,2Resolverns kanoniska namn och alias (inet_res, hosts-filen, native)Det efterfrågade namnet och inga alias; adresser från systemets resolverportar
Modulen socketSocket-NIF-API:tSaknas: en referens är ett kompileringsfel; använd gen_tcp, gen_udp, inetbibliotek
net:getifaddrs/1,2 med en namnrymd, inet:getifaddrs([{netns, _}])net anropar sig själv utan slut (OTP 29); inet läser namnrymden på Linux{error, enotsup}inbyggda funktioner
Utdatalistor från zlibEn binary per intern del, nästlad där en ström avslutades och startades omEn binary per anrop, [] när det inte finns någon; byten är OTP:sinbyggda funktioner
zlib:safeInflate/2 och långa zlib-anropReturnerar efter en begränsad mängd utdata ({continue, Output}) och lämnar ifrån sig körningenPackar upp all köad indata i ett anrop ({finished, Output}); ett långt anrop håller kvar sin schemaläggartrådinbyggda funktioner
Långa re-matchningarre:run/3 och den globala loopen lämnar ifrån sig körningen efter en begränsad mängd arbeteEn matchning körs till slut och håller kvar sin schemaläggartråd; en global körning lämnar ifrån sig endast mellan matchningarinbyggda funktioner
re:compile/2 med export, re:import/1Ett exporterat mönster {re_exported_pattern, ...} som en annan nod importerarexport ger badarg; import/1 ger {not_implemented, import, 1}inbyggda funktioner
Argumentfel i rebadarg från re:run/3 (eller replace, split) med anroparens argument och error_infobadarg från den re-hjälpfunktion som avvisade argumentet, med den hjälpfunktionens argumentinbyggda funktioner
code:is_sticky/1true för moduler i kernel, stdlib och compiler, och för moduler i kataloger som code:stick_dir/1 angettAlltid false; stick_dir/1 kontrollerar bara att katalogen kan listasinbyggda funktioner
code:root_dir/0 och den ursprungliga kodsökvägenOTP:s installationskatalog; sökvägen innehåller dess lib/*/ebin-katalogerDen körbara filens katalog; sökvägen innehåller ebin-katalogerna i lib/ bredvid den och i ERL_LIBS, sedan "."inbyggda funktioner
code:load_file/1, load_abs/1, load_binary/3, atomic_load/1, prepare_loading/1 med giltig objektkodLaddar modulen{error, badfile}: varje modul länkas in i den körbara filen (D01)inbyggda funktioner
code:coverage_support/0 och täckningsfunktionernatrue med JIT; täckningslägen och räknarefalse; de andra ger badarg, som OTP gör utan täckningsstödinbyggda funktioner
code:get_doc/1 för en modul som programmet harDess dokumentationsblock enligt EEP 48{error, missing}: körbara filer bäddar inte in dokumentationinbyggda funktioner
Formatering av en stor term (io:format/1,2)Körs i Erlang-kod (io_lib) och i group leader, så processen kan avbrytas under formateringenKörs till slut i ett enda anrop av en inbyggd funktion; andra processer väntarinbyggda funktioner
Flaggor till process_flag/2trap_exit, priority, message_queue_data, min_heap_size med fleraEndast trap_exit och min_heap_size; alla andra flaggor ger badargprocesser
Ordning för felrapporter från processer som kraschar samtidigtLoggerns ordningDen ordning i vilken deras arbetstrådar avslutar demprocesser
Exit-signaler (exit/2, exit_signal/2) till en process som körs på en annan schemaläggareKöas i dess signalkö och hanteras senare, medan avsändaren fortsätterAvsändaren väntar tills målets tidsskiva tar slut och agerar sedan direkt; observerbart endast som timing (meddelanden buffras och avsändaren fortsätter)processer
term_to_binary/1 av en lokal fun eller ett native recordKodas (NEW_FUN_EXT, ...)error:notsup; fun M:F/A kodasinbyggda funktioner
term_to_binary/1 av en map med fler än 32 nycklarHashordning om inte deterministic angesAlltid nyckelordning (byten från deterministic)inbyggda funktioner
binary_to_term/1 av en annan nods pid, port eller referens; alternativet local till term_to_binary/2Externa identiteter; kodningen LOCAL_EXTbadarginbyggda funktioner
Tidsgräns för timersBeror på den nativa tidsenheten (ungefär 2^49.7 ms på Windows)Relativ tid 0..2^49-1 ms på alla plattformarprocesser
unique_integer/0,1 utan positiveKan vara negativtAlltid positivt och växandeinbyggda funktioner
Posterna current_function, initial_call, current_stacktrace, ... i process_info/2Rapporteraserror:{notsup, Item}; process_info/1 utelämnar demprocesser
reductions i process_info/2; reductions, garbage_collection, io i statistics/1Räknas0 (hålls inte)inbyggda funktioner
garbage_collect/0,1,2Samlar skräp innan anropet returnerarSamlar skräp vid målets nästa safepointprocesser
erlang:system_info(machine), och därmed ?MACHINE i epp och makrot det anger"BEAM", 'BEAM'"Clause", 'Clause'inbyggda funktioner
erlang:system_info(schedulers) i ett program som startats med en affinitetsmask (start /affinity, taskset)En schemaläggare per logisk processor på värden (32 med en mask för 7 CPU:er), schedulers_online en per CPU i maskenBåda en per CPU i masken: Clause startar bara de aktiva arbetstrådarnaprocesser
Inställningsalternativ för spawn_opt/2..5 (priority, min_heap_size, ...)TillämpasKontrolleras och godtas, tillämpas inteprocesser
hibernate/3Kastar stacken; processen avslutas när M:F returnerarBehåller stacken; resultatet av M:F returneras till anroparen av hibernate/3processer
monitor(port, Item, Options) med alternativGodtasbadargprocesser
spawn_request_abandon/1true medan svaret väntarAlltid false: svaret skickas innan spawn_request returnerarprocesser
Sista biten i math:log2/1 (Windows)OTP:s Windows-bygge dividerar log(X) med log(2) (math:log2(1.0e308) är 1023.1538532253077)C-bibliotekets log2 (1023.1538532253076)inbyggda funktioner
phash/2, phash2/1,2 för pids, portar, referenser, funs och native recordsHashar av OTP:s process-, port- och referensnummer, en funs index och unika nummer, en record-definitions hashHashar av Clauses nummer, en funs modul, aritet eller index och fångade värden, en records fältvärden; varje annan term hashas till OTP:s värdeinbyggda funktioner
dict:fold/3, map/2, filter/2 med något som inte är en funfunction_clause, eller {badfun, F} när den första hinken OTP besöker innehåller en postfunction_clauseinbyggda funktioner
erlang:is_builtin/3 för lists:reverse/2 och andra biblioteksfunktioner implementerade i Ctruefalse: endast runtimens inbyggda funktioner och apply/2,3funs
pid, uniq, new_uniq från fun_info/1,2 för en lokal funSkaparens pid, kompilatorns kontrollsummorundefined, MD5 av modulnamnetfuns
Kontexten från md5_init/0OTP:s tillstånd på 92 byteClauses tillstånd på 96 byte; sammandragen är likainbyggda funktioner
erlang:delete_module/1 för en laddad modulGör dess kod gammal (true)error:notsup: länkad kod ligger kvarinbyggda funktioner
erlang:prepare_loading/2Förbereder en giltig BEAM-binaryAlltid {error, badfile}inbyggda funktioner
erlang:pre_loaded/0De förladdade uppstartsmodulernaVarje modul i programmetinbyggda funktioner
list_to_pid/1 av ett nummer som aldrig delats utReturnerar en pid-termbadarg: endast pids som detta program har skapat godtastermer
list_to_port/1 av ett nummer som aldrig delats utReturnerar en porttermbadarg: endast portar som detta program har öppnat godtasportar
Värden från port_info/1,2id är ett tabellindex; memory, queue_size, locking beskriver drivrutinenid är portnumret; memory och queue_size är 0; locking är port_levelportar
Skrivning till en fil som öppnats endast för läsning{error, eacces} på Windows, {error, ebadf} på andra system{error, ebadf} överalltportar
Porten i win32regDen inlänkade porten registry__drv__ ({spawn, "registry__drv__ rw"}), som besvarar kommandon med portmeddelandenDrivrutinen clause_registry ({spawn_driver, ...}), som ger samma svar via port_control/3; port_info/2 anger namnet clause_registryports
Programnamnet i argparse utan alternativet prognameEmulatorns progname (erl)Den körbara filens namn utan filändelse (init har inget progname)bibliotek
Översta stackramen för ett fel vid kommandovalidering i argparseDen validerande funktionen (argparse:validate_command/2, validate_option/2, en fun i dem) med [Entity]argparse:validate/2 med [Entity]inbyggda funktioner
escript:script_name/0Escriptets sökväg, det första vanliga argumentetDen körbara filens sökväg: ett Clause-program är sitt eget skriptbibliotek
escript:extract/2 med compile_sourceKällkoden kompilerad till en beam{error, {compile, ...}}: Clause-program har ingen kompilatorbibliotek
erl_abstract_code:debug_info(core_v1, ...) (Core Erlang i beam_lib)Core Erlang från kompilatorn{error, failed_conversion}: Clause-program har ingen kompilatorbibliotek
zstd:get_frame_header/1 för ett avkortat ramhuvudFält från oinitierat minneFälten är noll ('ZSTD_frame', storlekar 0)inbyggda funktioner
file:open/2 med raw eller ramEtt #file_descriptor{} record som hanteras i anroparen (is_pid/1 är falskt); io-begäranden till det misslyckas; en ram-fil saknar read_line/1 (undef) och en stängd fil svarar {error, einval}En filserver-pid som för andra filer; positionerad I/O och sendfile/5 svarar som för OTP:s raw-filer; en ram-fil besvarar read_line/1 och I/O-begäranden med {error, enotsup}, och {error, terminated} när den stängtsports
file:truncate/1 på en fil som öppnats endast för läsningPlattformens fel (eacces på Windows, einval på andra system)C-runtimens fel för deskriptorn (ebadf eller einval); servern stannar som i OTPports
Filer som öppnats eller ställts in på {utf16, _} eller {utf32, _}Rader och tecken avkodas enligt kodningenRader slutar vid en byte med värdet 10 innan de avkodasports
Sekvenser från io_ansi på Linux och macOSFrån terminfo-databasen för TERM där den har förmågan (setaf, sgr0, ...); tput/1,2, tigetnum/1, tigetflag/1, tinfo/0 läser denDe inbyggda ANSI-sekvenser OTP använder utan terminfo (som OTP på Windows); tigetnum/1, tigetflag/1, tinfo/0 svarar {error, enotsup}, tput/1,2 ger {enotsup, Capability}; enabled/0,1 kräver ett annat TERM än dumbbibliotek
io_ansi:scan/1 och tput/1,2 på WindowsMisslyckas med try_clause på terminfos {error, enotsup}scan/1 matchar de inbyggda sekvenserna; tput/1,2 ger {enotsup, Capability}bibliotek
socket på Windows: recvmsg, sendmsg, sendfile, sendmmsg, recvmmsgGer notsupFungerar som på Linux och macOSbibliotek
socket på Windows: ett datagram längre än längden för recv{error, {completion_status, ...more_data...}}Datagrammet avkortas, som på andra systembibliotek
socket på Linux och macOS: ioctl/2,3,4, getopt_native/3, setopt_native/3, open/1,2 för en deskriptor, domänen local, SCTPStödsAvvisas som OTP på Windows avvisar dem ({error, {invalid, ...}}, notsup); local ger {error, eafnosupport}bibliotek
socket:info/1, i/0,1,2NIF:ens räknare och tillstånd, fd är deskriptornRäknare för gjorda anrop, tillstånd som modulen håller reda på; Fd är portnumretbibliotek
Svar från inet_resSvar från gethostbyname, getbyname och gethostbyaddr cachas enligt TTL i inet_db; en cachad uppslagning kan lista adresser i en annan ordningIngenting cachas: varje uppslagning frågar namnservrarnabibliotek
Resolverkonfiguration på Linux och macOSinet_db läser även host.conf/nsswitch.conf och inetrc-filer, följer ändringar i resolv.conf och härleder på Linux domänen från värdnamnetRaderna nameserver, domain och search i resolv.conf samt hosts-filen, lästa en gångbibliotek
os:set_signal(Signal, handle) (Linux, macOS)Signalen skickas till erl_signal_server, vars standardhanterare stoppar systemet vid sigterm och avslutar det vid sigusr1 och sigquitIngen erl_signal_server: sigterm och sigquit avslutar med status 0, sigusr1 med status 1, andra ignoreras; utan set_signal behåller SIGTERM systemets standardåtgärdports
Tomma argument till {spawn_executable, F} på WindowsTas bort från kommandoradenSkickas som ""portar
{exit_status, S} och eof från ett startat programOspecificerad ordning, exit_status kan komma före sista datatEfter allt data, före eofportar
Upptagna portarEn port med för mycket köad utdata suspenderar avsändare, även socketportar; force i port_command/3 fungerar på drivrutiner som tillåter detEndast portar för startade program blir upptagna; fd- och socketportar blir det aldrig; force ger notsup på alla drivrutinerportar
{active, N} för socketarEtt heltal N räknar meddelanden före {tcp_passive, S}exit(badarg); endast true, false och onceportar
Socketalternativ i själva inet_drv (header, deliver, exit_on_close, send_timeout, send_timeout_close, delay_send, vattenmärken, packet_size, show_econnreset, buffer, read_packets, recvtos, recvttl, line_delimiter)TillämpasBehålls och rapporteras av getopts/2 med OTP:s standardvärden, tillämpas inte; systemets alternativ (nodelay, keepalive, linger, buffertar, tos, multicast, ...) tillämpasports
Andra socketalternativ ({packet, line | http | ...}, {raw, ...}, bind_to_device, netns)Fungerarexit(badarg) vid öppning, {error, einval} från setopts/2 och getopts/2ports
inet:getopts(S, [multicast_if]) på WindowsLäser oinitierat minne för en TCP-socket, och den ospecificerade adressen efter att en UDP-socket ställt in en adressSystemets värde; den ospecificerade adressen när socketen saknar enports
port_info(Socket, input | output), input och output i inet:info/1Byten i drivrutinens kommandon och svar0: sockettrafik räknas endast av inet:getstat/1,2ports
Felorsaker för socketarVarje POSIX-orsak som systemet rapporterarDe vanliga (econnrefused, eaddrinuse, econnreset, etimedout, ...); andra blir eioportar
Portindata medan den anslutna processen har 1 024 meddelanden och kan körasFortsätter läsa och levereraSlutar leverera tills processens tidsskiva tar slut; över 64 KiB kvarhållet slutar den läsa, så det skrivande programmet blockerasportar
gen_tcp:close/1 med köad utdataVäntar upp till inställningen linger/send_timeout på att utdatan ska skickasReturnerar direkt; I/O-tråden skickar den köade utdatan och stänger sedanportar
Typer för monitor/2process, port, time_offsetprocess och port; time_offset ger badarg (inga ändringar av tidsförskjutning)processer
exit/2, exit_signal/2 till en referensSkickar till processaliaset, om referensen är ett aktivt sådantIngenting: exit-signaler går aldrig till aliasprocesser
ReferensnummerBlandar en schemaläggaridentifierare och räknare per schemaläggare (#Ref<0.178111994.4235460610.214105>)En enda räknare för hela programmet (#Ref<0.0.0.1>), så referenser ordnas efter skapandetidtermer

Fel, stackspårningar och rapporter

SkillnadOTPClauseÄgare
Platser i stackspårningar[{file, F}, {line, L}], error_info för error/3Alltid []; ingen error_info, så erl_error:format_exception/3,4 visar inga platser eller *** argument-rader för demABI
erlang:raise/3 med stackposter {Fun, Args}GodtasAvvisasABI
Översta ramen för function_clauseArgumentlistaAritetABI
Översta ramen för undef vid ett anrop M:F(A1, ..., An){M, F, [A1, ..., An], []}{M, F, N, []}: ariteten i stället för argumenten (apply/3 och fun-anrop visar argumenten)funs
Dynamiskt anrop av en export som en körbar fil inte kan nå (dess modul namnges endast via en stackspårning, ett undantag eller ett meddelande utifrån programmet)Anropar denundef, om programmet inte byggts med --keep-exports; function_exported/3 och module_info(exports) listar den ändåkörbara filer
Ramar för BIF:ar/operatorer som misslyckasFinns ({erlang, '+', Args, ...})Saknas; ingenting under ingångsfunktionenABI
Full atomtabell (list_to_atom/1)Emulatorn avbryter (no more index entries in atom_tab) och skriver en kraschdumpclau: runtime failure: entry call failed: resource_limit, slutstatus 70inbyggda funktioner
list_to_integer/1,2 med tecken över 255De första siffrorna använder endast varje teckens låga byte ([16#131] är 1)badarginbyggda funktioner
erlang:function_exported/3 för en BIFSant för varje BIF i emulatornSant endast för de inbyggda funktioner som denna runtime tillhandahållerinbyggda funktioner
Felrapporter från kraschade processerSkickas till loggern och skrivs senare av dess standardhanterare (på standardutdata under erl, går ofta förlorade när ett escript avslutas först)Skrivs på stderr när processen avslutas, före senare utdata; ingen logger-händelse, så hanterare och filter ser den inteprocesser
Anrop till funktioner som aldrig returnerarKompileras som svansanrop (anroparen saknas i spårningen)Vanliga anrop (anroparen finns med)ABI
Undantag i en känd anonym fun vid -O2 (F = fun ... end, F(X), lists:map(fun ... end, L) och de andra listlooparna, maps:fold(fun ... end, A, M))Ramar för funen (-f/1-fun-0-) och hjälpfunktionerna i lists och maps (lists:map_1/2)Funens kropp körs infogad i anroparen: dessa ramar saknas, och en oäkta listsvans i map/2, foldl/3, all/2, any/2, flatmap/2 ger function_clause med anroparen överstfuns
Värdminnet är slutEmulatorn rapporterar att den inte kan allokera minne, skriver en kraschdump och stopparclau: runtime failure: entry call failed: out_of_memory, slutstatus 70, ingen dumpruntime-heap
Lagring av maps med fler än 32 nycklarEn HAMT på heapen med hashade noder med 16 grenarEtt B+-träd på heapen med upp till 16 poster per nod i nyckelordning; heapstorlekarna för stora maps skiljer sig från OTP:sruntime-heap
Minnestak per processmax_heap_size (i ord, heap och stack) dödar processen med orsaken killed och loggar en felrapport--max-heap / --max-stack (byte) och --max-memory för hela runtimen får den begärande processen att misslyckas som resource_limit: clau: runtime failure: entry call failed: resource_limit, slutstatus 70runtime-heap
Programargumentescript skickar varje argument till main/1; emulatorflaggor (+t) kommer från %%! eller ERL_FLAGSInledande runtime-alternativ (--max-atoms, --max-heap, --max-stack, --max-memory, --min-heap-size, --args-file, --) plockas ut först; CLAUSE_FLAGS innehåller samma alternativkörbara filer
Ofångat undantag i en vanlig ingångsmodulescript avslutar med 127Avslutar med 1 och en rad uncaught exception <class>: <reason> (escript-källor behåller 127)körbara filer
KompilatordiagnostikFormuleringar från erl_lint (variable 'X' is unbound) och varningarEgna formuleringar (unbound variable X); OTP:s lint-varningar ges i regel inte (inte heller varningar för native records: okända fält vid åtkomst, uppdatering och i mönster, kvalificerad konstruktion i den egna modulen utan värden, oanvända eller header-definierade records; ett senare mönster som matchar ett namn exporterat från en gren)semantik
Behaviour-modul med en handskriven behaviour_info/1Anropar den när användarna kompileras och varnar för saknade, felaktigt definierade eller föråldrade callbacksUtvärderas inte: användarnas callbacks kontrolleras intesemantik
Behaviour-moduler som varken finns i batchen eller i Clause-biblioteket (application, ...)Laddas från kodsökvägen; deras callbacks kontrollerasVarningen behaviour M undefinedsemantik
Standardhanteraren för loggerlogger_std_h som skriver asynkront med överlastskydd (synkroniserings-, borttagnings- och tömningslägen, gränser för skurar, avslut vid överlast)Även på standard_io (standard_error med CLAUSE_LOGGER_TYPE=standard_error), men varje händelse skrivs innan loggningsanropet returnerar; överlastalternativen kontrolleras och behålls utan effektbibliotek
Hanterarprocesser i logger_std_hÖvervakas av logger_sup, startas om efter overload_kill_restart_afterLänkade till logger-servern; en hanterare vars process dör tas bortbibliotek
net_adm:names/0,1Frågar epmd: {ok, Names} när en epmd körs på värden{error, address}: Clause saknar epmd-klientbibliotek
net_kernel:start/1,2Startar distribution, eller ger OTP:s fel när det inte gårInte tillgänglig (not_implemented)bibliotek
Spårning: erlang:trace/3, trace_pattern/2,3, trace_info/2, trace_delivered/1, system_monitor/0,1,2, system_profile/0,2, seq_trace/2, seq_trace_info/1, seq_trace_print/1,2, dt_*, modulen trace, erl_tracer:enabled/3, trace/5Spårarerror:notsupinbyggda funktioner
Token i seq_traceSkickas vidare med meddelanden; serienummer räknar dem; en systemspårare tar emot spårmeddelandenBehålls endast per process: skickas inte vidare, serienumren förblir som de ställts in, inga spårmeddelandenbibliotek
Omfattningar i pg och globalReplikeras mellan anslutna noder; pg övervakar noder via net_kernelEn nod, inga andra noder eller nodövervakningbibliotek
Applikationsresurser.app-filer som hittas på kodsökvägen vid laddning; sys.config, -config och argumenten -App Key Value ställer in miljöerKompileras in i den körbara filen från byggets resursfiler; ändringar kräver ombyggnad; inga konfigurationsfiler eller argumentbibliotek
Applikationerna kernel och stdlibStartas vid uppstart; kernel har en master och en toppsupervisorLaddade och körs utan masters: get_supervisor(kernel) är undefined, info/0 listar dem som körande undefinedbibliotek
application:ensure_all_started/3 med concurrentStartar oberoende applikationer samtidigt; listan följer ordningen de blir klara iStartar dem en efter en, beroenden förstbibliotek
application:takeover/2Väntar på den distribuerade applikationskontrollernAvslutas med noproc (ingen dist_ac), som load/2 med noder gör i bådabibliotek
I/O-begäranden till en applikationsmasterVidarebefordras till gruppledaren som applikationen startades underBesvaras på standard-I/Obibliotek
erlang:process_flag(error_handler, Module)Runtime anropar Module:undefined_function/3 och undefined_lambda/3 för odefinierade anropbadarg; process_info/2 rapporterar alltid error_handler, och odefinierade anrop ger undef direkt (error_handler kan endast anropas)bibliotek
Detaljer i kraschrapporter (proc_lib)Undantagstext från erl_error med utökad felinformation; grannar med current_function, initial_call och current_stacktrace; verkliga reductionsUndantagets klassrad och stackramar utan utökad felinformation; grannar utan dessa poster; reductions 0bibliotek
client_info i felrapporter från gen_server, gen_statem och gen_fsmDen anropande processens current_stacktrace[]: Clause behåller ingen aktuell stack för en annan processbibliotek
-behaviour med ett värde som inte är en atomVarningen skriver ut termen med ~w (behaviour [115,116,114] undefined)Skriver ut attributets källtext (behaviour "str" undefined); felet är detsammasemantik
module_info(md5) och den vsn som OTP härleder från denMD5 av den kompilerade BEAM-kodenMD5 av modulens utskrivna källkod; det härledda vsn-heltalet skiljer sig i motsvarande gradsemantik
module_info(compile)version för OTP:s kompilatorapplikation, de options som gavs till denClauses version; options alltid []semantik
module_info(functions)Listar även de funktioner som OTP genererar för funs ('-f/0-fun-0-'/0)Endast källkodsfunktionerna och de fördefinieradesemantik
-nominal i module_info(attributes)Behålls som {nominal,[{Name,AbstractType,Params}]} i abstrakt formatUtelämnassemantik
En funktion i en Clause-biblioteksmodul som Clause inte har implementerat (en erlang-BIF, lists:rmerge/2, ...)KörsKompileras; ger error({not_implemented, F, A}) när den anropas, med M:F/A överst på stacken (statusar)bibliotek, inbyggda funktioner
Import av en modul utanför batchenKompileras; anropet ger undef vid körning om modulen saknasKompileringsfelet unknown module M när importen anropas (oanvända importer behöver ingen modul)semantik
Varningen import directive overrides auto-imported BIFFör varje automatiskt importerad BIF i erl_internal:bif/2Endast för de automatiskt importerade BIF:ar som Clause implementerarsemantik

Gränsfall i språket

SkillnadOTPClauseÄgare
Heltalssegment bredare än heltalsgränsen, med ett värde bortom den (<<V:4194241>> med bara ettor)x86-JIT:en matchar med en ogiltig term; att använda den kraschar VM:enIngen matchningtermer
Zip-grupp där avslappnade och strikta generatorer delar en variabelÖverhoppningstestet behåller variabler från strikta mönster i de avslappnade mönstrenEtt avvisat steg hoppas över närhelst de strikta mönstren matchar på egen handmönster
Anrop av en extern fun, M:F(Args) eller apply/3 för en modul utanför programmetLaddar modulen från kodsökvägen, undef om den saknasundef; biblioteksmoduler blir del av programmet endast när det namnger dem med en literal atomfuns, bibliotek
Filer utan #! som ges som escriptsescript file.erl hoppar över första radenKompileras som vanliga modulerkörbara filer
Förkompilerade beam- och arkiv-escriptsKörsStöds intekörbara filer
Modulnamnet för ett escript utan -module<name>__escript plus ett suffix med tidsstämpel/unikt värde<name>__escript, deterministisktkörbara filer
include_lib av en applikation som finns i flera <app>-<version>-katalogerKodsökvägen innehåller en version (uppstarten väljer den högsta); ingen diagnostikDen högsta versionen under varje genomsökt katalog, med en varning per körning som listar dempreprocessor
En -spec vars typer inte delar något värde med det härledda resultatet, ingångsdomänen eller argumenten i ett anropKompileras; Dialyzer kan varnaEn motsagd ingångsdomän för ett argument är ett kompileringsfel som namnger de deklarerade och härledda typerna; ett motsagt resultat eller anrop är en varning, och de härledda typerna användssemantisk analys

ETS

SkillnadOTPClauseÄgare
Ordning för first/1, next/2, tab2list/1, foldl/3 och i/1 över tabeller av typen set, bag och duplicate_bag, samt vad slot/2 numrerarLinjära hashplatser besöks lås för lås; ordningen ändras när tabellen växerDelar, sedan hinkar i ordning, sedan nycklar i insättningsordning inom en hink; en plats är en hinkruntime
ets:all/0Inkluderar tabellerna i OTP:s kernel och stdlib; ordningen på schemaläggarnas svarEndast programmets tabeller, utan bestämd ordninginbyggda funktioner
memory i info/2Allokerade ord för tabellen och dess objektLagrade objektord plus Clauses egen overheadinbyggda funktioner
{write_concurrency, auto}Antalet lås anpassas till konkurrensen (64 till 8192)64 fasta delar, som för true; stats rapporterar 64 låsruntime
compressedLagrar andra element än nyckeln i externt formatGodtas och rapporteras; objekten lagras som de ärinbyggda funktioner
stats i info/2 för en ordered_set med write_concurrency; data; binaryCA-träd {RouteNodes, BaseNodes, MaxDepth}; skriver ut tabellen; tabellens binaries utanför heapenfalse; true utan utskrift; []inbyggda funktioner
badarg från en inbyggd ets-funktionInnehåller error_info med en orsak (id, access, type, ...)Enbart badarginbyggda funktioner
Ordning för resultat från select, match och match_object på hashtabeller, samt vilka resultat varje del från select/3 innehållerResultaten från varje genomgångssteg läggs först i listan, nyaste först; linjära hashplatserGenomgångsordning för Clauses delar och hinkar; varje del innehåller de första Limit insamlade resultateninbyggda funktioner
select_delete/2, select_replace/2 över en hel tabellLämnar över körningen var 1000:e objekt (tabellen fixerad under tiden)Körs i ett stycke, varje del under sitt låsruntime
Matchningsspecifikationer som anger en variabel med nummer 25 eller högreNumrerar om varje '$N'-atom i specifikationen, även inuti {const, ...} (så {const, '$30'} ger '$0')Variablerna behåller sina nummer; {const, '$30'} ger '$30'runtime
Guards och kroppar i matchningsspecifikationer som är nästlade djupare än 1000 nivåerKompileras tills C-stacken nästan är slut (system_limit)system_limitruntime
Spårningsåtgärder i erlang:match_spec_test/3: enable_trace, disable_trace, trace med giltiga flaggorÄndrar anroparens spårningsflaggor (29.1.1 kraschar utan en spårare)true efter kontroll av flaggorna (och att ett pid-argument lever); ingenting ändrasinbyggda funktioner
ets:tab2file/2,3 och file2tab/1,2Via en disk_log-process med en ny referens som namnSkrivs och läses direkt med fileinbyggda funktioner
{process_dump} och {current_stacktrace} i erlang:match_spec_test/3Processens dumptext; dess stackspårning<<>>; []inbyggda funktioner

dets

SkillnadOTPClauseÄgare
Begäranden som väntar tillsammans vid en tabellUppslagningar, insättningar och borttagningar som köats samtidigt delar en cacheuppdatering; uppslagningar besvaras innan skrivningarna görs; en fixerad tabell får vissa skrivare att sova 1 msVarje begäran i tur och ordning, efter ankomstinbyggda funktioner
Långa dets-operationer (reparationer, init_table/2,3, komprimeringar, tömningar av en stor cache)Erlang-kod, avbryts efter reduktionerEtt inbyggt anrop vardera; tabellens arbetstråd kör ingenting annat under tideninbyggda funktioner
Processer i detsdets-servern och dets_sup under kernel_safe_sup, tabeller under dets_supEn dets-server som startas vid första användningen, utan övervakning; tabellprocesser länkade till deninbyggda funktioner
Ordningen för dets:all/0Registrets ETS-ordningClauses ETS-ordning (ETS)inbyggda funktioner
RapporterEn reparation loggas på info-nivå; verbose/0,1 och DETS_DEBUG loggar mer; ett internt fel är {dets_bug, ...}Ingenting loggasinbyggda funktioner

io

SkillnadOTPClauseÄgare
~p, ~w och io_lib-skrivare för behållare nästlade djupare än 256 nivåerSkrivs utsystem_limitio
io_lib:print/4 med en kolumn eller radlängd som inte är ett heltalBeror på termen: skrivs ut (guards misslyckas tyst), function_clause eller badarithbadarith för varje behållartermio_lib
Negativ precision eller utfyllnadsantal (~.*c med -1)Loopar för evigtbadargio

erl_scan

SkillnadOTPClauseÄgare
Position för en fortsättning från tokens/3,4 (continuation_location/1, odokumenterad)Där skannern stannade, inuti det ofullständiga tokenetBörjan av det ofullständiga tokenet, som skannas igen med nästa teckenerl_scan
{compiler_internal, [ssa_checks]}Skannar kontrollkommentarer av typen %ssa% till tokenIgnoreras: de förblir kommentarererl_scan
Ett flyttal med angiven bas (16#1.8#e1, annan bas än 10) vars siffror överstiger 53 bitarMantissan konverteras som ERTS konverterar stora heltalAckumuleras i en double; sista biten kan skilja sigerl_scan
Ett listelement som inte är ett tecken inuti en sträng, citerad atom eller escape-sekvensfunction_clause, case_clause eller if_clause, beroende på klausulenfunction_clauseerl_scan

erl_parse

SkillnadOTPClauseÄgare
Token av typen '%ssa%' (SSA-kontrollklausuler i OTP:s kompilatortester)Parsas till ssa_check_when-klausulerEtt syntaxfel; erl_scan producerar aldrig tokeneterl_parse

erl_eval

SkillnadOTPClauseÄgare
Stackspårning för ett fel som evaluatorn ger ({badmatch, V}, undef för ett lokalt anrop, ...)Den evaluerande processens aktuella stack (current_stacktrace i process_info/2)Stacken vid det throw i evaluatorn som samlar in den, med Clauses ramarerl_eval

erl_lint

SkillnadOTPClauseÄgare
Behaviours som anges av -behaviourVarje modul på kodsökvägen svarar på behaviour_info/1Endast moduler som länkats in i programmet svarar; andra ger undefined_behaviourerl_lint
Ordning för flera fel som hittas i en map-fold (typvariabler som förekommer en gång i en typ, specs utan en funktion, callback-kontroller)Mapens interna ordning (atomer efter index)Termordningerl_lint
erlang:is_builtin/3 för poster i -deprecated, -removed och -unsafe som inte exporterasOTP:s BIF-tabellRuntimens inbyggda funktioner, som inkluderar nativa biblioteksfunktionererl_lint
is_guard_expr/1 för en record-konstruktionGer case_clauseSvarar om fälten är guard-uttryckerl_lint

epp

SkillnadOTPClauseÄgare
-include_lib("App/...") som inte finns på inkluderingssökvägenHittas i code:lib_dir(App), som känner till OTP:s applikationerHittas i code:lib_dir(App) på Clauses kodsökväg, som saknar OTP-applikationer om de inte läggs tillbibliotek

erl_pp

SkillnadOTPClauseÄgare
Formen på tecknen som erl_pp returnerarDjupa teckenlistorEn platt teckenlista; utdata är lika efter utplattninginbyggda funktioner

qlc

SkillnadOTPClauseÄgare
Stackspårning för ett undantag som uppstår i en markörprocess och som next_answers/1,2 ger igenMarkörens stackspårning följd av ägarens process_info(self(), current_stacktrace)Följd av stackspårningen från ett undantag som fångas i ägaren (Clause saknar posten current_stacktrace)qlc
qlc:q/1,2 i erl_eval, ets:table/1,2, dets:table/1,2 i ett program som aldrig namnger qlcqlc är alltid laddadundef för qlc: dessa når modulen via ett namn vid körning, så endast program som namnger qlc (vilket varje modul som inkluderar qlc.hrl gör) länkar in denbibliotek
Annoteringsnummer i koden för kompilerade frågor (info/2 med {format, abstract_code})OTP:s transform numrerar annoteringar runt varje heltal i modulen, inklusive tecknen i sökvägen till qlc.hrl i dess file-attributSamma transform, men Clauses qlc.hrl har en annan sökväg, så nummer efter den första frågan kan skilja sig; koden är i övrigt likaqlc

qlc_pt

SkillnadOTPClauseÄgare
Meddelanden från qlc_pt:parse_transform/2 vid körningFrån compile:noenv_forms/2 (strong_validation): erl_lint samt kompilatorns Core-pass, till exempel varningar från sys_core_foldEndast från erl_lint, som OTP:s qlc_pt gör när kompilatorn inte är tillgängligqlc_pt

Interaktivt skal

SkillnadOTPClauseÄgare
Radredigering i en terminaledlin: piltangenter, radhistorik, sökning, tabbkomplettering via edlin_expand, flerradsprompten ..>Terminalens egen radredigering (cooked); rader läses som terminalen levererar dem, med samma prompt för varje ytterligare rad i ett kommando, som OTP gör för indata via en pipebibliotek
JobbkontrollCtrl+G öppnar JCL-menyn (nya, anslutna, avbrutna och dödade skal)Ingen; bannern och tipset för långsamma kommandon nämner ändå Ctrl+G som OTP skriver dembibliotek
exit(). när skalet läser indata från en pipeEtt nytt skal startar och läser ingenting merEtt nytt skal startar och läser resten av indatanbibliotek
Program som startar skalet utan --shellVarje modul på kodsökvägen kan anropasEndast modulerna som programmet länkar; utan --keep-exports når dynamiska anrop bara exporter som programmet kan nåbibliotek
Records i kompilerade moduler (rr(Module), shell_default och user_default vid start)Läses från modulens felsökningsinformation eller källkod{error, nofile}: länkad kod behåller ingen abstrakt kod; rr/1,2,3 för källfiler och .beam-filer läser dembibliotek
save_module/1Skriver modulen och kompilerar den med c:c/1Skriver bara modulen (ingen kompilator)bibliotek
edlin_expand:expand/1,2 inuti ett anrop eller ett record-fältvärdeFunktionshuvuden och argumenttyper från funktionens specifikation (lists:seq(From, To)), atomer och typer som specifikationen tillåterMod:Fun/Arity-huvuden för de exporterade ariteterna, inga typförslag: länkad kod behåller inga specifikationerbibliotek
edlin_expand:expand/1,2 för funktioner och modulerFunktioner grupperade enligt dokumentationens grupper; moduler på kodsökvägenEn grupp Functions (ingen dokumentation); programmets modulerbibliotek
Kolumner i c:i/0,1, c:ni/0, c:regs/0Varje process initiala anrop och aktuella funktionDet initiala anropet från proc_lib eller undefined; den aktuella funktionen undefined (ingen post current_function)bibliotek

Slumptal

SkillnadOTPClauseAnsvarig
Remshöjder i rand:s normalzigguratTabellerade konstanterBeräknas till närmaste double från zigguratens konstanter; en höjd kan skilja sig i sista biten, vilket ändrar ett godkännande på den långsamma vägen endast för en dragning inom den biten från gränsen (sannolikhet nära 2^-53 per dragning på den långsamma vägen). Remsbredder och gränser observeras från OTP och är likainbyggda funktioner

crypto

SkillnadOTPClauseÄgare
Ordningen för crypto:supports(ciphers)NIF:ens tabell sorterad efter atomindex, som varierar mellan VM-körningar, sedan aliasenOTP:s tabellordning, sedan aliaseninbyggda funktioner
{File, Line} i felen {badarg | notsup | error, {File, Line}, Description} från cryptoOTP:s C-källfil och rad ({"hash.c", 111})Clauses C++-källfil och rad ({"hash.cpp", 63}); klassen och beskrivningen är OTP:sinbyggda funktioner
link_type i crypto:info/0Hur OTP länkade libcrypto (vanligen dynamic)Alltid static, även när ett installerat delat libcrypto länkasOpenSSL
Långa beräkningar med pbkdf2_hmac/5 (fler än 100 iterationer eller 64 byte)Körs på en dirty CPU-schemaläggareKörs på den anropande processens arbetstråd i schemaläggaren, som inte kör någon annan process under tideninbyggda funktioner
modules för applikationen crypto[crypto, crypto_ec_curves][crypto]bibliotek
Långa texter för crypto_one_time/4,5 och crypto_one_time_aead/4,6,7 (fler än 20000 byte)Körs på en dirty CPU-schemaläggareKörs på den anropande processens arbetstråd i schemaläggaren, som inte kör någon annan process under tideninbyggda funktioner
Applikationsvariabeln fips_mode i cryptoLäses när modulen crypto laddas: true aktiverar FIPS-lägeLäses inte (Clause saknar on_load och program saknar sys.config): använd crypto:enable_fips_mode/1 eller clau --fipscrypto
crypto:info_fips/0 utan en FIPS-leverantör som kan laddasnot_enabled när OTP byggts med FIPS-stöd, annars not_supportednot_supportedcrypto
När applikationen crypto laddasNär modulen crypto laddas (dess on_load)När en generator av typen crypto_cache, crypto_aes eller crypto_prng1 först läser rand_cache_sizebibliotek
RSA-nyckelgenerering (crypto:generate_key(rsa, ...)) och SLH-DSA-signaturerKörs på en dirty CPU-schemaläggareKörs på den anropande processens arbetstråd i schemaläggaren, som inte kör någon annan process under tideninbyggda funktioner
Alternativet rsa_sslv23_padding till crypto:public_encrypt/4 och dess syskonGodtas när OTP byggts mot en OpenSSL som har SSLv23-utfyllnad (1.1, 3.x)"Bad padding type in option rsa_padding", som OTP byggt mot OpenSSL 4inbyggda funktioner
crypto:ec_curve/1 för en kurva som det länkade libcrypto saknar (en OpenSSL byggd utan binära kurvor)Parametrarna från crypto_ec_curveserror:function_clause, som för en okänd kurva: parametrarna kommer från libcryptos inbyggda kurvorinbyggda funktioner
Avkryptering av felsökningsinformation med beam_lib i ett program som inte anropar cryptocrypto finns alltidkey_missing_or_invalid om programmet inte länkar crypto (--with-crypto), eftersom beam_lib anropar modulen dynamisktbibliotek

ASN.1

SkillnadOTPClauseÄgare
Stacken i {error, {asn1, {Reason, Stack}}}Ramar för de genererade funktionerna enc_*/dec_* och asn1rtt_*Ramar för Module:encode/2 eller decode/2 och den inbyggda kodekfunktionenasn1
Funktioner i en genererad modulExporterar även enc_Type/1,2, dec_Type/1,2 och de andra funktioner per typ som asn1ct genererarEndast encode/2, decode/2, info/0, alternativfunktionerna och värdefunktionernaasn1
En CHOICE vars kropp börjar med ... (inga rotalternativ)asn1ct rapporterar ett syntaxfelGodtasasn1
Värdemakron och funktioner som anger ett annat värde inuti en öppen typ (mgf1SHA1, rSASSA-PSS-Default-Identifier i PKCS-1)asn1ct lämnar {'Externalvaluereference', Line, Module, Name} i stället för värdetDet refererade värdetasn1
Ett runtime-fel (inte ett ASN.1-fel) medan public_key avkodar eller kodar ett tilläggsvärdeGes när det inträffar, oftast med klassen error, från den genererade funktionen dec_ext-*/enc_ext-*exit({error, {asn1, Reason}}): värdet går genom den genererade modulens decode/2 eller encode/2, som kapslar in varje felpublic_key
Standardgrupperna för Diffie-Hellman i public_key:dh_gex_group/4Grupperna som OTP genererade (lib/public_key/priv/moduli), 60–81 per storlekÅtta per storlek från OpenSSH:s moduli-fil; samma storlekar (2047 till 8191)public_key
Ramar för ett undantag i public_keypublic_key, pubkey_pem, pubkey_pbe, pubkey_cert_records, pubkey_cert, pubkey_sshpublic_key, clause_public_key_codec och clause_public_key_keyspublic_key

Parse transforms

SkillnadOTPClauseÄgare
Namnet i file-attributet för en inkluderad fil (--print-abstr, indata till transformen)Inkluderingskatalogen sammanfogad med namnet, så som det hittades (inc.hrl, /abs/dir/inc.hrl, ../inc/x.hrl)Sökvägen relativt arbetskatalogen när filen ligger under den, annars den absoluta sökvägentransformer
Annoteringar med rad 0 på importerade former (genererad kod, som från transformen qlc)En giltig rad: koden saknar källkodsradKoden tar platsen för den nod som importerades före dentransformer
generated-annoteringar på importerade former (.abstr-indata, utdata från transformer)erl_lint och kompilatorn hoppar över vissa varningar för genererad kodIgnoreras: koden kontrolleras som källkodtransformer
Formerna {error, {Location, Module, Descriptor}} i importerad kodFormateras med Module:format_error/1Deskriptorns termtext; formateringen kräver OTPtransformer
En modul med preprocessor- eller parsningsfel som namnger en parse transformTransformen körs och får felen som {error, E}-former; erl_lint rapporterar dem efteråtFelen rapporteras och transformen körs intetransformer
Kompileringsalternativ som en transform fårerlc:s fullständiga alternativlista{features, _}, report_warnings, report_errors, {cwd, _}, {outdir, _} (arbetskatalogen), {i, _}, {d, ...} och {parse_transform, _}transformer