~/f/erlang27/RPMS.2 ~/f/erlang27 ~/f/erlang27 RPMS.2/erlang27-27.1.3-1.1.x86_64.rpm RPMS/erlang27-27.1.3-1.1.x86_64.rpm differ: byte 225, line 1 Comparing erlang27-27.1.3-1.1.x86_64.rpm to erlang27-27.1.3-1.1.x86_64.rpm comparing the rpm tags of erlang27 --- old-rpm-tags +++ new-rpm-tags @@ -2153 +2153 @@ -/usr/lib64/erlang/lib/crypto-5.5.1/ebin/crypto.beam 934696fb2e158f0dc3161ac9c7d5919ac7e831d8456e0d22f7d36cf86ae94ec7 0 +/usr/lib64/erlang/lib/crypto-5.5.1/ebin/crypto.beam 267d0f93e048d638d507a8f089eaa73ae799e1937b3f49ed280f4f2e1ac0117b 0 @@ -3519,16 +3519,16 @@ -/usr/lib64/erlang/man/man1/cdv.1.gz 600671591431cd49a5df02b6d2c192108add6b3ea33e88d836989cce42c2d598 0 -/usr/lib64/erlang/man/man1/ct_run.1.gz ba089e8539b18e04832d74c4c2cae5e953464fa83911fcb4081bd461f64f6b01 0 -/usr/lib64/erlang/man/man1/diameterc.1.gz 2366d27bfecdcb7df33198c2d8554ecb02a551fc62bbe660c3de106e29f938fb 0 -/usr/lib64/erlang/man/man1/edoc.1.gz 3bfdfe4e06ba5fa8f960858c70b96471f1706db9dcc850ccec001d60de2f162d 0 -/usr/lib64/erlang/man/man1/epmd.1.gz cc47e25cc2666410026b73f77192c2f3dbdfcfc911f87a75efbcede367ee45f5 0 -/usr/lib64/erlang/man/man1/erl.1.gz 6061ada50273fbad2c57b14f91f8fc9f2d7859328b985fb5ee6ba241638472df 0 -/usr/lib64/erlang/man/man1/erl_call.1.gz f619844e0cc434112442595e558d3a733044aadade9e191d75eb12d31b80ba76 0 -/usr/lib64/erlang/man/man1/erlc.1.gz 7513c163f0f986d2dedb5cde74094f452e49b4dbca727c7e9bfcc05627b1bdcb 0 -/usr/lib64/erlang/man/man1/erlsrv.1.gz 3340161d7a67c44aceee76f9c8667e5756a4a6c25f9de3d40053b0c2d7508b26 0 -/usr/lib64/erlang/man/man1/escript.1.gz 80f2693763ab67925db936fe7d71689a4bea8853b1c65b723eb7f300370be10a 0 -/usr/lib64/erlang/man/man1/run_erl.1.gz 92289bcb8d030e46636d2985a2368c4566b064a83374715f53bfc08ac472f891 0 -/usr/lib64/erlang/man/man1/snmpc.1.gz 35d15aca3fd56d38eb65fcb835c67443fa8cfe961a29fc096cd64d856efdb679 0 -/usr/lib64/erlang/man/man1/start.1.gz c4274350578b3bfa18f6003c59da79d172b2a2a298f655f11674ea98878326df 0 -/usr/lib64/erlang/man/man1/start_erl.1.gz 05d2bab7b1af5a9a92833db4368e50574da7a23a7af8baf96bc228742038a8ee 0 -/usr/lib64/erlang/man/man1/typer.1.gz 6fcd1a53e1a00ef6ffa0133b8098efea00d57ec72928fe521f1c10a8cf05b508 0 -/usr/lib64/erlang/man/man1/werl.1.gz e6d781afe86b74fc3c6069af6fbb0c4f616fbcda043559420a130302ad78c3e4 0 +/usr/lib64/erlang/man/man1/cdv.1.gz bf712548fd1c0d15c9134c24b4e03a89430e89873a1cc96cd82443f4fde0bd3a 0 +/usr/lib64/erlang/man/man1/ct_run.1.gz 011d435f32c649f4832b7fdc1d41892f82186d850b30793069b9f58f31793a6c 0 +/usr/lib64/erlang/man/man1/diameterc.1.gz d62c5c8eae620d18dca2e9ccf34a378512b77b98e53e84f328939cf06b95f8b2 0 +/usr/lib64/erlang/man/man1/edoc.1.gz 06a89805e91f2b3180814cf72ada18580220c09179791986d4a5157d64845324 0 +/usr/lib64/erlang/man/man1/epmd.1.gz 9840207d909805fc8d973e84f3e025c931f5d3b134d273f69d94943a12ea868d 0 +/usr/lib64/erlang/man/man1/erl.1.gz e39ddb6a3ce1c6b2d78c45c912c0743049d5ab9faae5c59198a7c2dbdc19e1c6 0 +/usr/lib64/erlang/man/man1/erl_call.1.gz d9273ece5afdb1e964d1e2eb6b70322935cdd65ed79594d3a3eebd6a25b7cfac 0 +/usr/lib64/erlang/man/man1/erlc.1.gz 945ee7080d4d7b30bbc55868a76f9d0985f1b1d97595107b4bc487428df13daa 0 +/usr/lib64/erlang/man/man1/erlsrv.1.gz ce5df3e22c1d955adb3dd602eca92ff8d8e432d064526a1cfeec29c642fb7b6f 0 +/usr/lib64/erlang/man/man1/escript.1.gz df463938f65f5acb95deefce5dd2a266b5f69271a221e60b889b9218f5b21995 0 +/usr/lib64/erlang/man/man1/run_erl.1.gz 60a30e0a33348d504378d753788ec4351d8ce0d3700695e843fe350528650558 0 +/usr/lib64/erlang/man/man1/snmpc.1.gz 171992d03b9265de19ced8a9178f809aec63a7d1999f508ee7239d1c9ca0bd22 0 +/usr/lib64/erlang/man/man1/start.1.gz b471b8d4bce5f0eab5196300f1183fc71d7148517d82fad9c320ba422a4b3c90 0 +/usr/lib64/erlang/man/man1/start_erl.1.gz e89bed28d359e331083b9f986600b84aa0a38c9cbbd42ec04beadc0548d719b9 0 +/usr/lib64/erlang/man/man1/typer.1.gz d8070e384184b299f6f323433f52c43b28c1df91551b548f664c2c3778a4c156 0 +/usr/lib64/erlang/man/man1/werl.1.gz aa1bf3db50c548bff3ff9399c1d313cb85443d54f60622b77d097ce442c5db76 0 comparing rpmtags comparing RELEASE comparing PROVIDES comparing scripts comparing filelist comparing file checksum creating rename script RPM file checksum differs. Extracting packages /usr/lib64/erlang/lib/crypto-5.5.1/ebin/crypto.beam differs at offset '94748' (Erlang BEAM file) --- old /usr/lib64/erlang/lib/crypto-5.5.1/ebin/crypto.beam (hex) +++ new /usr/lib64/erlang/lib/crypto-5.5.1/ebin/crypto.beam (hex) @@ -1,8 +1,8 @@ 00017200 69 74 6c 65 6d 00 00 00 11 54 79 70 65 73 20 66 |itlem....Types f| -00017210 6f 72 20 45 6e 67 69 6e 65 73 77 08 65 78 70 6f |or Enginesw.expo| -00017220 72 74 65 64 77 05 66 61 6c 73 65 77 05 65 71 75 |rtedw.falsew.equ| -00017230 69 76 6d 00 00 00 0c 65 6e 67 69 6e 65 5f 72 65 |ivm....engine_re| -00017240 66 28 29 68 05 68 03 77 04 74 79 70 65 77 08 70 |f()h.h.w.typew.p| +00017210 6f 72 20 45 6e 67 69 6e 65 73 77 05 65 71 75 69 |or Enginesw.equi| +00017220 76 6d 00 00 00 0c 65 6e 67 69 6e 65 5f 72 65 66 |vm....engine_ref| +00017230 28 29 77 08 65 78 70 6f 72 74 65 64 77 05 66 61 |()w.exportedw.fa| +00017240 6c 73 65 68 05 68 03 77 04 74 79 70 65 77 08 70 |lseh.h.w.typew.p| 00017250 61 73 73 77 6f 72 64 61 00 68 02 62 00 00 0b 96 |assworda.h.b....| 00017260 61 02 6c 00 00 00 01 6d 00 00 00 0a 70 61 73 73 |a.l....m....pass| 00017270 77 6f 72 64 28 29 6a 74 00 00 00 01 6d 00 00 00 |word()jt....m...| RPMS.2/erlang27-debugsource-27.1.3-1.1.x86_64.rpm RPMS/erlang27-debugsource-27.1.3-1.1.x86_64.rpm differ: byte 225, line 1 Comparing erlang27-debugsource-27.1.3-1.1.x86_64.rpm to erlang27-debugsource-27.1.3-1.1.x86_64.rpm comparing the rpm tags of erlang27-debugsource --- old-rpm-tags +++ new-rpm-tags @@ -1208 +1208 @@ -/usr/src/debug/otp-OTP-27.1.3/erts/emulator/x86_64-suse-linux-gnu/opt/jit/erl_alloc_types.h 7de3a54e06c5689bdcf7896aa696a51473ded5837d5950f530edc529bc18a514 0 +/usr/src/debug/otp-OTP-27.1.3/erts/emulator/x86_64-suse-linux-gnu/opt/jit/erl_alloc_types.h b0534f8502981bca625d19a386652f973ebc3ecc34ca10495533849cb1b37c54 0 comparing rpmtags comparing RELEASE comparing PROVIDES comparing scripts comparing filelist comparing file checksum creating rename script RPM file checksum differs. Extracting packages /usr/src/debug/otp-OTP-27.1.3/erts/emulator/x86_64-suse-linux-gnu/opt/jit/erl_alloc_types.h differs (C source, ASCII text) --- old//usr/src/debug/otp-OTP-27.1.3/erts/emulator/x86_64-suse-linux-gnu/opt/jit/erl_alloc_types.h 2025-11-03 07:02:51.000000000 +0000 +++ new//usr/src/debug/otp-OTP-27.1.3/erts/emulator/x86_64-suse-linux-gnu/opt/jit/erl_alloc_types.h 2025-11-03 07:02:51.000000000 +0000 @@ -7,7 +7,7 @@ * ----------------------------------------------------------------------- * * - * Copyright Ericsson AB 2025. All Rights Reserved. + * Copyright Ericsson AB 2041. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. RPMS.2/erlang27-doc-27.1.3-1.1.x86_64.rpm RPMS/erlang27-doc-27.1.3-1.1.x86_64.rpm differ: byte 225, line 1 Comparing erlang27-doc-27.1.3-1.1.x86_64.rpm to erlang27-doc-27.1.3-1.1.x86_64.rpm comparing the rpm tags of erlang27-doc --- old-rpm-tags +++ new-rpm-tags @@ -1545 +1545 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/search_data-7F27CE3F.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/search_data-B508ECAC.js 2 (none) 100644 root root 0 4294967295 @@ -1921 +1921 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/search_data-CF5A7DBD.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/search_data-5AC9C9DB.js 2 (none) 100644 root root 0 4294967295 @@ -2369,2 +2369,2 @@ -/usr/share/doc/packages/erlang27-doc/doc/404.html 6d22595823279fa535186a1a75108f34377b647134fc1adcc6bdc03e8e8adc8e 2 -/usr/share/doc/packages/erlang27-doc/doc/asn1.html a21d086b40086a889918cd6bbb6b732344f7f39f8163e4397e1200eeceedebd2 2 +/usr/share/doc/packages/erlang27-doc/doc/404.html 6fc76d1265ecc79d8a86e0f0e42f47ab5aceba9017c6084e360a197edc204ae2 2 +/usr/share/doc/packages/erlang27-doc/doc/asn1.html e8cf5749b3907ce48d17a91042f683376c1945359a541ab19ccab990cf24a366 2 @@ -2373,8 +2373,8 @@ -/usr/share/doc/packages/erlang27-doc/doc/common_test.html 6b2e351e563e259dff85b2dcf40b186c51e468f8b2ccfdefbbcfb4959024fea7 2 -/usr/share/doc/packages/erlang27-doc/doc/compiler.html 6f366854b66aabc8d3afcf48c0c2d82cdc3d37493844ff0c5b4e5ea8e0bdeac7 2 -/usr/share/doc/packages/erlang27-doc/doc/crypto.html 14c9e44a38c642d6c11c87681377a71160b9605e643d8b10de2e765b7bd3dc9f 2 -/usr/share/doc/packages/erlang27-doc/doc/debugger.html 59b29df2c6f43f7b535a6971bbb970cecf5a362ead53665fe46422166ebb413c 2 -/usr/share/doc/packages/erlang27-doc/doc/deprecations.html 70b972055c114911be108410934da1698c6257e3a3e83529929cbe94b021d923 2 -/usr/share/doc/packages/erlang27-doc/doc/design_principles.html 036c1347021535a73ff9d3bb7bb1dae445dd3e4f55c077a68cd94458f29a0e32 2 -/usr/share/doc/packages/erlang27-doc/doc/dialyzer.html 87f658f167fbf36c9859a3fdd7c3e112c4e3e87b59b6cfef5d02986e1d109775 2 -/usr/share/doc/packages/erlang27-doc/doc/diameter.html 169c91a1b52039ff85dd70fdc273f694ccc03bed72821764ad2cad4d1c2c9a6b 2 +/usr/share/doc/packages/erlang27-doc/doc/common_test.html 33473f0cf585c080b90de2bf73fa8ebe2500e6edba6a7acc6df2705f469b99c7 2 +/usr/share/doc/packages/erlang27-doc/doc/compiler.html 2fd9c82da3e8d8f0c11a366d1f21049c81813209cf205a6503fef2fa6e56db91 2 +/usr/share/doc/packages/erlang27-doc/doc/crypto.html ea118ff31cf17575ddd086a7921605889400d205a2cd87403d29ae3825538416 2 +/usr/share/doc/packages/erlang27-doc/doc/debugger.html 1b9eaf117c96fe418960095c97aba5a21196845d9b34e388be86aff03049facb 2 +/usr/share/doc/packages/erlang27-doc/doc/deprecations.html 3b06374a79781c629803ee9e61f289baa66a5e38729667a858e4d2ab6db7ce3d 2 +/usr/share/doc/packages/erlang27-doc/doc/design_principles.html f14a1674d314da1941ffbebe168f531be8e362d574e60a8e3c1ed773e55f2697 2 +/usr/share/doc/packages/erlang27-doc/doc/dialyzer.html 9789f877e8ec34a6432a24bffcf3f29900cde8154b349433a0f69ff1ccaa3b56 2 +/usr/share/doc/packages/erlang27-doc/doc/diameter.html 29fce375b06f4f93c6532b105b367801c0c6a30b4bc6b194c65d1379f279c9bf 2 @@ -2401,10 +2401,10 @@ -/usr/share/doc/packages/erlang27-doc/doc/edoc.html b3fa59328245b95cf5b398f2d0c2d38f7b1739f692e3f9368734ae958f0931fa 2 -/usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 9aba82f38e01ac6ec74c8af55aadd1399328445cad73b856271968a6ce7107f6 2 -/usr/share/doc/packages/erlang27-doc/doc/eldap.html 5793ae8a14f47f63ae5fd99503d46f665dfe6409bd12cb0f0ffda757f7e16879 2 -/usr/share/doc/packages/erlang27-doc/doc/embedded.html 348a82048e18c57c7f4d60cdc381e5954749eb73c128195f8719f7eb5d2a5ccd 2 -/usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 7cd7bf122e2d90a1a5e26828858a96975b3dbfc7c6a92fa055c0775009de57d7 2 -/usr/share/doc/packages/erlang27-doc/doc/erts.html 5421fd7e897fd311e0d17f931ccdde01698e245beba917e57c34a75412f3c9ea 2 -/usr/share/doc/packages/erlang27-doc/doc/et.html 4db0399f8d78f9514942a40da6c218fcf69b5d7a1319775c4c35bb15998f14d9 2 -/usr/share/doc/packages/erlang27-doc/doc/eunit.html da8ba0ecbe13c52a79308b02aae8a6ebededd48791993bb18a0176dff2066afe 2 -/usr/share/doc/packages/erlang27-doc/doc/ftp.html aa8f0b1d2e49c579f89e87b35c9025b99d6a800981b87fdbc0155b2cc0ffd1a8 2 -/usr/share/doc/packages/erlang27-doc/doc/getting_started.html 53c09d24c26eaee865062beead1d9e73e4aff67b8e4ce3e7f986c0108ed979e2 2 +/usr/share/doc/packages/erlang27-doc/doc/edoc.html 26d8832a3761a860f900bb752af04bf0242327af033706f20f7ceaf6d11c5fe1 2 +/usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 1849919360b439625fe8d2d20abed361c2922588e847f496a0dbc9cbb6c4d25b 2 +/usr/share/doc/packages/erlang27-doc/doc/eldap.html 6fec100973e32a152eedecb6b85610bc53474dfffa1afc9dd8daa097a2fd16df 2 +/usr/share/doc/packages/erlang27-doc/doc/embedded.html 350ad82a0cc3078a0812a36ab3cc83ffbc81e79859e639bd0eae448d51065f4d 2 +/usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 542d08539702a001b2ce897f6b6e5d588b6c85529d41d6c25a6ef5f765052d4f 2 +/usr/share/doc/packages/erlang27-doc/doc/erts.html a29b191d806fb434691449f080a6c3e866d7484ad3eee17c73d06d6fc6732df3 2 +/usr/share/doc/packages/erlang27-doc/doc/et.html 0a3e9d8cf02702d71d31348e729ccb1df9f227c52aaeabd418c780384ad10b4f 2 +/usr/share/doc/packages/erlang27-doc/doc/eunit.html 02185c07a087561762ecfec155afaba02e83aaed4a2e17fc00b7f0316830d22b 2 +/usr/share/doc/packages/erlang27-doc/doc/ftp.html c1c9f1695b14aa35aa15f6ba91aeb030fcaaa9ceb6db537b433b2964d15f5c32 2 +/usr/share/doc/packages/erlang27-doc/doc/getting_started.html b4b482cd568e87dc114d00269986b10d9cbe91aaa76c90f7beb822989c1c556c 2 @@ -2412,26 +2412,26 @@ -/usr/share/doc/packages/erlang27-doc/doc/inets.html e4b3023f52b6a318c4e752d809c21b7cae1965d451bba0818c5fa7f9c0acd25b 2 -/usr/share/doc/packages/erlang27-doc/doc/installation_guide.html 127d48285fb8e93c42f5fdf689fffd59a5cab34951b6de324e66da843ae0c718 2 -/usr/share/doc/packages/erlang27-doc/doc/jinterface.html caa5394bcaeea4bf1823f00f5f2701386378221ad6c51387a7a4b5163fa2a968 2 -/usr/share/doc/packages/erlang27-doc/doc/kernel.html 6c7fcb6f31351b5fcd79b00a9600c166c0fcdffef56f87ba12a4a1ab3e0b2a11 2 -/usr/share/doc/packages/erlang27-doc/doc/man_index.html 2f97103e29c4c57613750ba90b54f1eb8a8c0cb19b25fb6d245b5d32d30378a3 2 -/usr/share/doc/packages/erlang27-doc/doc/megaco.html 433c40fdeb67dba806bdf206326d33de44ac16814eed59002ff3ab803ad68302 2 -/usr/share/doc/packages/erlang27-doc/doc/mnesia.html cbbd9e67a6df01c35db75ffad0d21d5d6c1b7e079118e57c517d96d19a0118c4 2 -/usr/share/doc/packages/erlang27-doc/doc/observer.html b61180ba4e8037b2e3b5b7ea351bc696c59ef7ff1436b3ed01a10713bf966b38 2 -/usr/share/doc/packages/erlang27-doc/doc/odbc.html 17a29ba1d8083304f28ebe5f671ec4b4d33776cf31ea92376ba6baeb091e079f 2 -/usr/share/doc/packages/erlang27-doc/doc/os_mon.html 4111c1acab40eea6e14b2f8e79c647f2ffd6b5f32eb64b9915659aa053f83e36 2 -/usr/share/doc/packages/erlang27-doc/doc/parsetools.html 7c7724c86d2482278445bd572687535218fc5fd39f5fdcfcb57bd7f36b7439db 2 -/usr/share/doc/packages/erlang27-doc/doc/programming_examples.html f3f01f68d4b0f5b8a52516b296ea761187a50ebf175dc495ca2d7194f2ce1172 2 -/usr/share/doc/packages/erlang27-doc/doc/public_key.html f6a5593f078ff0ac70787745a14cce07b2c3c829d4a9efe2c7748440b859e5a1 2 -/usr/share/doc/packages/erlang27-doc/doc/readme.html 0b3f8aa604a276d10eb4370aded884312fdb97703e2730af2dd26105b5b8fc4f 2 -/usr/share/doc/packages/erlang27-doc/doc/reference_manual.html 6d3f7fcc8e4e292ab4adc37b72b1f842d9f1d129fdfbd565f18ce0e6ac60c0ea 2 -/usr/share/doc/packages/erlang27-doc/doc/reltool.html d3a063f28f14f1449fb4f7d324c65a28109a9683f460428ada9d2f42c241630d 2 -/usr/share/doc/packages/erlang27-doc/doc/removed.html a2d48256383b733c219be320602aab5aa4879c3fed07a07a665a5012e89a2fd9 2 -/usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 2db3e7393d26fa08009107c78104000ba12fbab47b3e4b0ec27d4658f89935d2 2 -/usr/share/doc/packages/erlang27-doc/doc/sasl.html 24ea92853ebbe316ab3a4ca4e5f804ae460a624710c8b149c5250aec0862a4ab 2 -/usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html 8f4d06c8c79e43421e8195a2ae0132268105badb271cdc06b84f2e344282749f 2 -/usr/share/doc/packages/erlang27-doc/doc/search.html b41b5748dd830d3003ea9ad3e4fa7e81950d36f25653d546dcd81e1e3d2d64c2 2 -/usr/share/doc/packages/erlang27-doc/doc/snmp.html a62951d92f60454a233f0047a9e24b05bcb9b0a51348a86401bb0a30fbadd2ff 2 -/usr/share/doc/packages/erlang27-doc/doc/ssh.html 461dc91afe2343f7803ce29119362b9d085c4a00b449abe564c4f4a107f78d56 2 -/usr/share/doc/packages/erlang27-doc/doc/ssl.html efb7feefa2083b0ebbc42dab1b770d5a16f455140c60fd8cd94168bf9833bee1 2 -/usr/share/doc/packages/erlang27-doc/doc/stdlib.html 916a3173ef83be2d087ae77631e54fe07bdd999047c6dab77ca3c8aba79b2de9 2 -/usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html d416109eb033bdc608b8aa8bf1b07379054e0c75e8ad274b42b6a8b0ae3b56dc 2 +/usr/share/doc/packages/erlang27-doc/doc/inets.html fae1e0f05ba741045d37b302716bc11b3d30ff40356f1338acf772d95fd1345d 2 +/usr/share/doc/packages/erlang27-doc/doc/installation_guide.html f46d24ec01ec5c68b82d0916a5d34610ccaae5d61bd3b0be27ec33fde5c6d67a 2 +/usr/share/doc/packages/erlang27-doc/doc/jinterface.html 7ec279b2db40dd47b75781495e95fc8d9ac785559a44cc17329adaaff7c390da 2 +/usr/share/doc/packages/erlang27-doc/doc/kernel.html b471b17a3d6131c19d814eef716e04de8fc1d2569088f6212c45afc0cf28307b 2 +/usr/share/doc/packages/erlang27-doc/doc/man_index.html b20636cf746f2f44a866dcbedfc8d1d1e5c7b9b0571dfaf07d49ab4dbadc2678 2 +/usr/share/doc/packages/erlang27-doc/doc/megaco.html a8879b19d938ac4ca2e8a192e413ce2e112c348ff1c34abd8b40aff01b09332f 2 +/usr/share/doc/packages/erlang27-doc/doc/mnesia.html f55572bba7e2d4b41c00b191730a03f488c69b94e3c1019f519cf4a190974d63 2 +/usr/share/doc/packages/erlang27-doc/doc/observer.html b3b59e3d3c5fca28d8271e3a0c6be0a32cb6ec9ff8e31d8a47a7dcff574d952d 2 +/usr/share/doc/packages/erlang27-doc/doc/odbc.html 43ffc1ef1ec288b6482617d8c7eb944894b806556d2989c826d34373da4bac85 2 +/usr/share/doc/packages/erlang27-doc/doc/os_mon.html 0aae83636161ff981587c3352acd3627eb8e5d7f16667316d8da153fa7b7ba46 2 +/usr/share/doc/packages/erlang27-doc/doc/parsetools.html d7f7d2c00a7a4bb3e84a9824f4ab385d9b8dc87033d9c9895581749203d5f2cc 2 +/usr/share/doc/packages/erlang27-doc/doc/programming_examples.html ea92428a51e15d9fbcd7cb2fa9e8773ab3889e5aa76eb005f21e9fcd11a8816b 2 +/usr/share/doc/packages/erlang27-doc/doc/public_key.html a0d67775bef2639809d30cad206cbd2db04e2403d19147c6029150e740c7bb6a 2 +/usr/share/doc/packages/erlang27-doc/doc/readme.html 98cc15191053978376769da10ad2b86f7498b1a7af46732a455234cc3811a9af 2 +/usr/share/doc/packages/erlang27-doc/doc/reference_manual.html d68376f9fe429750982f9a67099df2f0d817be37ef34fb560c313e59344b0047 2 +/usr/share/doc/packages/erlang27-doc/doc/reltool.html 4fa8ef1d210ebac58d8e5a2b4999569d321cc9976cc889768df51570a855d858 2 +/usr/share/doc/packages/erlang27-doc/doc/removed.html d3442c3d7960231a09cc6066b6cb3b1d28ebbe52465db4e9b55598badb53e4f7 2 +/usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 9fa697755946837f57d1a265daa7bbd4952321cb1be90e90172ba99687af263c 2 +/usr/share/doc/packages/erlang27-doc/doc/sasl.html 8401997501e2a45fd54c73c0d25006a597c9668d7b0039b565bebc6989eb9589 2 +/usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html 531deafc5c87cdd46e658d756b300b960e61d0f498efef139abd238c8cb0d665 2 +/usr/share/doc/packages/erlang27-doc/doc/search.html acb323c59361cc216877ae58d1fa429c66fc06df15680b2977432c6b69ed1bff 2 +/usr/share/doc/packages/erlang27-doc/doc/snmp.html 1d16c5b365f1d316dc25f9b28e0f5f531e3c23a3a45f2b1ea55a15877f70e6c2 2 +/usr/share/doc/packages/erlang27-doc/doc/ssh.html a493958bc952ff744a41bfc23e07d3b31db7051703c22051b70c1530bdb72cdd 2 +/usr/share/doc/packages/erlang27-doc/doc/ssl.html 16cafa709084c62fb5c20cf39b2e7f76c058c2dc94b63c4d8d0d19442fed2feb 2 +/usr/share/doc/packages/erlang27-doc/doc/stdlib.html a21b1ddc3b0059343700e19da832bdb0b59c2a1ab8e2550d6d929653cc05f5da 2 +/usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html 3974a259f5f815fa80e5ffddc07d85e699932824e85210a35e5ad0cd810f5883 2 @@ -2439,4 +2439,4 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/404.html 6b5736ab92a8f332c7a517499006b370e1a65774ea59995ef2259e876fcc548f 2 -/usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub a6fe2069ac2495e8fb4f3c107ff3488cb30f68fe944128ba10576988a27b924a 2 -/usr/share/doc/packages/erlang27-doc/doc/system/applications.html ee8f2dd783f42f7488ff8563ef066bb430aabe6fd9d9160d592b7a323153d469 2 -/usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html cb395336ad8fe63e349fd6391fdd6c8d4a1f7e317ed7bc87d799403c9bfc2535 2 +/usr/share/doc/packages/erlang27-doc/doc/system/404.html 2482880d1025bc8e8f99d9cedcab51ff37330afae6208d8668b17a59f96d8abc 2 +/usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub 96d71de333a819b8587fb3fdff11692c254a2776e8859257743e8af5c4b01e00 2 +/usr/share/doc/packages/erlang27-doc/doc/system/applications.html 9916351b63acc81cd62b0b0caccaf8b26fcf7b81198cf27efc7392b209be5ebb 2 +/usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html 6989b7ac5be4414b092f9169953d851f2f81b04007f90772ee2558e716f86cb0 2 @@ -2452,14 +2452,14 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html 8d795ccfdc513283c032cde84a83501697442443375f0c2b92974b9367378b56 2 -/usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html dbc6792a0f0eff4e5b71afeb093953a6028ac4db042e35b2b61b6a0f364b71f9 2 -/usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 7b1a968fb4b6a4b34016f48153f82dad950ff5dc4181175dfb92ed57ad377fdf 2 -/usr/share/doc/packages/erlang27-doc/doc/system/c_port.html 131e6f736f65799b156d6a8b09e6d47cd442cb3fdedad3f1e8b597bcaa493398 2 -/usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html e12127550d33723db9a71ad69a36949daa5e9ec861285707a8de0c466821c742 2 -/usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 5fbe264a5d18f58c674231dde975999be5dc567b8a85dedf93bfe46964f617e5 2 -/usr/share/doc/packages/erlang27-doc/doc/system/cnode.html fe1df96787aa1f211cb388c1fdc5bf51ea96924f23ca317738a943c9000396ae 2 -/usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html 7a792697bef619d1737db54398c4f8d065764cf05f9f476162bb49057db89e1f 2 -/usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html 741c8186a467a363d7259a64809f7ed036627519f5528ef728aec5e618448f21 2 -/usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html 2602c2dbf9cee8f90dacb4935b49e863d8071a6f0f9ba5e36367fe2b01659a1e 2 -/usr/share/doc/packages/erlang27-doc/doc/system/create_target.html d81fef3a0940ae00f831628fd07d52ff3ec42b8aa14d066d43cd6e6ec431f382 2 -/usr/share/doc/packages/erlang27-doc/doc/system/data_types.html a238c19d479f47ac33f7e21412c9e3b1e7b01323fbe1aa75b5aecd8ab4d02a03 2 -/usr/share/doc/packages/erlang27-doc/doc/system/debugging.html 3213e7dac6284874bdc659d3eff42938b4f91ad6bdd56e8695d9c2940bc88c92 2 -/usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html ac789ce6db6d73865b63cae7f3035098557615dfbf94a90cb4267c64ae774dcc 2 +/usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html ab5d38c5adfd2c3a72c147e3cdc7efc22430cb5949ecf19e57f646b9886cc36b 2 +/usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html a3d5c2b095dc326a0a5cd16da61c79d618b4ee1f0cdb999dc606a0b637de262a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 02d617f6adaa5827d62c7f8bc381baa0a207a85c453a8e9c8882a9fece85284e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/c_port.html 38a26f3981c89e44a31c64c79e9840a98c70a8af688d6a5910f125b63b1477d0 2 +/usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html 5596037be1f3db0393787a09068138d0bfb3b0f41f3cd938afbffdfcb3cfdedf 2 +/usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 0a759a597bb1496ee739d56dde4ae6d454865005e4712fdd843eb16620449932 2 +/usr/share/doc/packages/erlang27-doc/doc/system/cnode.html 52fb306a086c53d96c13175a301d74c80eba2b1a356c8ea39500d8b438934dbb 2 +/usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html 41fccdf48893b10877af5fd32ba6659ff24c5a1427a8b34be1f790373fee1d6d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html e135f991064a0378511bc5c6bfed34e3b8863648e96e6f6bdeb83e661c58ac06 2 +/usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html ff5128aa5450ed61182bc542ae0209ae7580bf09bda9fd398f89a7714159eab5 2 +/usr/share/doc/packages/erlang27-doc/doc/system/create_target.html 3cb16354c08caadf98debdf2e36acb2b39a854f184c20916ea6012916138dc16 2 +/usr/share/doc/packages/erlang27-doc/doc/system/data_types.html cc12c8629e6b94014f8533b688f8c8000ea41a273037f0f8f9e1336122476291 2 +/usr/share/doc/packages/erlang27-doc/doc/system/debugging.html ea9a1544d14592134f80ea61279512f56162f14a599cd8ba66c3706210e74643 2 +/usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html 8f120491922c1869043f3d41748d2815590ef6ffac4c0c438a24a837876153a9 2 @@ -2486,19 +2486,19 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 4d90c830f25d6423095f79f9921dd748ea13b18cf50b068db1150a562678313c 2 -/usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html 823596e93f05749e9bfedf620e827eb6bdf937c5ed3e0c31ba43b6f56295d3ef 2 -/usr/share/doc/packages/erlang27-doc/doc/system/documentation.html eb677525df30dfebd06b072ac11f9dba58ca073b8770101ad1606b412af1fda6 2 -/usr/share/doc/packages/erlang27-doc/doc/system/drivers.html 6986cd543733d7474558e3e9d5484fcae69c8c157f418ec5b4d3c211ce6bc473 2 -/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_functions.html aa0f52a76ea2a27c1cdcd631553808802da413b665e0e3d86cec291d98ca672d 2 -/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_processes.html 4db99ae5328fa14506da7b6e0dcb1f602f74025a124368acc3a31e7c4a11646f 2 -/usr/share/doc/packages/erlang27-doc/doc/system/efficiency_guide.html 7a1e8b23940e1f6badc186b39fdabcc74a205fa2ae86b221a1c49b2e4e8bb1fa 2 -/usr/share/doc/packages/erlang27-doc/doc/system/embedded.html 410fa37ec404b64e759b10e7d36e0b8b0118cb438adf726c374ab6d06c97b000 2 -/usr/share/doc/packages/erlang27-doc/doc/system/erl_interface.html 52baa788886da7af84e2c8ba8a47d9cc7c5f7281f4272b59078a994478b62809 2 -/usr/share/doc/packages/erlang27-doc/doc/system/error_logging.html 2886ef159f686f22d261a788634cb49e5062d7e6486bee6631a4c25df94be3eb 2 -/usr/share/doc/packages/erlang27-doc/doc/system/errors.html 8adfe92547384095340d8ecee4202510fe8dc7ed90cad9ec9cf8f2a15fe4d7ff 2 -/usr/share/doc/packages/erlang27-doc/doc/system/events.html c82ead20984d1f8750bc9892457010da2925c9651dfc95a43230bb321a3901f7 2 -/usr/share/doc/packages/erlang27-doc/doc/system/example.html 6f09d1675264fa453c4782abb1f98bbb3eafbd295e86c140254499376fb6015a 2 -/usr/share/doc/packages/erlang27-doc/doc/system/expressions.html 79a7de23e3e9422d400c0528dcbea6ad66fe13103ff0f126c49cfb78d4ace889 2 -/usr/share/doc/packages/erlang27-doc/doc/system/features.html 1a6da0fa6f2108b69c95dca5ad60dd4669cd6f21c47d61df83492cd19f245337 2 -/usr/share/doc/packages/erlang27-doc/doc/system/funs.html dd5e69006cf73e790b3058ec7dd39f918f2226d0fb95837af9d995894858b076 2 -/usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 24ef7a3369c77bfd69d79396dfbb63b7f13c5aa57988570b31c88e4e74c3919c 2 -/usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html 71ab98515d3ff8c78038c80bff362d7c3775fdcb137366f92a03dd3db2c7a211 2 -/usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html c78a6b145cdc268116fc945cc8d7c14044502042815b523bc5f0caf36fcf6c77 2 +/usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 68f5b96141591ac3624cc50b7687bee189ed303c45c38e62c6926436021861b2 2 +/usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html 3a992098e4378cc6fbdfeb04f025cb2fa67b20cf535d7456858ba91c424ffd20 2 +/usr/share/doc/packages/erlang27-doc/doc/system/documentation.html 0dfcf8f884bdbadf017bf837dee0ea4b035fdfa1fa0330eab0157b96f1471571 2 +/usr/share/doc/packages/erlang27-doc/doc/system/drivers.html f2668838f136dfd344e4695448d58dfa328ea887bf3007d5723238ed6a8bb753 2 +/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_functions.html 41ccbc67c84a733e09a3413966ee6c60c74a53986f74c1c1240806e49b1b958a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_processes.html d59bc50143ce9a9974027513869c9d4bc40204d81dc818c2533808f85a47ee68 2 +/usr/share/doc/packages/erlang27-doc/doc/system/efficiency_guide.html d696968eaeda0838c82f1f2ce9bd20d81cd492ad1df5c6cda0f7da32887d3798 2 +/usr/share/doc/packages/erlang27-doc/doc/system/embedded.html fd3c3b889d3d407f52ef03ce8d988cbcb0c45cb07b6d9ad2e12cc32d43420835 2 +/usr/share/doc/packages/erlang27-doc/doc/system/erl_interface.html 7b9acf6394ee552dbfb9190aeb389ef9dcc3e4a6e28a33cc6925c545d7a639d4 2 +/usr/share/doc/packages/erlang27-doc/doc/system/error_logging.html 04bfb26e978b9c7610e9405d0aeb33c779d5cf0fc80762a4aecf93c0f0a9136d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/errors.html f962027c11f0d75a1e55b3d7ff3b1645364a5a91d3e2ab7b5ff5c57c2bce9389 2 +/usr/share/doc/packages/erlang27-doc/doc/system/events.html 587270eba8fd1a150df12037679cd94a7b9693b8c38ee77f424ecc690f5832ff 2 +/usr/share/doc/packages/erlang27-doc/doc/system/example.html 2fe83c01b80d07f322327410d501d2fb23bafa003706babb9abb3f4ee2aa1a87 2 +/usr/share/doc/packages/erlang27-doc/doc/system/expressions.html 60d9dd0c669479b06ff36267ce7e436f75397858ad7ba37997e76609d4cdea78 2 +/usr/share/doc/packages/erlang27-doc/doc/system/features.html 452a4f9bd099cf62d6a768b3a902623341d39256d6b8063031885d3b35ba9259 2 +/usr/share/doc/packages/erlang27-doc/doc/system/funs.html 4c1115d07e3d18ecc997aae21575712fec5bae270b810731638b4bfaf8f8086f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 0878abb25e2d2d15a3d250158391311274c975611876002952d17078de4b5bb9 2 +/usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html a3f2bb09d92b7a29a0de85bde74c7441af6546e30cfd4877409d6d84d22ba8e1 2 +/usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html 2dc66faca3a48632cea5f5b493f5d62c3d17be3a28ff1153dc29d629f1d2f1b9 2 @@ -2506,48 +2506,48 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html ed5e208cac1b7a35269fa0baecfae79a33dcb24039de74d7e1be5658bf684774 2 -/usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html 0b9d5a2297f6dd56523a7e2b8d763065d24093bf5d8196bfdd6c108ac333ea14 2 -/usr/share/doc/packages/erlang27-doc/doc/system/install.html b2d118c29a892e934ae0ebab9d66856ffce4d542bb0c95ee2762ab52741b0a26 2 -/usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html f7be1a841c2265b7a392b7a81941551020206c96375166eaf4de224d9a528199 2 -/usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html 09891cf82ca8969470f1f737a36ad1ea6a1177255515d235f69bc5eac740136f 2 -/usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html db54e7b386a281046574775c7681f3ab5b56a6bab83f2a985b08449f4f375486 2 -/usr/share/doc/packages/erlang27-doc/doc/system/macros.html 0d9cef395d6c5f7bf2d2683e012644e4e84888e1935960f7414789617a3ecffb 2 -/usr/share/doc/packages/erlang27-doc/doc/system/maps.html d33dbd94aa1225a07e3cd31a02c9fbaff8347a96b5f095914a097577c5b2825d 2 -/usr/share/doc/packages/erlang27-doc/doc/system/memory.html 4cb86698c9db5005b8e29be601b9bbaa709be418960bdbcb3e9e82dce4803bff 2 -/usr/share/doc/packages/erlang27-doc/doc/system/misc.html c4b0853c5a58961eaad23f01c101ac49e61abf8a48b1cab055507bdaa5c6ebe1 2 -/usr/share/doc/packages/erlang27-doc/doc/system/modules.html 4d3465e35503da5154ea68e01ebb729eccda810d1b35fffde583a1b3b49e08d6 2 -/usr/share/doc/packages/erlang27-doc/doc/system/nif.html 1f35259a911b0f9b49f7ae6e4341f89b9f1eaf4ac3f8885e797b708c3675fbdd 2 -/usr/share/doc/packages/erlang27-doc/doc/system/opaques.html 201adb12f1344e39813e0d71133a4080346c761429c2463b112ae0bc6745dec1 2 -/usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html b32b42de550eaa924b25a9e3547c37dbc59ff99eec0466f9eca2c2f5f9ae9b42 2 -/usr/share/doc/packages/erlang27-doc/doc/system/overview.html aa844fa0df736ed44e740824f2b15d5a4307221791ed9780ce30bd07c7e52574 2 -/usr/share/doc/packages/erlang27-doc/doc/system/patterns.html 77544186c3f5031087fa887f192f68a26397a45370439bce6886d576c7c6d28f 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ports.html 55055be27ae96363fbd5c57eed3b01689b716f88bbf521e331eece387ed374c5 2 -/usr/share/doc/packages/erlang27-doc/doc/system/profiling.html f9541ec35a16cfd0cc3b1cc4a8295545f93092930febfe46305caeba71dd37f9 2 -/usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html 515d3d80457d31cab2bc0e21aed2c4eaea8718386b9a1b775a09a4dcb2b6b04b 2 -/usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 6a1641f9a57c8c3970e42c2619803de16dd84e6fb22da51a5157a267a5fff871 2 -/usr/share/doc/packages/erlang27-doc/doc/system/readme.html a19661661026c68b6110295517069392b0c53f650cf0252f0f2a666bdca947a8 2 -/usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html 8fd41a1f381602debdb6f2e9be67d7032d4aa286184c5aafd25e35cf8228bb01 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html c7f24a022e62b478ba34ab4c7ffcf721634be58e401c4820910a3196e384ffaf 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html 1bf18054e284f9fcafc462409ad85ca8dd40c21ad568bd6f89e4d09187f42c2d 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html 029e65715406355dff3bbc0e580cf20b188b1f00c123596b63f9ce987d7a4710 2 -/usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 3d494bba367faa139a6d5151ddf5b7f1cb2c04eab0e2e0ededaf069c02fa1aa4 2 -/usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 7bd4d30f9678b1f88267633f8fdd1202a94bde7fc133abb664348ec2fe1d3fdf 2 -/usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html ef72e82a32fdc66f0f036448f87c21f15f43a30373b71a2faac37fc4a842d714 2 -/usr/share/doc/packages/erlang27-doc/doc/system/robustness.html 54295c587c2258d5f5d38610e34d77f53abf12e5e47cf1e97f41699d15bd87bb 2 -/usr/share/doc/packages/erlang27-doc/doc/system/search.html 257289e5577fdb623c48a4bc40b1b8a8363239a25e1b8ff4a862ec388aaedcc8 2 -/usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html df15bb05a18043a976832359e516ab033af02da8980449b7344e9cca6cf8e388 2 -/usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html eb314b8f459c9bc924f8f7488f6841252968b16520481a4d3f67056bf1c3d4fe 2 -/usr/share/doc/packages/erlang27-doc/doc/system/statem.html 886efff494b77ff5806445f2e50876b936283f4a21eb8f03b894c491a2ee2147 2 -/usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html eee79d7e1e2d7ee65a9f7612cfd74fe265a1ad0471886aadadb9a94d5c5c1fb1 2 -/usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html 6bd42faa024bbe3e6fac1a6d86dfea16a8d60b6aa51b968b87b1b32bc0f83ca6 2 -/usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html a3c812f1a7615ee0d05d8e31b255197e4e91ba36b26784813a353dcb655ef9ea 2 -/usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 026f2ec54dcf1cb2b7edab01c2752aeae93662c36d4d389322b68ce75e094728 2 -/usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html e42255779240115af93f1118e1b6ed7c93e97452917c9d9361e3a48b351a5aa1 2 -/usr/share/doc/packages/erlang27-doc/doc/system/typespec.html 3cf65d760539a7f011ba628bcb6e8e2b310e081011ffe401b1dd3952adf9187d 2 -/usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 2d409dd9fff3ece34a277be3ea6ab32c32ba2e0180cac6bd87845ae7b0a706fc 2 -/usr/share/doc/packages/erlang27-doc/doc/system/versions.html 977f368d7a0bce6e6cd939743ff5c4b9d9b5641face4360529c12cb737838b69 2 -/usr/share/doc/packages/erlang27-doc/doc/system_principles.html 9e875353c194eb55a4d7024828a260b9b8bdd9412c0f596a7607bc0cbf4c1200 2 -/usr/share/doc/packages/erlang27-doc/doc/tftp.html 396f244a73a83245320b90c5abea1c7c89a7d08f2a93586995a14499a1deefb4 2 -/usr/share/doc/packages/erlang27-doc/doc/tools.html 4a5db18c71a114eedd7becf5a6f870a591bf5c319d496ee889673758ff8b733f 2 -/usr/share/doc/packages/erlang27-doc/doc/tutorial.html 960301bc04c3bca37e69ad5dc1b3929b4b953840a2f818b543d950ff272cc4a5 2 -/usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html 9b36781819318ae2eb1c0b519274c2b332548f09c6e152c6b0d5a4497f049d95 2 -/usr/share/doc/packages/erlang27-doc/doc/wx.html 9bf0819e107e71ad52cf20ada2edb62509039fc72d8f4b5575e316bde25b952c 2 -/usr/share/doc/packages/erlang27-doc/doc/xmerl.html d24ad7e66b5658b948c6927e06626d3b321714717b4ecd7954aeade9e67b11d5 2 +/usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html b9cbbba38e2a49965f365ff24fc3ab51ce7c6f95c5b444f78efb2034fc3c0019 2 +/usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html 6953c9824c2305f6365e6c1bea709bfaa62e3eab839a48593bb4f73519bf28e7 2 +/usr/share/doc/packages/erlang27-doc/doc/system/install.html 9294c5640363d382301003ff895eaf3c8144bd49106ff06fa6e22ef60ce742a5 2 +/usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html 15e947be41e5aa70c2aeb10655861dade5678c65b0519ace5993a5a0175b4ede 2 +/usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html 5e87e35b2a88c27eace3d1d0d220156ca6c918de7e74ffd68fbc3d4306fe6cfa 2 +/usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html 06515645738fa1b1214735e4c6912b329bedb9de1a0bd652978894bc44303eb3 2 +/usr/share/doc/packages/erlang27-doc/doc/system/macros.html c23544dab637c71ddf747a986c0a63be6ff520833ad9b7c81aa68d7c1f56e55a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/maps.html 0af2935acc3e171f1c5c67a80c67c62d7e2a5aee5866ae34960446e53c32439f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/memory.html 695d8a911a4acd5d9abe5229e260ff97df8a521f799e2ff53c74c346f1273287 2 +/usr/share/doc/packages/erlang27-doc/doc/system/misc.html 54d879d039bf7813247a38029b238148615880ec0f77f08b523b653649e5b3a1 2 +/usr/share/doc/packages/erlang27-doc/doc/system/modules.html e6a8b880973e34cc9ba3a33ab7bbf4cc036079198a507c650f4789369e746949 2 +/usr/share/doc/packages/erlang27-doc/doc/system/nif.html a9230fc0e731cdf2753456299f136c3dc17b712da9d86b6c5fe82ba8f53d5473 2 +/usr/share/doc/packages/erlang27-doc/doc/system/opaques.html 3c1b66c51a07160172a094cfec3ad2c0f53cf343fe5bf816585b9c04ccf95589 2 +/usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html 7c10d8046d5aa9869939a45ff2ae27551c8ca12297e8f9e38ea0331f1017fa87 2 +/usr/share/doc/packages/erlang27-doc/doc/system/overview.html d4fba779dd272a88d0718cbcaaaf684085149497cde043397ddc01c74c6a24ab 2 +/usr/share/doc/packages/erlang27-doc/doc/system/patterns.html e76f97f0d95af385ae46579fc4b867ae866ad36e1416ad9a3b2afee259f67337 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ports.html 5fb0a4fb21b489d1e1b52660cab8f1e8c0d6225a198078929f6377f0af382eda 2 +/usr/share/doc/packages/erlang27-doc/doc/system/profiling.html 28025f3c1df8a2459ebb5cde1de5ce02531f6c232af7d9879b682ae8e74a8e06 2 +/usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html be5f3a304e257ad58b76e25ac13697a98a36ce50a92757de275dba1cd475b512 2 +/usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 7e11ce140f7270595bc5da18c6d44756c11a3bac40ef240ccfbcb0ef52e6accc 2 +/usr/share/doc/packages/erlang27-doc/doc/system/readme.html 786514b87fbe6841f248bf037fcd31f9b3bb2b82f148ce75c452ce3d8be95009 2 +/usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html 4516f7effad9d062eb3694d8caa5e9ad92226bd6644c2588b91641fb212d101e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html 477c51affdcfa8d54747967827a80d76567264d47dc3666ab6661aa921b3303c 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html b86598fe26586e21f84adea18d7fe716fa9e6fd0ce2114c2935fa5cbcac47725 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html 91ab0ce22bb1c58895a48c91e2ec4f80f85bf3c94964dfa0f7c3ea91d102a85d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 2e1a2096502b3c02da7bc6a97294dfceb7757757b18fece9cd7e6fe071df75ad 2 +/usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 572443db40aaaf7955f5ba743baf65481a91b0d629c37733009a18eba13f37d4 2 +/usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html 128a3c6fcf0aae357d0a1de4b2715b345fd26dab4711ed6e52436698376db974 2 +/usr/share/doc/packages/erlang27-doc/doc/system/robustness.html 104c2fb1261b18d583fcc4373c9615f653b0c398eb529ba7e21bd659ecfc294f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/search.html 43da2dfcdbdda88ba041f9620e87d433e6a36917106cbfedbdd1dbe97aeac06c 2 +/usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html 1f0e31bfb7634d9c06bb19b0a068797adb06185ad09439ab98514bd5d407ca0a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html 2cc9b94408b9d69edc9adf3fab9fa34e62ea07ffbdfcc3de7d0e5660f676ee97 2 +/usr/share/doc/packages/erlang27-doc/doc/system/statem.html e870aa04274ec0b6f0d4b07a278ca80b42c766c3955be5f0c4b26943682ecb07 2 +/usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html a7164e6f9257ff06adff1320d82f00db99f0f930f5ffed0b183dfdf8f18b8998 2 +/usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html 6244b65570fe6f37e20630898b6f9debce824bb420dfe3bc80efaa345f371867 2 +/usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html cbbab5f29a7c1ac45706af634b0808ace14bbef0abcb59d058e1903fa977e1db 2 +/usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 01cbc7fdf3279699433f7b8ba0f034dac0cae9bdfa893d587155387f2e6f36a4 2 +/usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html 1c53c1776a91ec6a9834914cb9201704a30502d35c49c73452a86fc7452cdff2 2 +/usr/share/doc/packages/erlang27-doc/doc/system/typespec.html ff5624ae2c90779a2705949e0ad62c762f774b1fdb9af781f474d403de6a9dce 2 +/usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 0d77f5cc795dab2f096dd55ed4ae9e92a0070770f572eb46120f15041884463e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/versions.html e545b402975e7d7aeb5345ca7f167273c2adaf2e5cb90b095aaeeff1c0f88818 2 +/usr/share/doc/packages/erlang27-doc/doc/system_principles.html 775e9e38923f514e896fd9083dfe910db63678e177460f37c13e6ddeb167c776 2 +/usr/share/doc/packages/erlang27-doc/doc/tftp.html 23ea8ce9b7fc72300d8fdf1a0439743180b780039bacabb9fea581e8f7479572 2 +/usr/share/doc/packages/erlang27-doc/doc/tools.html 315c5a7b1e175f3278724bb0dbd12cfc32d0998f1c685e3027c0f29f984e258d 2 +/usr/share/doc/packages/erlang27-doc/doc/tutorial.html 081de72bf263ed9d932e590c0bb59a2f45018ac2b4c3071198a615c053a12699 2 +/usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html 48bfd022608e6edf722152d4f34f8f49494863386330c8948143e442664210fc 2 +/usr/share/doc/packages/erlang27-doc/doc/wx.html 54bb9f0341b9974d21088611e81ee1f0fa209d0f265137000afbdd74a6d492e1 2 +/usr/share/doc/packages/erlang27-doc/doc/xmerl.html adf162331154cfa65fcf41c9c8bcfbf6865c3cc8e239c3dddaae3d58d25995e6 2 @@ -2557,5 +2557,5 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html 7a1abc80b89435ba5b92f2869ad3675daaa498cd3a5b2083571ff34a08e8fa49 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html e3887f4f984a7e412db322174d721b4a054982515051a0bef5c2e5e718675bf1 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html e53b7e5a2eac7055739d0c269e148a99c1adfb69c4dddab59d74c865ddee7f2c 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html f75c38988ea52a065e486dc3fc27f72e9d9b8e79ba6c39e445c2c73ac7ae57f9 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html 4ab508eae20580168eb9af32814b6686ec5ffc003a1c8735f813e989a99d752d 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html 69f5eb54ef72d2ff4758051e3477e255c7a671efe70e407b7f62b7e40e682e43 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html 7962eb7dd9d4dd23679f4e2cf1094a62f7b1e70391b0505258bb460902475dc4 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html 840ada78880aee0d41d00e0bb3415634db5f30c06315fce0206737b233cbf03e 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html e546be479ec43339430ae94f9b2f38a5f986d0c9d42683f1898f417ce8ab92f3 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html 07794f9a4db9d4b7d409e99cce0c91ac32e4c177110c18cc720cc2b6239f2582 2 @@ -2577,11 +2577,11 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html 828ec45d495233a95167756f2c453986626043df0a8a0e74b3452ca0adad6ed4 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html b7dc2c988ed5bd6b5b364313d7ef2443362f154db42265e5ea73cf83766faf06 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html c5996736c087a28f07325141f46f23c5e9f10ac45fe89eb714fc04a4498b4955 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html 6dfaa2c09914c1a76aa9f745ddc552730f097c3e99e30a91bdd1f0c00ebbbefc 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html 37bdf46ef48e562d215c8f3b751e59b054a6d77180a12d398ad3f9b6b5052172 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 734c67c55240fe260f723ff1a7f29bd56bdb1761178317f4dcb21e6e39d06443 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html c8d14583ce85dd830fa3a67cebec5e90a113b7b79bd8c805270e2c8672d6f903 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html b08855675c55dc2a9f41f10b91e3d9ee1da0f0eefbbc9052b1bf541023054c2a 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html e1e940fa95a0f4cebb008ddb5fed67c48fc9a60692cff76635133960f34f1775 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html d59acaaafa28342a671966fae14c3474e4fe5bfbab1837029ab7f84b1c778848 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html f9060788500e13018c583b69439daddb80a7141c535f053e5bd39c6819f75f82 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html 0ae6f410b94fe36177544ca34b99b95bb849ffaa15988f95f56bdd72699d7121 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html 05764db1851ad58b7c886ec78df7ce892cecfaa1ef430831129f4b6f2d07e623 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html fb8c4ff9e6ed54ba8e1a87fa0aafc1114c351a9e6a240ae500deadac938e0861 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html e3f5cd4bd8cd500defded7acf89637f38518d74adc4db4d5407274a4b07e8bf7 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html 1469c23cf896e2daf6ce0a246dc356c8ee7e7e5adfc68aa340b98a79ad69e664 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 26725899a2b1c8a0444e2125f61ba1073f515c6707701840a4e552a062b63ad9 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html 5d45227b254f7729bd9eeff8a03ffed712e4ad73ab4d9c5b33c05c421c919eef 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html 8dc7cdeb0c7fd5a53e16db2e1735c57dd36d10ab59774d41eb27aed9a5a85c8a 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html 0d3f633376f79ec8f8773e3584cd101322f2629df522f9904113ce57ed1af21e 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html a850cfb9e36ce75cf0ec65e06ba2690dc077bd4773716deb3413989f9b3bfc39 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html 446006fdf98728d558c9f019bd9a6ddebb01adcef14c9162256e20381b68342f 2 @@ -2608,16 +2608,16 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html a30b441305e4831570cce109a95970611e4baa01a5495b0958f6f386ff8e71d4 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html 06994d65b56f4833b491c712338e3a4ce248a7c40e8063c56e7a5e5ce586265a 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html 41004a60773cbdb5358453d7a98a1e011556c9b9025f482c9b45730543525924 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html 443c718d2fde13616b6220fcd1970e4fa554e5246d75ef139549dbd2d98c39c6 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html b5e66dc0399e542e6b009d88d607836ef3d96bce68ec8678083942de4d56503f 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 2e2604365a5ec31e81c7be9a8df9a4286b7d7153b99d7121c9ac695b991d3c1c 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html ac26405c6a98d56e13971b856a055a77f84f4b19afdea411028cd20b761733ce 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html b7c591ea5626793da0ac41417fc93863ce05d64616ef45e01fd1f39009639efc 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html d7c6817a6900a2e1cc462edcb99dd6a11d75fe708c4a70daeeeb1a3762e431ab 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 7fc45711d5a37b4ebf7c9777e006f55f7a6f8565ea4d0884e655384e664f7047 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlang.html 8747abf30e5377316bf47ecbf487b40697042f9829bf9f699b66d31fea007df5 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlc_cmd.html b62c94ff8a0e7bcca3bbd11d4b18cce33a9f4c3f9e310eec966f85906b296f54 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlsrv_cmd.html f7e5e988548700b2e6820d838e26f455fab37c594abb3b4916c19d1c029dc4b4 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erts_alloc.html 6dbf9dcd4a2aaed9992e657dfdc593e89db5dfa1f31d46f1328f63ee7b5dc901 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/escript_cmd.html b81a991e864eaf566a02d1ad432a66f9624fad5ea126385941a13ca02e6e1a6e 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/garbagecollection.html 79da3c005b5fbd86162a50e12051955331ebb5b86a70ca89a2ec514255617cf8 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html 268cbba92078478614dcacb5a523f02a9e2bd6c9e6b3b9dd0f50eb943ed64075 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html ccfa6c6d265cc1b69bf7606d22a645eb860e96272591d0c72e773d7d09da660c 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html d663d955e7602628d421200111f3020cb1d18cdac82dc978812bc59c3d108be0 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html 53fcba6bb471d1c279558381c049737e2236b998b4e214c44fcf9b19548126c4 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html b92aee16faa9977118501971a328bfd4b092068a1acef03adb92d6f9ac1a33cd 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 5c72c8f95f32f70830b42876ef805874e9bf6bb545c7a15d8fa764472eea81f3 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html 712ab334a46d762b3399242006d998be95523682c609885fef3260bcb3526699 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html 8d43a5c63751fd5287c8850e98addc8f3ec3d9a08c8bbf0591fdd2fb6cf6dddc 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html bac4f885cf0c370cf3c75f1308b7acf95549fe42e9f669a279d01bfdc23fd260 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 485efa7916242d2485ed0381ccfef613ce3f4e5b5a3e980ae1a5ac2e302b9f01 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlang.html 80f68c00b94bae7d104a58206b7998cd3d48c2d155daafc9d50331dffc62a09e 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlc_cmd.html a9689e5d5c4ae03efbdc84f5dd59e966a97e68eca5b4884fcdd1a04d67a466b9 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlsrv_cmd.html 6f80ac4e12d8d2c5c71d173f4cbb3f171a3da2469c9a5454e220c214e263c454 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erts_alloc.html e153f087f63f34439166de68bb9d0c24b3986d321b6de622b96c1d0bb299b465 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/escript_cmd.html ffde22773a543312803b9dab16204da81e9fda851c47d8305a2a4e295b289b6b 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/garbagecollection.html b0a49106784a015e74885412ea9992ec8124131667943d23b8119278cbcd6523 2 @@ -2625,20 +2625,20 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/inet_cfg.html 49670ad3cdddfd140bd775edb0429e981421d01075b9a2ee9a7d6cb9f70056de 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/init.html c219dc9de3dcfacaa32dc8799cc62d4981bf6d7de1f9b333cce21ddec76faf89 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/introduction.html d58acb5e637279eceabb74ca2d6d8f8ccf7c1c3794e4a5fded06cc4feeed311f 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/match_spec.html 2f4f9173a1d60063c90a434a11583f3cdc7122dac1d34197884fcbfdd7cb2649 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/notes.html 6a0175bb1029740174660678b3da88441b494bdd059a7915cb996b9ab58f3c1f 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/persistent_term.html f8efdda41736d19c380c1a82c81708eb9577c116a9f5f8f2629f8501e2b03ce0 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/portsignals.html 1e2e89832f5144fc40f1a70ed81bd48a07eb7e152ddead461c630cb9735d6094 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/processmanagementoptimizations.html 6b1c66d6aa7ea987029aa692e4862df7f1c6fe6dc613ff268ab078811c94dc2a 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/ptables.html 0ddef3273ac83f56c6352d8f9e2160d0456dc5a9324d261aa0ce84655ca4a4dc 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/run_erl_cmd.html 0aeb9036e85bfbff543a6e219072d224f89ae2035762a8e938c5c942d81f7b99 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/search.html 7437c3dc8c016d5ef2b79552478285f8ca52c9e5eb1181417ed3259ac6a4812d 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_cmd.html 72f76333d1b3962c38809fb6450375a2ec3dc3913267996cca9a3926d0b43f55 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_erl_cmd.html ff2133d0abcd451589235dec7f2b6cbb04d34e1b28fc108d79f064418a270543 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/supercarrier.html 7ff5216374da48f24131fe83a7fa24f57b2022732f2a1f17b81ac24f0fe9d5b9 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/threadprogress.html 0583d3a9633f5a302792b899a6eff061f8efa19ad20fc854fd043cf589c1458f 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/time_correction.html 57f0eb52316345f684e7325f229278011e5241d68348d15e8f1ba82c332ee13e 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tracing.html 3e9832852ec43017b02bcde26724b77ef97f4b83a7dcf433bdd3491d4b245fc0 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tty.html 050c9a6e2d16d6e35418aa4471a9622368d16cbc666c1abedfb381c7f4800da9 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/werl_cmd.html 4b5c80641fc32d022190ca4607b7e613a60de0316cbd6b6987e9dc379e527d6a 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/zlib.html d37cf515476ce0f0c0d9a7434c32488f1b4cd6871929d97a9d99ceff81555be1 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/inet_cfg.html d9778cc76c36cdbc16a515bb3d70a7b7178919be9d3fca86558e89bee3d44272 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/init.html 80c49e6cacb51bfc89faaa138827794072ae2417c36f67746ed342ebda237909 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/introduction.html 123d7b39a535bc60a65b19c1673c62e901ab549c6475983a4394490f35e510e2 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/match_spec.html c3edab9c602c9aee4d2dd345ac7a973b62bb082f7be12034797bfb936bdd8ea5 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/notes.html e0488ba17230e5d128d040eaf45d1b883e321224323568d0639b2994302768ef 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/persistent_term.html c4b0e7c7aed8dd8a9cbca3d084024d5482a2fb5ef222b614abbfc8016116a942 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/portsignals.html 6d876149836f05be3e4d86c6c14bdaf299345dc068689863d900a641e064e4ae 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/processmanagementoptimizations.html 6069dbcc8a9ac915e1b029fb61cb3b663e8c5da3d63bf2fd587de8bb69f88789 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/ptables.html 05ea310f9b072b9bf09973959e00c66c9713ba0cf143c9789f9efa65f2ec545d 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/run_erl_cmd.html 02d2ce0ed8ab4d8cc76656c6339773231718c632006b8810cde3e88900ca644a 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/search.html 32934a92035cca79571964ad9ceea62e2818dc2d907bdb467c0c5a2e0ab3d805 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_cmd.html 4ac39b064c6d879543cfaf76fab3c9a16a5eddd028948a2fa515acfbd326c306 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_erl_cmd.html 2086c80504b5a4585f10ebba04248e26278541c4665ef12f760d73de94877780 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/supercarrier.html 913c97dd49b130bc8e71255662ab83157ca1c51ccfc89d73395bb5b2cfd6a3d4 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/threadprogress.html 96e89cacda4b8c53e5a5f0ae8724468d94ebd4ff228f990a8712e2e85a0eb9af 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/time_correction.html 4ff598aaf7a26f82f9b4710dafc5860b8d299240898b432f715ef951493d2620 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tracing.html 06cf9f3b3476972c85d634b040d8c28cce4eac5faed513809c82b200838d085c 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tty.html b52000526200c034e5b22dfa96634a51410513e9f8d866e1e840dc89b2697e72 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/werl_cmd.html 38eb6443d9649561b23862f130f22e95121e32b0f3933f88a0e0f219badf6781 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/zlib.html 71ccabe05155b0442fd62697014e68ad5258e1ccdbfcef2f238a6820f81b26da 2 @@ -2649,8 +2649,8 @@ -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/404.html 0666f80363b7406ac2829a9805b1fddba6346fe8beeddd76b637b57e7b8e3f31 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/api-reference.html 4e3ea562ea9633e141a64a56de66eb071db41c986e54a3b0c18c30b880499ddc 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1.epub 81c413a596bf939ebf3f76dd5623d60ded991e0a2250cdad78fc9811cad032c9 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_getting_started.html cae510d26ca8a5500e7a49b364f83453a3df3e6b9e114beca9ac44ee1b4f3fea 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_introduction.html 7b2c04803152345ad6543391f1369977a7d7b23c6f84ab28dbf4ce794dbedd18 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_overview.html 6b807a81a146878a439d3fc4b9f519e09d686dc30d5b54ecf273df0f6a6a26e8 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_spec.html eb46daaeef1494573655a979f2590354af2ca469af4362ceb71a36e9e5f86b29 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1ct.html 436f4dd58228ba1d8b794ef5c8752ee608de16e481ccf250233d8bfa336f9d12 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/404.html 3b4945917ddd02fe74fbd048c9865aac785a1d9d9ff95687861c444a5d54abba 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/api-reference.html 48fac20a452e700ccf8320b8099828752b5f9269a2406536bba9b18c06313312 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1.epub f8b3943b84cf12a65d34592bd093f8df7ac7166bb34cd424ed01c49dfe49286e 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_getting_started.html e740cebf5850cef1e63242f82062237ed90082b7733728a2669d15734674a184 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_introduction.html 760f1c34ff929c83c9d3f65018db737b2cf74abf5bfbcb90d41ed5ab31b85b4a 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_overview.html 8e5714b3ddd0741a037e46f1901546b74c7ebc2dbc1802f109d881e4a704c62b 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_spec.html b15f63b9f32926ce38a2e3bf71dcf01e8549525f04a89ed380a47a633fa8b319 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1ct.html 31d8a6c8bedb1149971f56cad86b31132d98815c512e70a00d802a41ef06b934 2 @@ -2683,2 +2683,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/notes.html 833feef73ccaf2ac356b9be0048f7204cbb5b3ad72b346baf83ccd2c900aa3aa 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/search.html cccafd9badc8b18dd7692f8aff98bc863577aba1a5630c0824b0a71ad8dc1eeb 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/notes.html 78fece033405bda15e77e6228bf881fdc929fc76bfdd16248de05cdfee60417f 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/search.html eb108456d1565889a5096fe27b29f0e0bec950039b8b76e95cc7fe5315ffc8c0 2 @@ -2688,2 +2688,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/404.html 261b4c7a4703c3b820322cad6fd24911a1659db02682aed45e31ef273714b4e8 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/api-reference.html 48f15b0bca40ee876d48e569cb06ec84894cf7ac870cf0c12b7815b055923206 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/404.html 8526f9a92fc285d0c14d24c0c4fea763bc71257a505adc7551bde9fe15b422a8 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/api-reference.html cbf32ab85be2df3c2d0d2bd43dfba9d257a57a087762e5c6983fa30b0d1bf196 2 @@ -2695,24 +2695,24 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/basics_chapter.html 27ac1cbb425eef9a7dedc45c2ed4017fe3a32c15eda313b35b60011c922d3582 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test.epub 6d01e5f5ea1218513531233ae6fd5fa984a7a970ed170452e480e64f08d84a97 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test_app.html 78cefad7d87ae880459e573b54103938f372f31f28e131d387ee5c2d3f5220a1 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/config_file_chapter.html fcbf3a8faaac9c0c29e146aa00d1bdcf32a8493cb4de9f79744078436dde7938 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/cover_chapter.html f62773370645f233263aededfa609f45ec9152148417302d2ea5bd3777d8e1d3 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct.html a211d1e8e32239ddb9633d35b8e6eac71f33dcd33452ccb917324dc4e89374e4 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_cover.html a0ff42d2a52f9cbe962a21577427a1ceae1c1b7b29e8a3e2d6826cae71a82755 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ftp.html a97603822edd60b0a6a6ef48ed1916347cd5adfccb83e52f1a7348ed1c09b27a 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks.html 6684ea324924382b51c74b4a5894b9f73a5172fc007b5e43f8ecf2424669c0e7 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks_chapter.html b0fc083df67477a9f3ef6bb1580410f6c0d129b9a2e5b4c2a6976e4e19b9c49c 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master.html d9814c81c050207039d4b5e9ec9a479aff072637d02d70aa44a75eb3a773aade 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master_chapter.html 31cf87a98867052e97d31d355ba64eb56a4f8fe914c26065a01b0bfac4396f46 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_netconfc.html 942164191a4dad7144086da3d98d3fac17ab4d30eb58f876bbdc5103960efb92 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test.html c676d03e30588445c82ba9130af14241ebfdcd9dc8597010d4d8a269afb476c9 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test_chapter.html 8b87af5fc4d135fcee6f9c4804455857d73b60d851819dd7d72ddaaba5acd93f 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_rpc.html 49a34eb749b05f0b0f2d7eaba3af0e8a790bea4a7ae27724a3079c4737439449 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_run_cmd.html 5eb818e6a3927510bcba9e851b173993707665cdf0f1a83fbde1e43e0079b9ae 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_slave.html 5fa3529ad309c5779f6da0139e6192e328e86f2d9aa70baa56c30fb76233ec10 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_snmp.html 08ce5e3356c65d70ddccc0fec7279e313648682933974c32f5193b36fc15848a 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ssh.html 930cca45fde9463e9eaf4969198785821a679d3ae9ba8b2d7272223866dea357 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_suite.html e81061df0cdb51b7f4e6beb42d99ad1229e1e1faf5d0ce6ae336d8b88ecb2ce0 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_telnet.html 9af4e2606869140e31c90815aa186e05dccbc192beb4bd241b3657e90c42d8b1 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_testspec.html 6e1f2b52362754d2c319271d1f65d3e16583763d15a5f70f64b3144479fd0e88 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/dependencies_chapter.html ae11cacaf6492792ce233c17c244b5f279ad783ac800a730a43aba9a3c74848f 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/basics_chapter.html 6393c63eaf7be50f1cc9fdfb86afb82945ac6bf5793775c48b2e6ea6b37ebe13 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test.epub 1ba125e2691bc31b9d92199372636b6fd2c423e50f9c924c91f361d5054da696 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test_app.html 6207b0266916354fd87f6bee9cdaff4b7bb3e655b8aec30a81b31b96fcfd19b1 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/config_file_chapter.html a63ad80e2c2de21dd962101f1822f7356cae970a1dbd98bcff692cfb0d5e598c 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/cover_chapter.html 17f0f0e87ec6e5d2d99e1aa9d9362fd92696d3a98c96200995e3e9562c23eeb6 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct.html dfae8fb5aeab9177d80a9514a3a441aaa137ad3e348d9159e7f565b5d5451afd 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_cover.html 3d575dd45a568bcbb5f9aec080d2d84b222aa5ce4ad5350df78c38748c8d73ee 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ftp.html a8c31e04f35a8b85174998ccbf1128f1b50b8d592e344b17063e1dd936114300 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks.html cbe5554aa1ec9eaaebf75f69c68488ab21c0e768b715e0d588f2e0fdbf9abb12 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks_chapter.html 0c6c03e5f365d865acb5f51fe7b1a4d9a9f0529e3e3a9ad3875d4eaecc16300c 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master.html 435758c62e8698282639d45f41d47da76049c1445138fb7a2316a0a18f0ed32b 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master_chapter.html fce7effc738e8ba26c5801bd1c86a14ada07fddc34bc68b78fcc6e655e6d064c 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_netconfc.html 2ff347fc803c41298cb16bec15550495525e40070bbafd90cf48688bd84bab47 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test.html b7314faf09dc5ea60593fea9aac1466b70725fe21b67b6ff261da9ea3260635b 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test_chapter.html 8bfcf996bdaa3863d72eaa152a80fea78c02f19a858ee6ec06c8f24bd5da896c 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_rpc.html 6b9e75f581bc69ebcd71ba5374be774346f5fc0cb29921823c38f0ebe8c38fe7 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_run_cmd.html 89c96f6df1a13e91c230f57af951122bbce605c216723e86d3cd11813613d2d1 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_slave.html 651153d32c5284e804aee027644a6b2f14284a7c028b03badefe62abb86f33bb 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_snmp.html aeff4f1190574862a7697f808c3b3305e44579fb24190ff76e3c126e746f228f 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ssh.html fce3975839d265fd9ec54936e079f7b28b4ef977e6febc7e52e294de039ea47d 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_suite.html 56ba7fcb8a7cc7f187971c21776f6db4d5c4202ccbff63ab5849da2c4a768c67 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_telnet.html a368a4fbda94b5ad2f44346931e7d13607e88f8ef08694c9f9202559580c04c4 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_testspec.html d76d02c83a4de29aa3cbc7d66d502d64390d9a9ae39e200cf3351567b1c1ef85 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/dependencies_chapter.html e2d67e766d88bb1f8964767d43975498fe2296ca7d00c86afc16a797f296b0cd 2 @@ -2739,3 +2739,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/event_handler_chapter.html 9bcb540702be49f984139b57ae7e4bc8fc57b4774e180f7597f49bdcb9481a7b 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/example_chapter.html 9879ab748db428536ce39c3b5f3ff92c5c0197c920afbdf92d3f5bfedc85601e 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/getting_started_chapter.html 511331cc5da0ba470246db117aaf52b97efae97385e549df0ba837ade8298631 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/event_handler_chapter.html 968ec178082cd2a6ba22c3bd4864624c7f73da5ae95f89de6b63d953b7f13345 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/example_chapter.html c5f1888eaccdcaafe21d784023beb616f1494ed2457303e47e1d61289aeddf60 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/getting_started_chapter.html 83fde3f683e9630ea27908f9a1041a25b37b62eae4d27bbde004cd85aac84c5b 2 @@ -2743,9 +2743,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/install_chapter.html 9ed27b9d9c641c4344473081a9c33152b0f57504c1ccbcef4a61e9b725ebf3a0 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/introduction.html c77eaa1d0f1e541c91bb706ec87365a1fbea25affe0d077721ce43fa40f07fb9 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/notes.html a342ff01d7cf9e118ea4e567ad7f5ed38acad31ffbc8fd30be5d54af595f3c5a 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/run_test_chapter.html 55cb16d690670d90631a58b12423f764ecc0f3ff2bfeafc6cec2adeb49bd6925 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/search.html a57c5ec6de43df9fba2d13a9a129372ea5c9b05a9f253eab334f2fd9a53e2b64 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/test_structure_chapter.html 6042fc9002d2dc015791fe5ab048a3d84a19c6455c96fc24c22e7bebaa57026a 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/unix_telnet.html dc2ef122f70290a95c58306720cf3bbfd1c5c7914eba6a206f9704bd877c0b65 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/why_test_chapter.html 15cc377882b047031d24ab69c0179a3af96818648a12d142f68ad0c6e6ef57dc 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/write_test_chapter.html 74279e423c893e71a20287d572740bb6712f83eb73f7b777a733af622b01c287 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/install_chapter.html 39d436a440e4e38bdc0a57cd2ed9cb0392027924c0e3643e0f69c7f629aa31b9 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/introduction.html 9502e0b7c20595ab12916942d21a00d4ac7aeb261a447c8f7955d3925fa12749 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/notes.html 911c0efe07be69e1fc1ea0d2852ff9a3c82c0f466857b200b2c020b0fcdf0159 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/run_test_chapter.html 84bd45c470d684cedbb3e6140513bd404e0f8d31a0ec96ebd7eeb368220fd838 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/search.html 66a7b1b58e838634e39323de7dd8a3344a249fce615004c2e06f21fa822cbfd1 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/test_structure_chapter.html 82fec4b5a3c0c0007338c152292d89a149d1f1a809fae57912da68d1e37e3f33 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/unix_telnet.html 5994b641571950a5f3c75f522bc66c85da7cfbd0428292548d2a91c66a82ee3e 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/why_test_chapter.html 88eec3d195ef7059ff42ade3703f4b9e259afba4ef31e4789ab491a3dda68bd9 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/write_test_chapter.html 85ae36479e0e70ad234d6b4236833c662260490adc54663a913868f25fae27d5 2 @@ -2755,2 +2755,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/404.html 6046167a967a532d09afbe148f563182a721d5106f4a11c705fe8c74fce766da 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/api-reference.html eaa875c14b46a0e4329656ffb9554445014332b44e0f0c7aca003e1d4665a45a 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/404.html c6a6bd1e54e9c96bfe6c81a569a020bb383504f66e445a0ca4fbfb3bff54bb0a 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/api-reference.html b00cb0d55a8c358f84f05d00bebdd1d58852c863716dd2f9078fbf15f75b247e 2 @@ -2759,6 +2759,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/beam_ssa.html f029674e81d332458ee01d92a5296826d764b5c9ee7799073d81bd167265c0e0 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl.html 7f9b01c3a7e6f0855fa29062a4227dd1bb10d36fa52658c0a8e34d3cac2b8604 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_clauses.html 7289c0e020dcc6b9a5190e36602f84ec118622634b917bbf8218015336a56c16 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_trees.html 3e12fbc676f1b40c274a971d565704ac1220df9d8858743b7ebf25816836b1e3 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compile.html 2b6861581af4f6db3a1fe8c7b50dbab4ad50ed8fbbaafb43e1fa81b7eaaf1fab 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compiler.epub a28ae95efd4bb828818a3786ecac098e4a558c4bbef4f8a2aed7958495812f65 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/beam_ssa.html e630f32cfae551b495a6b2690d77ea395f3f549e8de8ea05b3d20d90b068b4a4 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl.html 68cff93273a57b1e0a63fc299ead3d8c0193d98ca2c542711c6ab53e94638525 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_clauses.html e2a5cf68eb9167046c22e0aae9cad5ddadff7d17f2d24fbee373881d2b139659 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_trees.html 428712c1e42bd5741dcd59dffafc153dd28a38251b407887088267a8c474a595 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compile.html 16bc3cee1703431657cdd9d013a45bbff09551b50f7a689e73f2dcec81642ee5 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compiler.epub 81781993bb25d8316a1934498743bc01d3a6cd6bde8a252541c1ea483c027df7 2 @@ -2786,3 +2786,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/notes.html 199119b3423270b2d6e585156ecabdeab5b7b8decd8e63b78645bf2eb51cd619 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/search.html 61c8811b568286667ae995e6b5eb7baf153d393f4004484748cad7e388fa2a80 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/ssa_checks.html 7da03aa483c3c483b54a3e24cbc4779d1463d08276ff79823e65b405c7ed41c4 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/notes.html 2171933563b604ae3369067bd634be9590eec27563fccf19e2136a66b82d71e6 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/search.html e43dab0cbe62df5fcde17c7124123e642ef3ef9dc1332796b54cf0127be4c0b8 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/ssa_checks.html cf41f01ba2a86dddcbc77dc8e269a0d86f7d6bc91c03e763bd4ac7867342857b 2 @@ -2792,3 +2792,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/404.html 9cada0303edc5203d7da69936117af637e870db2d0edb0de66190c9a36cb52b0 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/algorithm_details.html c666e50034abf2a47c2b2858d4b7cc7dd5fea3ac2fd34fa855574050ab08b3a2 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/api-reference.html f98122c9a999975766e3f32b2d33c9752800ed29b4de82c648a42df08ead672a 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/404.html 0c25c6ea3cf12acb925c6db59328fb3714354d331051fcf0e59753e8f653cdf7 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/algorithm_details.html 7fd9477327cbfa0efa81e6efe936867f1f60a16014171d2d5b2abf1801e5f250 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/api-reference.html 5619c85ea3dab5d7f6aa2975bed3b4daf6380e75ad64512149e2bef7c50dbdfb 2 @@ -2797,3 +2797,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.epub ef338fe93b172a429843bb39dcc125f527af8aed55e37307dd68007d3fe59409 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.html ef4891a37bd05143de1986b2c419933761d6ffa2e3a2486992d7b29d26c5b3b6 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto_app.html 2469eb797e46fb99ef8e2926a12b6dd739944c289ab47d8082ee46ffea72ae0b 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.epub 74d826f7c887c1fbf8c435b7ef32f8f3c367ea6a8c609ccd038728c67fa333d9 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.html de616a645a1ac79ce7fc17a53d012e4d8af1a9fe1180af26cf64598c542f8b9e 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto_app.html 12d183dcbec758819237b001e4037e5fb5f9a54c1d38a948a9a4c567586dfac3 2 @@ -2820,3 +2820,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_keys.html 81f763d6094aaead0ff8dbb3a3df52bcee84d3b59d7b8775d799eb1a3bb6ada8 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_load.html ec50c1e5437f6e0c4846e6dc763454aff5b21bc8caeb0c662f45d436b80e0898 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/fips.html 6149a3593ca25f027214d2c308311136b6aa0b735925aeb7b24a442b3513c2be 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_keys.html 6ce7d7560041553e4a8204f171c0c965bad6b239f8fdfaeb47ba20abc9078950 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_load.html fecd91bc634b0bde38d37e46951f70665a776037c89c47f12bdab112618dc93e 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/fips.html 9c9d88bfd74fd38072f00b5b46695ae45bec0734845eac9cf4f2c10ae56750df 2 @@ -2824,4 +2824,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/licenses.html dedd38fbb95f070cea2fcfa323ed3d8889961563842f26e55b3049db336a5c6b 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/new_api.html 6a42d088ca27ae04a457fdadd93e18f2c193096b688017ac9ae20e8068a46dce 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/notes.html 7dc5c16e6b1f9609dec4dd08cb5dc68f76538bc85e117f41b2be5f6874aac274 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/search.html 555a47981c29680126cd5290815750b9be2e96fd5d27d4c8e31305b56ce71aca 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/licenses.html 1decdae97b555d327e13dff609e9b2836e49dca842691bfeec0283337ddcaf4d 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/new_api.html 5792cf9ffb7edb63b8ea7c954bdb62c790f7f8cb7367474efc7fa689a1edc389 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/notes.html aeee603d0552bbac16b0e001be0990588dbbe4d6bc5f3d7138b34a56a951c19d 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/search.html 4e76f945a53c344c1f13648a846a37ef876241e9ebc49f366f91007a291c6184 2 @@ -2831,2 +2831,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/404.html a02113f4bae98439de346229d3d5fa3601b7ceeb587f0f5f079b4c0ee981066a 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/api-reference.html 5db94ca20ceec055c3613825283882f881986730d446e1c39dd40975e53a837a 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/404.html a3ad43db511b42b87324d3a39876199c5e9ad3a20348355548750df2cb0ead62 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/api-reference.html b1d643873b5e350a8d8e1e674125a2d91b703e46d5a775dbdc396dc7f91da666 2 @@ -2842,3 +2842,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.epub 13327c8abdb4466cffbd9c916496964f2f9e3fddc29cb78e4e05f8f8bd1e8d72 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.html 983697801c9d8b802e200c1f88ca6baf18ca65e36ae819ba2a290bf0da2c2330 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger_chapter.html ec9f344c41df45af04e9f6713d1a4225c5b8c32da40efac7cc447705c1c18a37 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.epub b56aec50d742f0df697e3bb0058005af4d7be7a3f0e21f89c5771e7d35a72a3d 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.html f4547a1045e9dee688f62f55fa5ed6f25a6467463cbd06bcb2a3b561a38cf995 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger_chapter.html c0f5c3352c2c13c6c657ba207430f25ca171c54e7778e03bcddfc072a07c1a5e 2 @@ -2865 +2865 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/i.html 981b38fa63941d35888d3a3e5ead00b1db0652775855cdc5c64423a640473d87 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/i.html d3d08cc441434b72fdfd5f4db5b0e3636231a4df8a1791aa6240308b20fbd0ae 2 @@ -2867,4 +2867,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/int.html 38f9ff3c0284ecc43410bd39adaf9a588230b20969e7d8f312a0070bd306021d 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/introduction.html cfb33f030c5d9e1299476750edc3855245ec11d4bd43e3d0631a9db4403c39b4 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/notes.html 62d21c04d70c293886896daa2b920639e4b71c4af23c192eb68ef1cb8cf04d9e 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/search.html acc62751a3ec5fb36b21a26229363468d8da3dd6863fd95839aac0588c31d0dc 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/int.html 0ee38daf389aebc212e58d0ba4960a3b4f3360bd7ff1d53b6742e88ea99853e8 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/introduction.html 6042aedf6704913892074bf0af8b1934f7dd9df04303d612fbe2a3a1e15970d4 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/notes.html 0a0dce5e5ff833fcf3874b497ba582a37e745376df9235166d926ed87fc07e94 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/search.html d64e5e20e35edf3f90d82ad9e3189c1acdf06a36e4407d1f7fd9a62014f877e5 2 @@ -2874,2 +2874,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/404.html e34ab0787bffafe85439a7fb69c66f77bedac2e9566c9165e343373293a9d3be 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/api-reference.html 0ac96d16c1579bc4c1d54b1ba9bc655caa9ed5af3c43f3e1b509c46bcabeae7f 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/404.html a4e4c05138fc21224b97aead07379ba5ced9f03f6066150886b80685d51e77d3 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/api-reference.html b895cd6b57781f87d262dd27028a388892cd76003b36c5f339db54cbbfcaeccd 2 @@ -2878,3 +2878,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.epub 3a361207f76795bbe4d7ab5233490ea7ab2ca0b05dabd81f9f7536d6c56c06ad 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.html 21131a208d7d31a2f0bef6fcb58c1a78b1e74a118bed17c96a89df57a5735dee 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer_chapter.html 735b186bb7f8e043e7d9d7f876ecec37918826dfa4c6cff793d3de605e7a9f7d 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.epub a341dea821c805a79d6c6db73fdd66234a5037725c0d567cb0c394541c4e8466 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.html 420a36dce706b07292baec64c79afed22e94324debf2cb6c60770685604ef41d 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer_chapter.html 3ffee6e9ac29ecb638a5160964514f69d24d9d9c7b61c4e288ad8a795e6d4241 2 @@ -2902,3 +2902,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/notes.html 691aabacdad8c5ead1209c89bd94cc822f0f505f3552222295b07120b40f620d 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/search.html 5ae04c6c1c0d4bb58c8b05a78315ba5860d628427c1ed0d74904be39efbebf2e 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/typer_cmd.html 5991193432ec815717a4ceff9e8c4921e3c0e61fc042c154bd742a6f7f5f3378 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/notes.html be2923a7dcc4cb9fc1005c68ccbc216426a9c6e8bb4fa8857fd8fc27126a472a 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/search.html 769f8f89a734fc48887635f0b25b6bed2eaa21bcfc3684cb3942f0413adc2c3b 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/typer_cmd.html be52bed42611f321067b9ec604011da3c3c72711b4011506f4caca5a50b97de4 2 @@ -2908,2 +2908,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/404.html 440284ded9cc1040807bf6fb36c9e5b06a05e4f5ae55014e75dbd599d4c8c962 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/api-reference.html 8e62c96c289bf2d99e7c507bf0cf3faf45951ff764caf265fd0160d982fe58d0 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/404.html fc4ff19ccf3cdb892c941159983174e7fd0a31aa8478397e1b6c176930b701e6 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/api-reference.html 3664dd360c2b8c7f1c8ab109ebf156486ee9e1a7bc6561ef4b300c9ca71338cf 2 @@ -2912,15 +2912,15 @@ -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.epub 4d8e5651065595822f03645879452bf52c124f9a98b44979d173d4b0b7e0deb5 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.html d199bd6a162d1048ecf94acd029045ff5dc92021a7e295bcf9ff40425ef8d69d 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_app.html 76d035553cae5d972ef7da422b2cda8cd25f4cb0d3419d1c951446a46dd64cc3 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_codec.html 2f7a6e071de7573c40918f6d58dd6e7642426e42173f04128fcf880a821cf27c 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_dict.html a593443d808aebad294b7611f8f85ba42ef6355c996fc3872296ba2cae25a9fa 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_examples.html c9cc2beb5c17cc3c0e51c109d632b59ba204c58ce62aa8914f4be949368e477f 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_intro.html 868aff7126ff1da0c956ba00d25d003078eebc546bb918087bf759313b324d05 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_make.html 420a424d785147b2e9c349b1387587c051b7e914700c08fb26032da3c8b25f13 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_sctp.html 626c70dbd7086a022275ff583f756c858bea5dcc7f329a4d7a0cefe332cbbeb6 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_service.html d0a7a0051e7cb61d8ee4f6bcc073f9784ebe9f25c747ebd94b87fa61def989e2 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_soc.html b33b4dd2302cc7ea67a6241dbbeb5d0904f965104c27bfaf8ed148efdeecc546 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_tcp.html c404e78b0b13c6a0e266307454c3e703cbc66bfe9cf3c837b47c5b67e6e3565b 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_transport.html 6a53e1657b7a80ee0c26c0a3553323eda79389bc7e2f4f1d066b44ade5598c5f 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_using.html 1306f802d98ce5e8b9e87c52d9b05feefc747dd89b01aa44f66d8b52617b55f0 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameterc_cmd.html a4b1c9842cbd4d6c6d5eb48154737ab7a8dee01e4b7f60acf2601b9c54631024 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.epub bbc456f7881d6d3e3febca313465354b7367a5697de207fd4668f7c2c9f8b0d3 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.html 754c8f131765bca2f08f12c9af9fc445d99d0fc769118bda1e6421edd5659b6b 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_app.html d6c18370b485bbcf0948dafeb22e2dde8d669d53b493e87762b22c1dc2bce73b 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_codec.html 6d344e2917369b27635296cf68aa583d479d6d104d30d3c7be36ffaf28b820a4 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_dict.html 9bf7f4b110dd3d9e44741888a19e1f24f3b65c6cd84e5650ff6a7c49da3ea127 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_examples.html 4193a490baaa0c857256812c50a22b4cadc91d3a1d57e4c84f030aadc53b77c3 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_intro.html 75b4d3199d43484d39b81c9888bfe9bbf7067a00a0941d9f013c7e0fc870afbd 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_make.html 5b84bd7c2ee94e381a4c3bb4c71f96565ea187991a13310ef7258e8ab6d93e04 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_sctp.html 197b25f7ad79f5e3c2c449a045f23e7df4da95902233b3ed72681c8e655a312d 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_service.html bca8487847de3695a4b85e8dacc173d419c60ed50740982c52110ce4600709ce 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_soc.html 7d0d323e93024bedb1d3d66d31500a47dfee7e77f40e9542b6f35d21138dd91f 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_tcp.html dd194aa4e8dd98cf2cbba638d221d2eb04e6250cae93200134e2112f858f9f60 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_transport.html fae1e8df91c612dc7615cd36091ceb226139064d5ff14682a99f344acacce49e 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_using.html 67c781ff17b0eef05993684c79a37d274a782efe2b48dc06ff3119d38616630e 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameterc_cmd.html b1a453b4f4c041dde449e6019b86fad5dbdb884b69edbe2b5bd855f752b428b9 2 @@ -2948,2 +2948,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/notes.html ae3c2e13ad99c121584e956fca8daca4543485cd5e059efc6ce1b5df5a3861b4 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/search.html 2fd2e99429613f879ebf716212ca43dc70c9992525b8d2662d1e57218f0c7c01 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/notes.html d94d1c844788613b4951dbc5ee0e0510602833d9922b1477b616e1249d49434f 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/search.html 97eaa0f8354935679e49491a9b42d05ac016da0b6394f607e35bf56d8b777a22 2 @@ -2957,2 +2957,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/404.html 64057b6946d4aa51f2d44bf68b82aafdae9af36929c441d9eac7b2625c6ddd8e 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/api-reference.html 1cd113373ee407b6875a6bf24a9fafeceabd2967ba33042ce0c7731c145b6e4b 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/404.html b8abe6515edae5875dd732fe366856e8bd29399ff1ac030accb235a00fc62acd 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/api-reference.html 4343988457b728cdb0c247d03a9ea7510f5eb57e635d711d105699c803d45b19 2 @@ -2963 +2963 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/chapter.html 09c88b8805ac9874fc253835a10d4603219a8536ebbdcfaab21da1585e2cad36 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/chapter.html e0821749201b5f02f2220afa63638dab4a9127e57b2bd34622e88d3e17bfe90d 2 @@ -2984,12 +2984,12 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/doc_storage.html 4773e662b3857b56eb2ed3ae0a137b515043c2fb64aa60eb1d32bbe0a7d72810 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc.html b7a2272851702c050de5c0d1d0cb2cc083b7ef4b9bcad6224d4b80869c128cff 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_cmd.html ed320d34ca4ef50bbe93408bf839621d4c035ba0558e14e750ced327d4dbc96c 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet.html 0443c090304230100bcd1ed0dd36af91d4ef65654d5ab72307647f02ce43458b 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_chunks.html a0d389a7840e80cb8357be6418096711c074d186ee0eedc5e0e821e7bc3d061f 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_markdown.html d5bab4dc2d9a44c8091c9a145ca2f43064a237a6556491cf566e9defe4bdff1b 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_extract.html 5f2170b5f4c1fee25dc12e7f5e5240d9f8b1df456e25bb71bc220effdc3e6d92 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_html_to_markdown.html 691abba15bd7ba75c87d1fe65effc60d4fb86b3525e540e4d8b941e826665c46 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout.html 82493db21f88dcfc71f64119bcd7b1506994e912aa8f7c8630d889b88c73b4ec 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout_chunks.html b56abce3ab3af4b11feec65ac99fba429935a0f3fc0a2d36f8c6430e0c326e16 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_lib.html 87dc4708f04fd94f7cbe6baede63ab993b215ad4734bef88300e22dec71dceee 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_run.html 08f569495e02627534b831d2439ab95d21bccf0fe1c0ce64aa23c16481e93c31 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/doc_storage.html c2f4c2c73b7b34b45ddf459e572959e4317d5f9830446cefc7f651e80634e0ef 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc.html ef69d34666139bf97f47a0151063e55e91bfd065ba4a779366d4b90d756bef17 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_cmd.html 77656e89305f4397e6a786ec616deb27e7b362f386fe377252d0ce7dc5b50106 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet.html 7b41b24f1c8b0d7b12f449e4ee7dc60641c18389a3e0b9ecf1099f5b611eab22 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_chunks.html c25ba7a287ed0cb85a205bae268d5ec53caeaa3a6b4b4237210b1cd0002fd535 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_markdown.html 183b0a1d372c3a005b7d26f88b42be4e479e5ef9bb30134447def109a74ad11c 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_extract.html 91e1f2c5dec69c8336e8d5da527767c09825dd6963879966e3d7f0dae1966d7b 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_html_to_markdown.html f868b5d594db2d78e0c9258a9b44100fc7b084230241cdf1ef93f812bcb575eb 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout.html a3eafbf8e60bd5e09a8632280d4f39d0d346c55dbd6cc75b32d9dd1553ea64d5 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout_chunks.html 3f824971585a56dee70156b971133d59efe74cfeba20b4c2d30f827ed1e724fa 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_lib.html adbcedbb2e599acac06a253846f01d07584541d598c162a1f64df47d9ad53495 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_run.html 29621f8776390c84d8df8e27a08609bc16b59146610080ee9a96f2acf19a7044 2 @@ -2997,2 +2997,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/notes.html 2b8ef4edec64c25d0b578671ecfc8206f26fb78d6eb56b31faaf5e5d0b6878e2 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/search.html 966b6c3266a656b1a03763914cdfcbeefb420c0d03c2cceb61e61234c344e4d3 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/notes.html 53569e36ffc26a257b384b139799a378c175454386071c458c32c717c5f3decc 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/search.html abd3f6dee23cc27a01c06a40cba4e5e2853464e86ffb9353b036c58e6234383b 2 @@ -3002,2 +3002,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/404.html 98d3968cccb9ca808ac35de6a4d63135a7cd3c3cb4f67b13ef8029ff22910774 2 -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/api-reference.html 0555633242964e9cda0a5794cb187c8c2ae826b7b811797c6791983056bd581d 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/404.html 341bd2278ce2fd342dcc0a173b68e2a54aa666d0ed591dcdec55b5ec78dff61f 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/api-reference.html ccafe5eb43f7509f4379aad8ced4697855336b86f6f0c4d242ddfcf4962758b8 2 @@ -3026,2 +3026,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.epub 97f513bbfb8b5f304910a2a2b969f299e4639166de25a0e72e5911446886658c 2 -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.html 702004ab4e4d753389ab3ad39af4f70da4eec26c3e6300318d797eb272c9c605 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.epub e72a97217179cb651f8b75c1874e2ba68502a296c7fea673df5482c1cd4c9ec9 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.html 4ab6ca39cd8a843ec6e8d32324ff5b150711afcd488fd876305abc1d6522ddd3 2 @@ -3029,2 +3029,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/notes.html ae8417dc82cd4ac077565426bbc873208211e5a6dcbcdac1db4c995d0b3fc251 2 -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/search.html 0e390b7929b0db9443e066dbc19513a969ed2e55fbaf29807b5c96174b9c4656 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/notes.html 5dd36e29975c8d60a2591fff9759af7ab8396794d56c81c6adb945d99c0d015e 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/search.html 4fdb0d292c764ecb2605f095cfa7f8a95e3196d2f6ee5c7997f50829e5b0839f 2 @@ -3034 +3034 @@ -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/404.html 578368c59349ddb01b138612ca7ba7fb29a23618dff498b5a3e29782a395ba70 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/404.html 4616a7dd7e70115131c5b0844274abbb329ee2542864340d50f37fe9aeb58355 2 @@ -3057,6 +3057,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei.html c3bfedab6b24054ffd16574168e2cb3e4a3a384978a3569978bbd59cbee1bb0b 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_connect.html 3871e7e3e335cc719fbba035820e2e73d42b65a593f3dbb0bfa150739d22bf4b 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_global.html 43e1a2d92773325bf154380b4e80cb655c78920ae983e1a4508dfa724c88321e 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_users_guide.html aa50cd4c0743255b9e1ddc9bc12c4375a483317f12591d9a5540a0b0d6b1ee0e 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_call_cmd.html 6de5812a62dc36d77c548b30196e013e1415ef37b322c85bc9cd86aa263b71b1 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_interface.epub 69b8efa2bf4215e7e250294cb195a595320388b18d1971a254e727f343e834f4 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei.html a07ae284a826a243aef8241ae3b30fc7c13b0b5a7693d0f7320039ec2afac9d8 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_connect.html 63ba556bc85b9f3698f7f11cf4e9f4af76de67f15538b40e86b90cff097d79f6 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_global.html 1643a99987fb9e8257736ce137098b1a9a7c5ca0d7b6ed0c424301e08fdabd2b 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_users_guide.html 7ef89264e81ac6038eb28c5294cef5e635972223ef2f28f2e3578b376855194a 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_call_cmd.html 2f754ee4a11fa58dd6e0628200d7d4efe7a5f07268188b7eef1860d0c5b11fb9 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_interface.epub f961ce3986f163358e2e7ca616fea48119a594143f83e704094ddb5d84206643 2 @@ -3064,2 +3064,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/notes.html 4c7b60db4c4eeb3eb291c7644de824e6d7df13aea356efa95544c61f2cdf53a1 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/search.html 406886beb04b0ee8ad6f671655bb291a34ca3cbebf4ebe8ada776e4d7f877bc4 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/notes.html e3d7a64fa451054af4f9bd332fad203335f4483f45044f9f1e357a721f3f4a0d 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/search.html 2494b55f3c248b3efc34d1d2c9b038fdfad5a4880fe67ef9eeeaf2bb998e4b6b 2 @@ -3069,2 +3069,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/404.html b220d534f38ae35cd5e5583a77f73cc07e0e30554f0fbec48876dfd152313e3b 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/api-reference.html 2a32508bfd60a040a29480ad5562c7ffa65e82eb786cffd37b86ee923d56ec7c 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/404.html 2283d031a5025c328269be8721ecb7704de709ecb566f285d5e4245d30e84bbc 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/api-reference.html 4f439cc35439e784d2fdbc1baee38747aab4c6bb11d028f0541b0f6439f4e103 2 @@ -3104,9 +3104,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.epub 612d4c1aa3472101bc7f6f435892613d64d3d6a68323e33c1626c55e3f5e2fa8 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.html cdf45dc744f0ea9c2d9aeda5f8e66afa1a34bcc248c43647496662be3f3f1e93 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_collector.html f61219b88e8202fd2208db1e999c4350f41011eaf62acf6cc2e4c7ec9efcc7fb 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_desc.html cd3155a6dbc09cf8332ed806403ba042018d25969d0a8a10b7112867852c9699 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_examples.html e974a5d6fd155c35531126ab6e0590fd42446a6e064c002e8dc695283dee2255 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_intro.html d4d7943f52f85deaa8154cae591c921b118cee2a2614d54e45186fde3c9c07dc 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_selector.html 6db1203ed17fc3029872cbdd4310cff79966597749549bf6d85d83e0b64c2724 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_tutorial.html 94c8e7be8180a6685bf0b63c4e5b41299de3b3f5a84f4d185a4b90bf24bb69ee 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_viewer.html 8957e30afaa862abd2c03d02af3c3d459f882eb2c0f13b5e7763641e1b64d0cf 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.epub f5b6addffd4622dc6bd15760311e9a6472bd08e2e60b226728b8cf43c1f66da9 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.html 34ac740376990e159142e3be2a4cacd8af2c0095603f71fc1a8e292a41652c9c 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_collector.html 81762d7c60fd4f11f68ef6f2783943e54dd2935cc2e721a885ddec28115f1625 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_desc.html e494c7d7c31c968e9c37c21f9a67abf23272d00942216dcf6a3e5cfecbe79bbd 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_examples.html 2a9b7dfd3e2d8229b9307ff180c27a8fdb6b3c5760fcd87f4dae038aeb29be7b 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_intro.html efc4bbb8005f93f862cbfddf8d226cf6b4c327e0fce248aea428d1c70f8f9b48 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_selector.html 6c288538c71cc359f2570fff02c7ee29ffc9b8f415a1aa49e6fcc3dc09d07016 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_tutorial.html e46f1f8ef26565c72a7f4f9ec3eb0e1c29c5d950a7fe1a580584ba7997ca6e65 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_viewer.html 4f42ff7e77f3663ef7e96cb192e4b40a2e3a237cbb6ed1d52865ca6a54d293a1 2 @@ -3114,2 +3114,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/notes.html 1b69c308f48d8c79203c6b7c4c6f27c5d29935dd4be6a2c491b829af9b230cb2 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/search.html 2913bb3bb8920f60116127b1059a76855fc91cf84c87f618899b6cdc449967cc 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/notes.html b8f1cabeb2744939eb56632afb92e1a5c0d1d2620fdc7f8c85bcee087fa32bbc 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/search.html 3216b0236f0d07b6d1b30fa14d888533155ea116353fcf224ac18e151d17821c 2 @@ -3119,2 +3119,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/404.html c45f358b5dba1c89b5900c3f98727ab4a9ebe49d36e6fe31ed37014db73514eb 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/api-reference.html efd13872376aa5b842eb9d310051109d7ad2114136d8c2419c86757ecd931f13 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/404.html cba9a31f076a340690db1c22abae9c49f5c8bec2b3ed64e4d5ddff942e048d69 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/api-reference.html 97d376516e8adc52d9fd61c6d1962dd62c2264865ca4800d447c90e6a30bf86c 2 @@ -3123 +3123 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/chapter.html 7f37791c5512361b11ff3d0d5b9112ae2efd3b4eaae19b61b20db3bec615ce19 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/chapter.html 8106145abf6442b7fedf196207af3e68d6965700969d3151224daca310c46522 2 @@ -3144,3 +3144,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.epub cbd9e76f5df150c16556d286628685d58ef62a9f8657f3ca761ef35a5a127748 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.html 9113a0a8f4f806618917c1c9d81ef20df97fe5e479d2d916f5707f6c96b234b7 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit_surefire.html 171de602cfe3fe98c595532257651f31fc4f9b7dfa6f4aa2871fcafd17a6754d 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.epub 76dbae37b19c44610c0fcbd0a634531eb28a39c56739a666b53dd38f24f9076b 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.html 97c0f470ce4448a4fb706bbaeb2dbc9683fa83952fccd2d1bec35e92953b61f7 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit_surefire.html 1ec6c2a26a8be7944869f5aab59ae4d22ea38bbaf644f63deb583b2abbc6f635 2 @@ -3148,2 +3148,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/notes.html d1d5930bd15a01f56fb1353cada6f3f404bc6bc8bdabe7d7d766b4e27714c49c 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/search.html c4314cc8e09e04159f6414076b0982e7810a2346f6925c61ad1f0379e8b3ced6 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/notes.html fb77af90599589910714d47d0301640c2da0bb57f67279025188a9e7aaac46cf 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/search.html 3c45dde268e5a9e8b536b5a64d8ee0d3895f78bdfd41884d22cf4375bc26c731 2 @@ -3153,2 +3153,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/404.html 9fa5b0e281673b76f3edc6cff1c2b01bcdfddca4931194c7185db90fb3c54df1 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/api-reference.html 2d9b5bfcfadc18177037dc667ab1b122dcd637e48d381da91f1c27549d40191d 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/404.html 88f1453c17dd98d9f22a4960bc90945f1100d4b1ab86becda930b16ee188a662 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/api-reference.html b0c350886edb5e3b2a89e27e8d58d7e7d5a8435e353fb3d32e945d7c552d9cd1 2 @@ -3177,3 +3177,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.epub 10b0a49bf6cc9f71987dc0b8b3280fa7202876685459db8cc5c16bb000fa52ba 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.html f5c55b63cc7b502d9b2e9d0f1c848eb46c74872c7d927d8cb3e6956550f11939 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp_client.html 07f8168cbb2e3ee942675976facb439d5bc4abe712af368607dd13e97915224a 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.epub 7a4a6678a8d613d567cb6db4ad9944bb5847109198ee1b953931b48c80ea1d36 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.html a5237a8e44ecff6f0c6135d0be04fedc7876dcdd2c8203dc09ff790fb7ca0d7e 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp_client.html 346c91dad402eddbb0cc6da13579f18b94482679fe7f3c45f8253e5e01798bfa 2 @@ -3181,3 +3181,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/introduction.html 3a61b5c3d9aa1b142b5d2ad46f7487a8cb02f0a938e91d6e2495b252459db5fb 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/notes.html ec95cae772a068e139c229b426bdbe4f4ac3de60939ef53ea07798f0b868cba9 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/search.html e1b0099bc40bb938d720065661e8fc03e2745b556a32620f7104c77635408392 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/introduction.html e7660368003357026bd6ad99795e83f0b5994ea129b9ab34ad741d12de67d740 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/notes.html eda2f7662e1c714dd0f53f7f321dd0affc5dee8dd22655bfaa7d354cfbe18266 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/search.html 2046e69c5a546fb2d2542664ca3f1cf8e12f469dac2865dcebebdf9debb5a0ac 2 @@ -3187,2 +3187,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/404.html 5d292a035477ae96026b9a89a28c403fa6c5f94bd4a1f3a58c2940ea4ff26eed 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/api-reference.html 73189a1bc7f036465f8aeb4a877a6c5fd86b0b543035ddb2c7c290441101ab87 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/404.html 30fb6dce9db61318729cbee859d776d4f2b0026284b6e5c4ce6dd1ba67c98e76 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/api-reference.html a68527777658083ca31cb789fdf5f7368e06aa3f5249ce4e6e3859e8c590bcd1 2 @@ -3211,8 +3211,8 @@ -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_client.html 34d97d914caf563941dda573d7c775a73d3ca0314c9ac8f4c94d25b2ca29089f 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_server.html 376ef48df27ca48c6ca890b6bf1cc9a725c6bd2b935fc2d5e309a6753ac8dc36 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_uri.html 4a3fe4b801790428c3d45f5f7258ed4b33a2b25d151b1baea3883b27f635ec3f 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpc.html c97330078ab574ea0d7a66509497c3412b580c1cd797cfc47bcb0bc1fb06ecba 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd.html 291ca5a63c5cc9e07fe36e7565c0b74cd0b702a2e77b4365e3ed85bced2951f9 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_custom_api.html 72faeca66692488fa554e7e61f9616aa7727c5d84eda7a5a9c26b551c47b0d83 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_socket.html 8f86cdd47446e6e884e6161de2ed105453d617c9590762a8995ac3fad4f4e6a6 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_util.html 38adb3c37af2c0c50ab476a402d7addcb8824c42213a6df5b2324d9fa7023ea2 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_client.html 960508ae17d2227fd3d214b849d42b38cb62e348e4d61d67cb8b2f3c3555ebe9 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_server.html 43b1071c433b1d1bb4a906999a4366ed0948a37a13a9b0debb24376b21ae5103 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_uri.html 102b143cc2d7ba6a3d30ecf2519faf02d7da5ce6040584a0bdc869bd3be2cdf9 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpc.html 21df26f3822f9ff95117d3e41a4daf2a562b324053d04a5772528e0c8e651680 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd.html eef1486f12c827225e756ccf0aed6f4ce64684443688399b0a6b19888b370708 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_custom_api.html 8107e5b8d08baaa1f659e79af42fd40f3fb6da8cb48f5f5b6131ca1c0220a7c2 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_socket.html f035ab1fe23be10bdeea967744ed461e13d88b43e7d71e021238a67843cd1a60 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_util.html f9d12c3347556572e4100d0b9d91db653db7c1ae80170ab1559db341c8b7f1b5 2 @@ -3220,10 +3220,10 @@ -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.epub e17001f9429c4a80b5c24b51e9e2784b7aee6ca9bcd74a6b8d40fab868f34b51 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.html bc312ae3fed61bc3462a9e41ddd26a7bc87ed85cd57124505fba89fbd7488afb 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets_services.html 269d4d50be5f91d7c78ccb94911db29b7c0bcd4a11a1a2bc1b5bbb1bf7e3bfcf 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/introduction.html 14017488cd13b0a91d73ae2cc3d2cd470d4d194aaad4e03abff671a2727003a5 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_alias.html 596b315fbe2e2a293d36fde88151b347c4754de610be1523db9dc5e088d3c318 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_auth.html 10ceb08e5666b4766889b72d4791d9f7fb7c3d05cf10ed125ec635fc84643f43 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_esi.html 329d7112b8d0560d9dc4d1d37355038830747a9239fad801e56db9d523fe863e 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_security.html 3a8f21ef87b4936ebc81a66eee943ab0d7850907da1de4e4db87bc27f91dc08f 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/notes.html 1649cb29248290f01402c71d3c7f39ae165edd8d5720c13967b429851b8ddebd 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/search.html 32f2e893aab4fd1cff05af7e15d45c07ffd682c9d44d085b834af7773d86bd46 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.epub 007a59d6da350dd87ae6c4c5c70a7cb658811c33f3edc681b8923e0b5b109908 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.html ab62fb10fe0f00d7a1bbb27db19b90b5d59aadd875bf212c17cdb50335986031 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets_services.html b3501b748808b3d70f5eecefcb8e6cddff5c21e42186a228774f9ff977b6e4ea 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/introduction.html 741caa51d321569026829e905b740df40c0476661605cd19c2bdaabf4a5f802a 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_alias.html 9cd2fa3ec5f4dbbfa3dd739e464c7092aebac27a7cbd4874a9b3634ec7c8c289 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_auth.html cce353332094b76b63fd16cee3ab2d35c7818ac9c68f28350fcb1febd326d0e2 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_esi.html a61993138d0bbfbccd0ba8079851d641e8d0e88025b551fc5f50c3d8a9c7685c 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_security.html b54a894ab2ea47fcab1d31bc5929bc1f4c7a1a724155634079dc747e194dc9e1 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/notes.html f2c69794294dde4001aaf8b37918c696e294b028992b83210fe31226d275fffc 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/search.html eb6d46cd43bf26bb2395036b86555823e30a2d4278710ab269d24d701ec105f8 2 @@ -3233 +3233 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/404.html 8e99ca019cdf040e917734e4d912d3304e2a67ed8b801c42b5af3cbe99bd7470 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/404.html 7c4296a3fc20b3d9020584cfb176e61bc0f9071805f8d0d1771f8151a92d6803 2 @@ -3236,2 +3236,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allclasses-index.html 88defafea6cb558d30197b8c6e1f7318e413aa9eb99555063d074174acfe8c4a 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allpackages-index.html dcb298c3ccf0fae2cc319976499eba63db2417b236c00a7094d1894f0de2f226 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allclasses-index.html 584fb07a279a18496f7644a3afbc48648ae76b03963474a6c4d4e210d32b0a39 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allpackages-index.html e3be7eba6b1d3a49ac564e033498b6679b442ec1d1580e6e47f8a25247f86e1b 2 @@ -3242,61 +3242,61 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractConnection.html 1a993d7956ab094c80b804f79e4538444845aeedcdb25ae1d94403dd1d45fad9 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractNode.html 5accc29d5700327f035cbeb9aa3914c3f0974ed114813d4a40525c160864a921 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/GenericQueue.html 00add270bd3e15e5d686ee1c3bc9d39a0a0840056569f4a32542e1faa7c53e71 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpAuthException.html e3c0fdf7135c0ee8b934e109e32bf5e5941b248fe1a2e7820fd19c808ce7da50 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpConnection.html 7e4a2a9bb24946867f19f16e761e81a81c423af0d0904a3b5db74eff0e835ce6 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpCookedConnection.html 7441d506f6bec57b090560e2119aed17a8c63c3fe34ff1cedb0638c2152c00cf 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpEpmd.html 75dd0732c7b118d29dec0784b78bb875fd8778f47d182f3e4fe0ecbc21fee6df 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangAtom.html e09c1ae6de180f2720267e45923ada19eead221e1266cb028e7b1d6428127176 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBinary.html 413b004d1bbf7d657478117b9e211d44d0e10669c2c3ebdb47420316b8bff249 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBitstr.html 6934b9de7188d772d6ebaf437c039c37bcabe2c486fbad99bd4bc497f91e8f34 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBoolean.html c783b70241e65e91e320c2d3555251a480e2af1528a1afb5462f408af07a1798 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangByte.html cdde2e96f632496bd152c1e3d3705fcf728f1f359ed53b41d0f0f197fd2a11e0 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangChar.html 74de96a8919b3bd9f41ca17dee0a0eca70309cd0cd2a30fa42830f27631486d3 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDecodeException.html e15dec79f4cfee092e4e801e444d1f51472da8d4aa33d128afa991687da395e3 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDouble.html c2575b352819dd85b42e07cc85743ff7bc50af24bc1e0f30484143625195aae3 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangException.html f0b863113f45f336b9325a82255be20e0810c0d4081d817fc221fa22e3275381 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExit.html f813f9a20603d112685f77a68de90a53d66944b3d41cd090445134c2196857cd 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExternalFun.html cb13ee2fcc21d9525a7d9e3576206c805e0c9ae4f088dc325087d61aec4bc455 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFloat.html f90de782f7993cce106c9addc9dc24826abc5dd8b87ffe478c39f3cf3dad70b7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFun.html 01fc56f0b1a53c0d28e228d7d2144fe08c545a29f9460b0029d30ff81483aa03 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangInt.html d1f2dbc7fbdeea99706fe614c074a3cbd0910bba51c1e52aaf7fb63412be01c2 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.SubList.html 65c0827e1240d1ec241e81aae9723482693ebf8f924a330684bc05c9eeadf6a4 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.html 062a983fb6ed9714c1b5c77965ba40d6d6aa2b54f7bd7b08b729630501cbe55c 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangLong.html 4b3568c671bd2e00fc1607c06fe65b041902aea79da9adfd483f12a59127ec9e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangMap.html 8dcd24eae8c08a1f981a952cddda0cf04e829221ed24f5ffe254009c0220d385 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.Hash.html 39ac3ce9c6939239dd92918f42b4acf1d8136cf5c4df1b0a9f46566d894695d7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.html abc0ef6e9a7645968973f862b417e984fee7145903dfca2ccce275df2b510d52 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPid.html d10df6dc767257159ec9ee24cf717ee7dcabc58973ac12cc38a56e6b7d46b0d7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPort.html cff2b98b32e044387cc85b4bcc0521a27ae591e13215136fc1b5cf803a5d554b 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRangeException.html a97d9bc10dc3e554074ee6f5fdeaf5dbbaed69336dad23e1e9159d1ea38b984c 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRef.html 53dd63d7378cb18fced3cd31b7b854062913d159e7bd1d4428b55126349ddf1e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangShort.html be34c295a283698741a63272babb92832e43ea078cf8d14ed1b6bf4118e058ef 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangString.html 20a42d2c3c64c7eb6fcf9ab458dddf91dc7258488726b7d9da9bcb61c101fc2d 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangTuple.html d9fec4638acfd5fbb17fc6d82af7df2cfa5a2d3d3bf8cd9ad2237fbea082264e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUInt.html 35785adfaf1ff4e802e767835fad9fb38c6968403929e4f15445296e7e97bbe4 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUShort.html 8040e73b9632c70ac75c9153349622a6938db1ea4897d8f0523ab88da080c981 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpException.html e356905e0f24456e8e1fb11ebb8d4ce5e5a29223ade6647d68bbc12da8802415 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpExternal.html 38268f69d98f0feb2d916c4a811fc7e1cf53090948506c5e2024ff429a444048 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpGenericTransportFactory.html 22ed09eabf52e01a3241c12cabdb02a0aa3554494214b52255c576847f73c4c7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpInputStream.html c900739e687b198014934016edb81da9cc8ebc3adf3944f52687a058e45b3933 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpLocalNode.html d5e5ee45ea91f5bbe3f4cd856fc0beccad18c9a025bd9ac36bb5e870fda91ad1 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMbox.html 6ed52d7dd242fc6b91f7b215191cbf79192f2e5a4a08ce6d0057780c6e1ed85e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMsg.html e8c5cf15f5d1c497195e185a42c35696f4003a601e231fdb7bf3b70bb6adab16 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Acceptor.html 013e08d7f6eba6397e812166962d62f5e1075f7935833eebc8fd1100dc199f97 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Mailboxes.html 526d38909475803fdb75ff295caa2d64f555f8433373ab0fcc3c91bee9f22dee 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.html 96ac7469a857e5ea58e62be0a06ffcaf2b72617a4b6ffca8cb5a966aefbb885c 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNodeStatus.html 9bfb36ab366547b1e81f290522fac12e2064c920874b63a213da13c212a23d17 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpOutputStream.html 08a065249c513bcdfa31af62ed90b47b4929fcdc6351ecb4853d942c511cd759 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpPeer.html 20a1d8a63f010005d9798a8ef26ac9ff92a3505567a29d0bf8074f6d609b7b28 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSelf.html 0ebf846b7e143d189d0a66b3857e945a7482558dfe13f9bfba36dbd68925dfc8 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServer.html 0f5a1ec7dc28bf28b7b5bfdce1f33621eff4b1a1afc894fa3103ce1785e35eea 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerSocketTransport.html fe9a4e710391f7364ce7464e277e6c7cd3780012f59e5c42cb283e24f12bb9b5 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerTransport.html 8813f183ab2271feff75a4c8323e7a0fde9320a2ad415c92bc1809caca8d50b3 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransport.html f05004f25b9cf6520eb3eff65c8ace992911c387b7884da58c5137362e91811a 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransportFactory.html 474c7c5900942644ce7a9c88eb68878b3e9d96275fcd6351a3c3ec98fe4d547a 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransport.html cf035bdd2dccada74aea7cb466544e4f9f11f219f098ab19a5ff95427295d2db 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransportFactory.html 61e07c013538714e6dc8809bd7da3da65ad6a383e8fb63b5c5e8182bd29b6e21 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-summary.html d9c5e904b661cb041a91d1e5519727162e912071b078822eb831f963d5dff28e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-tree.html e9d5a9d83a86f6078327824f50b19eb4b92d6b933b8fe9dde8258a1839a34eaa 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/constant-values.html 5da8bc236f02f4c9fddd231b8f0f497f24adad88239ce257809b182316c9ca17 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/deprecated-list.html 3e398a84c5db90efee115fc21ee431026a9ba29138dd27099e1fcf9c7a4fa669 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractConnection.html a988fc37c257e9495a4ec6ce1f69a0024a3df48598c16bf9fc327e9af934e5ee 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractNode.html bc515f35ef95d55824674661e31ff1738bbcf37aeea59fc7fcecd299a6bc021c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/GenericQueue.html 01d383d7bdc1329129cdef0ad17b3dea73c55e5bbc21bbcd620c2eb4cd5f74b5 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpAuthException.html efd6067f981851272579e2d59a73a8eac1f1e954ec048325c7399ddd491e88af 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpConnection.html 1e8c8b5322fbae6df4328f90944dcf4a77636495cbb5ad912b77b91d956e5ed9 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpCookedConnection.html 0df0ce4b01d417e03319c26fa7385e90b64cdc3cbc7626002e9ebcb6fc7c18ec 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpEpmd.html 0bd6137b3ada180054b8010c2697dce6e05e79db0f1a3ff01b17f6fc509e47c4 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangAtom.html fbfcc962f578f6f5f7e9f6e3eeaca5f93929b4aece2f4d7a93402407790e59db 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBinary.html 7177b75a7c4662d002a2a13c7fe2c3ab65afcaadfd03131fbfcc32731317d5cf 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBitstr.html 7c80159c29f8b9b783b864b881f53d3cf5c574ab99f69550685ef43ce54d5f20 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBoolean.html d675744940cc2bf337f453e8b24b25582209e6137e9a83ddcb81f0a700819cb2 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangByte.html 8b09d0e2f7f59c0757d8992bc1d50fe6e7d6ba55268c8e199ef1fcdfa3379af9 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangChar.html 865e509c1438ff8dca907f8c1b838671d7747046b4fa425ab22c5fc89100c299 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDecodeException.html 86255e04b119f5f593a73da8621c5e0c3fe9246cf3beca361f4fb4f490439222 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDouble.html 901350fd6acb6511ba16eba29f3ed2de75ff2af0f5cf1e7d23b709fd05d4b9a8 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangException.html c3d6edbbea1b221430f1fb7d185d9646f48312ce0a9a6ccf72924d38e05dc765 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExit.html a16ee5d14edca20bec7dbffd4b349c7cf1fc032da2b11fb68e4ebeb95cad1663 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExternalFun.html a8c96bf2e0f7aac78688b72e66f1f0fa906ee6a192cb707579fffac14f82e546 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFloat.html a2561f8390bad4a7fbdd80840af5d6fff0dee951df06eb427ddd32595e296d27 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFun.html 2aa61ff2a78e24de2e08f98559cd9d19d5d480f54909f9d5a110d13109ecd2a6 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangInt.html 52ccb200b50cf458418eab6d5d8aed9bdfe57e0b5d419f046c982f5031c974fc 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.SubList.html 283ac4e33e382b4e934bb4f1c61df706abe6b154e1381e26f5143eace8b7cf8f 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.html 5d372b888d459b9f7762e27a1cd8233718ed0c1ad5e84647b6d006a6440dc5ef 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangLong.html 5ac003528b9fc6b6c0a0620edc1a2e8d6d5886c44cb14788a0962ff01951df5c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangMap.html 7f1095ba0b630c606e072ffaf034164aee733a39d9ded9c20a7daf7d75d8431d 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.Hash.html e60ce89c5680e30fed001a0928840aa49baca36bdcd3fdaea99bbf4975159b3e 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.html 06e9db01952cf00a0ca11a59a117cca794baee98a33959efae96b05d45652bd5 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPid.html 8efc54870b9d86071e09ae133ca32307d6377b8ffbcfea6f48fe4eca046d6dab 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPort.html d6ed6824125338a66dc71004d7cdc406f45672b0a36ee0ed25e7b2250d05ab0b 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRangeException.html 8261d3a7d854f390a87c2c6dd16165230bb465dd076eeeea2b70aec5a33d4ceb 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRef.html ac529d001a78d870d4ddccca9ddc4cad3ed4f69417e9f1c009d72e95d7d9a814 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangShort.html 4978b246f299e896a86af5f4f8df5fd1bf9901d679ceb951944b94814c2970fd 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangString.html 9d9f919923c47fff3aea49699027fec96b2f5963c52429f544de7aed4a501194 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangTuple.html 591191ec0a697f15f38420a92180c6706e5da2bd08bad5c3b6c07ca4e6a4955f 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUInt.html f086ff5da8a719a83ca273d27407735e17db896433e6bddcf0cf30799bf6c449 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUShort.html 6fb7196a1085069907300f9292372f4087fc7655689ae0cce2601f506f07b6ce 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpException.html 379cc10701871b90efcc510511a4821c793ffaf57a49e240971abef1ec4c24da 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpExternal.html 942bd2c8be35eace305f98c5bca89b10ac0a8bed5fb46df1674b7e3940539e17 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpGenericTransportFactory.html dfa14231b66ffc8acc9a66fa5a7fac3da856e962e3fa2274a9ba84dfcff7a3cc 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpInputStream.html 563066f5e3092e0f659312e719836fd5b610d1e75e9e6ed7766826db4c6e4ac6 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpLocalNode.html 4bb31979f9ed1f1e542db1307742d5c3255f64c8911052883097bb4da89e148a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMbox.html c005adc73c51537d10f913cac8ff10a74c5641d28b0ca78589b0b6123797f9d1 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMsg.html 829249852f9f8c74879830402b65de93a07a6d13d4e543b1fa43652fbb3fb9af 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Acceptor.html 8baedd0c651b3474a9d9c052d6cf411c46026c948047ba8814377a0246d86444 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Mailboxes.html 335e9e1468d66893880ab610965c91b92b571356f1c774cfd48a07e7c93c27d4 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.html 36428dfd66e868cb8d0925190964e08c12034ddf3d6e4527862235dac096e567 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNodeStatus.html 88d0a383f51b5ccbec3ca73852ebfadfc837ecacdbecb25bd25971d2572f2a57 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpOutputStream.html 7b8ce60c889e78cd6021e0198333843856b46773d9574b13c43237eacc5ebec1 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpPeer.html 6de5379212f330aee42dcd92b42b222d2f5e9fe6db4187f23cc77416e8112459 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSelf.html 70fd6e9d4537b49b96c0310c7de2727ac1d247e1714d5cf3a16454a8b3416f7a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServer.html fd81d22986d8b3f75dffe2d8fbded1f33f510f822f1b0933ef3a9a78e5f436a6 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerSocketTransport.html 0030166a32a9fecfcbff6265af7f22ca344e2deaea278b1861e5620f749b021c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerTransport.html 937adc799a96235660fd46ded68b1aff24175bd9a4dfc9a0f9afa14f5b8f37f1 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransport.html 6376cf5ad3aad0f4d29d50d6e35ea35e1074d0291632cf3c4e202e666f81b734 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransportFactory.html fb36b5d500fe667f3a263040f15326264166d144fd14971a64bb9ceeab0c3349 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransport.html 00efb13909882f34e6d3d16437c2c5464083353187937e8f307c592dc9fc4735 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransportFactory.html 16771452b7b8764f169da8589c91c414101e1c02057967259d87b4df9b96b662 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-summary.html 6a462113b750a15c004f588fccb9e0ca67962e41af2f16b85ee012c5b23a5d74 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-tree.html 177e4fd10e2a231ee4ef7871c62e10da9f3f18fd5495bd2147b6fd32424c8376 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/constant-values.html 2ce7919bbb123bda29ba43a830e575b356fc16865f163d215a0d153ff64e029e 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/deprecated-list.html d5cd7cc21d46e8e40f3616467b7998aa926e810c40b52feadae24a01a73b5f1f 2 @@ -3304,3 +3304,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/help-doc.html af72c1adaaced93a10d92e708450e2ce674685765f06198f6138d8c6fc18e01f 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index-all.html ca09fbf9afa87f3ea4cc4627a701e433d88dbcf35e2e174d92d481e9c5a9ff4a 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index.html 6af7cf69339298dad74b0a1a524081ecb45855d5945d8f56ad0477cafdc24fd8 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/help-doc.html 0b5b4824638a1e891efa06014c2481413a18dcec0a6c1ed349780ca431356e49 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index-all.html b9be720309afcec2f6b3767ba2a2244a459a0432ee369cd5e4259b2141999bee 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index.html 9ae8d1e87921f99651ee1a9a68713f7ce01d79af5cbab421596510c48e94ea54 2 @@ -3316 +3316 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/overview-tree.html 599606c2b416181e1b83bcf8fc3b2fa09204575d81ae7939349890192c34fbd5 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/overview-tree.html 2f57e02a5baa361933b7e47ad6ae4d14cb903009338d0198cf78fffec51fc828 2 @@ -3359,2 +3359,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/search.html 04ef3288ab39b923041a8b1e423e01f9dc3fabeada190cbed6dccd2e5ceef0f8 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/serialized-form.html 470739acaf19b7ca62b18d9a7ca690d8da4fa2fe9a411fdb425519a9eec4fa30 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/search.html 3837ff52e64fba945ede6bc0fa4ca4ac650bd6786bfb4b78be7791f1804e9f27 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/serialized-form.html c327d4932b1f67174edfbc815634c3bebf5b58787f0091b9328b5dbdc2a4bb28 2 @@ -3385,3 +3385,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/jinterface_users_guide.html c19b35229901ecc94d94fea2cd7f99754c89a365b97dad283307e19ba087b621 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/notes.html 6741a3c26422a7be2d4f2810ce89ba497a8d3cbf17c8f2919476757e740b6870 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/search.html fa818141d69bec84d7be05b8ec9a8815526780c2f70d2fd0dfcdad6c9b4fd116 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/jinterface_users_guide.html 700bdd08fa0422591a6fd675f342dd30f0d4d27c8cfb88a6d231ce52ff448344 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/notes.html 17594d5cba08e7b743f2c675b06edbb02bddb1ba598e49c843a27af44f8e0543 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/search.html 78b8a8fe552f3cc624ccd7d6faa62b4d2247256fd87f5617ee18cf37d1bf0241 2 @@ -3391,4 +3391,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/404.html a0c1cae4429daa1bbc03710dba12df53c212ae0e00c250d72b331bc5cdc532e9 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/api-reference.html 23d95d4d07c64312bc9ff5e99dccb08f6a6663564e7916140f201379cb6eeaaf 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/app.html a413f2152d65f903f028e6a079d90a7a65f3115aa1c78c5ed7478688c2c54312 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/application.html 222d71f3babd85fb3f25e2207139c0f0fda26b178b45bbf79f760f45be5d7375 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/404.html d013b11c78dd76b300ca8e40cee0dd4e3d1e7068f0c3165b565e11327ef333a5 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/api-reference.html a5bead317d85f3493a417c435858946d81ba39d498f311a71c2507c001ad74fe 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/app.html 9b9d09c08d09cc994541dbd95192ab1b802e45fc99ee6caeebfa0f4a168b14f9 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/application.html d8d5b9dfc17d8597400394302032b68f82065001571aab48194fd418f80641b1 2 @@ -3397,4 +3397,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/auth.html 0a801403410496ef8d22bab3684895ed90445aba85a931cbbd06f7cfa2ca64fa 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/code.html 14c304adb84a434d58700738b52bd515991cbbb1c7fe0f6d5b00ea26d8aa0d57 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/config.html 03a47c3edeb059140d7033b2f06d45b9849d5710cff3e7ef83aab1561fcaee32 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/disk_log.html 399a4766510efd3882e9515894d5369082984d8f80d4ed845c68f17ffb7f4efd 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/auth.html d63ce293a76bfafa3dac375cbdde000f7de23006ca648516b391361d096c5b87 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/code.html cb3f3f450e6e8404c2e48a3eb733220f55e07abcc9717086df0da91c7bd2d65c 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/config.html b1ffeded11396c3df46aa98d6c92367614cbc0be465b14c4db992ca28e052c5d 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/disk_log.html 1800eea37a78bf781e6cac7ddf890fc22383d3469be89a4ab759b44bc06e31d9 2 @@ -3421,14 +3421,14 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/eep48_chapter.html 1adc1be1e985ab69ff9cd79702ac6f906e13c30c0abe829488d27725eb1242ec 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_boot_server.html adac93ba4ec412c7cbd4aa6f170ff65c0868b8c5ab6952287b7a05e109951d76 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_ddll.html 9f346008d29cb261b8d9707195afdf047f7084d9c113bc57c1b28001a601ea15 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_epmd.html 57f64e3f8627a3f1ce419054b37b93df1d72b415b9684429f94ae5a7bcaaf9c2 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erpc.html de1da115516bc8d0339c6df5b6a7cd3c944aaa3bc9ef96bf7fe56bed03c34079 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_handler.html 329ce4e595bf6900910d581c69ec5695a67703cb26ff83a62733f2465c32382c 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_logger.html ffa72df8f53abd57f32a898418efe55aa7275077601578c61cc1640a12af619e 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/file.html 39c5302911fabff8118c80c7b06f2b207f56dddc2a7da53ed511a8049585dca2 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_sctp.html 3f2caa2b6d62ebb3414df4699ccd1e303e57751c759cc304588ab1c759df3840 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_tcp.html 2bbb05c65e5237889fa276bc9c7fe4a21e8c645e917f861df0c1ca49e5b18ae9 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_udp.html 927ca1fd7f23e52c195419eae9767ee6e37d7bd464679e45053f1ce31d6d8589 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global.html 526f5e266df540732d63b81e6e7b3431ee8fc4dd6985f106941c2f2b4825117f 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global_group.html f37b4b8416024d9d1cc5adcb2d3fd140b507249d16eb777f2f6cfe83f9311370 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/heart.html 44ef7138b55684771da72a1b52eaf9dcffdd00d362992eff949a8481878c475f 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/eep48_chapter.html cbe1c6de0c159c3eb283a3d696b845d4f46eeadeaa1fad658aa50a3b44b3ef67 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_boot_server.html 4eaeb8ec83d91c8d0c68b218b346e3b9238887de0894690876e4845177c10452 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_ddll.html 953c3ff63a810adcc90c8b7767c2994d26f9efa9be5db7332bfe5da17ad4a9ec 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_epmd.html cca005db6b68dec4bbe67d3c421937f7e32d13d28ec4cba3ac6c24392cbd427f 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erpc.html caf7953ad1a610da822a09b3e6705c5cf57596161df9d734512ae5d5910cc56d 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_handler.html 6a9269261bc0ba124ef6572488d5173923e5147e750755e28f4d543d98512f65 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_logger.html 7d32ee4149496e0281477e05f061440937463f01030f6d88233db85fd340f21d 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/file.html cf6e1c1f4b932cf839aaa70049c1ec54a334d752290d686974b1ef4b2856a64f 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_sctp.html f1a6f5f4baa33cfd9773fe4b57bc30f178b16b49f73e9e00c3f3388c742319a8 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_tcp.html 6b74215acf8e720025cc20c9d39996d9e73ba29547e4373796229cf846fddcd7 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_udp.html 6201f78e7eed5cab0a81d810e10166272943d7551dd54c78fc554197021e31df 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global.html 3157170d362f710bbe4e70289a4b0716544f8a083c6c3ee3e60133680f556860 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global_group.html d75fb0298f12ac9122990f613c040665e0ab70edd12fbf7ef606d41885963f75 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/heart.html bbc6fe51c9a528b63742c75f73614330ff75e9b29e6a752eb3c20ea1316b199d 2 @@ -3436,26 +3436,26 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet.html 511d346a1bc4d8ac35e021cbf2ec20a4bff98a80f8b214e9db162099a51a48ab 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet_res.html 45f18d03444b5510fb5961f88bd7fcf321482cc6170dcee12aca5b605e6d7e1e 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/introduction_chapter.html 41906545d1475157e83f923a70da723b0c1b8f5e9bcf3c863669ebfeeb332fc1 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel.epub 6dca95d6aa77edfaabe4910a922085acc2fb7e5449523fbc0f70a69e1176dfdc 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel_app.html 245790366f5bf9b94c8448d7615e374b905a3d8eaec4226847c675fc8542bd1b 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger.html afcfccbbbde4164e9b0d25e588a37a1ec56a9729a159541d427cd7e2ddc020ff 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_chapter.html 629206a784b973cd83782803e9b52d02b2a090f6cea08de442be16b07c9dbfb0 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_cookbook.html 5f14ca5f9d7e19bac27271dabc94c535ea0d8fefd3b4132e6440166c78e02e50 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_disk_log_h.html 0e4405242b73d0433961f2c8f8184c3a3f0581de059efc4bc186319e1bc815e9 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_filters.html cf7f78a0dd5b7790e39a635263a24a960c1ea79199839ccfca6bd9abcd1e917d 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_formatter.html d4491a3566101896e758c7ba9866b9eccecb8812fddaa43459b142c5c4877ab1 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_handler.html bf590ff188ddec770061d3f436217cf3bf542eaa17073fbc918fe063d81636ad 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_std_h.html 05ea2261726977fa2860190d411cffe4de6b444b8476b2f73c60c6273c1ff28c 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net.html e14e295bea0dc3c21a3044051a912d624fd3798a5786aaea9a02a68f76e3c0cd 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_adm.html e08e88101bc5b47de709801061f9521e1e3e760602d9606c7150cb24cb7a00dd 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_kernel.html 249fa0a8f87c851a05b0de91e2052f881436afd3c697340f0f4044813506c996 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/notes.html 1f4dd62788da5123eb0e54c37677e6f02bfa035a50fdfbc53e898979f42b6cc1 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/os.html 276d76ef477f37ccf864b6c0c9bb9769097febbf03afe4c2df8f22306a6c3a92 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/pg.html e1bbac1aa1eb11fab615f3bbd4785dac93843ce68a848e355135a0d2bf7fadc7 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/rpc.html 46b033ee78d442f374638cad7e18adaeed438dc65b4fc6a4700c3cf06a081ca6 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/search.html 05e6d27f5d7b6e69cc9314d358e441f5505b3cd2f7cec6cb887c404ff59ce368 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/seq_trace.html 24a4d8159278943b54d174a73d37097c7df1bffffd815bf65c6671cd1adac2dd 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket.html 967804e1ea35d1e90933e2d8f9b45487fca777b0ddf31eceb0647fa7c6cc6b75 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket_usage.html e601a6dbc762d846379c70cad69a4ad9967b3c54d1d7f3b00c6b63ff3f093901 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/trace.html 88a75426271237c1ff9aa51431bc23957615c603d8c7860098b7431bdb90f77a 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/wrap_log_reader.html 036f318140c46a5013d6c55e8c11c1f2dfb62503918a53a60eeedfaf34f99893 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet.html 1fd7db66321f46d033a104a2c20262716d99fe99cb7fdb9ef10d7bc329783555 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet_res.html 8190471bff16d42b08b6c4cd5d971086904585d3d90d421cf48020c665a538c8 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/introduction_chapter.html c82c9fb1ee4112ee53008fde9ea6df9a22e53ee2dd3f5e06aac130eaeb9f701b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel.epub 95e83944f6b074c147f633d9d0a86419ecdeffea4d855523fee88499bfc10b5c 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel_app.html 1a538529bed83df309cfec440ae104932f946c7302e7b8d48a9d51560ec499df 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger.html b4df28629b5cfcde51febbd4df49056d02c9d698c2c80087e8226c5a33fe46ca 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_chapter.html 9194769dd63d88ddd780bbf7355855a71c265204a3ef4b303a62bbac91d4ff44 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_cookbook.html b0c80b339e9d110df8653ebc8923c3204c68a7f5116dc74fbd3cc2708faa7411 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_disk_log_h.html 7f2f8a55ee6fd55d7b75f7b3fc78edc7b9270b597c700e9af5f59b17e413d6b6 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_filters.html f4f2b359c716ed73c04896e209c82dcd01856039ce7d4f3d51707f14d1891939 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_formatter.html c72957959bb35fa9627053c705f4c95802f0ba63a7a798f6936052fd0130cf22 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_handler.html 6c9d5e341d89527ddb202df20ad678260976ae4de7ab4141886964051c9c3ecd 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_std_h.html 6211b63809d519a8bf9ab1dae0005c206d078c8c283e72297ea12e55ab97be2e 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net.html 1420c1c2b86fb42a165f060755e92dcaa4ea0569de4324253f8fc26726b2b023 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_adm.html f139c34ceed477a3eb36d1259b3c90ade184d3bdfc628408c16d7370bc9e53d1 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_kernel.html ce707d218c0c0ae7e3b68866e91e2e09ea69a0889adc01d670b6a146ad51e230 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/notes.html b0f7bb71c62746fd97035ea0ec15ea4950b7220d4f1f5ea383c89eec296a2d99 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/os.html b3fdde34264505b60b1f875634a6bb05148077f239ef001d5d9db295fbcee02c 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/pg.html af48f398a9b6631f5c09ca5ea8672c11490d42b3acf41743a01ad1d5f36c3eb3 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/rpc.html 0d53938cd9c72390ceb2e4a6362390dcec9f2b5c274b0e824e278b9d2a084a72 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/search.html 32f56b1772a6c4a307d910f14fa2cd28c4cc4068eea3463e8ed5f1b239118804 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/seq_trace.html ef7d610d014386769aff679d50e66e0c0285e682bd49238ab8a4037734536c3a 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket.html 18e317ca1a0de4fdf09047c44618bece74af833ae82e0ae9af3b1c4c024b5baa 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket_usage.html 0a1e22a01fd1c263fa2f69d38307b39b3897ce8be91d6a0a9c2fafbac38fbd1b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/trace.html 07664a5b588c6ae863332431390dc601992980a99140c8bd2d69878d10491c74 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/wrap_log_reader.html d864b84928ed52086a2a7484dea54f622521d9096f70a8a54bbadf8eff4bfe16 2 @@ -3465,2 +3465,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/404.html 04712ad156366d0bf374119fec0e01bfd5bd0b2b37ce7d085a6eba876ddeef5a 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/api-reference.html 681e1bb0eecb05d328c72bb0b66ce0f9f42a638351e864e9f59681f2bf0abb95 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/404.html 0429ef54dfe6f8efa5bab0ca9a1396dce2849de99cb57650cc61d95c26149b0a 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/api-reference.html 8574ad15af3387578ca799f2b0a5e8ae9572286e4f84a63f1c63bdd827e5cc4d 2 @@ -3498,26 +3498,26 @@ -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.epub 5d28133cded1c22abd43d70fe0569c6e93a8c977a21342de5c538eeb2b53fa49 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.html 7a5772a0829e72e339dff38d8257272eb153b8767671c94cfabda680d4498035 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_architecture.html 5679f6fec4928aa0a0725be0599ac98b227af2c7b9164b93d02c30b16b73c8a0 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_meas.html a6c0cef7a3a76cc86aaf289948875c49fb451fbae2bda333b87eb64c35492bbc 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone1.html 7e8e347da0383c2bebca2c0ce1d1a0c62efcc50d8eec84e33d1a2f099ed3d5d1 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone2.html e18afa9fd0be055fa6681f06a39bef218586686ff0af9ed08cfc14b2134b4cce 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_transform.html 60c286ae291791b696840bb659f47f1ff7df08c5741cbad5d93fb183e75d4693 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_debug.html c9cd79ff7365bad3d6924908d44618c8c25a70ef00d09750019c81003ebf2233 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_digit_map.html 2d2ad2827fb49b7c32ccc70dd3faf6625e60b9a0ea76f028fbdb2bf6f3886ce9 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_edist_compress.html 449e1a5aeebb37c826bf0f01711da64e68edeeaf424140bf0ad2f8efe1ab7481 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encode.html 5bfbb43a629bd3eecb350876e5c0c1fd5bb26ec24d042b7d03e476315a4b4b35 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encoder.html 3307f7417dc2adbc87d9154946763d648151725b4d99fe20a1024829608ac134 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_examples.html e8de80371297d10cfb27f3a191edf2feac491df8a99c16db07a8361cb1ae030f 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_flex_scanner.html 40b42e5fc41afbe4ba7470918c2eef3d396b6a0a5403c878578188579527d624 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_intro.html 4b58ed7c6ee3e18708bbcc9837f70a9a840feada31384b6adabe0992f39a66f0 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_mib.html 4da4b549a86a8b9f00197076d256c124d85873754bce2c5702d46902492b9ed7 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_performance.html f069fd6b4acea831a3ea202ade2b1384ddfc1685ec5c4e0a6a10bbb98111b38a 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_run.html 50a122a78c55e7fb7d8adad38e7b6fdcd4daff5cca58240a4724396a05f88d39 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_sdp.html 249490bea767983af7f87053296ab023b9e642c128fc132aacd8be86575ab572 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_tcp.html 0aced1be6fbe5e2d74e110b02f67ccf8e6a7e6ac544f6877768ba9d3e7f112cc 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport.html f6c520e3eb3d0486ba0521597b36c5ae84b57aa3a631ab8e9e01da95ee0615c7 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport_mechanisms.html 0d937c7099aa50a112c3cf51ace54e903471230d4d9253b1bb95f52cec2605cd 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_udp.html e879f2a876ef6797a4933aaaa2b9ddb06c468d2a6c9f0998cc1c636c9c3e9e73 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_user.html 116cacfd4e339d124ebdc22bdd7f00c3b34217c8b38c82334bf0e355c796e05a 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/notes.html 25bf90b5468008dd5c188007d711684ba60662f5cdb77732826cfb4724155894 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/search.html 4eb9e450f60b93066f02a5aa2ea6566e1ff330899c825830a63d5e77442dace5 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.epub db73add54b28fe9e288715311f57dfde1d527d3cbbed5233589aa9fc8ea7e478 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.html fc5dd6f00a3a963428330277424a55e08bc514606a6846d87a3f6f2e03226a66 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_architecture.html 5654f66a6e266bc5e9d86b4c4b65f919ea87d62df92f2ed2c60e26f6e9ad9b86 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_meas.html cd18dd75c932919d2f0a4a877b528e88069634faa8480bc4ef4cab4a7286e149 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone1.html 98b41adf5c96fc8c9103be836b865c1d9bbde7a7a64f4e7c51447ed20ab6bd72 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone2.html 910c95f42646cc8db417b6ab6c1596a06a3f5cde832f5f06f9f8c7db801fa5ee 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_transform.html d254cf7dbc5170ae2102f6e44c0a0f7723128236a122584fde588429193cada3 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_debug.html 7be428365dca655fd702f572d2c3029940ea86f9c5d62e16c2180793977180aa 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_digit_map.html 8766f910b77472330e69c59a376cef6174dea0ec88581ebacee907714943d301 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_edist_compress.html 8d775a9c30c251560343a0b4d54f74bcf93c36d7411329d112a3b5da0fc07920 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encode.html 13a89f527c03df6f64ebfbc474e0d16bbf9889e09d3eef6c1fb773e0f0e04944 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encoder.html 67c7c4f9934a893c70db36c0b847528ecbd6611aaf399c5528e58546dac22ba8 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_examples.html ecd439827455fd26362dd0ad59d5422b04a19ca1f6f1aedacc95c924e883dc23 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_flex_scanner.html 6036b916a2b215273d6d3ec7a19c26ff0e394a80f5065e66cbd67afacfc67bc9 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_intro.html c3708665ddccbacfd1bd8961ddd67d63ef3d00c8a1b97f7dd05c398f2203a4ba 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_mib.html c8b9be004dc4806bfe816237dda228a4509501a4d3786cb2f70960019bfeb90e 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_performance.html 66ee17fb6e4f87a61272aa6e0936f2517c6881deb05784e7fd0da4787d8d363f 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_run.html c44dcd3e87ba6a9dcd809a9e12507ceec79abecf74b60137e81bd075c9286932 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_sdp.html 8d6a799f86d4ed7e53df60560613e5f285d77a6c5a0226a82b5169be0c053aa9 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_tcp.html e8dbfb8f13fe066a3432ff82248397c7d06257518f3690f73ba849a1f6160d5e 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport.html b53943db1763f06f6e96b4438109534f6a4f8fe56ed867f4e4048df222d35d77 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport_mechanisms.html ac76f8351b72f142bc7ac57adf356e87ff672c631a275d27a17e4388643e851f 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_udp.html e4f37916f36360b302f4c0ee2765aa7bea74d1e14a8e8bab4d2a6bb9e36f1959 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_user.html a3fff538b5abe2edde6e5bd24fcfd06fa7c0acb8436cdaf58a91f4e813b38596 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/notes.html ca0584cede91e586c738188591d46edbbea9cc796ccc9379ee852b51a242ba01 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/search.html 6b5e45181dfa942d8e84d4a321e538b161c1d091c8857606c4f2d463f178e284 2 @@ -3527,2 +3527,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/404.html 820f007a26fdd6ada3b8b96d366147c7c48b095ee032349247e31b43eec3d70e 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/api-reference.html 2aa70f70b0e14829c91dc40be47e862add669b35875e9ee21f202ae4063c1722 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/404.html f278e0477b1651ba46256b5f260e3b3645192b9c2016ed1ae2e02cd8b5dd9e21 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/api-reference.html cb5d6c35d03a71c5a2d73863b3933e962f84ca89e5384cad6819dd1a45e3e7fe 2 @@ -3552,17 +3552,17 @@ -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.epub 2a0ba8416fdb9e1d6680abff68f26dd36436579d3f11f546d2612cb4023d21a6 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.html f41a32a4026bbe227b59fe2cb8a1c31b0c2c30bbfc661d2b6297821e0e9bac55 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_a.html 670f3e5ef40617ae1fd31abcc559f0db82d6775fdfd52177249439af51d3b88b 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_b.html 4d1e770884467ed1a25ad6fa603a75fbdd28ad98e8fca771a5ba11d46b483756 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_c.html c2efc5bd2c70010ab68e3fbf4841cee6b2f31060f35516fb13c63228c578faa8 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap1.html df30ab37961a8b42deb7ecb4477cc8cbd39c985968c40bdbfd00d9b2c7d84f44 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap2.html 40dc58e0b337cdd900641c326f36dd006e6c78131e74d74fe53f0512231cfcef 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap3.html 2574dbeaaf8206cdb4e31cbb112b70ec0c029b4257d8ffbce8341743485182d1 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap4.html 3a8a02cfff5b78c590c6cf754d8900fecd7d7baed199bbdce20fbc1e33fe95aa 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap5.html 3db019fd1964f5bbd2a86621f5963ede3ff6327bfb909e746de973973fb4b7eb 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap7.html 24e8ac5ec327a60f417822098efd36f9450bda0f925ac6cc78d566f769ab7b1b 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap8.html 1ece7e0dcd46d9c3621be3fa21ecb58ffe0b6da9c66409bb702fb94664130892 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_frag_hash.html 61bd80f98e01cc2bfd00c21b76b84ac8e20dac913baae423942f671c80b29e1b 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_overview.html 49659e0e6f7c0537e69f59a7fef2f784737d1f4aac445357bb006ebff0f43de3 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_registry.html 0d060a96a88e71bbacd59e4ae231ee1842cad8612f06dbd9306f05d353aeb954 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/notes.html 62545aa0fe50fbbc9b7a8d89acfb1cff55eae9d97abfcf8dbccd8a1330b2e4ae 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/search.html 745a798fdbedace863b855ec582da05b917e7e2152e0c07fd88ccf689c55a27b 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.epub ca6d50a30c0bd5cce956f51e762a31dd2a6148f7239538f9e5d72bf9644a31a6 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.html c901730031c02d58e4bb8347fadba0276b92d4706c5c9fb3ea3c1f5531549c43 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_a.html 75aba95be2f42232a678f5e46703819fce7a0570608f5e18a2c2ffb4c8dd41e8 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_b.html ecc2294667839868ddd61934c84699bcf9432e3a400088d800a31e8a7001e046 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_c.html 4fa8fa521b9db6fb5aeb883a88f254885b4575a1f6387e422c6a2ec77ff03eb9 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap1.html f40b768b27e8b0ffc877d478b8e889f2e4c66c546567486cbeed7a7760219a97 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap2.html 723089516c5683d0397dae543ed3049cb67494668304d3e4be9dbe2759002c1b 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap3.html 8106241133bbd2d10494758d264f007907adba299825e6f582a2d48368cd88a6 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap4.html 8dbbedd282b32712a0bc28a09168a64849ab1c9317a9e1b9bded8ce574006819 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap5.html 6f54fdd9af602e26e44a4af2607ce29198e956c4ae519ac58bc5e11467ab8090 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap7.html 51c690f7c2537443f48efa90149333879b06518266983360023f32d6130c4982 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap8.html 092392c7b5559f37d3c82b10d2253869a31236caba690d621af18710525d20d5 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_frag_hash.html 1e088472ddca8311e2c071c2268a642a0bae3e0ec913531017001cb55b298a0e 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_overview.html 3c18fff994c4242e976d1683e0d4fa5106a8a9ea80fcd19330b2d938b478dd37 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_registry.html 2cb98b3d3427de1c99a7ca9fb3ba0d3f4457975232570b21f8d5c10c50e2b762 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/notes.html 0850e951a0df24c37d0d35959e1b4298b3fa7ab65571e093340976a953092aea 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/search.html 69c9d30a3c47081d56d49b5a1f9bb013a7c468c47347ea6c10e48dd4d8815922 2 @@ -3572,2 +3572,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/404.html eb5d59175e0d6b32b17136e6595092d2f073c102cb0deadbff742bcb1da35db6 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/api-reference.html 1e402ab8f12612451f462e2a3d26ce6376385f4570aeb5a335f386032cd12679 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/404.html 16dc1392abf995b745d615a0a923684b0c9866b760b348997e0cfba993c7ee26 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/api-reference.html 1fadea70de77d99fd84bca5a75fc3b146692b2bceec29c6927928b41e5b5f420 2 @@ -3578,3 +3578,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/cdv_cmd.html b5d06da2ed9f813b10928a55f9d9f1a90fdb2ddb25f3069fabab4381d4daf3c6 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_ug.html 2afec942e28cf025f14d1c7e320b023c04f4eff9c1a0e5f84818afeb6ef69d71 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_viewer.html 80e3b4d612cb5fe2fc3f08fcf1ce1728d12d289d28f3d266a34f7832c702ce49 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/cdv_cmd.html cdea960f7d7fc906738d6af969c906c92018a24b3ae9924033b1cb97d1f93748 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_ug.html 68500e45d99534d8b94836300e3f514686309aacdd776d5d0eea960d02eb4bb6 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_viewer.html a08e01befbe8d4f0b43e3429209bdab9f5ef5e9122ccde336416574e09e27d60 2 @@ -3601,2 +3601,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop.html 5a6687b8ee58a4508d022ff70bb155baccfa044ae0b034777704d5da38fdbb2d 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop_ug.html 7235579f84f0ceb825a7cf899893a4b9a05cde28a40e73c47ec6af0a3c1d572b 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop.html 8f1ebb1220fe86a9f325c4c7c43e96fbfdaa5014fc7a3a863c7cea0acd8dc848 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop_ug.html e18f46c8b90e962055dba1e3d555a7f86c5f4a8b86295d7ce21542cfa2a1dea6 2 @@ -3604,9 +3604,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/introduction_ug.html d25a144c1e1c73fa5630ca6410ab6930e687d9977c591bb6272a8b70f1020e39 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/notes.html 42dbebdd37014308adfe4e3b22771e7da7cbd9292d6bd4723aff021688a48bdc 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.epub fbc3cc5df934620345f050528c227d68f43e6ecf7f8eb7cc56ff2609ffa7bdb6 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.html 1e2d1d2eb25b7e8a51391695646e11a83c09520c4652d7de0469d64476137960 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_app.html 4f81e40404e61ae6cbe820f4afeb045a081fd1dfd3002712aa9db975552702ad 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_ug.html 6a93ffb51b94801df6a39eef7b500d4d42b89ef2153e26539f3f371ea766ddeb 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/search.html db115b26c60e798b1cbadbfbc97759e254c0179af912c4bdb72f4dca74802d65 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb.html 831f1bc7f216ef394d0c9b5bbb0aaa15412cab174ff5414ba4d7f891cacf94a8 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb_ug.html 76609d6de50c337ba6f8ca2ecbee436c1677814664550e06d1099cccd348ff78 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/introduction_ug.html 15d9d23b0b7d756c1eaf787b1a3955f762d3cc181af049c58fc6035e3c02ee78 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/notes.html 80defbfdcb1d6954db0c73fc080118f20b8d69b9b223b5a7d5ad81e7191cd6bb 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.epub 42fae22319708700059d35b8d8ac798d3fadbb0002c422ce76ede087e9bd9be6 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.html 0be723c2f42c90d9c6e33a709812ab752c573aaa3340c0affb80716d49e3fcb0 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_app.html d876aef7a534080168869be51e58214532cfff6826598e11e957055b5eb4a038 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_ug.html 8680cc4b054c9b38d6ac47e121ac9e551378a2f2599a32523408e5483abe9c35 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/search.html 97eefbc36f05a87a2dddc6e6064788bc79b9d75e0474d0c74f636c56c2057109 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb.html 2c1326221beb36226d37f58375094c044893c9d2d9a289e4b2d0f5bad166aa96 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb_ug.html f89c78306ca012934783d709a4300ec0cacd9e082e55d4bcb455d1241d47fd45 2 @@ -3616,2 +3616,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/404.html 400c5598d1938f1c4f5302f026fbf12c16e5247924799f21fc79ab23c92dd8aa 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/api-reference.html b9120c85ab2c54fa162a80ae94fc29ba164f5f999f26db61359be05d484af29e 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/404.html 7378463a45f002aa75319284f24e4c8815ceedb85214d6fa0323eb15badcc13f 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/api-reference.html 1708a17ad400c4875c9864dc1fd3fd111103a1e3e19b03be85eb79d719900480 2 @@ -3621 +3621 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/databases.html 9677ce48cedafa7bb620d1731e8b7fd686cb4117ff0e69201f2770be0b0a28bd 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/databases.html 5e702da4fbcab0beacd734e61b5a6dd7afe200a876111f8e420f43084db44096 2 @@ -3642,2 +3642,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/error_handling.html 0b37b464f14f779ac9eb5956155e9b191f1d6b03f6c8d098163c5741ae9f828a 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/getting_started.html 0d5fb546f1523ef24dc3cdbcf7316687bd6025bd3aa0a2db536911370e6c9895 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/error_handling.html 49e16aabeb73b186b1a3b40e84695f505c1d516108bd53929c3a052940ac248e 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/getting_started.html 83121cca5c7d0983cdf4322c26125a23f7f70c4153efcd13647426349d69be08 2 @@ -3645,5 +3645,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/introduction.html 169a715160af8e30eb91038c6e9b9a82bfe3a96555a71e2c976eb91b1027ddab 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/notes.html 9991119dc337ae42471631d2442e8ff3190395bb2350a3b049652eb7b8211c74 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.epub 3d78ff9347a1d44d8e70eb80def309a39ac5d02ed47ecd4c3dc81be7bd195133 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.html 558f4bdda454dc4fd6483ab9f5a198f638f15056bd894de1d66e9c75c9b041f0 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/search.html 92d6e77c7e1553129d7e44a05a2fbe148533d4854960cedff6bdadfe52af7a22 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/introduction.html dad2937b85dc462aca4e49dbea7affb1140ad3b4016c78e71c8f79bd7214dff3 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/notes.html 3bd428936bc91b65371d6b2efb00bbb4eb0de3cbaed28a0e44723b52dda47856 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.epub 1ce0a6b1559ac96f73b336d054f9b5a6de53d470f59fb6af2e8812bc521b6efb 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.html 3b5bf35774559e51ed58097fb4194bc68deca4d00f63be685f4e550238a2b432 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/search.html 4a754cf274e52ba71a277727cd5b540738c059144f78c6e891d8af75d81f81d2 2 @@ -3653,2 +3653,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/404.html f7212072af399b84dd7232cb090c45ff8ad814e189c64d2795a4208f3e7edba8 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/api-reference.html b538a1c2750f70027ae742082c1308cc153847accf6e227db510acdf26ed8b81 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/404.html 3846355a76e33886bb423cf780c10ead6b6bde3ac1fae42fc5e99b7c46f836be 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/api-reference.html d04599402ddd35237cc99d67805611ebc06e0af5b5ffdcb4e475b45b7b4e5650 2 @@ -3657,2 +3657,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/cpu_sup.html 11e9d8561fb02d7b70e8f830c9d6c5360c64399af228653734347acc50a5a040 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/disksup.html 3ea2427c799e2605d60331db2a4d396af6090665d5fac8edeb6bc4cdefe71e47 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/cpu_sup.html 620c2717639c72fda57ab81a5465431ab26bb6c36992722ea6ec12294d4646eb 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/disksup.html c78fc0da322395d12c1b8f251fec54c506a62ff57a3399abe138363641765fdf 2 @@ -3680,7 +3680,7 @@ -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/memsup.html d357960d39d60dec8e21f3489fcebe147a904f69860527b9af6412a2b01c743f 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/notes.html 0a12105e656842ab391261e71b8adf831da6a2dd49eca901e1c208fdf4a081d6 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/nteventlog.html 807d667b9cd9e21944fedf9c5b89fc2a45890c9ccabf22f7f65d8e096691dc52 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon.epub 869b8b2ae36f81ef99ab8ff920810c84f1f3a92844753ca6099553f7eab8cc4d 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon_app.html 65a46b227f7b35649eedf772db93a8d67285955cad793c3ed58fd36b9dcb5fbe 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_sup.html 3c92357b777fb2d7060a45d21fc703bc8a415a009f0f32bd2a8758fb674dd3e9 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/search.html 99732da980f19286332477ee30564a285631d6161c854dca11d39046ddeab943 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/memsup.html 2056877f630f00a229e44fccb6b69abbc5581d92d1a439c1b66789e406d50bca 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/notes.html 5d74c60c540a35c67184349d82d69b07d9d9e17e7c9d4cc4518f67f5ef0839e4 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/nteventlog.html 0964f8e044af53efb64cc2777b67cbfa918e80369e42d9bc94ce6cca3bed0273 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon.epub dfbe77b1de7017e69d459545b3bc2d7607c44dd90f38c6bd1adfc7a1a4e7ed86 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon_app.html bbb2a88e22a6f9844c1158996899f793dc0c30111aa30b298e92bb5272a9f43a 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_sup.html 643b0b6aba00dc5649e1583325c7dd905f54e4e51cf7d2d55cbb8e5cfd935e28 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/search.html 5b59e9dbbd8a078879e8ad4cdc0e7feb713050ab4cb182fbee2b6d371af80511 2 @@ -3690,2 +3690,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/404.html 0be501bab5b56c037b5c900697d3d0393352f3eabdb2571256b63cb709ec98d3 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/api-reference.html 0561269e76111a8ad58dd16a18074bfc2a978cca31b870e29a852c3626f0f460 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/404.html 1e7ccbcdae8a18dc42b3eb7bb1def3737112ba082c894f61668ff7110421e357 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/api-reference.html 6ef5d6b8b61a65b09fa3622983ba0abdb4f89ab7f80cc91e508ec4638215edda 2 @@ -3715,5 +3715,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/leex.html b8926ae06f8d24967fc021db45cce51121d7425a8b1cdfc519dc36a1e889c52a 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/notes.html 727d76b6d380043f6c44581248d7b257fae2c1a24981324ab5fbe02debb7c039 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/parsetools.epub f4405adbf671fb8ceba154bcf97933649dc44a21c5569007519a4009be596886 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/search.html 103738a0157b3c3bd1d2f9a41f00295da5d7f33e9d45c3433cb4327a45e01b58 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/yecc.html 79a59599c081c135b861f6b7004787886631426eda0bd95939cfeca1ad9e477a 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/leex.html c734b822b5d67b47f874af23a06cf121ee547043259f0adb9dfa25746024b15b 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/notes.html 5adb260779ed09aa8124949ebc2a6ae829848bbccaa1f9ea28832df450b59551 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/parsetools.epub fbe66601a11590f8d9a860e96badeeec7874f4bd47510cfe59d38e3f119b1229 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/search.html fd33dc2c05385449e4a0fb2b638552442059bbdd3105d1a2f10367934a86f78f 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/yecc.html 86df4da670a08893819eb43336170e84f60ed9eca02f949970db4df51de9812b 2 @@ -3723,2 +3723,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/404.html c8ee5f16336b8a11a687255b4443bf089553a7ed15a54f9f6e8e4e575862634f 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/api-reference.html 68afed28cc682e562edd9e87a9febbcca5bf4c027ee39408c70908684d92257f 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/404.html 9097b59b30050b3dc52a5ef0b15530acbd86d44b1c4c1e371e4c70c7015a1049 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/api-reference.html 0bd8abf482fcf2f0ef644b1e3a6eb2016f4c77c8141c3927e526f4e1e9a7496f 2 @@ -3748,7 +3748,7 @@ -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/notes.html 18c3ab52766942fe06720ca1b0737bfc305ad40efd71d10eb16466b68f51ba97 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.epub 84a3a90307062d2b74cc8f6ff17d802f2f88f234414dcdba879aa5c18d376277 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.html e9796f63e1e1f1e8d95180f9f64028954ead39eece675a37559040bba10a4b6f 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_app.html d1538b9462a4452ab345b74f7efabf03e83af1e1fb2cdb166b37beca322cd17a 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_records.html 23116c112521ceb0f786425f059a260e68d7a1116ed8f9c722135402922f9a3f 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/search.html 08e916a41c13e72cf17f59109b5086dda0904664cb8b4247a2fd800fbf1056bc 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/using_public_key.html 5bbaa9edc804e47590b503a040d924e39b22ecb7fc038e134e42940a44a56999 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/notes.html bec7091e91febf5327efec16c25210644d98349a33f335de1a7bffe6f41ee7d0 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.epub a88e76b3bff3429a70e6e6671f91f9868d0095391aba31816726f1d8ce4f6421 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.html 082893fd4246427a96c1f6bde347355dc7a685c2f8d62b5f598eb026cfb3e546 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_app.html ccc3cfa92da3a6cab2f8de10fe0b946ea63c9a888ef32e8753e2d4604a5d901c 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_records.html e8cf85e06bb400cea5250bef64c16ac3de204861860ea4d8ef66437a8146e68d 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/search.html 1ead8f2c5f586502b261390605729d2d7b718fc052d2bb9769a24f3f98124956 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/using_public_key.html e8d78cafdcc36fdda4a1ac32dde84d4575fe2c0dd672094d9f4538a4b80fc751 2 @@ -3758,2 +3758,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/404.html c4641633d47154780e68562218485905018dd26e249e89437052cc5e75a320db 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/api-reference.html fecf814a7c57779ec43a6e37ae3a55663f1afc7dea87b1348895a418d576e8a6 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/404.html 00b69eeb3d9bed5fdb9d77549134cccb34883fe6a8902bc860b22374aec9bda3 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/api-reference.html 6fc13065a6e2f3c20c83f84f25aa2d4bd4c1e31bbc631b6911301373a653b72c 2 @@ -3783,7 +3783,7 @@ -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/notes.html 505a139fccd6fe338cb82165f151bfd541f4979674e7853e4d53ca2051a2f587 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.epub 480862b41ed6f433c34e546f7ca3f4846bddcc325dc4147b796d9407d65e8a18 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.html fd4b9cc879a8c3f0836424721551caf6c85593b1d6b9892b392b7dc084b9e1f0 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_examples.html bff926584e177b7c72e72486dfe06c26dd5e6b5a2dc32f2e5376bd7bfa773b37 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_intro.html 9a098cdc1508f830267e34a2e0fcf10576ce5fc8a45e4f819caf439ff588a431 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_usage.html 15557f6bd65e6104f1773753ecdcb8cd8509b4fce6ba6ec4fc9db45efeb5128b 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/search.html c48133ae25ff80d036facf26944dfbf4667c92dd92ae2f5dfef05a2d01ad061f 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/notes.html a1f885e9c6c3c0ca0b2b48b2443312235e978e8ddcc3d0c7b663a3358d65f1f7 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.epub d7273c72f1bf5aec65f932962a0f21dc668a6fe280dbb98437e48ae6a26ec2a5 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.html bb029a4881bbd862eed874dfb9b14a2c4efda7bdc0e4b4763a10b36e5aab6873 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_examples.html ece373708a5fb18107db2e75b32594b4c0b363f56aca840b6e6cbac8802d8007 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_intro.html 94949152b79093070c06f9515858ca8590fa7b522b47d53700c99fe62cd0d48a 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_usage.html 3c33b05d8c1058a404ea6c50370ab1bf71626efa3c9cb4d1434299b777e76552 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/search.html 4e642ad1f653580ef01ade11381dee263017a5a09e7acd4464bf6f72a4a1fed3 2 @@ -3793,2 +3793,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/404.html 5e450615e148c8cef43a1c0648188c2ca297507e2d5c908df9257c7f739a63a0 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/api-reference.html ed76a82a9792465cc8dfaf329234226c31582ec6d1b0992e7322e164f69d18f5 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/404.html 6c81b6f2c0a58e61dd4cc572986020446952c1840f033b5a70952ee551853a11 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/api-reference.html c1cc41409133b047814c2a6d730ad01530c374c2a31f21cee90d4962192d0d35 2 @@ -3797 +3797 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dbg.html 385e2270ac977728d4901d3aea947c757d3f66f4cc4773092601f93e78ee1e9c 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dbg.html 5bce0dc8a9a84f5b9feea3f08a47612246b11953462f0363c82368682d92e7c2 2 @@ -3816 +3816 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/search_data-7F27CE3F.js afc0acf16f291f2dd121cee0a5a3b4858588c2b9835c8dc79c5c48a10607cbad 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/search_data-B508ECAC.js c56958863a4168f539dcb8146148252484e0999ca4aa1b503785f99592d8e1ae 2 @@ -3818,2 +3818,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dtrace.html c13c8744c4b0786ada32d6d35c63a3c9dd268c100ef5c73789c85b63947a6d22 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dyntrace.html 7075c696d7baa43097ce88fc9e631d8ce8bba4f944093ee65bfc9bf3a15352b6 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dtrace.html b419430862bab1018ea9de7b9f85f5bee8d0e0fe1bbc05b00ebfc1ca7cd4ac41 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dyntrace.html 3aeed6d2c05d62cb44ec9887c1ee85598d96aa6631664490d17b6c79c402412c 2 @@ -3821,10 +3821,10 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/instrument.html 3f197035d056248ac21ee7df42389f62c5ad21567812e7d7cbb20dcbdd74fa4d 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/lttng.html 44da346c38beeeeb01d1e9b121f2793f7a970b775b53cce69488d9ff2763e409 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/msacc.html 2241c70d3eccfefa28f59b9b91488de351f480d075cda433f47d22a66392643a 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/notes.html 06ff7a21c5b0c60b873d9614619741015ea71134fdd3ff1e431779306f2dd5cf 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools.epub 4f79a1747528d36c07bcf38b76a0b0e883bdd476b814264079cf0d3237c61304 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools_app.html 58209f99dfd59f99d2e531b793a06bf257bd50b118af1152a02e37c1c9745e45 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/scheduler.html 6a2ff97dd47ea4384eb476f043ab8b3220ab5966b0445faed5d7aec7e6b5492a 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/search.html 5852aea9b292edcc0d26c3da2c0c9e3fb3f108838a80483be8b31260bada2788 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/system_information.html bc8337aeaadac8a455eb2b6fcddaabb300ad46f90370e1e31bba5606ee0f1556 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/systemtap.html 2989f439aed58eefe9445f3cd1b0d6454c6986b3c92a717e83f164b3d560e169 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/instrument.html 5ebb518512b49af3b690dde5d172790580bb26ac96cca1881c2bd782664f9771 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/lttng.html 565588269c5a760aa7112fb94ec85522af7c5ec4c4a9571e092e8a62e410e2ed 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/msacc.html 3050ccd5ed4c6121e6fb31f8dc88453ac825754cc816fbc1be64432656b45188 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/notes.html a0791e02b904a342e0ff822d03eab7bbcaee7af833e4dc2367447714ebffd5db 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools.epub c74d9e5b8d60651b5a2f1fdcdbbb2a42925ff1964f9f488613442ac3aa6034ec 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools_app.html bc4d6b87b8c3713f7df64ea6448a2089873cef219a2873e4231504652b4e26c5 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/scheduler.html f41cd607f3472169c7630221981a8fdbc4c50ede000aa82efa740cc5885b9056 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/search.html 16a3f8be5f92ae790ac1afcaba905552661edd02d14161d2c560d4c9c23bfdef 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/system_information.html 9520c4ae5e90d3253764900893a18d4ae2a5d7e9043bc5ac3e2d6d1420a2b79d 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/systemtap.html 39c574ead592261f5652ee9289a699ecb31b37a7afd2eb267fcad63829de5789 2 @@ -3834,4 +3834,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/404.html 3f1bf741f0d9021472e7270d7a129c8afe0e1cbbb483abea1be65521f6aa2b0a 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/alarm_handler.html 5b2f02e3b9b483876c99d67b5392b021d3275448052354a7a17cb57d570529cb 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/api-reference.html 2d37097afd8cac99b481fa25caae870884e26a9c6eb810bb0c330cc32ba52b4d 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/appup.html 51e85369c14373c0fbe40b3fcfe0d48a800f0e7d12c82e5e91520e17c474d9fe 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/404.html b85b799302104b8253a2d9ccbd3f7704e92403282132d328d364a5ba1281652b 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/alarm_handler.html ad0226344cb8cd2b99f70875a91be0c23a14b2da6659a41bab5d2ead474ac4a2 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/api-reference.html 3d07cc749b1928e6f7d7b208c64aad9fc99af0d3b4f8e08c96aad34e5d4214cc 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/appup.html 852d59de6def2292cca13ae5d7a0a8889037ea298ce6231e64d1a2ec0a4e532a 2 @@ -3860 +3860 @@ -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/error_logging.html 286dcd679fa9bf5b07af1d4c1d1249c78c5380f67e5b4b0fda199dfe70bcdb3f 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/error_logging.html cdfac80fe84137e7a77f25413d5d45974debb2a56bb38affeec31a711d0c12b4 2 @@ -3862,11 +3862,11 @@ -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/notes.html a6a0636af4c040612546ac8319eaecf1eed11d9c197bbabd587df34b85b0b232 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rb.html 193daf96a4f780613a145f45ac480c1dd8ecd4fbfee625cba337e9d119e38574 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rel.html d28d3e284fc4259bb4cc2d46a8101745c46df9631fd5c53d86cef6faa0018ac5 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/release_handler.html 42a494e665f7ca145f221995a22c3ff1327be12a26a4d3bf85815bc9cd716515 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/relup.html 17497fd91c2630bd5ee0b8cfa757cfec49cd3fdb21d63ae56e90929288314aa9 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl.epub 7ac4c4ec9fbd1a033115103efa53fc8e4c6bd95106b62ad3a6e32a378cedb959 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_app.html 3c4e1530ad9b09cba14a15fa270cbd1c4b21c4f24834296ca9797074c50b743a 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_intro.html 9fabb18a30b1beb2d776e1a5163bcbb6f0ef2059bb6ff95118f54e759aceb389 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/script.html 4a44f71e8cb09412e239d86ad37659b83dcecee2918110c6e1e839f0a53258f8 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/search.html 7a9d5ab89d21ca7e02a35ab5fa26c1fff90a8959e82bbe88251e0038b9583214 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/systools.html a313e165af92b0d80ef9bcb1b3b4b8171ff1bb4adcc798b8d2fa24897fcafe88 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/notes.html bb5b5432911e1e970ec779ea5b48799cfffeeb60b2a80776c4cfa92cd5317772 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rb.html c3d85e7546cba6d82f08d93c1f9d7d208c0676b5e702411145fc8be1c61a6418 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rel.html 9afdc49d3dfd34462b0c9fcd4a77edb3b4cb17c55387ed743d8fbae6ecbc2ea8 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/release_handler.html 7adb1a04c6fab6ff1a46255e865375727b6c473aa21fe0a70042b31a058b7dbf 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/relup.html 1810ec0d1aae04c6a82cb8003ec2a70fda9aaae77a3898bf5e5aa5af59d8d840 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl.epub fe9c9c353ca686e05b8c3812942e132425bf9120c79c3c0b27ff80e74f3a6b38 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_app.html cc2e1931b8a0705a573321c33b3df80afb5d04ca4d988148106109cbc30eab37 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_intro.html 4806f677cc0890a432bb030098d0a12a2d40a99f0c22a275abba7d5dbeae9b6f 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/script.html f6bbafcb204763afbbb14da0ed6095f63b63facc0d58c2f804338902283a4923 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/search.html 2db833b5d41bdf5fa5c9a43ea80c44a713785a99adee1bed6882104db8142027 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/systools.html 0ed182bb1e7bf625861903f5637354f91f3d946eacb56199c1c913341fc8affd 2 @@ -3876,2 +3876,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/404.html 50211663f4c8ac2849e645066493f2905015b4f1d1b67866c0bc39c6d6eb670e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/api-reference.html d8f32b3c1168235f1477918a43f2b6a534603e7835df5585ccbabc881152a9e9 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/404.html 88973ef52014c9c783aabc490f5c85cd8f7da554913fcc51182def51c51d1aee 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/api-reference.html 78809a5882a85f8ee30ff21a759bcf9b14774e1568e6e9f5e8516a0ec60b7370 2 @@ -3911,57 +3911,57 @@ -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/notes.html 7fedcf2219a67c46a1f6e5064892b9e8e3a04eeaa6fef1ce742b16189aeb318d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/search.html 3f6e30a6c248b14cf89db6c81af4bd42d898ccaf101f2b0cd9c324de363fa326 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.epub 7ce71f89e5c7c82b3da370f27b56b0a094c549451668c7bb56f86cea0b07289a 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.html 0539ba0b5a8f23751d6c81df83d6d3a32e0b3d361db2a449d69ab1f9996ee1f5 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_advanced_agent.html 013dbda54a1d11b41e21c0ff50d7f5bb819cc1952b85550ea60ec791f1730a7b 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_config_files.html 4ff6fc8745a27927903fbdda203b557a94bf415b4bb93a461cfd0944370b124e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_funct_descr.html 98728147e549f2fee88b143de46ffb3d818abf70d7d5e0646dc9cee8ba17e83a 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_netif.html a5a699fb2207656a46a8f2949db0e43508cd77362fd7c8ab11f7165ea65679da 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app.html d16f3c44478ede7810771bbf880b031f12f32fa1e2068fee3aaf4fc49e348d1f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_a.html 60d7a787309b20150e29be9df69607e2f734849ebb610c3f91d7fe674f575135 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_b.html 3a73a017b7b3f6b8955ad0938a3fd227cf91e4d5dec504fee75ee38bd8876669 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_c.html 4d1fe64b9c369f0bc1a47c3314c068ec51a028a718f687ced8e060b368cfe336 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_audit_trail_log.html ca1d94f2c1ef63fc75b5f5f69f8ed5b0ee07934e9625436f0fed500bc765a01d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_community_mib.html 6a9672069c9c4633df9d100edbf30ccc5a01fcc3a51231ab116861fc2c44641e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_config.html bea7441c2b89bb18d873c4ead33e5274f122d80ff9283d69b0e7569accb7776c 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_def_instr_functions.html f2d7175e7a347a3730b6b5e26764ad3146502d091ce9f29cfc0b117181d005c3 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_framework_mib.html e02fcd02e27a2fb260d572ccee56ae0b770cafbc4a7a96d71d2976beb8729a35 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_generic.html 12fe91fcc66f08faaf29f5a529bd9343991d18ad77179b4159a501fc0d0bd706 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_agent.html 4a941ca5f8ad4c73215bc7610f864778cef624e9e2cac9d16abc30f9df009f39 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_manager.html 9cb317661e9670268763059c028007bcafa1ff9d09cbd6b344ca273f801929df 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_index.html 181b28bf48c3178d8caa0849d989efb387258cab6cc26d59edb3ab7c3cc0a84f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_instr_functions.html b61916dccd9da9768a7be248379715f05f8c77e53906682cf731fa306b5e132f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_intro.html a12fd362aea1364209bcb44e8daf0c99ad69bf3464a2e85bfb32aa111c133532 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_config_files.html eb22cfa08f7ae074cd5558b91e5ee34e9ded43b4283a656cf025761e307e53ef 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_funct_descr.html b2d0b029acab956cc94be9220880782ebc145cd30aee6cdb6fb4217af132d721 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_netif.html 4e7108edaf04a94bb04dfa461d531645fb621cb09df10464466d23458e64a29c 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_mib_compiler.html 47a0cf4e69cdeeb3f2c07a338eb1332afeecd03919e73cadf2122a89cbb0169d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_notification_mib.html 67ed9bb57a4935bd0dedb24c2c6b7230ad6a72896bf9614fb10c9841a686373b 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_pdus.html db55661d462d947abde596f06669fed0c0f480b20e2cc823bf2321bf3a2e1375 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_standard_mib.html c70f39addd77d06df315586ff5849b51d790c295ee2decc911ec7053776fe266 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_target_mib.html c262e32ba5bb7f5d5f6ba020b1dee1b666a8db128205689a3b7a3bbf3f001d0d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_user_based_sm_mib.html 11654175feaaa47405042be801abb7670cf7850803e87fbbc769ce39f21cdbba 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_view_based_acm_mib.html ec1e659888358b09791482f33cdf843f85ebd2d221071448f4da0e62a6e2e6c1 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa.html 72df740ece93547752e2f1500b37fbc1464ae7c4be650851d9ac7593241d828b 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_conf.html 2ca359262e5b28992ce4f30ad82d3029e4c4ce9a6377df31c640371da215d562 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_discovery_handler.html da5207999e28c13389d87e41a702d238bab0f401dcd549600210104534267141 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error.html 681835dfa1432cc4f95a25c8b08fcc20ab7b93134aba01931b48604ae398e1dc 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_io.html 0b0e62575b84e18ee3566a096c7ff1d9a30358f63a69cc607eafe2d20fea001a 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_logger.html 81a5a03c3eb410f3e90ef386ee9ecab24f9a3a2dbd7ce2b3e4f79962c280c5c3 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_report.html 610a4a259408ad7da4d12a39d8bbffa2291bbf51e727e59fb44b9fc1546f2e50 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_local_db.html 69b4caa8b05455cfcca0dac757a1e120a96ea4fd6ad5f11bf18fa5e90954affb 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_data.html 1d7fb95a74251022402ead54407ad51dc19e8e751b5d4128785a50a0d71ff14c 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_storage.html c2c5cc9c8bd014967bb822ed67e0a62c3b924f3074d7040442b4efb1c089856f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mpd.html baa18a03bdb8a7a9f36cedfcc6537f199f20b87d9e70e18fdc71c6d51808f7b0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface.html c355c1b7d18e41c65393067cf1a7a0622e1793859893156d696bcfaf56a36dec 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface_filter.html 93969542d680bd0788c445d9c6539e24442b287d4df9906fa09bf675662e3497 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_delivery_info_receiver.html afa7e27adffbc739975f58e91f0e74bc5ccf5e7e2663395e66ce34e0d6e3d056 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_filter.html b69676563f0ba9a7322b6f716abf60d4705c74f355cfc765c2cdd1eb33ade212 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_supervisor.html 733d9a608dbe5d2221e42f6df02b370f0fd9950100941bf91ba848929f7ca1c0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc.html 6ffa7db9b45850d42250825f917b27212ad34f8563dc68a2456c64992b1a1a3f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc_cmd.html 54a89269d8699bb83e7948ff0a96da9a6e1b315db103c4e1dab369cf852108d7 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm.html c4818597cdc3ba069cf57fb5072056d247c1d5cea7511c8784c59b603e4fc4fa 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_conf.html 19b66b69503353976c82c1cc4b80bad5bf98b75c930ca93a942e9be3168062be 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_mpd.html a34b0ec79f289b95be63f2f9c6c39430c7931d74fffb85547b6d4d1f8e38fca0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface.html debb9b45669918732ff77f72457741ed476340c1767ba5b330fc920d9b2c92ed 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface_filter.html 874981fcdc25c7212c9b0f3cef0160c5bc24a4478a18cb44e97ab0c37e7fdfd6 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_user.html 14a76194f71a25e00ed3c733583c6da7e8a515982c59c74a1db4c50a4196c501 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/notes.html 44b1ec5cdb1253163dffc2cd7856570f06adaf4280c722f8fd1dd44f5d796636 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/search.html e54026c2c997d3e7128ef850a0128e527845131aa4e513d1bf36a254fb0acad7 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.epub dc27ac1d4108cf3f8b90f2f60d789b6ce913494c8b761d6c8adbcbee1f0e2ba3 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.html c32c7b40a6aa69e0a6057886f4cb53fe45ed6b62554385b804bf6af696e50af3 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_advanced_agent.html ff40e1edf3053502f38e10b582d1ee1d31f9ed19339ed8262640376b41befc06 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_config_files.html 75dbc1b2177813192e36b0974adb07c264669abf590bb4d17b9bcc352f5c06ec 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_funct_descr.html 4daa4bbe75ff94c89aad2d03e16e5b6f4de74a5a0fe9543f07b638226a186a0c 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_netif.html 701f4914cfd03413655752086171469dc5761833451091c387e346742c259c95 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app.html 9abeeb75054e9b74690ff58cc62656a4867f06ac65793cab77a135d78c09410c 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_a.html 26c41a98162347d35b0a960f3528fcbdf9d710bf938be61c45ce18a13aef943a 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_b.html b99ff04178933886eebb10b0df04fdbfcabf5cd76b9bb24d0337ba51916de04d 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_c.html 0c57343b85c568af51655e21d82fc55f52d4c8d4c0de8273133af2b320d26356 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_audit_trail_log.html 1135722fde513a58021a74d13e79845342c0fe278768a75b6fca9589db84c28e 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_community_mib.html 52ed9079a7a430331fdc43693f915b18f24dbc03f31c011aa6505faeb8ddb733 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_config.html cc22b6340e15ad78418fd8c74c5d11833d302ac74bc693477dba628aeaf82be0 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_def_instr_functions.html 1c003d860ea143cb7bdfe36ce7adf60e652b1a20ed85b5bc33e117d4a3e241d5 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_framework_mib.html 57326e91c108f34cd21dbf3a02c7b668ace157dc17543a8db3e79d85b8992a9f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_generic.html 140597158e34ad2aba844688b7c03295efd072ab5eaade0475c62a03d36bae48 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_agent.html 00c45e3fb28d43b0a7d20756074bdbfb5d8d1211a04feef1a36d8f87366e8cbc 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_manager.html ed57f1e07febb4bf2d016da9282f39c90bd7d8bc15985355ba9d92a42ba926f5 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_index.html 2ab4bb74965371919dcc9fee7d1b5bea67a46e9d7cf9450aeaf9b888bb304c16 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_instr_functions.html d9e5b7aaa3631db27839cad8d9f148a1e46151586d6fafc54f4e06726fddbe61 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_intro.html 52df1324c088408f24e95f0b4801731076fc7c01eeb7f8df0515494b8d344587 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_config_files.html 2d972a253026e9dcc6f7c64fd250517eacda1f14fb1063a1acfb4655b256c83b 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_funct_descr.html 40d44da19a13e8b1fe30ad17daf905cf7687e40a4c8fea1af9ea42b19fb98126 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_netif.html 931f6398e1571ddef5862964a1424866afc1838c61ee72c1c5d8ecb88c37cc51 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_mib_compiler.html a9b449771ef25a50504adc37dd7c8548c5a62fd91521ab28b68c07cf08da5a96 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_notification_mib.html 31e262e8ba1f19f66cc9765d99ce3915ad9d6f1c3b115c24185d81ccc61174e9 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_pdus.html e0410eb00705ac981210431980d3ea709b0f1b317cda46d54abc33c8f5abb7ce 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_standard_mib.html a6f8799eaa91c117f86ac082fa5ef61523d709f8870072693089ff879c115ab5 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_target_mib.html 8a99f010915233b090e9f90eb659207340cf49b7d3149a85a6d657086568b4ad 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_user_based_sm_mib.html a1cd983c6e5bb710f71742effbb7b1b6311cce0d2c4298c5c5b88af2842d428d 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_view_based_acm_mib.html 782b34c468b11f4a79500f4265bbb7e1aa3612302c43b93b7fc498c178843373 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa.html 45e6764718c2887da78301920204068b253f218887ec16c42c047390ba6c49f0 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_conf.html 2cdd8d7af9ee1a5cf0bd8e731701ffea046e9eb393ee8bd9eda45dba6d87da5f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_discovery_handler.html 1a06ab8820845fe7d413fe56b33cd52e517cc3143c8338646f1cfb03ee717551 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error.html c58cdb023273683fd6c314836e3b28e2824cac996295e114c06020d7d926e187 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_io.html 34b7b05d68a0ced4ef86473723d3fa57de1dd26a9d69ae2785d26c0e0eaa87c8 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_logger.html 205f922d55ee0ca76c5467e5a448ec80cfe86648d06e2cbdf8333fd7eced376f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_report.html ca77afcdd208a0cfab8c7a4addc19576c734616b7de1083e82e39a19102ea246 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_local_db.html aaceadae47b5b45fa246aee7f70eabb54fcc797094580532212f8f2ad7d019e6 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_data.html 21f6badab47e3251125b480fc7f5ac877dd0a1babf8ca83897d4480b885cc9d4 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_storage.html 656a90364280ca75c75abe4c1b7154a8ed55f8ee910f6720518fe8f4ceb759d4 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mpd.html 8dddf4a35ff3cd1818ba0d4b46fafce6001b5de21fdf0abd5ef49d24d90347f0 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface.html 4b1366984fa698f1517a04582b72ece8000ebba1b48e0c0e68d340458ad829f8 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface_filter.html 82e448f81b103b91bae9f37d1e98d52154785b4224b0f3572f8bc60eded4afff 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_delivery_info_receiver.html 293b17fbecb30cd4ed975fef2dd024106f2429827937f848eeda8d6069155ae9 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_filter.html 14ad67c699cc023e90a05eaa22e8c3310c14199773ee73a800955269a2d3f5d0 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_supervisor.html a4c5e7c021c2fa09a08d177b8e5c70cdf2ecebb8db089f96ef6d453a0e972f2e 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc.html 59df120d93f48ba58f35ba60cc1d2a4787f00ac3aabf0d8e76ebd0706e40ff02 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc_cmd.html 6d4c1f40b4edaa383b3c4e5d0357c890270a7249f44f3c17174931ffd3a44b1c 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm.html 2b34b8a3787b3fe08fc54a4198e109e460878e85d1905f1539ab0a6e6025bd87 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_conf.html 2eb90b1668e0084cb05a44f3effe87b6bd6db3604f1e1f19f3ed1c18fd5918a8 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_mpd.html b62689027717dd98f7059a42142d5e19f816a46183e00c597e1e7f16f0ddfa37 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface.html 1f24635732fc77b7145acf0c0580060a06ce0a255d576d906895d384aeb95d47 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface_filter.html 7cec25b8268b48e3e9fc6fdb8dcefeb7d40b17a77cbc3d588393aa43be6e2888 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_user.html d2919e4e74207fe59d9a806c862a6b2d01649d12294c8fabaaa8ec51a9388405 2 @@ -3971,2 +3971,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/404.html 5a60c38afba12b55f162722eadda850476ad9ce39d3f5c1c1c336594bea4db01 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/api-reference.html 54c531df93d156ffbe8867c2d7d63b1a8d59ea2e3c36ad4c83bd6f99a5547069 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/404.html 9cb93b07e5830179b864765907484e3df3045ce60e6e6a87ddaccf456152a7a9 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/api-reference.html 86fc826e6901d83ef152ea47ea18b3036e5b9ac0587d9a441f97de934e058a71 2 @@ -3976,2 +3976,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configurations.html 96b40f99963b83aade761c9616df94c40c68c12eb418297167393a749da06931 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configure_algos.html 680e3596906b9fd1dc46c19452787462d5c04bb7beac34d06ae6b1b6813e72d2 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configurations.html d13b0d58e3b55fde5aaab905e7801ae960baa550aae6828ed999cc1dfe8b8d16 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configure_algos.html 29008017ba769eca99def3bf76d99488f14864c03ffe2d9731b9ebcd6857c737 2 @@ -3998 +3998 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/hardening.html 117a8e89eea47e787a629577baf017cfed19b95abc90f8695ddb9a2a08870ee9 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/hardening.html 3adfb1606efad80b4636ea0fcfcb8b39bfa0bc8dc74e4d5bca396022d0c4ddc0 2 @@ -4000,17 +4000,17 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/introduction.html f1955b1a19c148269fa19082e6cc72ef92d100a7ebaaae86d303392570b488e1 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/notes.html 38974fd1b964ee2bd1e72694900df31ed3b64a6a55ee78d13ae6d8bc7925613e 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/search.html 572ca6afa917409791bfa1c8b9ab69a58c7aa6d56d02e3ae69c44e8b9fa939fb 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.epub 1294e2fa3f253aa2c7533f45886f763b2a4184af2cac3339bd687caa3a954f75 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.html 836f9101decfa3a1fa77425cf13dada3c9c786a919870ccc86a7c0ee1a88a7c0 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_agent.html 11d60cce004796c65b464062868bc3def0dd6654b838a10b0688c56e3fa7e594 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_app.html adb40a6f33407babe9132b7fe78a5a9c0eb47a20c0ebc472b05154521eba8996 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_channel.html f611a65e5e9dfd52bb83c70ceb40af891f23f82f56dfd88feae6fb10e0476318 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_key_api.html bce5a753479fb525f3f4c92dfe236da0b23da01753ba684cfdfe4e12f74f147b 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_connection.html 2528aaed0bcd0a7340fb94a291b644309974b98af02be2aa3134476fe8d1cbe8 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_file.html feebea0486bf6e09f0eaf1e2c78c4a349c41da9c5d56dbf508d565d65911bf53 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_channel.html aaeef5daa41d14fdea9a5d717ca5fe3b544ad737d673ac8ae2648e40b6db93ef 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_key_api.html 4f027df81bf61ab3b6273d34bd2f36131f806b5b59be438c01ecd3c574790d8c 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftp.html b35c9450336cbbe0e7d21ec556f6c051f275bed76b2c2eba5c1ae34b241c8cda 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftpd.html efb6429f4d50e7e521e38df480f4f0f561844fa45ff4adb5ab46429def8d0229 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/terminology.html ff29d5193d4afb76ef8fa9b9f8467af4ee8218aeac812acf34154ac1c56d3c70 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/using_ssh.html f8d17a13f64cf2d8bce51fa1f9de62b5e808b8a36e0fcaa258c375bb4a68ba51 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/introduction.html 6bbe9b60eb0fa051eb68d06c4a83d1f9e258238c534ae2b6ea2e59c3544062c3 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/notes.html 734387917350820c28e41af6181eb0428166353ad6bb4bf3f39ef08f616c02cb 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/search.html bc5f311ee43fedbcacb170316764c3813d9aba9c0111629a61336512a5befa96 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.epub 406675e935eb0d2561b60cb3ba399b2c7a0720f704fd2742bece9e2518671ac7 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.html a3a04096e4913abc7a389e074d7cdd2dbfb84b9402a9dd8d4acea05fc96af205 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_agent.html 8dfb57382f12cf717361ada4d2c1c0e34c1ddf61d18118d0c714113da4450b76 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_app.html 496f572421bcc39db413b762f89cc3c25ae1b499184d6d2c723390130b4beb97 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_channel.html 57a99adca7ecff4249a62a328856402030f13dd7332e6a8a0b9d2da8eb8faee8 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_key_api.html b98eab3d77e6fd5ec820e4eda2fef73b0cb91520f0b16130859ff46a09842eba 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_connection.html 311e1cf2c1b31f6f54daf53362cae5a5de3449b59edbfb146e12f71593850eef 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_file.html 2a84d174d98f417094228200f8c0ec198084ac3459a83014fb19b96ee26557fe 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_channel.html d00c011c4c967b085c2d96c7f9e11337250a523702b64887220b5213f429a657 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_key_api.html bea1ecd66f1ec2491a80fe9db608ec8337a1fbdfce437e8475b976c7b3a2d702 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftp.html c8f826aebf7d47a2aafce53c791ad4d8e9542278efe346c9054b21cba99a3322 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftpd.html fbb04f9207c9ba126c13412017eb60b231189f855245e5cd63809bcd86308079 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/terminology.html c94d253a2fb8334e84e3a4ad6f2a037ccd7b6d793b7c4c918b2f7faf3af68e33 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/using_ssh.html 9ea7aa9d735514f3af3eb128d248ed224f22bb4d1fd6271d9251d6c4cc5d938b 2 @@ -4020,2 +4020,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/404.html e547fb9968b918046f09bb9e5790e5c5cbb18e96d6b4c5de24b19eedb5469a2c 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/api-reference.html 991e5c26aeeef2a5a475933b58afcba5f9f8ec14e1f8805d22d7daca17ac1717 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/404.html a008f130ea16036487c5208d38b45bcb82d66f27b45f2ce4d2d910c42d85d777 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/api-reference.html 10519f029c3b6fb76c61bba849f7b583aca96f1aedb4c02a6a8e9b5cbcf729d0 2 @@ -4045,12 +4045,12 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/notes.html 1ec6abd65bbcdddc2875f62637949baeccc5649d250b3334557ec682144f48f0 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/search.html 7f219d9c73186a8619da8ae39b00a4537275ce8ae1d54b3b97b6476d1d667029 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.epub 70e0f1c03ba1989b6a250f6b537e56d910d48d584fb5b9694611f2457648cdea 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.html 132e4b4fee8970b76fea6d3ff42f2589b426363b25b6e664f036411a92e64a72 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_app.html 45a11507793250dabb5dd20b2778f8262acbdf02578b4b4dee8bda2c802d222d 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache.html 784efc46f96fe3b83f6e13d8990258d60dfe75b35e64e7a8c379a84caf5f8fde 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache_api.html 2359968db09bdaf50607c1a13ca6049f0f5fa20ba17b2ed41bbecc74b24cc0c4 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_distribution.html 23d838d30c92e771b089aa9866f92cc41dea4fdd27e7782b764cf5bed6870e31 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_protocol.html a0beb25ba8db25995d4b36802474da639826e1ad2508e507ac9f77f91c0fd998 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_session_cache_api.html ab601aa031a73d4e856406c8c6e933bbe2b047c5520d4bd50272582f57e6d645 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/standards_compliance.html 8240e15837a1a4327087f406968ed70b7ccfb2204b4fc9cc7a85b323a3fcf678 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/using_ssl.html bea60f343bde2bbb51e9b6a65c5e94391f0b421a4f6e53d8ae45905de6259fc9 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/notes.html f12def02ae7ef79c6bea681702581e2ddec4f5c620f03824b9ee26f1a1b99065 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/search.html 1a5504a7118b47da0335fdef51b1fff020df8b2d3e75901fcda53996fd475ed2 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.epub cf80334d4e9dd87562ebbab18c326ff235fc53c349962159fa82711a941de4e6 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.html d375502e78514a5199d4ac6d1caef7556dd09b017fe7ecbd52db36685b16d61a 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_app.html f2f2ace3b77661b02137663f9c535752fe3b15150962f04c5d49bdef8fab977a 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache.html 5660cb7d1bf9f9c69a144af477702eb853ce90b3b214285e46a3c884b7339f20 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache_api.html 874f90476a27ee84ec1c7338e462bed6797375fb5b0bad997c86dd787c91f058 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_distribution.html 09459faa0a77800ec3f520151bdcec74eec0c2a0124d4cd3d69285fe7a97a235 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_protocol.html 3b9462e15856c63a7ab8add4765e48f32b0d8c209fda1d0c0daca88e09aa4e3a 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_session_cache_api.html 56144223633b9b4ad2df7f220ee3b519d5d1f39b3a217891c189add6f17bd792 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/standards_compliance.html 8bbf5ba0ea993d4352f1fc0c83290d5f2d0f584c237a4eb3a4841e2d0ed2e73f 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/using_ssl.html 1c57bc2ed4f3bc83c5e3b1436749f9cd35deb63900772d42f8c6fc44263583cd 2 @@ -4060,5 +4060,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/404.html 09e0c8e98d07fe58153416e15eedfc4037d8792a72693adc3ba6c84646bc883f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/api-reference.html 6b035edbd516370e8aa1c1c9880c9040a64a162512b6a1369df8ece7d1a97869 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/argparse.html bc95d0ac3b6b5b6c7044a53e294dd1f67ae77d6d4b5311649dbd393d98c86514 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/array.html b458629ce247a47adf4b857577fbb09dc8db1b5d24dfc0fb6901635ed387c67c 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/assert_hrl.html 110625c2f31c7c78947fe320d663fed94c00c4def16c9fb0168e3d706cc48c37 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/404.html 8880033f41f9f75030597abe16fa0d010f99db72a3679e136ffc222fb0a229c6 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/api-reference.html 30ba3fec1976a8804e1f7311501e3476238b1a2f42bcb1227661d2237c0dfd1e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/argparse.html d2078496c7b53afea50a4c24d809bb18d68b89da3cd5097020b4ce0b7ebd8718 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/array.html b236555ffd743800072a85ac3c3a4eccc4fc6160f9f4482e058bf0b7481aace1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/assert_hrl.html e28fc95d2def763f08b88bcab3811e554ac15333b9c4dd9bac42bf376491a8c3 2 @@ -4067,9 +4067,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/base64.html f9aaca8567630eb3e16560d763479b45da6b90c97b30e5dfe8526acb607c69c4 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/beam_lib.html 251af4d3aa8b9e6c45b633d11f508b221170e24399c02c7932d04423b4b2f6a7 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/binary.html fe5abd9ba28fe86748f966c51ce437298372c42cb7ea696bc7f9624864fe1b3a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/c.html 5c1050eefc7e0879c9d49669dcc13221cf4b6cd39258c05769b6ae1c5d7e307d 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/calendar.html 6b7a9259bf6d12f4d3f57c31b6b7a8937981313243cd499fb916b1762911d502 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dets.html 3c31919d137067a35e0ee38052d4727235e100be4020dbdcb6511f8eb24042f8 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dict.html 0fb5e666be140fdadaa6203cbd92121b69396115df0804589ee99aa729b8027d 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph.html 48467dcf6ed899eb53a6a296b9972bdaca1cf39010407d09ee7e58f332112840 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph_utils.html eba9f69518d1ea1757ab8b3c66298dc07e4968e2fa4e4d27683f9a1dd0d610cf 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/base64.html e1a93862164966884748e5ea01c368705bc3aab7dbd9441e6ed58b856a47ce4d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/beam_lib.html 9cc4b266eddd4d2d03fd0c40716da9d9d35c2172baa98e16466b25728219dccc 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/binary.html 91631e707665a4f47cfd757b0a6aa79c4d5feb8f6cf18646d9a9c07fc4a1072c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/c.html e3bb85f8726deec99b8e247f1856def705a835f57cf56798e1ac230814f8e66a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/calendar.html edc905d29471f5f954310c898ac7066ba64398dea7626212843c6dc845cf4ac9 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dets.html 8275415eb9ae3579d1b46d194eb685d17c93bd51bce6c7bbd6f721c25b2ee084 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dict.html 64d7e9964ba23a42b4e0c88d83b2155a2d5a3205b6aa3c0098486a28b46a85f5 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph.html 18ac24720199586506a4aeb037e4b8cde0c16e458e293f1ebc13b4d2fde9df5c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph_utils.html eb9e9ff210d637a5216b57a8317a26bfd91a44146498dd9b97f509416f5eefac 2 @@ -4096,26 +4096,26 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin.html 2bed4581f525cf579d483a185e6dc5889f8504d87f65494e7c5e69c5e954e158 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin_expand.html 459bb0ec48ce55bacca178c534a46532152445d25819aafc6740edeb63ab7204 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/epp.html 6bdcb57e232a70f2e8bec08468803144645e87ffdde6741ad3dfc960793fa9f7 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_anno.html 603be4d31b00dafda792847c0a0270db501ed7545df90495ddf9ed408aa8284e 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_error.html a04fc73a04e9c1a61fe8b6fb2e415d49a83133f2aff582f9600d4f0a59e6f644 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_eval.html f4cb751ccdddb2b72bf68ef75a47dbc3a5966f22fe05ac5a222fe59751945369 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_expand_records.html be352aa8d23079abe7e8e853af5e5d411a1d93712326036bffc05a441f9f4bed 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_features.html bd6271c114d5314c8de070cd47cdb6c091dcc99e534f5d26994e432aaa79c128 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_id_trans.html d6f859165e3be1eb83978bcbe3c75d8f77c1a57148c01a19b58171aecb2c26f0 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_internal.html 554a838313f75460a5e703fb043584e2d791f967bf6271756f92f69a8f45cd95 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_lint.html c02fa2959e9fc59ff8c592f5fe4639cc0d1f1b6b8047090ef870612504fbab84 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_parse.html 3e1a2da86d2749531b9489b6fa6cd320d447aac64d8d3476eada3a2c60bda8f6 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_pp.html f23f00efdc47f6e7f1a6bb445a1fb57d5c6c067878d80d9f2a33dc13b1788793 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_scan.html 19b0492a9ef85860045c8a26320af8d01bbe19fc814db8b7339b6d3036f00fa3 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_tar.html 550b74281b62015735d3911106e00235923a6d4e3d931aa40f83150faf615441 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/escript.html dd2928a8dba23ea9543f4f6d2792662f06124efdbbc36f3abb5f8df058737602 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ets.html 8e990f0107e2de067be784a8406d39712d8817bcf73caf245317d213ebb36a83 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/file_sorter.html e0ab19de5f345e448a4020ed90ea55d9c2a7c83d8c86764b81b4191e68a42292 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filelib.html ef9722d24bf3154528fadfc81e72d71fd6a1e9862888b57918595828ae3973e3 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filename.html d49f4fcc4947cf04dcd915e28ea15a6655d7de2b25b711e5da30fd42b9c963ec 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_sets.html fd33c669279bff77923d34610a1a4f3b2e8acb2a7641d1a65e6f7668aeecfdc2 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_trees.html 4ade8474c9b25ba4a42b01b63256aab7f67a58d629e37aeb953dc2b537314877 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_event.html d27eb4c21e18f361dcb1b317c08532951fc1dd8e716f7749f249c1e7846d4cea 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_fsm.html b14ed942d61692aca8951319f11e6e6d9ac0861e6195f8ac04690df4e364e4af 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_server.html da52b345c878e476d70525bdf1c45ba0c9f20f3a2b23434aa413755b9f2ea4ca 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_statem.html f8dd3d98616ff25875282716f34ae2ba94d7b4db27c078e0f9befb3f2c368d2f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin.html 300b01ddf603b34f08d863be36d94a4807b0161a81badb271ce84c1ad0404eee 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin_expand.html 516af51e7f83efe7643133c11a553607d8c19c5ea9a39c141787ceb873da9f78 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/epp.html b53db779744bee1c09ba408da1a81de7083b8eec108d82e382056110d138796e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_anno.html 4aa5c8cc2d93cb1c0c935de971d3a4fd6ec0ed9cb8be42df10bf62adcef5db2d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_error.html 737b8b98cf471658cebb754c1998156d2ae102ca0d5d0e796381da8af0b6be7c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_eval.html 566ff93044679863bce10fa2c96ade3a46669a454c58244ca9248ddbb0523f74 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_expand_records.html 68b5b15e2ccd7ba1a12205b78bebaaf00b3358a364695948866f35b4a497d5d0 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_features.html 6aa7c34dc4867e2c5321cc379042cfe051e1755653685d385eddfd5ec18843a0 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_id_trans.html 1316b6d9c1db490d71c7e8c0b0ea8839a44f503eb42f3b7e7b60462fe9e05b5f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_internal.html 650d5d43e4f372edca252b8f330469745d8be8b430c815f0183c5e8cd93e5582 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_lint.html a6680638041beda5a983e61bc1ed77c07f507b2f34ea482a812b4d97cb2759b4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_parse.html 6f3b52e20b12f4668250dddaa3288f07cb1b62378fb14a2d9d31fc26191778d2 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_pp.html 5c9d7358d6fb3efca4c1d9f455f5abdb25243bf7bd8f8dcb15708cee67c57aef 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_scan.html 3a18d38f7aa7052dc5d0d46f4bd5de53c2906e9ae01889ed056cf6d38a1c455c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_tar.html 6e3571479e04693c2979e8e795b6e687612a738ada5e7c70ed4c3af942e60c02 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/escript.html 00c3dcb88014698962ae9b60afb2eb40a542f1f4a16f14a9480be2fadf2d6902 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ets.html 5cd256063a26eb4f6e5df0e0d53934381723c1f9d090e188be9a73a5e5b44cbc 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/file_sorter.html 69f9aa3eea178bb98498283278845f33a757c061accb911d233ae45b2b6e08dd 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filelib.html 0b45d9484f083d6f4fcb81e8664805c43997ee3fe011bea1be2ff859ffd274dc 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filename.html 09cff4e0cd8da82e27c5a69c183bc09a40ae7e11238e011408b543eafb1b201f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_sets.html ad9f3bb0d6cc47cd4d6947c3b7faa416a2ed5f212ccdfd68d51a95ee9bf2eaf9 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_trees.html 5c12cda9fdd312a3679afa1481addebe1b624a1663e0326305eceefd2f08fd70 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_event.html 1b7c8b345b80f90528eb7e5edfa337c98499b8a5d6c2373d05708ab7426bf9a6 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_fsm.html 7c8884361d626a6d077420976f070f5d41f8e0b04a138cca9a98a505afc0c151 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_server.html 85a3b3ab766f8e93eca8ca7690078320a3c7404f35edbf2bc958c998b5b60c93 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_statem.html 581486d369c1f8725446ce99eceabdd3dad60e0620a102b2275586486d95402b 2 @@ -4123,42 +4123,42 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/introduction.html ad28650ba5b9a69a17c8bb2bc7317736361ef696385a23d54ea06538fdff8d7f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io.html f42e19e1b94db6f339e0d30585b6bb07bfdd4b8c1c7ef20e0e6b31a17ee86192 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_lib.html 687c2bd6d72e4d4210569f6381e3536789cf36b45f35935e4f508b7adc700f5b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_protocol.html 273c7e1d52b5854e0c0f3b0bb3841d17fd5c97e1c66d26e350ea9e52bd2b1ca7 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/json.html 90d605dfb8353c4eccdd2c29f1db7e986bc79964f13c1956bb40b7376337ec04 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/lists.html c184a2d1cd9b54cd7d93344ad45bf81e375556ee7d063dbb56e6e610ab6adce7 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/log_mf_h.html 9a5f2ba0ecd0c890d1c37dfc6fd11e0dc5f24cf46c9cd75a0f99b88e72e79c8a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/maps.html 76c0e80d6ed49e9d055cb9d144228b0c25534a6e5fa2f31ef22d26b1009ce622 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/math.html fe1afa988ca0f79efb86c302e88957db5851a1aff90298480c808a453db70c1e 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ms_transform.html 527557949b6a9e392ab9253e53a589989922ccaf609060bd3341191f2b7b494b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/notes.html a1cff28f6b9866668183faab64cf8cc84326a78c09b9ad3ff0547bcda29aba5a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/orddict.html 0b609399118e69c42e3f786b222176f637f524b493b97a7e8958e2360c3a2a71 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ordsets.html fa43d9bcbb1204943da1e3fe211206519de1997bbc36c7f6bc89ab6db64a4d56 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/peer.html 22a5884aa4f92bedb4182f2ffd68e4510dc5bf9397fbcc6b73d2f6f7f929b592 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/pool.html 1827644f46e4f23bcdd5dd931e18850a0809527f08be4ecc3962ecb4d227216f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proc_lib.html f02ce7ef1f8d817d62252eb93172a10bbc5ab9d5e7df682ff14dd4fe7066dc06 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proplists.html f7e1becd95ab23cd6cbe02a4289da9c9bf70f36b9df924edea9258dfbdc5fb88 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/qlc.html 3f3821eb01382de534e1e76fb3ebe82388182afaac52e6ce1650549a3f379a94 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/queue.html e9c4aa1f8163da7d3a872247bad556368e7c2e32eccbdf11ffd9a0ec4a86ebe6 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/rand.html 8aa539ddf35b046f742c60d962a4d59a0734d02f1f604e383210b3a7d56296f6 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/random.html d65250c20109270fd7dddf10e53cc12bdc85ec59a0f081e02d34bef3e2db6fa2 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/re.html ca7bf61bfd8c709842daec1845ea438bbd5b7d25e89df11eb1c406efb0dd0015 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/search.html 98419118b2734d0c6287e9ac67c4c47ab5ebaa7bbefa82530b435fec99307a4e 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sets.html 501befde060d8acc1f5bdc672153f4857fb02f641d90de0d780b3d48a040a1b4 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell.html e94c68ebaffe902981ed12f4b3448920f49496f4dfd8f718d5d0f0ae9eaeba93 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_default.html 59daf1045e8a7731f9afaf25b4f6b505f14bb5fbe6c063095b4119c3e051de0c 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_docs.html 79b7ba65e1f127db370a0a9235a2734d2ea3e4d9dff2043dc60691e3969d9c53 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/slave.html 50cd50b558aab35bec7938a2bb5bfc69f846c904b0aa350109df5bb5a70107c9 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sofs.html 79e1cb44bd311f8831622d842dc5f7d79d653f4e358a2bfee65de0bc5a2de82b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib.epub efa9538d683e6f69c6758c6ac0c64f7f1ad1e704da54119e833e77e7e9ae20a5 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib_app.html 3908e0cf663342423046a44aafc6b6c9b1ac8d0efd8374ed836e6483992b0467 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/string.html 84a65d1398036c8b04a6fa56e83e070d3264fabaeda88cb5d348c4d480d209b7 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor.html 6c25bd42d3d51a9c618ba4e4fe6c192f78b87fdf146be6296dc53dda20ac3f73 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor_bridge.html 1b9f8e6ae30281d3aa2fefdc95a731180587ce334dfee2d2102e11d158d77c59 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sys.html 3eae83fbeca3e2ac82e5bf6c248efdaf31cb25a999be5055dc86de8d37060039 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/timer.html 9e0c9a52aa70e55756d5cad69963f1b08b953b53d2c9d9a9289573a473eb0271 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode.html 57e95d1630c5faf080731234cb0f8761e78c701a2d3fb0fba6e0f80f66e6ab29 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode_usage.html c413923e33172ae3a4151734e15c5033c96b9c6e10b7a8806042553f3290d8ce 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string.html 7044977b43a69aba4817c0a329fed65b524577076603a46bf5b39b935169229b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string_usage.html 8311d3595bea59f73d0e9d1ef7613c8699ff1d2b1e5ee6538c1ed379fab3c46a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/win32reg.html 4e24b2af6bb894845e1db1c1d75f8c8febf0864f3467512c1bc23084636a735c 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/zip.html a06c2eddfe5e3daa506b38dd15d785c559777766d7941b54a6e00bc50e4e2b49 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/introduction.html 37e69328fe5e023ade40b5d6192b2246a166864023c473241ba8bfdafa857194 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io.html d4de8e2b109f43a392ea37736ea3e23b4d2204a6935c1b985e1cf2ab66b01492 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_lib.html 93a03180eed736ff1589d62b35e6a5783de9215d3d02f232c4851dac0f074411 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_protocol.html 6d1092e871a25fb69a2b80b19ca9155fff06a286e5b715a6cd930ab5331fd469 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/json.html 16236398de79a077997696304d96c7ef2af1a9eda51714d9989a34134e5c4ada 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/lists.html 3b6adc5b71fb5955a3adef3b16605a4920ca0569a85bc8a095d95052f323fef3 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/log_mf_h.html b5bd3e02f0f1a5ba82751853db5cf1a07487cc54f8bee98f923860e216779282 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/maps.html c631d380ac2a195f9233a365aeb3fc970d41aee40ba73baa87f3d37d898ded9c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/math.html 10b6b30017c4b19f7bae85cadee05e86eeb5fa840c928988cb91199b7931e63e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ms_transform.html 47b397bc9c99031076706b7f40feec0a6f1e8fb15a1e68ce77a617535dd92311 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/notes.html 87b1a8440e44447303cf0cfc47447ff25603f76076cda06bce254cc937998d6d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/orddict.html eceaa26c48742401541285842762f61c49effe6c6b7e87ca6d42421f901e514f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ordsets.html 72bbfa833702ed528c23a31ebf4724d9a62923b6c85292e9567bb9a95bdfcab4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/peer.html 854d86796ed6246b53a40f923d520eb8c90072425813c831ed1d74d3e0ab64fe 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/pool.html fc47cba93485f4af35afafe41fec39b002e7fe1de5070febdd720a5392015cfe 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proc_lib.html 5d9d852ae17bfa3584940867cd940d397c1318e30d9660b93add14a405be40d6 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proplists.html 1d65afe6202c3b60bfb83461eb1575a5006925d4748c7a5e0c3541b1f51942d3 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/qlc.html 4a56c9f8afee0d58aa6d998495e9bea716c5739e1946804a4ac98711c57288f5 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/queue.html fa6e10f687d043f7bbf893b07817083156fe5f57d9c5b1c95fb18cc0fb9397bc 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/rand.html 77b5ea3914ed4982420782daa58b860a246574e51f4bd000df0b9f47d0e45a4d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/random.html 4cba77e11951c6b379b51fd8869a044b44e20defb735502b052d52b6b457b4c5 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/re.html 679a208c80f07726d0d03d2cb76ac5c46b094c904e92a5495417f244afe74c24 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/search.html 1d2d386326dd689382ca958c7ab5994bdc7f1bf8e8c1b8ce86f622303ed9aef2 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sets.html 4118abe90ca84c71104400eaebd750e17bf190d1965c34fb5f8b796ec821dc4b 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell.html a2ff2e97baade538213a69b01d2cda949fe7e1e920911f8ec0f66793267bf689 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_default.html c2ada48433d3222216f797a81202c689c32e7de3c1de31d0d00192d335faa759 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_docs.html 91507e6ff7f355da436b707975ee455220c415fff27cd9fbc5b90a2cd5e7a48c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/slave.html 4acf097e0d0a3c614ea8ada75abea50fb84014008436e50b655a02700dc88aa4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sofs.html 561c4d6cc67266470774390c3999ef2567fb80eae849d04e535080bdaf1db2d1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib.epub e5f96b4b1d73ed47767ab2378342367fe62072a016079bfef6f393bb1566d6b1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib_app.html 0011f0641597d047019eba941f181d5e8af5fdfe8ba463041c84bb8daea7d8c5 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/string.html 2dc35c1d6334789cd8c32f838bede43713c5c5ccc1105e0d2e09fac7e9c3652e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor.html 77fd68543f0826433f2a1e1ebe129e6beee2ebd3e38e74464fa8863ff261247d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor_bridge.html 6a02be6ae504e84c40c3ff6789cfe7d90a5aab78c881fd38de7c26baba81648b 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sys.html b0ea7b974c730de320123f00b0e6e8b23672d2e1b5a608c2a435d74f49ce4e21 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/timer.html acce30efa6935964319a0ab84a9ce8a9684b8cab75501adaa8047cbb5c417285 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode.html 093266d11e4aebf8436cd0f1dcb21f3783d48b38faaf9098d5bd8b7437b04882 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode_usage.html 0af9a2d8190006a80cb2ac3fc07e04b28077b9ebb5f5938656af1bc91b57898e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string.html f35316e12670b6440cd1f333945bb2558bff4ab4702e422bcf14e53dca203cdb 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string_usage.html 3dff4220ccbbbc1151d15c804332fd84e8db9484fa49aa64d8d622b35e55011f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/win32reg.html cc790769415c34519f6c5c320a799d615572ef3aa33d29a5958ba2623cab28a4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/zip.html 6f00354a8f8dae8fdb0a8c989a3d9133d8e535bb1df15c4e3a37f6040a024da5 2 @@ -4168,2 +4168,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/404.html 0dcea85ce92799618664e3d3b6a9e07136f0904fe4fd500ad9ceed61261606ac 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/api-reference.html 9c8eb9b3470056bfbc7b83dd66fe6d73f780296b7f526112e4f4d3802c0f9150 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/404.html 150eaa318210e1d7bb79c19034fe672945e71b358b045a66ecc5cea55162011e 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/api-reference.html 6d4c81466e66345848910342908df194f5d31f0f3983865337fe0dbc9f8aa7e5 2 @@ -4173 +4173 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/chapter.html 7e86ad0d519868e5c0571c67aaca7d46faa8447d5474a92b6dea38c9a3b89bcb 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/chapter.html 6582fde3dde2d360bf3cb23fde6d940e662c0e1eb808736a433713ea6d77a852 2 @@ -4192 +4192 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/search_data-CF5A7DBD.js 28dcacd0345168e03a9fcb693dc3375d901667dfd5a15307fbbaac0b46a62252 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/search_data-5AC9C9DB.js fea0c160ae67a5742835793d6845f8e8779107c7848cae2235a99ab6a645308b 2 @@ -4194,6 +4194,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/epp_dodger.html ff0f69a39543ed79c5bec9bc807d0a339eb0f35aa54d798f4fe46f79f0fd7cde 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_comment_scan.html 5d17f801e35a5d9c6b3118213e9d8775c629d655da4343a6c1b6fa3eb703178d 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_prettypr.html 70fabda4c913de0df375bce690f3b5c5dcd5d0897337d55cd1593ceef6feadbb 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_recomment.html d1ea40cc99f86ccf639d2c612a7b1e438967949a3fe41ac5f02d4c379e166b88 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax.html 228fdccdb803516d3ac1e47b23b1f1da4f04e3e45f20f799edb6708aab73ce26 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax_lib.html 003f81e136755215a028aa803e2d0ac3d4ea92e67535056cebf83d64b700bac6 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/epp_dodger.html 13c29a9c60c021db3014c8d62eab8399d0cead924099291a8483adebf948fbd7 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_comment_scan.html 3a00701f995db946e075c2080aa111a3421865b29b798d5b4721fdd6b4d6c9f4 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_prettypr.html 3f1aaf95a4c3e6fb57c6ed8edf3f8d526bba69dc390df3371307d23c199230c0 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_recomment.html 6db0000dc67f8262d27f28f5bdd4031d5e29fb71deffcdeb23625be2e6cd3d70 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax.html 329ee2147a8e3a2bfc9bd94561df946a655119290ad235f2899e5938f6d522ff 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax_lib.html 95dfd02eb004d0653c22a767392fa52f74398583c50ae7e7c3392eb2ce5a7e15 2 @@ -4201,5 +4201,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl.html 806390235f03d7fe4945ba771b54835a555f9cdff2b852b40db89b4ba7ee7bc8 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl_transform.html ebff678611c8edfb64f96224bdd92628205322ec2a53e4e6daec7beeed902e54 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/notes.html c0c8dbf182e1e203aba1e9e6498444981970934521cba6c9096e66cd2d45e6f2 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/prettypr.html 3954e03a0cec70955430159084be5bd1cd756c405a44f8e2b9c786e975de6c31 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/search.html a897391db79ba642450224cec3debea0166a62b8bee3cbfa062961bae1ce09ee 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl.html a8f057300ef911efba49ec5c9922744b4b9722d8e9af4b100564d8b2c073e4c0 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl_transform.html 4b3972c392b9bfd02805f975294cd3ccb2a1ebea5817e1982c19431abe9e5df9 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/notes.html 62c521d833e0e69a4ee7b122297e4b219c3d2748a13787ea83184eefa0d56480 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/prettypr.html 71c264126d4cf97d4747326f94aedc599a683ed3c34d7365c2d12913d5a37903 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/search.html 474d4aa83a20a4ce8c73ae4ae97c0f337ab4eba5fc7217178af8710e842747d7 2 @@ -4209,2 +4209,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/404.html 58a440ca1f1be03347d6ddd08341539e6b2220a5fd90b9d77457b54bb69f41c8 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/api-reference.html 05a2acd7d0613550643972ed4e362cb59bebdcbca0603a5fd6c334b20375c023 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/404.html 65bccd17fdb7d66e410caadbb04524759da12ff27880dac2bf4f9dcc8acb572a 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/api-reference.html d0d082e50085e7cc15741983bd5c1783e54a3d8852b7f2c1bff2859f23d2303b 2 @@ -4233 +4233 @@ -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/getting_started.html 983f7107a182ab87c4c074f8f33d8bf85072ab693d11fd1b433d2284b7675836 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/getting_started.html 4daebd59809cdf0cd4d0e42087da0cac2bf4df3186df89b42519603746e0c2c3 2 @@ -4235,6 +4235,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/introduction.html 1ca23ac603ad97983905663d78dc60fa698a7af74d8d8aabdbd24d481edc6f92 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/notes.html 6949463ff88ea3993a5704ee18f32cfecc5fd98398217d0b03582f29db1a61ea 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/search.html 2d17e3a22d82f74dffdbd154b386b630bd71b2e9bc04d17dc950edbf94fe2f12 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.epub e835db63c0b5c718bf86ebd50802bfbcd3dbfe31dc00742e4ec1fee7db38b523 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.html 8aa08718891b878a75bc9328154699f8e42363e0bf33fc579deaa755222fdf00 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp_logger.html 7aaf357f5eb6286fe595192bcf7a37455075fe313149ac25ac4ac1008723f35d 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/introduction.html ad3914f68343d27db057de2e35844282f8b6b5bf02a90eea19ed8dac3cac8c05 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/notes.html f4d897db7dabfa80d6befeb9b814951911b3f0e548312ff70053e980fedce3af 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/search.html dfa26aef2d6ce96cf8ca0c037a2b6c109b6384ff7aca7a67f6b7a2a9dc2951ee 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.epub 6a61ac39c0229ad001ed1f53ceeaaa745d0025324574e8863f722471e61d6948 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.html 0774b6c5d6881474c1a2e4ab51f7410c9a0a20e8b10b638bfab106f8208a8f47 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp_logger.html cbab2e5bbbb452848cc562ec9f065ca65fc833ac1065e8fbb31ad21e3f31e17f 2 @@ -4244,2 +4244,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/404.html 4f8cacacc8004b65b612ac6de63698bd5de68ddb4b72179fec9f6f83c5413247 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/api-reference.html 90eaa4565ddac41f5315600c445a43739b6c4206624fcc1afec5ba9746b27330 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/404.html cfec6f022398a0087385f47e699a855140ce889a339dc97571be0c769a1d6afc 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/api-reference.html 2566d7ba5b6d3661cf5e1b70fad5d5d5c995cf71249497ebf7d4b6297740c483 2 @@ -4250,4 +4250,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover.html 0eba7f02307251866708a7fb5b7954be07303a644ecf2e49bae8c9bdd1bc2450 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover_chapter.html 73e8ea5f7cb50a7f88117dab30e15817cd175bb73d3b3d9c46820f5d55cb55f8 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof.html 2c7935857d5461b65439904ad6811041ef7efbfbfb45b0ab6d39bc601b5b1cc0 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof_chapter.html 730140b5d3b19b9704f69f2e7555643245ccfedc970631be06c9952a0a5fbe8e 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover.html 36b9d967f39fae7572c67cf6217e8180c1a58678894a5c1a7802ae36b7c53274 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover_chapter.html 0abbb69645658820f4d00b788da096eef27931bcebea5328605f203464fe257e 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof.html 268bd068377de95ccb57343c94099a38e83a679cfe7646104aabcd1e54a7895b 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof_chapter.html c2081561ebefb31d06df5afa834ca4d1995d9eb9909770564aa88bd51763b801 2 @@ -4274,5 +4274,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/eprof.html 76614e7c975cfc5f66515480e9f0fecefe2666abcb0c0df3f8e7520332e6c4b6 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang-el.html 8fd4bc88405f98d0404ef91370bcbe0510d9b9a673082c79e8d9ab737fd867ef 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang_mode_chapter.html c55b9b726bc2a59ec31e6b6903348ad53fe2041e1188e90f3c51b32ff22a9879 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof.html 9905465657bf1356057cb911794cf671bcd829b022e894a57f13266f8bc90254 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof_chapter.html 475246e1eedcdc7cdddc11b653de304ec7c1dc87b32189cccb81ab5484f38fbf 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/eprof.html 87d1d08b0280541495d7ec000f39e8b45b12d4444a36739b38d062529c8cee33 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang-el.html 9c513fa3fb863e7f3dbe0e22687f08360f4170cb2a346a3681ceb4e673b48db2 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang_mode_chapter.html 746678096afa025bd9917ec532582377b32fd3b50c817380eae2b79aed0759bf 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof.html 1c8cd0b69a61a6d4b4abb41f4850a58f9d9051a5abf42c72bcca358eee69937a 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof_chapter.html 9b2d39a8005fe6e71df9fef0ceaf7bd1730f98713e6b012e30da0bcc49527887 2 @@ -4280,10 +4280,10 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt.html 36b84e0eb46435ab2c56b46940f818e66c2ad2c2da86e64d6bb61ff353309429 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt_chapter.html 4dcb8023bbce82b954a26a593f5e11fb14e7f7b854202435cec7218da3119336 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/make.html 87f5c7c11cca5ae4dc8e32ddf25bc9ba9bca4b8a9ede435454d42f7fb7047c4b 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/notes.html f72271e3a7acb25d39d85eddd6116f4ee225f9e2328d5d118964408e92e26332 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/search.html e8537454871938afa3ea1363616c1a70837ce3f4de992e9cea0c1f11d87c85cc 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tags.html 47c2b62581856a59d5fef167565a9d0568a4ad090ae6a46ef3afcb405043a065 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tools.epub 2d4605f0a0d67a5072cafc20929a5667103ddb9db586b6146ad8306997143258 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tprof.html 350194955b1cc6bae7b7f8997342c04c295dd51f77449eda5e7c05465e4d93e1 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref.html 3a19d5b1be71d81b92415e6d327231bae2e3fe9862c9d64c3e835598c4994b70 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref_chapter.html b0006d0e9cf2b99608d643d0267e6c9b1cbfaa0029e6887a9f40e3bf0ef776c9 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt.html 518cf2e71b43da4eb1c439691dd2f3e3ca9f438534954a8a3e4dceb418be798f 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt_chapter.html e1c633fca7fbd2ad260d6124ea4d06c8ef83105a43831a376d8d60f30446d6f4 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/make.html af02137a2468eb4697afa4e8766b5f17ad7600784dfbbb1eb1b02444fbbf343a 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/notes.html 697635786dc128ecc221dcb4f7d68093101a3f1a8add0ac90f44b4048f8a07e0 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/search.html 7fe52f85ad20af1ca32b5bee12baad9d69e4f3db11f0364bb122566e48eb81b9 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tags.html 21b26a41b41b29c9b322a495b420e04ba6a94ae5688d707cb54ad463ad7da150 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tools.epub f9fc9155d983b18d0f8b9659f3bb51c13a004c1cff2dacb0c80184c1b62d71ae 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tprof.html 381422d7d99f7d6ce87c87f7a2c3c75fefa119506265c8715174b7ed89df3d55 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref.html a8aeb2fb00adc486300ed4f3b05803be62620981ba1c37acd4d4a92ac77977c6 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref_chapter.html 76ff370c4a029c674b5670255fb877d64796e34b0e101fb4a56ef3187222806d 2 @@ -4293,2 +4293,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/404.html 01bfd5afc75fa631ca24a9a8d2aefc3c4f0d397527631d039aa4fc1a7ae73577 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/api-reference.html 1e354c77cfd7cfd97f6b09df07f76f8869715616c480db6b94d14ee97bf47d82 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/404.html 6f5f04b0f1224ffcf3e120257c5be16661c7e57b61f4e725bc769c33f5122367 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/api-reference.html 347d7265a5f6f2a8f1193528e92240c5d64c281302bafdba30c40ed4081abc8e 2 @@ -4297 +4297 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/chapter.html bf7212a56664137ed5f037ab22b198aac75b390014fe14f18ca2f7c31f9aea03 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/chapter.html 1a75fab9cbcc48f0ddc40079964929c359a163ede72ec7a4507d03ca4d556e3b 2 @@ -4318,2 +4318,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/gl.html 590650530222d7d4aefc0b13a03db9b8a236c7197949167dcee51faa26910943 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/glu.html c1da00fb00176d1a0c5acd6a56d12cd775d28f73b89fc5fc7cefa74348d4abc3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/gl.html 28f717c63c2325076b918a35c797ac88681777292726762822a7532f05ad4580 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/glu.html 3a96760bc789d9580588f416f712c0c08d854d445a63dd192439ee5340fe9b31 2 @@ -4321,239 +4321,239 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/notes.html c1c52d91876f763b2c3bc870625fa100b2ba25f034bc0c59093dbbb487df0c73 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/search.html 282f2a9efc2e6ef4030145cd4f04bb13e2e3b8e7ebeb091e02d38ce16dc4295a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.epub 9fa6be2ca8ee36856517cca2511e513bcfed46e1a921e8277ce0af94472dac14 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.html 000bf9ef66cd945af384607cec097d32d3e4282f93f6d3828b68093ef1bfa03e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorEntry.html 94047a04ed8d119e63fc4993226ed96d26e3208713227e32483843c735c5d909 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorTable.html 549d99437c0e9d1c321030358bc906afc30a7e2e37da1a0f64112b0bbadd8b0c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxActivateEvent.html 84fa08fb5278ac9b6a1cf9d304ad5fe886fc242cbc473d3222e30841acab327d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxArtProvider.html 1adc5a3492c917dc070236dddc45d2fe213093c7fb1bc12eb8b7e8bd77def5d4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiDockArt.html 517ad2ea9754e1083418238f23ada1d74b42c1bd215b4114ccf0e5937e3ff375 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManager.html 21cd9349613983ac13e92b3cd9c941c1daae6419aaf41ec7200392b8002caef6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManagerEvent.html 8fc9678f278773973f42f3fda23c6fb2e55b310774a70db3aebeec1a4ee29895 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebook.html 77bf169a0549260fc14bea782423d3597fb2becf1d4cc999cd26996f9ba663c8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebookEvent.html 87438ba0a2f13e153102210877ee886b18f063c5e1b0c9a645dc4be98d6079d7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiPaneInfo.html f4daffa754398362f1333b7b6466faea70a062133e899822a5effff2decd83b7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiSimpleTabArt.html e7a2677ffc5cf114ec94133fcc04bf48c375d53169f3dd269766db0541b17efc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiTabArt.html eba6bd0b1e681c769a069f8a665999d7c5dae36aba81f23670521d46f6d7327c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmap.html 814d3bdbb17ecdaf800ae5fd171fd5df0b3bc3a0dcde6cc98c45de0da9b9731f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapButton.html 148865412424f939c3b409e2b7479c8219793064d281d312504bb94a119d3593 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapDataObject.html 367628b18f345bb68dc961edb5d37114b33335c20644278a018374be08fe4dfc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlBase.html 5b240917193010d35999c67b2ab82c2fdbe2cb1ac085e814787b924421358e73 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlEvent.html 301f77f8b14f5a2d1056e3dbc1762104769d3858826da8c58adae776956b9fd6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBoxSizer.html f2d38a00522526ecff7101d43f2824edcd8cbe24bbe87a6c036881e88c018dba 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBrush.html f22fc819a2cfedfd4d1da14afc9d9d888d6c71c27c84f5a72cdfc0b792713f92 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedDC.html 69596904f00ce5bbe43d18e31072f10ba860c898e27c317f7e9e8815c284a644 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedPaintDC.html c06eb7070e92f1fd7fe00d57ae04f3ba389dc77222501a474cf8d8b8b3f3cc12 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxButton.html f556fd1da0dfcca156cd79218c22d287898536bef07c39cead03e9a69992bf0f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarCtrl.html 1ba954ab2e0ed137fe40b8cd3a0016cfc1707066192921465fc0ab13ac1ad1ee 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarDateAttr.html b175acedf81bd3171d1e888c0ce2173686a8682c4d481365026679bc7e258c1b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarEvent.html 77b6e3bd389a85f77204558399a952837789cf33ad88591136b46035acf0f686 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCaret.html 16b669d927e7914f76214b827c80722841ce5b4162adfeca442998ffb37d2bbc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckBox.html 7c436afc370e69b6778d5f28439c3c7ee1eb5fa06a4ed9a9a2058a8190c33d4c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckListBox.html 9c5e927c9347b051c0c3b95a0cefcfd4d149c64370d5a8991a4ae7233f7eb691 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChildFocusEvent.html ae2bbb8f95f2af463104e99c7aca9fd1d7b9301e789199c275dc1b8922cf16ee 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoice.html 1567e7a6649722f408385e750424cf0e34822fc7721c4351e8dbc1f33956528a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoicebook.html 40fac9fb065d428c539c18813033fbcca73030da69d1486b5b0df99cb4077964 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClientDC.html 5ff49007aed4d18751d61ea0f3bc2825d39b56b64f5ef79cc269fdc74956eb5e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboard.html 821e8ae01158a83703afcb4f2d8530f5f07ff3b2ad65c17ac0ce88b0654a719a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboardTextEvent.html 499ef2dddb0153c671d0580e8760e2ea8b4bd9854d51a01244ce4bd3b433e07a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCloseEvent.html 8b2830402828b79b963a2e87fc91f8aaf6f66db921e6f72ae63a8c8068b1bee4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourData.html 38d09ced375204f18cae1cbfbd8a7a26041e847160dc107a6cc1fca771dada18 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourDialog.html 26d86a7e374f16b91151d483fce36d4a1c0ecb3a47935233f5c3429c76f4c826 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerCtrl.html d50b2351e16b7ca8824ec8bc7bec7fe44edb88aebfd196fb8cda1b8904808f16 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerEvent.html 6e04060a68205d6c144388f08233d4d721fc2ecd12461e97bebe37446f7bf4b3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxComboBox.html 172850c2315a43c1d042b6fd8a7741d131126e66810584f1ecf39b33ae70ca79 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCommandEvent.html 55e8475ebbbe3913f485e5fe6f329478a08640503c27e0ff072d7a2910462c45 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxContextMenuEvent.html ab66c282689f3f7a66ccf88015c8a93a0bff7dac6b485fcb8f36e63989709ead 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControl.html 149a798b47d2d469224e193b6b435ac6d48e612095e129d3246dcbacbfede551 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControlWithItems.html 7f6b34ea23f554420f8e57cd65b21fb286f755db36ef8ca86c6575d99c008c0d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCursor.html 3e0fa8c2ad40fcc6186ea7ce6b9ae004e9cffc6f23056d555302b7cc562d1fe7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDC.html 5a8a7ab8d7b993a8753e3160bc10efaafe1265076dae97e62eb6e6294f339a24 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDCOverlay.html d596de114944050661dbcd0681953c9fe02fc76c047022dac41fa78962f89683 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDataObject.html c5cdf94c0ca7770100d79165df0d1b5e48b147735dc82c491e798de927d3327f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDateEvent.html 1de69134848aff4a5b3d5dc833ade7883125f080ae7ae3e8df010b7d403ccc00 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDatePickerCtrl.html 6756ac2d2ced2e51486d7ed785586aad41bcfc7358c491a30fc205a2295fbff2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDialog.html d12c032161d0aee25886709fff5a6edb55791d4fd1ec5f5b76c2e418df610127 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirDialog.html 846c2dd7a5752c2d8d8bdac3a41a97d9b0cfabf80c29710ecd32a52c4eee6eda 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirPickerCtrl.html e8a84e51db1beadd06f6a24bf9f6928203087a15b39a28cebd17f48c05bc1ef0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplay.html 7332e3161f0ef43b4d7994098fe2bd6ecca68469c0c859b2be0dbc0139435736 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplayChangedEvent.html ec1d8b1a03ba38f69fd33e690d77e56ba87b76e91db32a070849fe0fdf4f4de1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDropFilesEvent.html 35a886cdb23be745471afecb81d7c451ac56d23d658f78ebec83be2bae008bd0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEraseEvent.html f37344a63d29d7635cfa3ca3cae4eb653d34cc7abd0965ff44f3ddb13602b863 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvent.html 359ecc6ff6f931775efc05ad4dadc609a449abb9d59c569ef313ce29c20c747f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvtHandler.html 6f0c2ebd7f84b1530428381d7ae5e6f0ea94bc183ea1fb79348c6cb519917eae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDataObject.html 2041c666349dd2bb18d00aeaa120b1c22a5a21f34f2983c7acae4158458f6fd4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDialog.html 5677d0316991419e8af79383ce048b308fc6a5358f55e1d98c0cb7d147dc59d9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDirPickerEvent.html e24df9210bf3b7af0093f8140c5a85a923f2ef1107aaf7b237fead5c229f2933 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFilePickerCtrl.html 8f9f4e394d8bfa450a154ece0b5314b873b8d2819a9bba22c23af9bf0a75ed34 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceData.html 3f173d13edd85aef70aa0e753a1420e61e1c938e3e1b86aee54507de220f52f9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceDialog.html 24f13cecedc43d7a5293cad8130d89580c35598afd906983c090d1ba08ac3033 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFlexGridSizer.html 4afb5da9a62f417e7b6a1bda350dcf3d1f079529ea053739c3eb543eb5505c08 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFocusEvent.html 84f95e2b7c727721c074ff74006f05f012eeaec1dd59db04b74f682b2a437bb5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFont.html ee8b9d3e657ba55ac936d4bff4e16a8fe2002ac32fee1854b88201b59d70d787 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontData.html cb6dc503e2949d55fe1f1524ef47f341a2022a0e7a86849594a5ba85606ddcff 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontDialog.html 97bf56a00555f55021c938a412b2b104c40810aea54c67768371d3da1f1469b6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerCtrl.html bb401b288aecb39b7356a6c3e04dda82240551fece3f3290a88467a57a46dbc1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerEvent.html 0ef5ed30c341e0ff097e880438fb2b781610fdebf24b2c6feee19fb6a1b70a4f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFrame.html 6e54ac2ec6ff2447ea63b0d27392a89877cc249fa309ad4e11ef70061261f24b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGBSizerItem.html 976fc67b4ce418dd5aacab4ea044026accd43f6195a92b42753d9596f7978b84 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGCDC.html 4eef7e5a15723a256fa720c7dc28a3fbadd82302780c75ea52ba7e979556769f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLCanvas.html 6c6b91e42ae1a16521345717c2a18e7e4ccbc162b3a40b5374ceaaca9fab026d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLContext.html 5db08969438d0dbac1a824c5dda3eea3bdc2434138568685090c95c490ccd9f3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGauge.html 6808d2f5648fbc02ac24f89045bd90a74d3eb9e4ebb56ab326c9fc86a648a37d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGenericDirCtrl.html d7a68f948b57d6bd57f0ac1f0a6305bc8b2e83ae1a8eaa82b681cc153c2a98bb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsBrush.html d6cb5537072af667a27486b0749b7198d99d8e871b35bc18a987f82d7099a0f9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsContext.html 0d4822231ae80e5f2d1ee0f07cc984ea13347f6679ac5246336db0f0b96e8708 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsFont.html 8b20dcd220b3c3ce070e8c191ec54064da81a2300f98e3960e47ae85cd7679fb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsGradientStops.html 02f65e5192ee9bf407e3a69896056f1f97498b4583f643030744ddbbb262f564 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsMatrix.html b32ed3969c4817b204cf154779afd5ab7c0c1b311a0dd043275db497066b7d17 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsObject.html 2cd550fa29e9093ce526d5491782aa25e1a6bf996441370b7b9381736ecb20c6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPath.html 088d62aad03454a850e6194dd74b3715b3732ac76f89471e4136a82f3b74bbac 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPen.html d70b952a9ee0b78d46dac2d6cc16a7fbd9eff3cafc877dc13def59208c8d1240 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsRenderer.html b76b13cdfce5fd60890d68e64c2208d261da1b6faf3da3bb52de03da9641ec91 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGrid.html 6cd10945234f5d72efbdb5a1849a4891958474457fa0904de0d1921450b4c1e8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridBagSizer.html f23089b4ca336dbdbabcfce6627c1b51ec4cad2568b7d8d352ddca935b7e26aa 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellAttr.html bfa6fafb8ae08cff8521690fa7c49648104ad62219554eb12c8adb2ac2dda397 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolEditor.html 08845fc3448be533c6a1cb7449f032af98120b63f2dde911f4e19551f01cb302 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolRenderer.html 3d83611ad616dfab58fdec24026ff386b36ade3c5b7f0ad6145c67141ea12df9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellChoiceEditor.html ca328e8c8e179fdcf3227d91e5870af5f483c3c31afd356300ba240adba327cb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellEditor.html 9e90cb5a00e48fcb79b285947be780301c4005136a68280754e74c25a57d5140 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatEditor.html 4bb374e8b56213fe03088744295ea27c3a82e442410eb100f5f104d7741db8ce 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatRenderer.html dca0103053db68b2d148548fc3de54c98330934e16ce6367b6a548e9abf42122 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberEditor.html 64d30e9bb86e4c4db066b6bd159b95c9441a99c40a47926f09ed8a1cf1f96424 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberRenderer.html 71932d339a333c2266b629acfae2e1e786562fb6126791d0bd818b631a2b0b3d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellRenderer.html 38bf32d58e3279077377ef0faa08bb72ddb2620f096edcee3d38978ab0a3151c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellStringRenderer.html 5eed0fef73ac83dd3f2ca63b62b5fd56bb47ad44c5c5311d7d7427f471a9eafa 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellTextEditor.html b0023f152d37747f0c44fdb5ed228109ef5f80d9713d2f006c2a9d1b9186eb22 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridEvent.html d010d61ea5d3f439e37985efc3bba02a6a8b49cb2c6702172367f21b21d9ecf8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridSizer.html a7be2d37aeeff958d7a9b4ff92194e3e36b1a76a221b95eaed51e777d0fcffa8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHelpEvent.html 61a12340115895913d9fabb667888e10cea9e7fd6de856711d376d197a53d1c3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlEasyPrinting.html 9e4578b6d49d08486693b0bf056941817da41d6260ae3fe8488e3ccfe60b84c1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlLinkEvent.html 1e83b89bb230033480192dd9b9126d3843b9ef0a347b70970a9071bd1f8120e6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlWindow.html 815b0d220ca2b7366aae4b60e4c70af13066becb0ad7eef3ba4d35a2aaf157be 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIcon.html d71732aec4e37be32d685e667b1bc067ee74a9c6a1aef58897d6d3da071c7737 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconBundle.html 90a0a755ed3901a9e59c54918bfe48ec6a77359610c1185dd3b674951a0d5477 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconizeEvent.html 5c675e602194d6f74fcffc20deb6fbb53d46323c1de85a9354b986eb86e56c80 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIdleEvent.html c8c4c7a7d3f7ce257995cb355471c00dbaff105a4171bd7ff1ce4870127a7ee7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImage.html 5d00776f9a4c97fba7199e82f5f23887803432f6bfc2a27e5a52241a1cf0e52f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImageList.html 2f418cdcefbab43b800d0b22c67694fe099d73075faee664cb0bcdf2b6f7a210 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxInitDialogEvent.html 4633d3db5cdbb727edd43ebe8805b709822cf24bee076001bdf0cb899c3b05a3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxJoystickEvent.html 622e43cf36ae3270c550546edea34191abb8586d258ad15866d99ffd7746ed77 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxKeyEvent.html 4aded42759c3931687287f8f571e9c71036f087252189d2675e4d0809c394271 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLayoutAlgorithm.html 211fabd9f61246a2ff2ddd50e52c3f066dd4c435b2fbbc2c1bf20be44fdcf522 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListBox.html ce600beaaa96ac9aa3a1cdb5b702d3445d5cade215f8a40dae6f10884d21c15e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListCtrl.html 0aaf98b4622569c515dec81d3fffcff366eab311d931b228e0035363887371e1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListEvent.html 9220f56a4b8b0167a624ca192ae3e40b34add9bbc696043091189bc90035b657 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItem.html 276d3d3c179abf975b276bc64cc95c3ca03c6bba6e40db0886747948749ec4fc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItemAttr.html d6f2fdddbb6c56d232428d79e887d3568fd84c859aa998684f6f465b1d210142 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListView.html a016ba99147a99eef2cacaebff479763d7ec77e205b5ebe00ca46a5cc68637b0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListbook.html f91294a881d4da502c2c5370707fd58d4441ea0c415f05aabc18022e94c04bef 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLocale.html 4eccc6d1f7bb1591ebbcd5d2d171cc4ff081c9db51f187f8707be8bef5e578f2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLogNull.html bd66a51acd2ada99c48575c312c99873fd091d249d03d799f66426c679bcb57c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIChildFrame.html 7363eb64b13eb9f4763bfa297a7e75a4fe1c8e9b4b5613c138a433c01fef849e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIClientWindow.html d9ebd3461a307e85c6d76e4ba16e295e026ce690b72bb3b636ac471020f2cdae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIParentFrame.html 349eb5333997f56ccf61459e93877a63e2cc7d0fa812b55b3ebd95ca4de78c9c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMask.html ae3a2af077a0024f53d49b2a09b2addaa67229aabd6b4448e9dd6d176b63c806 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMaximizeEvent.html 05b8ad98ef25024482f0e5ae9c8e3712d205f066058b1ba45605de8cecb02b8c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMemoryDC.html 150c16eb2b406eb2bbfb6e1c9f16feba9fdbc6061bcbb3c60aa4c9735e09c654 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenu.html 5c970b383a4e213dc24e5f74a3d223155688671f33aef5c28ae20802734b7d28 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuBar.html c5f642aa88cc4b8fe4164bb5117b9d1b39e94b93e2c51aa0247c54ebf9e044a8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuEvent.html a90a42698be8cf264ea330241b355b5a7f3da06e3b83a0364f94e10bb2afaa39 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuItem.html bed60f7cf0addbeb0e396a6812a1658e6380ccbf6aaf74f7be8f99f450fce452 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMessageDialog.html 9ba7e92ce0955c7bd964e1638668d50a4cb492f919ba00fb2351d4ab81ac8259 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMiniFrame.html a3ed8e4a76b7263fddaf303d687dc150c6f36d2ec44030139adaacf8270ee1fb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMirrorDC.html 8e3513474238e512aff025008616f70ebb0926b131fcce03395453e9c38ac2d9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureChangedEvent.html 76df3a41180ecd19a1925b55d6e398d40d12e016d4abdb075d204debda755ac2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureLostEvent.html 0b48c0d67f7ddfa43130910e744daf8fadd46ac9ac69b35833d61abdcea61f46 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseEvent.html 0af754cac1f82a6c2a7da4adc8a3edf6f77432a9421e5d63d0133cf1bf21f079 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMoveEvent.html e5d3c034dcd223fc5e40b1657528806d97f395bb27556c661153ace48da48a83 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMultiChoiceDialog.html fdfe9278a149d3148a7124abddce25f1ceb1c54d576dd569ff2a401602b230c7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNavigationKeyEvent.html b48366b3dbdc8475e4c6dae8c4e9f1b393804eeafa29db2aeea39cecd0dad2ee 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotebook.html 54de8c3dc096ce52d352ea8baa23641762a0dafac59bf5a264efc7434d28ef0e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotificationMessage.html 73e27839dc460f4b2b8f0e8f5028cf622328cd999022f8cf1c816b6487e0fbf5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotifyEvent.html fee14e3897f8bab92be6616a6ea3632884609ce7ebe4cde8a38298aee885a413 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxOverlay.html 14c74cb993398e39dd3a0bbf479c2bade1dd061e35d6a7969bc1f7a57b84cd25 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialog.html bee02e791e5bd6b363f7bb438f98124d9c7e458e20a0c08e2db0a85ffa78d051 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialogData.html 333f7333d034727ae56b30c060381b37d78d13e02ec2655a79edb89bbbb6dcb9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintDC.html 7aafd908b100312488aa7b587911a4c36cf9f83242a178e1f141f7b10bce3bae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintEvent.html 76cc0298d35afc6c5108d4789eb7bbc82ea00c763f5c7fa821c1c26007dfdcc1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPalette.html fc9605828b488439af98226ac311d290a4825d2c8f35a025fd450795b1efbff2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaletteChangedEvent.html e7f5d60a340abdb0b16490e5d37c5ecb628ce62eb566caaa4d9323a87d8ac464 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPanel.html 3c0acbe9ed4212f73a25dea0270fb4809335533fdf0a637b4d7d2a1018b1b484 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPasswordEntryDialog.html cbc0b7207512fa0f78b1c71f2d87d8c231dc711240416a6dd8d01f06d0a92bb0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPen.html c768cd879a342ad6ae3770430be83f501a3315adb734559e0c523342a3519233 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPickerBase.html 62511a134c345cae3adb89f27cf300dfd862f8b2458671e5171a1d5c31f4718f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupTransientWindow.html 1b68f6abed37c307947d13f8e0f6544b1fc5a6263823f113f88f82666823c0be 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupWindow.html 344ef536c9c197d813dd2b326110363d94d6a69edadbb0eb0d625590a6fc63b1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPostScriptDC.html f0b919433abdb8928ea70eba2300fbdc2adc18b33a4c2afc64bb99e86c1449cc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewCanvas.html e4554d0758c51a59e8fc3a0a06914117f2715992e5e7d096ebc80e443c502264 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewControlBar.html c6cc4f90d637a9595cc97e907decebd526218a8da14a495a55891a138bdfdbc4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewFrame.html 5b6cd046a9d0f5ffbae975ac77d760702bb64bab88765c1896320fe382a0f62c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintData.html f8da168cf655cbc9522d745fa9bbc1a3c383ccdc01b620a813ea8a653f864df0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialog.html 586e43f68996e6652cc54c0ba9dacc466b4e20da6f50a72cf2602615238142d1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialogData.html 7d362930bc239b3190bf5deeb4670a8e8de9d2012a894b36d8f2913ffef73875 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintPreview.html 2791409101e4cd9545723fd271b6a587395b1536fb8b5780717a8ff2fe8d5c71 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrinter.html d4c9cf223782080bb9b89651fdce2a4a42bed14f9e7d47ba83abb257a90db9fd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintout.html 133d413b0adfeada92e6c7e0c0626ac51be469c6c778782b794b8b401cdfba6d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxProgressDialog.html 33c290a56901babd09d608fa26fce35cc87723ee6d3be837b1158bf11e493230 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxQueryNewPaletteEvent.html 5dfb734aa0c628e3f7d15b89c0264b5535a80f974a9da9d334849a51378e40ff 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioBox.html 29938a48db88968c149066355bc9331b08de0cf3d4edc7708b5db16a966fa55c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioButton.html 14a281388bc9ab04d6e611e999fd82723b01239fcc2fd19d6722d305614e4d75 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRegion.html b62760cfa8eaeb464e3396467c932688762106083b39da4d702527448bf6ffdd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashEvent.html f97d45264b27cbcde3ba9441f35c699fcde1aed39d3a5ebba843eb79f101a4ad 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashLayoutWindow.html fd68bfbcc3e6969ed42deccd388b89795550e8239a462fe7bbf37a7342e8ba2a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashWindow.html 8ffe18ac8ecd1e292b31d119dac2b7783889cb3a1fc8a6b513227fccfd90d1b9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScreenDC.html 20d965ff3d7b7cabb9d0b434e1121eef7fe0fc8cddff7c2bad59b18a14e51831 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollBar.html 65003896f364fb8f87741efd40c58f5ac453bbe1e8001d662ad9c5034e1c8235 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollEvent.html 7bf259f86854c04a678dc23cde2d3bbe4631fefc180ac655efd29eaefe16039f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollWinEvent.html 522f1fb49a755af3b24ed997c295d42cf4e0391eb79d9e03c04efefdc20c30b7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrolledWindow.html b7be2c9303be77f456a3c18873bb8d5e7aa14588ef86462f305f3fcfe565bedd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSetCursorEvent.html 0c783ad82018dff050e777c9eada9741023221d8c2b96990dac03b7aa9c3b2eb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxShowEvent.html f12313f37e97b1b47d9e413b114fc89306a528801ceeb97d96d82037f013d628 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSingleChoiceDialog.html 0d3401b07785c2155eada8713181551299107177f5e675bac2fefc4a5a3c6bae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizeEvent.html 2eabb9a80ea2faab725c707bbb5333fe05b8aea7deae229b280adaadf1f73252 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizer.html beee73027e04223a5ce6abd1944716062e425fb587ba0503d3337d1d51a2db21 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerFlags.html 72da0fa561904dbedc3af2498d041f0fd1aaf629bd9013fd9352bdae27a873ae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerItem.html b20eeb49539d88ba4552f777aec8a79c5195a64757c2d0acec08c3ea7f916a1d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSlider.html ed90bafc9af98248b064e2d814094c47f6dae1d16cdcf6b9e9b557fc340a793a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinButton.html 3d64388fd4d56e63b4c1c0e5c813b0add4f4b7266d7ecf9dd1b560be13ab18e7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinCtrl.html 173e0b375bd7800810e8c850abb8f40bd1aec8bff64d0b8f950c96fada333c03 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinEvent.html 855128926695decfb3be7ab4cadbb4295117ca26919cc3619fc657ece7db0ffd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplashScreen.html fbd9630b66512832a7de2f70ebc3662ac6312000687886690c20ed949370393a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterEvent.html 8c794d2b42c2ebca811202203655872bb91aab65ae7cdcc923b385d190318549 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterWindow.html af5f30debbb97df2a0aa6b6627ec3013b829a800c598eaa2be3dcc9e4245c1c3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBitmap.html 2c02692c792fab37dc6644f64d7b0271885cbbaaa823ba44f6fd2fb12fea4e68 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBox.html b13ee2e2bf4575aa9e4f008a6efb774c043c08d9fd614ff088c5a7b9406aefe4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBoxSizer.html 686e6693fd176e26f9065a7744f4dae6ae4d55812d15377c658a6d43114614a4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticLine.html fb66754d69796f597d94228bde2ce4e69ad3559415bf32aa34aa785b01497417 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticText.html 4dd7a23aaa2ee0077260e48ad8d993806fae12153f7dd3c7bfe3c7e7c04d9fea 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStatusBar.html 691b53d8798633909032972db1a1825862593250a5b1ac31df15b97ef3656422 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStdDialogButtonSizer.html 6341c16d422a2e83c60dea3b4054cbb2aa160b10f378ea604dd2cbda383251a3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextCtrl.html 4fb0c883bd7fdf72aabbc3ee4dab523c7a49dcd5f9b94023dd55b09ca44230a4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextEvent.html 9f8ab42692ac894aa7184882448226eef4cf630ffbad1778930d51a0653eacb8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSysColourChangedEvent.html a8c084eec698a93be3184b844d5989ff1b13562f49edcff74579ee74add92f54 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemOptions.html 563c274cf3d307e2a4cd432a847d67600ed1f57a1cae27064e804f53527a0d31 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemSettings.html 759d1b55da9d1914f55f473da26c8cd43350b397eb1f6d198f5cb2558e5e87e3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIcon.html df53a9a1c4e661d7c390df25ddfe7eafeb632d208815e0866973b01d1b594b1b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIconEvent.html ddcce5aeafb0e83b9bbc6ebdc9c6bff5a9c11dcb131b6f11fe1cff20428ff3b8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextAttr.html 25c965264f75df519ace0c3ea956393077d74a1d4cb308e6c9e8fd6f9c993502 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextCtrl.html c346c29e11854b5ae24073611d877bd65b6318dc6c41acc9ef887e951fecd06f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextDataObject.html 46a4b76bdacad87b74a60e3c65e368cb6ee5f3d740b936a9eb684e96f1603276 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextEntryDialog.html d89aace213fc0fbdfae88c69fcae6a5218f30851f62e46476d645dba7d465e17 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToggleButton.html 0de62c6d1c8573cf2ba24a261f99484a286387793c6cef6456e007c9f052123d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolBar.html 000d562c617bdfe7c25b04ef978a81a9877dfb1f891fb6840596931f9add6d85 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolTip.html c315645ba5db79f178c80dc024a97fe8b98515f403fa788c6cbbc3f3db12ae6a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolbook.html 3be1d1645d5892cc029ba720e17af3a052e1ee7d57146b053e8a64ca9e1b9c39 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTopLevelWindow.html 1c1b65ff1c08352513df0bc54b73c612a3a7f6ce752cc0ad8511097ec90eec16 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeCtrl.html aff77def5e0ea2e8e351a59d97e9ecae5007398a72b30bd77d163bab7f6021eb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeEvent.html 07aa468e8abd1dc6c1cfa3ac09c31ce36f2e7ccce0dbae42fef074e026d9a7c0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreebook.html 64fb60b262c0c3bacf3554dc6f02dc4ce96cc4775cddb4687ff32508b375540b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxUpdateUIEvent.html e9279f00fa27acbdf3cc3a9afb0e85266869e1cd0fb906bacf2bcd07737a3565 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebView.html f29a0ce059e806a4472b691d843a6ed89f0d7e53f2a4ab4339edaae36f92fd17 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebViewEvent.html 87b758cc48a1b3d47a0dd6b48a9dd66997db15095daa7440c97e1772af4df326 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindow.html 48fbe6fc62828218ebfc135e09a00d736e787f2f6765e716dc437eb6284f11bf 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowCreateEvent.html 6b39205ccab80b369e2e1ad2d64aa0b1eba900c8ac042f746ed414502e8d3959 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDC.html f563dd9dafc0403e36a444dca707e717b462ab0b7cedf0ed645256d3d2bfb2f9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDestroyEvent.html 071730c0ddfcca04edbaf5103f512ac8f7009c2e67597a3e0155d7a5a4f3cf80 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxXmlResource.html 1b05f3e9c17cd37676614cdb2082c69c6c4ac3851145d9874f0d4fa3a2df287c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_misc.html 47b2bb232c987af5ede45610514ee38150f6dbd0dd766d05a846858aef2c2ea1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_object.html 045f6eb2d1da272f603a00df95bbf48d6fbc58de72a126a8ccbb3abfbb0a5051 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/notes.html 99d8ecf68ccba4076715c43e727f00a96b667622d5d2485cf0cf241ea95af9d6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/search.html 5a2203d1b188d33ebe43b4633b038120508bdf73830eb96364bcefbf790ff589 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.epub 50fc18f679573624078171ad630eee8b7f84a11cf32774bbfe766436ea097e52 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.html 522e2c7d1a2c99ece4e6eb5d347b4d99da93811830aa2ae52d280eac900917e6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorEntry.html 8a9ffc6483f775fcda25c040f3170805035948fff9593a7ca699a1f33ce23509 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorTable.html 13c616c84a11d587414284c446afae0c490c6388d3806a3a865ea61d8f206ffc 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxActivateEvent.html c54de60e5552483421f8d4d438c5bbd02e477fb451ab7c221799b09e04e80095 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxArtProvider.html 7ec09ff4354630eb65d9dfaca2af876a84af74dfdd95f3c3803ebebd207740e3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiDockArt.html c0746c330ea2dbc361da586cba39a87d63d060461a0eebaf865b40c454225c89 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManager.html 2ba6aaa8466b7dac2b1683d49b6fa3c087d18fdabcfd023d5c7043a940c86fbf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManagerEvent.html ba2ae156d375883547c81561d76d824181cb88519011b836edc86d3e2bea1cab 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebook.html f0a1ac97bd1be3a89ee6d32ad3e3dd91f1ebaff1fa5e5694764296e22b6198d2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebookEvent.html 3099fef53d6556725aa48d9b232294d22aa0a072bf88cafd118e7b49cb1b6dfa 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiPaneInfo.html 4475956f354dc378e518500dc271e424111577fcd9eeddb65887b40406e1af28 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiSimpleTabArt.html 224df53f982653ffc69eaa317301c0ab8fb2b6161e8b25203b95a15b807e46f5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiTabArt.html fb1f279de99ad81a3f69f82342bae2bd38040ca81e1e1a428c8f808383074379 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmap.html 074f25dbe8a22d9b0161ee410d13ccb4f0b8cf3342ea7ee8bc93b3cb6ffac73f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapButton.html a0900fb40fa9cd1cf191cd5bb36d8e9592ce785d625fabf9da566854ec92bfbb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapDataObject.html a0217b265d7a1eddd675bcbbefe42b26c081885acb77dcddbe5d3dc21b539b39 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlBase.html e9933bdddfe99356545b1d8a0da12bd7590e6aabe2a3e58e5a759334ea9ef265 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlEvent.html 0e2d2d6a08f148148f79c1ceb417935f180e9dc2d8188454663b3c970cc03025 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBoxSizer.html adce4d09790a4b1a3f9fe1836e72a21ec18a779307aff21758654ff51a68fdcf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBrush.html 74325a1bff6b99419e8a6044ed4a52f088654e7166292bb7c551c517f197249d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedDC.html c90fb7ba936030cbd290b2b2acdbeb6d19514615956abe30f1951133f7d05cbf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedPaintDC.html b8bf5e7ba3f9d8fb4d369639cddad5ab9119ed6f687da5cde415388e202c17d9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxButton.html e958527e37c2833127a0e7357703bef45808885f5125ef706fe92f0941208a43 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarCtrl.html 35126327b629eda2560f25cbcb894614241b6be77b2d74a1e411788d24381915 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarDateAttr.html 8fbf334cdaf47a8efe0b4503e6de031f06abe029957f898148a7fd3de3889cd8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarEvent.html 85f2a4343ce27e04accf52eca5d12b7a0ce4176a708b8e8491aef336f7e57f1d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCaret.html 11b26934caf6d359de33b665ba494b5b213ef1b0b5c9dc7bcbf611aa1751424c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckBox.html 9696a8ff3b4f991d6824fcecb09d265e8a19690ea179f99b39781d36626659da 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckListBox.html 40ee3462382d7fc4bfd57bd6fd7d056c783f4bcf77c993aa03d10d65a8604325 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChildFocusEvent.html ceec290e5fb8000755ad00d06a6e20fab0d1270299412aced8301da7f0b970a0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoice.html 16efb2ec4aea6b8e3e2f0e77d4db46db8ff736477ff686c9718d44a2cda795eb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoicebook.html 8f9a892cc0cc8d32ed2d58039ef1ef953026fea98ffaec6f562412673f77bb03 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClientDC.html 3c9154ac6bc33fe77b528529e5a55c968ce2298d77535079b26cfec4aff9bc3d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboard.html 00454ff7c3c8a07f8ec2d4f8aecfbdf6d9bc08658ea866f4d7f70b9bcaac41ce 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboardTextEvent.html a59ea119eec200f98a7e01e437453bca29dda10ddab6189f1840f7dfdd5f572e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCloseEvent.html fb1514b3551cc60d15d2b457ebe0a0654619e46256ba744c1019518a83c76844 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourData.html 9d76926d784485adad98fcc06aaee9cbd93161700a01f622efaa7f543548696a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourDialog.html 27baf4d467de5b4c05fad241c3e8ae1b933d73b17fa86899456b5287424c8227 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerCtrl.html 73dbcca3897520720cf9eea50c1bf0080502f239f8c1ee89b9f5a58877f1724f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerEvent.html 378c97d2325e626e88901895d0c4c2bb2cc3f8401eab68262690b8a80b1e66b5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxComboBox.html ec0e2c8e3aefaf7eed78edb7f70bb56ab10ee0d0b4e0e4e915a03a9b86f96f60 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCommandEvent.html d65e002e777a6da594d19b4d4dfdf0e4a3ef397616913dcb00db2e37c582d9b3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxContextMenuEvent.html 089541cb88ca1a5cd48feeae826f1b8dc1771b5b32b7160edfe9e9ee5b678ed5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControl.html a5832adb127916f06cef7e8848bcf298d0fe592e677e1ad19158b88bcf6f96a5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControlWithItems.html 13022baf4b405c8cb0d0592167fcc258f9efad25b82d74158d0b1d1b2a4b5032 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCursor.html 37c92f79a4fb252e4b4ed976964aa30da4a248a774be1a8dca23b22f5108f697 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDC.html d5c8a3cfab4f99c6fbe8b3d31557d6fe79e9514010a3cace5ed4976170e0b865 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDCOverlay.html c95523e4d963ace1eec9d1db76c7cead553553df1d4c9bff940bf38631f16e9d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDataObject.html 43b9b067dd903f93be542027f5fa1a7ac391c25c531cd2aeaab94e4dd125c1e8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDateEvent.html ef63d34b0a021efa4a51cad402bb0a8fbe60d43a927aea2b3ab8124fbd1bd520 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDatePickerCtrl.html 0bb3697b47eb38d7a5daa762e3192ec6f565adec243518a8a320208598ca60e7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDialog.html 8c0f05d4217b28c0030f36f47140ea2d97152bcfb66762f7d5aa9bad8e34831f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirDialog.html b8f51d34d58acc4939276f770a5f67c3245e78c70f7c0ac147aa2a8f29e1232a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirPickerCtrl.html e440680e20c585d18b6f939d366107f63c45fcd222d17ae4f61c12c48d75fb34 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplay.html 47c77bd36b74a37b6fd0d616d8d732d47a4b9a1e0a2393034757569461dd582d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplayChangedEvent.html 11bb93fe9f397ddc9ce6d7046010c1cebca31b0f8da6217d54ce14d225ed45ad 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDropFilesEvent.html 05480846664f30a3f19ac1a51fe6196c9569b611f9d9033d7f9e1fde89f11166 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEraseEvent.html 8ddbad055cb91d2b504e58a7199c8ab1fac4dce42e1c7e3158f700a13ec7c36b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvent.html eb5bd2c83c81193c9a753ffd78a477021ab5711cc35a7fe7cb66bd25a39f2de0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvtHandler.html 7e591ff1c8982be47ef7136d4a8bf4be47eec8f49ebe6555482cf66e739ad2e1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDataObject.html 9d7ef768cb8b8339300b8eaad6865f06e4e08020bdb6d63f808bbeb2360408e9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDialog.html 26950b45a91727c6c2c6a9a254e8b3adbeaf2adb9074982f8420fd6271518ee7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDirPickerEvent.html 0250bd61fd6741bbdbedf618639d9dc42bbb1f704a34f59a439250abb1e3a3d9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFilePickerCtrl.html b0a860ad47d432d1c29a27832ab1a58f991595ba4b6399ddd7789b9ae6c40151 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceData.html 335411f57e2393112c6bd2f1d0f69040befcbb87ca0317e45ea392f104b88459 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceDialog.html 802386e01bda7aafc8e56f114fca087207b2d06f7896f64d842f12e5c8e78c75 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFlexGridSizer.html de1f35db5085154583ecbed34d791625136624521830c7e5d9c98c67165cfe89 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFocusEvent.html 05b1967269668988b92ceb9ab6eeea95e9b3106f500dce3c58232c9494be3a21 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFont.html c4f7970ab93ee6dac01efc3a8241a8efd203f9d6825f0a01afa96621cdb69808 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontData.html d0d46e7e11b0a20d946f77d1216ed0182d3a13a8a80f220aa8d4483d9f7e6915 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontDialog.html 5a78e05eebe6ccffdfcd72649c04c4b89d9f877db4b953c5da62bc1a985bdbd3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerCtrl.html 3cd9766b208346ce4285da0231729644f2baf42d67a08041577b29fd0e6c22ba 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerEvent.html ce9d07287d10b0c9494e22ef46fc2a67f4eb53f63813e247b5ff345e178c5e72 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFrame.html 9580b92a63ba695d912015aa3d48097c2526bb876614895ad671dc339e14eba3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGBSizerItem.html 24e3c1f35f095cab8cfcd934d298d051078c71841f6a2d2e15e736875b5c2f4f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGCDC.html 0d34301ec8689ab3086bc9cce884f8f21e8f35b6fe488086c288af7590ec82f7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLCanvas.html 3aaaeb5393208fe3ccf45f12526ff54f8a37d2d2efe58e779f0e5d820300e2db 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLContext.html 288d2b3d1cfd0c06b1bec1de109578c68ed6a038b41c694669279c5d7fbe88e0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGauge.html 174267feb0652c25ea266591a9c324119c43f96581123185d586e30f8da5a4ac 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGenericDirCtrl.html 600b4bfcc313c95af767b1a5d1d01e79bf39605ffcbabbf74a8c3e7adfcd8552 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsBrush.html 20a9596d65308b3f2c8e98d1ecba8cc710c1d494dc638b35389b1a62075492c9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsContext.html 11dca2a775f84b5af2ab8d40f94a1dfaeaca3373e0a08b3bdce094fba5cde016 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsFont.html 5ae05b4ff3746cc3bc93b8874755a92c266a8fe49d467ea388aaf295612ebfef 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsGradientStops.html 0ab89b45a23e3554c704021d618dd970271cfe633f8b8eb14070129dbc4bb66d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsMatrix.html d11ce90bbb1260b0bf5c98379083c2720b96b714688c85b881b87d4940571d2e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsObject.html 0606d705a948c41de3bd7300a505a0415a17b1d272d8e849bfbd8f013d39e64f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPath.html fa29fcd4092e1089b7852394677ddefd0cd7444377bd79c4e269e59995ade9f3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPen.html f83de36fd9c52527225eb9d80a1b38b2937f3ca9de238c525d93edc32f85b615 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsRenderer.html 3e310144a90fa4b5f5efac7c430e4adbbd061e8dd8570ffde7e78837a4997be4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGrid.html 1af2169295b50b61bf6a439e155f32fdc3d0c9b7f6e5150091b889743cf44088 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridBagSizer.html f3bfdf84912cf1f0a9b1e14d1d38a8cb8de8fc6b1791471bce57a66feb286571 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellAttr.html b72810fad1565374dffb4a3ec4825918876ae4ddd7d878e905e620297a5f3b8f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolEditor.html 0470d88097c964f4d4e29f4902662fe47fd14ee17fcc8ca9c87309859815d231 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolRenderer.html 1b3a351e55b8d71598a93cbaa593d04e917d0458aa77059f2afcf7346a834b24 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellChoiceEditor.html 4dd2afbfaa1e7c09a5d45310222988e676f84fd2d490a8daa4b1d911c6fc79f7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellEditor.html d44250f935f9d80d2b5080e96e87d7191675600aa459162cfc68aa2ef6fda42f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatEditor.html 7f8e22cfe95c063eccfa567075915c224d1af02ae0d0ec42cb53c4f4b933b8d6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatRenderer.html 0a91c406835f9bc34872234e53f07a5cd8a19dc108ba9f79f90efc4287186f64 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberEditor.html 5111306c350f99fb60e47c0d27ae18d670ad03c0bb0ab97316ccca810202bb53 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberRenderer.html 88d0f338ecff45a98e46f9595cb162e772d43eb3ee9509e8bf71de32139ce3bc 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellRenderer.html 5fb7c780525d0055b3b6eb28ff114c359555c92697d3ddb9ef765086f1bd70e7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellStringRenderer.html 23864baaee1c7a9afa6f1e34f14f8b6f0d1dacbfe7f591e2a420e53dce9729d4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellTextEditor.html e525e816f9063fb99f0191e71c63d5c64733c8fbee94a76830c0878a8a5ca3cf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridEvent.html 3fe4edf2d3438517dc85f6299a1db56b9daecf9df0a287f195e8cd8c7610b5c6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridSizer.html 8db52a4142c79f7d52da171d6e2c7affbf29281d8c5a61c3107ba2cea197fa07 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHelpEvent.html b0db6e9bc55b7056ea13dc413c812516e3a407c49a3bc7715d79a75d66fb7e3f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlEasyPrinting.html 5a998bd3187f5b9adb474e9dc22d56b31b4eec7bd7d24a7549297fe0057e5a85 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlLinkEvent.html c4a2b6e813471f2e87a7ca6f6e29e76437ba71c2a1da9370c6d06d7aa4ec6a8a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlWindow.html f49b426c135b210ccdf4344954af318c459136664ca1a99c74d4d43e04cf6d30 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIcon.html f4d0e75ee8eda89e0e54865ea6f70b64debcb98ffddd4e1ec0b888dc1d3471d3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconBundle.html 83059288b96be2f7a85260fbf08aa68da66c42d1142f2321b8fb176caf676b24 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconizeEvent.html 92f8bb3047a8c6b6c41b042dfac3ac2d37e11f4ee8ad0f511d809b4e5985dfa8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIdleEvent.html 52bc361381d3554db7465eb7ffa968276a261f77ff937cc497cddc01d40124c2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImage.html 287cf096d0256e945fdf209acceaa56c7747f8e42b942e6f9e7055aeabe2480e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImageList.html 28ae4aaeec985b5d75ae78543216c4ab80f52ac3471f4daef60471e0c836c229 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxInitDialogEvent.html e3c6d3e87edefeeaeff21c4dbf627385b09a520b81ec072946fdb29a22bf0ae3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxJoystickEvent.html bf7bc85eeb876b6857de5096366409c05e71e59939007c42e7da704c402a0043 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxKeyEvent.html 2001d346ab0c7707825515ed43972c69a6c952fa2d4131a5eb5b2ac3d57ae8ed 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLayoutAlgorithm.html a4013c69818101af7bc5ad4cf97fad7dcb1089618c428c200756053f4e887250 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListBox.html f482114a5d07a80ab3be35f3bbdb4f894bbdde52d0569221af9b617c9d84d7c9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListCtrl.html 0a74c66ffd885be60f81aad20cf0ca8d93ccf47ca7a40d734d61d1f17022c57d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListEvent.html 3feb28f9084ff0764c05bd69582f5945b87919f408c0121e66e1d955e0beee41 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItem.html a0c1b9ec8dc7ccbc7afe9bd8e8380bca1786a0ed998e01bd117f70c5e16c3a68 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItemAttr.html 1affccadca762d98996aef0c2918afbf7e9510dc1ffc7df7ed66b65f5cbf970c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListView.html 8c039251ba6debbf7f45f4953ec93a604aa25fa633a9468c28e1c235d9c23af7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListbook.html 322abdde37e64abecd3f50f78d53d8a337f3183a4a5e1d9af5a0e83c098823ba 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLocale.html 18f5b623a64e45e27f8e70e89f074eef2ec0c47d7b84f77fd298a209865fa412 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLogNull.html b4025ea683d0da455d32b61777114180dd8dbda3255308a32aeac1ba4d1876d0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIChildFrame.html 3f8944476a09ef04fbaed1deb5c40f23b565ab3a97b6a4b60bd1af461d6943ea 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIClientWindow.html 94ac5d3642ef887639d30085176a9497d839d177f73919a9957262b436764039 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIParentFrame.html bd0049a26146bf1d3fd0d23fe553cc677bbc948e628406d3f643db980df79594 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMask.html f55ebcfaf798f3b17f8397b09a72562df9055012769ff5a5c69328e8bd038e2b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMaximizeEvent.html 0cbdc7fd3ac68a8ac58b716da544f6830e124e7fef77b51d81200e7f75701479 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMemoryDC.html d1e2d4fef9738eb32f8af76e88a23fb0c0c9b61c89db83e88a6d8e14ceb533f4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenu.html 6398722dcce8c56b4e5a96499b3c5556b07c21d727f708facf9155ce630b5fd7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuBar.html 9fa173365fa216042063dbc1441f5033aba7559147681d03a734ddfc206b73e6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuEvent.html e26244650b1469db4e648f6a298ecf976f55ba17bfaec83c4f9d190f78ba5849 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuItem.html 5d6c2606240f8e5f2f439698997006983f228d9773d5e7eeae28c1133934ef7d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMessageDialog.html 089ab12ce94e5d1fc5658959cfa87c2aa70444360f35bb05e74e9ff360b94841 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMiniFrame.html ed2b328dcf9bc0a3db86798ee65968d5e5f7f5d493bd2d416cd0af519107109c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMirrorDC.html 89f3e6f32b300e04b3df1c2e763c48d5959c438516ef000407f2b6d424425c69 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureChangedEvent.html fed1764f723b8fa93707900d16603a1e0ecad2710a7d59cf357f395344228c81 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureLostEvent.html be6baf0d443d1938d0b93a076af082ca676cee73675e11c393412d1d5534557e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseEvent.html e5ee859986bfa13ac12a7f790d10648cc26e736164d8ad48f9d96c38a002f0cb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMoveEvent.html d77baab926108ac990b7c85fc4ab9f250655ea84ac3dacfdbf2b6451df4c62ef 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMultiChoiceDialog.html dfdeb35cee75fc09009301a41aeb8f3da44357d796349778b293465c0e149a51 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNavigationKeyEvent.html c16cd6064cb011876f56f63a001f90d91db6d79c8b504246b346d995894275fc 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotebook.html 4ac64e77eea212aaa50e02847a28bb301d8ea545475431284f693caff222be55 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotificationMessage.html 709b2b60ed960f3071fd71dae73b35fa0f6c8400d2e61d97ae00aaea285b1d11 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotifyEvent.html 7665db3a03fdd00a3ebf7d5739ade99ef5b7e40aa55e3e1aafd9a2e6e3c0020c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxOverlay.html cd0594b3e65a0afc6c496212a3e8019800ac11724ae6deb9c27e6b9b9ae70371 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialog.html 1db73f0c805691a4dc3900c5ba888a1e5e108d454769d122f10a280a9dadb27f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialogData.html 7282592082d0553bb0de096fa196ebe4d0a946b90189d954d814507250307242 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintDC.html 42e0e63f39b160d4a426df98667aa4ad3e2ceb2507aa5b3fd720c75fa245c76c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintEvent.html bd86205a47bbc3cd47c78f8a50257c09b7fc404e53ccf53e5dc104fc7ad5313e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPalette.html 5ae30a40dc17a6e517fd1d6fcc1251eb1500c101c30c58f2591c2558f7763755 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaletteChangedEvent.html 6b9d4c66dc1ffec02a3054ec00f822a869fe641421b2184cd8ad7d5e3c7c46b2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPanel.html 3cfa20147cd4e0f03faeb1802241e83ddc201b445ba3d94196065eec84f242e0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPasswordEntryDialog.html 33fdc517b5488d1701e7b39f6f02fdbf87c52535e7be6e14f8d0c6ecd346338f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPen.html f3c1fb3f8ffa89fba2185d2b25dd1a2cd4f51fcf71ef9296a336be7162804000 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPickerBase.html ac2ba1fd4ddc846a92fa38f94129cad84eff0f6d50358a8d77c90861949f3002 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupTransientWindow.html c07b44b8809cdd1410458f1e2808a8b3334b5a3cc6c8555c7101d3de8c6b9414 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupWindow.html 0c948dd65d1f6797c58e6d5afeb23f371d9ed9bcad1e289645761743f5c25a87 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPostScriptDC.html 1616aaa34268a3d469ed9add093da80dba91ef563480181d100ebfcf90733d44 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewCanvas.html 02ee966f34d904f341dfe6640717f3ddbe3eb47157ea97e5afe1aac5926033b6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewControlBar.html 2b681e08df4c8bf254c73bef1b74173b9467482e078302e9ecbcf4f59ada2d63 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewFrame.html 9bb3a7bb279dd596e4085ddd5dbe3e2c9379270decfcbf4253876440dd7a930b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintData.html f229558b29709e8ee6655b835b07b050115013bb44184c050df14ce43d970d01 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialog.html 6b571f2ee2e848b4bd0d4cb5ddb03b903231f513198c7707eb1b416ad97c49c4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialogData.html b8bb37104a6aa8cf1b64a97bef1719481959e8d04c000bf7526feacde041830a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintPreview.html 7e4386973524dfa3780716ad1090bd4ba09e2b8a88cac8ba33dce8dc7a4f59d4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrinter.html 2e316efa8417f793a8aff1b55cbdaf537b6c4c6ecb66bed80aff17eb4dd526d1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintout.html d01e4fc0560e68ea304428d2ddfec0b936425f4f9655c2ea94c07644c6ba774f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxProgressDialog.html 74b6686271d9515cfad541782b367315d6c8d37d1e5956b7048b3e1b25152864 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxQueryNewPaletteEvent.html 8fad22e3077fa0050ecb2a583fdc8e15c9e9c8bfb7e9151f721c8e74ed09b41a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioBox.html 36b913e9254c69a6d489788f9686b7a7c3c26147b0d81e6485080fc4b6401b4e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioButton.html cb88ff53cf2a95f4b8592015daad4938c1302422c40296c208dcda5bdbea2c91 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRegion.html 5bcfa7748c77fa4ff7ee3fbbbd4a8e3c00c5ead9771dbcc98bc8eab9a69087ab 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashEvent.html d70dfdf9e25326f3d4f359e0e28f503aa4495abc093bc9d225e657e96e1ec362 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashLayoutWindow.html 9488c0ca141c913155ae03792bf87fcb4ac69b0b0cc517c58a90eb913d46f753 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashWindow.html a01e1066a7ee08eb1d01b4c2cbb7b2a1b0edcd00c1cef63598d557e1bf57d808 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScreenDC.html 091c313a9ecccf2e586a42995ce6f62025684f44a70958c365fce7430f3c11d2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollBar.html 17638144a00479104487cd1f9b5e7308ccaa19ec119a7a8f5c17d2b57542b089 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollEvent.html 5193b4ebb4a5fa16370d7643dbb86c2fe164c456e509d81662c0dcada90acaba 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollWinEvent.html 140f568fff7be58295412b1d036eb47195924ceaec517869e84d3a87db760e5e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrolledWindow.html 123f7d9c9b3253aac5ded1c4e6bcbffa7abcb9689b420377d33f5beed1ed020c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSetCursorEvent.html 7c08c1fdf7df2430f90494d2a1e2bac5d44c978a431ef9774983c53cc6c89aa9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxShowEvent.html 0f189f6f15c30283b924fd860c21de674454605a462394473a285fd7da26b152 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSingleChoiceDialog.html 10d53590e51008e073d1e68723592c6b3021b766792ebe6d3961fda14094fa0f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizeEvent.html e15096ffdc5faa4d9f58db391ab825c5ee1262815bbce9b0205002a817143be1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizer.html 9514d80e5a2041d60e120f828546c43c3da0d2e45b77b837dbb6cb32fe7d098b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerFlags.html 16063f6f42fbea70d102e1ac2510a95c2788f0ec3f747036a4446f1d08a2c865 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerItem.html 77d7aeeb1ae0a9ca5a48ef36146cc591813b85eb9f30d1558fccfb81385d4036 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSlider.html 3726bc68a0e8fa0902f0881e3d87dac7ca754d1f87f1e447a8921b4db675422e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinButton.html e9dabc52771b674453bbaa09bf1ef6f68a7a7e3bda5a0c5f7a9f3c55252f810e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinCtrl.html 00ab39941fd3c93c0b15e9f35c75524f30d4f02b2dee74a759bf33403315711c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinEvent.html 48355c69da73f3bb196992ab86115601d7a706df7c88d1905b77e632efd03028 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplashScreen.html c6d550350f38184831f90de9a4c00e3c55671518f456b4d74e38b20402ff9c3c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterEvent.html 92502f7cca7eea05d95140610c97816b121054b29179ef7db16c5745a30b2ab5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterWindow.html 298e26364d18de0e8869bf4714f29acb6b20980c5556ba7ed35d7403295065b9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBitmap.html 490feb5961b196b2c494c8d355d285940fa5b89e010e3e427a6d10d0fc2fbfd8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBox.html 1ea484a4dc623b88790bff37fd0c0b15f2ea53cc1cf5fffadbabf8db31c261c3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBoxSizer.html 8293b4fd611fd72a1d28e73a729199a0d7400714bb3d86e4ca86cf4ec1374068 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticLine.html 4e6ba2c20075b00a4ede46e9a875aeef1feaab6afea0318ea4bcb3e0d8a5f039 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticText.html 36726786cb0779e013454e7483bc55a11c674e2fe66275fb823ca748e473063e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStatusBar.html f9cbc2930819b01c2ba018c4fd26f038ba894c67f8fe2613e5e71564271fb74d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStdDialogButtonSizer.html 91e31208c017418a7982ed1cb651b7431beba3fdb8f10e05e9c68161e9a99baa 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextCtrl.html d72e1774f2275bb618523c3b7009a788e9744dee38db9b7a175777a6c8b278ea 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextEvent.html e6b83fbb7bc40131af6f0abe4b898453becf8bfd69f69264dda5d73b15104d7f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSysColourChangedEvent.html 68b5e71aefd6175b7a473baf727364efd0f189d9d77877a24b2ee5ce9b26de15 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemOptions.html 5bf42d5f9acc43e929c9dfe08648cfdfc755246245c665218014e7e06447845c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemSettings.html a6637cbb3d713a082344bfe84526d468298733ffee36a998f2bfc2f8cac214a2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIcon.html dc4f73653f84244a782d0b7191da855701f2b9c3b3c3c4a3c905999f4887f0f0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIconEvent.html 90d8d6d53f03ae22ea2d7811ac774dd5b388cb04e33af271fc61e3ba3a7de4d6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextAttr.html edb95be5909f78b4af6a98c1b456d3554158a42501f70c5947ff823403ffce85 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextCtrl.html b0bdb334b4f285de97d98ace935e548218cb2cdbaac911c3c90a51a859f0490d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextDataObject.html c4094c3b7cf2c0eabc0636f0aa5dd148f474b4ff2a2748be2639e950787de79e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextEntryDialog.html 17219e969bd7218864f4c01e83819d10c7597d5e4ab3d07c786d05a16a386dcb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToggleButton.html 75a8274de5551ff56b3f256e26511c8485df002144bc182c52ab561c3ba866fb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolBar.html a252a5c6bf59817841e1a9ef9390fca2a06a19018563087a73c396606f84c25e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolTip.html bd7a1ccde600ea0ae234040388a83d6e06c78de823fbc9844cd6aef828f3ff78 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolbook.html 94f12f70551c7aaed732e063e0a2982d03d5125410cf4f0ab509e90bbacbedc7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTopLevelWindow.html 08005a718870aa2b09155ff4c005435f9c1e6dc88508105426ba46f62733872b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeCtrl.html 7c0efb0341627564f6cf7a5d07b075bc4fa47b1c5bacb42f6edf5e105a5db86e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeEvent.html d7adf897aecf5c789e99e25c25ac65dec8fa814db6a51ad43990a3b37cbe125e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreebook.html ce1d7fb40fdb9c6eac92be0f5a15c748fa8b8df8fd7683fae0d9d52d7cbc6c95 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxUpdateUIEvent.html 94b52552929f7199f3b263a14ad4d0638534acb7caa4703dc523896c7371d5ac 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebView.html 6c8507bed7d388f0237b3af779022fe1678aad1366ffc3e2d2890f836cbcf1ac 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebViewEvent.html 39cc31d4e9b95909710672352bb8a9fc86d4c44731d1014f30726ab2f1d5c3e7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindow.html 550a1e91791c06f8e0b32493248095cec9cafd51076b8970d04874ed7ad0aecf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowCreateEvent.html 1d9768decc329bc5ee4fb8f7d0267868da6293a5521ed1acef3613c9c2d838fb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDC.html 1ff37cfa6f4076962cddc6c68dbc59aca63553cb111beb2e5155a5fa7f3a27f4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDestroyEvent.html d3ad118c08c6509c3ad48777220ee376ba10c42b1a7407f31566a59ef2353530 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxXmlResource.html 01893232a9521c475647b3db1efc6f644938d5ebbce3b8c101888f281127e6ff 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_misc.html 2d2c7376296a2097ae67f03fee94a8d5e4b155be75441c6bf71ef95e3174079c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_object.html 4bcfaf3781307f2be9ded778edc49b9d07d4c1693f523e10d4fa054bd6a8ae3f 2 @@ -4563,2 +4563,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/404.html 37e96b8632555b2045ba02fe9c6b57c3147a3e6930abcbccbfb38773295aa669 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/api-reference.html a40528142441d5f45b17b6604c7c25c0ba53e7990156032fbe721b5a898d1eaf 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/404.html 17ed6a737be1d2625ad53475ecddcf0a9da0854d2933c5a5e5bafe95a3e96be2 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/api-reference.html 45095aa8133fd9a8db436a82be73900c4b95c0dd70cc901903f7c9e090431616 2 @@ -4599,12 +4599,12 @@ -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/notes.html 863b36d1f897157c056e6d17f629386639b1159d732eda06da8e16b0d476360e 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/search.html 532a17910d43b32004b209b57a75984df6e8710b5bef36cbb3a67f5cba4e8ea1 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl.html 2f26d7ea2050887f0ac39e88966e501fcd36962dc36f4e47de18343e9c903b95 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_eventp.html a6a3279770630845fc7353c95eb85852bed412680d20dbbea92e3597152d8472 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_examples.html 42803ac3fe3f3d6d028ebfe0d00419f92f4c8506b1150598810a855e3b826f56 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_sax_parser.html 20325c877211f6fa649fa7a04705cb6f7375aa3ff986c6bb1790d54a87089588 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_scan.html 6b42e329e7a8ca62ff5dca0a25cd3b07d02aa1022abaea4d0ca1e6edae1829f9 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_ug.html 7bd4c6db154e755bafa7bc4230ca2c25c5b0ee39ce990b447cec640bb136624e 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xpath.html 114250ff30cf03d48cd9a956715e0fc490fbf7a716698ba8113a1e2801b39ac8 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs.html 1a8dc59d9211430bf5188c9c97efa47762d04fbc5a04d3e6abb66e69f113c69c 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs_examples.html e6b68353d8c2dded857ee87b1f802c22a81edce04bbc7d5f481a598b04b76120 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xsd.html e8ff2282bb1b19196a5e46ffa6f5231a44c80f82b7e8f98c513a179086db54eb 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/notes.html e736451a7b58913c82e80ca116d085e062d557d2c29a1895610038b0d025462e 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/search.html ca068eb0e5b7bd4baa3abe5cf0a568b24b0166cc44daa6079b35177337d6741d 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl.html 98980a83cc4d990f5947cee2c16df2fb2c520dd1a9ce9ef752ea0210fd949aa1 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_eventp.html 1885e441b851205d8f9cedcbabc91d89844a9dfc47477bf24aec18e454a7c122 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_examples.html 7beb92386ee24b684ab968adbdad9316e1cdfa0d7852025ed5999a8f74df27ce 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_sax_parser.html 4d429ad5e59b0f8f7e7097e91f361fc0661506b545c2704daf3310ed0c9748ec 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_scan.html e36fc4179fbd56cfea76922276c65e97a1a4243fc7345dd9976df5443e3d464b 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_ug.html 342c186d7860852a77d0158624ba7c34c2bb8489603a90933acfe3104371389d 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xpath.html 12407fcfc6055b00ae7bbc3f953b66243f0d9a932382f2c63dcef7ad3933ea15 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs.html b909410d565daf2c155b3fbea2e7ac15bfb6e95676e29d1c7e71b8c28b14e9b7 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs_examples.html d606a0432b3979f5acd52aa2c19db27544fef39a70156c4411304d1ba181d572 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xsd.html 81157944d2da0be44a68e61cf5c2a32c9370685136bb5bc2390d76bb4a60572d 2 comparing rpmtags comparing RELEASE comparing PROVIDES comparing scripts comparing filelist --- old-filelist +++ new-filelist @@ -1469,7 +1469,7 @@ /usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 2 (none) 120777 root root 0 4294967295 ../../../../xmerl-2.1/doc/html/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 /usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 2 (none) 120777 root root 0 4294967295 ../../../../xmerl-2.1/doc/html/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 /usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/remixicon-NKANDIL5.woff2 2 (none) 120777 root root 0 4294967295 ../../../../xmerl-2.1/doc/html/dist/remixicon-NKANDIL5.woff2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/search_data-7F27CE3F.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/search_data-B508ECAC.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dist/sidebar_items-E5CACCF4.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dtrace.html 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dyntrace.html 2 (none) 100644 root root 0 4294967295 @@ -1845,7 +1845,7 @@ /usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 2 (none) 120777 root root 0 4294967295 ../../../../xmerl-2.1/doc/html/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 /usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 2 (none) 120777 root root 0 4294967295 ../../../../xmerl-2.1/doc/html/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 /usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/remixicon-NKANDIL5.woff2 2 (none) 120777 root root 0 4294967295 ../../../../xmerl-2.1/doc/html/dist/remixicon-NKANDIL5.woff2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/search_data-CF5A7DBD.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/search_data-5AC9C9DB.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/dist/sidebar_items-6D4858AF.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/epp_dodger.html 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_comment_scan.html 2 (none) 100644 root root 0 4294967295 comparing file checksum creating rename script RPM meta information is different Extracting packages /usr/share/doc/packages/erlang27-doc/doc/404.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/404.html 2025-11-19 10:45:46.641457077 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/404.html 2025-11-19 10:45:46.641457077 +0000 @@ -131,7 +131,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/asn1.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/asn1.html 2025-11-19 10:45:46.661457202 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/asn1.html 2025-11-19 10:45:46.665457227 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/common_test.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/common_test.html 2025-11-19 10:45:46.685457351 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/common_test.html 2025-11-19 10:45:46.689457376 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/compiler.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/compiler.html 2025-11-19 10:45:46.709457501 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/compiler.html 2025-11-19 10:45:46.709457501 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/crypto.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/crypto.html 2025-11-19 10:45:46.725457601 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/crypto.html 2025-11-19 10:45:46.729457625 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/debugger.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/debugger.html 2025-11-19 10:45:46.749457750 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/debugger.html 2025-11-19 10:45:46.749457750 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/deprecations.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/deprecations.html 2025-11-19 10:45:46.769457875 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/deprecations.html 2025-11-19 10:45:46.773457899 +0000 @@ -463,7 +463,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/design_principles.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/design_principles.html 2025-11-19 10:45:46.793458024 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/design_principles.html 2025-11-19 10:45:46.793458024 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/dialyzer.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/dialyzer.html 2025-11-19 10:45:46.817458173 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/dialyzer.html 2025-11-19 10:45:46.817458173 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/diameter.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/diameter.html 2025-11-19 10:45:46.837458298 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/diameter.html 2025-11-19 10:45:46.837458298 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/edoc.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/edoc.html 2025-11-19 10:45:46.857458422 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/edoc.html 2025-11-19 10:45:46.861458448 +0000 @@ -153,7 +153,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 2025-11-19 10:45:46.877458547 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 2025-11-19 10:45:46.881458572 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/eldap.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/eldap.html 2025-11-19 10:45:46.897458671 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/eldap.html 2025-11-19 10:45:46.901458696 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/embedded.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/embedded.html 2025-11-19 10:45:46.917458796 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/embedded.html 2025-11-19 10:45:46.921458821 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/erl_interface.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 2025-11-19 10:45:46.937458921 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 2025-11-19 10:45:46.937458921 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/erts.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/erts.html 2025-11-19 10:45:46.961459070 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/erts.html 2025-11-19 10:45:46.961459070 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/et.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/et.html 2025-11-19 10:45:46.977459169 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/et.html 2025-11-19 10:45:46.981459194 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/eunit.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/eunit.html 2025-11-19 10:45:47.001459319 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/eunit.html 2025-11-19 10:45:47.005459344 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/ftp.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/ftp.html 2025-11-19 10:45:47.025459468 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/ftp.html 2025-11-19 10:45:47.029459493 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/getting_started.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/getting_started.html 2025-11-19 10:45:47.049459618 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/getting_started.html 2025-11-19 10:45:47.049459618 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/inets.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/inets.html 2025-11-19 10:45:47.073459767 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/inets.html 2025-11-19 10:45:47.073459767 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/installation_guide.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/installation_guide.html 2025-11-19 10:45:47.101459941 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/installation_guide.html 2025-11-19 10:45:47.101459941 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/jinterface.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/jinterface.html 2025-11-19 10:45:47.121460066 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/jinterface.html 2025-11-19 10:45:47.125460091 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/kernel.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/kernel.html 2025-11-19 10:45:47.141460191 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/kernel.html 2025-11-19 10:45:47.145460215 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/man_index.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/man_index.html 2025-11-19 10:45:47.209460614 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/man_index.html 2025-11-19 10:45:47.213460639 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/megaco.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/megaco.html 2025-11-19 10:45:47.237460788 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/megaco.html 2025-11-19 10:45:47.241460813 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/mnesia.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/mnesia.html 2025-11-19 10:45:47.261460938 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/mnesia.html 2025-11-19 10:45:47.265460963 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/observer.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/observer.html 2025-11-19 10:45:47.289461112 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/observer.html 2025-11-19 10:45:47.285461087 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/odbc.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/odbc.html 2025-11-19 10:45:47.313461261 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/odbc.html 2025-11-19 10:45:47.313461261 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/os_mon.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/os_mon.html 2025-11-19 10:45:47.337461411 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/os_mon.html 2025-11-19 10:45:47.337461411 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/parsetools.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/parsetools.html 2025-11-19 10:45:47.357461536 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/parsetools.html 2025-11-19 10:45:47.361461560 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/programming_examples.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/programming_examples.html 2025-11-19 10:45:47.389461735 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/programming_examples.html 2025-11-19 10:45:47.389461735 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/public_key.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/public_key.html 2025-11-19 10:45:47.409461859 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/public_key.html 2025-11-19 10:45:47.413461884 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/readme.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/readme.html 2025-11-19 10:45:47.433462009 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/readme.html 2025-11-19 10:45:47.433462009 +0000 @@ -153,7 +153,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/reference_manual.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/reference_manual.html 2025-11-19 10:45:47.457462158 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/reference_manual.html 2025-11-19 10:45:47.457462158 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/reltool.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/reltool.html 2025-11-19 10:45:47.477462283 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/reltool.html 2025-11-19 10:45:47.481462308 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/removed.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/removed.html 2025-11-19 10:45:47.505462457 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/removed.html 2025-11-19 10:45:47.509462482 +0000 @@ -392,7 +392,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 2025-11-19 10:45:47.525462582 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 2025-11-19 10:45:47.529462606 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/sasl.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/sasl.html 2025-11-19 10:45:47.553462756 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/sasl.html 2025-11-19 10:45:47.553462756 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html 2025-11-19 10:45:47.569462856 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html 2025-11-19 10:45:47.573462881 +0000 @@ -216,7 +216,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/search.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/search.html 2025-11-19 10:45:47.597463030 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/search.html 2025-11-19 10:45:47.601463055 +0000 @@ -131,7 +131,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/snmp.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/snmp.html 2025-11-19 10:45:47.617463155 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/snmp.html 2025-11-19 10:45:47.621463179 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/ssh.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/ssh.html 2025-11-19 10:45:47.645463329 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/ssh.html 2025-11-19 10:45:47.645463329 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/ssl.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/ssl.html 2025-11-19 10:45:47.665463453 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/ssl.html 2025-11-19 10:45:47.665463453 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/stdlib.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/stdlib.html 2025-11-19 10:45:47.689463603 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/stdlib.html 2025-11-19 10:45:47.693463628 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html 2025-11-19 10:45:47.709463728 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html 2025-11-19 10:45:47.713463752 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/system/404.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/404.html 2025-11-19 10:45:47.733463877 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/404.html 2025-11-19 10:45:47.733463877 +0000 @@ -135,7 +135,7 @@ Erlang programming language

-

Copyright © 1996-2025 Ericsson AB

+

Copyright © 1996-2041 Ericsson AB

/usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/applications.xhtml differs (HTML document, UTF-8 Unicode text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/applications.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/applications.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -44,8 +44,8 @@ Application Callback Module

How to start and stop the code for the application, including its supervision -tree, is described by two callback functions:

start(StartType, StartArgs) -> {ok, Pid} | {ok, Pid, State}
-stop(State)

Example:

-moduledoc {file, "../doc/arith.asciidoc"}.
--moduledoc #{since => "0.1", format => "text/asciidoc"}.
--moduledoc #{deprecated => "Use the Erlang arithmetic operators instead."}.

+of the format.

Example:

-moduledoc {file, "../doc/arith.asciidoc"}.
+-moduledoc #{since => "0.1", format => "text/asciidoc"}.
+-moduledoc #{deprecated => "Use the Erlang arithmetic operators instead."}.

@@ -129,7 +129,7 @@ We use a special number here so that we know that this number comes from this module. """. --opaque number() :: {arith, erlang:number()}. +-opaque number() :: {arith, erlang:number()}. -doc """ Adds two numbers. @@ -140,8 +140,8 @@ 1> arith:add(arith:number(1), arith:number(2)). {number, 3} ``` """. --spec add(number(), number()) -> number(). -add({number, One}, {number, Two}) -> {number, One + Two}.

+-spec add(number(), number()) -> number(). +add({number, One}, {number, Two}) -> {number, One + Two}.

@@ -153,12 +153,12 @@ automatically insert this key if there is a -deprecated attribute marking a function as deprecated.

  • equiv => unicode:chardata() | F/A | F(...) - Notes that this function is equivalent to another function in this module. The equivalence can be described using either -Func/Arity, Func(Args) or a unicode string. For example:

    -doc #{equiv => add/3}.
    -add(One, Two) -> add(One, Two, []).
    -add(One, Two, Options) -> ...

    or

    -doc #{equiv => add(One, Two, [])}.
    --spec add(One :: number(), Two :: number()) -> number().
    -add(One, Two) -> add(One, Two, []).
    -add(One, Two, Options) -> ...

    The entry into the EEP-48 doc chunk metadata is +Func/Arity, Func(Args) or a unicode string. For example:

    -doc #{equiv => add/3}.
    +add(One, Two) -> add(One, Two, []).
    +add(One, Two, Options) -> ...

    or

    -doc #{equiv => add(One, Two, [])}.
    +-spec add(One :: number(), Two :: number()) -> number().
    +add(One, Two) -> add(One, Two, []).
    +add(One, Two, Options) -> ...

    The entry into the EEP-48 doc chunk metadata is the value converted to a string.

  • exported => boolean() - A boolean/0 signifying if the entry is exported or not. This value is automatically set by the compiler and should not be set by the user.

  • @@ -169,20 +169,20 @@

    The doc signature is a short text shown to describe the function and its arguments. By default it is determined by looking at the names of the arguments in the --spec or function. For example:

    add(One, Two) -> One + Two.
    +-spec or function. For example:

    add(One, Two) -> One + Two.
     
    --spec sub(One :: integer(), Two :: integer()) -> integer().
    -sub(X, Y) -> X - Y.

    will have a signature of add(One, Two) and sub(One, Two).

    For types or callbacks, the signature is derived from the type or callback -specification. For example:

    -type number(Value) :: {number, Value}.
    +-spec sub(One :: integer(), Two :: integer()) -> integer().
    +sub(X, Y) -> X - Y.

    will have a signature of add(One, Two) and sub(One, Two).

    For types or callbacks, the signature is derived from the type or callback +specification. For example:

    -type number(Value) :: {number, Value}.
     %% signature will be `number(Value)`
     
    --opaque number() :: {number, number()}.
    +-opaque number() :: {number, number()}.
     %% signature will be `number()`
     
    --callback increment(In :: number()) -> Out.
    +-callback increment(In :: number()) -> Out.
     %% signature will be `increment(In)`
     
    --callback increment(In) -> Out when In :: number().
    +-callback increment(In) -> Out when In :: number().
     %% signature will be `increment(In)`

    If it is not possible to "easily" figure out a nice signature from the code, the MFA syntax is used instead. For example: add/2, number/1, increment/1

    It is possible to supply a custom signature by placing it as the first line of the -doc attribute. The provided signature must be in the form of a function @@ -191,7 +191,7 @@ Adds two numbers. """. -add(A, B) -> A + B.

    Will create the signature add(One, Two). The signature will be removed from the +add(A, B) -> A + B.

    Will create the signature add(One, Two). The signature will be removed from the documentation string, so in the example above only the text "Adds two numbers" will be part of the documentation. This works for functions, types, and callbacks.

    @@ -284,13 +284,13 @@ rebar3_ex_doc plugin. To set up a rebar3 project to use ExDoc to generate documentation add the following to your rebar3.config.

    %% Enable the plugin
    -{plugins, [rebar3_ex_doc]}.
    +{plugins, [rebar3_ex_doc]}.
     
    -{ex_doc, [
    -  {extras, ["README.md"]},
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/drivers.xhtml differs (HTML document, ASCII text, with very long lines)
    --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/drivers.xhtml"	2025-11-19 10:41:45.000000000 +0000
    +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/drivers.xhtml"	2041-12-22 00:00:05.000000000 +0000
    @@ -31,15 +31,15 @@
     running.

    A driver can be configured to have one lock for each port instead.

    If a driver is used in a functional way (that is, holds no state, but only does some heavy calculation and returns a result), several ports with registered names can be opened beforehand, and the port to be used can be chosen based on -the scheduler ID as follows:

    -define(PORT_NAMES(),
    -	{some_driver_01, some_driver_02, some_driver_03, some_driver_04,
    +the scheduler ID as follows:

    -define(PORT_NAMES(),
    +	{some_driver_01, some_driver_02, some_driver_03, some_driver_04,
     	 some_driver_05, some_driver_06, some_driver_07, some_driver_08,
     	 some_driver_09, some_driver_10, some_driver_11, some_driver_12,
    -	 some_driver_13, some_driver_14, some_driver_15, some_driver_16}).
    +	 some_driver_13, some_driver_14, some_driver_15, some_driver_16}).
     
    -client_port() ->
    -    element(erlang:system_info(scheduler_id) rem tuple_size(?PORT_NAMES()) + 1,
    -	    ?PORT_NAMES()).

    As long as there are no more than 16 schedulers, there will never be any lock +client_port() -> + element(erlang:system_info(scheduler_id) rem tuple_size(?PORT_NAMES()) + 1, + ?PORT_NAMES()).

    As long as there are no more than 16 schedulers, there will never be any lock contention on the port lock for the driver.

    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_functions.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_functions.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_functions.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -31,13 +31,13 @@ rearranging clauses.

    One exception is pattern matching of binaries. The compiler does not rearrange clauses that match binaries. Placing the clause that matches against the empty binary last is usually slightly faster than placing it first.

    The following is a rather unnatural example to show another exception where -rearranging clauses is beneficial:

    DO NOT

    atom_map1(one) -> 1;
    -atom_map1(two) -> 2;
    -atom_map1(three) -> 3;
    -atom_map1(Int) when is_integer(Int) -> Int;
    -atom_map1(four) -> 4;
    -atom_map1(five) -> 5;
    -atom_map1(six) -> 6.

    The problem is the clause with the variable Int. As a variable can match +rearranging clauses is beneficial:

    DO NOT

    atom_map1(one) -> 1;
    +atom_map1(two) -> 2;
    +atom_map1(three) -> 3;
    +atom_map1(Int) when is_integer(Int) -> Int;
    +atom_map1(four) -> 4;
    +atom_map1(five) -> 5;
    +atom_map1(six) -> 6.

    The problem is the clause with the variable Int. As a variable can match anything, including the atoms four, five, and six, which the following clauses also match, the compiler must generate suboptimal code that executes as follows:

    Rewriting to either:

    DO

    atom_map2(one) -> 1;
    -atom_map2(two) -> 2;
    -atom_map2(three) -> 3;
    -atom_map2(four) -> 4;
    -atom_map2(five) -> 5;
    -atom_map2(six) -> 6;
    -atom_map2(Int) when is_integer(Int) -> Int.

    or:

    DO

    atom_map3(Int) when is_integer(Int) -> Int;
    -atom_map3(one) -> 1;
    -atom_map3(two) -> 2;
    -atom_map3(three) -> 3;
    -atom_map3(four) -> 4;
    -atom_map3(five) -> 5;
    -atom_map3(six) -> 6.

    gives slightly more efficient matching code.

    Another example:

    DO NOT

    map_pairs1(_Map, [], Ys) ->
    +exception if none of the values matched.)

    Rewriting to either:

    DO

    atom_map2(one) -> 1;
    +atom_map2(two) -> 2;
    +atom_map2(three) -> 3;
    +atom_map2(four) -> 4;
    +atom_map2(five) -> 5;
    +atom_map2(six) -> 6;
    +atom_map2(Int) when is_integer(Int) -> Int.

    or:

    DO

    atom_map3(Int) when is_integer(Int) -> Int;
    +atom_map3(one) -> 1;
    +atom_map3(two) -> 2;
    +atom_map3(three) -> 3;
    +atom_map3(four) -> 4;
    +atom_map3(five) -> 5;
    +atom_map3(six) -> 6.

    gives slightly more efficient matching code.

    Another example:

    DO NOT

    map_pairs1(_Map, [], Ys) ->
         Ys;
    -map_pairs1(_Map, Xs, []) ->
    +map_pairs1(_Map, Xs, []) ->
         Xs;
    -map_pairs1(Map, [X|Xs], [Y|Ys]) ->
    -    [Map(X, Y)|map_pairs1(Map, Xs, Ys)].

    The first argument is not a problem. It is variable, but it is a variable in +map_pairs1(Map, [X|Xs], [Y|Ys]) -> + [Map(X, Y)|map_pairs1(Map, Xs, Ys)].

    The first argument is not a problem. It is variable, but it is a variable in all clauses. The problem is the variable in the second argument, Xs, in the middle clause. Because the variable can match anything, the compiler is not allowed to rearrange the clauses, but must generate code that matches them in the order written.

    If the function is rewritten as follows, the compiler is free to rearrange the -clauses:

    DO

    map_pairs2(_Map, [], Ys) ->
    +clauses:

    DO

    map_pairs2(_Map, [], Ys) ->
         Ys;
    -map_pairs2(_Map, [_|_]=Xs, [] ) ->
    +map_pairs2(_Map, [_|_]=Xs, [] ) ->
         Xs;
    -map_pairs2(Map, [X|Xs], [Y|Ys]) ->
    -    [Map(X, Y)|map_pairs2(Map, Xs, Ys)].

    The compiler will generate code similar to this:

    DO NOT (already done by the compiler)

    explicit_map_pairs(Map, Xs0, Ys0) ->
    +map_pairs2(Map, [X|Xs], [Y|Ys]) ->
    +    [Map(X, Y)|map_pairs2(Map, Xs, Ys)].

    The compiler will generate code similar to this:

    DO NOT (already done by the compiler)

    explicit_map_pairs(Map, Xs0, Ys0) ->
         case Xs0 of
    -	[X|Xs] ->
    +	[X|Xs] ->
     	    case Ys0 of
    -		[Y|Ys] ->
    -		    [Map(X, Y)|explicit_map_pairs(Map, Xs, Ys)];
    -		[] ->
    +		[Y|Ys] ->
    +		    [Map(X, Y)|explicit_map_pairs(Map, Xs, Ys)];
    +		[] ->
     		    Xs0
     	    end;
    -	[] ->
    +	[] ->
     	    Ys0
         end.

    This is slightly faster for probably the most common case that the input lists are not empty or very short. (Another advantage is that Dialyzer can deduce a /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_processes.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_processes.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_processes.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -28,37 +28,37 @@

    An Erlang process is lightweight compared to threads and processes in operating systems.

    A newly spawned Erlang process uses 327 words of memory. The size can be found -as follows:

    Erlang/OTP 27 [erts-14.2.3] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
    +as follows:

    Erlang/OTP 27 [erts-14.2.3] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
     
    -Eshell V14.2.3 (press Ctrl+G to abort, type help(). for help)
    -1> Fun = fun() -> receive after infinity -> ok end end.
    +Eshell V14.2.3 (press Ctrl+G to abort, type help(). for help)
    +1> Fun = fun() -> receive after infinity -> ok end end.
     #Fun<erl_eval.43.39164016>
    -2> {_,Bytes} = process_info(spawn(Fun), memory).
    -{memory,2616}
    -3> Bytes div erlang:system_info(wordsize).
    +2> {_,Bytes} = process_info(spawn(Fun), memory).
    +{memory,2616}
    +3> Bytes div erlang:system_info(wordsize).
     327

    The size includes 233 words for the heap area (which includes the stack). The garbage collector increases the heap as needed.

    The main (outer) loop for a process must be tail-recursive. Otherwise, the -stack grows until the process terminates.

    DO NOT

    loop() ->
    +stack grows until the process terminates.

    DO NOT

    loop() ->
       receive
    -     {sys, Msg} ->
    -         handle_sys_msg(Msg),
    -         loop();
    -     {From, Msg} ->
    -          Reply = handle_msg(Msg),
    +     {sys, Msg} ->
    +         handle_sys_msg(Msg),
    +         loop();
    +     {From, Msg} ->
    +          Reply = handle_msg(Msg),
               From ! Reply,
    -          loop()
    +          loop()
       end,
    -  io:format("Message is processed~n", []).

    The call to io:format/2 will never be executed, but a return address will + io:format("Message is processed~n", []).

    The call to io:format/2 will never be executed, but a return address will still be pushed to the stack each time loop/0 is called recursively. The -correct tail-recursive version of the function looks as follows:

    DO

    loop() ->
    +correct tail-recursive version of the function looks as follows:

    DO

    loop() ->
        receive
    -      {sys, Msg} ->
    -         handle_sys_msg(Msg),
    -         loop();
    -      {From, Msg} ->
    -         Reply = handle_msg(Msg),
    +      {sys, Msg} ->
    +         handle_sys_msg(Msg),
    +         loop();
    +      {From, Msg} ->
    +         Reply = handle_msg(Msg),
              From ! Reply,
    -         loop()
    +         loop()
      end.

    @@ -98,22 +98,22 @@

    The cost of receiving messages depends on how complicated the receive expression is. A simple expression that matches any message is very cheap because it retrieves the first message in the message queue:

    DO

    receive
    -    Message -> handle_msg(Message)
    +    Message -> handle_msg(Message)
     end.

    However, this is not always convenient: we can receive a message that we do not know how to handle at this point, so it is common to only match the messages we expect:

    receive
    -    {Tag, Message} -> handle_msg(Message)
    +    {Tag, Message} -> handle_msg(Message)
     end.

    While this is convenient it means that the entire message queue must be searched until it finds a matching message. This is very expensive for processes with long message queues, so there is an optimization for the common case of -sending a request and waiting for a response shortly after:

    DO

    MRef = monitor(process, Process),
    -Process ! {self(), MRef, Request},
    +sending a request and waiting for a response shortly after:

    DO

    MRef = monitor(process, Process),
    +Process ! {self(), MRef, Request},
     receive
    -    {MRef, Reply} ->
    -        erlang:demonitor(MRef, [flush]),
    -        handle_reply(Reply);
    -    {'DOWN', MRef, _, _, Reason} ->
    -        handle_error(Reason)
    +    {MRef, Reply} ->
    +        erlang:demonitor(MRef, [flush]),
    +        handle_reply(Reply);
    +    {'DOWN', MRef, _, _, Reason} ->
    +        handle_error(Reason)
     end.

    Since the compiler knows that the reference created by monitor/2 cannot exist before the call (since it is a globally unique identifier), and that the receive only matches messages that contain @@ -137,45 +137,45 @@ efficiency_guide.erl:222: Warning: OPTIMIZED: all clauses match reference in function parameter 1

    To make it clearer exactly what code the warnings refer to, the warnings in the following examples are inserted as comments after the clause they refer to, for example:

    %% DO
    -simple_receive() ->
    +simple_receive() ->
     %% efficiency_guide.erl:194: Warning: INFO: not a selective receive, this is always fast
     receive
    -    Message -> handle_msg(Message)
    +    Message -> handle_msg(Message)
     end.
     
     %% DO NOT, unless Tag is known to be a suitable reference: see
     %% cross_function_receive/0 further down.
    -selective_receive(Tag, Message) ->
    +selective_receive(Tag, Message) ->
     %% efficiency_guide.erl:200: Warning: NOT OPTIMIZED: all clauses do not match a suitable reference
     receive
    -    {Tag, Message} -> handle_msg(Message)
    +    {Tag, Message} -> handle_msg(Message)
     end.
     
     %% DO
    -optimized_receive(Process, Request) ->
    +optimized_receive(Process, Request) ->
     %% efficiency_guide.erl:206: Warning: OPTIMIZED: reference used to mark a message queue position
    -    MRef = monitor(process, Process),
    -    Process ! {self(), MRef, Request},
    +    MRef = monitor(process, Process),
    +    Process ! {self(), MRef, Request},
         %% efficiency_guide.erl:208: Warning: OPTIMIZED: matches reference created by monitor/2 at efficiency_guide.erl:206
         receive
    -        {MRef, Reply} ->
    -        erlang:demonitor(MRef, [flush]),
    -        handle_reply(Reply);
    -    {'DOWN', MRef, _, _, Reason} ->
    -    handle_error(Reason)
    +        {MRef, Reply} ->
    +        erlang:demonitor(MRef, [flush]),
    +        handle_reply(Reply);
    +    {'DOWN', MRef, _, _, Reason} ->
    +    handle_error(Reason)
         end.
     
     %% DO
    -cross_function_receive() ->
    +cross_function_receive() ->
         %% efficiency_guide.erl:218: Warning: OPTIMIZED: reference used to mark a message queue position
    -    Ref = make_ref(),
    +    Ref = make_ref(),
         %% efficiency_guide.erl:219: Warning: INFO: passing reference created by make_ref/0 at efficiency_guide.erl:218
    -    cross_function_receive(Ref).
    +    cross_function_receive(Ref).
     
    -cross_function_receive(Ref) ->
    +cross_function_receive(Ref) ->
         %% efficiency_guide.erl:222: Warning: OPTIMIZED: all clauses match reference in function parameter 1
         receive
    -        {Ref, Message} -> handle_msg(Message)
    +        {Ref, Message} -> handle_msg(Message)
         end.

    @@ -186,8 +186,8 @@ each loaded module has its own pool. The following function does not build the tuple every time it is called (only to have it discarded the next time the garbage collector was run), but the tuple is located in the module's literal -pool:

    DO

    days_in_month(M) ->
    -    element(M, {31,28,31,30,31,30,31,31,30,31,30,31}).

    If a literal, or a term that contains a literal, is inserted into an Ets table, +pool:

    DO

    days_in_month(M) ->
    +    element(M, {31,28,31,30,31,30,31,31,30,31,30,31}).

    If a literal, or a term that contains a literal, is inserted into an Ets table, it is copied. The reason is that the module containing the literal can be unloaded in the future.

    When a literal is sent to another process, it is not copied. When a module holding a literal is unloaded, the literal will be copied to the heap of all @@ -202,28 +202,28 @@ Loss of Sharing

    -

    An Erlang term can have shared subterms. Here is a simple example:

    {SubTerm, SubTerm}

    Shared subterms are not preserved in the following cases:

    • When a term is sent to another process
    • When a term is passed as the initial process arguments in the spawn call
    • When a term is stored in an Ets table

    That is an optimization. Most applications do not send messages with shared -subterms.

    The following example shows how a shared subterm can be created:

    kilo_byte() ->
    -    kilo_byte(10, [42]).
    +

    An Erlang term can have shared subterms. Here is a simple example:

    {SubTerm, SubTerm}

    Shared subterms are not preserved in the following cases:

    • When a term is sent to another process
    • When a term is passed as the initial process arguments in the spawn call
    • When a term is stored in an Ets table

    That is an optimization. Most applications do not send messages with shared +subterms.

    The following example shows how a shared subterm can be created:

    kilo_byte() ->
    +    kilo_byte(10, [42]).
     
    -kilo_byte(0, Acc) ->
    +kilo_byte(0, Acc) ->
         Acc;
    -kilo_byte(N, Acc) ->
    -    kilo_byte(N-1, [Acc|Acc]).

    kilo_byte/1 creates a deep list. If list_to_binary/1 +kilo_byte(N, Acc) -> + kilo_byte(N-1, [Acc|Acc]).

    kilo_byte/1 creates a deep list. If list_to_binary/1 is called, the deep list can be converted to a binary of 1024 bytes:

    1> byte_size(list_to_binary(efficiency_guide:kilo_byte())).
     1024

    Using the erts_debug:size/1 BIF, it can be seen that the deep list only -requires 22 words of heap space:

    2> erts_debug:size(efficiency_guide:kilo_byte()).
    +requires 22 words of heap space:

    2> erts_debug:size(efficiency_guide:kilo_byte()).
     22

    Using the erts_debug:flat_size/1 BIF, the size of the deep list can be calculated if sharing is ignored. It becomes the size of the list when it has -been sent to another process or stored in an Ets table:

    3> erts_debug:flat_size(efficiency_guide:kilo_byte()).
    +been sent to another process or stored in an Ets table:

    3> erts_debug:flat_size(efficiency_guide:kilo_byte()).
     4094

    It can be verified that sharing will be lost if the data is inserted into an Ets -table:

    4> T = ets:new(tab, []).
    +table:

    4> T = ets:new(tab, []).
     #Ref<0.1662103692.2407923716.214181>
    -5> ets:insert(T, {key,efficiency_guide:kilo_byte()}).
    +5> ets:insert(T, {key,efficiency_guide:kilo_byte()}).
     true
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/erl_interface.xhtml differs (HTML document, ASCII text, with very long lines)
    --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/erl_interface.xhtml"	2025-11-19 10:41:45.000000000 +0000
    +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/erl_interface.xhtml"	2041-12-22 00:00:05.000000000 +0000
    @@ -29,111 +29,111 @@
       Erlang Program
     

    The following example shows an Erlang program communicating with a C program -over a plain port with home made encoding:

    -module(complex1).
    --export([start/1, stop/0, init/1]).
    --export([foo/1, bar/1]).
    -
    -start(ExtPrg) ->
    -    spawn(?MODULE, init, [ExtPrg]).
    -stop() ->
    +over a plain port with home made encoding:

    -module(complex1).
    +-export([start/1, stop/0, init/1]).
    +-export([foo/1, bar/1]).
    +
    +start(ExtPrg) ->
    +    spawn(?MODULE, init, [ExtPrg]).
    +stop() ->
         complex ! stop.
     
    -foo(X) ->
    -    call_port({foo, X}).
    -bar(Y) ->
    -    call_port({bar, Y}).
    +foo(X) ->
    +    call_port({foo, X}).
    +bar(Y) ->
    +    call_port({bar, Y}).
     
    -call_port(Msg) ->
    -    complex ! {call, self(), Msg},
    +call_port(Msg) ->
    +    complex ! {call, self(), Msg},
         receive
    -	{complex, Result} ->
    +	{complex, Result} ->
     	    Result
         end.
     
    -init(ExtPrg) ->
    -    register(complex, self()),
    -    process_flag(trap_exit, true),
    -    Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
    -    loop(Port).
    +init(ExtPrg) ->
    +    register(complex, self()),
    +    process_flag(trap_exit, true),
    +    Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
    +    loop(Port).
     
    -loop(Port) ->
    +loop(Port) ->
         receive
    -	{call, Caller, Msg} ->
    -	    Port ! {self(), {command, encode(Msg)}},
    +	{call, Caller, Msg} ->
    +	    Port ! {self(), {command, encode(Msg)}},
     	    receive
    -		{Port, {data, Data}} ->
    -		    Caller ! {complex, decode(Data)}
    +		{Port, {data, Data}} ->
    +		    Caller ! {complex, decode(Data)}
     	    end,
    -	    loop(Port);
    +	    loop(Port);
     	stop ->
    -	    Port ! {self(), close},
    +	    Port ! {self(), close},
     	    receive
    -		{Port, closed} ->
    -		    exit(normal)
    +		{Port, closed} ->
    +		    exit(normal)
     	    end;
    -	{'EXIT', Port, Reason} ->
    -	    exit(port_terminated)
    +	{'EXIT', Port, Reason} ->
    +	    exit(port_terminated)
         end.
     
    -encode({foo, X}) -> [1, X];
    -encode({bar, Y}) -> [2, Y].
    +encode({foo, X}) -> [1, X];
    +encode({bar, Y}) -> [2, Y].
     
    -decode([Int]) -> Int.

    There are two differences when using Erl_Interface on the C side compared to the +decode([Int]) -> Int.

    There are two differences when using Erl_Interface on the C side compared to the example in Ports, using only the plain port:

    • As Erl_Interface operates on the Erlang external term format, the port must be set to use binaries.
    • Instead of inventing an encoding/decoding scheme, the term_to_binary/1 and -binary_to_term/1 BIFs are to be used.

    That is:

    open_port({spawn, ExtPrg}, [{packet, 2}])

    is replaced with:

    open_port({spawn, ExtPrg}, [{packet, 2}, binary])

    And:

    Port ! {self(), {command, encode(Msg)}},
    +binary_to_term/1 BIFs are to be used.

    That is:

    open_port({spawn, ExtPrg}, [{packet, 2}])

    is replaced with:

    open_port({spawn, ExtPrg}, [{packet, 2}, binary])

    And:

    Port ! {self(), {command, encode(Msg)}},
     receive
    -  {Port, {data, Data}} ->
    -    Caller ! {complex, decode(Data)}
    -end

    is replaced with:

    Port ! {self(), {command, term_to_binary(Msg)}},
    +  {Port, {data, Data}} ->
    +    Caller ! {complex, decode(Data)}
    +end

    is replaced with:

    Port ! {self(), {command, term_to_binary(Msg)}},
     receive
    -  {Port, {data, Data}} ->
    -    Caller ! {complex, binary_to_term(Data)}
    -end

    The resulting Erlang program is as follows:

    -module(complex2).
    --export([start/1, stop/0, init/1]).
    --export([foo/1, bar/1]).
    -
    -start(ExtPrg) ->
    -    spawn(?MODULE, init, [ExtPrg]).
    -stop() ->
    +  {Port, {data, Data}} ->
    +    Caller ! {complex, binary_to_term(Data)}
    +end

    The resulting Erlang program is as follows:

    -module(complex2).
    +-export([start/1, stop/0, init/1]).
    +-export([foo/1, bar/1]).
    +
    +start(ExtPrg) ->
    +    spawn(?MODULE, init, [ExtPrg]).
    +stop() ->
         complex ! stop.
     
    -foo(X) ->
    -    call_port({foo, X}).
    -bar(Y) ->
    -    call_port({bar, Y}).
    +foo(X) ->
    +    call_port({foo, X}).
    +bar(Y) ->
    +    call_port({bar, Y}).
     
    -call_port(Msg) ->
    -    complex ! {call, self(), Msg},
    +call_port(Msg) ->
    +    complex ! {call, self(), Msg},
         receive
    -	{complex, Result} ->
    +	{complex, Result} ->
     	    Result
         end.
     
    -init(ExtPrg) ->
    -    register(complex, self()),
    -    process_flag(trap_exit, true),
    -    Port = open_port({spawn, ExtPrg}, [{packet, 2}, binary]),
    -    loop(Port).
    +init(ExtPrg) ->
    +    register(complex, self()),
    +    process_flag(trap_exit, true),
    +    Port = open_port({spawn, ExtPrg}, [{packet, 2}, binary]),
    +    loop(Port).
     
    -loop(Port) ->
    +loop(Port) ->
         receive
    -	{call, Caller, Msg} ->
    -	    Port ! {self(), {command, term_to_binary(Msg)}},
    +	{call, Caller, Msg} ->
    +	    Port ! {self(), {command, term_to_binary(Msg)}},
     	    receive
    -		{Port, {data, Data}} ->
    -		    Caller ! {complex, binary_to_term(Data)}
    +		{Port, {data, Data}} ->
    +		    Caller ! {complex, binary_to_term(Data)}
     	    end,
    -	    loop(Port);
    +	    loop(Port);
     	stop ->
    -	    Port ! {self(), close},
    +	    Port ! {self(), close},
     	    receive
    -		{Port, closed} ->
    -		    exit(normal)
    +		{Port, closed} ->
    +		    exit(normal)
     	    end;
    -	{'EXIT', Port, Reason} ->
    -	    exit(port_terminated)
    +	{'EXIT', Port, Reason} ->
    +	    exit(port_terminated)
         end.

    Notice that calling complex2:foo/1 and complex2:bar/1 results in the tuple {foo,X} or {bar,Y} being sent to the complex process, which codes them as binaries and sends them to the port. This means that the C program must be able @@ -153,53 +153,53 @@ typedef unsigned char byte; -int read_cmd(byte *buf); -int write_cmd(byte *buf, int len); -int foo(int x); -int bar(int y); - -static void fail(int place) { - fprintf(stderr, "Something went wrong %d\n", place); - exit(1); -} +int read_cmd(byte *buf); +int write_cmd(byte *buf, int len); +int foo(int x); +int bar(int y); /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/error_logging.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/error_logging.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/error_logging.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -52,7 +52,7 @@ logger_sasl_compatible to true. For more information, see SASL Error Logging in the SASL User's Guide.

    % erl -kernel logger_level info
    -Erlang/OTP 21 [erts-10.0] [source-13c50db] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
    +Erlang/OTP 21 [erts-10.0] [source-13c50db] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
     
     =PROGRESS REPORT==== 8-Jun-2018::16:54:19.916404 ===
         application: kernel
    @@ -61,22 +61,22 @@
         application: stdlib
         started_at: nonode@nohost
     =PROGRESS REPORT==== 8-Jun-2018::16:54:19.925755 ===
    -    supervisor: {local,kernel_safe_sup}
    -    started: [{pid,<0.74.0>},
    -              {id,disk_log_sup},
    -              {mfargs,{disk_log_sup,start_link,[]}},
    -              {restart_type,permanent},
    -              {shutdown,1000},
    -              {child_type,supervisor}]
    +    supervisor: {local,kernel_safe_sup}
    +    started: [{pid,<0.74.0>},
    +              {id,disk_log_sup},
    +              {mfargs,{disk_log_sup,start_link,[]}},
    +              {restart_type,permanent},
    +              {shutdown,1000},
    +              {child_type,supervisor}]
     =PROGRESS REPORT==== 8-Jun-2018::16:54:19.926056 ===
    -    supervisor: {local,kernel_safe_sup}
    -    started: [{pid,<0.75.0>},
    -              {id,disk_log_server},
    -              {mfargs,{disk_log_server,start_link,[]}},
    -              {restart_type,permanent},
    -              {shutdown,2000},
    -              {child_type,worker}]
    -Eshell V10.0  (abort with ^G)
    +    supervisor: {local,kernel_safe_sup}
    +    started: [{pid,<0.75.0>},
    +              {id,disk_log_server},
    +              {mfargs,{disk_log_server,start_link,[]}},
    +              {restart_type,permanent},
    +              {shutdown,2000},
    +              {child_type,worker}]
    +Eshell V10.0  (abort with ^G)
     1>
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/errors.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/errors.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/errors.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -60,14 +60,14 @@ Exit Reason), and a stack trace (which aids in finding the code location of the exception).

    The stack trace can be bound to a variable from within a try expression for any exception class, or as part of the exit reason when a run-time error is -caught by a catch. Example:

    > {'EXIT',{test,Stacktrace}} = (catch error(test)), Stacktrace.
    -[{shell,apply_fun,3,[]},
    - {erl_eval,do_apply,6,[]},
    - ...]
    -> try throw(test) catch Class:Reason:Stacktrace -> Stacktrace end.
    -[{shell,apply_fun,3,[]},
    - {erl_eval,do_apply,6,[]},
    - ...]

    +caught by a catch. Example:

    > {'EXIT',{test,Stacktrace}} = (catch error(test)), Stacktrace.
    +[{shell,apply_fun,3,[]},
    + {erl_eval,do_apply,6,[]},
    + ...]
    +> try throw(test) catch Class:Reason:Stacktrace -> Stacktrace end.
    +[{shell,apply_fun,3,[]},
    + {erl_eval,do_apply,6,[]},
    + ...]

    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/events.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/events.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/events.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -44,35 +44,35 @@ Example

    The callback module for the event handler writing error messages to the terminal -can look as follows:

    -module(terminal_logger).
    --behaviour(gen_event).
    +can look as follows:

    -module(terminal_logger).
    +-behaviour(gen_event).
     
    --export([init/1, handle_event/2, terminate/2]).
    +-export([init/1, handle_event/2, terminate/2]).
     
    -init(_Args) ->
    -    {ok, []}.
    +init(_Args) ->
    +    {ok, []}.
     
    -handle_event(ErrorMsg, State) ->
    -    io:format("***Error*** ~p~n", [ErrorMsg]),
    -    {ok, State}.
    +handle_event(ErrorMsg, State) ->
    +    io:format("***Error*** ~p~n", [ErrorMsg]),
    +    {ok, State}.
     
    -terminate(_Args, _State) ->
    +terminate(_Args, _State) ->
         ok.

    The callback module for the event handler writing error messages to a file can -look as follows:

    -module(file_logger).
    --behaviour(gen_event).
    +look as follows:

    -module(file_logger).
    +-behaviour(gen_event).
     
    --export([init/1, handle_event/2, terminate/2]).
    +-export([init/1, handle_event/2, terminate/2]).
     
    -init(File) ->
    -    {ok, Fd} = file:open(File, read),
    -    {ok, Fd}.
    -
    -handle_event(ErrorMsg, Fd) ->
    -    io:format(Fd, "***Error*** ~p~n", [ErrorMsg]),
    -    {ok, Fd}.
    +init(File) ->
    +    {ok, Fd} = file:open(File, read),
    +    {ok, Fd}.
    +
    +handle_event(ErrorMsg, Fd) ->
    +    io:format(Fd, "***Error*** ~p~n", [ErrorMsg]),
    +    {ok, Fd}.
     
    -terminate(_Args, Fd) ->
    -    file:close(Fd).

    The code is explained in the next sections.

    +terminate(_Args, Fd) -> + file:close(Fd).

    The code is explained in the next sections.

    @@ -93,19 +93,19 @@ Adding an Event Handler

    The following example shows how to start an event manager and add an event -handler to it by using the shell:

    1> gen_event:start({local, error_man}).
    -{ok,<0.31.0>}
    -2> gen_event:add_handler(error_man, terminal_logger, []).
    +handler to it by using the shell:

    1> gen_event:start({local, error_man}).
    +{ok,<0.31.0>}
    +2> gen_event:add_handler(error_man, terminal_logger, []).
     ok

    This function sends a message to the event manager registered as error_man, telling it to add the event handler terminal_logger. The event manager calls the callback function terminal_logger:init([]), where the argument [] is the third argument to add_handler. init/1 is expected to return {ok, State}, -where State is the internal state of the event handler.

    init(_Args) ->
    -    {ok, []}.

    Here, init/1 does not need any input data and ignores its argument. For +where State is the internal state of the event handler.

    init(_Args) ->
    +    {ok, []}.

    Here, init/1 does not need any input data and ignores its argument. For terminal_logger, the internal state is not used. For file_logger, the -internal state is used to save the open file descriptor.

    init(File) ->
    -    {ok, Fd} = file:open(File, read),
    -    {ok, Fd}.

    +internal state is used to save the open file descriptor.

    init(File) ->
    +    {ok, Fd} = file:open(File, read),
    +    {ok, Fd}.

    @@ -117,25 +117,25 @@ is received, the event manager calls handle_event(Event, State) for each installed event handler, in the same order as they were added. The function is expected to return a tuple {ok,State1}, where State1 is a new value for the -state of the event handler.

    In terminal_logger:

    handle_event(ErrorMsg, State) ->
    -    io:format("***Error*** ~p~n", [ErrorMsg]),
    -    {ok, State}.

    In file_logger:

    handle_event(ErrorMsg, Fd) ->
    -    io:format(Fd, "***Error*** ~p~n", [ErrorMsg]),
    -    {ok, Fd}.

    +state of the event handler.

    In terminal_logger:

    handle_event(ErrorMsg, State) ->
    +    io:format("***Error*** ~p~n", [ErrorMsg]),
    +    {ok, State}.

    In file_logger:

    handle_event(ErrorMsg, Fd) ->
    +    io:format(Fd, "***Error*** ~p~n", [ErrorMsg]),
    +    {ok, Fd}.

    Deleting an Event Handler

    -
    4> gen_event:delete_handler(error_man, terminal_logger, []).
    +
    4> gen_event:delete_handler(error_man, terminal_logger, []).
     ok

    This function sends a message to the event manager registered as error_man, telling it to delete the event handler terminal_logger. The event manager calls the callback function terminal_logger:terminate([], State), where the argument [] is the third argument to delete_handler. terminate/2 is to be the opposite of init/1 and do any necessary cleaning up. Its return value is -ignored.

    For terminal_logger, no cleaning up is necessary:

    terminate(_Args, _State) ->
    -    ok.

    For file_logger, the file descriptor opened in init must be closed:

    terminate(_Args, Fd) ->
    -    file:close(Fd).

    +ignored.

    For terminal_logger, no cleaning up is necessary:

    terminate(_Args, _State) ->
    +    ok.

    For file_logger, the file descriptor opened in init must be closed:

    terminate(_Args, Fd) ->
    +    file:close(Fd).

    @@ -158,7 +158,7 @@ Standalone Event Managers

    -

    An event manager can also be stopped by calling:

    1> gen_event:stop(error_man).
    +

    An event manager can also be stopped by calling:

    1> gen_event:stop(error_man).
     ok

    @@ -170,13 +170,13 @@ implemented to handle them. Examples of other messages are exit messages if the event manager is linked to other processes than the supervisor (for example via gen_event:add_sup_handler/3) and is -trapping exit signals.

    handle_info({'EXIT', Pid, Reason}, State) ->
    +trapping exit signals.

    handle_info({'EXIT', Pid, Reason}, State) ->
         %% Code to handle exits here.
         ...
    -    {noreply, State1}.

    The final function to implement is code_change/3:

    code_change(OldVsn, State, Extra) ->
    +    {noreply, State1}.

    The final function to implement is code_change/3:

    code_change(OldVsn, State, Extra) ->
         %% Code to convert state (and more) during code change.
         ...
    -    {ok, NewState}.
    +
    {ok, NewState}.
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/example.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/example.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/example.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -30,17 +30,17 @@ code, solving a complex problem, in your Erlang program. Suppose for example, that you have the following C functions that you would like to call from Erlang:

    /* complex.c */
     
    -int foo(int x) {
    +int foo(int x) {
       return x+1;
    -}
    +}
     
    -int bar(int y) {
    +int bar(int y) {
       return y*2;
    -}

    The functions are deliberately kept as simple as possible, for readability +}

    The functions are deliberately kept as simple as possible, for readability reasons.

    From an Erlang perspective, it is preferable to be able to call foo and bar without having to bother about that they are C functions:

    % Erlang code
     ...
    -Res = complex:foo(X),
    +Res = complex:foo(X),
     ...

    Here, the communication with C is hidden in the implementation of complex.erl. In the following sections, it is shown how this module can be implemented using the different interoperability mechanisms.

    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/expressions.xhtml differs (HTML document, UTF-8 Unicode text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/expressions.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/expressions.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -60,12 +60,12 @@ single assignment, that is, a variable can only be bound once.

    The anonymous variable is denoted by underscore (_) and can be used when a variable is required but its value can be ignored.

    Example:

    [H|_] = [1,2,3]

    Variables starting with underscore (_), for example, _Height, are normal variables, not anonymous. However, they are ignored by the compiler in the sense -that they do not generate warnings.

    Example:

    The following code:

    member(_, []) ->
    -    [].

    can be rewritten to be more readable:

    member(Elem, []) ->
    -    [].

    This causes a warning for an unused variable, Elem. To avoid the warning, -the code can be rewritten to:

    member(_Elem, []) ->
    -    [].

    Notice that since variables starting with an underscore are not anonymous, the -following example matches:

    {_,_} = {1,2}

    But this example fails:

    {_N,_N} = {1,2}

    The scope for a variable is its function clause. Variables bound in a branch of +that they do not generate warnings.

    Example:

    The following code:

    member(_, []) ->
    +    [].

    can be rewritten to be more readable:

    member(Elem, []) ->
    +    [].

    This causes a warning for an unused variable, Elem. To avoid the warning, +the code can be rewritten to:

    member(_Elem, []) ->
    +    [].

    Notice that since variables starting with an underscore are not anonymous, the +following example matches:

    {_,_} = {1,2}

    But this example fails:

    {_N,_N} = {1,2}

    The scope for a variable is its function clause. Variables bound in a branch of an if, case, or receive expression must be bound in all branches to have a value outside the expression. Otherwise they are regarded as unsafe outside the expression.

    For the try expression variable scoping is limited so that variables bound in @@ -76,8 +76,8 @@ Patterns

    A pattern has the same structure as a term but can contain unbound variables.

    Example:

    Name1
    -[H|T]
    -{error,Reason}

    Patterns are allowed in clause heads, case expressions, +[H|T] +{error,Reason}

    Patterns are allowed in clause heads, case expressions, receive expressions, and match expressions.

    @@ -87,13 +87,13 @@

    If Pattern1 and Pattern2 are valid patterns, the following is also a valid pattern:

    Pattern1 = Pattern2

    When matched against a term, both Pattern1 and Pattern2 are matched against -the term. The idea behind this feature is to avoid reconstruction of terms.

    Example:

    f({connect,From,To,Number,Options}, To) ->
    -    Signal = {connect,From,To,Number,Options},
    +the term. The idea behind this feature is to avoid reconstruction of terms.

    Example:

    f({connect,From,To,Number,Options}, To) ->
    +    Signal = {connect,From,To,Number,Options},
         ...;
    -f(Signal, To) ->
    -    ignore.

    can instead be written as

    f({connect,_,To,_,_} = Signal, To) ->
    +f(Signal, To) ->
    +    ignore.

    can instead be written as

    f({connect,_,To,_,_} = Signal, To) ->
         ...;
    -f(Signal, To) ->
    +f(Signal, To) ->
         ignore.

    The compound pattern operator does not imply that its operands are matched in any particular order. That means that it is not legal to bind a variable in Pattern1 and use it in Pattern2, or vice versa.

    @@ -102,15 +102,15 @@ String Prefix in Patterns

    -

    When matching strings, the following is a valid pattern:

    f("prefix" ++ Str) -> ...

    This is syntactic sugar for the equivalent, but harder to read:

    f([$p,$r,$e,$f,$i,$x | Str]) -> ...

    +

    When matching strings, the following is a valid pattern:

    f("prefix" ++ Str) -> ...

    This is syntactic sugar for the equivalent, but harder to read:

    f([$p,$r,$e,$f,$i,$x | Str]) -> ...

    Expressions in Patterns

    An arithmetic expression can be used within a pattern if it meets both of the -following two conditions:

    • It uses only numeric or bitwise operators.
    • Its value can be evaluated to a constant when complied.

    Example:

    case {Value, Result} of
    -    {?THRESHOLD+1, ok} -> ...

    +following two conditions:

    • It uses only numeric or bitwise operators.
    • Its value can be evaluated to a constant when complied.

    Example:

    case {Value, Result} of
    +    {?THRESHOLD+1, ok} -> ...

    @@ -118,15 +118,15 @@

    The following matches Pattern against Expr:

    Pattern = Expr

    If the matching succeeds, any unbound variable in the pattern becomes bound and the value of Expr is returned.

    If multiple match operators are applied in sequence, they will be evaluated from -right to left.

    If the matching fails, a badmatch run-time error occurs.

    Examples:

    1> {A, B} = T = {answer, 42}.
    -{answer,42}
    +right to left.

    If the matching fails, a badmatch run-time error occurs.

    Examples:

    1> {A, B} = T = {answer, 42}.
    +{answer,42}
     2> A.
     answer
     3> B.
     42
     4> T.
    -{answer,42}
    -5> {C, D} = [1, 2].
    +{answer,42}
    +5> {C, D} = [1, 2].
     ** exception error: no match of right-hand side value [1,2]

    Because multiple match operators are evaluated from right to left, it means that:

    Pattern1 = Pattern2 = . . . = PatternN = Expression

    is equivalent to:

    Temporary = Expression,
     PatternN = Temporary,
    @@ -148,20 +148,20 @@
     compound pattern matches if all of its constituent patterns match. It is not
     legal for a pattern that is part of a compound pattern to use variables (as keys
     in map patterns or sizes in binary patterns) bound in other sub patterns of the
    -same compound pattern.

    Examples:

    1> fun(#{Key := Value} = #{key := Key}) -> Value end.
    +same compound pattern.

    Examples:

    1> fun(#{Key := Value} = #{key := Key}) -> Value end.
     * 1:7: variable 'Key' is unbound
    -2> F = fun({A, B} = E) -> {E, A + B} end, F({1,2}).
    -{{1,2},3}
    -3> G = fun(<<A:8,B:8>> = <<C:16>>) -> {A, B, C} end, G(<<42,43>>).
    -{42,43,10795}

    The match operator is allowed everywhere an expression is allowed. It is used +2> F = fun({A, B} = E) -> {E, A + B} end, F({1,2}). +{{1,2},3} +3> G = fun(<<A:8,B:8>> = <<C:16>>) -> {A, B, C} end, G(<<42,43>>). +{42,43,10795}

    The match operator is allowed everywhere an expression is allowed. It is used to match the value of an expression to a pattern. If multiple match operators -are applied in sequence, they will be evaluated from right to left.

    Examples:

    1> M = #{key => key2, key2 => value}.
    -#{key => key2,key2 => value}
    -2> f(Key), #{Key := Value} = #{key := Key} = M, Value.
    +are applied in sequence, they will be evaluated from right to left.

    Examples:

    1> M = #{key => key2, key2 => value}.
    +#{key => key2,key2 => value}
    +2> f(Key), #{Key := Value} = #{key := Key} = M, Value.
     value
    -3> f(Key), #{Key := Value} = (#{key := Key} = M), Value.
    +3> f(Key), #{Key := Value} = (#{key := Key} = M), Value.
     value
    -4> f(Key), (#{Key := Value} = #{key := Key}) = M, Value.
    +4> f(Key), (#{Key := Value} = #{key := Key}) = M, Value.
     * 1:12: variable 'Key' is unbound
     5> <<X:Y>> = begin Y = 8, <<42:8>> end, X.
     42

    The expression at prompt 2> first matches the value of variable M against @@ -185,22 +185,22 @@ Function Calls -

    ExprF(Expr1,...,ExprN)
    -ExprM:ExprF(Expr1,...,ExprN)

    In the first form of function calls, ExprM:ExprF(Expr1,...,ExprN), each of +

    ExprF(Expr1,...,ExprN)
    +ExprM:ExprF(Expr1,...,ExprN)

    In the first form of function calls, ExprM:ExprF(Expr1,...,ExprN), each of ExprM and ExprF must be an atom or an expression that evaluates to an atom. The function is said to be called by using the fully qualified function name. -This is often referred to as a remote or external function call.

    Example:

    lists:keyfind(Name, 1, List)

    In the second form of function calls, ExprF(Expr1,...,ExprN), ExprF must be +This is often referred to as a remote or external function call.

    Example:

    lists:keyfind(Name, 1, List)

    In the second form of function calls, ExprF(Expr1,...,ExprN), ExprF must be an atom or evaluate to a fun.

    If ExprF is an atom, the function is said to be called by using the implicitly qualified function name. If the function ExprF is locally defined, it is called. Alternatively, if ExprF is explicitly imported from the M module, M:ExprF(Expr1,...,ExprN) is called. If ExprF is neither declared locally nor explicitly imported, ExprF must be the name of an automatically -imported BIF.

    Examples:

    handle(Msg, State)
    -spawn(m, init, [])

    Examples where ExprF is a fun:

    1> Fun1 = fun(X) -> X+1 end,
    -Fun1(3).
    +imported BIF.

    Examples:

    handle(Msg, State)
    +spawn(m, init, [])

    Examples where ExprF is a fun:

    1> Fun1 = fun(X) -> X+1 end,
    +Fun1(3).
     4
    -2> fun lists:append/2([1,2], [3,4]).
    -[1,2,3,4]
    +2> fun lists:append/2([1,2], [3,4]).
    +[1,2,3,4]
     3>

    Notice that when calling a local function, there is a difference between using the implicitly or fully qualified function name. The latter always refers to the latest version of the module. See @@ -225,32 +225,32 @@ (ERTS version 5.8) and have an implicitly qualified call to that function in your code, you either need to explicitly remove the auto-import using a compiler directive, or replace the call with a fully qualified function call. Otherwise -you get a compilation error. See the following example:

    -export([length/1,f/1]).
    +you get a compilation error. See the following example:

    -export([length/1,f/1]).
     
    --compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
    +-compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
     
    -length([]) ->
    +length([]) ->
         0;
    -length([H|T]) ->
    -    1 + length(T). %% Calls the local function length/1
    +length([H|T]) ->
    +    1 + length(T). %% Calls the local function length/1
     
    -f(X) when erlang:length(X) > 3 -> %% Calls erlang:length/1,
    +f(X) when erlang:length(X) > 3 -> %% Calls erlang:length/1,
                                       %% which is allowed in guards
         long.

    The same logic applies to explicitly imported functions from other modules, as to locally defined functions. It is not allowed to both import a function from -another module and have the function declared in the module at the same time:

    -export([f/1]).
    +another module and have the function declared in the module at the same time:

    -export([f/1]).
     
    --compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
    +-compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
     
    --import(mod,[length/1]).
    +-import(mod,[length/1]).
     
    -f(X) when erlang:length(X) > 33 -> %% Calls erlang:length/1,
    +f(X) when erlang:length(X) > 33 -> %% Calls erlang:length/1,
                                        %% which is allowed in guards
     
    -    erlang:length(X);              %% Explicit call to erlang:length in body
    +    erlang:length(X);              %% Explicit call to erlang:length in body
     
    -f(X) ->
    -    length(X).                     %% mod:length/1 is called

    For auto-imported BIFs added in Erlang/OTP R14A and thereafter, overriding the +f(X) -> + length(X). %% mod:length/1 is called

    For auto-imported BIFs added in Erlang/OTP R14A and thereafter, overriding the name with a local function or explicit import is always allowed. However, if the -compile({no_auto_import,[F/A]) directive is not used, the compiler issues a warning whenever the function is called in the module using the implicitly @@ -270,7 +270,7 @@ sequence GuardSeq that evaluates to true is found. Then the corresponding /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/funs.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/funs.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/funs.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -26,14 +26,14 @@ map -

    The following function, double, doubles every element in a list:

    double([H|T]) -> [2*H|double(T)];
    -double([])    -> [].

    Hence, the argument entered as input is doubled as follows:

    > double([1,2,3,4]).
    -[2,4,6,8]

    The following function, add_one, adds one to every element in a list:

    add_one([H|T]) -> [H+1|add_one(T)];
    -add_one([])    -> [].

    The functions double and add_one have a similar structure. This can be used -by writing a function map that expresses this similarity:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    -map(F, [])    -> [].

    The functions double and add_one can now be expressed in terms of map as -follows:

    double(L)  -> map(fun(X) -> 2*X end, L).
    -add_one(L) -> map(fun(X) -> 1 + X end, L).

    map(F, List) is a function that takes a function F and a list L as +

    The following function, double, doubles every element in a list:

    double([H|T]) -> [2*H|double(T)];
    +double([])    -> [].

    Hence, the argument entered as input is doubled as follows:

    > double([1,2,3,4]).
    +[2,4,6,8]

    The following function, add_one, adds one to every element in a list:

    add_one([H|T]) -> [H+1|add_one(T)];
    +add_one([])    -> [].

    The functions double and add_one have a similar structure. This can be used +by writing a function map that expresses this similarity:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    +map(F, [])    -> [].

    The functions double and add_one can now be expressed in terms of map as +follows:

    double(L)  -> map(fun(X) -> 2*X end, L).
    +add_one(L) -> map(fun(X) -> 1 + X end, L).

    map(F, List) is a function that takes a function F and a list L as arguments and returns a new list, obtained by applying F to each of the elements in L.

    The process of abstracting out the common features of a number of different programs is called procedural abstraction. Procedural abstraction can be used @@ -47,21 +47,21 @@ foreach

    This section illustrates procedural abstraction. Initially, the following two -examples are written as conventional functions.

    This function prints all elements of a list onto a stream:

    print_list(Stream, [H|T]) ->
    -    io:format(Stream, "~p~n", [H]),
    -    print_list(Stream, T);
    -print_list(Stream, []) ->
    -    true.

    This function broadcasts a message to a list of processes:

    broadcast(Msg, [Pid|Pids]) ->
    +examples are written as conventional functions.

    This function prints all elements of a list onto a stream:

    print_list(Stream, [H|T]) ->
    +    io:format(Stream, "~p~n", [H]),
    +    print_list(Stream, T);
    +print_list(Stream, []) ->
    +    true.

    This function broadcasts a message to a list of processes:

    broadcast(Msg, [Pid|Pids]) ->
         Pid ! Msg,
    -    broadcast(Msg, Pids);
    -broadcast(_, []) ->
    +    broadcast(Msg, Pids);
    +broadcast(_, []) ->
         true.

    These two functions have a similar structure. They both iterate over a list and do something to each element in the list. The "something" is passed on as an -extra argument to the function that does this.

    The function foreach expresses this similarity:

    foreach(F, [H|T]) ->
    -    F(H),
    -    foreach(F, T);
    -foreach(F, []) ->
    -    ok.

    Using the function foreach, the function print_list becomes:

    foreach(fun(H) -> io:format(S, "~p~n",[H]) end, L)

    Using the function foreach, the function broadcast becomes:

    foreach(fun(Pid) -> Pid ! M end, L)

    foreach is evaluated for its side-effect and not its value. foreach(Fun ,L) +extra argument to the function that does this.

    The function foreach expresses this similarity:

    foreach(F, [H|T]) ->
    +    F(H),
    +    foreach(F, T);
    +foreach(F, []) ->
    +    ok.

    Using the function foreach, the function print_list becomes:

    foreach(fun(H) -> io:format(S, "~p~n",[H]) end, L)

    Using the function foreach, the function broadcast becomes:

    foreach(fun(Pid) -> Pid ! M end, L)

    foreach is evaluated for its side-effect and not its value. foreach(Fun ,L) calls Fun(X) for each element X in L and the processing occurs in the order that the elements were defined in L. map does not define the order in which its elements are processed.

    @@ -71,24 +71,24 @@ Syntax of Funs

    Funs are written with the following syntax (see -Fun Expressions for full description):

    F = fun (Arg1, Arg2, ... ArgN) ->
    +Fun Expressions for full description):

    F = fun (Arg1, Arg2, ... ArgN) ->
             ...
         end

    This creates an anonymous function of N arguments and binds it to the variable F.

    Another function, FunctionName, written in the same module, can be passed as an argument, using the following syntax:

    F = fun FunctionName/Arity

    With this form of function reference, the function that is referred to does not need to be exported from the module.

    It is also possible to refer to a function defined in a different module, with -the following syntax:

    F = fun Module:FunctionName/Arity

    In this case, the function must be exported from the module in question.

    The following program illustrates the different ways of creating funs:

    -module(fun_test).
    --export([t1/0, t2/0]).
    --import(lists, [map/2]).
    +the following syntax:

    F = fun Module:FunctionName/Arity

    In this case, the function must be exported from the module in question.

    The following program illustrates the different ways of creating funs:

    -module(fun_test).
    +-export([t1/0, t2/0]).
    +-import(lists, [map/2]).
     
    -t1() -> map(fun(X) -> 2 * X end, [1,2,3,4,5]).
    +t1() -> map(fun(X) -> 2 * X end, [1,2,3,4,5]).
     
    -t2() -> map(fun double/1, [1,2,3,4,5]).
    +t2() -> map(fun double/1, [1,2,3,4,5]).
     
    -double(X) -> X * 2.

    The fun F can be evaluated with the following syntax:

    F(Arg1, Arg2, ..., Argn)

    To check whether a term is a fun, use the test -is_function/1 in a guard.

    Example:

    f(F, Args) when is_function(F) ->
    -   apply(F, Args);
    -f(N, _) when is_integer(N) ->
    +double(X) -> X * 2.

    The fun F can be evaluated with the following syntax:

    F(Arg1, Arg2, ..., Argn)

    To check whether a term is a fun, use the test +is_function/1 in a guard.

    Example:

    f(F, Args) when is_function(F) ->
    +   apply(F, Args);
    +f(N, _) when is_integer(N) ->
        N.

    Funs are a distinct type. The BIFs erlang:fun_info/1,2 can be used to retrieve information about a fun, and the BIF erlang:fun_to_list/1 returns a textual representation of a fun. The check_process_code/2 @@ -101,18 +101,18 @@

    The scope rules for variables that occur in funs are as follows:

    • All variables that occur in the head of a fun are assumed to be "fresh" variables.
    • Variables that are defined before the fun, and that occur in function calls or -guard tests within the fun, have the values they had outside the fun.
    • Variables cannot be exported from a fun.

    The following examples illustrate these rules:

    print_list(File, List) ->
    -    {ok, Stream} = file:open(File, write),
    -    foreach(fun(X) -> io:format(Stream,"~p~n",[X]) end, List),
    -    file:close(Stream).

    Here, the variable X, defined in the head of the fun, is a new variable. The +guard tests within the fun, have the values they had outside the fun.

  • Variables cannot be exported from a fun.
  • The following examples illustrate these rules:

    print_list(File, List) ->
    +    {ok, Stream} = file:open(File, write),
    +    foreach(fun(X) -> io:format(Stream,"~p~n",[X]) end, List),
    +    file:close(Stream).

    Here, the variable X, defined in the head of the fun, is a new variable. The variable Stream, which is used within the fun, gets its value from the file:open line.

    As any variable that occurs in the head of a fun is considered a new variable, -it is equally valid to write as follows:

    print_list(File, List) ->
    -    {ok, Stream} = file:open(File, write),
    -    foreach(fun(File) ->
    -                io:format(Stream,"~p~n",[File])
    -            end, List),
    -    file:close(Stream).

    Here, File is used as the new variable instead of X. This is not so wise +it is equally valid to write as follows:

    print_list(File, List) ->
    +    {ok, Stream} = file:open(File, write),
    +    foreach(fun(File) ->
    +                io:format(Stream,"~p~n",[File])
    +            end, List),
    +    file:close(Stream).

    Here, File is used as the new variable instead of X. This is not so wise because code in the fun body cannot refer to the variable File, which is defined outside of the fun. Compiling this example gives the following diagnostic:

    ./FileName.erl:Line: Warning: variable 'File'
    @@ -121,20 +121,20 @@
     pattern matching operations must be moved into guard expressions and cannot be
     written in the head of the fun. For example, you might write the following code
     if you intend the first clause of F to be evaluated when the value of its
    -argument is Y:

    f(...) ->
    +argument is Y:

    f(...) ->
         Y = ...
    -    map(fun(X) when X == Y ->
    +    map(fun(X) when X == Y ->
                  ;
    -           (_) ->
    +           (_) ->
                  ...
    -        end, ...)
    -    ...

    instead of writing the following code:

    f(...) ->
    +        end, ...)
    +    ...

    instead of writing the following code:

    f(...) ->
         Y = ...
    -    map(fun(Y) ->
    +    map(fun(Y) ->
                  ;
    -           (_) ->
    +           (_) ->
                  ...
    -        end, ...)
    +        end, ...)
         ...

    @@ -148,58 +148,58 @@ map

    -

    lists:map/2 takes a function of one argument and a list of terms:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    -map(F, [])    -> [].

    It returns the list obtained by applying the function to every argument in the +

    lists:map/2 takes a function of one argument and a list of terms:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    +map(F, [])    -> [].

    It returns the list obtained by applying the function to every argument in the list.

    When a new fun is defined in the shell, the value of the fun is printed as -Fun#<erl_eval>:

    > Double = fun(X) -> 2 * X end.
    +Fun#<erl_eval>:

    > Double = fun(X) -> 2 * X end.
     #Fun<erl_eval.6.72228031>
    -> lists:map(Double, [1,2,3,4,5]).
    -[2,4,6,8,10]

    +> lists:map(Double, [1,2,3,4,5]). +[2,4,6,8,10]

    any

    -

    lists:any/2 takes a predicate P of one argument and a list of terms:

    any(Pred, [H|T]) ->
    -    case Pred(H) of
    +

    lists:any/2 takes a predicate P of one argument and a list of terms:

    any(Pred, [H|T]) ->
    +    case Pred(H) of
             true  ->  true;
    -        false ->  any(Pred, T)
    +        false ->  any(Pred, T)
         end;
    -any(Pred, []) ->
    +any(Pred, []) ->
         false.

    A predicate is a function that returns true or false. any is true if there is a term X in the list such that P(X) is true.

    A predicate Big(X) is defined, which is true if its argument is greater that -10:

    > Big =  fun(X) -> if X > 10 -> true; true -> false end end.
    +10:

    > Big =  fun(X) -> if X > 10 -> true; true -> false end end.
     #Fun<erl_eval.6.72228031>
    -> lists:any(Big, [1,2,3,4]).
    +> lists:any(Big, [1,2,3,4]).
     false
    -> lists:any(Big, [1,2,3,12,5]).
    +> lists:any(Big, [1,2,3,12,5]).
     true

    all

    -

    lists:all/2 has the same arguments as any:

    all(Pred, [H|T]) ->
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/gen_server_concepts.xhtml differs (HTML document, ASCII text, with very long lines)
    --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/gen_server_concepts.xhtml"	2025-11-19 10:41:45.000000000 +0000
    +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/gen_server_concepts.xhtml"	2041-12-22 00:00:05.000000000 +0000
    @@ -66,40 +66,40 @@
     
     

    An example of a simple server written in plain Erlang is provided in Overview. The server can be reimplemented using -gen_server, resulting in this callback module:

    -module(ch3).
    --behaviour(gen_server).
    +gen_server, resulting in this callback module:

    -module(ch3).
    +-behaviour(gen_server).
     
    --export([start_link/0]).
    --export([alloc/0, free/1]).
    --export([init/1, handle_call/3, handle_cast/2]).
    +-export([start_link/0]).
    +-export([alloc/0, free/1]).
    +-export([init/1, handle_call/3, handle_cast/2]).
     
    -start_link() ->
    -    gen_server:start_link({local, ch3}, ch3, [], []).
    +start_link() ->
    +    gen_server:start_link({local, ch3}, ch3, [], []).
     
    -alloc() ->
    -    gen_server:call(ch3, alloc).
    +alloc() ->
    +    gen_server:call(ch3, alloc).
     
    -free(Ch) ->
    -    gen_server:cast(ch3, {free, Ch}).
    +free(Ch) ->
    +    gen_server:cast(ch3, {free, Ch}).
     
    -init(_Args) ->
    -    {ok, channels()}.
    +init(_Args) ->
    +    {ok, channels()}.
     
    -handle_call(alloc, _From, Chs) ->
    -    {Ch, Chs2} = alloc(Chs),
    -    {reply, Ch, Chs2}.
    +handle_call(alloc, _From, Chs) ->
    +    {Ch, Chs2} = alloc(Chs),
    +    {reply, Ch, Chs2}.
     
    -handle_cast({free, Ch}, Chs) ->
    -    Chs2 = free(Ch, Chs),
    -    {noreply, Chs2}.

    The code is explained in the next sections.

    +handle_cast({free, Ch}, Chs) -> + Chs2 = free(Ch, Chs), + {noreply, Chs2}.

    The code is explained in the next sections.

    Starting a Gen_Server

    In the example in the previous section, gen_server is started by calling -ch3:start_link():

    start_link() ->
    -    gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}

    start_link/0 calls function gen_server:start_link/4. This function +ch3:start_link():

    start_link() ->
    +    gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}

    start_link/0 calls function gen_server:start_link/4. This function spawns and links to a new process, a gen_server.

    • The first argument, {local, ch3}, specifies the name. The gen_server is then locally registered as ch3.

      If the name is omitted, the gen_server is not registered. Instead its pid must be used. The name can also be given as {global, Name}, in which case @@ -113,8 +113,8 @@ for the available options.

    If name registration succeeds, the new gen_server process calls the callback function ch3:init([]). init is expected to return {ok, State}, where State is the internal state of the gen_server. In this case, the state is -the available channels.

    init(_Args) ->
    -    {ok, channels()}.

    gen_server:start_link/4 is synchronous. It does not return until the +the available channels.

    init(_Args) ->
    +    {ok, channels()}.

    gen_server:start_link/4 is synchronous. It does not return until the gen_server has been initialized and is ready to receive requests.

    gen_server:start_link/4 must be used if the gen_server is part of a supervision tree, meaning that it was started by a supervisor. There is another function, gen_server:start/4, to start a standalone @@ -130,9 +130,9 @@ When the request is received, the gen_server calls handle_call(Request, From, State), which is expected to return a tuple {reply,Reply,State1}. Reply is the reply that is to be sent back -to the client, and State1 is a new value for the state of the gen_server.

    handle_call(alloc, _From, Chs) ->
    -    {Ch, Chs2} = alloc(Chs),
    -    {reply, Ch, Chs2}.

    In this case, the reply is the allocated channel Ch and the new state is the +to the client, and State1 is a new value for the state of the gen_server.

    handle_call(alloc, _From, Chs) ->
    +    {Ch, Chs2} = alloc(Chs),
    +    {reply, Ch, Chs2}.

    In this case, the reply is the allocated channel Ch and the new state is the set of remaining available channels Chs2.

    Thus, the call ch3:alloc() returns the allocated channel Ch and the gen_server then waits for new requests, now with an updated list of available channels.

    @@ -141,13 +141,13 @@ Asynchronous Requests - Cast

    -

    The asynchronous request free(Ch) is implemented using gen_server:cast/2:

    free(Ch) ->
    -    gen_server:cast(ch3, {free, Ch}).

    ch3 is the name of the gen_server. {free, Ch} is the actual request.

    The request is made into a message and sent to the gen_server. +

    The asynchronous request free(Ch) is implemented using gen_server:cast/2:

    free(Ch) ->
    +    gen_server:cast(ch3, {free, Ch}).

    ch3 is the name of the gen_server. {free, Ch} is the actual request.

    The request is made into a message and sent to the gen_server. cast, and thus free, then returns ok.

    When the request is received, the gen_server calls handle_cast(Request, State), which is expected to return a tuple -{noreply,State1}. State1 is a new value for the state of the gen_server.

    handle_cast({free, Ch}, Chs) ->
    -    Chs2 = free(Ch, Chs),
    -    {noreply, Chs2}.

    In this case, the new state is the updated list of available channels Chs2. +{noreply,State1}. State1 is a new value for the state of the gen_server.

    handle_cast({free, Ch}, Chs) ->
    +    Chs2 = free(Ch, Chs),
    +    {noreply, Chs2}.

    In this case, the new state is the updated list of available channels Chs2. The gen_server is now ready for new requests.

    @@ -166,15 +166,15 @@ set in the supervisor.

    If it is necessary to clean up before termination, the shutdown strategy must be a time-out value and the gen_server must be set to trap exit signals in function init. When ordered to shutdown, the gen_server then calls -the callback function terminate(shutdown, State):

    init(Args) ->
    +the callback function terminate(shutdown, State):

    init(Args) ->
         ...,
    -    process_flag(trap_exit, true),
    +    process_flag(trap_exit, true),
         ...,
    -    {ok, State}.
    +    {ok, State}.
     
     ...
     
    -terminate(shutdown, State) ->
    +terminate(shutdown, State) ->
         %% Code for cleaning up here
         ...
         ok.

    @@ -185,21 +185,21 @@

    If the gen_server is not part of a supervision tree, a stop function can be useful, for example:

    ...
    -export([stop/0]).
    +export([stop/0]).
     ...
     
    -stop() ->
    -    gen_server:cast(ch3, stop).
    +stop() ->
    +    gen_server:cast(ch3, stop).
     ...
     
    -handle_cast(stop, State) ->
    -    {stop, normal, State};
    -handle_cast({free, Ch}, State) ->
    +handle_cast(stop, State) ->
    +    {stop, normal, State};
    +handle_cast({free, Ch}, State) ->
         ...
     
     ...
     
    -terminate(normal, State) ->
    +terminate(normal, State) ->
         ok.

    The callback function handling the stop request returns a tuple {stop,normal,State1}, where normal specifies that it is a normal termination and State1 is a new value for the state @@ -214,13 +214,13 @@ the callback function handle_info(Info, State) must be implemented to handle them. Examples of other messages are exit messages, if the gen_server is linked to other processes than the supervisor -and it is trapping exit signals.

    handle_info({'EXIT', Pid, Reason}, State) ->
    +and it is trapping exit signals.

    handle_info({'EXIT', Pid, Reason}, State) ->
         %% Code to handle exits here.
         ...
    -    {noreply, State1}.

    The final function to implement is code_change/3:

    code_change(OldVsn, State, Extra) ->
    +    {noreply, State1}.

    The final function to implement is code_change/3:

    code_change(OldVsn, State, Extra) ->
         %% Code to convert state (and more) during code change.
         ...
    -    {ok, NewState}.
    +
    {ok, NewState}.
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/included_applications.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/included_applications.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/included_applications.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -70,16 +70,16 @@ Specifying Included Applications

    Which applications to include is defined by the included_applications key in -the .app file:

    {application, prim_app,
    - [{description, "Tree application"},
    -  {vsn, "1"},
    -  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    -  {registered, [prim_app_server]},
    -  {included_applications, [incl_app]},
    -  {applications, [kernel, stdlib, sasl]},
    -  {mod, {prim_app_cb,[]}},
    -  {env, [{file, "/usr/local/log"}]}
    - ]}.

    +the .app file:

    {application, prim_app,
    + [{description, "Tree application"},
    +  {vsn, "1"},
    +  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    +  {registered, [prim_app_server]},
    +  {included_applications, [incl_app]},
    +  {applications, [kernel, stdlib, sasl]},
    +  {mod, {prim_app_cb,[]}},
    +  {env, [{file, "/usr/local/log"}]}
    + ]}.

    @@ -93,27 +93,27 @@ term.

    The value of the mod key of the including application must be set to {application_starter,[Module,StartArgs]}, where Module as usual is the application callback module. StartArgs is a term provided as argument to the -callback function Module:start/2:

    {application, prim_app,
    - [{description, "Tree application"},
    -  {vsn, "1"},
    -  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    -  {registered, [prim_app_server]},
    -  {included_applications, [incl_app]},
    -  {start_phases, [{init,[]}, {go,[]}]},
    -  {applications, [kernel, stdlib, sasl]},
    -  {mod, {application_starter,[prim_app_cb,[]]}},
    -  {env, [{file, "/usr/local/log"}]}
    - ]}.
    +callback function Module:start/2:

    {application, prim_app,
    + [{description, "Tree application"},
    +  {vsn, "1"},
    +  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    +  {registered, [prim_app_server]},
    +  {included_applications, [incl_app]},
    +  {start_phases, [{init,[]}, {go,[]}]},
    +  {applications, [kernel, stdlib, sasl]},
    +  {mod, {application_starter,[prim_app_cb,[]]}},
    +  {env, [{file, "/usr/local/log"}]}
    + ]}.
     
    -{application, incl_app,
    - [{description, "Included application"},
    -  {vsn, "1"},
    -  {modules, [incl_app_cb, incl_app_sup, incl_app_server]},
    -  {registered, []},
    -  {start_phases, [{go,[]}]},
    -  {applications, [kernel, stdlib, sasl]},
    -  {mod, {incl_app_cb,[]}}
    - ]}.

    When starting a primary application with included applications, the primary +{application, incl_app, + [{description, "Included application"}, + {vsn, "1"}, + {modules, [incl_app_cb, incl_app_sup, incl_app_server]}, + {registered, []}, + {start_phases, [{go,[]}]}, + {applications, [kernel, stdlib, sasl]}, + {mod, {incl_app_cb,[]}} + ]}.

    When starting a primary application with included applications, the primary application is started the normal way, that is:

    • The application controller creates an application master for the application
    • The application master calls Module:start(normal, StartArgs) to start the top supervisor.

    Then, for the primary application and each included application in top-down, left-to-right order, the application master calls @@ -126,11 +126,11 @@ of specified phases must be a subset of the set of phases specified for the primary application.

    When starting prim_app as defined above, the application controller calls the following callback functions before application:start(prim_app) returns a -value:

    application:start(prim_app)
    - => prim_app_cb:start(normal, [])
    - => prim_app_cb:start_phase(init, normal, [])
    - => prim_app_cb:start_phase(go, normal, [])
    - => incl_app_cb:start_phase(go, normal, [])
    +value:

    application:start(prim_app)
    + => prim_app_cb:start(normal, [])
    + => prim_app_cb:start_phase(init, normal, [])
    + => prim_app_cb:start_phase(go, normal, [])
    + => incl_app_cb:start_phase(go, normal, [])
     ok
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/install-win32.xhtml differs (HTML document, UTF-8 Unicode text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/install-win32.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/install-win32.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -204,7 +204,7 @@

    and sometimes

    $ cd $ERL_TOP
     $ make local_setup
     

    So now when you run $ERL_TOP/erl.exe, you should have a debug compiled -emulator, which you will see if you do a:

    1> erlang:system_info(system_version).

    in the erlang shell. If the returned string contains [debug], you +emulator, which you will see if you do a:

    1> erlang:system_info(system_version).

    in the erlang shell. If the returned string contains [debug], you got a debug compiled emulator.

    To hack the erlang libraries, you simply do a make opt in the specific "applications" directory, like:

    $ cd $ERL_TOP/lib/stdlib
     $ make opt
    @@ -227,11 +227,11 @@
     

    Remember that:

    • Windows specific C-code goes in the $ERL_TOP/erts/emulator/sys/win32, $ERL_TOP/erts/emulator/drivers/win32 or $ERL_TOP/erts/etc/win32.

    • Windows specific erlang code should be used conditionally and the host OS tested in runtime, the exactly same beam files should be -distributed for every platform! So write code like:

      case os:type() of
      -    {win32,_} ->
      -        do_windows_specific();
      +distributed for every platform! So write code like:

      case os:type() of
      +    {win32,_} ->
      +        do_windows_specific();
           Other ->
      -        do_fallback_or_exit()
      +        do_fallback_or_exit()
       end,

    That's basically all you need to get going.

    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/list_comprehensions.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/list_comprehensions.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/list_comprehensions.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -26,25 +26,25 @@ Simple Examples

    -

    This section starts with a simple example, showing a generator and a filter:

    > [X || X <- [1,2,a,3,4,b,5,6], X > 3].
    -[a,4,b,5,6]

    This is read as follows: The list of X such that X is taken from the list +

    This section starts with a simple example, showing a generator and a filter:

    > [X || X <- [1,2,a,3,4,b,5,6], X > 3].
    +[a,4,b,5,6]

    This is read as follows: The list of X such that X is taken from the list [1,2,a,...] and X is greater than 3.

    The notation X <- [1,2,a,...] is a generator and the expression X > 3 is a filter.

    An additional filter, is_integer(X), can be added to -restrict the result to integers:

    > [X || X <- [1,2,a,3,4,b,5,6], is_integer(X), X > 3].
    -[4,5,6]

    Generators can be combined. For example, the Cartesian product of two lists can -be written as follows:

    > [{X, Y} || X <- [1,2,3], Y <- [a,b]].
    -[{1,a},{1,b},{2,a},{2,b},{3,a},{3,b}]

    +restrict the result to integers:

    > [X || X <- [1,2,a,3,4,b,5,6], is_integer(X), X > 3].
    +[4,5,6]

    Generators can be combined. For example, the Cartesian product of two lists can +be written as follows:

    > [{X, Y} || X <- [1,2,3], Y <- [a,b]].
    +[{1,a},{1,b},{2,a},{2,b},{3,a},{3,b}]

    Quick Sort

    -

    The well-known quick sort routine can be written as follows:

    sort([]) -> [];
    -sort([_] = L) -> L;
    -sort([Pivot|T]) ->
    -    sort([ X || X <- T, X < Pivot]) ++
    -    [Pivot] ++
    -    sort([ X || X <- T, X >= Pivot]).

    The expression [X || X <- T, X < Pivot] is the list of all elements in T +

    The well-known quick sort routine can be written as follows:

    sort([]) -> [];
    +sort([_] = L) -> L;
    +sort([Pivot|T]) ->
    +    sort([ X || X <- T, X < Pivot]) ++
    +    [Pivot] ++
    +    sort([ X || X <- T, X >= Pivot]).

    The expression [X || X <- T, X < Pivot] is the list of all elements in T that are less than Pivot.

    [X || X <- T, X >= Pivot] is the list of all elements in T that are greater than or equal to Pivot.

    With the algorithm above, a list is sorted as follows:

    • A list with zero or one element is trivially sorted.
    • For lists with more than one element:
      1. The first element in the list is isolated as the pivot element.
      2. The remaining list is partitioned into two sublists, such that:
      • The first sublist contains all elements that are smaller than the pivot element.
      • The second sublist contains all elements that are greater than or equal to @@ -60,11 +60,11 @@ Permutations -

        The following example generates all permutations of the elements in a list:

        perms([]) -> [[]];
        -perms(L)  -> [[H|T] || H <- L, T <- perms(L--[H])].

        This takes H from L in all possible ways. The result is the set of all lists +

        The following example generates all permutations of the elements in a list:

        perms([]) -> [[]];
        +perms(L)  -> [[H|T] || H <- L, T <- perms(L--[H])].

        This takes H from L in all possible ways. The result is the set of all lists [H|T], where T is the set of all possible permutations of L, with H -removed:

        > perms([b,u,g]).
        -[[b,u,g],[b,g,u],[u,b,g],[u,g,b],[g,b,u],[g,u,b]]

        +removed:

        > perms([b,u,g]).
        +[[b,u,g],[b,g,u],[u,b,g],[u,g,b],[g,b,u],[g,u,b]]

        @@ -73,47 +73,47 @@

        Pythagorean triplets are sets of integers {A,B,C} such that A**2 + B**2 = C**2.

        The function pyth(N) generates a list of all integers {A,B,C} such that A**2 + B**2 = C**2 and where the sum of the sides is equal to, or less than, -N:

        pyth(N) ->
        -    [ {A,B,C} ||
        -        A <- lists:seq(1,N),
        -        B <- lists:seq(1,N),
        -        C <- lists:seq(1,N),
        +N:

        pyth(N) ->
        +    [ {A,B,C} ||
        +        A <- lists:seq(1,N),
        +        B <- lists:seq(1,N),
        +        C <- lists:seq(1,N),
                 A+B+C =< N,
                 A*A+B*B == C*C
        -    ].
        > pyth(3).
        -[].
        -> pyth(11).
        -[].
        -> pyth(12).
        -[{3,4,5},{4,3,5}]
        -> pyth(50).
        -[{3,4,5},
        - {4,3,5},
        - {5,12,13},
        - {6,8,10},
        - {8,6,10},
        - {8,15,17},
        - {9,12,15},
        - {12,5,13},
        - {12,9,15},
        - {12,16,20},
        - {15,8,17},
        - {16,12,20}]

        The following code reduces the search space and is more efficient:

        pyth1(N) ->
        -   [{A,B,C} ||
        -       A <- lists:seq(1,N-2),
        -       B <- lists:seq(A+1,N-1),
        -       C <- lists:seq(B+1,N),
        +    ].
        > pyth(3).
        +[].
        +> pyth(11).
        +[].
        +> pyth(12).
        +[{3,4,5},{4,3,5}]
        +> pyth(50).
        +[{3,4,5},
        + {4,3,5},
        + {5,12,13},
        + {6,8,10},
        + {8,6,10},
        + {8,15,17},
        + {9,12,15},
        + {12,5,13},
        + {12,9,15},
        + {12,16,20},
        + {15,8,17},
        + {16,12,20}]

        The following code reduces the search space and is more efficient:

        pyth1(N) ->
        +   [{A,B,C} ||
        +       A <- lists:seq(1,N-2),
        +       B <- lists:seq(A+1,N-1),
        +       C <- lists:seq(B+1,N),
                A+B+C =< N,
        -       A*A+B*B == C*C ].

        + A*A+B*B == C*C ].

        Simplifications With List Comprehensions

        As an example, list comprehensions can be used to simplify some of the functions -in lists.erl:

        append(L)   ->  [X || L1 <- L, X <- L1].
        -map(Fun, L) -> [Fun(X) || X <- L].
        -filter(Pred, L) -> [X || X <- L, Pred(X)].

        +in lists.erl:

        append(L)   ->  [X || L1 <- L, X <- L1].
        +map(Fun, L) -> [Fun(X) || X <- L].
        +filter(Pred, L) -> [X || X <- L, Pred(X)].

        @@ -125,20 +125,20 @@ which selects certain elements from a list of tuples. Suppose you write select(X, L) -> [Y || {X, Y} <- L]. with the intention of extracting all tuples from L, where the first item is X.

        Compiling this gives the following diagnostic:

        ./FileName.erl:Line: Warning: variable 'X' shadowed in generate

        This diagnostic warns that the variable X in the pattern is not the same as -the variable X that occurs in the function head.

        Evaluating select gives the following result:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        -[1,2,3,7]

        This is not the wanted result. To achieve the desired effect, select must be -written as follows:

        select(X, L) ->  [Y || {X1, Y} <- L, X == X1].

        The generator now contains unbound variables and the test has been moved into -the filter.

        This now works as expected:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        -[2,7]

        Also note that a variable in a generator pattern will shadow a variable with the -same name bound in a previous generator pattern. For example:

        > [{X,Y} || X <- [1,2,3], X=Y <- [a,b,c]].
        -[{a,a},{b,b},{c,c},{a,a},{b,b},{c,c},{a,a},{b,b},{c,c}]

        A consequence of the rules for importing variables into a list comprehensions is +the variable X that occurs in the function head.

        Evaluating select gives the following result:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        +[1,2,3,7]

        This is not the wanted result. To achieve the desired effect, select must be +written as follows:

        select(X, L) ->  [Y || {X1, Y} <- L, X == X1].

        The generator now contains unbound variables and the test has been moved into +the filter.

        This now works as expected:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        +[2,7]

        Also note that a variable in a generator pattern will shadow a variable with the +same name bound in a previous generator pattern. For example:

        > [{X,Y} || X <- [1,2,3], X=Y <- [a,b,c]].
        +[{a,a},{b,b},{c,c},{a,a},{b,b},{c,c},{a,a},{b,b},{c,c}]

        A consequence of the rules for importing variables into a list comprehensions is that certain pattern matching operations must be moved into the filters and -cannot be written directly in the generators.

        To illustrate this, do not write as follows:

        f(...) ->
        +cannot be written directly in the generators.

        To illustrate this, do not write as follows:

        f(...) ->
             Y = ...
        -    [ Expression || PatternInvolving Y  <- Expr, ...]
        -    ...

        Instead, write as follows:

        f(...) ->
        +    [ Expression || PatternInvolving Y  <- Expr, ...]
        +    ...

        Instead, write as follows:

        f(...) ->
             Y = ...
        -    [ Expression || PatternInvolving Y1  <- Expr, Y == Y1, ...]
        +    [ Expression || PatternInvolving Y1  <- Expr, Y == Y1, ...]
             ...
        /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/listhandling.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/listhandling.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/listhandling.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -29,47 +29,47 @@

        Lists can only be built starting from the end and attaching list elements at the beginning. If you use the ++ operator as follows, a new list is created that is a copy of the elements in List1, followed by List2:

        List1 ++ List2

        Looking at how lists:append/2 or ++ would be implemented in plain Erlang, -clearly the first list is copied:

        append([H|T], Tail) ->
        -    [H|append(T, Tail)];
        -append([], Tail) ->
        +clearly the first list is copied:

        append([H|T], Tail) ->
        +    [H|append(T, Tail)];
        +append([], Tail) ->
             Tail.

        When recursing and building a list, it is important to ensure that you attach the new elements to the beginning of the list. In this way, you will build one -list, not hundreds or thousands of copies of the growing result list.

        Let us first see how it is not to be done:

        DO NOT

        bad_fib(N) ->
        -    bad_fib(N, 0, 1, []).
        +list, not hundreds or thousands of copies of the growing result list.

        Let us first see how it is not to be done:

        DO NOT

        bad_fib(N) ->
        +    bad_fib(N, 0, 1, []).
         
        -bad_fib(0, _Current, _Next, Fibs) ->
        +bad_fib(0, _Current, _Next, Fibs) ->
             Fibs;
        -bad_fib(N, Current, Next, Fibs) ->
        -    bad_fib(N - 1, Next, Current + Next, Fibs ++ [Current]).

        Here more than one list is built. In each iteration step a new list is created +bad_fib(N, Current, Next, Fibs) -> + bad_fib(N - 1, Next, Current + Next, Fibs ++ [Current]).

        Here more than one list is built. In each iteration step a new list is created that is one element longer than the new previous list.

        To avoid copying the result in each iteration, build the list in reverse order -and reverse the list when you are done:

        DO

        tail_recursive_fib(N) ->
        -    tail_recursive_fib(N, 0, 1, []).
        +and reverse the list when you are done:

        DO

        tail_recursive_fib(N) ->
        +    tail_recursive_fib(N, 0, 1, []).
         
        -tail_recursive_fib(0, _Current, _Next, Fibs) ->
        -    lists:reverse(Fibs);
        -tail_recursive_fib(N, Current, Next, Fibs) ->
        -    tail_recursive_fib(N - 1, Next, Current + Next, [Current|Fibs]).

        +tail_recursive_fib(0, _Current, _Next, Fibs) -> + lists:reverse(Fibs); +tail_recursive_fib(N, Current, Next, Fibs) -> + tail_recursive_fib(N - 1, Next, Current + Next, [Current|Fibs]).

        List Comprehensions

        -

        A list comprehension:

        [Expr(E) || E <- List]

        is basically translated to a local function:

        'lc^0'([E|Tail], Expr) ->
        -    [Expr(E)|'lc^0'(Tail, Expr)];
        -'lc^0'([], _Expr) -> [].

        If the result of the list comprehension will obviously not be used, a list -will not be constructed. For example, in this code:

        [io:put_chars(E) || E <- List],
        +

        A list comprehension:

        [Expr(E) || E <- List]

        is basically translated to a local function:

        'lc^0'([E|Tail], Expr) ->
        +    [Expr(E)|'lc^0'(Tail, Expr)];
        +'lc^0'([], _Expr) -> [].

        If the result of the list comprehension will obviously not be used, a list +will not be constructed. For example, in this code:

        [io:put_chars(E) || E <- List],
         ok.

        or in this code:

        case Var of
             ... ->
        -        [io:put_chars(E) || E <- List];
        +        [io:put_chars(E) || E <- List];
             ... ->
         end,
        -some_function(...),

        the value is not assigned to a variable, not passed to another function, and not +some_function(...),

        the value is not assigned to a variable, not passed to another function, and not returned. This means that there is no need to construct a list and the compiler -will simplify the code for the list comprehension to:

        'lc^0'([E|Tail], Expr) ->
        -    Expr(E),
        -    'lc^0'(Tail, Expr);
        -'lc^0'([], _Expr) -> [].

        The compiler also understands that assigning to _ means that the value will -not be used. Therefore, the code in the following example will also be optimized:

        _ = [io:put_chars(E) || E <- List],
        +will simplify the code for the list comprehension to:

        'lc^0'([E|Tail], Expr) ->
        +    Expr(E),
        +    'lc^0'(Tail, Expr);
        +'lc^0'([], _Expr) -> [].

        The compiler also understands that assigning to _ means that the value will +not be used. Therefore, the code in the following example will also be optimized:

        _ = [io:put_chars(E) || E <- List],
         ok.

        @@ -82,11 +82,11 @@ to flatten the list before sending it to the port.

      • When calling BIFs that accept deep lists, such as list_to_binary/1 or iolist_to_binary/1.
      • When you know that your list is only one level deep. Use lists:append/1 -instead.

      Examples:

      DO

      port_command(Port, DeepList)

      DO NOT

      port_command(Port, lists:flatten(DeepList))

      A common way to send a zero-terminated string to a port is the following:

      DO NOT

      TerminatedStr = String ++ [0],
      -port_command(Port, TerminatedStr)

      Instead:

      DO

      TerminatedStr = [String, 0],
      -port_command(Port, TerminatedStr)

      DO

      1> lists:append([[1], [2], [3]]).
      -[1,2,3]

      DO NOT

      1> lists:flatten([[1], [2], [3]]).
      -[1,2,3]

      +instead.

    Examples:

    DO

    port_command(Port, DeepList)

    DO NOT

    port_command(Port, lists:flatten(DeepList))

    A common way to send a zero-terminated string to a port is the following:

    DO NOT

    TerminatedStr = String ++ [0],
    +port_command(Port, TerminatedStr)

    Instead:

    DO

    TerminatedStr = [String, 0],
    +port_command(Port, TerminatedStr)

    DO

    1> lists:append([[1], [2], [3]]).
    +[1,2,3]

    DO NOT

    1> lists:flatten([[1], [2], [3]]).
    +[1,2,3]

    @@ -94,17 +94,17 @@

    There are two basic ways to write a function that traverses a list and produces a new list.

    The first way is writing a body-recursive function:

    %% Add 42 to each integer in the list.
    -add_42_body([H|T]) ->
    -    [H + 42 | add_42_body(T)];
    -add_42_body([]) ->
    -    [].

    The second way is writing a tail-recursive function:

    %% Add 42 to each integer in the list.
    -add_42_tail(List) ->
    -    add_42_tail(List, []).
    +add_42_body([H|T]) ->
    +    [H + 42 | add_42_body(T)];
    +add_42_body([]) ->
    +    [].

    The second way is writing a tail-recursive function:

    %% Add 42 to each integer in the list.
    +add_42_tail(List) ->
    +    add_42_tail(List, []).
     
    -add_42_tail([H|T], Acc) ->
    -    add_42_tail(T, [H + 42 | Acc]);
    -add_42_tail([], Acc) ->
    -    lists:reverse(Acc).

    In early version of Erlang the tail-recursive function would typically +add_42_tail([H|T], Acc) -> + add_42_tail(T, [H + 42 | Acc]); +add_42_tail([], Acc) -> + lists:reverse(Acc).

    In early version of Erlang the tail-recursive function would typically be more efficient. In modern versions of Erlang, there is usually not much difference in performance between a body-recursive list function and tail-recursive function that reverses the list at the end. Therefore, @@ -115,11 +115,11 @@ function that does not construct a list runs in constant space, while the corresponding body-recursive function uses stack space proportional to the length of the list.

    For example, a function that sums a list of integers, is not to be written as -follows:

    DO NOT

    recursive_sum([H|T]) -> H+recursive_sum(T);
    -recursive_sum([])    -> 0.

    Instead:

    DO

    sum(L) -> sum(L, 0).
    +follows:

    DO NOT

    recursive_sum([H|T]) -> H+recursive_sum(T);
    +recursive_sum([])    -> 0.

    Instead:

    DO

    sum(L) -> sum(L, 0).
     
    -sum([H|T], Sum) -> sum(T, Sum + H);
    -sum([], Sum)    -> Sum.
    +
    sum([H|T], Sum) -> sum(T, Sum + H); +sum([], Sum) -> Sum.
    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/macros.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/macros.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/macros.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -26,8 +26,8 @@ File Inclusion -

    A file can be included as follows:

    -include(File).
    --include_lib(File).

    File, a string, is to point out a file. The contents of this file are included +

    A file can be included as follows:

    -include(File).
    +-include_lib(File).

    File, a string, is to point out a file. The contents of this file are included as is, at the position of the directive.

    Include files are typically used for record and macro definitions that are shared by several modules. It is recommended to use the file name extension .hrl for include files.

    File can start with a path component $VAR, for some string VAR. If that is @@ -36,12 +36,12 @@ $VAR is left as is.

    If the filename File is absolute (possibly after variable substitution), the include file with that name is included. Otherwise, the specified file is searched for in the following directories, and in this order:

    1. The current working directory
    2. The directory where the module is being compiled
    3. The directories given by the include option

    For details, see erlc in ERTS and -compile in Compiler.

    Examples:

    -include("my_records.hrl").
    --include("incdir/my_records.hrl").
    --include("/home/user/proj/my_records.hrl").
    --include("$PROJ_ROOT/my_records.hrl").

    include_lib is similar to include, but is not to point out an absolute file. +compile in Compiler.

    Examples:

    -include("my_records.hrl").
    +-include("incdir/my_records.hrl").
    +-include("/home/user/proj/my_records.hrl").
    +-include("$PROJ_ROOT/my_records.hrl").

    include_lib is similar to include, but is not to point out an absolute file. Instead, the first path component (possibly after variable substitution) is -assumed to be the name of an application.

    Example:

    -include_lib("kernel/include/file.hrl").

    The code server uses code:lib_dir(kernel) to find the directory of the current +assumed to be the name of an application.

    Example:

    -include_lib("kernel/include/file.hrl").

    The code server uses code:lib_dir(kernel) to find the directory of the current (latest) version of Kernel, and then the subdirectory include is searched for the file file.hrl.

    @@ -49,25 +49,25 @@ Defining and Using Macros

    -

    A macro is defined as follows:

    -define(Const, Replacement).
    --define(Func(Var1,...,VarN), Replacement).

    A macro definition can be placed anywhere among the attributes and function +

    A macro is defined as follows:

    -define(Const, Replacement).
    +-define(Func(Var1,...,VarN), Replacement).

    A macro definition can be placed anywhere among the attributes and function declarations of a module, but the definition must come before any usage of the macro.

    If a macro is used in several modules, it is recommended that the macro definition is placed in an include file.

    A macro is used as follows:

    ?Const
     ?Func(Arg1,...,ArgN)

    Macros are expanded during compilation. A simple macro ?Const is replaced with -Replacement.

    Example:

    -define(TIMEOUT, 200).
    +Replacement.

    Example:

    -define(TIMEOUT, 200).
     ...
    -call(Request) ->
    -    server:call(refserver, Request, ?TIMEOUT).

    This is expanded to:

    call(Request) ->
    -    server:call(refserver, Request, 200).

    A macro ?Func(Arg1,...,ArgN) is replaced with Replacement, where all +call(Request) -> + server:call(refserver, Request, ?TIMEOUT).

    This is expanded to:

    call(Request) ->
    +    server:call(refserver, Request, 200).

    A macro ?Func(Arg1,...,ArgN) is replaced with Replacement, where all occurrences of a variable Var from the macro definition are replaced with the -corresponding argument Arg.

    Example:

    -define(MACRO1(X, Y), {a, X, b, Y}).
    +corresponding argument Arg.

    Example:

    -define(MACRO1(X, Y), {a, X, b, Y}).
     ...
    -bar(X) ->
    -    ?MACRO1(a, b),
    -    ?MACRO1(X, 123)

    This is expanded to:

    bar(X) ->
    -    {a,a,b,b},
    -    {a,X,b,123}.

    It is good programming practice, but not mandatory, to ensure that a macro +bar(X) -> + ?MACRO1(a, b), + ?MACRO1(X, 123)

    This is expanded to:

    bar(X) ->
    +    {a,a,b,b},
    +    {a,X,b,123}.

    It is good programming practice, but not mandatory, to ensure that a macro definition is a valid Erlang syntactic form.

    To view the result of macro expansion, a module can be compiled with the 'P' option. compile:file(File, ['P']). This produces a listing of the parsed code after preprocessing and parse transforms, in the file File.P.

    @@ -94,21 +94,21 @@

    It is possible to overload macros, except for predefined macros. An overloaded macro has more than one definition, each with a different number of arguments.

    Change

    Support for overloading of macros was added in Erlang 5.7.5/OTP R13B04.

    A macro ?Func(Arg1,...,ArgN) with a (possibly empty) list of arguments results in an error message if there is at least one definition of Func with -arguments, but none with N arguments.

    Assuming these definitions:

    -define(F0(), c).
    --define(F1(A), A).
    --define(C, m:f).

    the following does not work:

    f0() ->
    +arguments, but none with N arguments.

    Assuming these definitions:

    -define(F0(), c).
    +-define(F1(A), A).
    +-define(C, m:f).

    the following does not work:

    f0() ->
         ?F0. % No, an empty list of arguments expected.
     
    -f1(A) ->
    -    ?F1(A, A). % No, exactly one argument expected.

    On the other hand,

    f() ->
    -    ?C().

    is expanded to

    f() ->
    -    m:f().

    +f1(A) -> + ?F1(A, A). % No, exactly one argument expected.

    On the other hand,

    f() ->
    +    ?C().

    is expanded to

    f() ->
    +    m:f().

    Removing a macro definition

    -

    A definition of macro can be removed as follows:

    -undef(Macro).

    +

    A definition of macro can be removed as follows:

    -undef(Macro).

    @@ -128,13 +128,13 @@ elif also supports calling the psuedo-function defined(Name), which tests whether the Name argument is the name of a previously defined macro. defined(Name) evaluates to true if the macro is defined and false -otherwise. An attempt to call other functions results in a compilation error.

    Example:

    -module(m).
    +otherwise. An attempt to call other functions results in a compilation error.

    Example:

    -module(m).
     ...
     
    --ifdef(debug).
    --define(LOG(X), io:format("{~p,~p}: ~p~n", [?MODULE,?LINE,X])).
    +-ifdef(debug).
    +-define(LOG(X), io:format("{~p,~p}: ~p~n", [?MODULE,?LINE,X])).
     -else.
    --define(LOG(X), true).
    +-define(LOG(X), true).
     -endif.
     
     ...

    When trace output is desired, debug is to be defined when the module m is @@ -142,21 +142,21 @@ or -1> c(m, {d, debug}). -{ok,m}

    ?LOG(Arg) is then expanded to a call to io:format/2 and provide the user -with some simple trace output.

    Example:

    -module(m)
    +1> c(m, {d, debug}).
    +{ok,m}

    ?LOG(Arg) is then expanded to a call to io:format/2 and provide the user +with some simple trace output.

    Example:

    -module(m)
     ...
    --if(?OTP_RELEASE >= 25).
    +-if(?OTP_RELEASE >= 25).
     %% Code that will work in OTP 25 or higher
    --elif(?OTP_RELEASE >= 26).
    +-elif(?OTP_RELEASE >= 26).
     %% Code that will work in OTP 26 or higher
     -else.
     %% Code that will work in OTP 24 or lower.
     -endif.
     ...

    This code uses the OTP_RELEASE macro to conditionally select code depending on -release.

    Example:

    -module(m)
    +release.

    Example:

    -module(m)
     ...
    --if(?OTP_RELEASE >= 26 andalso defined(debug)).
    +-if(?OTP_RELEASE >= 26 andalso defined(debug)).
     %% Debugging code that requires OTP 26 or later.
     -else.
     %% Non-debug code that works in any release.
    @@ -179,23 +179,23 @@
       
       -error() and -warning() directives
     

    -

    The directive -error(Term) causes a compilation error.

    Example:

    -module(t).
    --export([version/0]).
    +

    The directive -error(Term) causes a compilation error.

    Example:

    -module(t).
    +-export([version/0]).
     
    --ifdef(VERSION).
    -version() -> ?VERSION.
    +-ifdef(VERSION).
    +version() -> ?VERSION.
     -else.
    --error("Macro VERSION must be defined.").
    -version() -> "".
    +-error("Macro VERSION must be defined.").
    +version() -> "".
     -endif.

    The error message will look like this:

    % erlc t.erl
    -t.erl:7: -error("Macro VERSION must be defined.").

    The directive -warning(Term) causes a compilation warning.

    Example:

    -module(t).
    --export([version/0]).
    +t.erl:7: -error("Macro VERSION must be defined.").

    The directive -warning(Term) causes a compilation warning.

    Example:

    -module(t).
    +-export([version/0]).
     
    --ifndef(VERSION).
    --warning("Macro VERSION not defined -- using default version.").
    --define(VERSION, "0").
    +-ifndef(VERSION).
    +-warning("Macro VERSION not defined -- using default version.").
    +-define(VERSION, "0").
     -endif.
    -version() -> ?VERSION.

    The warning message will look like this:

    % erlc t.erl
    +version() -> ?VERSION.

    The warning message will look like this:

    % erlc t.erl
     t.erl:5: Warning: -warning("Macro VERSION not defined -- using default version.").

    Change

    The -error() and -warning() directives were added in Erlang/OTP 19.

    @@ -204,11 +204,11 @@

    The construction ??Arg, where Arg is a macro argument, is expanded to a string containing the tokens of the argument. This is similar to the #arg -stringifying construction in C.

    Example:

    -define(TESTCALL(Call), io:format("Call ~s: ~w~n", [??Call, Call])).
    +stringifying construction in C.

    Example:

    -define(TESTCALL(Call), io:format("Call ~s: ~w~n", [??Call, Call])).
     
    -?TESTCALL(myfunction(1,2)),
    -?TESTCALL(you:function(2,1)).

    results in

    io:format("Call ~s: ~w~n",["myfunction ( 1 , 2 )",myfunction(1,2)]),
    -io:format("Call ~s: ~w~n",["you : function ( 2 , 1 )",you:function(2,1)]).

    That is, a trace output, with both the function called and the resulting value.

    +
    ?TESTCALL(myfunction(1,2)), +?TESTCALL(you:function(2,1)).

    results in

    io:format("Call ~s: ~w~n",["myfunction ( 1 , 2 )",myfunction(1,2)]),
    +io:format("Call ~s: ~w~n",["you : function ( 2 , 1 )",you:function(2,1)]).

    That is, a trace output, with both the function called and the resulting value.

    /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/maps.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/maps.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/maps.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -57,8 +57,8 @@ values, sharing of keys between different instances of the map will be less effective, and it is not possible to match multiple elements having default values in one go.

  • To avoid having to deal with a map that may lack some keys, maps:merge/2 can -efficiently add multiple default values. For example:

    DefaultMap = #{shoe_size => 42, editor => emacs},
    -MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)
  • +efficiently add multiple default values. For example:

    DefaultMap = #{shoe_size => 42, editor => emacs},
    +MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)

    @@ -76,10 +76,10 @@ Using Maps as Sets

    Starting in OTP 24, the sets module has an option to represent sets as maps. -Examples:

    1> sets:new([{version,2}]).
    -#{}
    -2> sets:from_list([x,y,z], [{version,2}]).
    -#{x => [],y => [],z => []}

    sets backed by maps is generally the most efficient set representation, with a +Examples:

    1> sets:new([{version,2}]).
    +#{}
    +2> sets:from_list([x,y,z], [{version,2}]).
    +#{x => [],y => [],z => []}

    sets backed by maps is generally the most efficient set representation, with a few possible exceptions:

    • ordsets:intersection/2 can be more efficient than sets:intersection/2. If the intersection operation is frequently used and operations that operate on a single element in a set (such as is_element/2) are avoided, ordsets can @@ -112,10 +112,10 @@ allowing the key tuple to be shared with other instances of the map that have the same keys. In fact, the key tuple can be shared between all maps with the same keys with some care. To arrange that, define a function that returns a map. -For example:

      new() ->
      -    #{a => default, b => default, c => default}.

      Defined like this, the key tuple {a,b,c} will be a global literal. To ensure +For example:

      new() ->
      +    #{a => default, b => default, c => default}.

      Defined like this, the key tuple {a,b,c} will be a global literal. To ensure that the key tuple is shared when creating an instance of the map, always call -new() and modify the returned map:

          (SOME_MODULE:new())#{a := 42}.

      Using the map syntax with small maps is particularly efficient. As long as the +new() and modify the returned map:

          (SOME_MODULE:new())#{a := 42}.

      Using the map syntax with small maps is particularly efficient. As long as the keys are known at compile-time, the map is updated in one go, making the time to update a map essentially constant regardless of the number of keys updated. The same goes for matching. (When the keys are variables, one or more of the keys @@ -150,13 +150,13 @@

      Using the map syntax is usually slightly more efficient than using the corresponding function in the maps module.

      The gain in efficiency for the map syntax is more noticeable for the following -operations that can only be achieved using the map syntax:

      • Matching multiple literal keys
      • Updating multiple literal keys
      • Adding multiple literal keys to a map

      For example:

      DO

      Map = Map1#{x := X, y := Y, z := Z}

      DO NOT

      Map2 = maps:update(x, X, Map1),
      -Map3 = maps:update(y, Y, Map2),
      -Map = maps:update(z, Z, Map3)

      If the map is a small map, the first example runs roughly three times as fast.

      Note that for variable keys, the elements are updated sequentially from left to -right. For example, given the following update with variable keys:

      Map = Map1#{Key1 := X, Key2 := Y, Key3 := Z}

      the compiler rewrites it like this to ensure that the updates are applied from -left to right:

      Map2 = Map1#{Key1 := X},
      -Map3 = Map2#{Key2 := Y},
      -Map = Map3#{Key3 := Z}

      If a key is known to exist in a map, using the := operator is slightly more +operations that can only be achieved using the map syntax:

      • Matching multiple literal keys
      • Updating multiple literal keys
      • Adding multiple literal keys to a map

      For example:

      DO

      Map = Map1#{x := X, y := Y, z := Z}

      DO NOT

      Map2 = maps:update(x, X, Map1),
      +Map3 = maps:update(y, Y, Map2),
      +Map = maps:update(z, Z, Map3)

      If the map is a small map, the first example runs roughly three times as fast.

      Note that for variable keys, the elements are updated sequentially from left to +right. For example, given the following update with variable keys:

      Map = Map1#{Key1 := X, Key2 := Y, Key3 := Z}

      the compiler rewrites it like this to ensure that the updates are applied from +left to right:

      Map2 = Map1#{Key1 := X},
      +Map3 = Map2#{Key2 := Y},
      +Map = Map3#{Key3 := Z}

      If a key is known to exist in a map, using the := operator is slightly more efficient than using the => operator for a small map.

      @@ -215,15 +215,15 @@

      As an optimization, the compiler will rewrite a call to maps:get/3 to Erlang code similar to the following:

      Result = case Map of
      -             #{Key := Value} -> Value;
      -             #{} -> Default
      +             #{Key := Value} -> Value;
      +             #{} -> Default
                end

      This is reasonably efficient, but if a small map is used as an alternative to using a record it is often better not to rely on default values as it prevents sharing of keys, which may in the end use more memory than what you save from not storing default values in the map.

      If default values are nevertheless required, instead of calling maps:get/3 multiple times, consider putting the default values in a map and merging that -map with the other map:

      DefaultMap = #{Key1 => Value2, Key2 => Value2, ..., KeyN => ValueN},
      -MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)

      This helps share keys between the default map and the one you applied defaults +map with the other map:

      DefaultMap = #{Key1 => Value2, Key2 => Value2, ..., KeyN => ValueN},
      +MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)

      This helps share keys between the default map and the one you applied defaults to, as long as the default map contains all the keys that will ever be used and not just the ones with default values. Whether this is faster than calling maps:get/3 multiple times depends on the size of the map and the number of /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/modules.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/modules.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/modules.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -27,12 +27,12 @@ Module Syntax

      Erlang code is divided into modules. A module consists of a sequence of -attributes and function declarations, each terminated by a period (.).

      Example:

      -module(m).          % module attribute
      --export([fact/1]).   % module attribute
      +attributes and function declarations, each terminated by a period (.).

      Example:

      -module(m).          % module attribute
      +-export([fact/1]).   % module attribute
       
      -fact(N) when N>0 ->  % beginning of function declaration
      -    N * fact(N-1);   %  |
      -fact(0) ->           %  |
      +fact(N) when N>0 ->  % beginning of function declaration
      +    N * fact(N-1);   %  |
      +fact(0) ->           %  |
           1.               % end of function declaration

      For a description of function declarations, see Function Declaration Syntax.

      @@ -85,9 +85,9 @@ Behaviour Module Attribute

      It is possible to specify that the module is the callback module for a -behaviour:

      -behaviour(Behaviour).

      The atom Behaviour gives the name of the behaviour, which can be a +behaviour:

      -behaviour(Behaviour).

      The atom Behaviour gives the name of the behaviour, which can be a user-defined behaviour or one of the following OTP standard behaviours:

      • gen_server
      • gen_statem
      • gen_event
      • supervisor

      The spelling behavior is also accepted.

      The callback functions of the module can be specified either directly by the -exported function behaviour_info/1:

      behaviour_info(callbacks) -> Callbacks.

      or by a -callback attribute for each callback function:

      -callback Name(Arguments) -> Result.

      Here, Arguments is a list of zero or more arguments. The -callback attribute +exported function behaviour_info/1:

      behaviour_info(callbacks) -> Callbacks.

      or by a -callback attribute for each callback function:

      -callback Name(Arguments) -> Result.

      Here, Arguments is a list of zero or more arguments. The -callback attribute is to be preferred since the extra type information can be used by tools to produce documentation or find discrepancies.

      Read more about behaviours and callback modules in OTP Design Principles.

      @@ -96,7 +96,7 @@ Record Definitions

      -

      The same syntax as for module attributes is used for record definitions:

      -record(Record, Fields).

      Record definitions are allowed anywhere in a module, also among the function +

      The same syntax as for module attributes is used for record definitions:

      -record(Record, Fields).

      Record definitions are allowed anywhere in a module, also among the function declarations. Read more in Records.

      @@ -104,15 +104,15 @@ Preprocessor

      The same syntax as for module attributes is used by the preprocessor, which -supports file inclusion, macros, and conditional compilation:

      -include("SomeFile.hrl").
      --define(Macro, Replacement).

      Read more in Preprocessor.

      +supports file inclusion, macros, and conditional compilation:

      -include("SomeFile.hrl").
      +-define(Macro, Replacement).

      Read more in Preprocessor.

      Setting File and Line

      The same syntax as for module attributes is used for changing the pre-defined -macros ?FILE and ?LINE:

      -file(File, Line).

      This attribute is used by tools, such as Yecc, to inform the compiler that the +macros ?FILE and ?LINE:

      -file(File, Line).

      This attribute is used by tools, such as Yecc, to inform the compiler that the source program is generated by another tool. It also indicates the correspondence of source files to lines of the original user-written file, from which the source program is produced.

      @@ -122,8 +122,8 @@ Types and function specifications

      A similar syntax as for module attributes is used for specifying types and -function specifications:

      -type my_type() :: atom() | integer().
      --spec my_function(integer()) -> integer().

      Read more in Types and Function specifications.

      The description is based on +function specifications:

      -type my_type() :: atom() | integer().
      +-spec my_function(integer()) -> integer().

      Read more in Types and Function specifications.

      The description is based on EEP8 - Types and function specifications, which is not to be further updated.

      @@ -132,16 +132,16 @@ Documentation attributes

      The module attribute -doc(Documentation) is used to provide user documentation -for a function/type/callback:

      -doc("Example documentation").
      -example() -> ok.

      The attribute should be placed just before the entity it documents.The +for a function/type/callback:

      -doc("Example documentation").
      +example() -> ok.

      The attribute should be placed just before the entity it documents.The parenthesis are optional around Documentation. The allowed values for Documentation are:

      • literal string or utf-8 encoded binary string - The string documenting the entity. Any literal string is allowed, so both triple quoted strings and sigils that translate to literal strings can be used. -The following examples are equivalent:

        -doc("Example \"docs\"").
        --doc(<<"Example \"docs\""/utf8>>).
        +The following examples are equivalent:

        -doc("Example \"docs\"").
        +-doc(<<"Example \"docs\""/utf8>>).
         -doc ~S/Example "docs"/.
         -doc """
            Example "docs"
        @@ -162,7 +162,7 @@
         
         

        While not a module attribute, but rather a directive (since it might affect syntax), there is the -feature(..) directive used for enabling and disabling -features.

        The syntax is similar to that of an attribute, but has two arguments:

        -feature(FeatureName, enable | disable).

        Note that the feature directive can only appear +features.

        The syntax is similar to that of an attribute, but has two arguments:

        -feature(FeatureName, enable | disable).

        Note that the feature directive can only appear in a prefix of the module.

        /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/nif.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/nif.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/nif.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -42,18 +42,18 @@ they can also be used as fallback implementations for functions that do not have native implementations on some architectures.

        NIF libraries are loaded by calling erlang:load_nif/2, with the name of the shared library as argument. The second argument can be any term that will be -passed on to the library and used for initialization:

        -module(complex6).
        --export([foo/1, bar/1]).
        --nifs([foo/1, bar/1]).
        --on_load(init/0).
        -
        -init() ->
        -    ok = erlang:load_nif("./complex6_nif", 0).
        -
        -foo(_X) ->
        -    erlang:nif_error(nif_library_not_loaded).
        -bar(_Y) ->
        -    erlang:nif_error(nif_library_not_loaded).

        Here, the directive on_load is used to get function init to be automatically +passed on to the library and used for initialization:

        -module(complex6).
        +-export([foo/1, bar/1]).
        +-nifs([foo/1, bar/1]).
        +-on_load(init/0).
        +
        +init() ->
        +    ok = erlang:load_nif("./complex6_nif", 0).
        +
        +foo(_X) ->
        +    erlang:nif_error(nif_library_not_loaded).
        +bar(_Y) ->
        +    erlang:nif_error(nif_library_not_loaded).

        Here, the directive on_load is used to get function init to be automatically called when the module is loaded. If init returns anything other than ok, such when the loading of the NIF library fails in this example, the module is unloaded and calls to functions within it, fail.

        Loading the NIF library overrides the stub implementations and cause calls to @@ -74,35 +74,35 @@ API functions. The environment contains information about the calling Erlang process:

        #include <erl_nif.h>
         
        -extern int foo(int x);
        -extern int bar(int y);
        +extern int foo(int x);
        +extern int bar(int y);
         
        -static ERL_NIF_TERM foo_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
        -{
        +static ERL_NIF_TERM foo_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
        +{
             int x, ret;
        -    if (!enif_get_int(env, argv[0], &x)) {
        -	return enif_make_badarg(env);
        -    }
        -    ret = foo(x);
        -    return enif_make_int(env, ret);
        -}
        +    if (!enif_get_int(env, argv[0], &x)) {
        +	return enif_make_badarg(env);
        +    }
        +    ret = foo(x);
        +    return enif_make_int(env, ret);
        +}
         
        -static ERL_NIF_TERM bar_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
        -{
        +static ERL_NIF_TERM bar_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
        +{
             int y, ret;
        -    if (!enif_get_int(env, argv[0], &y)) {
        -	return enif_make_badarg(env);
        -    }
        -    ret = bar(y);
        -    return enif_make_int(env, ret);
        -}
        -
        -static ErlNifFunc nif_funcs[] = {
        -    {"foo", 1, foo_nif},
        -    {"bar", 1, bar_nif}
        -};
        +    if (!enif_get_int(env, argv[0], &y)) {
        +	return enif_make_badarg(env);
        +    }
        +    ret = bar(y);
        +    return enif_make_int(env, ret);
        +}
        +
        +static ErlNifFunc nif_funcs[] = {
        +    {"foo", 1, foo_nif},
        +    {"bar", 1, bar_nif}
        +};
         
        -ERL_NIF_INIT(complex6, nif_funcs, NULL, NULL, NULL, NULL)

        Here, ERL_NIF_INIT has the following arguments:

        • The first argument must be the name of the Erlang module as a C-identifier. It +ERL_NIF_INIT(complex6, nif_funcs, NULL, NULL, NULL, NULL)

        Here, ERL_NIF_INIT has the following arguments:

        • The first argument must be the name of the Erlang module as a C-identifier. It will be stringified by the macro.
        • The second argument is the array of ErlNifFunc structures containing name, arity, and function pointer of each NIF.
        • The remaining arguments are pointers to callback functions that can be used to initialize the library. They are not used in this simple example, hence they @@ -118,15 +118,15 @@

          Step 1. Compile the C code:

          unix> gcc -o complex6_nif.so -fpic -shared complex.c complex6_nif.c
           windows> cl -LD -MD -Fe complex6_nif.dll complex.c complex6_nif.c

          Step 2: Start Erlang and compile the Erlang code:

          > erl
          -Erlang R13B04 (erts-5.7.5) [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]
          +Erlang R13B04 (erts-5.7.5) [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]
           
          -Eshell V5.7.5  (abort with ^G)
          -1> c(complex6).
          -{ok,complex6}

          Step 3: Run the example:

          3> complex6:foo(3).
          +Eshell V5.7.5  (abort with ^G)
          +1> c(complex6).
          +{ok,complex6}

          Step 3: Run the example:

          3> complex6:foo(3).
           4
          -4> complex6:bar(5).
          +4> complex6:bar(5).
           10
          -5> complex6:foo("not an integer").
          +5> complex6:foo("not an integer").
           ** exception error: bad argument
                in function  complex6:foo/1
                   called as comlpex6:foo("not an integer")
          /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/opaques.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/opaques.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/opaques.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -31,16 +31,16 @@ The runtime does not check opacity. Dialyzer provides some opacity-checking, but the rest is up to convention.

          This document explains what Erlang opacity is (and the trade-offs involved) via the example of the sets:set() data type. This type was -defined in the sets module like this:

          -opaque set(Element) :: #set{segs :: segs(Element)}.

          OTP 24 changed the definition to the following in -this commit.

          -opaque set(Element) :: #set{segs :: segs(Element)} | #{Element => ?VALUE}.

          And this change was safer and more backwards-compatible than if the type had +defined in the sets module like this:

          -opaque set(Element) :: #set{segs :: segs(Element)}.

          OTP 24 changed the definition to the following in +this commit.

          -opaque set(Element) :: #set{segs :: segs(Element)} | #{Element => ?VALUE}.

          And this change was safer and more backwards-compatible than if the type had been defined with -type instead of -opaque. Here is why: when a module defines an -opaque, the contract is that only the defining module should rely on the definition of the type: no other modules should rely on the definition.

          This means that code that pattern-matched on set as a record/tuple technically broke the contract, and opted in to being potentially broken when the definition of set() changed. Before OTP 24, this code printed ok. In OTP 24 it may -error:

          case sets:new() of
          -    Set when is_tuple(Set) ->
          -        io:format("ok")
          +error:

          case sets:new() of
          +    Set when is_tuple(Set) ->
          +        io:format("ok")
           end.

          When working with an opaque defined in another module, here are some recommendations:

          • Don't examine the underlying type using pattern-matching, guards, or functions that reveal the type, such as tuple_size/1 .
          • Instead, use functions provided by the module for working with the type. For /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/otp-patch-apply.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/otp-patch-apply.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/otp-patch-apply.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -110,7 +110,7 @@ Application dependencies are verified among installed applications by otp_patch_apply, but these are not necessarily those actually loaded. By calling system_information:sanity_check() one can validate -dependencies among applications actually loaded.

            1> system_information:sanity_check().
            +dependencies among applications actually loaded.

            1> system_information:sanity_check().
             ok

            Please take a look at the reference of sanity_check() for more information.

            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/patterns.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/patterns.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/patterns.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -37,10 +37,10 @@
            2 3> X + 1. 3 -4> {X, Y} = {1, 2}. +4> {X, Y} = {1, 2}. ** exception error: no match of right hand side value {1,2} -5> {X, Y} = {2, 3}. -{2,3} +5> {X, Y} = {2, 3}. +{2,3} 6> Y. 3
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/prog_ex_records.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/prog_ex_records.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/prog_ex_records.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -31,17 +31,17 @@ To illustrate these differences, suppose that you want to represent a person with the tuple {Name, Address, Phone}.

            To write functions that manipulate this data, remember the following:

            • The Name field is the first element of the tuple.
            • The Address field is the second element.
            • The Phone field is the third element.

            For example, to extract data from a variable P that contains such a tuple, you can write the following code and then use pattern matching to extract the -relevant fields:

            Name = element(1, P),
            -Address = element(2, P),
            +relevant fields:

            Name = element(1, P),
            +Address = element(2, P),
             ...

            Such code is difficult to read and understand, and errors occur if the numbering of the elements in the tuple is wrong. If the data representation of the fields is changed, by re-ordering, adding, or removing fields, all references to the person tuple must be checked and possibly modified.

            Records allow references to the fields by name, instead of by position. In the -following example, a record instead of a tuple is used to store the data:

            -record(person, {name, phone, address}).

            This enables references to the fields of the record by name. For example, if P +following example, a record instead of a tuple is used to store the data:

            -record(person, {name, phone, address}).

            This enables references to the fields of the record by name. For example, if P is a variable whose value is a person record, the following code access the name and address fields of the records:

            Name = P#person.name,
             Address = P#person.address,
            -...

            Internally, records are represented using tagged tuples:

            {person, Name, Phone, Address}

            +...

            Internally, records are represented using tagged tuples:

            {person, Name, Phone, Address}

            @@ -51,8 +51,8 @@ section. Three fields are included, name, phone, and address. The default values for name and phone is "" and [], respectively. The default value for address is the atom undefined, since no default value is supplied for this -field:

            -record(person, {name = "", phone = [], address}).

            The record must be defined in the shell to enable use of the record syntax in -the examples:

            > rd(person, {name = "", phone = [], address}).
            +field:

            -record(person, {name = "", phone = [], address}).

            The record must be defined in the shell to enable use of the record syntax in +the examples:

            > rd(person, {name = "", phone = [], address}).
             person

            This is because record definitions are only available at compile time, not at runtime. For details on records in the shell, see the shell manual page in STDLIB.

            @@ -61,10 +61,10 @@ Creating a Record

            -

            A new person record is created as follows:

            > #person{phone=[0,8,2,3,4,3,1,2], name="Robert"}.
            -#person{name = "Robert",phone = [0,8,2,3,4,3,1,2],address = undefined}

            As the address field was omitted, its default value is used.

            From Erlang 5.1/OTP R8B, a value to all fields in a record can be set with the -special field _. _ means "all fields not explicitly specified".

            Example:

            > #person{name = "Jakob", _ = '_'}.
            -#person{name = "Jakob",phone = '_',address = '_'}

            It is primarily intended to be used in ets:match/2 and +

            A new person record is created as follows:

            > #person{phone=[0,8,2,3,4,3,1,2], name="Robert"}.
            +#person{name = "Robert",phone = [0,8,2,3,4,3,1,2],address = undefined}

            As the address field was omitted, its default value is used.

            From Erlang 5.1/OTP R8B, a value to all fields in a record can be set with the +special field _. _ means "all fields not explicitly specified".

            Example:

            > #person{name = "Jakob", _ = '_'}.
            +#person{name = "Jakob",phone = '_',address = '_'}

            It is primarily intended to be used in ets:match/2 and mnesia:match_object/3, to set record fields to the atom '_'. (This is a wildcard in ets:match/2.)

            @@ -72,8 +72,8 @@ Accessing a Record Field

            -

            The following example shows how to access a record field:

            > P = #person{name = "Joe", phone = [0,8,2,3,4,3,1,2]}.
            -#person{name = "Joe",phone = [0,8,2,3,4,3,1,2],address = undefined}
            +

            The following example shows how to access a record field:

            > P = #person{name = "Joe", phone = [0,8,2,3,4,3,1,2]}.
            +#person{name = "Joe",phone = [0,8,2,3,4,3,1,2],address = undefined}
             > P#person.name.
             "Joe"

            @@ -81,33 +81,33 @@ Updating a Record

            -

            The following example shows how to update a record:

            > P1 = #person{name="Joe", phone=[1,2,3], address="A street"}.
            -#person{name = "Joe",phone = [1,2,3],address = "A street"}
            -> P2 = P1#person{name="Robert"}.
            -#person{name = "Robert",phone = [1,2,3],address = "A street"}

            +

            The following example shows how to update a record:

            > P1 = #person{name="Joe", phone=[1,2,3], address="A street"}.
            +#person{name = "Joe",phone = [1,2,3],address = "A street"}
            +> P2 = P1#person{name="Robert"}.
            +#person{name = "Robert",phone = [1,2,3],address = "A street"}

            Type Testing

            The following example shows that the guard succeeds if P is record of type -person:

            foo(P) when is_record(P, person) -> a_person;
            -foo(_) -> not_a_person.

            +person:

            foo(P) when is_record(P, person) -> a_person;
            +foo(_) -> not_a_person.

            Pattern Matching

            Matching can be used in combination with records, as shown in the following -example:

            > P3 = #person{name="Joe", phone=[0,0,7], address="A street"}.
            -#person{name = "Joe",phone = [0,0,7],address = "A street"}
            -> #person{name = Name} = P3, Name.
            +example:

            > P3 = #person{name="Joe", phone=[0,0,7], address="A street"}.
            +#person{name = "Joe",phone = [0,0,7],address = "A street"}
            +> #person{name = Name} = P3, Name.
             "Joe"

            The following function takes a list of person records and searches for the -phone number of a person with a particular name:

            find_phone([#person{name=Name, phone=Phone} | _], Name) ->
            -    {found,  Phone};
            -find_phone([_| T], Name) ->
            -    find_phone(T, Name);
            -find_phone([], Name) ->
            +phone number of a person with a particular name:

            find_phone([#person{name=Name, phone=Phone} | _], Name) ->
            +    {found,  Phone};
            +find_phone([_| T], Name) ->
            +    find_phone(T, Name);
            +find_phone([], Name) ->
                 not_found.

            The fields referred to in the pattern can be given in any order.

            @@ -116,12 +116,12 @@

            The value of a field in a record can be an instance of a record. Retrieval of nested data can be done stepwise, or in a single step, as shown in the following -example:

            -record(name, {first = "Robert", last = "Ericsson"}).
            --record(person, {name = #name{}, phone}).
            +example:

            -record(name, {first = "Robert", last = "Ericsson"}).
            +-record(person, {name = #name{}, phone}).
             
            -demo() ->
            -  P = #person{name= #name{first="Robert",last="Virding"}, phone=123},
            -  First = (P#person.name)#name.first.

            Here, demo() evaluates to "Robert".

            +demo() -> + P = #person{name= #name{first="Robert",last="Virding"}, phone=123}, + First = (P#person.name)#name.first.

            Here, demo() evaluates to "Robert".

            @@ -139,40 +139,40 @@ %% about the person. %% A {Key, Value} list (default is the empty list). %%------------------------------------------------------------ --record(person, {name, age, phone = [], dict = []}).

            -module(person).
            --include("person.hrl").
            --compile(export_all). % For test purposes only.
            +-record(person, {name, age, phone = [], dict = []}).
            -module(person).
            +-include("person.hrl").
            +-compile(export_all). % For test purposes only.
             
             %% This creates an instance of a person.
             %%   Note: The phone number is not supplied so the
             %%         default value [] will be used.
             
            -make_hacker_without_phone(Name, Age) ->
            -   #person{name = Name, age = Age,
            -           dict = [{computer_knowledge, excellent},
            -                   {drinks, coke}]}.
            +make_hacker_without_phone(Name, Age) ->
            +   #person{name = Name, age = Age,
            +           dict = [{computer_knowledge, excellent},
            +                   {drinks, coke}]}.
             
             %% This demonstrates matching in arguments
             
            -print(#person{name = Name, age = Age,
            -              phone = Phone, dict = Dict}) ->
            -  io:format("Name: ~s, Age: ~w, Phone: ~w ~n"
            -            "Dictionary: ~w.~n", [Name, Age, Phone, Dict]).
            +print(#person{name = Name, age = Age,
            +              phone = Phone, dict = Dict}) ->
            +  io:format("Name: ~s, Age: ~w, Phone: ~w ~n"
            +            "Dictionary: ~w.~n", [Name, Age, Phone, Dict]).
             
             %% Demonstrates type testing, selector, updating.
             
            -birthday(P) when is_record(P, person) ->
            -   P#person{age = P#person.age + 1}.
            +birthday(P) when is_record(P, person) ->
            +   P#person{age = P#person.age + 1}.
             
            -register_two_hackers() ->
            -   Hacker1 = make_hacker_without_phone("Joe", 29),
            -   OldHacker = birthday(Hacker1),
            +register_two_hackers() ->
            +   Hacker1 = make_hacker_without_phone("Joe", 29),
            +   OldHacker = birthday(Hacker1),
                % The central_register_server should have
                % an interface function for this.
            -   central_register_server ! {register_person, Hacker1},
            -   central_register_server ! {register_person,
            -             OldHacker#person{name = "Robert",
            -                              phone = [0,8,3,2,4,5,3,1]}}.
            +
            central_register_server ! {register_person, Hacker1}, + central_register_server ! {register_person, + OldHacker#person{name = "Robert", + phone = [0,8,3,2,4,5,3,1]}}.
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/records_macros.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/records_macros.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/records_macros.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -33,7 +33,7 @@ introduced:

            %%%----FILE mess_config.hrl----
             
             %%% Configure the location of the server node,
            --define(server_node, messenger@super).
            +-define(server_node, messenger@super).
             
             %%%----END FILE----
            %%%----FILE mess_interface.hrl----
             
            @@ -41,24 +41,24 @@
             %%% messenger program
             
             %%%Messages from Client to server received in server/1 function.
            --record(logon,{client_pid, username}).
            --record(message,{client_pid, to_name, message}).
            +-record(logon,{client_pid, username}).
            +-record(message,{client_pid, to_name, message}).
             %%% {'EXIT', ClientPid, Reason}  (client terminated or unreachable.
             
             %%% Messages from Server to Client, received in await_result/0 function
            --record(abort_client,{message}).
            +-record(abort_client,{message}).
             %%% Messages are: user_exists_at_other_node,
             %%%               you_are_not_logged_on
            --record(server_reply,{message}).
            +-record(server_reply,{message}).
             %%% Messages are: logged_on
             %%%               receiver_not_found
             %%%               sent  (Message has been sent (no guarantee)
             %%% Messages from Server to Client received in client/1 function
            --record(message_from,{from_name, message}).
            +-record(message_from,{from_name, message}).
             
             %%% Messages from shell to Client received in client/1 function
             %%% spawn(mess_client, client, [server_node(), Name])
            --record(message_to,{to_name, message}).
            +-record(message_to,{to_name, message}).
             %%% logoff
             
             %%%----END FILE----
            %%%----FILE user_interface.erl----
            @@ -79,27 +79,27 @@
             %%%     function is not logged on or if ToName is not logged on at
             %%%     any node.
             
            --module(user_interface).
            --export([logon/1, logoff/0, message/2]).
            --include("mess_interface.hrl").
            --include("mess_config.hrl").
            +-module(user_interface).
            +-export([logon/1, logoff/0, message/2]).
            +-include("mess_interface.hrl").
            +-include("mess_config.hrl").
             
            -logon(Name) ->
            -    case whereis(mess_client) of
            +logon(Name) ->
            +    case whereis(mess_client) of
                     undefined ->
            -            register(mess_client,
            -                     spawn(mess_client, client, [?server_node, Name]));
            +            register(mess_client,
            +                     spawn(mess_client, client, [?server_node, Name]));
                     _ -> already_logged_on
                 end.
             
            -logoff() ->
            +logoff() ->
                 mess_client ! logoff.
             
            -message(ToName, Message) ->
            -    case whereis(mess_client) of % Test if the client is running
            +message(ToName, Message) ->
            +    case whereis(mess_client) of % Test if the client is running
                     undefined ->
                         not_logged_on;
            -        _ -> mess_client ! #message_to{to_name=ToName, message=Message},
            +        _ -> mess_client ! #message_to{to_name=ToName, message=Message},
                          ok
             end.
             
            @@ -107,107 +107,107 @@
             
             %%% The client process which runs on each user node
             
            --module(mess_client).
            --export([client/2]).
            --include("mess_interface.hrl").
            -
            -client(Server_Node, Name) ->
            -    {messenger, Server_Node} ! #logon{client_pid=self(), username=Name},
            -    await_result(),
            -    client(Server_Node).
            +-module(mess_client).
            +-export([client/2]).
            +-include("mess_interface.hrl").
            +
            +client(Server_Node, Name) ->
            +    {messenger, Server_Node} ! #logon{client_pid=self(), username=Name},
            +    await_result(),
            +    client(Server_Node).
             
            -client(Server_Node) ->
            +client(Server_Node) ->
                 receive
                     logoff ->
            -            exit(normal);
            -        #message_to{to_name=ToName, message=Message} ->
            -            {messenger, Server_Node} !
            -                #message{client_pid=self(), to_name=ToName, message=Message},
            -            await_result();
            -        {message_from, FromName, Message} ->
            -            io:format("Message from ~p: ~p~n", [FromName, Message])
            +            exit(normal);
            +        #message_to{to_name=ToName, message=Message} ->
            +            {messenger, Server_Node} !
            +                #message{client_pid=self(), to_name=ToName, message=Message},
            +            await_result();
            +        {message_from, FromName, Message} ->
            +            io:format("Message from ~p: ~p~n", [FromName, Message])
                 end,
            -    client(Server_Node).
            +    client(Server_Node).
             
             %%% wait for a response from the server
            -await_result() ->
            +await_result() ->
                 receive
            -        #abort_client{message=Why} ->
            -            io:format("~p~n", [Why]),
            -            exit(normal);
            -        #server_reply{message=What} ->
            -            io:format("~p~n", [What])
            +        #abort_client{message=Why} ->
            +            io:format("~p~n", [Why]),
            +            exit(normal);
            +        #server_reply{message=What} ->
            +            io:format("~p~n", [What])
                 after 5000 ->
            -            io:format("No response from server~n", []),
            -            exit(timeout)
            +            io:format("No response from server~n", []),
            +            exit(timeout)
                 end.
             
             %%%----END FILE---
            %%%----FILE mess_server.erl----
             
             %%% This is the server process of the messenger service
             
            --module(mess_server).
            --export([start_server/0, server/0]).
            --include("mess_interface.hrl").
            -
            -server() ->
            -    process_flag(trap_exit, true),
            -    server([]).
            +-module(mess_server).
            +-export([start_server/0, server/0]).
            +-include("mess_interface.hrl").
            +
            +server() ->
            +    process_flag(trap_exit, true),
            +    server([]).
             
             %%% the user list has the format [{ClientPid1, Name1},{ClientPid22, Name2},...]
            -server(User_List) ->
            -    io:format("User list = ~p~n", [User_List]),
            +server(User_List) ->
            +    io:format("User list = ~p~n", [User_List]),
                 receive
            -        #logon{client_pid=From, username=Name} ->
            -            New_User_List = server_logon(From, Name, User_List),
            -            server(New_User_List);
            -        {'EXIT', From, _} ->
            -            New_User_List = server_logoff(From, User_List),
            -            server(New_User_List);
            -        #message{client_pid=From, to_name=To, message=Message} ->
            -            server_transfer(From, To, Message, User_List),
            -            server(User_List)
            +        #logon{client_pid=From, username=Name} ->
            +            New_User_List = server_logon(From, Name, User_List),
            +            server(New_User_List);
            +        {'EXIT', From, _} ->
            +            New_User_List = server_logoff(From, User_List),
            +            server(New_User_List);
            +        #message{client_pid=From, to_name=To, message=Message} ->
            +            server_transfer(From, To, Message, User_List),
            +            server(User_List)
                 end.
             
             %%% Start the server
            -start_server() ->
            -    register(messenger, spawn(?MODULE, server, [])).
            +start_server() ->
            +    register(messenger, spawn(?MODULE, server, [])).
             
             %%% Server adds a new user to the user list
            -server_logon(From, Name, User_List) ->
            +server_logon(From, Name, User_List) ->
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_functions.xhtml differs (HTML document, ASCII text, with very long lines)
            --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_functions.xhtml"	2025-11-19 10:41:45.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_functions.xhtml"	2041-12-22 00:00:05.000000000 +0000
            @@ -29,10 +29,10 @@
             

            A function declaration is a sequence of function clauses separated by semicolons, and terminated by a period (.).

            A function clause consists of a clause head and a clause body, separated by ->.

            A clause head consists of the function name, an argument list, and an optional -guard sequence beginning with the keyword when:

            Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
            +guard sequence beginning with the keyword when:

            Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
                 Body1;
             ...;
            -Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
            +Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
                 BodyK.

            The function name is an atom. Each argument is a pattern.

            The number of arguments N is the arity of the function. A function is uniquely defined by the module name, function name, and arity. That is, two functions with the same name and in the same module, but with different arities @@ -40,10 +40,10 @@ mod:f/N.

            A clause body consists of a sequence of expressions separated by comma (,):

            Expr1,
             ...,
             ExprN

            Valid Erlang expressions and guard sequences are described in -Expressions.

            Example:

            fact(N) when N > 0 ->  % first clause head
            -    N * fact(N-1);     % first clause body
            +Expressions.

            Example:

            fact(N) when N > 0 ->  % first clause head
            +    N * fact(N-1);     % first clause body
             
            -fact(0) ->             % second clause head
            +fact(0) ->             % second clause head
                 1.                 % second clause body

            @@ -56,16 +56,16 @@ clause is found that fulfills both of the following two conditions:

            1. The patterns in the clause head can be successfully matched against the given arguments.
            2. The guard sequence, if any, is true.

            If such a clause cannot be found, a function_clause runtime error occurs.

            If such a clause is found, the corresponding clause body is evaluated. That is, the expressions in the body are evaluated sequentially and the value of the last -expression is returned.

            Consider the function fact:

            -module(mod).
            --export([fact/1]).
            +expression is returned.

            Consider the function fact:

            -module(mod).
            +-export([fact/1]).
             
            -fact(N) when N > 0 ->
            -    N * fact(N - 1);
            -fact(0) ->
            +fact(N) when N > 0 ->
            +    N * fact(N - 1);
            +fact(0) ->
                 1.

            Assume that you want to calculate the factorial for 1:

            1> mod:fact(1).

            Evaluation starts at the first clause. The pattern N is matched against argument 1. The matching succeeds and the guard (N > 0) is true, thus N is -bound to 1, and the corresponding body is evaluated:

            N * fact(N-1) => (N is bound to 1)
            -1 * fact(0)

            Now, fact(0) is called, and the function clauses are scanned +bound to 1, and the corresponding body is evaluated:

            N * fact(N-1) => (N is bound to 1)
            +1 * fact(0)

            Now, fact(0) is called, and the function clauses are scanned sequentially again. First, the pattern N is matched against 0. The matching succeeds, but the guard (N > 0) is false. Second, the pattern 0 is matched against the argument 0. The matching succeeds @@ -82,9 +82,9 @@ tail-recursive call is done. This is to ensure that no system resources, for example, call stack, are consumed. This means that an infinite loop using tail-recursive calls will not exhaust the call -stack and can (in principle) run forever.

            Example:

            loop(N) ->
            -    io:format("~w~n", [N]),
            -    loop(N+1).

            The earlier factorial example is a counter-example. It is not +stack and can (in principle) run forever.

            Example:

            loop(N) ->
            +    io:format("~w~n", [N]),
            +    loop(N+1).

            The earlier factorial example is a counter-example. It is not tail-recursive, since a multiplication is done on the result of the recursive call to fact(N-1).

            @@ -100,9 +100,9 @@ not need to be prefixed with the module name. Which BIFs that are auto-imported is specified in the erlang module in ERTS. For example, standard-type conversion BIFs like atom_to_list and BIFs allowed in guards can be called -without specifying the module name.

            Examples:

            1> tuple_size({a,b,c}).
            +without specifying the module name.

            Examples:

            1> tuple_size({a,b,c}).
             3
            -2> atom_to_list('Erlang').
            +2> atom_to_list('Erlang').
             "Erlang"
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_processes.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_processes.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_processes.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -34,10 +34,10 @@ Process Creation

            -

            A process is created by calling spawn():

            spawn(Module, Name, Args) -> pid()
            -  Module = Name = atom()
            -  Args = [Arg1,...,ArgN]
            -    ArgI = term()

            spawn() creates a new process and returns the pid.

            The new process starts executing in Module:Name(Arg1,...,ArgN) where the +

            A process is created by calling spawn():

            spawn(Module, Name, Args) -> pid()
            +  Module = Name = atom()
            +  Args = [Arg1,...,ArgN]
            +    ArgI = term()

            spawn() creates a new process and returns the pid.

            The new process starts executing in Module:Name(Arg1,...,ArgN) where the arguments are the elements of the (possible empty) Args argument list.

            There exist a number of different spawn BIFs:

            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_records.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_records.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_records.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -32,9 +32,9 @@

            A record definition consists of the name of the record, followed by the field names of the record. Record and field names must be atoms. Each field can be given an optional default value. If no default value is supplied, undefined is -used.

            -record(Name, {Field1 [= Expr1],
            +used.

            -record(Name, {Field1 [= Expr1],
                            ...
            -               FieldN [= ExprN]}).

            The default value for a field is an arbitrary expression, except that it must + FieldN [= ExprN]}).

            The default value for a field is an arbitrary expression, except that it must not use any variables.

            A record definition can be placed anywhere among the attributes and function declarations of a module, but the definition must come before any usage of the record.

            If a record is used in several modules, it is recommended that the record @@ -52,24 +52,24 @@ default value instead.

            If several fields are to be assigned the same value, the following construction can be used:

            #Name{Field1=Expr1, ..., FieldK=ExprK, _=ExprL}

            Omitted fields then get the value of evaluating ExprL instead of their default values. This feature is primarily intended to be used to create patterns for ETS -and Mnesia match functions.

            Example:

            -record(person, {name, phone, address}).
            +and Mnesia match functions.

            Example:

            -record(person, {name, phone, address}).
             
            -lookup(Name, Tab) ->
            -    ets:match_object(Tab, #person{name=Name, _='_'}).

            +lookup(Name, Tab) -> + ets:match_object(Tab, #person{name=Name, _='_'}).

            Accessing Record Fields

            Expr#Name.Field

            Returns the value of the specified field. Expr is to evaluate to a Name -record.

            Example:

            -record(person, {name, phone, address}).
            +record.

            Example:

            -record(person, {name, phone, address}).
             
            -get_person_name(Person) ->
            +get_person_name(Person) ->
                 Person#person.name.

            The following expression returns the position of the specified field in the -tuple representation of the record:

            #Name.Field

            Example:

            -record(person, {name, phone, address}).
            +tuple representation of the record:

            #Name.Field

            Example:

            -record(person, {name, phone, address}).
             
            -lookup(Name, List) ->
            -    lists:keyfind(Name, #person.name, List).

            +lookup(Name, List) -> + lists:keyfind(Name, #person.name, List).

            @@ -87,13 +87,13 @@

            Since record expressions are expanded to tuple expressions, creating records and accessing record fields are allowed in guards. However, all subexpressions (for initializing fields), must be valid guard -expressions as well.

            Examples:

            handle(Msg, State) when Msg =:= #msg{to=void, no=3} ->
            +expressions as well.

            Examples:

            handle(Msg, State) when Msg =:= #msg{to=void, no=3} ->
                 ...
             
            -handle(Msg, State) when State#state.running =:= true ->
            -    ...

            There is also a type test BIF is_record(Term, RecordTag).

            Example:

            is_person(P) when is_record(P, person) ->
            +handle(Msg, State) when State#state.running =:= true ->
            +    ...

            There is also a type test BIF is_record(Term, RecordTag).

            Example:

            is_person(P) when is_record(P, person) ->
                 true;
            -is_person(_P) ->
            +is_person(_P) ->
                 false.

            @@ -107,11 +107,11 @@ Nested Records

            -

            Assume the following record definitions:

            -record(nrec0, {name = "nested0"}).
            --record(nrec1, {name = "nested1", nrec0=#nrec0{}}).
            --record(nrec2, {name = "nested2", nrec1=#nrec1{}}).
            +

            Assume the following record definitions:

            -record(nrec0, {name = "nested0"}).
            +-record(nrec1, {name = "nested1", nrec0=#nrec0{}}).
            +-record(nrec2, {name = "nested2", nrec1=#nrec1{}}).
             
            -N2 = #nrec2{},

            Accessing or updating nested records can be written without parentheses:

            "nested0" = N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,
            +N2 = #nrec2{},

            Accessing or updating nested records can be written without parentheses:

            "nested0" = N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,
                 N0n = N2#nrec2.nrec1#nrec1.nrec0#nrec0{name = "nested0a"},

            which is equivalent to:

            "nested0" = ((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0.name,
             N0n = ((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0{name = "nested0a"},

            Change

            Before Erlang/OTP R14, parentheses were necessary when accessing or updating nested records.

            @@ -121,9 +121,9 @@ Internal Representation of Records

            Record expressions are translated to tuple expressions during compilation. A -record defined as:

            -record(Name, {Field1, ..., FieldN}).

            is internally represented by the tuple:

            {Name, Value1, ..., ValueN}

            Here each ValueI is the default value for FieldI.

            To each module using records, a pseudo function is added during compilation to -obtain information about records:

            record_info(fields, Record) -> [Field]
            -record_info(size, Record) -> Size

            Size is the size of the tuple representation, that is, one more than the +record defined as:

            -record(Name, {Field1, ..., FieldN}).

            is internally represented by the tuple:

            {Name, Value1, ..., ValueN}

            Here each ValueI is the default value for FieldI.

            To each module using records, a pseudo function is added during compilation to +obtain information about records:

            record_info(fields, Record) -> [Field]
            +record_info(size, Record) -> Size

            Size is the size of the tuple representation, that is, one more than the number of fields.

            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_handling.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_handling.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_handling.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -132,15 +132,15 @@ Instead, it is necessary to:

            • Suspend the processes using the module (to avoid that they try to handle any requests before the code replacement is completed).
            • Ask them to transform the internal state format and switch to the new version of the module.
            • Remove the old version.
            • Resume the processes.

            This is called synchronized code replacement and for this the following -instructions are used:

            {update, Module, {advanced, Extra}}
            -{update, Module, supervisor}

            update with argument {advanced,Extra} is used when changing the internal +instructions are used:

            {update, Module, {advanced, Extra}}
            +{update, Module, supervisor}

            update with argument {advanced,Extra} is used when changing the internal state of a behaviour as described above. It causes behaviour processes to call the callback function code_change/3, passing the term Extra and some other information as arguments. See the manual pages for the respective behaviours and Appup Cookbook.

            update with argument supervisor is used when changing the start specification of a supervisor. See Appup Cookbook.

            When a module is to be updated, the release handler finds which processes that are using the module by traversing the supervision tree of each running -application and checking all the child specifications:

            {Id, StartFunc, Restart, Shutdown, Type, Modules}

            A process uses a module if the name is listed in Modules in the child +application and checking all the child specifications:

            {Id, StartFunc, Restart, Shutdown, Type, Modules}

            A process uses a module if the name is listed in Modules in the child specification for the process.

            If Modules=dynamic, which is the case for event managers, the event manager process informs the release handler about the list of currently installed event handlers (gen_event), and it is checked if the module name is in this list @@ -152,10 +152,10 @@ add_module and delete_module

            -

            If a new module is introduced, the following instruction is used:

            {add_module, Module}

            This instruction loads module Module. When running Erlang in +

            If a new module is introduced, the following instruction is used:

            {add_module, Module}

            This instruction loads module Module. When running Erlang in embedded mode it is necessary to use this this instruction. It is not strictly required when running Erlang in interactive mode, since the -code server automatically searches for and loads unloaded modules.

            The opposite of add_module is delete_module, which unloads a module:

            {delete_module, Module}

            Any process, in any application, with Module as residence module, is +code server automatically searches for and loads unloaded modules.

            The opposite of add_module is delete_module, which unloads a module:

            {delete_module, Module}

            Any process, in any application, with Module as residence module, is killed when the instruction is evaluated. Therefore, the user must ensure that all such processes are terminated before deleting module Module to avoid a situation with failing supervisor restarts.

            @@ -236,13 +236,13 @@

            To define how to upgrade/downgrade between the current version and previous versions of an application, an application upgrade file, or in short .appup file is created. The file is to be called Application.appup, where -Application is the application name:

            {Vsn,
            - [{UpFromVsn1, InstructionsU1},
            +Application is the application name:

            {Vsn,
            + [{UpFromVsn1, InstructionsU1},
               ...,
            -  {UpFromVsnK, InstructionsUK}],
            - [{DownToVsn1, InstructionsD1},
            +  {UpFromVsnK, InstructionsUK}],
            + [{DownToVsn1, InstructionsD1},
               ...,
            -  {DownToVsnK, InstructionsDK}]}.
            • Vsn, a string, is the current version of the application, as defined in the + {DownToVsnK, InstructionsDK}]}.
            • Vsn, a string, is the current version of the application, as defined in the .app file.
            • Each UpFromVsn is a previous version of the application to upgrade from.
            • Each DownToVsn is a previous version of the application to downgrade to.
            • Each Instructions is a list of release handling instructions.

            UpFromVsn and DownToVsn can also be specified as regular expressions. For more information about the syntax and contents of the .appup file, see appup in SASL.

            Appup Cookbook includes examples of .appup files for @@ -250,52 +250,52 @@ Releases. Assume you want to add a function available/0 to server ch3, which returns the number of available channels (when trying out the example, make the change in a copy of the original -directory, to ensure that the first version is still available):

            -module(ch3).
            --behaviour(gen_server).
            +directory, to ensure that the first version is still available):

            -module(ch3).
            +-behaviour(gen_server).
             
            --export([start_link/0]).
            --export([alloc/0, free/1]).
            --export([available/0]).
            --export([init/1, handle_call/3, handle_cast/2]).
            +-export([start_link/0]).
            +-export([alloc/0, free/1]).
            +-export([available/0]).
            +-export([init/1, handle_call/3, handle_cast/2]).
             
            -start_link() ->
            -    gen_server:start_link({local, ch3}, ch3, [], []).
            +start_link() ->
            +    gen_server:start_link({local, ch3}, ch3, [], []).
             
            -alloc() ->
            -    gen_server:call(ch3, alloc).
            +alloc() ->
            +    gen_server:call(ch3, alloc).
             
            -free(Ch) ->
            -    gen_server:cast(ch3, {free, Ch}).
            +free(Ch) ->
            +    gen_server:cast(ch3, {free, Ch}).
             
            -available() ->
            -    gen_server:call(ch3, available).
            +available() ->
            +    gen_server:call(ch3, available).
             
            -init(_Args) ->
            -    {ok, channels()}.
            +init(_Args) ->
            +    {ok, channels()}.
             
            -handle_call(alloc, _From, Chs) ->
            -    {Ch, Chs2} = alloc(Chs),
            -    {reply, Ch, Chs2};
            -handle_call(available, _From, Chs) ->
            -    N = available(Chs),
            -    {reply, N, Chs}.
            +handle_call(alloc, _From, Chs) ->
            +    {Ch, Chs2} = alloc(Chs),
            +    {reply, Ch, Chs2};
            +handle_call(available, _From, Chs) ->
            +    N = available(Chs),
            +    {reply, N, Chs}.
             
            -handle_cast({free, Ch}, Chs) ->
            -    Chs2 = free(Ch, Chs),
            -    {noreply, Chs2}.

            A new version of the ch_app.app file must now be created, where the version is -updated:

            {application, ch_app,
            - [{description, "Channel allocator"},
            -  {vsn, "2"},
            -  {modules, [ch_app, ch_sup, ch3]},
            -  {registered, [ch3]},
            -  {applications, [kernel, stdlib, sasl]},
            -  {mod, {ch_app,[]}}
            - ]}.

            To upgrade ch_app from "1" to "2" (and to downgrade from "2" to "1"), +handle_cast({free, Ch}, Chs) -> + Chs2 = free(Ch, Chs), + {noreply, Chs2}.

            A new version of the ch_app.app file must now be created, where the version is +updated:

            {application, ch_app,
            + [{description, "Channel allocator"},
            +  {vsn, "2"},
            +  {modules, [ch_app, ch_sup, ch3]},
            +  {registered, [ch3]},
            +  {applications, [kernel, stdlib, sasl]},
            +  {mod, {ch_app,[]}}
            + ]}.

            To upgrade ch_app from "1" to "2" (and to downgrade from "2" to "1"), you only need to load the new (old) version of the ch3 callback module. Create -the application upgrade file ch_app.appup in the ebin directory:

            {"2",
            - [{"1", [{load_module, ch3}]}],
            - [{"1", [{load_module, ch3}]}]
            -}.

            +the application upgrade file ch_app.appup in the ebin directory:

            {"2",
            + [{"1", [{load_module, ch3}]}],
            + [{"1", [{load_module, ch3}]}]
            +}.

            @@ -314,14 +314,14 @@ relup in SASL.

            Example, continued from the previous section: You have a new version "2" of ch_app and an .appup file. A new version of the .rel file is also needed. This time the file is called ch_rel-2.rel and the release version string is -changed from "A" to "B":

            {release,
            - {"ch_rel", "B"},
            - {erts, "14.2.5"},
            - [{kernel, "9.2.4"},
            -  {stdlib, "5.2.3"},
            -  {sasl, "4.2.1"},
            -  {ch_app, "2"}]
            -}.

            Now the relup file can be generated:

            1> systools:make_relup("ch_rel-2", ["ch_rel-1"], ["ch_rel-1"]).
            +changed from "A" to "B":

            {release,
            + {"ch_rel", "B"},
            + {erts, "14.2.5"},
            + [{kernel, "9.2.4"},
            +  {stdlib, "5.2.3"},
            +  {sasl, "4.2.1"},
            +  {ch_app, "2"}]
            +}.

            Now the relup file can be generated:

            1> systools:make_relup("ch_rel-2", ["ch_rel-1"], ["ch_rel-1"]).
             ok

            This generates a relup file with instructions for how to upgrade from version "A" ("ch_rel-1") to version "B" ("ch_rel-2") and how to downgrade from version "B" to version "A".

            Both the old and new versions of the .app and .rel files must be in the code @@ -342,17 +342,17 @@ packages. The release_handler module communicates with this process.

            Assuming there is an operational target system with installation root directory $ROOT, the release package with the new version of the release is to be copied to $ROOT/releases.

            First, unpack the release package. The files are then extracted from the -package:

            release_handler:unpack_release(ReleaseName) => {ok, Vsn}
            • ReleaseName is the name of the release package except the .tar.gz +package:

              release_handler:unpack_release(ReleaseName) => {ok, Vsn}
              • ReleaseName is the name of the release package except the .tar.gz extension.
              • Vsn is the version of the unpacked release, as defined in its .rel file.

              A directory $ROOT/lib/releases/Vsn is created, where the .rel file, the boot script start.boot, the system configuration file sys.config, and relup are placed. For applications with new version numbers, the application directories are placed under $ROOT/lib. Unchanged applications are not affected.

              An unpacked release can be installed. The release handler then evaluates the -instructions in relup, step by step:

              release_handler:install_release(Vsn) => {ok, FromVsn, []}

              If an error occurs during the installation, the system is rebooted using the old +instructions in relup, step by step:

              release_handler:install_release(Vsn) => {ok, FromVsn, []}

              If an error occurs during the installation, the system is rebooted using the old version of the release. If installation succeeds, the system is afterwards using the new version of the release, but if anything happens and the system is rebooted, it starts using the previous version again.

              To be made the default version, the newly installed release must be made permanent, which means the previous version becomes old:

              release_handler:make_permanent(Vsn) => ok

              The system keeps information about which versions are old and permanent in the -files $ROOT/releases/RELEASES and $ROOT/releases/start_erl.data.

              To downgrade from Vsn to FromVsn, install_release must be called again:

              release_handler:install_release(FromVsn) => {ok, Vsn, []}

              An installed, but not permanent, release can be removed. Information about the +files $ROOT/releases/RELEASES and $ROOT/releases/start_erl.data.

              To downgrade from Vsn to FromVsn, install_release must be called again:

              release_handler:install_release(FromVsn) => {ok, Vsn, []}

              An installed, but not permanent, release can be removed. Information about the release is then deleted from $ROOT/releases/RELEASES and the release-specific code, that is, the new application directories and the $ROOT/releases/Vsn directory, are removed.

              release_handler:remove_release(Vsn) => ok

              @@ -371,9 +371,9 @@ ...

            $ROOT is the installation directory of the target system.

            Step 3) In another Erlang shell, generate start scripts and create a release package for the new version "B". Remember to include (a possible updated) sys.config and the relup file. For more information, see -Release Upgrade File.

            1> systools:make_script("ch_rel-2").
            +Release Upgrade File.

            1> systools:make_script("ch_rel-2").
             ok
            -2> systools:make_tar("ch_rel-2").
            +2> systools:make_tar("ch_rel-2").
             ok

            The new release package now also contains version "2" of ch_app and the relup file:

            % tar tf ch_rel-2.tar
             lib/kernel-9.2.4/ebin/kernel.app
            @@ -394,23 +394,23 @@
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_structure.xhtml differs (HTML document, ASCII text, with very long lines)
            --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_structure.xhtml"	2025-11-19 10:41:45.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_structure.xhtml"	2041-12-22 00:00:05.000000000 +0000
            @@ -45,29 +45,29 @@
             

            To define a release, create a release resource file, or in short a .rel file. In the file, specify the name and version of the release, which ERTS -version it is based on, and which applications it consists of:

            {release, {Name,Vsn}, {erts, EVsn},
            - [{Application1, AppVsn1},
            +version it is based on, and which applications it consists of:

            {release, {Name,Vsn}, {erts, EVsn},
            + [{Application1, AppVsn1},
                ...
            -  {ApplicationN, AppVsnN}]}.

            Name, Vsn, EVsn, and AppVsn are strings.

            The file must be named Rel.rel, where Rel is a unique name.

            Each Application (atom) and AppVsn is the name and version of an application + {ApplicationN, AppVsnN}]}.

            Name, Vsn, EVsn, and AppVsn are strings.

            The file must be named Rel.rel, where Rel is a unique name.

            Each Application (atom) and AppVsn is the name and version of an application included in the release. The minimal release based on Erlang/OTP consists of the Kernel and STDLIB applications, so these applications must be included in the list.

            If the release is to be upgraded, it must also include the SASL application.

            Here is an example showing the .app file for a release of ch_app from -the Applications section:

            {application, ch_app,
            - [{description, "Channel allocator"},
            -  {vsn, "1"},
            -  {modules, [ch_app, ch_sup, ch3]},
            -  {registered, [ch3]},
            -  {applications, [kernel, stdlib, sasl]},
            -  {mod, {ch_app,[]}}
            - ]}.

            The .rel file must also contain kernel, stdlib, and sasl, as these -applications are required by ch_app. The file is called ch_rel-1.rel:

            {release,
            - {"ch_rel", "A"},
            - {erts, "14.2.5"},
            - [{kernel, "9.2.4"},
            -  {stdlib, "5.2.3"},
            -  {sasl, "4.2.1"},
            -  {ch_app, "1"}]
            -}.

            +the Applications section:

            {application, ch_app,
            + [{description, "Channel allocator"},
            +  {vsn, "1"},
            +  {modules, [ch_app, ch_sup, ch3]},
            +  {registered, [ch3]},
            +  {applications, [kernel, stdlib, sasl]},
            +  {mod, {ch_app,[]}}
            + ]}.

            The .rel file must also contain kernel, stdlib, and sasl, as these +applications are required by ch_app. The file is called ch_rel-1.rel:

            {release,
            + {"ch_rel", "A"},
            + {erts, "14.2.5"},
            + [{kernel, "9.2.4"},
            +  {stdlib, "5.2.3"},
            +  {sasl, "4.2.1"},
            +  {ch_app, "1"}]
            +}.

            @@ -99,9 +99,9 @@

            The systools:make_tar/1,2 function takes a .rel file as input and creates a zipped tar file with the code for -the specified applications, a release package:

            1> systools:make_script("ch_rel-1").
            +the specified applications, a release package:

            1> systools:make_script("ch_rel-1").
             ok
            -2> systools:make_tar("ch_rel-1").
            +2> systools:make_tar("ch_rel-1").
             ok

            The release package by default contains:

            • The .app files
            • The .rel file
            • The object code for all applications, structured according to the application directory structure
            • The binary boot script renamed to start.boot
            % tar tf ch_rel-1.tar
             lib/kernel-9.2.4/ebin/kernel.app
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/robustness.xhtml differs (HTML document, ASCII text, with very long lines)
            --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/robustness.xhtml"	2025-11-19 10:41:45.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/robustness.xhtml"	2041-12-22 00:00:05.000000000 +0000
            @@ -37,36 +37,36 @@
             "pong" so that "pong" can also finish. Another way to let "pong" finish is to
             make "pong" exit if it does not receive a message from ping within a certain
             time. This can be done by adding a time-out to pong as shown in the
            -following example:

            -module(tut19).
            +following example:

            -module(tut19).
             
            --export([start_ping/1, start_pong/0,  ping/2, pong/0]).
            +-export([start_ping/1, start_pong/0,  ping/2, pong/0]).
             
            -ping(0, Pong_Node) ->
            -    io:format("ping finished~n", []);
            +ping(0, Pong_Node) ->
            +    io:format("ping finished~n", []);
             
            -ping(N, Pong_Node) ->
            -    {pong, Pong_Node} ! {ping, self()},
            +ping(N, Pong_Node) ->
            +    {pong, Pong_Node} ! {ping, self()},
                 receive
                     pong ->
            -            io:format("Ping received pong~n", [])
            +            io:format("Ping received pong~n", [])
                 end,
            -    ping(N - 1, Pong_Node).
            +    ping(N - 1, Pong_Node).
             
            -pong() ->
            +pong() ->
                 receive
            -        {ping, Ping_PID} ->
            -            io:format("Pong received ping~n", []),
            +        {ping, Ping_PID} ->
            +            io:format("Pong received ping~n", []),
                         Ping_PID ! pong,
            -            pong()
            +            pong()
                 after 5000 ->
            -            io:format("Pong timed out~n", [])
            +            io:format("Pong timed out~n", [])
                 end.
             
            -start_pong() ->
            -    register(pong, spawn(tut19, pong, [])).
            +start_pong() ->
            +    register(pong, spawn(tut19, pong, [])).
             
            -start_ping(Pong_Node) ->
            -    spawn(tut19, ping, [3, Pong_Node]).

            After this is compiled and the file tut19.beam is copied to the necessary +start_ping(Pong_Node) -> + spawn(tut19, ping, [3, Pong_Node]).

            After this is compiled and the file tut19.beam is copied to the necessary directories, the following is seen on (pong@kosken):

            (pong@kosken)1> tut19:start_pong().
             true
             Pong received ping
            @@ -77,20 +77,20 @@
             Ping received pong
             Ping received pong
             Ping received pong
            -ping finished

            The time-out is set in:

            pong() ->
            +ping finished

            The time-out is set in:

            pong() ->
                 receive
            -        {ping, Ping_PID} ->
            -            io:format("Pong received ping~n", []),
            +        {ping, Ping_PID} ->
            +            io:format("Pong received ping~n", []),
                         Ping_PID ! pong,
            -            pong()
            +            pong()
                 after 5000 ->
            -            io:format("Pong timed out~n", [])
            +            io:format("Pong timed out~n", [])
                 end.

            The time-out (after 5000) is started when receive is entered. The time-out is canceled if {ping,Ping_PID} is received. If {ping,Ping_PID} is not received, the actions following the time-out are done after 5000 milliseconds. after must be last in the receive, that is, preceded by all other message reception specifications in the receive. It is also possible to call a -function that returned an integer for the time-out:

            after pong_timeout() ->

            In general, there are better ways than using time-outs to supervise parts of a +function that returned an integer for the time-out:

            after pong_timeout() ->

            In general, there are better ways than using time-outs to supervise parts of a distributed Erlang system. Time-outs are usually appropriate to supervise external events, for example, if you have expected a message from some external system within a specified time. For example, a time-out can be used to log a @@ -118,36 +118,36 @@ If one of the processes exits abnormally, all the processes in the transaction are killed. As it is often wanted to create a process and link to it at the same time, there is a special BIF, spawn_link that does the -same as spawn, but also creates a link to the spawned process.

            Now an example of the ping pong example using links to terminate "pong":

            -module(tut20).
            +same as spawn, but also creates a link to the spawned process.

            Now an example of the ping pong example using links to terminate "pong":

            -module(tut20).
             
            --export([start/1,  ping/2, pong/0]).
            +-export([start/1,  ping/2, pong/0]).
             
            -ping(N, Pong_Pid) ->
            -    link(Pong_Pid),
            -    ping1(N, Pong_Pid).
            +ping(N, Pong_Pid) ->
            +    link(Pong_Pid),
            +    ping1(N, Pong_Pid).
             
            -ping1(0, _) ->
            -    exit(ping);
            +ping1(0, _) ->
            +    exit(ping);
             
            -ping1(N, Pong_Pid) ->
            -    Pong_Pid ! {ping, self()},
            +ping1(N, Pong_Pid) ->
            +    Pong_Pid ! {ping, self()},
                 receive
                     pong ->
            -            io:format("Ping received pong~n", [])
            +            io:format("Ping received pong~n", [])
                 end,
            -    ping1(N - 1, Pong_Pid).
            +    ping1(N - 1, Pong_Pid).
             
            -pong() ->
            +pong() ->
                 receive
            -        {ping, Ping_PID} ->
            -            io:format("Pong received ping~n", []),
            +        {ping, Ping_PID} ->
            +            io:format("Pong received ping~n", []),
                         Ping_PID ! pong,
            -            pong()
            +            pong()
                 end.
             
            -start(Ping_Node) ->
            -    PongPID = spawn(tut20, pong, []),
            -    spawn(Ping_Node, tut20, ping, [3, PongPID]).
            (s1@bill)3> tut20:start(s2@kosken).
            +start(Ping_Node) ->
            +    PongPID = spawn(tut20, pong, []),
            +    spawn(Ping_Node, tut20, ping, [3, PongPID]).
            (s1@bill)3> tut20:start(s2@kosken).
             Pong received ping
             <3820.41.0>
             Ping received pong
            @@ -161,45 +161,45 @@
             sent to "pong", which also terminates.

            It is possible to modify the default behaviour of a process so that it does not get killed when it receives abnormal exit signals. Instead, all signals are turned into normal messages on the format {'EXIT',FromPID,Reason} and added to -the end of the receiving process' message queue. This behaviour is set by:

            process_flag(trap_exit, true)

            There are several other process flags, see erlang(3). +the end of the receiving process' message queue. This behaviour is set by:

            process_flag(trap_exit, true)

            There are several other process flags, see erlang(3). Changing the default behaviour of a process in this way is usually not done in standard user programs, but is left to the supervisory programs in OTP. However, -the ping pong program is modified to illustrate exit trapping.

            -module(tut21).
            +the ping pong program is modified to illustrate exit trapping.

            -module(tut21).
             
            --export([start/1,  ping/2, pong/0]).
            +-export([start/1,  ping/2, pong/0]).
             
            -ping(N, Pong_Pid) ->
            -    link(Pong_Pid),
            -    ping1(N, Pong_Pid).
            +ping(N, Pong_Pid) ->
            +    link(Pong_Pid),
            +    ping1(N, Pong_Pid).
             
            -ping1(0, _) ->
            -    exit(ping);
            +ping1(0, _) ->
            +    exit(ping);
             
            -ping1(N, Pong_Pid) ->
            -    Pong_Pid ! {ping, self()},
            +ping1(N, Pong_Pid) ->
            +    Pong_Pid ! {ping, self()},
                 receive
                     pong ->
            -            io:format("Ping received pong~n", [])
            +            io:format("Ping received pong~n", [])
                 end,
            -    ping1(N - 1, Pong_Pid).
            +    ping1(N - 1, Pong_Pid).
             
            -pong() ->
            -    process_flag(trap_exit, true),
            -    pong1().
            +pong() ->
            +    process_flag(trap_exit, true),
            +    pong1().
             
            -pong1() ->
            +pong1() ->
                 receive
            -        {ping, Ping_PID} ->
            -            io:format("Pong received ping~n", []),
            +        {ping, Ping_PID} ->
            +            io:format("Pong received ping~n", []),
                         Ping_PID ! pong,
            -            pong1();
            -        {'EXIT', From, Reason} ->
            -            io:format("pong exiting, got ~p~n", [{'EXIT', From, Reason}])
            +            pong1();
            +        {'EXIT', From, Reason} ->
            +            io:format("pong exiting, got ~p~n", [{'EXIT', From, Reason}])
                 end.
             
            -start(Ping_Node) ->
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/seq_prog.xhtml differs (HTML document, ASCII text, with very long lines)
            --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/seq_prog.xhtml"	2025-11-19 10:41:45.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/seq_prog.xhtml"	2041-12-22 00:00:05.000000000 +0000
            @@ -45,13 +45,13 @@
             more editing commands in the shell (see
             tty - A command line interface in ERTS User's Guide).

            (Notice that many line numbers given by the shell in the following examples are out of sequence. This is because this tutorial was written and code-tested in -separate sessions).

            Here is a bit more complex calculation:

            2> (42 + 77) * 66 / 3.
            +separate sessions).

            Here is a bit more complex calculation:

            2> (42 + 77) * 66 / 3.
             2618.0

            Notice the use of brackets, the multiplication operator *, and the division operator /, as in normal arithmetic (see Expressions).

            Press Control-C to shut down the Erlang system and the Erlang shell.

            The following output is shown:

            BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
                    (v)ersion (k)ill (D)b-tables (d)istribution
             a
            -$

            Type a to leave the Erlang system.

            Another way to shut down the Erlang system is by entering halt/0:

            3> halt().
            +$

            Type a to leave the Erlang system.

            Another way to shut down the Erlang system is by entering halt/0:

            3> halt().
             $

            @@ -65,55 +65,55 @@ editor has an Erlang mode that makes it easier for you to enter and format your code nicely (see The Erlang mode for Emacs in Tools User's Guide), but you can manage perfectly well without. Here is the -code to enter:

            -module(tut).
            --export([double/1]).
            +code to enter:

            -module(tut).
            +-export([double/1]).
             
            -double(X) ->
            +double(X) ->
                 2 * X.

            It is not hard to guess that this program doubles the value of numbers. The first two lines of the code are described later. Let us compile the program. -This can be done in an Erlang shell as follows, where c means compile:

            3> c(tut).
            -{ok,tut}

            The {ok,tut} means that the compilation is OK. If it says error it means +This can be done in an Erlang shell as follows, where c means compile:

            3> c(tut).
            +{ok,tut}

            The {ok,tut} means that the compilation is OK. If it says error it means that there is some mistake in the text that you entered. Additional error messages gives an idea to what is wrong so you can modify the text and then try -to compile the program again.

            Now run the program:

            4> tut:double(10).
            +to compile the program again.

            Now run the program:

            4> tut:double(10).
             20

            As expected, double of 10 is 20.

            Now let us get back to the first two lines of the code. Erlang programs are written in files. Each file contains an Erlang module. The first line of code -in the module is the module name (see Modules):

            -module(tut).

            Thus, the module is called tut. Notice the full stop . at the end of the +in the module is the module name (see Modules):

            -module(tut).

            Thus, the module is called tut. Notice the full stop . at the end of the line. The files which are used to store the module must have the same name as the module but with the extension .erl. In this case the file name is tut.erl. When using a function in another module, the syntax module_name:function_name(arguments) is used. So the following means call -function double in module tut with argument 10.

            4> tut:double(10).

            The second line says that the module tut contains a function called double, -which takes one argument (X in our example):

            -export([double/1]).

            The second line also says that this function can be called from outside the +function double in module tut with argument 10.

            4> tut:double(10).

            The second line says that the module tut contains a function called double, +which takes one argument (X in our example):

            -export([double/1]).

            The second line also says that this function can be called from outside the module tut. More about this later. Again, notice the . at the end of the line.

            Now for a more complicated example, the factorial of a number. For example, the -factorial of 4 is 4 3 2 * 1, which equals 24.

            Enter the following code in a file named tut1.erl:

            -module(tut1).
            --export([fac/1]).
            +factorial of 4 is 4  3  2 * 1, which equals 24.

            Enter the following code in a file named tut1.erl:

            -module(tut1).
            +-export([fac/1]).
             
            -fac(1) ->
            +fac(1) ->
                 1;
            -fac(N) ->
            -    N * fac(N - 1).

            So this is a module, called tut1 that contains a function called fac>, which -takes one argument, N.

            The first part says that the factorial of 1 is 1.:

            fac(1) ->
            +fac(N) ->
            +    N * fac(N - 1).

            So this is a module, called tut1 that contains a function called fac>, which +takes one argument, N.

            The first part says that the factorial of 1 is 1.:

            fac(1) ->
                 1;

            Notice that this part ends with a semicolon ; that indicates that there is more of the function fac> to come.

            The second part says that the factorial of N is N multiplied by the factorial of -N - 1:

            fac(N) ->
            -    N * fac(N - 1).

            Notice that this part ends with a . saying that there are no more parts of -this function.

            Compile the file:

            5> c(tut1).
            -{ok,tut1}

            And now calculate the factorial of 4.

            6> tut1:fac(4).
            +N - 1:

            fac(N) ->
            +    N * fac(N - 1).

            Notice that this part ends with a . saying that there are no more parts of +this function.

            Compile the file:

            5> c(tut1).
            +{ok,tut1}

            And now calculate the factorial of 4.

            6> tut1:fac(4).
             24

            Here the function fac> in module tut1 is called with argument 4.

            A function can have many arguments. Let us expand the module tut1 with the -function to multiply two numbers:

            -module(tut1).
            --export([fac/1, mult/2]).
            +function to multiply two numbers:

            -module(tut1).
            +-export([fac/1, mult/2]).
             
            -fac(1) ->
            +fac(1) ->
                 1;
            -fac(N) ->
            -    N * fac(N - 1).
            +fac(N) ->
            +    N * fac(N - 1).
             
            -mult(X, Y) ->
            +mult(X, Y) ->
                 X * Y.

            Notice that it is also required to expand the -export line with the -information that there is another function mult with two arguments.

            Compile:

            7> c(tut1).
            -{ok,tut1}

            Try out the new function mult:

            8> tut1:mult(3,4).
            +information that there is another function mult with two arguments.

            Compile:

            7> c(tut1).
            +{ok,tut1}

            Try out the new function mult:

            8> tut1:mult(3,4).
             12

            In this example the numbers are integers and the arguments in the functions in the code N, X, and Y are called variables. Variables must start with a capital letter (see Variables). Examples of @@ -127,56 +127,56 @@ Atom), for example, charles, centimeter, and inch. Atoms are simply names, nothing else. They are not like variables, which can have a value.

            Enter the next program in a file named tut2.erl). It can be useful for -converting from inches to centimeters and conversely:

            -module(tut2).
            --export([convert/2]).
            +converting from inches to centimeters and conversely:

            -module(tut2).
            +-export([convert/2]).
             
            -convert(M, inch) ->
            +convert(M, inch) ->
                 M / 2.54;
             
            -convert(N, centimeter) ->
            -    N * 2.54.

            Compile:

            9> c(tut2).
            -{ok,tut2}

            Test:

            10> tut2:convert(3, inch).
            +convert(N, centimeter) ->
            +    N * 2.54.

            Compile:

            9> c(tut2).
            +{ok,tut2}

            Test:

            10> tut2:convert(3, inch).
             1.1811023622047243
            -11> tut2:convert(7, centimeter).
            +11> tut2:convert(7, centimeter).
             17.78

            Notice the introduction of decimals (floating point numbers) without any explanation. Hopefully you can cope with that.

            Let us see what happens if something other than centimeter or inch is -entered in the convert function:

            12> tut2:convert(3, miles).
            +entered in the convert function:

            12> tut2:convert(3, miles).
             ** exception error: no function clause matching tut2:convert(3,miles) (tut2.erl, line 4)

            The two parts of the convert function are called its clauses. As shown, miles is not part of either of the clauses. The Erlang system cannot match either of the clauses so an error message function_clause is returned. The shell formats the error message nicely, but the error tuple is saved in the -shell's history list and can be output by the shell command v/1:

            13> v(12).
            -{'EXIT',{function_clause,[{tut2,convert,
            -                                [3,miles],
            -                                [{file,"tut2.erl"},{line,4}]},
            -                          {erl_eval,do_apply,6,
            -                                    [{file,"erl_eval.erl"},{line,677}]},
            -                          {shell,exprs,7,[{file,"shell.erl"},{line,687}]},
            -                          {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
            -                          {shell,eval_loop,3,
            -                                 [{file,"shell.erl"},{line,627}]}]}}

            +shell's history list and can be output by the shell command v/1:

            13> v(12).
            +{'EXIT',{function_clause,[{tut2,convert,
            +                                [3,miles],
            +                                [{file,"tut2.erl"},{line,4}]},
            +                          {erl_eval,do_apply,6,
            +                                    [{file,"erl_eval.erl"},{line,677}]},
            +                          {shell,exprs,7,[{file,"shell.erl"},{line,687}]},
            +                          {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
            +                          {shell,eval_loop,3,
            +                                 [{file,"shell.erl"},{line,627}]}]}}

            Tuples

            -

            Now the tut2 program is hardly good programming style. Consider:

            tut2:convert(3, inch).

            Does this mean that 3 is in inches? Or does it mean that 3 is in centimeters and +

            Now the tut2 program is hardly good programming style. Consider:

            tut2:convert(3, inch).

            Does this mean that 3 is in inches? Or does it mean that 3 is in centimeters and is to be converted to inches? Erlang has a way to group things together to make things more understandable. These are called tuples and are surrounded by curly brackets, { and }.

            So, {inch,3} denotes 3 inches and {centimeter,5} denotes 5 centimeters. Now let us write a new program that converts centimeters to inches and conversely. -Enter the following code in a file called tut3.erl):

            -module(tut3).
            --export([convert_length/1]).
            +Enter the following code in a file called tut3.erl):

            -module(tut3).
            +-export([convert_length/1]).
             
            -convert_length({centimeter, X}) ->
            -    {inch, X / 2.54};
            -convert_length({inch, Y}) ->
            -    {centimeter, Y * 2.54}.

            Compile and test:

            14> c(tut3).
            -{ok,tut3}
            -15> tut3:convert_length({inch, 5}).
            -{centimeter,12.7}
            -16> tut3:convert_length(tut3:convert_length({inch, 5})).
            -{inch,5.0}

            Notice on line 16 that 5 inches is converted to centimeters and back again and +convert_length({centimeter, X}) -> + {inch, X / 2.54}; +convert_length({inch, Y}) -> + {centimeter, Y * 2.54}.

            Compile and test:

            14> c(tut3).
            +{ok,tut3}
            +15> tut3:convert_length({inch, 5}).
            +{centimeter,12.7}
            +16> tut3:convert_length(tut3:convert_length({inch, 5})).
            +{inch,5.0}

            Notice on line 16 that 5 inches is converted to centimeters and back again and reassuringly get back to the original value. That is, the argument to a function can be the result of another function. Consider how line 16 (above) works. The argument given to the function {inch,5} is first matched against the first @@ -185,9 +185,9 @@ before the ->). This having failed, let us try the head of the next clause that is, convert_length({inch,Y}). This matches, and Y gets the value 5.

            Tuples can have more than two parts, in fact as many parts as you want, and contain any valid Erlang term. For example, to represent the temperature of -various cities of the world:

            {moscow, {c, -10}}
            -{cape_town, {f, 70}}
            -{paris, {f, 28}}

            Tuples have a fixed number of items in them. Each item in a tuple is called an +various cities of the world:

            {moscow, {c, -10}}
            +{cape_town, {f, 70}}
            +{paris, {f, 28}}

            Tuples have a fixed number of items in them. Each item in a tuple is called an element. In the tuple {moscow,{c,-10}}, element 1 is moscow and element 2 is {c,-10}. Here c represents Celsius and f Fahrenheit.

            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/spec_proc.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/spec_proc.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/spec_proc.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -32,64 +32,64 @@

            The sys module has functions for simple debugging of processes implemented using behaviours. The code_lock example from -gen_statem Behaviour is used to illustrate this:

            Erlang/OTP 27 [erts-15.0] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
            +gen_statem Behaviour is used to illustrate this:

            Erlang/OTP 27 [erts-15.0] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
             
            -Eshell V15.0 (press Ctrl+G to abort, type help(). for help)
            -1> code_lock:start_link([1,2,3,4]).
            +Eshell V15.0 (press Ctrl+G to abort, type help(). for help)
            +1> code_lock:start_link([1,2,3,4]).
             Lock
            -{ok,<0.90.0>}
            -2> sys:statistics(code_lock, true).
            +{ok,<0.90.0>}
            +2> sys:statistics(code_lock, true).
             ok
            -3> sys:trace(code_lock, true).
            +3> sys:trace(code_lock, true).
             ok
            -4> code_lock:button(1).
            -*DBG* code_lock receive cast {button,1} in state locked
            +4> code_lock:button(1).
            +*DBG* code_lock receive cast {button,1} in state locked
             ok
            -*DBG* code_lock consume cast {button,1} in state locked
            -5> code_lock:button(2).
            -*DBG* code_lock receive cast {button,2} in state locked
            +*DBG* code_lock consume cast {button,1} in state locked
            +5> code_lock:button(2).
            +*DBG* code_lock receive cast {button,2} in state locked
             ok
            -*DBG* code_lock consume cast {button,2} in state locked
            -6> code_lock:button(3).
            -*DBG* code_lock receive cast {button,3} in state locked
            +*DBG* code_lock consume cast {button,2} in state locked
            +6> code_lock:button(3).
            +*DBG* code_lock receive cast {button,3} in state locked
             ok
            -*DBG* code_lock consume cast {button,3} in state locked
            -7> code_lock:button(4).
            -*DBG* code_lock receive cast {button,4} in state locked
            +*DBG* code_lock consume cast {button,3} in state locked
            +7> code_lock:button(4).
            +*DBG* code_lock receive cast {button,4} in state locked
             ok
             Unlock
            -*DBG* code_lock consume cast {button,4} in state locked => open
            -*DBG* code_lock start_timer {state_timeout,10000,lock,[]} in state open
            +*DBG* code_lock consume cast {button,4} in state locked => open
            +*DBG* code_lock start_timer {state_timeout,10000,lock,[]} in state open
             *DBG* code_lock receive state_timeout lock in state open
             Lock
             *DBG* code_lock consume state_timeout lock in state open => locked
            -8> sys:statistics(code_lock, get).
            -{ok,[{start_time,{{2024,5,3},{8,11,1}}},
            -     {current_time,{{2024,5,3},{8,11,48}}},
            -     {reductions,4098},
            -     {messages_in,5},
            -     {messages_out,0}]}
            -9> sys:statistics(code_lock, false).
            +8> sys:statistics(code_lock, get).
            +{ok,[{start_time,{{2024,5,3},{8,11,1}}},
            +     {current_time,{{2024,5,3},{8,11,48}}},
            +     {reductions,4098},
            +     {messages_in,5},
            +     {messages_out,0}]}
            +9> sys:statistics(code_lock, false).
             ok
            -10> sys:trace(code_lock, false).
            +10> sys:trace(code_lock, false).
             ok
            -11> sys:get_status(code_lock).
            -{status,<0.90.0>,
            -        {module,gen_statem},
            -        [[{'$initial_call',{code_lock,init,1}},
            -          {'$ancestors',[<0.88.0>,<0.87.0>,<0.70.0>,<0.65.0>,<0.69.0>,
            -                         <0.64.0>,kernel_sup,<0.47.0>]}],
            -         running,<0.88.0>,[],
            -         [{header,"Status for state machine code_lock"},
            -          {data,[{"Status",running},
            -                 {"Parent",<0.88.0>},
            -                 {"Modules",[code_lock]},
            -                 {"Time-outs",{0,[]}},
            -                 {"Logged Events",[]},
            -                 {"Postponed",[]}]},
            -          {data,[{"State",
            -                  {locked,#{code => [1,2,3,4],
            -                            length => 4,buttons => []}}}]}]]}

            +11> sys:get_status(code_lock). +{status,<0.90.0>, + {module,gen_statem}, + [[{'$initial_call',{code_lock,init,1}}, + {'$ancestors',[<0.88.0>,<0.87.0>,<0.70.0>,<0.65.0>,<0.69.0>, + <0.64.0>,kernel_sup,<0.47.0>]}], + running,<0.88.0>,[], + [{header,"Status for state machine code_lock"}, + {data,[{"Status",running}, + {"Parent",<0.88.0>}, + {"Modules",[code_lock]}, + {"Time-outs",{0,[]}}, + {"Logged Events",[]}, + {"Postponed",[]}]}, + {data,[{"State", + {locked,#{code => [1,2,3,4], + length => 4,buttons => []}}}]}]]}

            @@ -107,109 +107,109 @@

            Here follows the simple server from Overview, -implemented using sys and proc_lib to fit into a supervision tree:

            -module(ch4).
            --export([start_link/0]).
            --export([alloc/0, free/1]).
            --export([init/1]).
            --export([system_continue/3, system_terminate/4,
            +implemented using sys and proc_lib to fit into a supervision tree:

            -module(ch4).
            +-export([start_link/0]).
            +-export([alloc/0, free/1]).
            +-export([init/1]).
            +-export([system_continue/3, system_terminate/4,
                      write_debug/3,
            -         system_get_state/1, system_replace_state/2]).
            +         system_get_state/1, system_replace_state/2]).
             
            -start_link() ->
            -    proc_lib:start_link(ch4, init, [self()]).
            +start_link() ->
            +    proc_lib:start_link(ch4, init, [self()]).
             
            -alloc() ->
            -    ch4 ! {self(), alloc},
            +alloc() ->
            +    ch4 ! {self(), alloc},
                 receive
            -        {ch4, Res} ->
            +        {ch4, Res} ->
                         Res
                 end.
             
            -free(Ch) ->
            -    ch4 ! {free, Ch},
            +free(Ch) ->
            +    ch4 ! {free, Ch},
                 ok.
             
            -init(Parent) ->
            -    register(ch4, self()),
            -    Chs = channels(),
            -    Deb = sys:debug_options([]),
            -    proc_lib:init_ack(Parent, {ok, self()}),
            -    loop(Chs, Parent, Deb).
            +init(Parent) ->
            +    register(ch4, self()),
            +    Chs = channels(),
            +    Deb = sys:debug_options([]),
            +    proc_lib:init_ack(Parent, {ok, self()}),
            +    loop(Chs, Parent, Deb).
             
            -loop(Chs, Parent, Deb) ->
            +loop(Chs, Parent, Deb) ->
                 receive
            -        {From, alloc} ->
            -            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
            -                                    ch4, {in, alloc, From}),
            -            {Ch, Chs2} = alloc(Chs),
            -            From ! {ch4, Ch},
            -            Deb3 = sys:handle_debug(Deb2, fun ch4:write_debug/3,
            -                                    ch4, {out, {ch4, Ch}, From}),
            -            loop(Chs2, Parent, Deb3);
            -        {free, Ch} ->
            -            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
            -                                    ch4, {in, {free, Ch}}),
            -            Chs2 = free(Ch, Chs),
            -            loop(Chs2, Parent, Deb2);
            -
            -        {system, From, Request} ->
            -            sys:handle_system_msg(Request, From, Parent,
            -                                  ch4, Deb, Chs)
            +        {From, alloc} ->
            +            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
            +                                    ch4, {in, alloc, From}),
            +            {Ch, Chs2} = alloc(Chs),
            +            From ! {ch4, Ch},
            +            Deb3 = sys:handle_debug(Deb2, fun ch4:write_debug/3,
            +                                    ch4, {out, {ch4, Ch}, From}),
            +            loop(Chs2, Parent, Deb3);
            +        {free, Ch} ->
            +            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
            +                                    ch4, {in, {free, Ch}}),
            +            Chs2 = free(Ch, Chs),
            +            loop(Chs2, Parent, Deb2);
            +
            +        {system, From, Request} ->
            +            sys:handle_system_msg(Request, From, Parent,
            +                                  ch4, Deb, Chs)
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/statem.xhtml differs (HTML document, UTF-8 Unicode text, with very long lines)
            --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/statem.xhtml"	2025-11-19 10:41:45.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/statem.xhtml"	2041-12-22 00:00:05.000000000 +0000
            @@ -33,7 +33,7 @@
             a state transition and the output is actions executed during
             the state transition.  Analogously to the mathematical model
             of a Finite State Machine, it can be described as a set of relations
            -of the following form:

            State(S) x Event(E) -> Actions(A), State(S')

            These relations are interpreted as follows: if we are in state S, +of the following form:

            State(S) x Event(E) -> Actions(A), State(S')

            These relations are interpreted as follows: if we are in state S, and event E occurs, we are to perform actions A, and make a transition to state S'. Notice that S' can be equal to S, and that A can be empty.

            In gen_statem we define a state change as a state transition in which the @@ -314,12 +314,12 @@ mode, automatically call the state callback with special arguments whenever the state changes, so you can write state enter actions near the rest of the state transition rules. -It typically looks like this:

            StateName(enter, OldState, Data) ->
            +It typically looks like this:

            StateName(enter, OldState, Data) ->
                 ... code for state enter actions here ...
            -    {keep_state, NewData};
            -StateName(EventType, EventContent, Data) ->
            +    {keep_state, NewData};
            +StateName(EventType, EventContent, Data) ->
                 ... code for actions here ...
            -    {next_state, NewStateName, NewData}.

            Since the state enter call is not an event there are restrictions on the + {next_state, NewStateName, NewData}.

            Since the state enter call is not an event there are restrictions on the allowed return value and state transition actions. You must not change the state, postpone this non-event, insert any events, or change the @@ -408,55 +408,55 @@ open --> open : {button, Digit} open --> locked : state_timeout\n* do_lock()

            This code lock state machine can be implemented using gen_statem with -the following callback module:

            -module(code_lock).
            --behaviour(gen_statem).
            --define(NAME, code_lock).
            +the following callback module:

            -module(code_lock).
            +-behaviour(gen_statem).
            +-define(NAME, code_lock).
             
            --export([start_link/1]).
            --export([button/1]).
            --export([init/1,callback_mode/0,terminate/3]).
            --export([locked/3,open/3]).
            -
            -start_link(Code) ->
            -    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).
            -
            -button(Button) ->
            -    gen_statem:cast(?NAME, {button,Button}).
            -
            -init(Code) ->
            -    do_lock(),
            -    Data = #{code => Code, length => length(Code), buttons => []},
            -    {ok, locked, Data}.
            -
            -callback_mode() ->
            -    state_functions.
            locked(
            -  cast, {button,Button},
            -  #{code := Code, length := Length, buttons := Buttons} = Data) ->
            +-export([start_link/1]).
            +-export([button/1]).
            +-export([init/1,callback_mode/0,terminate/3]).
            +-export([locked/3,open/3]).
            +
            +start_link(Code) ->
            +    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).
            +
            +button(Button) ->
            +    gen_statem:cast(?NAME, {button,Button}).
            +
            +init(Code) ->
            +    do_lock(),
            +    Data = #{code => Code, length => length(Code), buttons => []},
            +    {ok, locked, Data}.
            +
            +callback_mode() ->
            +    state_functions.
            locked(
            +  cast, {button,Button},
            +  #{code := Code, length := Length, buttons := Buttons} = Data) ->
                 NewButtons =
                     if
            -            length(Buttons) < Length ->
            +            length(Buttons) < Length ->
                             Buttons;
                         true ->
            -                tl(Buttons)
            -        end ++ [Button],
            +                tl(Buttons)
            +        end ++ [Button],
                 if
                     NewButtons =:= Code -> % Correct
            -	    do_unlock(),
            -            {next_state, open, Data#{buttons := []},
            -             [{state_timeout,10_000,lock}]}; % Time in milliseconds
            +	    do_unlock(),
            +            {next_state, open, Data#{buttons := []},
            +             [{state_timeout,10_000,lock}]}; % Time in milliseconds
             	true -> % Incomplete | Incorrect
            -            {next_state, locked, Data#{buttons := NewButtons}}
            -    end.
            open(state_timeout, lock,  Data) ->
            -    do_lock(),
            -    {next_state, locked, Data};
            -open(cast, {button,_}, Data) ->
            -    {next_state, open, Data}.
            do_lock() ->
            -    io:format("Lock~n", []).
            -do_unlock() ->
            -    io:format("Unlock~n", []).
            +            {next_state, locked, Data#{buttons := NewButtons}}
            +    end.
            open(state_timeout, lock,  Data) ->
            +    do_lock(),
            +    {next_state, locked, Data};
            +open(cast, {button,_}, Data) ->
            +    {next_state, open, Data}.
            do_lock() ->
            +    io:format("Lock~n", []).
            +do_unlock() ->
            +    io:format("Unlock~n", []).
             
            -terminate(_Reason, State, _Data) ->
            -    State =/= locked andalso do_lock(),
            +terminate(_Reason, State, _Data) ->
            +    State =/= locked andalso do_lock(),
                 ok.

            The code is explained in the next sections.

            @@ -464,8 +464,8 @@ Starting gen_statem

            In the example in the previous section, gen_statem is started by calling -code_lock:start_link(Code):

            start_link(Code) ->
            -    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).

            start_link/1 calls function gen_statem:start_link/4, +code_lock:start_link(Code):

            start_link(Code) ->
            +    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).

            start_link/1 calls function gen_statem:start_link/4, which spawns and links to a new process, a gen_statem.

            • The first argument, {local,?NAME}, specifies the name. In this case, the gen_statem is locally registered as code_lock through the macro ?NAME.

              If the name is omitted, the gen_statem is not registered. Instead its pid must be used. The name can also be specified as {global, Name}, then the @@ -483,10 +483,10 @@ Data is the internal server data of the gen_statem. Here the server data is a map() with key code that stores the correct button sequence, key length store its length, and key buttons -that stores the collected buttons up to the same length.

              init(Code) ->
              -    do_lock(),
              -    Data = #{code => Code, length => length(Code), buttons => []},
              -    {ok, locked, Data}.

              Function gen_statem:start_link/3,4 +that stores the collected buttons up to the same length.

              init(Code) ->
              +    do_lock(),
              +    Data = #{code => Code, length => length(Code), buttons => []},
              +    {ok, locked, Data}.

              Function gen_statem:start_link/3,4 is synchronous. It does not return until the gen_statem is initialized and is ready to receive events.

              Function gen_statem:start_link/3,4 must be used if the gen_statem is part of a supervision tree, that is, @@ -495,7 +495,7 @@ a standalone gen_statem, meaning it is not part of a supervision tree.

              Function Module:callback_mode/0 selects the CallbackMode for the callback module, in this case state_functions. -That is, each state has its own handler function:

              callback_mode() ->
              +That is, each state has its own handler function:

              callback_mode() ->
                   state_functions.

              @@ -503,8 +503,8 @@ Handling Events

              The function notifying the code lock about a button event is implemented using -gen_statem:cast/2:

              button(Button) ->
              -    gen_statem:cast(?NAME, {button,Button}).

              The first argument is the name of the gen_statem and must agree with +gen_statem:cast/2:

              button(Button) ->
              +    gen_statem:cast(?NAME, {button,Button}).

              The first argument is the name of the gen_statem and must agree with the name used to start it. So, we use the same macro ?NAME as when starting. {button, Button} is the event content.

              The event is sent to the gen_statem. When the event is received, the gen_statem calls StateName(cast, Event, Data), which is expected @@ -512,30 +512,30 @@ {next_state, NewStateName, NewData, Actions}. StateName is the name of the current state and NewStateName is the name of the next state. NewData is a new value for the server data of the gen_statem, -and Actions is a list of actions to be performed by the gen_statem engine.

              locked(
              -  cast, {button,Button},
              -  #{code := Code, length := Length, buttons := Buttons} = Data) ->
              +and Actions is a list of actions to be performed by the gen_statem engine.

              locked(
              +  cast, {button,Button},
              +  #{code := Code, length := Length, buttons := Buttons} = Data) ->
                   NewButtons =
                       if
              -            length(Buttons) < Length ->
              +            length(Buttons) < Length ->
                               Buttons;
                           true ->
              -                tl(Buttons)
              -        end ++ [Button],
              +                tl(Buttons)
              +        end ++ [Button],
                   if
                       NewButtons =:= Code -> % Correct
              -	    do_unlock(),
              -            {next_state, open, Data#{buttons := []},
              -             [{state_timeout,10_000,lock}]}; % Time in milliseconds
              +	    do_unlock(),
              +            {next_state, open, Data#{buttons := []},
              +             [{state_timeout,10_000,lock}]}; % Time in milliseconds
               	true -> % Incomplete | Incorrect
              -            {next_state, locked, Data#{buttons := NewButtons}}
              /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/sup_princ.xhtml differs (HTML document, ASCII text, with very long lines)
              --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/sup_princ.xhtml"	2025-11-19 10:41:45.000000000 +0000
              +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/sup_princ.xhtml"	2041-12-22 00:00:05.000000000 +0000
              @@ -37,24 +37,24 @@
                 Example
               

            The callback module for a supervisor starting the server from -gen_server Behaviour can look as follows:

            -module(ch_sup).
            --behaviour(supervisor).
            +gen_server Behaviour can look as follows:

            -module(ch_sup).
            +-behaviour(supervisor).
             
            --export([start_link/0]).
            --export([init/1]).
            +-export([start_link/0]).
            +-export([init/1]).
             
            -start_link() ->
            -    supervisor:start_link(ch_sup, []).
            +start_link() ->
            +    supervisor:start_link(ch_sup, []).
             
            -init(_Args) ->
            -    SupFlags = #{strategy => one_for_one, intensity => 1, period => 5},
            -    ChildSpecs = [#{id => ch3,
            -                    start => {ch3, start_link, []},
            +init(_Args) ->
            +    SupFlags = #{strategy => one_for_one, intensity => 1, period => 5},
            +    ChildSpecs = [#{id => ch3,
            +                    start => {ch3, start_link, []},
                                 restart => permanent,
                                 shutdown => brutal_kill,
                                 type => worker,
            -                    modules => [ch3]}],
            -    {ok, {SupFlags, ChildSpecs}}.

            The SupFlags variable in the return value from init/1 represents the + modules => [ch3]}], + {ok, {SupFlags, ChildSpecs}}.

            The SupFlags variable in the return value from init/1 represents the supervisor flags.

            The ChildSpecs variable in the return value from init/1 is a list of child specifications.

            @@ -62,15 +62,15 @@ Supervisor Flags

            -

            This is the type definition for the supervisor flags:

            sup_flags() = #{strategy => strategy(),           % optional
            -                intensity => non_neg_integer(),   % optional
            -                period => pos_integer(),          % optional
            -                auto_shutdown => auto_shutdown()} % optional
            -    strategy() = one_for_all
            +

            This is the type definition for the supervisor flags:

            sup_flags() = #{strategy => strategy(),           % optional
            +                intensity => non_neg_integer(),   % optional
            +                period => pos_integer(),          % optional
            +                auto_shutdown => auto_shutdown()} % optional
            +    strategy() = one_for_all
                            | one_for_one
                            | rest_for_one
                            | simple_one_for_one
            -    auto_shutdown() = never
            +    auto_shutdown() = never
                                 | any_significant
                                 | all_significant

            -

            The type definition for a child specification is as follows:

            child_spec() = #{id => child_id(),             % mandatory
            -                 start => mfargs(),            % mandatory
            -                 restart => restart(),         % optional
            -                 significant => significant(), % optional
            -                 shutdown => shutdown(),       % optional
            -                 type => worker(),             % optional
            -                 modules => modules()}         % optional
            -    child_id() = term()
            -    mfargs() = {M :: module(), F :: atom(), A :: [term()]}
            -    modules() = [module()] | dynamic
            -    restart() = permanent | transient | temporary
            -    significant() = boolean()
            -    shutdown() = brutal_kill | timeout()
            -    worker() = worker | supervisor
            • id is used to identify the child specification internally by the supervisor.

              The id key is mandatory.

              Note that this identifier occasionally has been called "name". As far as +

              The type definition for a child specification is as follows:

              child_spec() = #{id => child_id(),             % mandatory
              +                 start => mfargs(),            % mandatory
              +                 restart => restart(),         % optional
              +                 significant => significant(), % optional
              +                 shutdown => shutdown(),       % optional
              +                 type => worker(),             % optional
              +                 modules => modules()}         % optional
              +    child_id() = term()
              +    mfargs() = {M :: module(), F :: atom(), A :: [term()]}
              +    modules() = [module()] | dynamic
              +    restart() = permanent | transient | temporary
              +    significant() = boolean()
              +    shutdown() = brutal_kill | timeout()
              +    worker() = worker | supervisor
              • id is used to identify the child specification internally by the supervisor.

                The id key is mandatory.

                Note that this identifier occasionally has been called "name". As far as possible, the terms "identifier" or "id" are now used but in order to keep backwards compatibility, some occurrences of "name" can still be found, for example in error messages.

              • start defines the function call used to start the child process. It is a @@ -366,32 +366,32 @@ name of the callback module.

              This information is used by the release handler during upgrades and downgrades; see Release Handling.

              The modules key is optional. If it is not given, it defaults to [M], where M comes from the child's start {M,F,A}.

            Example: The child specification to start the server ch3 in the previous -example look as follows:

            #{id => ch3,
            -  start => {ch3, start_link, []},
            +example look as follows:

            #{id => ch3,
            +  start => {ch3, start_link, []},
               restart => permanent,
               shutdown => brutal_kill,
               type => worker,
            -  modules => [ch3]}

            or simplified, relying on the default values:

            #{id => ch3,
            +  modules => [ch3]}

            or simplified, relying on the default values:

            #{id => ch3,
               start => {ch3, start_link, []},
               shutdown => brutal_kill}

            Example: A child specification to start the event manager from the chapter about -gen_event:

            #{id => error_man,
            -  start => {gen_event, start_link, [{local, error_man}]},
            -  modules => dynamic}

            Both server and event manager are registered processes which can be expected to +gen_event:

            #{id => error_man,
            +  start => {gen_event, start_link, [{local, error_man}]},
            +  modules => dynamic}

            Both server and event manager are registered processes which can be expected to be always accessible. Thus they are specified to be permanent.

            ch3 does not need to do any cleaning up before termination. Thus, no shutdown time is needed, but brutal_kill is sufficient. error_man can need some time for the event handlers to clean up, thus the shutdown time is set to 5000 ms -(which is the default value).

            Example: A child specification to start another supervisor:

            #{id => sup,
            -  start => {sup, start_link, []},
            +(which is the default value).

            Example: A child specification to start another supervisor:

            #{id => sup,
            +  start => {sup, start_link, []},
               restart => transient,
            -  type => supervisor} % will cause default shutdown=>infinity

            + type => supervisor} % will cause default shutdown=>infinity

            Starting a Supervisor

            In the previous example, the supervisor is started by calling -ch_sup:start_link():

            start_link() ->
            -    supervisor:start_link(ch_sup, []).

            ch_sup:start_link calls function supervisor:start_link/2, which spawns and +ch_sup:start_link():

            start_link() ->
            +    supervisor:start_link(ch_sup, []).

            ch_sup:start_link calls function supervisor:start_link/2, which spawns and links to a new process, a supervisor.

            • The first argument, ch_sup, is the name of the callback module, that is, the module where the init callback function is located.
            • The second argument, [], is a term that is passed as is to the callback function init. Here, init does not need any data and ignores the argument.

            In this case, the supervisor is not registered. Instead its pid must be used. A @@ -399,12 +399,12 @@ supervisor:start_link({local, Name}, Module, Args) or supervisor:start_link({global, Name}, Module, Args).

            The new supervisor process calls the callback function ch_sup:init([]). init -has to return {ok, {SupFlags, ChildSpecs}}:

            init(_Args) ->
            -    SupFlags = #{},
            -    ChildSpecs = [#{id => ch3,
            -                    start => {ch3, start_link, []},
            -                    shutdown => brutal_kill}],
            -    {ok, {SupFlags, ChildSpecs}}.

            Subsequently, the supervisor starts its child processes according to the child +has to return {ok, {SupFlags, ChildSpecs}}:

            init(_Args) ->
            +    SupFlags = #{},
            +    ChildSpecs = [#{id => ch3,
            +                    start => {ch3, start_link, []},
            +                    shutdown => brutal_kill}],
            +    {ok, {SupFlags, ChildSpecs}}.

            Subsequently, the supervisor starts its child processes according to the child specifications in the start specification. In this case there is a single child process, called ch3.

            supervisor:start_link/3 is synchronous. It does not return until all child processes have been started.

            @@ -441,23 +441,23 @@

            A supervisor with restart strategy simple_one_for_one is a simplified one_for_one supervisor, where all child processes are dynamically added instances of the same process.

            The following is an example of a callback module for a simple_one_for_one -supervisor:

            -module(simple_sup).
            --behaviour(supervisor).
            +supervisor:

            -module(simple_sup).
            +-behaviour(supervisor).
             
            --export([start_link/0]).
            --export([init/1]).
            +-export([start_link/0]).
            +-export([init/1]).
             
            -start_link() ->
            -    supervisor:start_link(simple_sup, []).
            +start_link() ->
            +    supervisor:start_link(simple_sup, []).
             
            -init(_Args) ->
            -    SupFlags = #{strategy => simple_one_for_one,
            +init(_Args) ->
            +    SupFlags = #{strategy => simple_one_for_one,
                              intensity => 0,
            -                 period => 1},
            -    ChildSpecs = [#{id => call,
            -                    start => {call, start_link, []},
            -                    shutdown => brutal_kill}],
            -    {ok, {SupFlags, ChildSpecs}}.

            When started, the supervisor does not start any child + period => 1}, + ChildSpecs = [#{id => call, + start => {call, start_link, []}, + shutdown => brutal_kill}], + {ok, {SupFlags, ChildSpecs}}.

            When started, the supervisor does not start any child processes. Instead, all child processes need to be added dynamically by calling supervisor:start_child(Sup, List).

            Sup is the pid, or name, of the supervisor. List is an arbitrary list of terms, which are added to the list of arguments specified in the child /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/tablesdatabases.xhtml differs (HTML document, ASCII text, with very long lines) --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/tablesdatabases.xhtml" 2025-11-19 10:41:45.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/tablesdatabases.xhtml" 2041-12-22 00:00:05.000000000 +0000 @@ -55,11 +55,11 @@

            The delete operation is considered successful if the element was not present in the table. Hence all attempts to check that the element is present in the Ets/Mnesia table before deletion are unnecessary. Here follows an example for -Ets tables:

            DO

            ets:delete(Tab, Key),

            DO NOT

            case ets:lookup(Tab, Key) of
            -    [] ->
            +Ets tables:

            DO

            ets:delete(Tab, Key),

            DO NOT

            case ets:lookup(Tab, Key) of
            +    [] ->
                     ok;
            -    [_|_] ->
            -        ets:delete(Tab, Key)
            +    [_|_] ->
            +        ets:delete(Tab, Key)
             end,

            @@ -71,49 +71,49 @@ functions print_name/1, print_age/1, and print_occupation/1.

            Note

            If the function print_name/1, and so on, had been interface functions, the situation would have been different, as you do not want the user of the interface to know about the internal data representation.

            DO

            %%% Interface function
            -print_person(PersonId) ->
            +print_person(PersonId) ->
                 %% Look up the person in the named table person,
            -    case ets:lookup(person, PersonId) of
            -        [Person] ->
            -            print_name(Person),
            -            print_age(Person),
            -            print_occupation(Person);
            -        [] ->
            -            io:format("No person with ID = ~p~n", [PersonID])
            +    case ets:lookup(person, PersonId) of
            +        [Person] ->
            +            print_name(Person),
            +            print_age(Person),
            +            print_occupation(Person);
            +        [] ->
            +            io:format("No person with ID = ~p~n", [PersonID])
                 end.
             
             %%% Internal functions
            -print_name(Person) ->
            -    io:format("No person ~p~n", [Person#person.name]).
            +print_name(Person) ->
            +    io:format("No person ~p~n", [Person#person.name]).
             
            -print_age(Person) ->
            -    io:format("No person ~p~n", [Person#person.age]).
            +print_age(Person) ->
            +    io:format("No person ~p~n", [Person#person.age]).
             
            -print_occupation(Person) ->
            -    io:format("No person ~p~n", [Person#person.occupation]).

            DO NOT

            %%% Interface function
            -print_person(PersonId) ->
            +print_occupation(Person) ->
            +    io:format("No person ~p~n", [Person#person.occupation]).

            DO NOT

            %%% Interface function
            +print_person(PersonId) ->
                 %% Look up the person in the named table person,
            -    case ets:lookup(person, PersonId) of
            -        [Person] ->
            -            print_name(PersonID),
            -            print_age(PersonID),
            -            print_occupation(PersonID);
            -        [] ->
            -            io:format("No person with ID = ~p~n", [PersonID])
            +    case ets:lookup(person, PersonId) of
            +        [Person] ->
            +            print_name(PersonID),
            +            print_age(PersonID),
            +            print_occupation(PersonID);
            +        [] ->
            +            io:format("No person with ID = ~p~n", [PersonID])
                 end.
             
             %%% Internal functions
            -print_name(PersonID) ->
            -    [Person] = ets:lookup(person, PersonId),
            -    io:format("No person ~p~n", [Person#person.name]).
            -
            -print_age(PersonID) ->
            -    [Person] = ets:lookup(person, PersonId),
            -    io:format("No person ~p~n", [Person#person.age]).
            -
            -print_occupation(PersonID) ->
            -    [Person] = ets:lookup(person, PersonId),
            -    io:format("No person ~p~n", [Person#person.occupation]).

            +print_name(PersonID) -> + [Person] = ets:lookup(person, PersonId), + io:format("No person ~p~n", [Person#person.name]). + +print_age(PersonID) -> + [Person] = ets:lookup(person, PersonId), + io:format("No person ~p~n", [Person#person.age]). + +print_occupation(PersonID) -> + [Person] = ets:lookup(person, PersonId), + io:format("No person ~p~n", [Person#person.occupation]).

            @@ -135,30 +135,30 @@ #person{idno = 4, name = "Carl", age = 25, occupation = "mailman"}]

            If you must return all data stored in the Ets table, you can use ets:tab2list/1. However, usually you are only interested in a subset of the information in which case ets:tab2list/1 is expensive. If you only want to -extract one field from each record, for example, the age of every person, then:

            DO

            ets:select(Tab, [{#person{idno='_',
            +extract one field from each record, for example, the age of every person, then:

            DO

            ets:select(Tab, [{#person{idno='_',
                                       name='_',
                                       age='$1',
            -                          occupation = '_'},
            -                [],
            -                ['$1']}]),

            DO NOT

            TabList = ets:tab2list(Tab),
            -lists:map(fun(X) -> X#person.age end, TabList),

            If you are only interested in the age of all persons named "Bryan", then:

            DO

            ets:select(Tab, [{#person{idno='_',
            +                          occupation = '_'},
            +                [],
            +                ['$1']}]),

            DO NOT

            TabList = ets:tab2list(Tab),
            +lists:map(fun(X) -> X#person.age end, TabList),

            If you are only interested in the age of all persons named "Bryan", then:

            DO

            ets:select(Tab, [{#person{idno='_',
                                       name="Bryan",
                                       age='$1',
            -                          occupation = '_'},
            -                [],
            -                ['$1']}])

            DO NOT

            TabList = ets:tab2list(Tab),
            -lists:foldl(fun(X, Acc) -> case X#person.name of
            +                          occupation = '_'},
            +                [],
            +                ['$1']}])

            DO NOT

            TabList = ets:tab2list(Tab),
            +lists:foldl(fun(X, Acc) -> case X#person.name of
                                             "Bryan" ->
            -                                    [X#person.age|Acc];
            +                                    [X#person.age|Acc];
                                              _ ->
                                                  Acc
                                        end
            -             end, [], TabList)

            If you need all information stored in the Ets table about persons named "Bryan", -then:

            DO

            ets:select(Tab, [{#person{idno='_',
            +             end, [], TabList)

            If you need all information stored in the Ets table about persons named "Bryan", +then:

            DO

            ets:select(Tab, [{#person{idno='_',
                                       name="Bryan",
                                       age='_',
            -                          occupation = '_'}, [], ['$_']}]),

            DO NOT

            TabList = ets:tab2list(Tab),
            -lists:filter(fun(X) -> X#person.name == "Bryan" end, TabList),

            + occupation = '_'}, [], ['$_']}]),

            DO NOT

            TabList = ets:tab2list(Tab),
            +lists:filter(fun(X) -> X#person.name == "Bryan" end, TabList),

            @@ -202,12 +202,12 @@ #index_entry{name="Bryan", idno=2}, #index_entry{name="Bryan", idno=3}, #index_entry{name="Carl", idno=4}]

            Given this index table, a lookup of the age fields for all persons named -"Bryan" can be done as follows:

            MatchingIDs = ets:lookup(IndexTable,"Bryan"),
            -lists:map(fun(#index_entry{idno = ID}) ->
            -                 [#person{age = Age}] = ets:lookup(PersonTable, ID),
            +"Bryan" can be done as follows:

            MatchingIDs = ets:lookup(IndexTable,"Bryan"),
            +lists:map(fun(#index_entry{idno = ID}) ->
            +                 [#person{age = Age}] = ets:lookup(PersonTable, ID),
                              Age
                       end,
            -          MatchingIDs),

            Notice that this code does not use ets:match/2, but instead uses the + MatchingIDs),

            Notice that this code does not use ets:match/2, but instead uses the ets:lookup/2 call. The lists:map/2 call is only used to traverse the idnos matching the name "Bryan" in the table; thus the number of lookups in the master table is minimized.

            Keeping an index table introduces some overhead when inserting records in the @@ -230,17 +230,17 @@ mnesia:match_object() as these function traverse the whole table. Instead, you can create a secondary index and use mnesia:index_read/3 to get faster access at the expense of using more -memory.

            Example:

            -record(person, {idno, name, age, occupation}).
            +memory.

            Example:

            -record(person, {idno, name, age, occupation}).
                     ...
            -{atomic, ok} =
            -mnesia:create_table(person, [{index,[#person.age]},
            -                              {attributes,
            -                                    record_info(fields, person)}]),
            -{atomic, ok} = mnesia:add_table_index(person, age),
            +{atomic, ok} =
            +mnesia:create_table(person, [{index,[#person.age]},
            +                              {attributes,
            +                                    record_info(fields, person)}]),
            +{atomic, ok} = mnesia:add_table_index(person, age),
             ...
             
             PersonsAge42 =
            -     mnesia:dirty_index_read(person, 42, #person.age),

            + mnesia:dirty_index_read(person, 42, #person.age),

            @@ -254,19 +254,19 @@ the table. Other processes must send update requests to that process.

            Example:

            ...
             %% Using transaction
             
            -Fun = fun() ->
            -          [mnesia:read({Table, Key}),
            -           mnesia:read({Table2, Key2})]
            +Fun = fun() ->
            +          [mnesia:read({Table, Key}),
            +           mnesia:read({Table2, Key2})]
                   end,
             
            /usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/typespec.xhtml differs (HTML document, ASCII text, with very long lines)
            --- "old//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/typespec.xhtml"	2025-11-19 10:41:45.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/typespec.xhtml"	2041-12-22 00:00:05.000000000 +0000
            @@ -146,11 +146,11 @@
             predefined aliases for the type unions also shown in the table.

            Built-in typeDefined as
            term/0any/0
            binary/0<<_:_*8>>
            nonempty_binary/0<<_:8, _:_*8>>
            bitstring/0<<_:_*1>>
            nonempty_bitstring/0<<_:1, _:_*1>>
            boolean/0'false' | 'true'
            byte/00..255
            char/00..16#10ffff
            nil/0[]
            number/0integer/0 | float/0
            list/0[any()]
            maybe_improper_list/0maybe_improper_list(any(), any())
            nonempty_list/0nonempty_list(any())
            string/0[char()]
            nonempty_string/0[char(),...]
            iodata/0iolist() | binary()
            iolist/0maybe_improper_list(byte() | binary() | iolist(), binary() | [])
            map/0#{any() => any()}
            function/0fun()
            module/0atom/0
            mfa/0{module(),atom(),arity()}
            arity/00..255
            identifier/0pid() | port() | reference()
            node/0atom/0
            timeout/0'infinity' | non_neg_integer()
            no_return/0none/0

            Table: Built-in types, predefined aliases

            In addition, the following three built-in types exist and can be thought as defined below, though strictly their "type definition" is not valid syntax according to the type language defined above.

            Built-in typeCan be thought defined by the syntax
            non_neg_integer/00..
            pos_integer/01..
            neg_integer/0..-1

            Table: Additional built-in types

            Note

            The following built-in list types also exist, but they are expected to be -rarely used. Hence, they have long names:

            nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any(), any())
            -nonempty_improper_list(Type1, Type2)
            -nonempty_maybe_improper_list(Type1, Type2)

            where the last two types define the set of Erlang terms one would expect.

            Also for convenience, record notation is allowed to be used. Records are -shorthands for the corresponding tuples:

            Record :: #Erlang_Atom{}
            -        | #Erlang_Atom{Fields}

            Records are extended to possibly contain type information. This is described in +rarely used. Hence, they have long names:

            nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any(), any())
            +nonempty_improper_list(Type1, Type2)
            +nonempty_maybe_improper_list(Type1, Type2)

            where the last two types define the set of Erlang terms one would expect.

            Also for convenience, record notation is allowed to be used. Records are +shorthands for the corresponding tuples:

            Record :: #Erlang_Atom{}
            +        | #Erlang_Atom{Fields}

            Records are extended to possibly contain type information. This is described in Type Information in Record Declarations.

            @@ -161,8 +161,8 @@ name as a built-in type.

            It is recommended to avoid deliberately reusing built-in names because it can be confusing. However, when an Erlang/OTP release introduces a new type, code that happened to define its own type having the same name will continue to work.

            As an example, imagine that the Erlang/OTP 42 release introduces a new type -gadget() defined like this:

            -type gadget() :: {'gadget', reference()}.

            Further imagine that some code has its own (different) definition of gadget(), -for example:

            -type gadget() :: #{}.

            Since redefinitions are allowed, the code will still compile (but with a +gadget() defined like this:

            -type gadget() :: {'gadget', reference()}.

            Further imagine that some code has its own (different) definition of gadget(), +for example:

            -type gadget() :: #{}.

            Since redefinitions are allowed, the code will still compile (but with a warning), and Dialyzer will not emit any additional warnings.

            @@ -171,8 +171,8 @@

            As seen, the basic syntax of a type is an atom followed by closed parentheses. New types are declared using -type and -opaque attributes as in the -following:

            -type my_struct_type() :: Type.
            --opaque my_opaq_type() :: Type.

            The type name is the atom my_struct_type, followed by parentheses. Type is a +following:

            -type my_struct_type() :: Type.
            +-opaque my_opaq_type() :: Type.

            The type name is the atom my_struct_type, followed by parentheses. Type is a type as defined in the previous section. A current restriction is that Type can contain only predefined types, or user-defined types which are either of the following:

            • Module-local type, that is, with a definition that is present in the code of @@ -182,10 +182,10 @@ similar restriction currently exists for records.)

              Type declarations can also be parameterized by including type variables between the parentheses. The syntax of type variables is the same as Erlang variables, that is, starts with an upper-case letter. These variables is to -appear on the RHS of the definition. A concrete example follows:

              -type orddict(Key, Val) :: [{Key, Val}].

              A module can export some types to declare that other modules are allowed to -refer to them as remote types. This declaration has the following form:

              -export_type([T1/A1, ..., Tk/Ak]).

              Here the Tis are atoms (the name of the type) and the Ais are their arguments.

              Example:

              -export_type([my_struct_type/0, orddict/2]).

              Assuming that these types are exported from module 'mod', you can refer to -them from other modules using remote type expressions like the following:

              mod:my_struct_type()
              -mod:orddict(atom(), term())

              It is not allowed to refer to types that are not declared as exported.

              Types declared as opaque represent sets of terms whose structure is not +appear on the RHS of the definition. A concrete example follows:

              -type orddict(Key, Val) :: [{Key, Val}].

              A module can export some types to declare that other modules are allowed to +refer to them as remote types. This declaration has the following form:

              -export_type([T1/A1, ..., Tk/Ak]).

              Here the Tis are atoms (the name of the type) and the Ais are their arguments.

              Example:

              -export_type([my_struct_type/0, orddict/2]).

              Assuming that these types are exported from module 'mod', you can refer to +them from other modules using remote type expressions like the following:

              mod:my_struct_type()
              +mod:orddict(atom(), term())

              It is not allowed to refer to types that are not declared as exported.

              Types declared as opaque represent sets of terms whose structure is not supposed to be visible from outside of their defining module. That is, only the module defining them is allowed to depend on their term structure. Consequently, such types do not make much sense as module local - module local types are not @@ -196,33 +196,33 @@ Type Information in Record Declarations

            The types of record fields can be specified in the declaration of the record. -The syntax for this is as follows:

            -record(rec, {field1 :: Type1, field2, field3 :: Type3}).

            For fields without type annotations, their type defaults to any(). That is, the -previous example is a shorthand for the following:

            -record(rec, {field1 :: Type1, field2 :: any(), field3 :: Type3}).

            In the presence of initial values for fields, the type must be declared after -the initialization, as follows:

            -record(rec, {field1 = [] :: Type1, field2, field3 = 42 :: Type3}).

            The initial values for fields are to be compatible with (that is, a member of) +The syntax for this is as follows:

            -record(rec, {field1 :: Type1, field2, field3 :: Type3}).

            For fields without type annotations, their type defaults to any(). That is, the +previous example is a shorthand for the following:

            -record(rec, {field1 :: Type1, field2 :: any(), field3 :: Type3}).

            In the presence of initial values for fields, the type must be declared after +the initialization, as follows:

            -record(rec, {field1 = [] :: Type1, field2, field3 = 42 :: Type3}).

            The initial values for fields are to be compatible with (that is, a member of) the corresponding types. This is checked by the compiler and results in a compilation error if a violation is detected.

            Change

            Before Erlang/OTP 19, for fields without initial values, the singleton type 'undefined' was added to all declared types. In other words, the following -two record declarations had identical effects:

            -record(rec, {f1 = 42 :: integer(),
            -             f2      :: float(),
            -             f3      :: 'a' | 'b'}).
            +two record declarations had identical effects:

            -record(rec, {f1 = 42 :: integer(),
            +             f2      :: float(),
            +             f3      :: 'a' | 'b'}).
             
            --record(rec, {f1 = 42 :: integer(),
            -              f2      :: 'undefined' | float(),
            -              f3      :: 'undefined' | 'a' | 'b'}).

            This is no longer the case. If you require 'undefined' in your record field +-record(rec, {f1 = 42 :: integer(), + f2 :: 'undefined' | float(), + f3 :: 'undefined' | 'a' | 'b'}).

            This is no longer the case. If you require 'undefined' in your record field type, you must explicitly add it to the typespec, as in the 2nd example.

            Any record, containing type information or not, once defined, can be used as a type using the following syntax:

            #rec{}

            In addition, the record fields can be further specified when using a record type by adding type information about the field as follows:

            #rec{some_field :: Type}

            Any unspecified fields are assumed to have the type in the original record declaration.

            Note

            When records are used to create patterns for ETS and Mnesia match functions, -Dialyzer may need some help not to emit bad warnings. For example:

            -type height() :: pos_integer().
            --record(person, {name :: string(), height :: height()}).
            +Dialyzer may need some help not to emit bad warnings. For example:

            -type height() :: pos_integer().
            +-record(person, {name :: string(), height :: height()}).
             
            -lookup(Name, Tab) ->
            -    ets:match_object(Tab, #person{name = Name, _ = '_'}).

            Dialyzer will emit a warning since '_' is not in the type of record field +lookup(Name, Tab) -> + ets:match_object(Tab, #person{name = Name, _ = '_'}).

            Dialyzer will emit a warning since '_' is not in the type of record field height.

            The recommended way of dealing with this is to declare the smallest record field types to accommodate all your needs, and then create refinements as -needed. The modified example:

            -record(person, {name :: string(), height :: height() | '_'}).
            +needed. The modified example:

            -record(person, {name :: string(), height :: height() | '_'}).
             
            --type person() :: #person{height :: height()}.

            In specifications and type declarations the type person() is to be preferred +-type person() :: #person{height :: height()}.

            In specifications and type declarations the type person() is to be preferred before #person{}.

            @@ -235,27 +235,27 @@ arguments, otherwise the compilation fails.

            The following longer format with module name is also valid as long as Module is the name of the current module. This can be useful for documentation purposes.

            -spec Module:Function(ArgType1, ..., ArgTypeN) -> ReturnType.

            Also, for documentation purposes, argument names can be given:

            -spec Function(ArgName1 :: Type1, ..., ArgNameN :: TypeN) -> RT.

            A function specification can be overloaded. That is, it can have several types, -separated by a semicolon (;). For example:

            -spec foo(T1, T2) -> T3;
            -         (T4, T5) -> T6.

            A current restriction, which currently results in a warning by Dialyzer, is that +separated by a semicolon (;). For example:

            -spec foo(T1, T2) -> T3;
            +         (T4, T5) -> T6.

            A current restriction, which currently results in a warning by Dialyzer, is that the domains of the argument types cannot overlap. For example, the following -specification results in a warning:

            -spec foo(pos_integer()) -> pos_integer();
            -         (integer()) -> integer().

            Type variables can be used in specifications to specify relations for the input +specification results in a warning:

            -spec foo(pos_integer()) -> pos_integer();
            +         (integer()) -> integer().

            Type variables can be used in specifications to specify relations for the input and output arguments of a function. For example, the following specification defines the type of a polymorphic identity function:

            -spec id(X) -> X.

            Notice that the above specification does not restrict the input and output type in any way. These types can be constrained by guard-like subtype constraints and -provide bounded quantification:

            -spec id(X) -> X when X :: tuple().

            Currently, the :: constraint (read as "is a subtype of") is the only guard +provide bounded quantification:

            -spec id(X) -> X when X :: tuple().

            Currently, the :: constraint (read as "is a subtype of") is the only guard constraint that can be used in the when part of a -spec attribute.

            Note

            The above function specification uses multiple occurrences of the same type variable. That provides more type information than the following function -specification, where the type variables are missing:

            -spec id(tuple()) -> tuple().

            The latter specification says that the function takes some tuple and returns +specification, where the type variables are missing:

            -spec id(tuple()) -> tuple().

            The latter specification says that the function takes some tuple and returns some tuple. The specification with the X type variable specifies that the function takes a tuple and returns the same tuple.

            However, it is up to the tools that process the specifications to choose whether to take this extra information into account or not.

            The scope of a :: constraint is the (...) -> RetType specification after which it appears. To avoid confusion, it is suggested that different variables are used in different constituents of an overloaded contract, as shown in the -following example:

            -spec foo({X, integer()}) -> X when X :: atom();
            -         ([Y]) -> Y when Y :: number().

            Some functions in Erlang are not meant to return; either because they define +following example:

            -spec foo({X, integer()}) -> X when X :: atom();
            +         ([Y]) -> Y when Y :: number().

            Some functions in Erlang are not meant to return; either because they define servers or because they are used to throw exceptions, as in the following -function:

            my_error(Err) -> throw({error, Err}).

            For such functions, it is recommended to use the special no_return/0 type +function:

            my_error(Err) -> throw({error, Err}).

            For such functions, it is recommended to use the special no_return/0 type for their "return", through a contract of the following form:

            -spec my_error(term()) -> no_return().

            Note

            Erlang uses the shorthand version _ as an anonymous type variable equivalent to term/0 or any/0. For example, the following function

            -spec Function(string(), _) -> string().

            is equivalent to:

            -spec Function(string(), any()) -> string().
            /usr/share/doc/packages/erlang27-doc/doc/system/applications.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/applications.html 2025-11-19 10:45:48.689469829 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/applications.html 2025-11-19 10:45:48.693469855 +0000 @@ -139,8 +139,8 @@ Application Callback Module

            How to start and stop the code for the application, including its supervision -tree, is described by two callback functions:

            start(StartType, StartArgs) -> {ok, Pid} | {ok, Pid, State}
            -stop(State)
            • start/2 is called when starting the application and is to create the +tree, is described by two callback functions:

              start(StartType, StartArgs) -> {ok, Pid} | {ok, Pid, State}
              +stop(State)
              • start/2 is called when starting the application and is to create the supervision tree by starting the top supervisor. It is expected to return the pid of the top supervisor and an optional term, State, which defaults to []. This term is passed as is to stop/1.
              • StartType is usually the atom normal. It has other values only in the case @@ -150,15 +150,15 @@ necessary cleaning up. The actual stopping of the application, that is, shutting down the supervision tree, is handled automatically as described in Starting and Stopping Applications.

              Example of an application callback module for packaging the supervision tree -from Supervisor Behaviour:

              -module(ch_app).
              --behaviour(application).
              +from Supervisor Behaviour:

              -module(ch_app).
              +-behaviour(application).
               
              --export([start/2, stop/1]).
              +-export([start/2, stop/1]).
               
              -start(_Type, _Args) ->
              -    ch_sup:start_link().
              +start(_Type, _Args) ->
              +    ch_sup:start_link().
               
              -stop(_State) ->
              +stop(_State) ->
                   ok.

              A library application that cannot be started or stopped does not need any application callback module.

              @@ -177,14 +177,14 @@ in this case ch_app and [], respectively. This means that the following is called when the application is to be started:

              ch_app:start(normal, [])

              The following is called when the application is stopped:

              ch_app:stop([])

              When using systools, the Erlang/OTP tools for packaging code (see Section Releases), the keys description, vsn, modules, -registered, and applications are also to be specified:

              {application, ch_app,
              - [{description, "Channel allocator"},
              -  {vsn, "1"},
              -  {modules, [ch_app, ch_sup, ch3]},
              -  {registered, [ch3]},
              -  {applications, [kernel, stdlib, sasl]},
              -  {mod, {ch_app,[]}}
              - ]}.
              • description - A short description, a string. Defaults to "".
              • vsn - Version number, a string. Defaults to "".
              • modules - All modules introduced by this application. systools uses +registered, and applications are also to be specified:

                {application, ch_app,
                + [{description, "Channel allocator"},
                +  {vsn, "1"},
                +  {modules, [ch_app, ch_sup, ch3]},
                +  {registered, [ch3]},
                +  {applications, [kernel, stdlib, sasl]},
                +  {mod, {ch_app,[]}}
                + ]}.
                • description - A short description, a string. Defaults to "".
                • vsn - Version number, a string. Defaults to "".
                • modules - All modules introduced by this application. systools uses this list when generating boot scripts and tar files. A module must only be included in one application. Defaults to [].
                • registered - All names of registered processes in the application. systools uses this list to detect name clashes between applications. @@ -304,30 +304,30 @@ Loading and Unloading Applications

              Before an application can be started, it must be loaded. The application -controller reads and stores the information from the .app file:

              1> application:load(ch_app).
              +controller reads and stores the information from the .app file:

              1> application:load(ch_app).
               ok
              -2> application:loaded_applications().
              -[{kernel,"ERTS  CXC 138 10","2.8.1.3"},
              - {stdlib,"ERTS  CXC 138 10","1.11.4.3"},
              - {ch_app,"Channel allocator","1"}]

              An application that has been stopped, or has never been started, can be +2> application:loaded_applications(). +[{kernel,"ERTS CXC 138 10","2.8.1.3"}, + {stdlib,"ERTS CXC 138 10","1.11.4.3"}, + {ch_app,"Channel allocator","1"}]

              An application that has been stopped, or has never been started, can be unloaded. The information about the application is erased from the internal -database of the application controller.

              3> application:unload(ch_app).
              +database of the application controller.

              3> application:unload(ch_app).
               ok
              -4> application:loaded_applications().
              -[{kernel,"ERTS  CXC 138 10","2.8.1.3"},
              - {stdlib,"ERTS  CXC 138 10","1.11.4.3"}]

              Note

              Loading/unloading an application does not load/unload the code used by the +4> application:loaded_applications(). +[{kernel,"ERTS CXC 138 10","2.8.1.3"}, + {stdlib,"ERTS CXC 138 10","1.11.4.3"}]

              Note

              Loading/unloading an application does not load/unload the code used by the application. Code loading is handled in the usual way by the code server.

              Starting and Stopping Applications

              -

              An application is started by calling:

              5> application:start(ch_app).
              +

              An application is started by calling:

              5> application:start(ch_app).
               ok
              -6> application:which_applications().
              -[{kernel,"ERTS  CXC 138 10","2.8.1.3"},
              - {stdlib,"ERTS  CXC 138 10","1.11.4.3"},
              - {ch_app,"Channel allocator","1"}]

              If the application is not already loaded, the application controller first loads +6> application:which_applications(). +[{kernel,"ERTS CXC 138 10","2.8.1.3"}, + {stdlib,"ERTS CXC 138 10","1.11.4.3"}, + {ch_app,"Channel allocator","1"}]

              If the application is not already loaded, the application controller first loads it using application:load/1. It checks the value of the applications key to ensure that all applications that are to be started before this application are running.

              Following that, the application controller creates an application master for @@ -351,47 +351,47 @@ Configuring an Application

            An application can be configured using configuration parameters. These are a -list of {Par,Val} tuples specified by a key env in the .app file:

            {application, ch_app,
            - [{description, "Channel allocator"},
            -  {vsn, "1"},
            -  {modules, [ch_app, ch_sup, ch3]},
            -  {registered, [ch3]},
            -  {applications, [kernel, stdlib, sasl]},
            -  {mod, {ch_app,[]}},
            -  {env, [{file, "/usr/local/log"}]}
            - ]}.

            Par is to be an atom. Val is any term. The application can retrieve the +list of {Par,Val} tuples specified by a key env in the .app file:

            {application, ch_app,
            + [{description, "Channel allocator"},
            +  {vsn, "1"},
            +  {modules, [ch_app, ch_sup, ch3]},
            +  {registered, [ch3]},
            +  {applications, [kernel, stdlib, sasl]},
            +  {mod, {ch_app,[]}},
            +  {env, [{file, "/usr/local/log"}]}
            + ]}.

            Par is to be an atom. Val is any term. The application can retrieve the value of a configuration parameter by calling application:get_env(App, Par) or a number of similar functions. For more information, see module application in Kernel.

            Example:

            % erl
            -Erlang (BEAM) emulator version 5.2.3.6 [hipe] [threads:0]
            +Erlang (BEAM) emulator version 5.2.3.6 [hipe] [threads:0]
             
            -Eshell V5.2.3.6  (abort with ^G)
            -1> application:start(ch_app).
            +Eshell V5.2.3.6  (abort with ^G)
            +1> application:start(ch_app).
             ok
            -2> application:get_env(ch_app, file).
            -{ok,"/usr/local/log"}

            The values in the .app file can be overridden by values in a system +2> application:get_env(ch_app, file). +{ok,"/usr/local/log"}

            The values in the .app file can be overridden by values in a system configuration file. This is a file that contains configuration parameters for -relevant applications:

            [{Application1, [{Par11,Val11},...]},
            +relevant applications:

            [{Application1, [{Par11,Val11},...]},
              ...,
            - {ApplicationN, [{ParN1,ValN1},...]}].

            The system configuration is to be called Name.config and Erlang is to be + {ApplicationN, [{ParN1,ValN1},...]}].

            The system configuration is to be called Name.config and Erlang is to be started with the command-line argument -config Name. For details, see config in Kernel.

            Example:

            A file test.config is created with the following contents:

            [{ch_app, [{file, "testlog"}]}].

            The value of file overrides the value of file as defined in the .app file:

            % erl -config test
            -Erlang (BEAM) emulator version 5.2.3.6 [hipe] [threads:0]
            +Erlang (BEAM) emulator version 5.2.3.6 [hipe] [threads:0]
             
            -Eshell V5.2.3.6  (abort with ^G)
            -1> application:start(ch_app).
            +Eshell V5.2.3.6  (abort with ^G)
            +1> application:start(ch_app).
             ok
            -2> application:get_env(ch_app, file).
            -{ok,"testlog"}

            If release handling is used, exactly one system +2> application:get_env(ch_app, file). +{ok,"testlog"}

            If release handling is used, exactly one system configuration file is to be used and that file is to be called sys.config.

            The values in the .app file and the values in a system configuration file can be overridden directly from the command line:

            % erl -ApplName Par1 Val1 ... ParN ValN

            Example:

            % erl -ch_app file '"testlog"'
            -Erlang (BEAM) emulator version 5.2.3.6 [hipe] [threads:0]
            +Erlang (BEAM) emulator version 5.2.3.6 [hipe] [threads:0]
             
            -Eshell V5.2.3.6  (abort with ^G)
            -1> application:start(ch_app).
            +Eshell V5.2.3.6  (abort with ^G)
            +1> application:start(ch_app).
             ok
            -2> application:get_env(ch_app, file).
            -{ok,"testlog"}

            +2> application:get_env(ch_app, file). +{ok,"testlog"}

            @@ -457,7 +457,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html 2025-11-19 10:45:48.729470078 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html 2025-11-19 10:45:48.733470103 +0000 @@ -124,10 +124,10 @@

            When a functional module has been changed, for example, if a new function has been added or a bug has been corrected, simple code replacement is sufficient, -for example:

            {"2",
            - [{"1", [{load_module, m}]}],
            - [{"1", [{load_module, m}]}]
            -}.

            +for example:

            {"2",
            + [{"1", [{load_module, m}]}],
            + [{"1", [{load_module, m}]}]
            +}.

            @@ -146,10 +146,10 @@

            A callback module is a functional module, and for code extensions simple code replacement is sufficient.

            Example

            When adding a function to ch3, as described in the example in -Release Handling, ch_app.appup looks as follows:

            {"2",
            - [{"1", [{load_module, ch3}]}],
            - [{"1", [{load_module, ch3}]}]
            -}.

            OTP also supports changing the internal state of behaviour processes; see +Release Handling, ch_app.appup looks as follows:

            {"2",
            + [{"1", [{load_module, ch3}]}],
            + [{"1", [{load_module, ch3}]}]
            +}.

            OTP also supports changing the internal state of behaviour processes; see Changing Internal State.

            @@ -163,21 +163,21 @@ gen_server Behaviour. The internal state is a term Chs representing the available channels. Assume you want to add a counter N, which keeps track of the number of alloc requests so far. This means that the -format must be changed to {Chs,N}.

            The .appup file can look as follows:

            {"2",
            - [{"1", [{update, ch3, {advanced, []}}]}],
            - [{"1", [{update, ch3, {advanced, []}}]}]
            -}.

            The third element of the update instruction is a tuple {advanced,Extra}, +format must be changed to {Chs,N}.

            The .appup file can look as follows:

            {"2",
            + [{"1", [{update, ch3, {advanced, []}}]}],
            + [{"1", [{update, ch3, {advanced, []}}]}]
            +}.

            The third element of the update instruction is a tuple {advanced,Extra}, which says that the affected processes are to do a state transformation before loading the new version of the module. This is done by the processes calling the callback function code_change/3 (see gen_server in STDLIB). -The term Extra, in this case [], is passed as is to the function:

            -module(ch3).
            +The term Extra, in this case [], is passed as is to the function:

            -module(ch3).
             ...
            --export([code_change/3]).
            +-export([code_change/3]).
             ...
            -code_change({down, _Vsn}, {Chs, N}, _Extra) ->
            -    {ok, Chs};
            -code_change(_Vsn, Chs, _Extra) ->
            -    {ok, {Chs, 0}}.

            The first argument is {down,Vsn} if there is a downgrade, or Vsn if there is +code_change({down, _Vsn}, {Chs, N}, _Extra) -> + {ok, Chs}; +code_change(_Vsn, Chs, _Extra) -> + {ok, {Chs, 0}}.

            The first argument is {down,Vsn} if there is a downgrade, or Vsn if there is a upgrade. The term Vsn is fetched from the 'original' version of the module, that is, the version you are upgrading from, or downgrading to.

            The version is defined by the module attribute vsn, if any. There is no such attribute in ch3, so in this case the version is the checksum (a huge integer) @@ -194,29 +194,29 @@ can occur during release upgrade if the new version of m1 is loaded first and calls ch3:available/0 before the new version of ch3 is loaded.

            Thus, ch3 must be loaded before m1, in the upgrade case, and conversely in the downgrade case. m1 is said to be dependent on ch3. In a release -handling instruction, this is expressed by the DepMods element:

            {load_module, Module, DepMods}
            -{update, Module, {advanced, Extra}, DepMods}

            DepMods is a list of modules, on which Module is dependent.

            Example

            The module m1 in application myapp is dependent on ch3 when +handling instruction, this is expressed by the DepMods element:

            {load_module, Module, DepMods}
            +{update, Module, {advanced, Extra}, DepMods}

            DepMods is a list of modules, on which Module is dependent.

            Example

            The module m1 in application myapp is dependent on ch3 when upgrading from "1" to "2", or downgrading from "2" to "1":

            myapp.appup:
             
            -{"2",
            - [{"1", [{load_module, m1, [ch3]}]}],
            - [{"1", [{load_module, m1, [ch3]}]}]
            -}.
            +{"2",
            + [{"1", [{load_module, m1, [ch3]}]}],
            + [{"1", [{load_module, m1, [ch3]}]}]
            +}.
             
             ch_app.appup:
             
            -{"2",
            - [{"1", [{load_module, ch3}]}],
            - [{"1", [{load_module, ch3}]}]
            -}.

            If instead m1 and ch3 belong to the same application, the .appup file can -look as follows:

            {"2",
            - [{"1",
            -   [{load_module, ch3},
            -    {load_module, m1, [ch3]}]}],
            - [{"1",
            -   [{load_module, ch3},
            -    {load_module, m1, [ch3]}]}]
            -}.

            m1 is dependent on ch3 also when downgrading. systools knows the +{"2", + [{"1", [{load_module, ch3}]}], + [{"1", [{load_module, ch3}]}] +}.

            If instead m1 and ch3 belong to the same application, the .appup file can +look as follows:

            {"2",
            + [{"1",
            +   [{load_module, ch3},
            +    {load_module, m1, [ch3]}]}],
            + [{"1",
            +   [{load_module, ch3},
            +    {load_module, m1, [ch3]}]}]
            +}.

            m1 is dependent on ch3 also when downgrading. systools knows the difference between up- and downgrading and generates a correct relup, where ch3 is loaded before m1 when upgrading, but m1 is loaded before ch3 when downgrading.

            @@ -231,22 +231,22 @@ synchronized code replacement must be used.

            Note

            The name(s) of the user-defined residence module(s) must be listed in the Modules part of the child specification for the special process. Otherwise the release handler cannot find the process.

            Example

            Consider the example ch4 in sys and proc_lib. -When started by a supervisor, the child specification can look as follows:

            {ch4, {ch4, start_link, []},
            - permanent, brutal_kill, worker, [ch4]}

            If ch4 is part of the application sp_app and a new version of the module is +When started by a supervisor, the child specification can look as follows:

            {ch4, {ch4, start_link, []},
            + permanent, brutal_kill, worker, [ch4]}

            If ch4 is part of the application sp_app and a new version of the module is to be loaded when upgrading from version "1" to "2" of this application, -sp_app.appup can look as follows:

            {"2",
            - [{"1", [{update, ch4, {advanced, []}}]}],
            - [{"1", [{update, ch4, {advanced, []}}]}]
            -}.

            The update instruction must contain the tuple {advanced,Extra}. The +sp_app.appup can look as follows:

            {"2",
            + [{"1", [{update, ch4, {advanced, []}}]}],
            + [{"1", [{update, ch4, {advanced, []}}]}]
            +}.

            The update instruction must contain the tuple {advanced,Extra}. The instruction makes the special process call the callback function system_code_change/4, a function the user must implement. The term Extra, in -this case [], is passed as is to system_code_change/4:

            -module(ch4).
            +this case [], is passed as is to system_code_change/4:

            -module(ch4).
             ...
            --export([system_code_change/4]).
            +-export([system_code_change/4]).
             ...
             
            -system_code_change(Chs, _Module, _OldVsn, _Extra) ->
            -    {ok, Chs}.
            • The first argument is the internal state State, passed from +system_code_change(Chs, _Module, _OldVsn, _Extra) -> + {ok, Chs}.
            • The first argument is the internal state State, passed from function sys:handle_system_msg(Request, From, Parent, Module, Deb, State), and called by the special process when a system message is received. In ch4, the internal state is the set of available channels Chs.
            • The second argument is the name of the module (ch4).
            • The third argument is Vsn or {down,Vsn}, as described for @@ -275,24 +275,24 @@ of upgrade and downgrade. Then the new return value of init/1 can be checked and the internal state be changed accordingly.

              The following upgrade instruction is used for supervisors:

              {update, Module, supervisor}

              Example

              To change the restart strategy of ch_sup (from Supervisor Behaviour) from one_for_one to one_for_all, -change the callback function init/1 in ch_sup.erl:

              -module(ch_sup).
              +change the callback function init/1 in ch_sup.erl:

              -module(ch_sup).
               ...
               
              -init(_Args) ->
              -    {ok, {#{strategy => one_for_all, ...}, ...}}.

              The file ch_app.appup:

              {"2",
              - [{"1", [{update, ch_sup, supervisor}]}],
              - [{"1", [{update, ch_sup, supervisor}]}]
              -}.

              +init(_Args) -> + {ok, {#{strategy => one_for_all, ...}, ...}}.

              The file ch_app.appup:

              {"2",
              + [{"1", [{update, ch_sup, supervisor}]}],
              + [{"1", [{update, ch_sup, supervisor}]}]
              +}.

              Changing Child Specifications

              The instruction, and thus the .appup file, when changing an existing child -specification, is the same as when changing properties as described earlier:

              {"2",
              - [{"1", [{update, ch_sup, supervisor}]}],
              - [{"1", [{update, ch_sup, supervisor}]}]
              -}.

              The changes do not affect existing child processes. For example, changing the +specification, is the same as when changing properties as described earlier:

              {"2",
              + [{"1", [{update, ch_sup, supervisor}]}],
              + [{"1", [{update, ch_sup, supervisor}]}]
              +}.

              The changes do not affect existing child processes. For example, changing the start function only specifies how the child process is to be restarted, if needed later on.

              The id of the child specification cannot be changed.

              Changing the Modules field of the child specification can affect the release handling process itself, as this field is used to identify which processes are @@ -307,34 +307,34 @@ Child processes are not automatically started or terminated, this must be done using apply instructions.

              Example

              Assume a new child process m1 is to be added to ch_sup when upgrading ch_app from "1" to "2". This means m1 is to be deleted when -downgrading from "2" to "1":

              {"2",
              - [{"1",
              -   [{update, ch_sup, supervisor},
              -    {apply, {supervisor, restart_child, [ch_sup, m1]}}
              -   ]}],
              - [{"1",
              -   [{apply, {supervisor, terminate_child, [ch_sup, m1]}},
              -    {apply, {supervisor, delete_child, [ch_sup, m1]}},
              -    {update, ch_sup, supervisor}
              -   ]}]
              -}.

              The order of the instructions is important.

              The supervisor must be registered as ch_sup for the script to work. If the +downgrading from "2" to "1":

              {"2",
              + [{"1",
              +   [{update, ch_sup, supervisor},
              +    {apply, {supervisor, restart_child, [ch_sup, m1]}}
              +   ]}],
              /usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html differs (HTML document, UTF-8 Unicode text, with very long lines)
              --- old//usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html	2025-11-19 10:45:48.753470228 +0000
              +++ new//usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html	2025-11-19 10:45:48.753470228 +0000
              @@ -148,8 +148,8 @@
               crypto:strong_rand_bytes(100).          1    1915 Ki     522 ns   90%

              rand:bytes/1 is still faster when we generate 100 bytes at the time, but the relative difference is smaller.

              % erlperf 'rand:bytes(1000).' 'crypto:strong_rand_bytes(1000).'
               Code                                    ||        QPS       Time   Rel
              -crypto:strong_rand_bytes(1000).          1    1518 Ki     658 ns  100%
              -rand:bytes(1000).                        1     284 Ki    3521 ns   19%

              When we generate 1000 bytes at the time, crypto:strong_rand_bytes/1 is +crypto:strong_rand_bytes(1000). 1 1518 Ki 658 ns 100% +rand:bytes(1000). 1 284 Ki 3521 ns 19%

            When we generate 1000 bytes at the time, crypto:strong_rand_bytes/1 is now the fastest.

            @@ -223,7 +223,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html 2025-11-19 10:45:48.781470402 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html 2025-11-19 10:45:48.785470427 +0000 @@ -118,35 +118,35 @@

            This section gives a few examples on how to handle binaries in an efficient way. The sections that follow take an in-depth look at how binaries are implemented and how to best take advantages of the optimizations done by the compiler and -runtime system.

            Binaries can be efficiently built in the following way:

            DO

            my_list_to_binary(List) ->
            -    my_list_to_binary(List, <<>>).
            +runtime system.

            Binaries can be efficiently built in the following way:

            DO

            my_list_to_binary(List) ->
            +    my_list_to_binary(List, <<>>).
             
            -my_list_to_binary([H|T], Acc) ->
            -    my_list_to_binary(T, <<Acc/binary,H>>);
            -my_list_to_binary([], Acc) ->
            +my_list_to_binary([H|T], Acc) ->
            +    my_list_to_binary(T, <<Acc/binary,H>>);
            +my_list_to_binary([], Acc) ->
                 Acc.

            Appending data to a binary as in the example is efficient because it is specially optimized by the runtime system to avoid copying the Acc binary -every time.

            Prepending data to a binary in a loop is not efficient:

            DO NOT

            rev_list_to_binary(List) ->
            -    rev_list_to_binary(List, <<>>).
            +every time.

            Prepending data to a binary in a loop is not efficient:

            DO NOT

            rev_list_to_binary(List) ->
            +    rev_list_to_binary(List, <<>>).
             
            -rev_list_to_binary([H|T], Acc) ->
            -    rev_list_to_binary(T, <<H,Acc/binary>>);
            -rev_list_to_binary([], Acc) ->
            +rev_list_to_binary([H|T], Acc) ->
            +    rev_list_to_binary(T, <<H,Acc/binary>>);
            +rev_list_to_binary([], Acc) ->
                 Acc.

            This is not efficient for long lists because the Acc binary is copied every -time. One way to make the function more efficient is like this:

            DO NOT

            rev_list_to_binary(List) ->
            -    rev_list_to_binary(lists:reverse(List), <<>>).
            +time. One way to make the function more efficient is like this:

            DO NOT

            rev_list_to_binary(List) ->
            +    rev_list_to_binary(lists:reverse(List), <<>>).
             
            -rev_list_to_binary([H|T], Acc) ->
            -    rev_list_to_binary(T, <<Acc/binary,H>>);
            -rev_list_to_binary([], Acc) ->
            -    Acc.

            Another way to avoid copying the binary each time is like this:

            DO

            rev_list_to_binary([H|T]) ->
            -    RevTail = rev_list_to_binary(T),
            +rev_list_to_binary([H|T], Acc) ->
            +    rev_list_to_binary(T, <<Acc/binary,H>>);
            +rev_list_to_binary([], Acc) ->
            +    Acc.

            Another way to avoid copying the binary each time is like this:

            DO

            rev_list_to_binary([H|T]) ->
            +    RevTail = rev_list_to_binary(T),
                 <<RevTail/binary,H>>;
            -rev_list_to_binary([]) ->
            +rev_list_to_binary([]) ->
                 <<>>.

            Note that in each of the DO examples, the binary to be appended to is always -given as the first segment.

            Binaries can be efficiently matched in the following way:

            DO

            my_binary_to_list(<<H,T/binary>>) ->
            -    [H|my_binary_to_list(T)];
            -my_binary_to_list(<<>>) -> [].

            +given as the first segment.

            Binaries can be efficiently matched in the following way:

            DO

            my_binary_to_list(<<H,T/binary>>) ->
            +    [H|my_binary_to_list(T)];
            +my_binary_to_list(<<>>) -> [].

            @@ -223,7 +223,7 @@ Bin2 = <<Bin1/binary,4,5,6>>, %% 3 Bin3 = <<Bin2/binary,7,8,9>>, %% 4 Bin4 = <<Bin1/binary,17>>, %% 5 !!! -{Bin4,Bin3} %% 6

            • Line 1 (marked with the %% 1 comment), assigns a +{Bin4,Bin3} %% 6

            • Line 1 (marked with the %% 1 comment), assigns a heap binary to the Bin0 variable.

            • Line 2 is an append operation. As Bin0 has not been involved in an append operation, a new refc binary is created and the contents of Bin0 is copied into it. The ProcBin part of the refc @@ -257,15 +257,15 @@ for every append operation, the runtime system must create a sub binary.

              When the compiler can determine that none of those situations need to be handled and that the append operation cannot possibly fail, the compiler generates code that causes the runtime system to apply a more efficient variant of the -optimization.

              Example:

              -module(repack).
              --export([repack/1]).
              +optimization.

              Example:

              -module(repack).
              +-export([repack/1]).
               
              -repack(Bin) when is_binary(Bin) ->
              -    repack(Bin, <<>>).
              +repack(Bin) when is_binary(Bin) ->
              +    repack(Bin, <<>>).
               
              -repack(<<C:8,T/binary>>, Result) ->
              -    repack(T, <<Result/binary,C:16>>);
              -repack(<<>>, Result) ->
              +repack(<<C:8,T/binary>>, Result) ->
              +    repack(T, <<Result/binary,C:16>>);
              +repack(<<>>, Result) ->
                   Result.

              The repack/2 function only keeps a single version of the binary, so there is never any need to copy the binary. The compiler rewrites the creation of the empty binary in repack/1 to instead create a refc binary with 256 bytes @@ -308,9 +308,9 @@ Matching Binaries

            -

            Let us revisit the example in the beginning of the previous section:

            DO

            my_binary_to_list(<<H,T/binary>>) ->
            -    [H|my_binary_to_list(T)];
            -my_binary_to_list(<<>>) -> [].

            The first time my_binary_to_list/1 is called, a +

            Let us revisit the example in the beginning of the previous section:

            DO

            my_binary_to_list(<<H,T/binary>>) ->
            +    [H|my_binary_to_list(T)];
            +my_binary_to_list(<<>>) -> [].

            The first time my_binary_to_list/1 is called, a match context is created. The match context points to the first byte of the binary. 1 byte is matched out and the match context is updated to point to the second byte in the binary.

            At this point it would make sense to create a @@ -325,24 +325,24 @@ there is no longer any reference to it).

            To summarize, my_binary_to_list/1 only needs to create one match context and no sub binaries.

            Notice that the match context in my_binary_to_list/1 was discarded when the entire binary had been traversed. What happens if the iteration stops before it -has reached the end of the binary? Will the optimization still work?

            after_zero(<<0,T/binary>>) ->
            +has reached the end of the binary? Will the optimization still work?

            after_zero(<<0,T/binary>>) ->
                 T;
            -after_zero(<<_,T/binary>>) ->
            -    after_zero(T);
            -after_zero(<<>>) ->
            +after_zero(<<_,T/binary>>) ->
            +    after_zero(T);
            +after_zero(<<>>) ->
                 <<>>.

            Yes, it will. The compiler will remove the building of the sub binary in the second clause:

            ...
            -after_zero(<<_,T/binary>>) ->
            -    after_zero(T);
            -...

            But it will generate code that builds a sub binary in the first clause:

            after_zero(<<0,T/binary>>) ->
            +after_zero(<<_,T/binary>>) ->
            +    after_zero(T);
            +...

            But it will generate code that builds a sub binary in the first clause:

            after_zero(<<0,T/binary>>) ->
                 T;
             ...

            Therefore, after_zero/1 builds one match context and one sub binary (assuming -it is passed a binary that contains a zero byte).

            Code like the following will also be optimized:

            all_but_zeroes_to_list(Buffer, Acc, 0) ->
            -    {lists:reverse(Acc),Buffer};
            -all_but_zeroes_to_list(<<0,T/binary>>, Acc, Remaining) ->
            -    all_but_zeroes_to_list(T, Acc, Remaining-1);
            -all_but_zeroes_to_list(<<Byte,T/binary>>, Acc, Remaining) ->
            -    all_but_zeroes_to_list(T, [Byte|Acc], Remaining-1).

            The compiler removes building of sub binaries in the second and third clauses, +it is passed a binary that contains a zero byte).

            Code like the following will also be optimized:

            all_but_zeroes_to_list(Buffer, Acc, 0) ->
            +    {lists:reverse(Acc),Buffer};
            +all_but_zeroes_to_list(<<0,T/binary>>, Acc, Remaining) ->
            +    all_but_zeroes_to_list(T, Acc, Remaining-1);
            +all_but_zeroes_to_list(<<Byte,T/binary>>, Acc, Remaining) ->
            +    all_but_zeroes_to_list(T, [Byte|Acc], Remaining-1).

            The compiler removes building of sub binaries in the second and third clauses, and it adds an instruction to the first clause that converts Buffer from a match context to a sub binary (or do nothing if Buffer is a binary already).

            But in more complicated code, how can one know whether the optimization is applied or not?

            @@ -358,13 +358,13 @@ practical approach.

            The warnings look as follows:

            ./efficiency_guide.erl:60: Warning: NOT OPTIMIZED: binary is returned from the function
             ./efficiency_guide.erl:62: Warning: OPTIMIZED: match context reused

            To make it clearer exactly what code the warnings refer to, the warnings in the following examples are inserted as comments after the clause they refer to, for -example:

            after_zero(<<0,T/binary>>) ->
            +example:

            after_zero(<<0,T/binary>>) ->
                      %% BINARY CREATED: binary is returned from the function
                 T;
            -after_zero(<<_,T/binary>>) ->
            +after_zero(<<_,T/binary>>) ->
                      %% OPTIMIZED: match context reused
            -    after_zero(T);
            -after_zero(<<>>) ->
            +    after_zero(T);
            +after_zero(<<>>) ->
                 <<>>.

            The warning for the first clause says that the creation of a sub binary cannot be delayed, because it will be returned. The warning for the second clause says that a sub binary will not be created (yet).

            @@ -374,14 +374,14 @@ Unused Variables

            The compiler figures out if a variable is unused. The same code is generated for -each of the following functions:

            count1(<<_,T/binary>>, Count) -> count1(T, Count+1);
            -count1(<<>>, Count) -> Count.
            +each of the following functions:

            count1(<<_,T/binary>>, Count) -> count1(T, Count+1);
            +count1(<<>>, Count) -> Count.
             
            -count2(<<H,T/binary>>, Count) -> count2(T, Count+1);
            -count2(<<>>, Count) -> Count.
            +count2(<<H,T/binary>>, Count) -> count2(T, Count+1);
            +count2(<<>>, Count) -> Count.
             
            -count3(<<_H,T/binary>>, Count) -> count3(T, Count+1);
            -count3(<<>>, Count) -> Count.

            In each iteration, the first 8 bits in the binary will be skipped, not matched +count3(<<_H,T/binary>>, Count) -> count3(T, Count+1); +count3(<<>>, Count) -> Count.

            In each iteration, the first 8 bits in the binary will be skipped, not matched out.

            @@ -433,7 +433,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 2025-11-19 10:45:48.805470552 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 2025-11-19 10:45:48.809470576 +0000 @@ -145,17 +145,17 @@ variables, and Bin2 is bound, as in Example 2:

            <<D:16, E, F/binary>> = Bin2

            This gives D = 273, E = 00, and F binds to a binary of size 1: binary_to_list(F) = [42].

            Example 4: The following is a more elaborate example of matching. Here, Dgram is bound to the consecutive bytes of an IP datagram of IP protocol -version 4. The ambition is to extract the header and the data of the datagram:

            -define(IP_VERSION, 4).
            --define(IP_MIN_HDR_LEN, 5).
            +version 4. The ambition is to extract the header and the data of the datagram:

            -define(IP_VERSION, 4).
            +-define(IP_MIN_HDR_LEN, 5).
             
            -DgramSize = byte_size(Dgram),
            +DgramSize = byte_size(Dgram),
             case Dgram of
                 <<?IP_VERSION:4, HLen:4, SrvcType:8, TotLen:16,
                   ID:16, Flgs:3, FragOff:13,
                   TTL:8, Proto:8, HdrChkSum:16,
                   SrcIP:32,
                   DestIP:32, RestDgram/binary>> when HLen>=5, 4*HLen=<DgramSize ->
            -        OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),
            +        OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),
                     <<Opts:OptsLen/binary,Data/binary>> = RestDgram,
                 ...
             end.

            Here, the segment corresponding to the Opts variable has a type modifier, @@ -233,7 +233,7 @@ However, for syntactical reasons, both Value and Size must be enclosed in parenthesis if the expression consists of anything more than a single literal or a variable. The following gives a compiler syntax error:

            <<X+1:8>>

            This expression must be rewritten into the following, to be accepted by the -compiler:

            <<(X+1):8>>

            +compiler:

            <<(X+1):8>>

            @@ -253,11 +253,11 @@ restrictions on the size. A segment of type float must have size 64 or 32.

            As mentioned earlier, segments have the following general syntax:

            Value:Size/TypeSpecifierList

            When matching Value, value must be either a variable or an integer, or a floating point literal. Expressions are not allowed.

            Size must be a guard expression, which can use -literals and previously bound variables. The following is not allowed:

            foo(N, <<X:N,T/binary>>) ->
            -   {X,T}.

            The two occurrences of N are not related. The compiler will complain that the -N in the size field is unbound.

            The correct way to write this example is as follows:

            foo(N, Bin) ->
            +literals and previously bound variables. The following is not allowed:

            foo(N, <<X:N,T/binary>>) ->
            +   {X,T}.

            The two occurrences of N are not related. The compiler will complain that the +N in the size field is unbound.

            The correct way to write this example is as follows:

            foo(N, Bin) ->
                <<X:N,T/binary>> = Bin,
            -   {X,T}.

            Note

            Before OTP 23, Size was restricted to be an integer or a variable bound to + {X,T}.

            Note

            Before OTP 23, Size was restricted to be an integer or a variable bound to an integer.

            @@ -266,28 +266,28 @@

            There is one exception to the rule that a variable that is used as size must be previously bound. It is possible to match and bind a variable, and use it as a -size within the same binary pattern. For example:

            bar(<<Sz:8,Payload:Sz/binary-unit:8,Rest/binary>>) ->
            -   {Payload,Rest}.

            Here Sz is bound to the value in the first byte of the binary. Sz is then -used at the number of bytes to match out as a binary.

            Starting in OTP 23, the size can be a guard expression:

            bar(<<Sz:8,Payload:((Sz-1)*8)/binary,Rest/binary>>) ->
            -   {Payload,Rest}.

            Here Sz is the combined size of the header and the payload, so we will need to +size within the same binary pattern. For example:

            bar(<<Sz:8,Payload:Sz/binary-unit:8,Rest/binary>>) ->
            +   {Payload,Rest}.

            Here Sz is bound to the value in the first byte of the binary. Sz is then +used at the number of bytes to match out as a binary.

            Starting in OTP 23, the size can be a guard expression:

            bar(<<Sz:8,Payload:((Sz-1)*8)/binary,Rest/binary>>) ->
            +   {Payload,Rest}.

            Here Sz is the combined size of the header and the payload, so we will need to subtract one byte to get the size of the payload.

            Getting the Rest of the Binary or Bitstring

            -

            To match out the rest of a binary, specify a binary field without size:

            foo(<<A:8,Rest/binary>>) ->

            The size of the tail must be evenly divisible by 8.

            To match out the rest of a bitstring, specify a field without size:

            foo(<<A:8,Rest/bitstring>>) ->

            There are no restrictions on the number of bits in the tail.

            +

            To match out the rest of a binary, specify a binary field without size:

            foo(<<A:8,Rest/binary>>) ->

            The size of the tail must be evenly divisible by 8.

            To match out the rest of a bitstring, specify a field without size:

            foo(<<A:8,Rest/bitstring>>) ->

            There are no restrictions on the number of bits in the tail.

            Appending to a Binary

            -

            Appending to a binary in an efficient way can be done as follows:

            triples_to_bin(T) ->
            -    triples_to_bin(T, <<>>).
            +

            Appending to a binary in an efficient way can be done as follows:

            triples_to_bin(T) ->
            +    triples_to_bin(T, <<>>).
             
            -triples_to_bin([{X,Y,Z} | T], Acc) ->
            -    triples_to_bin(T, <<Acc/binary,X:32,Y:32,Z:32>>);
            -triples_to_bin([], Acc) ->
            +triples_to_bin([{X,Y,Z} | T], Acc) ->
            +    triples_to_bin(T, <<Acc/binary,X:32,Y:32,Z:32>>);
            +triples_to_bin([], Acc) ->
                 Acc.
            @@ -339,7 +339,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/c_port.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/c_port.html 2025-11-19 10:45:48.829470701 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/c_port.html 2025-11-19 10:45:48.833470726 +0000 @@ -152,93 +152,93 @@ length indicator is to be used to simplify the communication between C and Erlang. The Erlang port automatically adds the length indicator, but this must be done explicitly in the external C program.

            The process is also set to trap exits, which enables detection of failure of the -external program:

            -module(complex1).
            --export([start/1, init/1]).
            +external program:

            -module(complex1).
            +-export([start/1, init/1]).
             
            -start(ExtPrg) ->
            -  spawn(?MODULE, init, [ExtPrg]).
            +start(ExtPrg) ->
            +  spawn(?MODULE, init, [ExtPrg]).
             
            -init(ExtPrg) ->
            -  register(complex, self()),
            -  process_flag(trap_exit, true),
            -  Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
            -  loop(Port).

            Now complex1:foo/1 and complex1:bar/1 can be implemented. Both send a -message to the complex process and receive the following replies:

            foo(X) ->
            -  call_port({foo, X}).
            -bar(Y) ->
            -  call_port({bar, Y}).
            +init(ExtPrg) ->
            +  register(complex, self()),
            +  process_flag(trap_exit, true),
            +  Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
            +  loop(Port).

            Now complex1:foo/1 and complex1:bar/1 can be implemented. Both send a +message to the complex process and receive the following replies:

            foo(X) ->
            +  call_port({foo, X}).
            +bar(Y) ->
            +  call_port({bar, Y}).
             
            -call_port(Msg) ->
            -  complex ! {call, self(), Msg},
            +call_port(Msg) ->
            +  complex ! {call, self(), Msg},
               receive
            -    {complex, Result} ->
            +    {complex, Result} ->
                   Result
            -  end.

            The complex process does the following:

            • Encodes the message into a sequence of bytes.
            • Sends it to the port.
            • Waits for a reply.
            • Decodes the reply.
            • Sends it back to the caller:
            loop(Port) ->
            +  end.

            The complex process does the following:

            • Encodes the message into a sequence of bytes.
            • Sends it to the port.
            • Waits for a reply.
            • Decodes the reply.
            • Sends it back to the caller:
            loop(Port) ->
               receive
            -    {call, Caller, Msg} ->
            -      Port ! {self(), {command, encode(Msg)}},
            +    {call, Caller, Msg} ->
            +      Port ! {self(), {command, encode(Msg)}},
                   receive
            -        {Port, {data, Data}} ->
            -          Caller ! {complex, decode(Data)}
            +        {Port, {data, Data}} ->
            +          Caller ! {complex, decode(Data)}
                   end,
            -      loop(Port)
            +      loop(Port)
               end.

            Assuming that both the arguments and the results from the C functions are less than 256, a simple encoding/decoding scheme is employed. In this scheme, foo is represented by byte 1, bar is represented by 2, and the argument/result is -represented by a single byte as well:

            encode({foo, X}) -> [1, X];
            -encode({bar, Y}) -> [2, Y].
            +represented by a single byte as well:

            encode({foo, X}) -> [1, X];
            +encode({bar, Y}) -> [2, Y].
             
            -decode([Int]) -> Int.

            The resulting Erlang program, including functionality for stopping the port and -detecting port failures, is as follows:

            -module(complex1).
            --export([start/1, stop/0, init/1]).
            --export([foo/1, bar/1]).
            -
            -start(ExtPrg) ->
            -    spawn(?MODULE, init, [ExtPrg]).
            -stop() ->
            +decode([Int]) -> Int.

            The resulting Erlang program, including functionality for stopping the port and +detecting port failures, is as follows:

            -module(complex1).
            +-export([start/1, stop/0, init/1]).
            +-export([foo/1, bar/1]).
            +
            +start(ExtPrg) ->
            +    spawn(?MODULE, init, [ExtPrg]).
            +stop() ->
                 complex ! stop.
             
            -foo(X) ->
            -    call_port({foo, X}).
            -bar(Y) ->
            -    call_port({bar, Y}).
            +foo(X) ->
            +    call_port({foo, X}).
            +bar(Y) ->
            +    call_port({bar, Y}).
             
            -call_port(Msg) ->
            -    complex ! {call, self(), Msg},
            +call_port(Msg) ->
            +    complex ! {call, self(), Msg},
                 receive
            -	{complex, Result} ->
            +	{complex, Result} ->
             	    Result
                 end.
             
            -init(ExtPrg) ->
            -    register(complex, self()),
            -    process_flag(trap_exit, true),
            -    Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
            -    loop(Port).
            +init(ExtPrg) ->
            +    register(complex, self()),
            +    process_flag(trap_exit, true),
            +    Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
            +    loop(Port).
             
            -loop(Port) ->
            +loop(Port) ->
                 receive
            -	{call, Caller, Msg} ->
            -	    Port ! {self(), {command, encode(Msg)}},
            +	{call, Caller, Msg} ->
            +	    Port ! {self(), {command, encode(Msg)}},
             	    receive
            -		{Port, {data, Data}} ->
            -		    Caller ! {complex, decode(Data)}
            +		{Port, {data, Data}} ->
            +		    Caller ! {complex, decode(Data)}
             	    end,
            -	    loop(Port);
            +	    loop(Port);
             	stop ->
            -	    Port ! {self(), close},
            +	    Port ! {self(), close},
             	    receive
            -		{Port, closed} ->
            -		    exit(normal)
            +		{Port, closed} ->
            +		    exit(normal)
             	    end;
            -	{'EXIT', Port, Reason} ->
            -	    exit(port_terminated)
            +	{'EXIT', Port, Reason} ->
            +	    exit(port_terminated)
                 end.
             
            -encode({foo, X}) -> [1, X];
            -encode({bar, Y}) -> [2, Y].
            +encode({foo, X}) -> [1, X];
            +encode({bar, Y}) -> [2, Y].
             
            -decode([Int]) -> Int.

            +decode([Int]) -> Int.

            @@ -255,55 +255,55 @@ typedef unsigned char byte; -int read_exact(byte *buf, int len) -{ +int read_exact(byte *buf, int len) +{ int i, got=0; - do { - if ((i = read(0, buf+got, len-got)) <= 0){ - return(i); - } + do { + if ((i = read(0, buf+got, len-got)) <= 0){ + return(i); + } got += i; - } while (got<len); + } while (got<len); - return(len); -} + return(len); +} -int write_exact(byte *buf, int len) -{ +int write_exact(byte *buf, int len) +{ int i, wrote = 0; - do { - if ((i = write(1, buf+wrote, len-wrote)) <= 0) - return (i); + do { + if ((i = write(1, buf+wrote, len-wrote)) <= 0) + return (i); wrote += i; - } while (wrote<len); + } while (wrote<len); - return (len); -} + return (len); /usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html 2025-11-19 10:45:48.861470901 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html 2025-11-19 10:45:48.865470926 +0000 @@ -155,104 +155,104 @@ argument.

            The port is then created using the BIF open_port/2, with the tuple {spawn, DriverName} as the first argument. The string SharedLib is the name of the port driver. The second argument is a list of options, none in this -case:

            -module(complex5).
            --export([start/1, init/1]).
            +case:

            -module(complex5).
            +-export([start/1, init/1]).
             
            -start(SharedLib) ->
            -    case erl_ddll:load_driver(".", SharedLib) of
            +start(SharedLib) ->
            +    case erl_ddll:load_driver(".", SharedLib) of
                     ok -> ok;
            -        {error, already_loaded} -> ok;
            -        _ -> exit({error, could_not_load_driver})
            +        {error, already_loaded} -> ok;
            +        _ -> exit({error, could_not_load_driver})
                 end,
            -    spawn(?MODULE, init, [SharedLib]).
            +    spawn(?MODULE, init, [SharedLib]).
             
            -init(SharedLib) ->
            -  register(complex, self()),
            -  Port = open_port({spawn, SharedLib}, []),
            -  loop(Port).

            Now complex5:foo/1 and complex5:bar/1 can be implemented. Both send a -message to the complex process and receive the following reply:

            foo(X) ->
            -    call_port({foo, X}).
            -bar(Y) ->
            -    call_port({bar, Y}).
            +init(SharedLib) ->
            +  register(complex, self()),
            +  Port = open_port({spawn, SharedLib}, []),
            +  loop(Port).

            Now complex5:foo/1 and complex5:bar/1 can be implemented. Both send a +message to the complex process and receive the following reply:

            foo(X) ->
            +    call_port({foo, X}).
            +bar(Y) ->
            +    call_port({bar, Y}).
             
            -call_port(Msg) ->
            -    complex ! {call, self(), Msg},
            +call_port(Msg) ->
            +    complex ! {call, self(), Msg},
                 receive
            -        {complex, Result} ->
            +        {complex, Result} ->
                         Result
            -    end.

            The complex process performs the following:

            • Encodes the message into a sequence of bytes.
            • Sends it to the port.
            • Waits for a reply.
            • Decodes the reply.
            • Sends it back to the caller:
            loop(Port) ->
            +    end.

            The complex process performs the following:

            • Encodes the message into a sequence of bytes.
            • Sends it to the port.
            • Waits for a reply.
            • Decodes the reply.
            • Sends it back to the caller:
            loop(Port) ->
                 receive
            -        {call, Caller, Msg} ->
            -            Port ! {self(), {command, encode(Msg)}},
            +        {call, Caller, Msg} ->
            +            Port ! {self(), {command, encode(Msg)}},
                         receive
            -                {Port, {data, Data}} ->
            -                    Caller ! {complex, decode(Data)}
            +                {Port, {data, Data}} ->
            +                    Caller ! {complex, decode(Data)}
                         end,
            -            loop(Port)
            +            loop(Port)
                 end.

            Assuming that both the arguments and the results from the C functions are less than 256, a simple encoding/decoding scheme is employed. In this scheme, foo is represented by byte 1, bar is represented by 2, and the argument/result is -represented by a single byte as well:

            encode({foo, X}) -> [1, X];
            -encode({bar, Y}) -> [2, Y].
            +represented by a single byte as well:

            encode({foo, X}) -> [1, X];
            +encode({bar, Y}) -> [2, Y].
             
            -decode([Int]) -> Int.

            The resulting Erlang program, including functions for stopping the port and +decode([Int]) -> Int.

            The resulting Erlang program, including functions for stopping the port and detecting port failures, is as follows:

            
            --module(complex5).
            --export([start/1, stop/0, init/1]).
            --export([foo/1, bar/1]).
            +-module(complex5).
            +-export([start/1, stop/0, init/1]).
            +-export([foo/1, bar/1]).
             
            -start(SharedLib) ->
            -    case erl_ddll:load_driver(".", SharedLib) of
            +start(SharedLib) ->
            +    case erl_ddll:load_driver(".", SharedLib) of
             	ok -> ok;
            -	{error, already_loaded} -> ok;
            -	_ -> exit({error, could_not_load_driver})
            +	{error, already_loaded} -> ok;
            +	_ -> exit({error, could_not_load_driver})
                 end,
            -    spawn(?MODULE, init, [SharedLib]).
            +    spawn(?MODULE, init, [SharedLib]).
             
            -init(SharedLib) ->
            -    register(complex, self()),
            -    Port = open_port({spawn, SharedLib}, []),
            -    loop(Port).
            +init(SharedLib) ->
            +    register(complex, self()),
            +    Port = open_port({spawn, SharedLib}, []),
            +    loop(Port).
             
            -stop() ->
            +stop() ->
                 complex ! stop.
             
            -foo(X) ->
            -    call_port({foo, X}).
            -bar(Y) ->
            -    call_port({bar, Y}).
            +foo(X) ->
            +    call_port({foo, X}).
            +bar(Y) ->
            +    call_port({bar, Y}).
             
            -call_port(Msg) ->
            -    complex ! {call, self(), Msg},
            +call_port(Msg) ->
            +    complex ! {call, self(), Msg},
                 receive
            -	{complex, Result} ->
            +	{complex, Result} ->
             	    Result
                 end.
             
            -loop(Port) ->
            +loop(Port) ->
                 receive
            -	{call, Caller, Msg} ->
            -	    Port ! {self(), {command, encode(Msg)}},
            +	{call, Caller, Msg} ->
            +	    Port ! {self(), {command, encode(Msg)}},
             	    receive
            -		{Port, {data, Data}} ->
            -		    Caller ! {complex, decode(Data)}
            +		{Port, {data, Data}} ->
            +		    Caller ! {complex, decode(Data)}
             	    end,
            -	    loop(Port);
            +	    loop(Port);
             	stop ->
            -	    Port ! {self(), close},
            +	    Port ! {self(), close},
             	    receive
            -		{Port, closed} ->
            -		    exit(normal)
            +		{Port, closed} ->
            +		    exit(normal)
             	    end;
            -	{'EXIT', Port, Reason} ->
            -	    io:format("~p ~n", [Reason]),
            -	    exit(port_terminated)
            +	{'EXIT', Port, Reason} ->
            +	    io:format("~p ~n", [Reason]),
            +	    exit(port_terminated)
                 end.
             
            -encode({foo, X}) -> [1, X];
            -encode({bar, Y}) -> [2, Y].
            +encode({foo, X}) -> [1, X];
            +encode({bar, Y}) -> [2, Y].
             
            -decode([Int]) -> Int.

            +decode([Int]) -> Int.

            @@ -277,36 +277,36 @@ #include <stdio.h> #include "erl_driver.h" -typedef struct { +typedef struct { ErlDrvPort port; -} example_data; +} example_data; -static ErlDrvData example_drv_start(ErlDrvPort port, char *buff) -{ - example_data* d = (example_data*)driver_alloc(sizeof(example_data)); +static ErlDrvData example_drv_start(ErlDrvPort port, char *buff) +{ + example_data* d = (example_data*)driver_alloc(sizeof(example_data)); d->port = port; - return (ErlDrvData)d; -} + return (ErlDrvData)d; +} -static void example_drv_stop(ErlDrvData handle) -{ - driver_free((char*)handle); -} - -static void example_drv_output(ErlDrvData handle, char *buff, - ErlDrvSizeT bufflen) -{ - example_data* d = (example_data*)handle; /usr/share/doc/packages/erlang27-doc/doc/system/character_set.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 2025-11-19 10:45:48.889471075 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 2025-11-19 10:45:48.893471100 +0000 @@ -190,7 +190,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/cnode.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/cnode.html 2025-11-19 10:45:48.917471249 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/cnode.html 2025-11-19 10:45:48.917471249 +0000 @@ -168,7 +168,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html 2025-11-19 10:45:48.941471399 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html 2025-11-19 10:45:48.945471423 +0000 @@ -126,8 +126,8 @@

            Erlang programs must be compiled to object code. The compiler can generate a new file that contains the object code. The current abstract machine, which runs the object code, is called BEAM, therefore the object files get the suffix -.beam. The compiler can also generate a binary which can be loaded directly.

            The compiler is located in the module compile in Compiler.

            compile:file(Module)
            -compile:file(Module, Options)

            The Erlang shell understands the command c(Module), which both compiles and +.beam. The compiler can also generate a binary which can be loaded directly.

            The compiler is located in the module compile in Compiler.

            compile:file(Module)
            +compile:file(Module, Options)

            The Erlang shell understands the command c(Module), which both compiles and loads Module.

            There is also a module make, which provides a set of functions similar to the UNIX type Make functions, see module make in Tools.

            The compiler can also be accessed from the OS prompt using the erl executable in ERTS.

            % erl -compile Module1...ModuleN
            @@ -160,16 +160,16 @@
             evaluated because of processes lingering in the old code.

            If a third instance of the module is loaded, the code server removes (purges) the old code and any processes lingering in it is terminated. Then the third instance becomes 'current' and the previously current code becomes 'old'.

            To change from old code to current code, a process must make a fully qualified -function call.

            Example:

            -module(m).
            --export([loop/0]).
            +function call.

            Example:

            -module(m).
            +-export([loop/0]).
             
            -loop() ->
            +loop() ->
                 receive
                     code_switch ->
            -            m:loop();
            +            m:loop();
                     Msg ->
                         ...
            -            loop()
            +            loop()
                 end.

            To make the process change code, send the message code_switch to it. The process then makes a fully qualified call to m:loop() and changes to current code. Notice that m:loop/0 must be exported.

            For code replacement of funs to work, use the syntax @@ -180,7 +180,7 @@ Running a Function When a Module is Loaded

            The -on_load() directive names a function that is to be run automatically when -a module is loaded.

            Its syntax is as follows:

            -on_load(Name/0).

            It is not necessary to export the function. It is called in a freshly spawned +a module is loaded.

            Its syntax is as follows:

            -on_load(Name/0).

            It is not necessary to export the function. It is called in a freshly spawned process (which terminates as soon as the function returns).

            The function must return ok if the module is to become the new current code for the module and become callable.

            Returning any other value or generating an exception causes the new code to be unloaded. If the return value is not an atom, a warning error report is sent to @@ -193,13 +193,13 @@ code would become old, essentially leaving the system without any working and reachable instance of the module.

            In embedded mode, first all modules are loaded. Then all on_load functions are called. The system is terminated unless all of the on_load functions return -ok.

            Example:

            -module(m).
            --on_load(load_my_nifs/0).
            +ok.

            Example:

            -module(m).
            +-on_load(load_my_nifs/0).
             
            -load_my_nifs() ->
            +load_my_nifs() ->
                 NifPath = ...,    %Set up the path to the NIF library.
                 Info = ...,       %Initialize the Info term
            -    erlang:load_nif(NifPath, Info).

            If the call to erlang:load_nif/2 fails, the module is unloaded and a warning + erlang:load_nif(NifPath, Info).

            If the call to erlang:load_nif/2 fails, the module is unloaded and a warning report is sent to the error loader.

            @@ -251,7 +251,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html 2025-11-19 10:45:48.969471573 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html 2025-11-19 10:45:48.973471598 +0000 @@ -122,23 +122,23 @@ Operator ++

            The ++ operator copies its left-hand side operand. That is clearly -seen if we do our own implementation in Erlang:

            my_plus_plus([H|T], Tail) ->
            -    [H|my_plus_plus(T, Tail)];
            -my_plus_plus([], Tail) ->
            -    Tail.

            We must be careful how we use ++ in a loop. First is how not to use it:

            DO NOT

            naive_reverse([H|T]) ->
            -    naive_reverse(T) ++ [H];
            -naive_reverse([]) ->
            -    [].

            As the ++ operator copies its left-hand side operand, the growing -result is copied repeatedly, leading to quadratic complexity.

            On the other hand, using ++ in loop like this is perfectly fine:

            OK

            naive_but_ok_reverse(List) ->
            -    naive_but_ok_reverse(List, []).
            -
            -naive_but_ok_reverse([H|T], Acc) ->
            -    naive_but_ok_reverse(T, [H] ++ Acc);
            -naive_but_ok_reverse([], Acc) ->
            +seen if we do our own implementation in Erlang:

            my_plus_plus([H|T], Tail) ->
            +    [H|my_plus_plus(T, Tail)];
            +my_plus_plus([], Tail) ->
            +    Tail.

            We must be careful how we use ++ in a loop. First is how not to use it:

            DO NOT

            naive_reverse([H|T]) ->
            +    naive_reverse(T) ++ [H];
            +naive_reverse([]) ->
            +    [].

            As the ++ operator copies its left-hand side operand, the growing +result is copied repeatedly, leading to quadratic complexity.

            On the other hand, using ++ in loop like this is perfectly fine:

            OK

            naive_but_ok_reverse(List) ->
            +    naive_but_ok_reverse(List, []).
            +
            +naive_but_ok_reverse([H|T], Acc) ->
            +    naive_but_ok_reverse(T, [H] ++ Acc);
            +naive_but_ok_reverse([], Acc) ->
                 Acc.

            Each list element is copied only once. The growing result Acc is the right-hand -side operand, which it is not copied.

            Experienced Erlang programmers would probably write as follows:

            DO

            vanilla_reverse([H|T], Acc) ->
            -    vanilla_reverse(T, [H|Acc]);
            -vanilla_reverse([], Acc) ->
            +side operand, which it is not copied.

            Experienced Erlang programmers would probably write as follows:

            DO

            vanilla_reverse([H|T], Acc) ->
            +    vanilla_reverse(T, [H|Acc]);
            +vanilla_reverse([], Acc) ->
                 Acc.

            In principle, this is slightly more efficient because the list element [H] is not built before being copied and discarded. In practice, the compiler rewrites [H] ++ Acc to [H|Acc].

            @@ -164,41 +164,41 @@ Accidental Copying and Loss of Sharing

            When spawning a new process using a fun, one can accidentally copy more data to -the process than intended. For example:

            DO NOT

            accidental1(State) ->
            -    spawn(fun() ->
            -                  io:format("~p\n", [State#state.info])
            -          end).

            The code in the fun will extract one element from the record and print it. The +the process than intended. For example:

            DO NOT

            accidental1(State) ->
            +    spawn(fun() ->
            +                  io:format("~p\n", [State#state.info])
            +          end).

            The code in the fun will extract one element from the record and print it. The rest of the state record is not used. However, when the spawn/1 -function is executed, the entire record is copied to the newly created process.

            The same kind of problem can happen with a map:

            DO NOT

            accidental2(State) ->
            -    spawn(fun() ->
            -                  io:format("~p\n", [map_get(info, State)])
            -          end).

            In the following example (part of a module implementing the gen_server -behavior) the created fun is sent to another process:

            DO NOT

            handle_call(give_me_a_fun, _From, State) ->
            -    Fun = fun() -> State#href_anchor"ss">state.size =:= 42 end,
            -    {reply, Fun, State}.

            How bad that unnecessary copy is depends on the contents of the record or the -map.

            For example, if the state record is initialized like this:

            init1() ->
            -    #state{data=lists:seq(1, 10000)}.

            a list with 10000 elements (or about 20000 heap words) will be copied to the +function is executed, the entire record is copied to the newly created process.

            The same kind of problem can happen with a map:

            DO NOT

            accidental2(State) ->
            +    spawn(fun() ->
            +                  io:format("~p\n", [map_get(info, State)])
            +          end).

            In the following example (part of a module implementing the gen_server +behavior) the created fun is sent to another process:

            DO NOT

            handle_call(give_me_a_fun, _From, State) ->
            +    Fun = fun() -> State#href_anchor"ss">state.size =:= 42 end,
            +    {reply, Fun, State}.

            How bad that unnecessary copy is depends on the contents of the record or the +map.

            For example, if the state record is initialized like this:

            init1() ->
            +    #state{data=lists:seq(1, 10000)}.

            a list with 10000 elements (or about 20000 heap words) will be copied to the newly created process.

            An unnecessary copy of 10000 element list can be bad enough, but it can get even worse if the state record contains shared subterms. Here is a simple example -of a term with a shared subterm:

            {SubTerm, SubTerm}

            When a term is copied to another process, sharing of subterms will be lost and -the copied term can be many times larger than the original term. For example:

            init2() ->
            -    SharedSubTerms = lists:foldl(fun(_, A) -> [A|A] end, [0], lists:seq(1, 15)),
            -    #state{data=Shared}.

            In the process that calls init2/0, the size of the data field in the state +of a term with a shared subterm:

            {SubTerm, SubTerm}

            When a term is copied to another process, sharing of subterms will be lost and +the copied term can be many times larger than the original term. For example:

            init2() ->
            +    SharedSubTerms = lists:foldl(fun(_, A) -> [A|A] end, [0], lists:seq(1, 15)),
            +    #state{data=Shared}.

            In the process that calls init2/0, the size of the data field in the state record will be 32 heap words. When the record is copied to the newly created process, sharing will be lost and the size of the copied data field will be 131070 heap words. More details about loss off sharing are found in a later section.

            To avoid the problem, outside of the fun extract only the fields of the record -that are actually used:

            DO

            fixed_accidental1(State) ->
            +that are actually used:

            DO

            fixed_accidental1(State) ->
                 Info = State#state.info,
            -    spawn(fun() ->
            -                  io:format("~p\n", [Info])
            -          end).

            Similarly, outside of the fun extract only the map elements that are actually -used:

            DO

            fixed_accidental2(State) ->
            -    Info = map_get(info, State),
            -    spawn(fun() ->
            -                  io:format("~p\n", [Info])
            -          end).

            + spawn(fun() -> + io:format("~p\n", [Info]) + end).

            Similarly, outside of the fun extract only the map elements that are actually +used:

            DO

            fixed_accidental2(State) ->
            +    Info = map_get(info, State),
            +    spawn(fun() ->
            +                  io:format("~p\n", [Info])
            +          end).

            @@ -213,7 +213,7 @@ to guard against a denial-of-service attack. (All atoms that are allowed must have been created earlier, for example, by using all of them in a module and loading that module.)

            Using list_to_atom/1 to construct an atom that -is passed to apply/3 is quite expensive.

            DO NOT

            apply(list_to_atom("some_prefix"++Var), foo, Args)

            +is passed to apply/3 is quite expensive.

            DO NOT

            apply(list_to_atom("some_prefix"++Var), foo, Args)

            @@ -225,8 +225,8 @@ execute in constant time.

            Normally, there is no need to worry about the speed of length/1, because it is efficiently implemented in C. In time-critical code, you might want to avoid it if the input list could potentially be very long.

            Some uses of length/1 can be replaced by matching. For example, -the following code:

            foo(L) when length(L) >= 3 ->
            -    ...

            can be rewritten to:

            foo([_,_,_|_]=L) ->
            +the following code:

            foo(L) when length(L) >= 3 ->
            +    ...

            can be rewritten to:

            foo([_,_,_|_]=L) ->
                ...

            One slight difference is that length(L) fails if L is an improper list, while the pattern in the second code fragment accepts an improper list.

            @@ -242,10 +242,10 @@ as if the tuple was copied, the call to setelement/3 is replaced with a special destructive setelement instruction. In the following code sequence, the first setelement/3 call copies the tuple -and modifies the ninth element:

            multiple_setelement(T0) when tuple_size(T0) =:= 9 ->
            -    T1 = setelement(9, T0, bar),
            -    T2 = setelement(7, T1, foobar),
            -    setelement(5, T2, new_value).

            The two following setelement/3 calls modify the tuple in +and modifies the ninth element:

            multiple_setelement(T0) when tuple_size(T0) =:= 9 ->
            +    T1 = setelement(9, T0, bar),
            +    T2 = setelement(7, T1, foobar),
            +    setelement(5, T2, new_value).

            The two following setelement/3 calls modify the tuple in place.

            For the optimization to be applied, all the following conditions must be true:

            • The tuple argument must be known to be a tuple of a known size.
            • The indices must be integer literals, not variables or expressions.
            • The indices must be given in descending order.
            • There must be no calls to another function in between the calls to setelement/3.
            • The tuple returned from one setelement/3 call must only be used in the subsequent call to setelement/3.

            If the code cannot be structured as in the multiple_setelement/1 example, the @@ -321,7 +321,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html 2025-11-19 10:45:49.013471847 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html 2025-11-19 10:45:49.017471872 +0000 @@ -136,21 +136,21 @@ Threads of execution in Erlang share no data, that is why they are called processes).

            The Erlang BIF spawn is used to create a new process: spawn(Module, Exported_Function, List of Arguments). Consider the following -module:

            -module(tut14).
            +module:

            -module(tut14).
             
            --export([start/0, say_something/2]).
            +-export([start/0, say_something/2]).
             
            -say_something(What, 0) ->
            +say_something(What, 0) ->
                 done;
            -say_something(What, Times) ->
            -    io:format("~p~n", [What]),
            -    say_something(What, Times - 1).
            -
            -start() ->
            -    spawn(tut14, say_something, [hello, 3]),
            -    spawn(tut14, say_something, [goodbye, 3]).
            5> c(tut14).
            -{ok,tut14}
            -6> tut14:say_something(hello, 3).
            +say_something(What, Times) ->
            +    io:format("~p~n", [What]),
            +    say_something(What, Times - 1).
            +
            +start() ->
            +    spawn(tut14, say_something, [hello, 3]),
            +    spawn(tut14, say_something, [goodbye, 3]).
            5> c(tut14).
            +{ok,tut14}
            +6> tut14:say_something(hello, 3).
             hello
             hello
             hello
            @@ -159,7 +159,7 @@
             processes, one that writes "hello" three times and one that writes "goodbye"
             three times. Both processes use the function say_something. Notice that a
             function used in this way by spawn, to start a process, must be exported from
            -the module (that is, in the -export at the start of the module).

            9> tut14:start().
            +the module (that is, in the -export at the start of the module).

            9> tut14:start().
             hello
             goodbye
             <0.63.0>
            @@ -170,7 +170,7 @@
             Instead, the first process wrote a "hello", the second a "goodbye", the first
             another "hello" and so forth. But where did the <0.63.0> come from? The return
             value of a function is the return value of the last "thing" in the function. The
            -last thing in the function start is

            spawn(tut14, say_something, [goodbye, 3]).

            spawn returns a process identifier, or pid, which uniquely identifies the +last thing in the function start is

            spawn(tut14, say_something, [goodbye, 3]).

            spawn returns a process identifier, or pid, which uniquely identifies the process. So <0.63.0> is the pid of the spawn function call above. The next example shows how to use pids.

            Notice also that ~p is used instead of ~w in io:format/2. To quote the manual:

            ~p Writes the data with standard syntax in the same way as ~w, but breaks terms whose printed representation is longer than one line into many lines and indents @@ -182,37 +182,37 @@ Message Passing

            In the following example two processes are created and they send messages to -each other a number of times.

            -module(tut15).
            +each other a number of times.

            -module(tut15).
             
            --export([start/0, ping/2, pong/0]).
            +-export([start/0, ping/2, pong/0]).
             
            -ping(0, Pong_PID) ->
            +ping(0, Pong_PID) ->
                 Pong_PID ! finished,
            -    io:format("ping finished~n", []);
            +    io:format("ping finished~n", []);
             
            -ping(N, Pong_PID) ->
            -    Pong_PID ! {ping, self()},
            +ping(N, Pong_PID) ->
            +    Pong_PID ! {ping, self()},
                 receive
                     pong ->
            -            io:format("Ping received pong~n", [])
            +            io:format("Ping received pong~n", [])
                 end,
            -    ping(N - 1, Pong_PID).
            +    ping(N - 1, Pong_PID).
             
            -pong() ->
            +pong() ->
                 receive
                     finished ->
            -            io:format("Pong finished~n", []);
            -        {ping, Ping_PID} ->
            -            io:format("Pong received ping~n", []),
            +            io:format("Pong finished~n", []);
            +        {ping, Ping_PID} ->
            +            io:format("Pong received ping~n", []),
                         Ping_PID ! pong,
            -            pong()
            +            pong()
                 end.
             
            -start() ->
            -    Pong_PID = spawn(tut15, pong, []),
            -    spawn(tut15, ping, [3, Pong_PID]).
            1> c(tut15).
            -{ok,tut15}
            -2> tut15: start().
            +start() ->
            +    Pong_PID = spawn(tut15, pong, []),
            +    spawn(tut15, ping, [3, Pong_PID]).
            1> c(tut15).
            +{ok,tut15}
            +2> tut15: start().
             <0.36.0>
             Pong received ping
             Ping received pong
            @@ -221,14 +221,14 @@
             Pong received ping
             Ping received pong
             ping finished
            -Pong finished

            The function start first creates a process, let us call it "pong":

            Pong_PID = spawn(tut15, pong, [])

            This process executes tut15:pong(). Pong_PID is the process identity of the -"pong" process. The function start now creates another process "ping":

            spawn(tut15, ping, [3, Pong_PID]),

            This process executes:

            tut15:ping(3, Pong_PID)

            <0.36.0> is the return value from the start function.

            The process "pong" now does:

            receive
            +Pong finished

            The function start first creates a process, let us call it "pong":

            Pong_PID = spawn(tut15, pong, [])

            This process executes tut15:pong(). Pong_PID is the process identity of the +"pong" process. The function start now creates another process "ping":

            spawn(tut15, ping, [3, Pong_PID]),

            This process executes:

            tut15:ping(3, Pong_PID)

            <0.36.0> is the return value from the start function.

            The process "pong" now does:

            receive
                 finished ->
            -        io:format("Pong finished~n", []);
            -    {ping, Ping_PID} ->
            -        io:format("Pong received ping~n", []),
            +        io:format("Pong finished~n", []);
            +    {ping, Ping_PID} ->
            +        io:format("Pong received ping~n", []),
                     Ping_PID ! pong,
            -        pong()
            +        pong()
             end.

            The receive construct is used to allow processes to wait for messages from other processes. It has the following format:

            receive
                pattern1 ->
            @@ -257,21 +257,21 @@
             procedure is repeated.

            The Erlang implementation is "clever" and minimizes the number of times each message is tested against the patterns in each receive.

            Now back to the ping pong example.

            "Pong" is waiting for messages. If the atom finished is received, "pong" writes "Pong finished" to the output and, as it has nothing more to do, -terminates. If it receives a message with the format:

            {ping, Ping_PID}

            it writes "Pong received ping" to the output and sends the atom pong to the +terminates. If it receives a message with the format:

            {ping, Ping_PID}

            it writes "Pong received ping" to the output and sends the atom pong to the process "ping":

            Ping_PID ! pong

            Notice how the operator "!" is used to send messages. The syntax of "!" is:

            Pid ! Message

            That is, Message (any Erlang term) is sent to the process with identity Pid.

            After sending the message pong to the process "ping", "pong" calls the pong function again, which causes it to get back to the receive again and wait for -another message.

            Now let us look at the process "ping". Recall that it was started by executing:

            tut15:ping(3, Pong_PID)

            Looking at the function ping/2, the second clause of ping/2 is executed +another message.

            Now let us look at the process "ping". Recall that it was started by executing:

            tut15:ping(3, Pong_PID)

            Looking at the function ping/2, the second clause of ping/2 is executed since the value of the first argument is 3 (not 0) (first clause head is -ping(0,Pong_PID), second clause head is ping(N,Pong_PID), so N becomes 3).

            The second clause sends a message to "pong":

            Pong_PID ! {ping, self()},

            self/0 returns the pid of the process that executes self/0, in this case the +ping(0,Pong_PID), second clause head is ping(N,Pong_PID), so N becomes 3).

            The second clause sends a message to "pong":

            Pong_PID ! {ping, self()},

            self/0 returns the pid of the process that executes self/0, in this case the pid of "ping". (Recall the code for "pong", this lands up in the variable Ping_PID in the receive previously explained.)

            "Ping" now waits for a reply from "pong":

            receive
                 pong ->
            -        io:format("Ping received pong~n", [])
            +        io:format("Ping received pong~n", [])
             end,

            It writes "Ping received pong" when this reply arrives, after which "ping" calls -the ping function again.

            ping(N - 1, Pong_PID)

            N-1 causes the first argument to be decremented until it becomes 0. When this -occurs, the first clause of ping/2 is executed:

            ping(0, Pong_PID) ->
            +the ping function again.

            ping(N - 1, Pong_PID)

            N-1 causes the first argument to be decremented until it becomes 0. When this +occurs, the first clause of ping/2 is executed:

            ping(0, Pong_PID) ->
                 Pong_PID !  finished,
            -    io:format("ping finished~n", []);

            The atom finished is sent to "pong" (causing it to terminate as described + io:format("ping finished~n", []);

            The atom finished is sent to "pong" (causing it to terminate as described above) and "ping finished" is written to the output. "Ping" then terminates as it has nothing left to do.

            @@ -285,38 +285,38 @@ processes which need to know each other's identities are started independently of each other. Erlang thus provides a mechanism for processes to be given names so that these names can be used as identities instead of pids. This is done by -using the register BIF:

            register(some_atom, Pid)

            Let us now rewrite the ping pong example using this and give the name pong to -the "pong" process:

            -module(tut16).
            +using the register BIF:

            register(some_atom, Pid)

            Let us now rewrite the ping pong example using this and give the name pong to +the "pong" process:

            -module(tut16).
             
            --export([start/0, ping/1, pong/0]).
            +-export([start/0, ping/1, pong/0]).
             
            -ping(0) ->
            +ping(0) ->
                 pong ! finished,
            -    io:format("ping finished~n", []);
            +    io:format("ping finished~n", []);
             
            -ping(N) ->
            -    pong ! {ping, self()},
            +ping(N) ->
            +    pong ! {ping, self()},
                 receive
                     pong ->
            -            io:format("Ping received pong~n", [])
            +            io:format("Ping received pong~n", [])
                 end,
            -    ping(N - 1).
            +    ping(N - 1).
             
            -pong() ->
            +pong() ->
                 receive
                     finished ->
            -            io:format("Pong finished~n", []);
            -        {ping, Ping_PID} ->
            -            io:format("Pong received ping~n", []),
            +            io:format("Pong finished~n", []);
            +        {ping, Ping_PID} ->
            +            io:format("Pong received ping~n", []),
            /usr/share/doc/packages/erlang27-doc/doc/system/create_target.html differs (HTML document, UTF-8 Unicode text, with very long lines)
            --- old//usr/share/doc/packages/erlang27-doc/doc/system/create_target.html	2025-11-19 10:45:49.053472096 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/doc/system/create_target.html	2025-11-19 10:45:49.057472121 +0000
            @@ -142,13 +142,13 @@
             SASL), which specifies the ERTS version and lists all applications that are to
             be included in the new basic target system. An example is the following
             mysystem.rel file:

            %% mysystem.rel
            -{release,
            - {"MYSYSTEM", "FIRST"},
            - {erts, "5.10.4"},
            - [{kernel, "2.16.4"},
            -  {stdlib, "1.19.4"},
            -  {sasl, "2.3.4"},
            -  {pea, "1.0"}]}.

            The listed applications are not only original Erlang/OTP applications but +{release, + {"MYSYSTEM", "FIRST"}, + {erts, "5.10.4"}, + [{kernel, "2.16.4"}, + {stdlib, "1.19.4"}, + {sasl, "2.3.4"}, + {pea, "1.0"}]}.

            The listed applications are not only original Erlang/OTP applications but possibly also new applications that you have written (here exemplified by the application Pea (pea)).

            Step 2. Start Erlang/OTP from the directory where the mysystem.rel file resides:

            % erl -pa /home/user/target_system/myapps/pea-1.0/ebin

            The -pa argument prepends the path to the ebin directory for @@ -246,17 +246,17 @@

            In this example the Pea application has been changed, and so are the applications ERTS, Kernel, STDLIB and SASL.

            Step 1. Create the file .rel:

            %% mysystem2.rel
            -{release,
            - {"MYSYSTEM", "SECOND"},
            - {erts, "6.0"},
            - [{kernel, "3.0"},
            -  {stdlib, "2.0"},
            -  {sasl, "2.4"},
            -  {pea, "2.0"}]}.

            Step 2. Create the application upgrade file (see +{release, + {"MYSYSTEM", "SECOND"}, + {erts, "6.0"}, + [{kernel, "3.0"}, + {stdlib, "2.0"}, + {sasl, "2.4"}, + {pea, "2.0"}]}.

            Step 2. Create the application upgrade file (see appup in SASL) for Pea, for example:

            %% pea.appup
            -{"2.0",
            - [{"1.0",[{load_module,pea_lib}]}],
            - [{"1.0",[{load_module,pea_lib}]}]}.

            Step 3. From the directory where the file mysystem2.rel resides, start the +{"2.0", + [{"1.0",[{load_module,pea_lib}]}], + [{"1.0",[{load_module,pea_lib}]}]}.

            Step 3. From the directory where the file mysystem2.rel resides, start the Erlang/OTP system, giving the path to the new version of Pea:

            % erl -pa /home/user/target_system/myapps/pea-2.0/ebin

            Step 4. Create the release upgrade file (see relup in SASL):

            1> systools:make_relup("mysystem2",["mysystem"],["mysystem"],
                 [{path,["/home/user/target_system/myapps/pea-1.0/ebin",
            @@ -296,21 +296,21 @@
             release_handler:install_release/1 means that the release_handler has
             restarted the node by using heart. This is always done when the upgrade
             involves a change of the applications ERTS, Kernel, STDLIB, or SASL. For more
            -information, see Upgrade when Erlang/OTP has Changed.

            The node is accessible through a new pipe:

            % /usr/local/erl-target/bin/to_erl /tmp/erlang.pipe.2

            List the available releases in the system:

            1> release_handler:which_releases().
            -[{"MYSYSTEM","SECOND",
            -  ["kernel-3.0","stdlib-2.0","sasl-2.4","pea-2.0"],
            -  current},
            - {"MYSYSTEM","FIRST",
            -  ["kernel-2.16.4","stdlib-1.19.4","sasl-2.3.4","pea-1.0"],
            -  permanent}]

            Our new release, "SECOND", is now the current release, but we can also see that +information, see Upgrade when Erlang/OTP has Changed.

            The node is accessible through a new pipe:

            % /usr/local/erl-target/bin/to_erl /tmp/erlang.pipe.2

            List the available releases in the system:

            1> release_handler:which_releases().
            +[{"MYSYSTEM","SECOND",
            +  ["kernel-3.0","stdlib-2.0","sasl-2.4","pea-2.0"],
            +  current},
            + {"MYSYSTEM","FIRST",
            +  ["kernel-2.16.4","stdlib-1.19.4","sasl-2.3.4","pea-1.0"],
            +  permanent}]

            Our new release, "SECOND", is now the current release, but we can also see that our "FIRST" release is still permanent. This means that if the node would be -restarted now, it would come up running the "FIRST" release again.

            Step 3. Make the new release permanent:

            2> release_handler:make_permanent("SECOND").

            Check the releases again:

            3> release_handler:which_releases().
            -[{"MYSYSTEM","SECOND",
            -  ["kernel-3.0","stdlib-2.0","sasl-2.4","pea-2.0"],
            -  permanent},
            - {"MYSYSTEM","FIRST",
            -  ["kernel-2.16.4","stdlib-1.19.4","sasl-2.3.4","pea-1.0"],
            -  old}]

            We see that the new release version is permanent, so it would be safe to +restarted now, it would come up running the "FIRST" release again.

            Step 3. Make the new release permanent:

            2> release_handler:make_permanent("SECOND").

            Check the releases again:

            3> release_handler:which_releases().
            +[{"MYSYSTEM","SECOND",
            +  ["kernel-3.0","stdlib-2.0","sasl-2.4","pea-2.0"],
            +  permanent},
            + {"MYSYSTEM","FIRST",
            +  ["kernel-2.16.4","stdlib-1.19.4","sasl-2.3.4","pea-1.0"],
            +  old}]

            We see that the new release version is permanent, so it would be safe to restart the node.

            @@ -319,8 +319,8 @@

            This module can also be found in the examples directory of the SASL application.

            
            --module(target_system).
            --export([create/1, create/2, install/2]).
            +-module(target_system).
            +-export([create/1, create/2, install/2]).
             
             %% Note: RelFileName below is the *stem* without trailing .rel,
             %% .script etc.
            @@ -328,176 +328,176 @@
             
             %% create(RelFileName)
             %%
            -create(RelFileName) ->
            -    create(RelFileName,[]).
            +create(RelFileName) ->
            +    create(RelFileName,[]).
             
            -create(RelFileName,SystoolsOpts) ->
            +create(RelFileName,SystoolsOpts) ->
                 RelFile = RelFileName ++ ".rel",
            -    Dir = filename:dirname(RelFileName),
            -    PlainRelFileName = filename:join(Dir,"plain"),
            +    Dir = filename:dirname(RelFileName),
            +    PlainRelFileName = filename:join(Dir,"plain"),
                 PlainRelFile = PlainRelFileName ++ ".rel",
            -    io:fwrite("Reading file: ~ts ...~n", [RelFile]),
            -    {ok, [RelSpec]} = file:consult(RelFile),
            -    io:fwrite("Creating file: ~ts from ~ts ...~n",
            -              [PlainRelFile, RelFile]),
            -    {release,
            -     {RelName, RelVsn},
            -     {erts, ErtsVsn},
            -     AppVsns} = RelSpec,
            -    PlainRelSpec = {release,
            -                    {RelName, RelVsn},
            -                    {erts, ErtsVsn},
            -                    lists:filter(fun({kernel, _}) ->
            +    io:fwrite("Reading file: ~ts ...~n", [RelFile]),
            +    {ok, [RelSpec]} = file:consult(RelFile),
            +    io:fwrite("Creating file: ~ts from ~ts ...~n",
            +              [PlainRelFile, RelFile]),
            +    {release,
            +     {RelName, RelVsn},
            +     {erts, ErtsVsn},
            +     AppVsns} = RelSpec,
            +    PlainRelSpec = {release,
            +                    {RelName, RelVsn},
            +                    {erts, ErtsVsn},
            +                    lists:filter(fun({kernel, _}) ->
                                                      true;
            -                                    ({stdlib, _}) ->
            +                                    ({stdlib, _}) ->
                                                      true;
            -                                    (_) ->
            +                                    (_) ->
                                                      false
            -                                 end, AppVsns)
            -                   },
            -    {ok, Fd} = file:open(PlainRelFile, [write]),
            -    io:fwrite(Fd, "~p.~n", [PlainRelSpec]),
            -    file:close(Fd),
            -
            -    io:fwrite("Making \"~ts.script\" and \"~ts.boot\" files ...~n",
            -	      [PlainRelFileName,PlainRelFileName]),
            -    make_script(PlainRelFileName,SystoolsOpts),
            -
            -    io:fwrite("Making \"~ts.script\" and \"~ts.boot\" files ...~n",
            -              [RelFileName, RelFileName]),
            -    make_script(RelFileName,SystoolsOpts),
            +                                 end, AppVsns)
            +                   },
            +    {ok, Fd} = file:open(PlainRelFile, [write]),
            +    io:fwrite(Fd, "~p.~n", [PlainRelSpec]),
            +    file:close(Fd),
            +
            +    io:fwrite("Making \"~ts.script\" and \"~ts.boot\" files ...~n",
            +	      [PlainRelFileName,PlainRelFileName]),
            +    make_script(PlainRelFileName,SystoolsOpts),
            +
            +    io:fwrite("Making \"~ts.script\" and \"~ts.boot\" files ...~n",
            +              [RelFileName, RelFileName]),
            +    make_script(RelFileName,SystoolsOpts),
             
                 TarFileName = RelFileName ++ ".tar.gz",
            -    io:fwrite("Creating tar file ~ts ...~n", [TarFileName]),
            -    make_tar(RelFileName,SystoolsOpts),
            +    io:fwrite("Creating tar file ~ts ...~n", [TarFileName]),
            +    make_tar(RelFileName,SystoolsOpts),
             
            -    TmpDir = filename:join(Dir,"tmp"),
            -    io:fwrite("Creating directory ~tp ...~n",[TmpDir]),
            -    file:make_dir(TmpDir),
            -
            -    io:fwrite("Extracting ~ts into directory ~ts ...~n", [TarFileName,TmpDir]),
            -    extract_tar(TarFileName, TmpDir),
            -
            -    TmpBinDir = filename:join([TmpDir, "bin"]),
            -    ErtsBinDir = filename:join([TmpDir, "erts-" ++ ErtsVsn, "bin"]),
            -    io:fwrite("Deleting \"erl\" and \"start\" in directory ~ts ...~n",
            -              [ErtsBinDir]),
            -    file:delete(filename:join([ErtsBinDir, "erl"])),
            -    file:delete(filename:join([ErtsBinDir, "start"])),
            -
            -    io:fwrite("Creating temporary directory ~ts ...~n", [TmpBinDir]),
            -    file:make_dir(TmpBinDir),
            -
            -    io:fwrite("Copying file \"~ts.boot\" to ~ts ...~n",
            -              [PlainRelFileName, filename:join([TmpBinDir, "start.boot"])]),
            -    copy_file(PlainRelFileName++".boot",filename:join([TmpBinDir, "start.boot"])),
            +    TmpDir = filename:join(Dir,"tmp"),
            /usr/share/doc/packages/erlang27-doc/doc/system/data_types.html differs (HTML document, UTF-8 Unicode text, with very long lines)
            --- old//usr/share/doc/packages/erlang27-doc/doc/system/data_types.html	2025-11-19 10:45:49.089472320 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/doc/system/data_types.html	2025-11-19 10:45:49.093472345 +0000
            @@ -196,10 +196,10 @@
             arithmetic operations. This is because floats are represented by a fixed number
             of bits in a base-2 system while printed floats are represented with a base-10
             system. Erlang uses 64-bit floats. Here are examples of this phenomenon:

            1> 0.1+0.2.
            -0.30000000000000004

            The real numbers 0.1 and 0.2 cannot be represented exactly as floats.

            1> {36028797018963968.0, 36028797018963968 == 36028797018963968.0,
            -  36028797018963970.0, 36028797018963970 == 36028797018963970.0}.
            -{3.602879701896397e16, true,
            - 3.602879701896397e16, false}.

            The value 36028797018963968 can be represented exactly as a float value but +0.30000000000000004

            The real numbers 0.1 and 0.2 cannot be represented exactly as floats.

            1> {36028797018963968.0, 36028797018963968 == 36028797018963968.0,
            +  36028797018963970.0, 36028797018963970 == 36028797018963970.0}.
            +{3.602879701896397e16, true,
            + 3.602879701896397e16, false}.

            The value 36028797018963968 can be represented exactly as a float value but Erlang's pretty printer rounds 36028797018963968.0 to 3.602879701896397e16 (=36028797018963970.0) as all values in the range [36028797018963966.0, 36028797018963972.0] are represented by @@ -240,11 +240,11 @@ 3> <<1:1,0:1>>. <<2:2>>

            The is_bitstring/1 BIF tests whether a term is a bit string, and the is_binary/1 -BIF tests whether a term is a binary.

            Examples:

            1> is_bitstring(<<1:1>>).
            +BIF tests whether a term is a binary.

            Examples:

            1> is_bitstring(<<1:1>>).
             true
            -2> is_binary(<<1:1>>).
            +2> is_binary(<<1:1>>).
             false
            -3> is_binary(<<42>>).
            +3> is_binary(<<42>>).
             true
             

            For more examples, see Programming Examples.

            @@ -256,9 +256,9 @@ among connected nodes. A reference is created by calling the make_ref/0 BIF. The is_reference/1 BIF tests whether a term -is a reference.

            Examples:

            1> Ref = make_ref().
            +is a reference.

            Examples:

            1> Ref = make_ref().
             #Ref<0.76482849.3801088007.198204>
            -2> is_reference(Ref).
            +2> is_reference(Ref).
             true

            @@ -267,17 +267,17 @@

            A fun is a functional object. Funs make it possible to create an anonymous function and pass the function itself — not its name — as argument to other -functions.

            Examples:

            1> Fun1 = fun (X) -> X+1 end.
            +functions.

            Examples:

            1> Fun1 = fun (X) -> X+1 end.
             #Fun<erl_eval.6.39074546>
            -2> Fun1(2).
            +2> Fun1(2).
             3

            The is_function/1 and is_function/2 -BIFs tests whether a term is a fun.

            Examples:

            1> F = fun() -> ok end.
            +BIFs tests whether a term is a fun.

            Examples:

            1> F = fun() -> ok end.
             #Fun<erl_eval.43.105768164>
            -2> is_function(F).
            +2> is_function(F).
             true
            -3> is_function(F, 0).
            +3> is_function(F, 0).
             true
            -4> is_function(F, 1).
            +4> is_function(F, 1).
             false

            Read more about funs in Fun Expressions. For more examples, see Programming Examples.

            @@ -303,17 +303,17 @@ a message, which is the case when calling the spawn_request/5 BIF. A Pid is typically used when when sending a process a signal. The -is_pid/1 BIF tests whether a term is a Pid.

            Example:

            -module(m).
            --export([loop/0]).
            +is_pid/1 BIF tests whether a term is a Pid.

            Example:

            -module(m).
            +-export([loop/0]).
             
            -loop() ->
            +loop() ->
                 receive
                     who_are_you ->
            -            io:format("I am ~p~n", [self()]),
            -            loop()
            +            io:format("I am ~p~n", [self()]),
            +            loop()
                 end.
             
            -1> P = spawn(m, loop, []).
            +1> P = spawn(m, loop, []).
             <0.58.0>
             2> P ! who_are_you.
             I am <0.58.0>
            @@ -324,19 +324,19 @@
               Tuple
             

            A tuple is a compound data type with a fixed number of terms:

            {Term1,...,TermN}

            Each term Term in the tuple is called an element. The number of elements is -said to be the size of the tuple.

            There exists a number of BIFs to manipulate tuples.

            Examples:

            1> P = {adam,24,{july,29}}.
            -{adam,24,{july,29}}
            -2> element(1,P).
            +said to be the size of the tuple.

            There exists a number of BIFs to manipulate tuples.

            Examples:

            1> P = {adam,24,{july,29}}.
            +{adam,24,{july,29}}
            +2> element(1,P).
             adam
            -3> element(3,P).
            -{july,29}
            -4> P2 = setelement(2,P,25).
            -{adam,25,{july,29}}
            -5> tuple_size(P).
            +3> element(3,P).
            +{july,29}
            +4> P2 = setelement(2,P,25).
            +{adam,25,{july,29}}
            +5> tuple_size(P).
             3
            -6> tuple_size({}).
            +6> tuple_size({}).
             0
            -7> is_tuple({a,b,c}).
            +7> is_tuple({a,b,c}).
             true

            @@ -345,17 +345,17 @@

            A map is a compound data type with a variable number of key-value associations:

            #{Key1 => Value1, ..., KeyN => ValueN}

            Each key-value association in the map is called an association pair. The key and value parts of the pair are called elements. The number of association -pairs is said to be the size of the map.

            There exists a number of BIFs to manipulate maps.

            Examples:

            1> M1 = #{name => adam, age => 24, date => {july,29}}.
            -#{age => 24,date => {july,29},name => adam}
            -2> maps:get(name, M1).
            +pairs is said to be the size of the map.

            There exists a number of BIFs to manipulate maps.

            Examples:

            1> M1 = #{name => adam, age => 24, date => {july,29}}.
            +#{age => 24,date => {july,29},name => adam}
            +2> maps:get(name, M1).
             adam
            -3> maps:get(date, M1).
            -{july,29}
            -4> M2 = maps:update(age, 25, M1).
            -#{age => 25,date => {july,29},name => adam}
            -5> map_size(M).
            +3> maps:get(date, M1).
            +{july,29}
            +4> M2 = maps:update(age, 25, M1).
            +#{age => 25,date => {july,29},name => adam}
            +5> map_size(M).
             3
            -6> map_size(#{}).
            +6> map_size(#{}).
             0

            A collection of maps processing functions are found in module maps in STDLIB.

            Read more about maps in Map Expressions.

            Change

            Maps were introduced as an experimental feature in Erlang/OTP R17. Their functionality was extended and became fully supported in Erlang/OTP 18.

            @@ -370,19 +370,19 @@ latter can be expressed as [H|T]. The notation [Term1,...,TermN] above is equivalent with the list [Term1|[...|[TermN|[]]]].

            Example:

            [] is a list, thus
            [c|[]] is a list, thus
            [b|[c|[]]] is a list, thus
            [a|[b|[c|[]]]] is a list, or in short [a,b,c]

            A list where the tail is a list is sometimes called a proper list. It is allowed to have a list where the tail is not a list, for example, [a|b]. -However, this type of list is of little practical use.

            Examples:

            1> L1 = [a,2,{c,4}].
            -[a,2,{c,4}]
            -2> [H|T] = L1.
            -[a,2,{c,4}]
            +However, this type of list is of little practical use.

            Examples:

            1> L1 = [a,2,{c,4}].
            +[a,2,{c,4}]
            +2> [H|T] = L1.
            +[a,2,{c,4}]
             3> H.
             a
             4> T.
            -[2,{c,4}]
            -5> L2 = [d|T].
            -[d,2,{c,4}]
            -6> length(L1).
            +[2,{c,4}]
            +5> L2 = [d|T].
            +[d,2,{c,4}]
            +6> length(L1).
             3
            -7> length([]).
            +7> length([]).
             0

            A collection of list processing functions are found in module lists in STDLIB.

            @@ -510,16 +510,16 @@ data type. Instead, record expressions are translated to tuple expressions during compilation. Therefore, record expressions are not understood by the shell unless special actions are taken. For details, see module shell -in STDLIB.

            Examples:

            -module(person).
            --export([new/2]).
            +in STDLIB.

            Examples:

            -module(person).
            +-export([new/2]).
             
            --record(person, {name, age}).
            +-record(person, {name, age}).
             
            -new(Name, Age) ->
            -    #href_anchor"ss">person{name=Name, age=Age}.
            +new(Name, Age) ->
            +    #href_anchor"ss">person{name=Name, age=Age}.
             
            -1> person:new(ernie, 44).
            -{person,ernie,44}

            Read more about records in Records. More examples are +1> person:new(ernie, 44). +{person,ernie,44}

            Read more about records in Records. More examples are found in Programming Examples.

            /usr/share/doc/packages/erlang27-doc/doc/system/debugging.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/debugging.html 2025-11-19 10:45:49.117472494 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/debugging.html 2025-11-19 10:45:49.121472519 +0000 @@ -335,7 +335,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html 2025-11-19 10:45:49.149472694 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html 2025-11-19 10:45:49.149472694 +0000 @@ -156,94 +156,94 @@ specific part. Consider the following code (written in plain Erlang) for a simple server, which keeps track of a number of "channels". Other processes can allocate and free the channels by calling the functions alloc/0 and free/1, -respectively.

            -module(ch1).
            --export([start/0]).
            --export([alloc/0, free/1]).
            --export([init/0]).
            +respectively.

            -module(ch1).
            +-export([start/0]).
            +-export([alloc/0, free/1]).
            +-export([init/0]).
             
            -start() ->
            -    spawn(ch1, init, []).
            +start() ->
            +    spawn(ch1, init, []).
             
            -alloc() ->
            -    ch1 ! {self(), alloc},
            +alloc() ->
            +    ch1 ! {self(), alloc},
                 receive
            -        {ch1, Res} ->
            +        {ch1, Res} ->
                         Res
                 end.
             
            -free(Ch) ->
            -    ch1 ! {free, Ch},
            +free(Ch) ->
            +    ch1 ! {free, Ch},
                 ok.
             
            -init() ->
            -    register(ch1, self()),
            -    Chs = channels(),
            -    loop(Chs).
            +init() ->
            +    register(ch1, self()),
            +    Chs = channels(),
            +    loop(Chs).
             
            -loop(Chs) ->
            +loop(Chs) ->
                 receive
            -        {From, alloc} ->
            -            {Ch, Chs2} = alloc(Chs),
            -            From ! {ch1, Ch},
            -            loop(Chs2);
            -        {free, Ch} ->
            -            Chs2 = free(Ch, Chs),
            -            loop(Chs2)
            -    end.

            The code for the server can be rewritten into a generic part server.erl:

            -module(server).
            --export([start/1]).
            --export([call/2, cast/2]).
            --export([init/1]).
            +        {From, alloc} ->
            +            {Ch, Chs2} = alloc(Chs),
            +            From ! {ch1, Ch},
            +            loop(Chs2);
            +        {free, Ch} ->
            +            Chs2 = free(Ch, Chs),
            +            loop(Chs2)
            +    end.

            The code for the server can be rewritten into a generic part server.erl:

            -module(server).
            +-export([start/1]).
            +-export([call/2, cast/2]).
            +-export([init/1]).
             
            -start(Mod) ->
            -    spawn(server, init, [Mod]).
            +start(Mod) ->
            +    spawn(server, init, [Mod]).
             
            -call(Name, Req) ->
            -    Name ! {call, self(), Req},
            +call(Name, Req) ->
            +    Name ! {call, self(), Req},
                 receive
            -        {Name, Res} ->
            +        {Name, Res} ->
                         Res
                 end.
             
            -cast(Name, Req) ->
            -    Name ! {cast, Req},
            +cast(Name, Req) ->
            +    Name ! {cast, Req},
                 ok.
             
            -init(Mod) ->
            -    register(Mod, self()),
            -    State = Mod:init(),
            -    loop(Mod, State).
            +init(Mod) ->
            +    register(Mod, self()),
            +    State = Mod:init(),
            +    loop(Mod, State).
             
            -loop(Mod, State) ->
            +loop(Mod, State) ->
                 receive
            -        {call, From, Req} ->
            -            {Res, State2} = Mod:handle_call(Req, State),
            -            From ! {Mod, Res},
            -            loop(Mod, State2);
            -        {cast, Req} ->
            -            State2 = Mod:handle_cast(Req, State),
            -            loop(Mod, State2)
            -    end.

            And a callback module ch2.erl:

            -module(ch2).
            --export([start/0]).
            --export([alloc/0, free/1]).
            --export([init/0, handle_call/2, handle_cast/2]).
            -
            -start() ->
            -    server:start(ch2).
            -
            -alloc() ->
            -    server:call(ch2, alloc).
            -
            -free(Ch) ->
            -    server:cast(ch2, {free, Ch}).
            +        {call, From, Req} ->
            +            {Res, State2} = Mod:handle_call(Req, State),
            +            From ! {Mod, Res},
            +            loop(Mod, State2);
            +        {cast, Req} ->
            +            State2 = Mod:handle_cast(Req, State),
            +            loop(Mod, State2)
            +    end.

            And a callback module ch2.erl:

            -module(ch2).
            +-export([start/0]).
            +-export([alloc/0, free/1]).
            +-export([init/0, handle_call/2, handle_cast/2]).
            +
            +start() ->
            +    server:start(ch2).
            +
            +alloc() ->
            +    server:call(ch2, alloc).
            +
            +free(Ch) ->
            +    server:cast(ch2, {free, Ch}).
             
            -init() ->
            -    channels().
            +init() ->
            +    channels().
             
            -handle_call(alloc, Chs) ->
            -    alloc(Chs). % => {Ch,Chs2}
            +handle_call(alloc, Chs) ->
            +    alloc(Chs). % => {Ch,Chs2}
             
            -handle_cast({free, Ch}, Chs) ->
            -    free(Ch, Chs). % => Chs2

            Notice the following:

            • The code in server can be reused to build many different servers.
            • The server name, in this example the atom ch2, is hidden from the users of +handle_cast({free, Ch}, Chs) -> + free(Ch, Chs). % => Chs2

            Notice the following:

            • The code in server can be reused to build many different servers.
            • The server name, in this example the atom ch2, is hidden from the users of the client functions. This means that the name can be changed without affecting them.
            • The protocol (messages sent to and received from the server) is also hidden. This is good programming practice and allows one to change the protocol @@ -252,16 +252,16 @@ and free/2 has been intentionally left out, as it is not relevant to the example. For completeness, one way to write these functions is given below. This is an example only, a realistic implementation must be able to handle situations -like running out of channels to allocate, and so on.

              channels() ->
              -   {_Allocated = [], _Free = lists:seq(1, 100)}.
              +like running out of channels to allocate, and so on.

              channels() ->
              +   {_Allocated = [], _Free = lists:seq(1, 100)}.
               
              -alloc({Allocated, [H|T] = _Free}) ->
              -   {H, {[H|Allocated], T}}.
              +alloc({Allocated, [H|T] = _Free}) ->
              +   {H, {[H|Allocated], T}}.
               
              -free(Ch, {Alloc, Free} = Channels) ->
              -   case lists:member(Ch, Alloc) of
              +free(Ch, {Alloc, Free} = Channels) ->
              +   case lists:member(Ch, Alloc) of
                     true ->
              -         {lists:delete(Ch, Alloc), [Ch|Free]};
              +         {lists:delete(Ch, Alloc), [Ch|Free]};
                     false ->
                        Channels
                  end.

              Code written without using behaviours can be more efficient, but the increased @@ -270,13 +270,13 @@ other programmers. Improvised programming structures, while possibly more efficient, are always more difficult to understand.

              The server module corresponds, greatly simplified, to the Erlang/OTP behaviour gen_server.

              The standard Erlang/OTP behaviours are:

              • gen_server

                For implementing the server of a client-server relation

              • gen_statem

                For implementing state machines

              • gen_event

                For implementing event handling functionality

              • supervisor

                For implementing a supervisor in a supervision tree

              The compiler understands the module attribute -behaviour(Behaviour) and issues -warnings about missing callback functions, for example:

              -module(chs3).
              --behaviour(gen_server).
              +warnings about missing callback functions, for example:

              -module(chs3).
              +-behaviour(gen_server).
               ...
               
              -3> c(chs3).
              +3> c(chs3).
               ./chs3.erl:10: Warning: undefined call-back function handle_call/3
              -{ok,chs3}

              /usr/share/doc/packages/erlang27-doc/doc/system/distributed.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 2025-11-19 10:45:49.181472893 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 2025-11-19 10:45:49.185472918 +0000 @@ -146,17 +146,17 @@ the user. host is the full host name if long names are used, or the first part of the host name if short names are used. Function node() returns the name of the node.

              Example:

              % erl -name dilbert
              -(dilbert@uab.ericsson.se)1> node().
              +(dilbert@uab.ericsson.se)1> node().
               'dilbert@uab.ericsson.se'
               
               % erl -sname dilbert
              -(dilbert@uab)1> node().
              +(dilbert@uab)1> node().
               dilbert@uab

              The node name can also be given in runtime by calling net_kernel:start/1.

              Example:

              % erl
              -1> node().
              +1> node().
               nonode@nohost
              -2> net_kernel:start([dilbert,shortnames]).
              -{ok,<0.102.0>}
              -(dilbert@uab)3> node().
              +2> net_kernel:start([dilbert,shortnames]).
              +{ok,<0.102.0>}
              +(dilbert@uab)3> node().
               dilbert@uab

              Note

              A node with a long node name cannot communicate with a node with a short node name.

              @@ -360,7 +360,7 @@ Erlang programming language

              -

              Copyright © 1996-2025 Ericsson AB

              +

              Copyright © 1996-2041 Ericsson AB

              /usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html 2025-11-19 10:45:49.213473092 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html 2025-11-19 10:45:49.217473117 +0000 @@ -154,13 +154,13 @@ elapsed, all applications start. If not all mandatory nodes are up, the node terminates.

              Example:

              An application myapp is to run at the node cp1@cave. If this node goes down, myapp is to be restarted at cp2@cave or cp3@cave. A system configuration -file cp1.config for cp1@cave can look as follows:

              [{kernel,
              -  [{distributed, [{myapp, 5000, [cp1@cave, {cp2@cave, cp3@cave}]}]},
              -   {sync_nodes_mandatory, [cp2@cave, cp3@cave]},
              -   {sync_nodes_timeout, 5000}
              -  ]
              - }
              -].

              The system configuration files for cp2@cave and cp3@cave are identical, +file cp1.config for cp1@cave can look as follows:

              [{kernel,
              +  [{distributed, [{myapp, 5000, [cp1@cave, {cp2@cave, cp3@cave}]}]},
              +   {sync_nodes_mandatory, [cp2@cave, cp3@cave]},
              +   {sync_nodes_timeout, 5000}
              +  ]
              + }
              +].

              The system configuration files for cp2@cave and cp3@cave are identical, except for the list of mandatory nodes, which is to be [cp1@cave, cp3@cave] for cp2@cave and [cp1@cave, cp2@cave] for cp3@cave.

              Note

              All involved nodes must have the same value for distributed and sync_nodes_timeout. Otherwise the system behavior is undefined.

              @@ -175,7 +175,7 @@ automatically starts the application.

              The application is started at the first operational node that is listed in the list of nodes in the distributed configuration parameter. The application is started as usual. That is, an application master is created and calls the -application callback function:

              Module:start(normal, StartArgs)

              Example:

              Continuing the example from the previous section, the three nodes are started, +application callback function:

              Module:start(normal, StartArgs)

              Example:

              Continuing the example from the previous section, the three nodes are started, specifying the system configuration file:

              > erl -sname cp1 -config cp1
               > erl -sname cp2 -config cp2
               > erl -sname cp3 -config cp3

              When all nodes are operational, myapp can be started. This is achieved by @@ -191,9 +191,9 @@ restarted (after the specified time-out) at the first operational node that is listed in the list of nodes in the distributed configuration parameter. This is called a failover.

              The application is started the normal way at the new node, that is, by the -application master calling:

              Module:start(normal, StartArgs)

              An exception is if the application has the start_phases key defined (see +application master calling:

              Module:start(normal, StartArgs)

              An exception is if the application has the start_phases key defined (see Included Applications). The application is then -instead started by calling:

              Module:start({failover, Node}, StartArgs)

              Here Node is the terminated node.

              Example:

              If cp1 goes down, the system checks which one of the other nodes, cp2 or +instead started by calling:

              Module:start({failover, Node}, StartArgs)

              Here Node is the terminated node.

              Example:

              If cp1 goes down, the system checks which one of the other nodes, cp2 or cp3, has the least number of running applications, but waits for 5 seconds for cp1 to restart. If cp1 does not restart and cp2 runs fewer applications than cp3, myapp is restarted on cp2.

              Application myapp - Situation 2

              Suppose now that cp2 goes also down and does not restart within 5 seconds. @@ -206,7 +206,7 @@

              If a node is started, which has higher priority according to distributed than the node where a distributed application is running, the application is restarted at the new node and stopped at the old node. This is called a -takeover.

              The application is started by the application master calling:

              Module:start({takeover, Node}, StartArgs)

              Here Node is the old node.

              Example:

              If myapp is running at cp3, and if cp2 now restarts, it does not restart +takeover.

              The application is started by the application master calling:

              Module:start({takeover, Node}, StartArgs)

              Here Node is the old node.

              Example:

              If myapp is running at cp3, and if cp2 now restarts, it does not restart myapp, as the order between the cp2 and cp3 nodes is undefined.

              Application myapp - Situation 4

              However, if cp1 also restarts, the function application:takeover/2 moves myapp to cp1, as cp1 has a higher priority than cp3 for this application. In this case, Module:start({takeover, cp3@cave}, StartArgs) is @@ -261,7 +261,7 @@ Erlang programming language

              -

              Copyright © 1996-2025 Ericsson AB

              +

              Copyright © 1996-2041 Ericsson AB

              /usr/share/doc/packages/erlang27-doc/doc/system/documentation.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/documentation.html 2025-11-19 10:45:49.245473292 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/documentation.html 2025-11-19 10:45:49.253473341 +0000 @@ -116,15 +116,15 @@

              Documentation in Erlang is done through the -moduledoc and -doc -attributes. For example:

              -module(arith).
              +attributes. For example:

              -module(arith).
               -moduledoc """
               A module for basic arithmetic.
               """.
               
              --export([add/2]).
              +-export([add/2]).
               
               -doc "Adds two numbers.".
              -add(One, Two) -> One + Two.

              The -moduledoc attribute has to be located before the first -doc attribute +add(One, Two) -> One + Two.

              The -moduledoc attribute has to be located before the first -doc attribute or function declaration. It documents the overall purpose of the module.

              The -doc attribute always precedes the function or attribute it documents. The attributes that can be documented are @@ -144,23 +144,23 @@ Documentation metadata

            It is possible to add metadata to the documentation entry. You do this by adding -a -moduledoc or -doc attribute with a map as argument. For example:

            -module(arith).
            +a -moduledoc or -doc attribute with a map as argument. For example:

            -module(arith).
             -moduledoc """
             A module for basic arithmetic.
             """.
            --moduledoc #{since => "1.0"}.
            +-moduledoc #{since => "1.0"}.
             
            --export([add/2]).
            +-export([add/2]).
             
             -doc "Adds two numbers.".
            --doc(#{since => "1.0"}).
            -add(One, Two) -> One + Two.

            The metadata is used by documentation tools to provide extra information to the +-doc(#{since => "1.0"}). +add(One, Two) -> One + Two.

            The metadata is used by documentation tools to provide extra information to the user. There can be multiple metadata documentation entries, in which case the maps will be merged with the latest taking precedence if there are duplicate keys. Example:

            -doc "Adds two numbers.".
            --doc #{since => "1.0", author => "Joe"}.
            --doc #{since => "2.0"}.
            -add(One, Two) -> One + Two.

            This will result in a metadata entry of #{since => "2.0", author => "Joe"}.

            The keys and values in the metadata map can be any type, but it is recommended +-doc #{since => "1.0", author => "Joe"}. +-doc #{since => "2.0"}. +add(One, Two) -> One + Two.

            This will result in a metadata entry of #{since => "2.0", author => "Joe"}.

            The keys and values in the metadata map can be any type, but it is recommended that only atoms are used for keys and strings for the values.

            @@ -172,8 +172,8 @@ -doc {file, "path/to/doc.md"} to point to the documentation. The path used is relative to the file where the -doc attribute is located. For example:

            %% doc/add.md
             Adds two numbers.

            and

            %% src/arith.erl
            --doc({file, "../doc/add.md"}).
            -add(One, Two) -> One + Two.

            +-doc({file, "../doc/add.md"}). +add(One, Two) -> One + Two.

            @@ -184,7 +184,7 @@ and other diagrams to better show the usage of the module. Instead of writing a long text in the moduledoc attribute, it could be better to break it out into an external page.

            The moduledoc attribute should start with a short paragraph describing the -module and then go into greater details. For example:

            -module(arith).
            +module and then go into greater details. For example:

            -module(arith).
             -moduledoc """
                A module for basic arithmetic.
             
            @@ -207,9 +207,9 @@
             deprecated and what to use instead.

          • format - The format to use for all documentation in this module. The default is text/markdown. It should be written using the mime type -of the format.

          Example:

          -moduledoc {file, "../doc/arith.asciidoc"}.
          --moduledoc #href_anchor"ss">since => "0.1", format => "text/asciidoc"}.
          --moduledoc #{deprecated => "Use the Erlang arithmetic operators instead."}.

          +of the format.

        Example:

        -moduledoc {file, "../doc/arith.asciidoc"}.
        +-moduledoc #href_anchor"ss">since => "0.1", format => "text/asciidoc"}.
        +-moduledoc #{deprecated => "Use the Erlang arithmetic operators instead."}.

        @@ -224,7 +224,7 @@ We use a special number here so that we know that this number comes from this module. """. --opaque number() :: {arith, erlang:number()}. +-opaque number() :: {arith, erlang:number()}. -doc """ Adds two numbers. @@ -235,8 +235,8 @@ 1> arith:add(arith:number(1), arith:number(2)). {number, 3} ``` """. --spec add(number(), number()) -> number(). -add({number, One}, {number, Two}) -> {number, One + Two}.

        +-spec add(number(), number()) -> number(). +add({number, One}, {number, Two}) -> {number, One + Two}.

      @@ -248,12 +248,12 @@ automatically insert this key if there is a -deprecated attribute marking a function as deprecated.

    • equiv => unicode:chardata() | F/A | F(...) - Notes that this function is equivalent to another function in this module. The equivalence can be described using either -Func/Arity, Func(Args) or a unicode string. For example:

      -doc #{equiv => add/3}.
      -add(One, Two) -> add(One, Two, []).
      -add(One, Two, Options) -> ...

      or

      -doc #{equiv => add(One, Two, [])}.
      --spec add(One :: number(), Two :: number()) -> number().
      -add(One, Two) -> add(One, Two, []).
      -add(One, Two, Options) -> ...

      The entry into the EEP-48 doc chunk metadata is +Func/Arity, Func(Args) or a unicode string. For example:

      -doc #{equiv => add/3}.
      +add(One, Two) -> add(One, Two, []).
      +add(One, Two, Options) -> ...

      or

      -doc #{equiv => add(One, Two, [])}.
      +-spec add(One :: number(), Two :: number()) -> number().
      +add(One, Two) -> add(One, Two, []).
      +add(One, Two, Options) -> ...

      The entry into the EEP-48 doc chunk metadata is the value converted to a string.

    • exported => boolean() - A boolean/0 signifying if the entry is exported or not. This value is automatically set by the compiler and should not be set by the user.

    @@ -264,20 +264,20 @@

    The doc signature is a short text shown to describe the function and its arguments. By default it is determined by looking at the names of the arguments in the --spec or function. For example:

    add(One, Two) -> One + Two.
    +-spec or function. For example:

    add(One, Two) -> One + Two.
     
    --spec sub(One :: integer(), Two :: integer()) -> integer().
    -sub(X, Y) -> X - Y.

    will have a signature of add(One, Two) and sub(One, Two).

    For types or callbacks, the signature is derived from the type or callback -specification. For example:

    -type number(Value) :: {number, Value}.
    +-spec sub(One :: integer(), Two :: integer()) -> integer().
    +sub(X, Y) -> X - Y.

    will have a signature of add(One, Two) and sub(One, Two).

    For types or callbacks, the signature is derived from the type or callback +specification. For example:

    -type number(Value) :: {number, Value}.
     %% signature will be `number(Value)`
     
    --opaque number() :: {number, number()}.
    +-opaque number() :: {number, number()}.
     %% signature will be `number()`
     
    --callback increment(In :: number()) -> Out.
    +-callback increment(In :: number()) -> Out.
     %% signature will be `increment(In)`
     
    --callback increment(In) -> Out when In :: number().
    +-callback increment(In) -> Out when In :: number().
     %% signature will be `increment(In)`

    If it is not possible to "easily" figure out a nice signature from the code, the MFA syntax is used instead. For example: add/2, number/1, increment/1

    It is possible to supply a custom signature by placing it as the first line of the -doc attribute. The provided signature must be in the form of a function @@ -286,7 +286,7 @@ Adds two numbers. """. -add(A, B) -> A + B.

    Will create the signature add(One, Two). The signature will be removed from the +add(A, B) -> A + B.

    Will create the signature add(One, Two). The signature will be removed from the documentation string, so in the example above only the text "Adds two numbers" will be part of the documentation. This works for functions, types, and callbacks.

    A pattern has the same structure as a term but can contain unbound variables.

    Example:

    Name1
    -[H|T]
    -{error,Reason}

    Patterns are allowed in clause heads, case expressions, +[H|T] +{error,Reason}

    Patterns are allowed in clause heads, case expressions, receive expressions, and match expressions.

    @@ -182,13 +182,13 @@

    If Pattern1 and Pattern2 are valid patterns, the following is also a valid pattern:

    Pattern1 = Pattern2

    When matched against a term, both Pattern1 and Pattern2 are matched against -the term. The idea behind this feature is to avoid reconstruction of terms.

    Example:

    f({connect,From,To,Number,Options}, To) ->
    -    Signal = {connect,From,To,Number,Options},
    +the term. The idea behind this feature is to avoid reconstruction of terms.

    Example:

    f({connect,From,To,Number,Options}, To) ->
    +    Signal = {connect,From,To,Number,Options},
         ...;
    -f(Signal, To) ->
    -    ignore.

    can instead be written as

    f({connect,_,To,_,_} = Signal, To) ->
    +f(Signal, To) ->
    +    ignore.

    can instead be written as

    f({connect,_,To,_,_} = Signal, To) ->
         ...;
    -f(Signal, To) ->
    +f(Signal, To) ->
         ignore.

    The compound pattern operator does not imply that its operands are matched in any particular order. That means that it is not legal to bind a variable in Pattern1 and use it in Pattern2, or vice versa.

    @@ -197,15 +197,15 @@ String Prefix in Patterns

    -

    When matching strings, the following is a valid pattern:

    f("prefix" ++ Str) -> ...

    This is syntactic sugar for the equivalent, but harder to read:

    f([$p,$r,$e,$f,$i,$x | Str]) -> ...

    +

    When matching strings, the following is a valid pattern:

    f("prefix" ++ Str) -> ...

    This is syntactic sugar for the equivalent, but harder to read:

    f([$p,$r,$e,$f,$i,$x | Str]) -> ...

    Expressions in Patterns

    An arithmetic expression can be used within a pattern if it meets both of the -following two conditions:

    • It uses only numeric or bitwise operators.
    • Its value can be evaluated to a constant when complied.

    Example:

    case {Value, Result} of
    -    {?THRESHOLD+1, ok} -> ...

    +following two conditions:

    • It uses only numeric or bitwise operators.
    • Its value can be evaluated to a constant when complied.

    Example:

    case {Value, Result} of
    +    {?THRESHOLD+1, ok} -> ...

    @@ -213,15 +213,15 @@

    The following matches Pattern against Expr:

    Pattern = Expr

    If the matching succeeds, any unbound variable in the pattern becomes bound and the value of Expr is returned.

    If multiple match operators are applied in sequence, they will be evaluated from -right to left.

    If the matching fails, a badmatch run-time error occurs.

    Examples:

    1> {A, B} = T = {answer, 42}.
    -{answer,42}
    +right to left.

    If the matching fails, a badmatch run-time error occurs.

    Examples:

    1> {A, B} = T = {answer, 42}.
    +{answer,42}
     2> A.
     answer
     3> B.
     42
     4> T.
    -{answer,42}
    -5> {C, D} = [1, 2].
    +{answer,42}
    +5> {C, D} = [1, 2].
     ** exception error: no match of right-hand side value [1,2]

    Because multiple match operators are evaluated from right to left, it means that:

    Pattern1 = Pattern2 = . . . = PatternN = Expression

    is equivalent to:

    Temporary = Expression,
     PatternN = Temporary,
    @@ -243,20 +243,20 @@
     compound pattern matches if all of its constituent patterns match. It is not
     legal for a pattern that is part of a compound pattern to use variables (as keys
     in map patterns or sizes in binary patterns) bound in other sub patterns of the
    -same compound pattern.

    Examples:

    1> fun(#{Key := Value} = #{key := Key}) -> Value end.
    +same compound pattern.

    Examples:

    1> fun(#{Key := Value} = #{key := Key}) -> Value end.
     * 1:7: variable 'Key' is unbound
    -2> F = fun({A, B} = E) -> {E, A + B} end, F({1,2}).
    -{{1,2},3}
    -3> G = fun(<<A:8,B:8>> = <<C:16>>) -> {A, B, C} end, G(<<42,43>>).
    -{42,43,10795}

    The match operator is allowed everywhere an expression is allowed. It is used +2> F = fun({A, B} = E) -> {E, A + B} end, F({1,2}). +{{1,2},3} +3> G = fun(<<A:8,B:8>> = <<C:16>>) -> {A, B, C} end, G(<<42,43>>). +{42,43,10795}

    The match operator is allowed everywhere an expression is allowed. It is used to match the value of an expression to a pattern. If multiple match operators -are applied in sequence, they will be evaluated from right to left.

    Examples:

    1> M = #{key => key2, key2 => value}.
    -#{key => key2,key2 => value}
    -2> f(Key), #{Key := Value} = #{key := Key} = M, Value.
    +are applied in sequence, they will be evaluated from right to left.

    Examples:

    1> M = #{key => key2, key2 => value}.
    +#{key => key2,key2 => value}
    +2> f(Key), #{Key := Value} = #{key := Key} = M, Value.
     value
    -3> f(Key), #{Key := Value} = (#{key := Key} = M), Value.
    +3> f(Key), #{Key := Value} = (#{key := Key} = M), Value.
     value
    -4> f(Key), (#{Key := Value} = #{key := Key}) = M, Value.
    +4> f(Key), (#{Key := Value} = #{key := Key}) = M, Value.
     * 1:12: variable 'Key' is unbound
     5> <<X:Y>> = begin Y = 8, <<42:8>> end, X.
     42

    The expression at prompt 2> first matches the value of variable M against @@ -280,22 +280,22 @@ Function Calls -

    ExprF(Expr1,...,ExprN)
    -ExprM:ExprF(Expr1,...,ExprN)

    In the first form of function calls, ExprM:ExprF(Expr1,...,ExprN), each of +

    ExprF(Expr1,...,ExprN)
    +ExprM:ExprF(Expr1,...,ExprN)

    In the first form of function calls, ExprM:ExprF(Expr1,...,ExprN), each of ExprM and ExprF must be an atom or an expression that evaluates to an atom. The function is said to be called by using the fully qualified function name. -This is often referred to as a remote or external function call.

    Example:

    lists:keyfind(Name, 1, List)

    In the second form of function calls, ExprF(Expr1,...,ExprN), ExprF must be +This is often referred to as a remote or external function call.

    Example:

    lists:keyfind(Name, 1, List)

    In the second form of function calls, ExprF(Expr1,...,ExprN), ExprF must be an atom or evaluate to a fun.

    If ExprF is an atom, the function is said to be called by using the implicitly qualified function name. If the function ExprF is locally defined, it is called. Alternatively, if ExprF is explicitly imported from the M module, M:ExprF(Expr1,...,ExprN) is called. If ExprF is neither declared locally nor explicitly imported, ExprF must be the name of an automatically -imported BIF.

    Examples:

    handle(Msg, State)
    -spawn(m, init, [])

    Examples where ExprF is a fun:

    1> Fun1 = fun(X) -> X+1 end,
    -Fun1(3).
    +imported BIF.

    Examples:

    handle(Msg, State)
    +spawn(m, init, [])

    Examples where ExprF is a fun:

    1> Fun1 = fun(X) -> X+1 end,
    +Fun1(3).
     4
    -2> fun lists:append/2([1,2], [3,4]).
    -[1,2,3,4]
    +2> fun lists:append/2([1,2], [3,4]).
    +[1,2,3,4]
     3>

    Notice that when calling a local function, there is a difference between using the implicitly or fully qualified function name. The latter always refers to the latest version of the module. See @@ -320,32 +320,32 @@ (ERTS version 5.8) and have an implicitly qualified call to that function in your code, you either need to explicitly remove the auto-import using a compiler directive, or replace the call with a fully qualified function call. Otherwise -you get a compilation error. See the following example:

    -export([length/1,f/1]).
    +you get a compilation error. See the following example:

    -export([length/1,f/1]).
     
    --compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
    +-compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
     
    -length([]) ->
    +length([]) ->
         0;
    -length([H|T]) ->
    -    1 + length(T). %% Calls the local function length/1
    +length([H|T]) ->
    +    1 + length(T). %% Calls the local function length/1
     
    -f(X) when erlang:length(X) > 3 -> %% Calls erlang:length/1,
    +f(X) when erlang:length(X) > 3 -> %% Calls erlang:length/1,
                                       %% which is allowed in guards
         long.

    The same logic applies to explicitly imported functions from other modules, as to locally defined functions. It is not allowed to both import a function from -another module and have the function declared in the module at the same time:

    -export([f/1]).
    +another module and have the function declared in the module at the same time:

    -export([f/1]).
     
    --compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
    +-compile({no_auto_import,[length/1]}). % erlang:length/1 no longer autoimported
     
    --import(mod,[length/1]).
    +-import(mod,[length/1]).
     
    -f(X) when erlang:length(X) > 33 -> %% Calls erlang:length/1,
    +f(X) when erlang:length(X) > 33 -> %% Calls erlang:length/1,
                                        %% which is allowed in guards
     
    -    erlang:length(X);              %% Explicit call to erlang:length in body
    +    erlang:length(X);              %% Explicit call to erlang:length in body
     
    -f(X) ->
    -    length(X).                     %% mod:length/1 is called

    For auto-imported BIFs added in Erlang/OTP R14A and thereafter, overriding the +f(X) -> + length(X). %% mod:length/1 is called

    For auto-imported BIFs added in Erlang/OTP R14A and thereafter, overriding the name with a local function or explicit import is always allowed. However, if the -compile({no_auto_import,[F/A]) directive is not used, the compiler issues a warning whenever the function is called in the module using the implicitly @@ -365,7 +365,7 @@ sequence GuardSeq that evaluates to true is found. Then the corresponding /usr/share/doc/packages/erlang27-doc/doc/system/features.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/features.html 2025-11-19 10:45:49.609475558 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/features.html 2025-11-19 10:45:49.613475583 +0000 @@ -239,7 +239,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/funs.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/funs.html 2025-11-19 10:45:49.649475807 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/funs.html 2025-11-19 10:45:49.649475807 +0000 @@ -121,14 +121,14 @@ map -

    The following function, double, doubles every element in a list:

    double([H|T]) -> [2*H|double(T)];
    -double([])    -> [].

    Hence, the argument entered as input is doubled as follows:

    > double([1,2,3,4]).
    -[2,4,6,8]

    The following function, add_one, adds one to every element in a list:

    add_one([H|T]) -> [H+1|add_one(T)];
    -add_one([])    -> [].

    The functions double and add_one have a similar structure. This can be used -by writing a function map that expresses this similarity:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    -map(F, [])    -> [].

    The functions double and add_one can now be expressed in terms of map as -follows:

    double(L)  -> map(fun(X) -> 2*X end, L).
    -add_one(L) -> map(fun(X) -> 1 + X end, L).

    map(F, List) is a function that takes a function F and a list L as +

    The following function, double, doubles every element in a list:

    double([H|T]) -> [2*H|double(T)];
    +double([])    -> [].

    Hence, the argument entered as input is doubled as follows:

    > double([1,2,3,4]).
    +[2,4,6,8]

    The following function, add_one, adds one to every element in a list:

    add_one([H|T]) -> [H+1|add_one(T)];
    +add_one([])    -> [].

    The functions double and add_one have a similar structure. This can be used +by writing a function map that expresses this similarity:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    +map(F, [])    -> [].

    The functions double and add_one can now be expressed in terms of map as +follows:

    double(L)  -> map(fun(X) -> 2*X end, L).
    +add_one(L) -> map(fun(X) -> 1 + X end, L).

    map(F, List) is a function that takes a function F and a list L as arguments and returns a new list, obtained by applying F to each of the elements in L.

    The process of abstracting out the common features of a number of different programs is called procedural abstraction. Procedural abstraction can be used @@ -142,21 +142,21 @@ foreach

    This section illustrates procedural abstraction. Initially, the following two -examples are written as conventional functions.

    This function prints all elements of a list onto a stream:

    print_list(Stream, [H|T]) ->
    -    io:format(Stream, "~p~n", [H]),
    -    print_list(Stream, T);
    -print_list(Stream, []) ->
    -    true.

    This function broadcasts a message to a list of processes:

    broadcast(Msg, [Pid|Pids]) ->
    +examples are written as conventional functions.

    This function prints all elements of a list onto a stream:

    print_list(Stream, [H|T]) ->
    +    io:format(Stream, "~p~n", [H]),
    +    print_list(Stream, T);
    +print_list(Stream, []) ->
    +    true.

    This function broadcasts a message to a list of processes:

    broadcast(Msg, [Pid|Pids]) ->
         Pid ! Msg,
    -    broadcast(Msg, Pids);
    -broadcast(_, []) ->
    +    broadcast(Msg, Pids);
    +broadcast(_, []) ->
         true.

    These two functions have a similar structure. They both iterate over a list and do something to each element in the list. The "something" is passed on as an -extra argument to the function that does this.

    The function foreach expresses this similarity:

    foreach(F, [H|T]) ->
    -    F(H),
    -    foreach(F, T);
    -foreach(F, []) ->
    -    ok.

    Using the function foreach, the function print_list becomes:

    foreach(fun(H) -> io:format(S, "~p~n",[H]) end, L)

    Using the function foreach, the function broadcast becomes:

    foreach(fun(Pid) -> Pid ! M end, L)

    foreach is evaluated for its side-effect and not its value. foreach(Fun ,L) +extra argument to the function that does this.

    The function foreach expresses this similarity:

    foreach(F, [H|T]) ->
    +    F(H),
    +    foreach(F, T);
    +foreach(F, []) ->
    +    ok.

    Using the function foreach, the function print_list becomes:

    foreach(fun(H) -> io:format(S, "~p~n",[H]) end, L)

    Using the function foreach, the function broadcast becomes:

    foreach(fun(Pid) -> Pid ! M end, L)

    foreach is evaluated for its side-effect and not its value. foreach(Fun ,L) calls Fun(X) for each element X in L and the processing occurs in the order that the elements were defined in L. map does not define the order in which its elements are processed.

    @@ -166,24 +166,24 @@ Syntax of Funs

    Funs are written with the following syntax (see -Fun Expressions for full description):

    F = fun (Arg1, Arg2, ... ArgN) ->
    +Fun Expressions for full description):

    F = fun (Arg1, Arg2, ... ArgN) ->
             ...
         end

    This creates an anonymous function of N arguments and binds it to the variable F.

    Another function, FunctionName, written in the same module, can be passed as an argument, using the following syntax:

    F = fun FunctionName/Arity

    With this form of function reference, the function that is referred to does not need to be exported from the module.

    It is also possible to refer to a function defined in a different module, with -the following syntax:

    F = fun Module:FunctionName/Arity

    In this case, the function must be exported from the module in question.

    The following program illustrates the different ways of creating funs:

    -module(fun_test).
    --export([t1/0, t2/0]).
    --import(lists, [map/2]).
    -
    -t1() -> map(fun(X) -> 2 * X end, [1,2,3,4,5]).
    -
    -t2() -> map(fun double/1, [1,2,3,4,5]).
    -
    -double(X) -> X * 2.

    The fun F can be evaluated with the following syntax:

    F(Arg1, Arg2, ..., Argn)

    To check whether a term is a fun, use the test -is_function/1 in a guard.

    Example:

    f(F, Args) when is_function(F) ->
    -   apply(F, Args);
    -f(N, _) when is_integer(N) ->
    +the following syntax:

    F = fun Module:FunctionName/Arity

    In this case, the function must be exported from the module in question.

    The following program illustrates the different ways of creating funs:

    -module(fun_test).
    +-export([t1/0, t2/0]).
    +-import(lists, [map/2]).
    +
    +t1() -> map(fun(X) -> 2 * X end, [1,2,3,4,5]).
    +
    +t2() -> map(fun double/1, [1,2,3,4,5]).
    +
    +double(X) -> X * 2.

    The fun F can be evaluated with the following syntax:

    F(Arg1, Arg2, ..., Argn)

    To check whether a term is a fun, use the test +is_function/1 in a guard.

    Example:

    f(F, Args) when is_function(F) ->
    +   apply(F, Args);
    +f(N, _) when is_integer(N) ->
        N.

    Funs are a distinct type. The BIFs erlang:fun_info/1,2 can be used to retrieve information about a fun, and the BIF erlang:fun_to_list/1 returns a textual representation of a fun. The check_process_code/2 @@ -196,18 +196,18 @@

    The scope rules for variables that occur in funs are as follows:

    • All variables that occur in the head of a fun are assumed to be "fresh" variables.
    • Variables that are defined before the fun, and that occur in function calls or -guard tests within the fun, have the values they had outside the fun.
    • Variables cannot be exported from a fun.

    The following examples illustrate these rules:

    print_list(File, List) ->
    -    {ok, Stream} = file:open(File, write),
    -    foreach(fun(X) -> io:format(Stream,"~p~n",[X]) end, List),
    -    file:close(Stream).

    Here, the variable X, defined in the head of the fun, is a new variable. The +guard tests within the fun, have the values they had outside the fun.

  • Variables cannot be exported from a fun.
  • The following examples illustrate these rules:

    print_list(File, List) ->
    +    {ok, Stream} = file:open(File, write),
    +    foreach(fun(X) -> io:format(Stream,"~p~n",[X]) end, List),
    +    file:close(Stream).

    Here, the variable X, defined in the head of the fun, is a new variable. The variable Stream, which is used within the fun, gets its value from the file:open line.

    As any variable that occurs in the head of a fun is considered a new variable, -it is equally valid to write as follows:

    print_list(File, List) ->
    -    {ok, Stream} = file:open(File, write),
    -    foreach(fun(File) ->
    -                io:format(Stream,"~p~n",[File])
    -            end, List),
    -    file:close(Stream).

    Here, File is used as the new variable instead of X. This is not so wise +it is equally valid to write as follows:

    print_list(File, List) ->
    +    {ok, Stream} = file:open(File, write),
    +    foreach(fun(File) ->
    +                io:format(Stream,"~p~n",[File])
    +            end, List),
    +    file:close(Stream).

    Here, File is used as the new variable instead of X. This is not so wise because code in the fun body cannot refer to the variable File, which is defined outside of the fun. Compiling this example gives the following diagnostic:

    ./FileName.erl:Line: Warning: variable 'File'
    @@ -216,20 +216,20 @@
     pattern matching operations must be moved into guard expressions and cannot be
     written in the head of the fun. For example, you might write the following code
     if you intend the first clause of F to be evaluated when the value of its
    -argument is Y:

    f(...) ->
    +argument is Y:

    f(...) ->
         Y = ...
    -    map(fun(X) when X == Y ->
    +    map(fun(X) when X == Y ->
                  ;
    -           (_) ->
    +           (_) ->
                  ...
    -        end, ...)
    -    ...

    instead of writing the following code:

    f(...) ->
    +        end, ...)
    +    ...

    instead of writing the following code:

    f(...) ->
         Y = ...
    -    map(fun(Y) ->
    +    map(fun(Y) ->
                  ;
    -           (_) ->
    +           (_) ->
                  ...
    -        end, ...)
    +        end, ...)
         ...

    @@ -243,58 +243,58 @@ map

    -

    lists:map/2 takes a function of one argument and a list of terms:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    -map(F, [])    -> [].

    It returns the list obtained by applying the function to every argument in the +

    lists:map/2 takes a function of one argument and a list of terms:

    map(F, [H|T]) -> [F(H)|map(F, T)];
    +map(F, [])    -> [].

    It returns the list obtained by applying the function to every argument in the list.

    When a new fun is defined in the shell, the value of the fun is printed as -Fun#<erl_eval>:

    > Double = fun(X) -> 2 * X end.
    +Fun#<erl_eval>:

    > Double = fun(X) -> 2 * X end.
     #Fun<erl_eval.6.72228031>
    -> lists:map(Double, [1,2,3,4,5]).
    -[2,4,6,8,10]

    +> lists:map(Double, [1,2,3,4,5]). +[2,4,6,8,10]

    any

    -

    lists:any/2 takes a predicate P of one argument and a list of terms:

    any(Pred, [H|T]) ->
    -    case Pred(H) of
    +

    lists:any/2 takes a predicate P of one argument and a list of terms:

    any(Pred, [H|T]) ->
    +    case Pred(H) of
             true  ->  true;
    -        false ->  any(Pred, T)
    +        false ->  any(Pred, T)
         end;
    -any(Pred, []) ->
    +any(Pred, []) ->
         false.

    A predicate is a function that returns true or false. any is true if there is a term X in the list such that P(X) is true.

    A predicate Big(X) is defined, which is true if its argument is greater that -10:

    > Big =  fun(X) -> if X > 10 -> true; true -> false end end.
    +10:

    > Big =  fun(X) -> if X > 10 -> true; true -> false end end.
     #Fun<erl_eval.6.72228031>
    -> lists:any(Big, [1,2,3,4]).
    +> lists:any(Big, [1,2,3,4]).
     false
    -> lists:any(Big, [1,2,3,12,5]).
    +> lists:any(Big, [1,2,3,12,5]).
     true

    /usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 2025-11-19 10:45:49.681476007 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 2025-11-19 10:45:49.677475981 +0000 @@ -161,40 +161,40 @@

    An example of a simple server written in plain Erlang is provided in Overview. The server can be reimplemented using -gen_server, resulting in this callback module:

    -module(ch3).
    --behaviour(gen_server).
    +gen_server, resulting in this callback module:

    -module(ch3).
    +-behaviour(gen_server).
     
    --export([start_link/0]).
    --export([alloc/0, free/1]).
    --export([init/1, handle_call/3, handle_cast/2]).
    +-export([start_link/0]).
    +-export([alloc/0, free/1]).
    +-export([init/1, handle_call/3, handle_cast/2]).
     
    -start_link() ->
    -    gen_server:start_link({local, ch3}, ch3, [], []).
    +start_link() ->
    +    gen_server:start_link({local, ch3}, ch3, [], []).
     
    -alloc() ->
    -    gen_server:call(ch3, alloc).
    +alloc() ->
    +    gen_server:call(ch3, alloc).
     
    -free(Ch) ->
    -    gen_server:cast(ch3, {free, Ch}).
    +free(Ch) ->
    +    gen_server:cast(ch3, {free, Ch}).
     
    -init(_Args) ->
    -    {ok, channels()}.
    +init(_Args) ->
    +    {ok, channels()}.
     
    -handle_call(alloc, _From, Chs) ->
    -    {Ch, Chs2} = alloc(Chs),
    -    {reply, Ch, Chs2}.
    +handle_call(alloc, _From, Chs) ->
    +    {Ch, Chs2} = alloc(Chs),
    +    {reply, Ch, Chs2}.
     
    -handle_cast({free, Ch}, Chs) ->
    -    Chs2 = free(Ch, Chs),
    -    {noreply, Chs2}.

    The code is explained in the next sections.

    +handle_cast({free, Ch}, Chs) -> + Chs2 = free(Ch, Chs), + {noreply, Chs2}.

    The code is explained in the next sections.

    Starting a Gen_Server

    In the example in the previous section, gen_server is started by calling -ch3:start_link():

    start_link() ->
    -    gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}

    start_link/0 calls function gen_server:start_link/4. This function +ch3:start_link():

    start_link() ->
    +    gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}

    start_link/0 calls function gen_server:start_link/4. This function spawns and links to a new process, a gen_server.

    • The first argument, {local, ch3}, specifies the name. The gen_server is then locally registered as ch3.

      If the name is omitted, the gen_server is not registered. Instead its pid must be used. The name can also be given as {global, Name}, in which case @@ -208,8 +208,8 @@ for the available options.

    If name registration succeeds, the new gen_server process calls the callback function ch3:init([]). init is expected to return {ok, State}, where State is the internal state of the gen_server. In this case, the state is -the available channels.

    init(_Args) ->
    -    {ok, channels()}.

    gen_server:start_link/4 is synchronous. It does not return until the +the available channels.

    init(_Args) ->
    +    {ok, channels()}.

    gen_server:start_link/4 is synchronous. It does not return until the gen_server has been initialized and is ready to receive requests.

    gen_server:start_link/4 must be used if the gen_server is part of a supervision tree, meaning that it was started by a supervisor. There is another function, gen_server:start/4, to start a standalone @@ -225,9 +225,9 @@ When the request is received, the gen_server calls handle_call(Request, From, State), which is expected to return a tuple {reply,Reply,State1}. Reply is the reply that is to be sent back -to the client, and State1 is a new value for the state of the gen_server.

    handle_call(alloc, _From, Chs) ->
    -    {Ch, Chs2} = alloc(Chs),
    -    {reply, Ch, Chs2}.

    In this case, the reply is the allocated channel Ch and the new state is the +to the client, and State1 is a new value for the state of the gen_server.

    handle_call(alloc, _From, Chs) ->
    +    {Ch, Chs2} = alloc(Chs),
    +    {reply, Ch, Chs2}.

    In this case, the reply is the allocated channel Ch and the new state is the set of remaining available channels Chs2.

    Thus, the call ch3:alloc() returns the allocated channel Ch and the gen_server then waits for new requests, now with an updated list of available channels.

    @@ -236,13 +236,13 @@ Asynchronous Requests - Cast

    -

    The asynchronous request free(Ch) is implemented using gen_server:cast/2:

    free(Ch) ->
    -    gen_server:cast(ch3, {free, Ch}).

    ch3 is the name of the gen_server. {free, Ch} is the actual request.

    The request is made into a message and sent to the gen_server. +

    The asynchronous request free(Ch) is implemented using gen_server:cast/2:

    free(Ch) ->
    +    gen_server:cast(ch3, {free, Ch}).

    ch3 is the name of the gen_server. {free, Ch} is the actual request.

    The request is made into a message and sent to the gen_server. cast, and thus free, then returns ok.

    When the request is received, the gen_server calls handle_cast(Request, State), which is expected to return a tuple -{noreply,State1}. State1 is a new value for the state of the gen_server.

    handle_cast({free, Ch}, Chs) ->
    -    Chs2 = free(Ch, Chs),
    -    {noreply, Chs2}.

    In this case, the new state is the updated list of available channels Chs2. +{noreply,State1}. State1 is a new value for the state of the gen_server.

    handle_cast({free, Ch}, Chs) ->
    +    Chs2 = free(Ch, Chs),
    +    {noreply, Chs2}.

    In this case, the new state is the updated list of available channels Chs2. The gen_server is now ready for new requests.

    @@ -261,15 +261,15 @@ set in the supervisor.

    If it is necessary to clean up before termination, the shutdown strategy must be a time-out value and the gen_server must be set to trap exit signals in function init. When ordered to shutdown, the gen_server then calls -the callback function terminate(shutdown, State):

    init(Args) ->
    +the callback function terminate(shutdown, State):

    init(Args) ->
         ...,
    -    process_flag(trap_exit, true),
    +    process_flag(trap_exit, true),
         ...,
    -    {ok, State}.
    +    {ok, State}.
     
     ...
     
    -terminate(shutdown, State) ->
    +terminate(shutdown, State) ->
         %% Code for cleaning up here
         ...
         ok.

    @@ -280,21 +280,21 @@

    If the gen_server is not part of a supervision tree, a stop function can be useful, for example:

    ...
    -export([stop/0]).
    +export([stop/0]).
     ...
     
    -stop() ->
    -    gen_server:cast(ch3, stop).
    +stop() ->
    +    gen_server:cast(ch3, stop).
     ...
     
    -handle_cast(stop, State) ->
    -    {stop, normal, State};
    -handle_cast({free, Ch}, State) ->
    +handle_cast(stop, State) ->
    +    {stop, normal, State};
    +handle_cast({free, Ch}, State) ->
         ...
     
     ...
     
    -terminate(normal, State) ->
    +terminate(normal, State) ->
         ok.

    The callback function handling the stop request returns a tuple {stop,normal,State1}, where normal specifies that it is a normal termination and State1 is a new value for the state @@ -309,13 +309,13 @@ the callback function handle_info(Info, State) must be implemented to handle them. Examples of other messages are exit messages, if the gen_server is linked to other processes than the supervisor -and it is trapping exit signals.

    handle_info({'EXIT', Pid, Reason}, State) ->
    +and it is trapping exit signals.

    handle_info({'EXIT', Pid, Reason}, State) ->
         %% Code to handle exits here.
         ...
    -    {noreply, State1}.

    The final function to implement is code_change/3:

    code_change(OldVsn, State, Extra) ->
    +    {noreply, State1}.

    The final function to implement is code_change/3:

    code_change(OldVsn, State, Extra) ->
         %% Code to convert state (and more) during code change.
         ...
    -    {ok, NewState}.
    +
    {ok, NewState}.
    @@ -366,7 +366,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html 2025-11-19 10:45:49.705476156 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html 2025-11-19 10:45:49.705476156 +0000 @@ -185,7 +185,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html 2025-11-19 10:45:49.729476305 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html 2025-11-19 10:45:49.729476305 +0000 @@ -165,16 +165,16 @@ Specifying Included Applications

    Which applications to include is defined by the included_applications key in -the .app file:

    {application, prim_app,
    - [{description, "Tree application"},
    -  {vsn, "1"},
    -  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    -  {registered, [prim_app_server]},
    -  {included_applications, [incl_app]},
    -  {applications, [kernel, stdlib, sasl]},
    -  {mod, {prim_app_cb,[]}},
    -  {env, [{file, "/usr/local/log"}]}
    - ]}.

    +the .app file:

    {application, prim_app,
    + [{description, "Tree application"},
    +  {vsn, "1"},
    +  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    +  {registered, [prim_app_server]},
    +  {included_applications, [incl_app]},
    +  {applications, [kernel, stdlib, sasl]},
    +  {mod, {prim_app_cb,[]}},
    +  {env, [{file, "/usr/local/log"}]}
    + ]}.

    @@ -188,27 +188,27 @@ term.

    The value of the mod key of the including application must be set to {application_starter,[Module,StartArgs]}, where Module as usual is the application callback module. StartArgs is a term provided as argument to the -callback function Module:start/2:

    {application, prim_app,
    - [{description, "Tree application"},
    -  {vsn, "1"},
    -  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    -  {registered, [prim_app_server]},
    -  {included_applications, [incl_app]},
    -  {start_phases, [{init,[]}, {go,[]}]},
    -  {applications, [kernel, stdlib, sasl]},
    -  {mod, {application_starter,[prim_app_cb,[]]}},
    -  {env, [{file, "/usr/local/log"}]}
    - ]}.
    -
    -{application, incl_app,
    - [{description, "Included application"},
    -  {vsn, "1"},
    -  {modules, [incl_app_cb, incl_app_sup, incl_app_server]},
    -  {registered, []},
    -  {start_phases, [{go,[]}]},
    -  {applications, [kernel, stdlib, sasl]},
    -  {mod, {incl_app_cb,[]}}
    - ]}.

    When starting a primary application with included applications, the primary +callback function Module:start/2:

    {application, prim_app,
    + [{description, "Tree application"},
    +  {vsn, "1"},
    +  {modules, [prim_app_cb, prim_app_sup, prim_app_server]},
    +  {registered, [prim_app_server]},
    +  {included_applications, [incl_app]},
    +  {start_phases, [{init,[]}, {go,[]}]},
    +  {applications, [kernel, stdlib, sasl]},
    +  {mod, {application_starter,[prim_app_cb,[]]}},
    +  {env, [{file, "/usr/local/log"}]}
    + ]}.
    +
    +{application, incl_app,
    + [{description, "Included application"},
    +  {vsn, "1"},
    +  {modules, [incl_app_cb, incl_app_sup, incl_app_server]},
    +  {registered, []},
    +  {start_phases, [{go,[]}]},
    +  {applications, [kernel, stdlib, sasl]},
    +  {mod, {incl_app_cb,[]}}
    + ]}.

    When starting a primary application with included applications, the primary application is started the normal way, that is:

    • The application controller creates an application master for the application
    • The application master calls Module:start(normal, StartArgs) to start the top supervisor.

    Then, for the primary application and each included application in top-down, left-to-right order, the application master calls @@ -221,11 +221,11 @@ of specified phases must be a subset of the set of phases specified for the primary application.

    When starting prim_app as defined above, the application controller calls the following callback functions before application:start(prim_app) returns a -value:

    application:start(prim_app)
    - => prim_app_cb:start(normal, [])
    - => prim_app_cb:start_phase(init, normal, [])
    - => prim_app_cb:start_phase(go, normal, [])
    - => incl_app_cb:start_phase(go, normal, [])
    +value:

    application:start(prim_app)
    + => prim_app_cb:start(normal, [])
    + => prim_app_cb:start_phase(init, normal, [])
    + => prim_app_cb:start_phase(go, normal, [])
    + => incl_app_cb:start_phase(go, normal, [])
     ok
    @@ -277,7 +277,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html 2025-11-19 10:45:49.753476455 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html 2025-11-19 10:45:49.761476504 +0000 @@ -488,7 +488,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html 2025-11-19 10:45:49.785476654 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html 2025-11-19 10:45:49.789476679 +0000 @@ -299,7 +299,7 @@

    and sometimes

    $ cd $ERL_TOP
     $ make local_setup
     

    So now when you run $ERL_TOP/erl.exe, you should have a debug compiled -emulator, which you will see if you do a:

    1> erlang:system_info(system_version).

    in the erlang shell. If the returned string contains [debug], you +emulator, which you will see if you do a:

    1> erlang:system_info(system_version).

    in the erlang shell. If the returned string contains [debug], you got a debug compiled emulator.

    To hack the erlang libraries, you simply do a make opt in the specific "applications" directory, like:

    $ cd $ERL_TOP/lib/stdlib
     $ make opt
    @@ -322,11 +322,11 @@
     

    Remember that:

    • Windows specific C-code goes in the $ERL_TOP/erts/emulator/sys/win32, $ERL_TOP/erts/emulator/drivers/win32 or $ERL_TOP/erts/etc/win32.

    • Windows specific erlang code should be used conditionally and the host OS tested in runtime, the exactly same beam files should be -distributed for every platform! So write code like:

      case os:type() of
      -    {win32,_} ->
      -        do_windows_specific();
      +distributed for every platform! So write code like:

      case os:type() of
      +    {win32,_} ->
      +        do_windows_specific();
           Other ->
      -        do_fallback_or_exit()
      +        do_fallback_or_exit()
       end,

    That's basically all you need to get going.

    @@ -435,7 +435,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/install.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/install.html 2025-11-19 10:45:49.821476878 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/install.html 2025-11-19 10:45:49.829476928 +0000 @@ -661,7 +661,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html 2025-11-19 10:45:49.853477077 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html 2025-11-19 10:45:49.853477077 +0000 @@ -175,7 +175,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html 2025-11-19 10:45:49.877477227 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html 2025-11-19 10:45:49.885477276 +0000 @@ -121,25 +121,25 @@ Simple Examples

    -

    This section starts with a simple example, showing a generator and a filter:

    > [X || X <- [1,2,a,3,4,b,5,6], X > 3].
    -[a,4,b,5,6]

    This is read as follows: The list of X such that X is taken from the list +

    This section starts with a simple example, showing a generator and a filter:

    > [X || X <- [1,2,a,3,4,b,5,6], X > 3].
    +[a,4,b,5,6]

    This is read as follows: The list of X such that X is taken from the list [1,2,a,...] and X is greater than 3.

    The notation X <- [1,2,a,...] is a generator and the expression X > 3 is a filter.

    An additional filter, is_integer(X), can be added to -restrict the result to integers:

    > [X || X <- [1,2,a,3,4,b,5,6], is_integer(X), X > 3].
    -[4,5,6]

    Generators can be combined. For example, the Cartesian product of two lists can -be written as follows:

    > [{X, Y} || X <- [1,2,3], Y <- [a,b]].
    -[{1,a},{1,b},{2,a},{2,b},{3,a},{3,b}]

    +restrict the result to integers:

    > [X || X <- [1,2,a,3,4,b,5,6], is_integer(X), X > 3].
    +[4,5,6]

    Generators can be combined. For example, the Cartesian product of two lists can +be written as follows:

    > [{X, Y} || X <- [1,2,3], Y <- [a,b]].
    +[{1,a},{1,b},{2,a},{2,b},{3,a},{3,b}]

    Quick Sort

    -

    The well-known quick sort routine can be written as follows:

    sort([]) -> [];
    -sort([_] = L) -> L;
    -sort([Pivot|T]) ->
    -    sort([ X || X <- T, X < Pivot]) ++
    -    [Pivot] ++
    -    sort([ X || X <- T, X >= Pivot]).

    The expression [X || X <- T, X < Pivot] is the list of all elements in T +

    The well-known quick sort routine can be written as follows:

    sort([]) -> [];
    +sort([_] = L) -> L;
    +sort([Pivot|T]) ->
    +    sort([ X || X <- T, X < Pivot]) ++
    +    [Pivot] ++
    +    sort([ X || X <- T, X >= Pivot]).

    The expression [X || X <- T, X < Pivot] is the list of all elements in T that are less than Pivot.

    [X || X <- T, X >= Pivot] is the list of all elements in T that are greater than or equal to Pivot.

    With the algorithm above, a list is sorted as follows:

    • A list with zero or one element is trivially sorted.
    • For lists with more than one element:
      1. The first element in the list is isolated as the pivot element.
      2. The remaining list is partitioned into two sublists, such that:
      • The first sublist contains all elements that are smaller than the pivot element.
      • The second sublist contains all elements that are greater than or equal to @@ -155,11 +155,11 @@ Permutations -

        The following example generates all permutations of the elements in a list:

        perms([]) -> [[]];
        -perms(L)  -> [[H|T] || H <- L, T <- perms(L--[H])].

        This takes H from L in all possible ways. The result is the set of all lists +

        The following example generates all permutations of the elements in a list:

        perms([]) -> [[]];
        +perms(L)  -> [[H|T] || H <- L, T <- perms(L--[H])].

        This takes H from L in all possible ways. The result is the set of all lists [H|T], where T is the set of all possible permutations of L, with H -removed:

        > perms([b,u,g]).
        -[[b,u,g],[b,g,u],[u,b,g],[u,g,b],[g,b,u],[g,u,b]]

        +removed:

        > perms([b,u,g]).
        +[[b,u,g],[b,g,u],[u,b,g],[u,g,b],[g,b,u],[g,u,b]]

        @@ -168,47 +168,47 @@

        Pythagorean triplets are sets of integers {A,B,C} such that A**2 + B**2 = C**2.

        The function pyth(N) generates a list of all integers {A,B,C} such that A**2 + B**2 = C**2 and where the sum of the sides is equal to, or less than, -N:

        pyth(N) ->
        -    [ {A,B,C} ||
        -        A <- lists:seq(1,N),
        -        B <- lists:seq(1,N),
        -        C <- lists:seq(1,N),
        +N:

        pyth(N) ->
        +    [ {A,B,C} ||
        +        A <- lists:seq(1,N),
        +        B <- lists:seq(1,N),
        +        C <- lists:seq(1,N),
                 A+B+C =< N,
                 A*A+B*B == C*C
        -    ].
        > pyth(3).
        -[].
        -> pyth(11).
        -[].
        -> pyth(12).
        -[{3,4,5},{4,3,5}]
        -> pyth(50).
        -[{3,4,5},
        - {4,3,5},
        - {5,12,13},
        - {6,8,10},
        - {8,6,10},
        - {8,15,17},
        - {9,12,15},
        - {12,5,13},
        - {12,9,15},
        - {12,16,20},
        - {15,8,17},
        - {16,12,20}]

        The following code reduces the search space and is more efficient:

        pyth1(N) ->
        -   [{A,B,C} ||
        -       A <- lists:seq(1,N-2),
        -       B <- lists:seq(A+1,N-1),
        -       C <- lists:seq(B+1,N),
        +    ].
        > pyth(3).
        +[].
        +> pyth(11).
        +[].
        +> pyth(12).
        +[{3,4,5},{4,3,5}]
        +> pyth(50).
        +[{3,4,5},
        + {4,3,5},
        + {5,12,13},
        + {6,8,10},
        + {8,6,10},
        + {8,15,17},
        + {9,12,15},
        + {12,5,13},
        + {12,9,15},
        + {12,16,20},
        + {15,8,17},
        + {16,12,20}]

        The following code reduces the search space and is more efficient:

        pyth1(N) ->
        +   [{A,B,C} ||
        +       A <- lists:seq(1,N-2),
        +       B <- lists:seq(A+1,N-1),
        +       C <- lists:seq(B+1,N),
                A+B+C =< N,
        -       A*A+B*B == C*C ].

        + A*A+B*B == C*C ].

        Simplifications With List Comprehensions

        As an example, list comprehensions can be used to simplify some of the functions -in lists.erl:

        append(L)   ->  [X || L1 <- L, X <- L1].
        -map(Fun, L) -> [Fun(X) || X <- L].
        -filter(Pred, L) -> [X || X <- L, Pred(X)].

        +in lists.erl:

        append(L)   ->  [X || L1 <- L, X <- L1].
        +map(Fun, L) -> [Fun(X) || X <- L].
        +filter(Pred, L) -> [X || X <- L, Pred(X)].

        @@ -220,20 +220,20 @@ which selects certain elements from a list of tuples. Suppose you write select(X, L) -> [Y || {X, Y} <- L]. with the intention of extracting all tuples from L, where the first item is X.

        Compiling this gives the following diagnostic:

        ./FileName.erl:Line: Warning: variable 'X' shadowed in generate

        This diagnostic warns that the variable X in the pattern is not the same as -the variable X that occurs in the function head.

        Evaluating select gives the following result:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        -[1,2,3,7]

        This is not the wanted result. To achieve the desired effect, select must be -written as follows:

        select(X, L) ->  [Y || {X1, Y} <- L, X == X1].

        The generator now contains unbound variables and the test has been moved into -the filter.

        This now works as expected:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        -[2,7]

        Also note that a variable in a generator pattern will shadow a variable with the -same name bound in a previous generator pattern. For example:

        > [{X,Y} || X <- [1,2,3], X=Y <- [a,b,c]].
        -[{a,a},{b,b},{c,c},{a,a},{b,b},{c,c},{a,a},{b,b},{c,c}]

        A consequence of the rules for importing variables into a list comprehensions is +the variable X that occurs in the function head.

        Evaluating select gives the following result:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        +[1,2,3,7]

        This is not the wanted result. To achieve the desired effect, select must be +written as follows:

        select(X, L) ->  [Y || {X1, Y} <- L, X == X1].

        The generator now contains unbound variables and the test has been moved into +the filter.

        This now works as expected:

        > select(b,[{a,1},{b,2},{c,3},{b,7}]).
        +[2,7]

        Also note that a variable in a generator pattern will shadow a variable with the +same name bound in a previous generator pattern. For example:

        > [{X,Y} || X <- [1,2,3], X=Y <- [a,b,c]].
        +[{a,a},{b,b},{c,c},{a,a},{b,b},{c,c},{a,a},{b,b},{c,c}]

        A consequence of the rules for importing variables into a list comprehensions is that certain pattern matching operations must be moved into the filters and -cannot be written directly in the generators.

        To illustrate this, do not write as follows:

        f(...) ->
        +cannot be written directly in the generators.

        To illustrate this, do not write as follows:

        f(...) ->
             Y = ...
        -    [ Expression || PatternInvolving Y  <- Expr, ...]
        -    ...

        Instead, write as follows:

        f(...) ->
        +    [ Expression || PatternInvolving Y  <- Expr, ...]
        +    ...

        Instead, write as follows:

        f(...) ->
             Y = ...
        -    [ Expression || PatternInvolving Y1  <- Expr, Y == Y1, ...]
        +    [ Expression || PatternInvolving Y1  <- Expr, Y == Y1, ...]
             ...
        @@ -285,7 +285,7 @@ Erlang programming language

        -

        Copyright © 1996-2025 Ericsson AB

        +

        Copyright © 1996-2041 Ericsson AB

        /usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html 2025-11-19 10:45:49.905477401 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html 2025-11-19 10:45:49.913477451 +0000 @@ -124,47 +124,47 @@

        Lists can only be built starting from the end and attaching list elements at the beginning. If you use the ++ operator as follows, a new list is created that is a copy of the elements in List1, followed by List2:

        List1 ++ List2

        Looking at how lists:append/2 or ++ would be implemented in plain Erlang, -clearly the first list is copied:

        append([H|T], Tail) ->
        -    [H|append(T, Tail)];
        -append([], Tail) ->
        +clearly the first list is copied:

        append([H|T], Tail) ->
        +    [H|append(T, Tail)];
        +append([], Tail) ->
             Tail.

        When recursing and building a list, it is important to ensure that you attach the new elements to the beginning of the list. In this way, you will build one -list, not hundreds or thousands of copies of the growing result list.

        Let us first see how it is not to be done:

        DO NOT

        bad_fib(N) ->
        -    bad_fib(N, 0, 1, []).
        +list, not hundreds or thousands of copies of the growing result list.

        Let us first see how it is not to be done:

        DO NOT

        bad_fib(N) ->
        +    bad_fib(N, 0, 1, []).
         
        -bad_fib(0, _Current, _Next, Fibs) ->
        +bad_fib(0, _Current, _Next, Fibs) ->
             Fibs;
        -bad_fib(N, Current, Next, Fibs) ->
        -    bad_fib(N - 1, Next, Current + Next, Fibs ++ [Current]).

        Here more than one list is built. In each iteration step a new list is created +bad_fib(N, Current, Next, Fibs) -> + bad_fib(N - 1, Next, Current + Next, Fibs ++ [Current]).

        Here more than one list is built. In each iteration step a new list is created that is one element longer than the new previous list.

        To avoid copying the result in each iteration, build the list in reverse order -and reverse the list when you are done:

        DO

        tail_recursive_fib(N) ->
        -    tail_recursive_fib(N, 0, 1, []).
        +and reverse the list when you are done:

        DO

        tail_recursive_fib(N) ->
        +    tail_recursive_fib(N, 0, 1, []).
         
        -tail_recursive_fib(0, _Current, _Next, Fibs) ->
        -    lists:reverse(Fibs);
        -tail_recursive_fib(N, Current, Next, Fibs) ->
        -    tail_recursive_fib(N - 1, Next, Current + Next, [Current|Fibs]).

        +tail_recursive_fib(0, _Current, _Next, Fibs) -> + lists:reverse(Fibs); +tail_recursive_fib(N, Current, Next, Fibs) -> + tail_recursive_fib(N - 1, Next, Current + Next, [Current|Fibs]).

        List Comprehensions

        -

        A list comprehension:

        [Expr(E) || E <- List]

        is basically translated to a local function:

        'lc^0'([E|Tail], Expr) ->
        -    [Expr(E)|'lc^0'(Tail, Expr)];
        -'lc^0'([], _Expr) -> [].

        If the result of the list comprehension will obviously not be used, a list -will not be constructed. For example, in this code:

        [io:put_chars(E) || E <- List],
        +

        A list comprehension:

        [Expr(E) || E <- List]

        is basically translated to a local function:

        'lc^0'([E|Tail], Expr) ->
        +    [Expr(E)|'lc^0'(Tail, Expr)];
        +'lc^0'([], _Expr) -> [].

        If the result of the list comprehension will obviously not be used, a list +will not be constructed. For example, in this code:

        [io:put_chars(E) || E <- List],
         ok.

        or in this code:

        case Var of
             ... ->
        -        [io:put_chars(E) || E <- List];
        +        [io:put_chars(E) || E <- List];
             ... ->
         end,
        -some_function(...),

        the value is not assigned to a variable, not passed to another function, and not +some_function(...),

        the value is not assigned to a variable, not passed to another function, and not returned. This means that there is no need to construct a list and the compiler -will simplify the code for the list comprehension to:

        'lc^0'([E|Tail], Expr) ->
        -    Expr(E),
        -    'lc^0'(Tail, Expr);
        -'lc^0'([], _Expr) -> [].

        The compiler also understands that assigning to _ means that the value will -not be used. Therefore, the code in the following example will also be optimized:

        _ = [io:put_chars(E) || E <- List],
        +will simplify the code for the list comprehension to:

        'lc^0'([E|Tail], Expr) ->
        +    Expr(E),
        +    'lc^0'(Tail, Expr);
        +'lc^0'([], _Expr) -> [].

        The compiler also understands that assigning to _ means that the value will +not be used. Therefore, the code in the following example will also be optimized:

        _ = [io:put_chars(E) || E <- List],
         ok.

        @@ -177,11 +177,11 @@ to flatten the list before sending it to the port.

      • When calling BIFs that accept deep lists, such as list_to_binary/1 or iolist_to_binary/1.
      • When you know that your list is only one level deep. Use lists:append/1 -instead.

      Examples:

      DO

      port_command(Port, DeepList)

      DO NOT

      port_command(Port, lists:flatten(DeepList))

      A common way to send a zero-terminated string to a port is the following:

      DO NOT

      TerminatedStr = String ++ [0],
      -port_command(Port, TerminatedStr)

      Instead:

      DO

      TerminatedStr = [String, 0],
      -port_command(Port, TerminatedStr)

      DO

      1> lists:append([[1], [2], [3]]).
      -[1,2,3]

      DO NOT

      1> lists:flatten([[1], [2], [3]]).
      -[1,2,3]

      +instead.

    Examples:

    DO

    port_command(Port, DeepList)

    DO NOT

    port_command(Port, lists:flatten(DeepList))

    A common way to send a zero-terminated string to a port is the following:

    DO NOT

    TerminatedStr = String ++ [0],
    +port_command(Port, TerminatedStr)

    Instead:

    DO

    TerminatedStr = [String, 0],
    +port_command(Port, TerminatedStr)

    DO

    1> lists:append([[1], [2], [3]]).
    +[1,2,3]

    DO NOT

    1> lists:flatten([[1], [2], [3]]).
    +[1,2,3]

    @@ -189,17 +189,17 @@

    There are two basic ways to write a function that traverses a list and produces a new list.

    The first way is writing a body-recursive function:

    %% Add 42 to each integer in the list.
    -add_42_body([H|T]) ->
    -    [H + 42 | add_42_body(T)];
    -add_42_body([]) ->
    -    [].

    The second way is writing a tail-recursive function:

    %% Add 42 to each integer in the list.
    -add_42_tail(List) ->
    -    add_42_tail(List, []).
    -
    -add_42_tail([H|T], Acc) ->
    -    add_42_tail(T, [H + 42 | Acc]);
    -add_42_tail([], Acc) ->
    -    lists:reverse(Acc).

    In early version of Erlang the tail-recursive function would typically +add_42_body([H|T]) -> + [H + 42 | add_42_body(T)]; +add_42_body([]) -> + [].

    The second way is writing a tail-recursive function:

    %% Add 42 to each integer in the list.
    +add_42_tail(List) ->
    +    add_42_tail(List, []).
    +
    +add_42_tail([H|T], Acc) ->
    +    add_42_tail(T, [H + 42 | Acc]);
    +add_42_tail([], Acc) ->
    +    lists:reverse(Acc).

    In early version of Erlang the tail-recursive function would typically be more efficient. In modern versions of Erlang, there is usually not much difference in performance between a body-recursive list function and tail-recursive function that reverses the list at the end. Therefore, @@ -210,11 +210,11 @@ function that does not construct a list runs in constant space, while the corresponding body-recursive function uses stack space proportional to the length of the list.

    For example, a function that sums a list of integers, is not to be written as -follows:

    DO NOT

    recursive_sum([H|T]) -> H+recursive_sum(T);
    -recursive_sum([])    -> 0.

    Instead:

    DO

    sum(L) -> sum(L, 0).
    +follows:

    DO NOT

    recursive_sum([H|T]) -> H+recursive_sum(T);
    +recursive_sum([])    -> 0.

    Instead:

    DO

    sum(L) -> sum(L, 0).
     
    -sum([H|T], Sum) -> sum(T, Sum + H);
    -sum([], Sum)    -> Sum.
    +
    sum([H|T], Sum) -> sum(T, Sum + H); +sum([], Sum) -> Sum.
    @@ -265,7 +265,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/macros.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/macros.html 2025-11-19 10:45:49.933477575 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/macros.html 2025-11-19 10:45:49.937477600 +0000 @@ -121,8 +121,8 @@ File Inclusion -

    A file can be included as follows:

    -include(File).
    --include_lib(File).

    File, a string, is to point out a file. The contents of this file are included +

    A file can be included as follows:

    -include(File).
    +-include_lib(File).

    File, a string, is to point out a file. The contents of this file are included as is, at the position of the directive.

    Include files are typically used for record and macro definitions that are shared by several modules. It is recommended to use the file name extension .hrl for include files.

    File can start with a path component $VAR, for some string VAR. If that is @@ -131,12 +131,12 @@ $VAR is left as is.

    If the filename File is absolute (possibly after variable substitution), the include file with that name is included. Otherwise, the specified file is searched for in the following directories, and in this order:

    1. The current working directory
    2. The directory where the module is being compiled
    3. The directories given by the include option

    For details, see erlc in ERTS and -compile in Compiler.

    Examples:

    -include("my_records.hrl").
    --include("incdir/my_records.hrl").
    --include("/home/user/proj/my_records.hrl").
    --include("$PROJ_ROOT/my_records.hrl").

    include_lib is similar to include, but is not to point out an absolute file. +compile in Compiler.

    Examples:

    -include("my_records.hrl").
    +-include("incdir/my_records.hrl").
    +-include("/home/user/proj/my_records.hrl").
    +-include("$PROJ_ROOT/my_records.hrl").

    include_lib is similar to include, but is not to point out an absolute file. Instead, the first path component (possibly after variable substitution) is -assumed to be the name of an application.

    Example:

    -include_lib("kernel/include/file.hrl").

    The code server uses code:lib_dir(kernel) to find the directory of the current +assumed to be the name of an application.

    Example:

    -include_lib("kernel/include/file.hrl").

    The code server uses code:lib_dir(kernel) to find the directory of the current (latest) version of Kernel, and then the subdirectory include is searched for the file file.hrl.

    @@ -144,25 +144,25 @@ Defining and Using Macros

    -

    A macro is defined as follows:

    -define(Const, Replacement).
    --define(Func(Var1,...,VarN), Replacement).

    A macro definition can be placed anywhere among the attributes and function +

    A macro is defined as follows:

    -define(Const, Replacement).
    +-define(Func(Var1,...,VarN), Replacement).

    A macro definition can be placed anywhere among the attributes and function declarations of a module, but the definition must come before any usage of the macro.

    If a macro is used in several modules, it is recommended that the macro definition is placed in an include file.

    A macro is used as follows:

    ?Const
     ?Func(Arg1,...,ArgN)

    Macros are expanded during compilation. A simple macro ?Const is replaced with -Replacement.

    Example:

    -define(TIMEOUT, 200).
    +Replacement.

    Example:

    -define(TIMEOUT, 200).
     ...
    -call(Request) ->
    -    server:call(refserver, Request, ?TIMEOUT).

    This is expanded to:

    call(Request) ->
    -    server:call(refserver, Request, 200).

    A macro ?Func(Arg1,...,ArgN) is replaced with Replacement, where all +call(Request) -> + server:call(refserver, Request, ?TIMEOUT).

    This is expanded to:

    call(Request) ->
    +    server:call(refserver, Request, 200).

    A macro ?Func(Arg1,...,ArgN) is replaced with Replacement, where all occurrences of a variable Var from the macro definition are replaced with the -corresponding argument Arg.

    Example:

    -define(MACRO1(X, Y), {a, X, b, Y}).
    +corresponding argument Arg.

    Example:

    -define(MACRO1(X, Y), {a, X, b, Y}).
     ...
    -bar(X) ->
    -    ?MACRO1(a, b),
    -    ?MACRO1(X, 123)

    This is expanded to:

    bar(X) ->
    -    {a,a,b,b},
    -    {a,X,b,123}.

    It is good programming practice, but not mandatory, to ensure that a macro +bar(X) -> + ?MACRO1(a, b), + ?MACRO1(X, 123)

    This is expanded to:

    bar(X) ->
    +    {a,a,b,b},
    +    {a,X,b,123}.

    It is good programming practice, but not mandatory, to ensure that a macro definition is a valid Erlang syntactic form.

    To view the result of macro expansion, a module can be compiled with the 'P' option. compile:file(File, ['P']). This produces a listing of the parsed code after preprocessing and parse transforms, in the file File.P.

    @@ -189,21 +189,21 @@

    It is possible to overload macros, except for predefined macros. An overloaded macro has more than one definition, each with a different number of arguments.

    Change

    Support for overloading of macros was added in Erlang 5.7.5/OTP R13B04.

    A macro ?Func(Arg1,...,ArgN) with a (possibly empty) list of arguments results in an error message if there is at least one definition of Func with -arguments, but none with N arguments.

    Assuming these definitions:

    -define(F0(), c).
    --define(F1(A), A).
    --define(C, m:f).

    the following does not work:

    f0() ->
    +arguments, but none with N arguments.

    Assuming these definitions:

    -define(F0(), c).
    +-define(F1(A), A).
    +-define(C, m:f).

    the following does not work:

    f0() ->
         ?F0. % No, an empty list of arguments expected.
     
    -f1(A) ->
    -    ?F1(A, A). % No, exactly one argument expected.

    On the other hand,

    f() ->
    -    ?C().

    is expanded to

    f() ->
    -    m:f().

    +f1(A) -> + ?F1(A, A). % No, exactly one argument expected.

    On the other hand,

    f() ->
    +    ?C().

    is expanded to

    f() ->
    +    m:f().

    Removing a macro definition

    -

    A definition of macro can be removed as follows:

    -undef(Macro).

    +

    A definition of macro can be removed as follows:

    -undef(Macro).

    @@ -223,13 +223,13 @@ elif also supports calling the psuedo-function defined(Name), which tests whether the Name argument is the name of a previously defined macro. defined(Name) evaluates to true if the macro is defined and false -otherwise. An attempt to call other functions results in a compilation error.

    Example:

    -module(m).
    +otherwise. An attempt to call other functions results in a compilation error.

    Example:

    -module(m).
     ...
     
    --ifdef(debug).
    --define(LOG(X), io:format("{~p,~p}: ~p~n", [?MODULE,?LINE,X])).
    +-ifdef(debug).
    +-define(LOG(X), io:format("{~p,~p}: ~p~n", [?MODULE,?LINE,X])).
     -else.
    --define(LOG(X), true).
    +-define(LOG(X), true).
     -endif.
     
     ...

    When trace output is desired, debug is to be defined when the module m is @@ -237,21 +237,21 @@ or -1> c(m, {d, debug}). -{ok,m}

    ?LOG(Arg) is then expanded to a call to io:format/2 and provide the user -with some simple trace output.

    Example:

    -module(m)
    +1> c(m, {d, debug}).
    +{ok,m}

    ?LOG(Arg) is then expanded to a call to io:format/2 and provide the user +with some simple trace output.

    Example:

    -module(m)
     ...
    --if(?OTP_RELEASE >= 25).
    +-if(?OTP_RELEASE >= 25).
     %% Code that will work in OTP 25 or higher
    --elif(?OTP_RELEASE >= 26).
    +-elif(?OTP_RELEASE >= 26).
     %% Code that will work in OTP 26 or higher
     -else.
     %% Code that will work in OTP 24 or lower.
     -endif.
     ...

    This code uses the OTP_RELEASE macro to conditionally select code depending on -release.

    Example:

    -module(m)
    +release.

    Example:

    -module(m)
     ...
    --if(?OTP_RELEASE >= 26 andalso defined(debug)).
    +-if(?OTP_RELEASE >= 26 andalso defined(debug)).
     %% Debugging code that requires OTP 26 or later.
     -else.
     %% Non-debug code that works in any release.
    @@ -274,23 +274,23 @@
       
       -error() and -warning() directives
     

    -

    The directive -error(Term) causes a compilation error.

    Example:

    -module(t).
    --export([version/0]).
    +

    The directive -error(Term) causes a compilation error.

    Example:

    -module(t).
    +-export([version/0]).
     
    --ifdef(VERSION).
    -version() -> ?VERSION.
    +-ifdef(VERSION).
    +version() -> ?VERSION.
     -else.
    --error("Macro VERSION must be defined.").
    -version() -> "".
    +-error("Macro VERSION must be defined.").
    +version() -> "".
     -endif.

    The error message will look like this:

    % erlc t.erl
    -t.erl:7: -error("Macro VERSION must be defined.").

    The directive -warning(Term) causes a compilation warning.

    Example:

    -module(t).
    --export([version/0]).
    +t.erl:7: -error("Macro VERSION must be defined.").

    The directive -warning(Term) causes a compilation warning.

    Example:

    -module(t).
    +-export([version/0]).
     
    --ifndef(VERSION).
    --warning("Macro VERSION not defined -- using default version.").
    --define(VERSION, "0").
    +-ifndef(VERSION).
    +-warning("Macro VERSION not defined -- using default version.").
    +-define(VERSION, "0").
     -endif.
    -version() -> ?VERSION.

    The warning message will look like this:

    % erlc t.erl
    +version() -> ?VERSION.

    The warning message will look like this:

    % erlc t.erl
     t.erl:5: Warning: -warning("Macro VERSION not defined -- using default version.").

    Change

    The -error() and -warning() directives were added in Erlang/OTP 19.

    @@ -299,11 +299,11 @@

    The construction ??Arg, where Arg is a macro argument, is expanded to a string containing the tokens of the argument. This is similar to the #arg -stringifying construction in C.

    Example:

    -define(TESTCALL(Call), io:format("Call ~s: ~w~n", [??Call, Call])).
    +stringifying construction in C.

    Example:

    -define(TESTCALL(Call), io:format("Call ~s: ~w~n", [??Call, Call])).
     
    -?TESTCALL(myfunction(1,2)),
    -?TESTCALL(you:function(2,1)).

    results in

    io:format("Call ~s: ~w~n",["myfunction ( 1 , 2 )",myfunction(1,2)]),
    -io:format("Call ~s: ~w~n",["you : function ( 2 , 1 )",you:function(2,1)]).

    That is, a trace output, with both the function called and the resulting value.

    +
    ?TESTCALL(myfunction(1,2)), +?TESTCALL(you:function(2,1)).

    results in

    io:format("Call ~s: ~w~n",["myfunction ( 1 , 2 )",myfunction(1,2)]),
    +io:format("Call ~s: ~w~n",["you : function ( 2 , 1 )",you:function(2,1)]).

    That is, a trace output, with both the function called and the resulting value.

    @@ -354,7 +354,7 @@ Erlang programming language /usr/share/doc/packages/erlang27-doc/doc/system/maps.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/maps.html 2025-11-19 10:45:49.965477774 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/maps.html 2025-11-19 10:45:49.969477800 +0000 @@ -152,8 +152,8 @@ values, sharing of keys between different instances of the map will be less effective, and it is not possible to match multiple elements having default values in one go.

  • To avoid having to deal with a map that may lack some keys, maps:merge/2 can -efficiently add multiple default values. For example:

    DefaultMap = #{shoe_size => 42, editor => emacs},
    -MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)
  • +efficiently add multiple default values. For example:

    DefaultMap = #{shoe_size => 42, editor => emacs},
    +MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)

    @@ -171,10 +171,10 @@ Using Maps as Sets

    Starting in OTP 24, the sets module has an option to represent sets as maps. -Examples:

    1> sets:new([{version,2}]).
    -#href_anchor"p" data-group-id="3572834789-4">}
    -2> sets:from_list([x,y,z], [{version,2}]).
    -#{x => [],y => [],z => []}

    sets backed by maps is generally the most efficient set representation, with a +Examples:

    1> sets:new([{version,2}]).
    +#href_anchor"p" data-group-id="8578193145-4">}
    +2> sets:from_list([x,y,z], [{version,2}]).
    +#{x => [],y => [],z => []}

    sets backed by maps is generally the most efficient set representation, with a few possible exceptions:

    • ordsets:intersection/2 can be more efficient than sets:intersection/2. If the intersection operation is frequently used and operations that operate on a single element in a set (such as is_element/2) are avoided, ordsets can @@ -207,10 +207,10 @@ allowing the key tuple to be shared with other instances of the map that have the same keys. In fact, the key tuple can be shared between all maps with the same keys with some care. To arrange that, define a function that returns a map. -For example:

      new() ->
      -    #{a => default, b => default, c => default}.

      Defined like this, the key tuple {a,b,c} will be a global literal. To ensure +For example:

      new() ->
      +    #{a => default, b => default, c => default}.

      Defined like this, the key tuple {a,b,c} will be a global literal. To ensure that the key tuple is shared when creating an instance of the map, always call -new() and modify the returned map:

          (SOME_MODULE:new())#{a := 42}.

      Using the map syntax with small maps is particularly efficient. As long as the +new() and modify the returned map:

          (SOME_MODULE:new())#{a := 42}.

      Using the map syntax with small maps is particularly efficient. As long as the keys are known at compile-time, the map is updated in one go, making the time to update a map essentially constant regardless of the number of keys updated. The same goes for matching. (When the keys are variables, one or more of the keys @@ -245,13 +245,13 @@

      Using the map syntax is usually slightly more efficient than using the corresponding function in the maps module.

      The gain in efficiency for the map syntax is more noticeable for the following -operations that can only be achieved using the map syntax:

      • Matching multiple literal keys
      • Updating multiple literal keys
      • Adding multiple literal keys to a map

      For example:

      DO

      Map = Map1#href_anchor"ss">x := X, y := Y, z := Z}

      DO NOT

      Map2 = maps:update(x, X, Map1),
      -Map3 = maps:update(y, Y, Map2),
      -Map = maps:update(z, Z, Map3)

      If the map is a small map, the first example runs roughly three times as fast.

      Note that for variable keys, the elements are updated sequentially from left to -right. For example, given the following update with variable keys:

      Map = Map1#{Key1 := X, Key2 := Y, Key3 := Z}

      the compiler rewrites it like this to ensure that the updates are applied from -left to right:

      Map2 = Map1#{Key1 := X},
      -Map3 = Map2#{Key2 := Y},
      -Map = Map3#{Key3 := Z}

      If a key is known to exist in a map, using the := operator is slightly more +operations that can only be achieved using the map syntax:

      • Matching multiple literal keys
      • Updating multiple literal keys
      • Adding multiple literal keys to a map

      For example:

      DO

      Map = Map1#href_anchor"ss">x := X, y := Y, z := Z}

      DO NOT

      Map2 = maps:update(x, X, Map1),
      +Map3 = maps:update(y, Y, Map2),
      +Map = maps:update(z, Z, Map3)

      If the map is a small map, the first example runs roughly three times as fast.

      Note that for variable keys, the elements are updated sequentially from left to +right. For example, given the following update with variable keys:

      Map = Map1#{Key1 := X, Key2 := Y, Key3 := Z}

      the compiler rewrites it like this to ensure that the updates are applied from +left to right:

      Map2 = Map1#{Key1 := X},
      +Map3 = Map2#{Key2 := Y},
      +Map = Map3#{Key3 := Z}

      If a key is known to exist in a map, using the := operator is slightly more efficient than using the => operator for a small map.

      @@ -310,15 +310,15 @@

      As an optimization, the compiler will rewrite a call to maps:get/3 to Erlang code similar to the following:

      Result = case Map of
      -             #{Key := Value} -> Value;
      -             #{} -> Default
      +             #{Key := Value} -> Value;
      +             #{} -> Default
                end

      This is reasonably efficient, but if a small map is used as an alternative to using a record it is often better not to rely on default values as it prevents sharing of keys, which may in the end use more memory than what you save from not storing default values in the map.

      If default values are nevertheless required, instead of calling maps:get/3 multiple times, consider putting the default values in a map and merging that -map with the other map:

      DefaultMap = #{Key1 => Value2, Key2 => Value2, ..., KeyN => ValueN},
      -MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)

      This helps share keys between the default map and the one you applied defaults +map with the other map:

      DefaultMap = #{Key1 => Value2, Key2 => Value2, ..., KeyN => ValueN},
      +MapWithDefaultsApplied = maps:merge(DefaultMap, OtherMap)

      This helps share keys between the default map and the one you applied defaults to, as long as the default map contains all the keys that will ever be used and not just the ones with default values. Whether this is faster than calling maps:get/3 multiple times depends on the size of the map and the number of @@ -523,7 +523,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/memory.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/memory.html 2025-11-19 10:45:49.989477924 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/memory.html 2025-11-19 10:45:49.993477949 +0000 @@ -222,7 +222,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/misc.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/misc.html 2025-11-19 10:45:50.013478073 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/misc.html 2025-11-19 10:45:50.013478073 +0000 @@ -241,7 +241,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/doc/system/modules.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/modules.html 2025-11-19 10:45:50.037478223 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/modules.html 2025-11-19 10:45:50.041478248 +0000 @@ -122,12 +122,12 @@ Module Syntax

    Erlang code is divided into modules. A module consists of a sequence of -attributes and function declarations, each terminated by a period (.).

    Example:

    -module(m).          % module attribute
    --export([fact/1]).   % module attribute
    +attributes and function declarations, each terminated by a period (.).

    Example:

    -module(m).          % module attribute
    +-export([fact/1]).   % module attribute
     
    -fact(N) when N>0 ->  % beginning of function declaration
    -    N * fact(N-1);   %  |
    -fact(0) ->           %  |
    +fact(N) when N>0 ->  % beginning of function declaration
    +    N * fact(N-1);   %  |
    +fact(0) ->           %  |
         1.               % end of function declaration

    For a description of function declarations, see Function Declaration Syntax.

    @@ -180,9 +180,9 @@ Behaviour Module Attribute

    It is possible to specify that the module is the callback module for a -behaviour:

    -behaviour(Behaviour).

    The atom Behaviour gives the name of the behaviour, which can be a +behaviour:

    -behaviour(Behaviour).

    The atom Behaviour gives the name of the behaviour, which can be a user-defined behaviour or one of the following OTP standard behaviours:

    • gen_server
    • gen_statem
    • gen_event
    • supervisor

    The spelling behavior is also accepted.

    The callback functions of the module can be specified either directly by the -exported function behaviour_info/1:

    behaviour_info(callbacks) -> Callbacks.

    or by a -callback attribute for each callback function:

    -callback Name(Arguments) -> Result.

    Here, Arguments is a list of zero or more arguments. The -callback attribute +exported function behaviour_info/1:

    behaviour_info(callbacks) -> Callbacks.

    or by a -callback attribute for each callback function:

    -callback Name(Arguments) -> Result.

    Here, Arguments is a list of zero or more arguments. The -callback attribute is to be preferred since the extra type information can be used by tools to produce documentation or find discrepancies.

    Read more about behaviours and callback modules in OTP Design Principles.

    @@ -191,7 +191,7 @@ Record Definitions

    -

    The same syntax as for module attributes is used for record definitions:

    -record(Record, Fields).

    Record definitions are allowed anywhere in a module, also among the function +

    The same syntax as for module attributes is used for record definitions:

    -record(Record, Fields).

    Record definitions are allowed anywhere in a module, also among the function declarations. Read more in Records.

    @@ -199,15 +199,15 @@ Preprocessor

    The same syntax as for module attributes is used by the preprocessor, which -supports file inclusion, macros, and conditional compilation:

    -include("SomeFile.hrl").
    --define(Macro, Replacement).

    Read more in Preprocessor.

    +supports file inclusion, macros, and conditional compilation:

    -include("SomeFile.hrl").
    +-define(Macro, Replacement).

    Read more in Preprocessor.

    Setting File and Line

    The same syntax as for module attributes is used for changing the pre-defined -macros ?FILE and ?LINE:

    -file(File, Line).

    This attribute is used by tools, such as Yecc, to inform the compiler that the +macros ?FILE and ?LINE:

    -file(File, Line).

    This attribute is used by tools, such as Yecc, to inform the compiler that the source program is generated by another tool. It also indicates the correspondence of source files to lines of the original user-written file, from which the source program is produced.

    @@ -217,8 +217,8 @@ Types and function specifications

    A similar syntax as for module attributes is used for specifying types and -function specifications:

    -type my_type() :: atom() | integer().
    --spec my_function(integer()) -> integer().

    Read more in Types and Function specifications.

    The description is based on +function specifications:

    -type my_type() :: atom() | integer().
    +-spec my_function(integer()) -> integer().

    Read more in Types and Function specifications.

    The description is based on EEP8 - Types and function specifications, which is not to be further updated.

    @@ -227,16 +227,16 @@ Documentation attributes

    The module attribute -doc(Documentation) is used to provide user documentation -for a function/type/callback:

    -doc("Example documentation").
    -example() -> ok.

    The attribute should be placed just before the entity it documents.The +for a function/type/callback:

    -doc("Example documentation").
    +example() -> ok.

    The attribute should be placed just before the entity it documents.The parenthesis are optional around Documentation. The allowed values for Documentation are:

    • literal string or utf-8 encoded binary string - The string documenting the entity. Any literal string is allowed, so both triple quoted strings and sigils that translate to literal strings can be used. -The following examples are equivalent:

      -doc("Example \"docs\"").
      --doc(<<"Example \"docs\""/utf8>>).
      +The following examples are equivalent:

      -doc("Example \"docs\"").
      +-doc(<<"Example \"docs\""/utf8>>).
       -doc ~S/Example "docs"/.
       -doc """
          Example "docs"
      @@ -257,7 +257,7 @@
       
       

      While not a module attribute, but rather a directive (since it might affect syntax), there is the -feature(..) directive used for enabling and disabling -features.

      The syntax is similar to that of an attribute, but has two arguments:

      -feature(FeatureName, enable | disable).

      Note that the feature directive can only appear +features.

      The syntax is similar to that of an attribute, but has two arguments:

      -feature(FeatureName, enable | disable).

      Note that the feature directive can only appear in a prefix of the module.

      @@ -351,7 +351,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/doc/system/nif.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/nif.html 2025-11-19 10:45:50.061478372 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/nif.html 2025-11-19 10:45:50.065478398 +0000 @@ -137,18 +137,18 @@ they can also be used as fallback implementations for functions that do not have native implementations on some architectures.

      NIF libraries are loaded by calling erlang:load_nif/2, with the name of the shared library as argument. The second argument can be any term that will be -passed on to the library and used for initialization:

      -module(complex6).
      --export([foo/1, bar/1]).
      --nifs([foo/1, bar/1]).
      --on_load(init/0).
      -
      -init() ->
      -    ok = erlang:load_nif("./complex6_nif", 0).
      -
      -foo(_X) ->
      -    erlang:nif_error(nif_library_not_loaded).
      -bar(_Y) ->
      -    erlang:nif_error(nif_library_not_loaded).

      Here, the directive on_load is used to get function init to be automatically +passed on to the library and used for initialization:

      -module(complex6).
      +-export([foo/1, bar/1]).
      +-nifs([foo/1, bar/1]).
      +-on_load(init/0).
      +
      +init() ->
      +    ok = erlang:load_nif("./complex6_nif", 0).
      +
      +foo(_X) ->
      +    erlang:nif_error(nif_library_not_loaded).
      +bar(_Y) ->
      +    erlang:nif_error(nif_library_not_loaded).

      Here, the directive on_load is used to get function init to be automatically called when the module is loaded. If init returns anything other than ok, such when the loading of the NIF library fails in this example, the module is unloaded and calls to functions within it, fail.

      Loading the NIF library overrides the stub implementations and cause calls to @@ -169,35 +169,35 @@ API functions. The environment contains information about the calling Erlang process:

      #include <erl_nif.h>
       
      -extern int foo(int x);
      -extern int bar(int y);
      +extern int foo(int x);
      +extern int bar(int y);
       
      -static ERL_NIF_TERM foo_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
      -{
      +static ERL_NIF_TERM foo_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
      +{
           int x, ret;
      -    if (!enif_get_int(env, argv[0], &x)) {
      -	return enif_make_badarg(env);
      -    }
      -    ret = foo(x);
      -    return enif_make_int(env, ret);
      -}
      +    if (!enif_get_int(env, argv[0], &x)) {
      +	return enif_make_badarg(env);
      +    }
      +    ret = foo(x);
      +    return enif_make_int(env, ret);
      +}
       
      -static ERL_NIF_TERM bar_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
      -{
      +static ERL_NIF_TERM bar_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
      +{
           int y, ret;
      -    if (!enif_get_int(env, argv[0], &y)) {
      -	return enif_make_badarg(env);
      -    }
      -    ret = bar(y);
      -    return enif_make_int(env, ret);
      -}
      -
      -static ErlNifFunc nif_funcs[] = {
      -    {"foo", 1, foo_nif},
      -    {"bar", 1, bar_nif}
      -};
      +    if (!enif_get_int(env, argv[0], &y)) {
      +	return enif_make_badarg(env);
      +    }
      +    ret = bar(y);
      +    return enif_make_int(env, ret);
      +}
      +
      +static ErlNifFunc nif_funcs[] = {
      +    {"foo", 1, foo_nif},
      +    {"bar", 1, bar_nif}
      +};
       
      -ERL_NIF_INIT(complex6, nif_funcs, NULL, NULL, NULL, NULL)

      Here, ERL_NIF_INIT has the following arguments:

      • The first argument must be the name of the Erlang module as a C-identifier. It +ERL_NIF_INIT(complex6, nif_funcs, NULL, NULL, NULL, NULL)

      Here, ERL_NIF_INIT has the following arguments:

      • The first argument must be the name of the Erlang module as a C-identifier. It will be stringified by the macro.
      • The second argument is the array of ErlNifFunc structures containing name, arity, and function pointer of each NIF.
      • The remaining arguments are pointers to callback functions that can be used to initialize the library. They are not used in this simple example, hence they @@ -213,15 +213,15 @@

        Step 1. Compile the C code:

        unix> gcc -o complex6_nif.so -fpic -shared complex.c complex6_nif.c
         windows> cl -LD -MD -Fe complex6_nif.dll complex.c complex6_nif.c

        Step 2: Start Erlang and compile the Erlang code:

        > erl
        -Erlang R13B04 (erts-5.7.5) [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]
        +Erlang R13B04 (erts-5.7.5) [64-bit] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]
         
        -Eshell V5.7.5  (abort with ^G)
        -1> c(complex6).
        -{ok,complex6}

        Step 3: Run the example:

        3> complex6:foo(3).
        +Eshell V5.7.5  (abort with ^G)
        +1> c(complex6).
        +{ok,complex6}

        Step 3: Run the example:

        3> complex6:foo(3).
         4
        -4> complex6:bar(5).
        +4> complex6:bar(5).
         10
        -5> complex6:foo("not an integer").
        +5> complex6:foo("not an integer").
         ** exception error: bad argument
              in function  complex6:foo/1
                 called as comlpex6:foo("not an integer")
        @@ -275,7 +275,7 @@ Erlang programming language

        -

        Copyright © 1996-2025 Ericsson AB

        +

        Copyright © 1996-2041 Ericsson AB

        /usr/share/doc/packages/erlang27-doc/doc/system/opaques.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/opaques.html 2025-11-19 10:45:50.085478522 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/opaques.html 2025-11-19 10:45:50.089478547 +0000 @@ -126,16 +126,16 @@ The runtime does not check opacity. Dialyzer provides some opacity-checking, but the rest is up to convention.

        This document explains what Erlang opacity is (and the trade-offs involved) via the example of the sets:set() data type. This type was -defined in the sets module like this:

        -opaque set(Element) :: #set{segs :: segs(Element)}.

        OTP 24 changed the definition to the following in -this commit.

        -opaque set(Element) :: #href_anchor"ss">set{segs :: segs(Element)} | #{Element => ?VALUE}.

        And this change was safer and more backwards-compatible than if the type had +defined in the sets module like this:

        -opaque set(Element) :: #set{segs :: segs(Element)}.

        OTP 24 changed the definition to the following in +this commit.

        -opaque set(Element) :: #href_anchor"ss">set{segs :: segs(Element)} | #{Element => ?VALUE}.

        And this change was safer and more backwards-compatible than if the type had been defined with -type instead of -opaque. Here is why: when a module defines an -opaque, the contract is that only the defining module should rely on the definition of the type: no other modules should rely on the definition.

        This means that code that pattern-matched on set as a record/tuple technically broke the contract, and opted in to being potentially broken when the definition of set() changed. Before OTP 24, this code printed ok. In OTP 24 it may -error:

        case sets:new() of
        -    Set when is_tuple(Set) ->
        -        io:format("ok")
        +error:

        case sets:new() of
        +    Set when is_tuple(Set) ->
        +        io:format("ok")
         end.

        When working with an opaque defined in another module, here are some recommendations:

        • Don't examine the underlying type using pattern-matching, guards, or functions that reveal the type, such as tuple_size/1 .
        • Instead, use functions provided by the module for working with the type. For @@ -209,7 +209,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html 2025-11-19 10:45:50.109478671 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html 2025-11-19 10:45:50.113478696 +0000 @@ -205,7 +205,7 @@ Application dependencies are verified among installed applications by otp_patch_apply, but these are not necessarily those actually loaded. By calling system_information:sanity_check() one can validate -dependencies among applications actually loaded.

          1> system_information:sanity_check().
          +dependencies among applications actually loaded.

          1> system_information:sanity_check().
           ok

          Please take a look at the reference of sanity_check() for more information.

          @@ -258,7 +258,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/overview.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/overview.html 2025-11-19 10:45:50.133478820 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/overview.html 2025-11-19 10:45:50.133478820 +0000 @@ -311,7 +311,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/patterns.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/patterns.html 2025-11-19 10:45:50.157478970 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/patterns.html 2025-11-19 10:45:50.157478970 +0000 @@ -132,10 +132,10 @@
          2 3> X + 1. 3 -4> {X, Y} = {1, 2}. +4> {X, Y} = {1, 2}. ** exception error: no match of right hand side value {1,2} -5> {X, Y} = {2, 3}. -{2,3} +5> {X, Y} = {2, 3}. +{2,3} 6> Y. 3
          @@ -188,7 +188,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/ports.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/ports.html 2025-11-19 10:45:50.177479095 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ports.html 2025-11-19 10:45:50.177479095 +0000 @@ -229,7 +229,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/profiling.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/profiling.html 2025-11-19 10:45:50.205479269 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/profiling.html 2025-11-19 10:45:50.209479294 +0000 @@ -315,7 +315,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html 2025-11-19 10:45:50.233479444 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html 2025-11-19 10:45:50.241479493 +0000 @@ -126,17 +126,17 @@ To illustrate these differences, suppose that you want to represent a person with the tuple {Name, Address, Phone}.

          To write functions that manipulate this data, remember the following:

          • The Name field is the first element of the tuple.
          • The Address field is the second element.
          • The Phone field is the third element.

          For example, to extract data from a variable P that contains such a tuple, you can write the following code and then use pattern matching to extract the -relevant fields:

          Name = element(1, P),
          -Address = element(2, P),
          +relevant fields:

          Name = element(1, P),
          +Address = element(2, P),
           ...

          Such code is difficult to read and understand, and errors occur if the numbering of the elements in the tuple is wrong. If the data representation of the fields is changed, by re-ordering, adding, or removing fields, all references to the person tuple must be checked and possibly modified.

          Records allow references to the fields by name, instead of by position. In the -following example, a record instead of a tuple is used to store the data:

          -record(person, {name, phone, address}).

          This enables references to the fields of the record by name. For example, if P +following example, a record instead of a tuple is used to store the data:

          -record(person, {name, phone, address}).

          This enables references to the fields of the record by name. For example, if P is a variable whose value is a person record, the following code access the name and address fields of the records:

          Name = P#person.name,
           Address = P#person.address,
          -...

          Internally, records are represented using tagged tuples:

          {person, Name, Phone, Address}

          +...

          Internally, records are represented using tagged tuples:

          {person, Name, Phone, Address}

          @@ -146,8 +146,8 @@ section. Three fields are included, name, phone, and address. The default values for name and phone is "" and [], respectively. The default value for address is the atom undefined, since no default value is supplied for this -field:

          -record(person, {name = "", phone = [], address}).

          The record must be defined in the shell to enable use of the record syntax in -the examples:

          > rd(person, {name = "", phone = [], address}).
          +field:

          -record(person, {name = "", phone = [], address}).

          The record must be defined in the shell to enable use of the record syntax in +the examples:

          > rd(person, {name = "", phone = [], address}).
           person

          This is because record definitions are only available at compile time, not at runtime. For details on records in the shell, see the shell manual page in STDLIB.

          @@ -156,10 +156,10 @@ Creating a Record

          -

          A new person record is created as follows:

          > #person{phone=[0,8,2,3,4,3,1,2], name="Robert"}.
          -#person{name = "Robert",phone = [0,8,2,3,4,3,1,2],address = undefined}

          As the address field was omitted, its default value is used.

          From Erlang 5.1/OTP R8B, a value to all fields in a record can be set with the -special field _. _ means "all fields not explicitly specified".

          Example:

          > #person{name = "Jakob", _ = '_'}.
          -#person{name = "Jakob",phone = '_',address = '_'}

          It is primarily intended to be used in ets:match/2 and +

          A new person record is created as follows:

          > #person{phone=[0,8,2,3,4,3,1,2], name="Robert"}.
          +#person{name = "Robert",phone = [0,8,2,3,4,3,1,2],address = undefined}

          As the address field was omitted, its default value is used.

          From Erlang 5.1/OTP R8B, a value to all fields in a record can be set with the +special field _. _ means "all fields not explicitly specified".

          Example:

          > #person{name = "Jakob", _ = '_'}.
          +#person{name = "Jakob",phone = '_',address = '_'}

          It is primarily intended to be used in ets:match/2 and mnesia:match_object/3, to set record fields to the atom '_'. (This is a wildcard in ets:match/2.)

          @@ -167,8 +167,8 @@ Accessing a Record Field

          -

          The following example shows how to access a record field:

          > P = #person{name = "Joe", phone = [0,8,2,3,4,3,1,2]}.
          -#person{name = "Joe",phone = [0,8,2,3,4,3,1,2],address = undefined}
          +

          The following example shows how to access a record field:

          > P = #person{name = "Joe", phone = [0,8,2,3,4,3,1,2]}.
          +#person{name = "Joe",phone = [0,8,2,3,4,3,1,2],address = undefined}
           > P#person.name.
           "Joe"

          @@ -176,33 +176,33 @@ Updating a Record

          -

          The following example shows how to update a record:

          > P1 = #person{name="Joe", phone=[1,2,3], address="A street"}.
          -#person{name = "Joe",phone = [1,2,3],address = "A street"}
          -> P2 = P1#person{name="Robert"}.
          -#person{name = "Robert",phone = [1,2,3],address = "A street"}

          +

          The following example shows how to update a record:

          > P1 = #person{name="Joe", phone=[1,2,3], address="A street"}.
          +#person{name = "Joe",phone = [1,2,3],address = "A street"}
          +> P2 = P1#person{name="Robert"}.
          +#person{name = "Robert",phone = [1,2,3],address = "A street"}

          Type Testing

          The following example shows that the guard succeeds if P is record of type -person:

          foo(P) when is_record(P, person) -> a_person;
          -foo(_) -> not_a_person.

          +person:

          foo(P) when is_record(P, person) -> a_person;
          +foo(_) -> not_a_person.

          Pattern Matching

          Matching can be used in combination with records, as shown in the following -example:

          > P3 = #person{name="Joe", phone=[0,0,7], address="A street"}.
          -#person{name = "Joe",phone = [0,0,7],address = "A street"}
          -> #person{name = Name} = P3, Name.
          +example:

          > P3 = #person{name="Joe", phone=[0,0,7], address="A street"}.
          +#person{name = "Joe",phone = [0,0,7],address = "A street"}
          +> #person{name = Name} = P3, Name.
           "Joe"

          The following function takes a list of person records and searches for the -phone number of a person with a particular name:

          find_phone([#person{name=Name, phone=Phone} | _], Name) ->
          -    {found,  Phone};
          -find_phone([_| T], Name) ->
          -    find_phone(T, Name);
          -find_phone([], Name) ->
          +phone number of a person with a particular name:

          find_phone([#person{name=Name, phone=Phone} | _], Name) ->
          +    {found,  Phone};
          +find_phone([_| T], Name) ->
          +    find_phone(T, Name);
          +find_phone([], Name) ->
               not_found.

          The fields referred to in the pattern can be given in any order.

          @@ -211,12 +211,12 @@

          The value of a field in a record can be an instance of a record. Retrieval of nested data can be done stepwise, or in a single step, as shown in the following -example:

          -record(name, {first = "Robert", last = "Ericsson"}).
          --record(person, {name = #name{}, phone}).
          +example:

          -record(name, {first = "Robert", last = "Ericsson"}).
          +-record(person, {name = #name{}, phone}).
           
          -demo() ->
          -  P = #person{name= #name{first="Robert",last="Virding"}, phone=123},
          -  First = (P#person.name)#name.first.

          Here, demo() evaluates to "Robert".

          +demo() -> + P = #person{name= #name{first="Robert",last="Virding"}, phone=123}, + First = (P#person.name)#name.first.

          Here, demo() evaluates to "Robert".

          @@ -234,40 +234,40 @@ %% about the person. %% A {Key, Value} list (default is the empty list). %%------------------------------------------------------------ --record(person, {name, age, phone = [], dict = []}).

          -module(person).
          --include("person.hrl").
          --compile(export_all). % For test purposes only.
          +-record(person, {name, age, phone = [], dict = []}).
          -module(person).
          +-include("person.hrl").
          +-compile(export_all). % For test purposes only.
           
           %% This creates an instance of a person.
           %%   Note: The phone number is not supplied so the
           %%         default value [] will be used.
           
          -make_hacker_without_phone(Name, Age) ->
          -   #person{name = Name, age = Age,
          -           dict = [{computer_knowledge, excellent},
          -                   {drinks, coke}]}.
          +make_hacker_without_phone(Name, Age) ->
          +   #person{name = Name, age = Age,
          +           dict = [{computer_knowledge, excellent},
          +                   {drinks, coke}]}.
           
           %% This demonstrates matching in arguments
           
          -print(#person{name = Name, age = Age,
          -              phone = Phone, dict = Dict}) ->
          -  io:format("Name: ~s, Age: ~w, Phone: ~w ~n"
          -            "Dictionary: ~w.~n", [Name, Age, Phone, Dict]).
          +print(#person{name = Name, age = Age,
          +              phone = Phone, dict = Dict}) ->
          +  io:format("Name: ~s, Age: ~w, Phone: ~w ~n"
          +            "Dictionary: ~w.~n", [Name, Age, Phone, Dict]).
           
           %% Demonstrates type testing, selector, updating.
           
          -birthday(P) when is_record(P, person) ->
          -   P#person{age = P#person.age + 1}.
          +birthday(P) when is_record(P, person) ->
          +   P#person{age = P#person.age + 1}.
           
          -register_two_hackers() ->
          -   Hacker1 = make_hacker_without_phone("Joe", 29),
          -   OldHacker = birthday(Hacker1),
          +register_two_hackers() ->
          +   Hacker1 = make_hacker_without_phone("Joe", 29),
          +   OldHacker = birthday(Hacker1),
              % The central_register_server should have
              % an interface function for this.
          -   central_register_server ! {register_person, Hacker1},
          -   central_register_server ! {register_person,
          -             OldHacker#person{name = "Robert",
          -                              phone = [0,8,3,2,4,5,3,1]}}.
          +
          central_register_server ! {register_person, Hacker1}, + central_register_server ! {register_person, + OldHacker#person{name = "Robert", + phone = [0,8,3,2,4,5,3,1]}}.
          @@ -318,7 +318,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 2025-11-19 10:45:50.257479593 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 2025-11-19 10:45:50.261479618 +0000 @@ -167,7 +167,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/readme.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/readme.html 2025-11-19 10:45:50.285479767 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/readme.html 2025-11-19 10:45:50.289479792 +0000 @@ -169,7 +169,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html 2025-11-19 10:45:50.317479966 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html 2025-11-19 10:45:50.313479942 +0000 @@ -128,7 +128,7 @@ introduced:

          %%%----FILE mess_config.hrl----
           
           %%% Configure the location of the server node,
          --define(server_node, messenger@super).
          +-define(server_node, messenger@super).
           
           %%%----END FILE----
          %%%----FILE mess_interface.hrl----
           
          @@ -136,24 +136,24 @@
           %%% messenger program
           
           %%%Messages from Client to server received in server/1 function.
          --record(logon,{client_pid, username}).
          --record(message,{client_pid, to_name, message}).
          +-record(logon,{client_pid, username}).
          +-record(message,{client_pid, to_name, message}).
           %%% {'EXIT', ClientPid, Reason}  (client terminated or unreachable.
           
           %%% Messages from Server to Client, received in await_result/0 function
          --record(abort_client,{message}).
          +-record(abort_client,{message}).
           %%% Messages are: user_exists_at_other_node,
           %%%               you_are_not_logged_on
          --record(server_reply,{message}).
          +-record(server_reply,{message}).
           %%% Messages are: logged_on
           %%%               receiver_not_found
           %%%               sent  (Message has been sent (no guarantee)
           %%% Messages from Server to Client received in client/1 function
          --record(message_from,{from_name, message}).
          +-record(message_from,{from_name, message}).
           
           %%% Messages from shell to Client received in client/1 function
           %%% spawn(mess_client, client, [server_node(), Name])
          --record(message_to,{to_name, message}).
          +-record(message_to,{to_name, message}).
           %%% logoff
           
           %%%----END FILE----
          %%%----FILE user_interface.erl----
          @@ -174,27 +174,27 @@
           %%%     function is not logged on or if ToName is not logged on at
           %%%     any node.
           
          --module(user_interface).
          --export([logon/1, logoff/0, message/2]).
          --include("mess_interface.hrl").
          --include("mess_config.hrl").
          +-module(user_interface).
          +-export([logon/1, logoff/0, message/2]).
          +-include("mess_interface.hrl").
          +-include("mess_config.hrl").
           
          -logon(Name) ->
          -    case whereis(mess_client) of
          +logon(Name) ->
          +    case whereis(mess_client) of
                   undefined ->
          -            register(mess_client,
          -                     spawn(mess_client, client, [?server_node, Name]));
          +            register(mess_client,
          +                     spawn(mess_client, client, [?server_node, Name]));
                   _ -> already_logged_on
               end.
           
          -logoff() ->
          +logoff() ->
               mess_client ! logoff.
           
          -message(ToName, Message) ->
          -    case whereis(mess_client) of % Test if the client is running
          +message(ToName, Message) ->
          +    case whereis(mess_client) of % Test if the client is running
                   undefined ->
                       not_logged_on;
          -        _ -> mess_client ! #message_to{to_name=ToName, message=Message},
          +        _ -> mess_client ! #message_to{to_name=ToName, message=Message},
                        ok
           end.
           
          @@ -202,107 +202,107 @@
           
           %%% The client process which runs on each user node
           
          --module(mess_client).
          --export([client/2]).
          --include("mess_interface.hrl").
          -
          -client(Server_Node, Name) ->
          -    {messenger, Server_Node} ! #logon{client_pid=self(), username=Name},
          -    await_result(),
          -    client(Server_Node).
          +-module(mess_client).
          +-export([client/2]).
          +-include("mess_interface.hrl").
          +
          +client(Server_Node, Name) ->
          +    {messenger, Server_Node} ! #logon{client_pid=self(), username=Name},
          +    await_result(),
          +    client(Server_Node).
           
          -client(Server_Node) ->
          +client(Server_Node) ->
               receive
                   logoff ->
          -            exit(normal);
          -        #message_to{to_name=ToName, message=Message} ->
          -            {messenger, Server_Node} !
          -                #message{client_pid=self(), to_name=ToName, message=Message},
          -            await_result();
          -        {message_from, FromName, Message} ->
          -            io:format("Message from ~p: ~p~n", [FromName, Message])
          +            exit(normal);
          +        #message_to{to_name=ToName, message=Message} ->
          +            {messenger, Server_Node} !
          +                #message{client_pid=self(), to_name=ToName, message=Message},
          +            await_result();
          +        {message_from, FromName, Message} ->
          +            io:format("Message from ~p: ~p~n", [FromName, Message])
               end,
          -    client(Server_Node).
          +    client(Server_Node).
           
           %%% wait for a response from the server
          -await_result() ->
          +await_result() ->
               receive
          -        #abort_client{message=Why} ->
          -            io:format("~p~n", [Why]),
          -            exit(normal);
          -        #server_reply{message=What} ->
          -            io:format("~p~n", [What])
          +        #abort_client{message=Why} ->
          +            io:format("~p~n", [Why]),
          +            exit(normal);
          +        #server_reply{message=What} ->
          +            io:format("~p~n", [What])
               after 5000 ->
          -            io:format("No response from server~n", []),
          -            exit(timeout)
          +            io:format("No response from server~n", []),
          +            exit(timeout)
               end.
           
           %%%----END FILE---
          %%%----FILE mess_server.erl----
           
           %%% This is the server process of the messenger service
           
          --module(mess_server).
          --export([start_server/0, server/0]).
          --include("mess_interface.hrl").
          -
          -server() ->
          -    process_flag(trap_exit, true),
          -    server([]).
          +-module(mess_server).
          +-export([start_server/0, server/0]).
          +-include("mess_interface.hrl").
          +
          +server() ->
          +    process_flag(trap_exit, true),
          +    server([]).
           
           %%% the user list has the format [{ClientPid1, Name1},{ClientPid22, Name2},...]
          -server(User_List) ->
          -    io:format("User list = ~p~n", [User_List]),
          +server(User_List) ->
          +    io:format("User list = ~p~n", [User_List]),
               receive
          -        #logon{client_pid=From, username=Name} ->
          -            New_User_List = server_logon(From, Name, User_List),
          -            server(New_User_List);
          -        {'EXIT', From, _} ->
          -            New_User_List = server_logoff(From, User_List),
          -            server(New_User_List);
          -        #message{client_pid=From, to_name=To, message=Message} ->
          -            server_transfer(From, To, Message, User_List),
          -            server(User_List)
          +        #logon{client_pid=From, username=Name} ->
          +            New_User_List = server_logon(From, Name, User_List),
          +            server(New_User_List);
          +        {'EXIT', From, _} ->
          +            New_User_List = server_logoff(From, User_List),
          +            server(New_User_List);
          +        #message{client_pid=From, to_name=To, message=Message} ->
          +            server_transfer(From, To, Message, User_List),
          +            server(User_List)
               end.
           
           %%% Start the server
          -start_server() ->
          -    register(messenger, spawn(?MODULE, server, [])).
          +start_server() ->
          +    register(messenger, spawn(?MODULE, server, [])).
           
           %%% Server adds a new user to the user list
          -server_logon(From, Name, User_List) ->
          +server_logon(From, Name, User_List) ->
          /usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html differs (HTML document, UTF-8 Unicode text, with very long lines)
          --- old//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html	2025-11-19 10:45:50.345480141 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html	2025-11-19 10:45:50.345480141 +0000
          @@ -124,10 +124,10 @@
           

          A function declaration is a sequence of function clauses separated by semicolons, and terminated by a period (.).

          A function clause consists of a clause head and a clause body, separated by ->.

          A clause head consists of the function name, an argument list, and an optional -guard sequence beginning with the keyword when:

          Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
          +guard sequence beginning with the keyword when:

          Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
               Body1;
           ...;
          -Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
          +Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
               BodyK.

          The function name is an atom. Each argument is a pattern.

          The number of arguments N is the arity of the function. A function is uniquely defined by the module name, function name, and arity. That is, two functions with the same name and in the same module, but with different arities @@ -135,10 +135,10 @@ mod:f/N.

          A clause body consists of a sequence of expressions separated by comma (,):

          Expr1,
           ...,
           ExprN

          Valid Erlang expressions and guard sequences are described in -Expressions.

          Example:

          fact(N) when N > 0 ->  % first clause head
          -    N * fact(N-1);     % first clause body
          +Expressions.

          Example:

          fact(N) when N > 0 ->  % first clause head
          +    N * fact(N-1);     % first clause body
           
          -fact(0) ->             % second clause head
          +fact(0) ->             % second clause head
               1.                 % second clause body

          @@ -151,16 +151,16 @@ clause is found that fulfills both of the following two conditions:

          1. The patterns in the clause head can be successfully matched against the given arguments.
          2. The guard sequence, if any, is true.

          If such a clause cannot be found, a function_clause runtime error occurs.

          If such a clause is found, the corresponding clause body is evaluated. That is, the expressions in the body are evaluated sequentially and the value of the last -expression is returned.

          Consider the function fact:

          -module(mod).
          --export([fact/1]).
          +expression is returned.

          Consider the function fact:

          -module(mod).
          +-export([fact/1]).
           
          -fact(N) when N > 0 ->
          -    N * fact(N - 1);
          -fact(0) ->
          +fact(N) when N > 0 ->
          +    N * fact(N - 1);
          +fact(0) ->
               1.

          Assume that you want to calculate the factorial for 1:

          1> mod:fact(1).

          Evaluation starts at the first clause. The pattern N is matched against argument 1. The matching succeeds and the guard (N > 0) is true, thus N is -bound to 1, and the corresponding body is evaluated:

          N * fact(N-1) => (N is bound to 1)
          -1 * fact(0)

          Now, fact(0) is called, and the function clauses are scanned +bound to 1, and the corresponding body is evaluated:

          N * fact(N-1) => (N is bound to 1)
          +1 * fact(0)

          Now, fact(0) is called, and the function clauses are scanned sequentially again. First, the pattern N is matched against 0. The matching succeeds, but the guard (N > 0) is false. Second, the pattern 0 is matched against the argument 0. The matching succeeds @@ -177,9 +177,9 @@ tail-recursive call is done. This is to ensure that no system resources, for example, call stack, are consumed. This means that an infinite loop using tail-recursive calls will not exhaust the call -stack and can (in principle) run forever.

          Example:

          loop(N) ->
          -    io:format("~w~n", [N]),
          -    loop(N+1).

          The earlier factorial example is a counter-example. It is not +stack and can (in principle) run forever.

          Example:

          loop(N) ->
          +    io:format("~w~n", [N]),
          +    loop(N+1).

          The earlier factorial example is a counter-example. It is not tail-recursive, since a multiplication is done on the result of the recursive call to fact(N-1).

          @@ -195,9 +195,9 @@ not need to be prefixed with the module name. Which BIFs that are auto-imported is specified in the erlang module in ERTS. For example, standard-type conversion BIFs like atom_to_list and BIFs allowed in guards can be called -without specifying the module name.

          Examples:

          1> tuple_size({a,b,c}).
          +without specifying the module name.

          Examples:

          1> tuple_size({a,b,c}).
           3
          -2> atom_to_list(&#href_anchor"p" data-group-id="1825135460-3">).
          +2> atom_to_list(&#href_anchor"p" data-group-id="1818446759-3">).
           "Erlang"
          @@ -249,7 +249,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html 2025-11-19 10:45:50.373480315 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html 2025-11-19 10:45:50.381480365 +0000 @@ -129,10 +129,10 @@ Process Creation

          -

          A process is created by calling spawn():

          spawn(Module, Name, Args) -> pid()
          -  Module = Name = atom()
          -  Args = [Arg1,...,ArgN]
          -    ArgI = term()

          spawn() creates a new process and returns the pid.

          The new process starts executing in Module:Name(Arg1,...,ArgN) where the +

          A process is created by calling spawn():

          spawn(Module, Name, Args) -> pid()
          +  Module = Name = atom()
          +  Args = [Arg1,...,ArgN]
          +    ArgI = term()

          spawn() creates a new process and returns the pid.

          The new process starts executing in Module:Name(Arg1,...,ArgN) where the arguments are the elements of the (possible empty) Args argument list.

          There exist a number of different spawn BIFs:

          @@ -587,7 +587,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html 2025-11-19 10:45:50.405480515 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html 2025-11-19 10:45:50.405480515 +0000 @@ -127,9 +127,9 @@

          A record definition consists of the name of the record, followed by the field names of the record. Record and field names must be atoms. Each field can be given an optional default value. If no default value is supplied, undefined is -used.

          -record(Name, {Field1 [= Expr1],
          +used.

          -record(Name, {Field1 [= Expr1],
                          ...
          -               FieldN [= ExprN]}).

          The default value for a field is an arbitrary expression, except that it must + FieldN [= ExprN]}).

          The default value for a field is an arbitrary expression, except that it must not use any variables.

          A record definition can be placed anywhere among the attributes and function declarations of a module, but the definition must come before any usage of the record.

          If a record is used in several modules, it is recommended that the record @@ -147,24 +147,24 @@ default value instead.

          If several fields are to be assigned the same value, the following construction can be used:

          #Name{Field1=Expr1, ..., FieldK=ExprK, _=ExprL}

          Omitted fields then get the value of evaluating ExprL instead of their default values. This feature is primarily intended to be used to create patterns for ETS -and Mnesia match functions.

          Example:

          -record(person, {name, phone, address}).
          +and Mnesia match functions.

          Example:

          -record(person, {name, phone, address}).
           
          -lookup(Name, Tab) ->
          -    ets:match_object(Tab, #person{name=Name, _='_'}).

          +lookup(Name, Tab) -> + ets:match_object(Tab, #person{name=Name, _='_'}).

          Accessing Record Fields

          Expr#Name.Field

          Returns the value of the specified field. Expr is to evaluate to a Name -record.

          Example:

          -record(person, {name, phone, address}).
          +record.

          Example:

          -record(person, {name, phone, address}).
           
          -get_person_name(Person) ->
          +get_person_name(Person) ->
               Person#person.name.

          The following expression returns the position of the specified field in the -tuple representation of the record:

          #Name.Field

          Example:

          -record(person, {name, phone, address}).
          +tuple representation of the record:

          #Name.Field

          Example:

          -record(person, {name, phone, address}).
           
          -lookup(Name, List) ->
          -    lists:keyfind(Name, #person.name, List).

          +lookup(Name, List) -> + lists:keyfind(Name, #person.name, List).

          @@ -182,13 +182,13 @@

          Since record expressions are expanded to tuple expressions, creating records and accessing record fields are allowed in guards. However, all subexpressions (for initializing fields), must be valid guard -expressions as well.

          Examples:

          handle(Msg, State) when Msg =:= #msg{to=void, no=3} ->
          +expressions as well.

          Examples:

          handle(Msg, State) when Msg =:= #msg{to=void, no=3} ->
               ...
           
          -handle(Msg, State) when State#state.running =:= true ->
          -    ...

          There is also a type test BIF is_record(Term, RecordTag).

          Example:

          is_person(P) when is_record(P, person) ->
          +handle(Msg, State) when State#state.running =:= true ->
          +    ...

          There is also a type test BIF is_record(Term, RecordTag).

          Example:

          is_person(P) when is_record(P, person) ->
               true;
          -is_person(_P) ->
          +is_person(_P) ->
               false.

          @@ -202,11 +202,11 @@ Nested Records

          -

          Assume the following record definitions:

          -record(nrec0, {name = "nested0"}).
          --record(nrec1, {name = "nested1", nrec0=#nrec0{}}).
          --record(nrec2, {name = "nested2", nrec1=#nrec1{}}).
          +

          Assume the following record definitions:

          -record(nrec0, {name = "nested0"}).
          +-record(nrec1, {name = "nested1", nrec0=#nrec0{}}).
          +-record(nrec2, {name = "nested2", nrec1=#nrec1{}}).
           
          -N2 = #nrec2{},

          Accessing or updating nested records can be written without parentheses:

          "nested0" = N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,
          +N2 = #nrec2{},

          Accessing or updating nested records can be written without parentheses:

          "nested0" = N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,
               N0n = N2#nrec2.nrec1#nrec1.nrec0#nrec0{name = "nested0a"},

          which is equivalent to:

          "nested0" = ((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0.name,
           N0n = ((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0{name = "nested0a"},

          Change

          Before Erlang/OTP R14, parentheses were necessary when accessing or updating nested records.

          @@ -216,9 +216,9 @@ Internal Representation of Records

          Record expressions are translated to tuple expressions during compilation. A -record defined as:

          -record(Name, {Field1, ..., FieldN}).

          is internally represented by the tuple:

          {Name, Value1, ..., ValueN}

          Here each ValueI is the default value for FieldI.

          To each module using records, a pseudo function is added during compilation to -obtain information about records:

          record_info(fields, Record) -> [Field]
          -record_info(size, Record) -> Size

          Size is the size of the tuple representation, that is, one more than the +record defined as:

          -record(Name, {Field1, ..., FieldN}).

          is internally represented by the tuple:

          {Name, Value1, ..., ValueN}

          Here each ValueI is the default value for FieldI.

          To each module using records, a pseudo function is added during compilation to +obtain information about records:

          record_info(fields, Record) -> [Field]
          +record_info(size, Record) -> Size

          Size is the size of the tuple representation, that is, one more than the number of fields.

          @@ -270,7 +270,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 2025-11-19 10:45:50.425480639 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 2025-11-19 10:45:50.429480664 +0000 @@ -213,7 +213,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 2025-11-19 10:45:50.457480838 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 2025-11-19 10:45:50.465480888 +0000 @@ -227,15 +227,15 @@ Instead, it is necessary to:

          • Suspend the processes using the module (to avoid that they try to handle any requests before the code replacement is completed).
          • Ask them to transform the internal state format and switch to the new version of the module.
          • Remove the old version.
          • Resume the processes.

          This is called synchronized code replacement and for this the following -instructions are used:

          {update, Module, {advanced, Extra}}
          -{update, Module, supervisor}

          update with argument {advanced,Extra} is used when changing the internal +instructions are used:

          {update, Module, {advanced, Extra}}
          +{update, Module, supervisor}

          update with argument {advanced,Extra} is used when changing the internal state of a behaviour as described above. It causes behaviour processes to call the callback function code_change/3, passing the term Extra and some other information as arguments. See the manual pages for the respective behaviours and Appup Cookbook.

          update with argument supervisor is used when changing the start specification of a supervisor. See Appup Cookbook.

          When a module is to be updated, the release handler finds which processes that are using the module by traversing the supervision tree of each running -application and checking all the child specifications:

          {Id, StartFunc, Restart, Shutdown, Type, Modules}

          A process uses a module if the name is listed in Modules in the child +application and checking all the child specifications:

          {Id, StartFunc, Restart, Shutdown, Type, Modules}

          A process uses a module if the name is listed in Modules in the child specification for the process.

          If Modules=dynamic, which is the case for event managers, the event manager process informs the release handler about the list of currently installed event handlers (gen_event), and it is checked if the module name is in this list @@ -247,10 +247,10 @@ add_module and delete_module

          -

          If a new module is introduced, the following instruction is used:

          {add_module, Module}

          This instruction loads module Module. When running Erlang in +

          If a new module is introduced, the following instruction is used:

          {add_module, Module}

          This instruction loads module Module. When running Erlang in embedded mode it is necessary to use this this instruction. It is not strictly required when running Erlang in interactive mode, since the -code server automatically searches for and loads unloaded modules.

          The opposite of add_module is delete_module, which unloads a module:

          {delete_module, Module}

          Any process, in any application, with Module as residence module, is +code server automatically searches for and loads unloaded modules.

          The opposite of add_module is delete_module, which unloads a module:

          {delete_module, Module}

          Any process, in any application, with Module as residence module, is killed when the instruction is evaluated. Therefore, the user must ensure that all such processes are terminated before deleting module Module to avoid a situation with failing supervisor restarts.

          @@ -331,13 +331,13 @@

          To define how to upgrade/downgrade between the current version and previous versions of an application, an application upgrade file, or in short .appup file is created. The file is to be called Application.appup, where -Application is the application name:

          {Vsn,
          - [{UpFromVsn1, InstructionsU1},
          +Application is the application name:

          {Vsn,
          + [{UpFromVsn1, InstructionsU1},
             ...,
          -  {UpFromVsnK, InstructionsUK}],
          - [{DownToVsn1, InstructionsD1},
          +  {UpFromVsnK, InstructionsUK}],
          + [{DownToVsn1, InstructionsD1},
             ...,
          -  {DownToVsnK, InstructionsDK}]}.
          • Vsn, a string, is the current version of the application, as defined in the + {DownToVsnK, InstructionsDK}]}.
          • Vsn, a string, is the current version of the application, as defined in the .app file.
          • Each UpFromVsn is a previous version of the application to upgrade from.
          • Each DownToVsn is a previous version of the application to downgrade to.
          • Each Instructions is a list of release handling instructions.

          UpFromVsn and DownToVsn can also be specified as regular expressions. For more information about the syntax and contents of the .appup file, see appup in SASL.

          Appup Cookbook includes examples of .appup files for @@ -345,52 +345,52 @@ Releases. Assume you want to add a function available/0 to server ch3, which returns the number of available channels (when trying out the example, make the change in a copy of the original -directory, to ensure that the first version is still available):

          -module(ch3).
          --behaviour(gen_server).
          +directory, to ensure that the first version is still available):

          -module(ch3).
          +-behaviour(gen_server).
           
          --export([start_link/0]).
          --export([alloc/0, free/1]).
          --export([available/0]).
          --export([init/1, handle_call/3, handle_cast/2]).
          -
          -start_link() ->
          -    gen_server:start_link({local, ch3}, ch3, [], []).
          -
          -alloc() ->
          -    gen_server:call(ch3, alloc).
          -
          -free(Ch) ->
          -    gen_server:cast(ch3, {free, Ch}).
          -
          -available() ->
          -    gen_server:call(ch3, available).
          -
          -init(_Args) ->
          -    {ok, channels()}.
          -
          -handle_call(alloc, _From, Chs) ->
          -    {Ch, Chs2} = alloc(Chs),
          -    {reply, Ch, Chs2};
          -handle_call(available, _From, Chs) ->
          -    N = available(Chs),
          -    {reply, N, Chs}.
          -
          -handle_cast({free, Ch}, Chs) ->
          -    Chs2 = free(Ch, Chs),
          -    {noreply, Chs2}.

          A new version of the ch_app.app file must now be created, where the version is -updated:

          {application, ch_app,
          - [{description, "Channel allocator"},
          -  {vsn, "2"},
          -  {modules, [ch_app, ch_sup, ch3]},
          -  {registered, [ch3]},
          -  {applications, [kernel, stdlib, sasl]},
          -  {mod, {ch_app,[]}}
          - ]}.

          To upgrade ch_app from "1" to "2" (and to downgrade from "2" to "1"), +-export([start_link/0]). +-export([alloc/0, free/1]). +-export([available/0]). +-export([init/1, handle_call/3, handle_cast/2]). + +start_link() -> + gen_server:start_link({local, ch3}, ch3, [], []). + +alloc() -> + gen_server:call(ch3, alloc). + +free(Ch) -> + gen_server:cast(ch3, {free, Ch}). + +available() -> + gen_server:call(ch3, available). + +init(_Args) -> + {ok, channels()}. + +handle_call(alloc, _From, Chs) -> + {Ch, Chs2} = alloc(Chs), + {reply, Ch, Chs2}; +handle_call(available, _From, Chs) -> + N = available(Chs), + {reply, N, Chs}. + +handle_cast({free, Ch}, Chs) -> + Chs2 = free(Ch, Chs), + {noreply, Chs2}.

          A new version of the ch_app.app file must now be created, where the version is +updated:

          {application, ch_app,
          + [{description, "Channel allocator"},
          +  {vsn, "2"},
          +  {modules, [ch_app, ch_sup, ch3]},
          +  {registered, [ch3]},
          +  {applications, [kernel, stdlib, sasl]},
          +  {mod, {ch_app,[]}}
          + ]}.

          To upgrade ch_app from "1" to "2" (and to downgrade from "2" to "1"), you only need to load the new (old) version of the ch3 callback module. Create -the application upgrade file ch_app.appup in the ebin directory:

          {"2",
          - [{"1", [{load_module, ch3}]}],
          - [{"1", [{load_module, ch3}]}]
          -}.

          +the application upgrade file ch_app.appup in the ebin directory:

          {"2",
          + [{"1", [{load_module, ch3}]}],
          + [{"1", [{load_module, ch3}]}]
          +}.

          @@ -409,14 +409,14 @@ relup in SASL.

          Example, continued from the previous section: You have a new version "2" of ch_app and an .appup file. A new version of the .rel file is also needed. This time the file is called ch_rel-2.rel and the release version string is -changed from "A" to "B":

          {release,
          - {"ch_rel", "B"},
          - {erts, "14.2.5"},
          - [{kernel, "9.2.4"},
          -  {stdlib, "5.2.3"},
          -  {sasl, "4.2.1"},
          -  {ch_app, "2"}]
          -}.

          Now the relup file can be generated:

          1> systools:make_relup("ch_rel-2", ["ch_rel-1"], ["ch_rel-1"]).
          +changed from "A" to "B":

          {release,
          + {"ch_rel", "B"},
          + {erts, "14.2.5"},
          + [{kernel, "9.2.4"},
          +  {stdlib, "5.2.3"},
          +  {sasl, "4.2.1"},
          +  {ch_app, "2"}]
          +}.

          Now the relup file can be generated:

          1> systools:make_relup("ch_rel-2", ["ch_rel-1"], ["ch_rel-1"]).
           ok

          This generates a relup file with instructions for how to upgrade from version "A" ("ch_rel-1") to version "B" ("ch_rel-2") and how to downgrade from version "B" to version "A".

          Both the old and new versions of the .app and .rel files must be in the code @@ -437,17 +437,17 @@ packages. The release_handler module communicates with this process.

          Assuming there is an operational target system with installation root directory $ROOT, the release package with the new version of the release is to be copied to $ROOT/releases.

          First, unpack the release package. The files are then extracted from the -package:

          release_handler:unpack_release(ReleaseName) => {ok, Vsn}
          • ReleaseName is the name of the release package except the .tar.gz +package:

            release_handler:unpack_release(ReleaseName) => {ok, Vsn}
            • ReleaseName is the name of the release package except the .tar.gz extension.
            • Vsn is the version of the unpacked release, as defined in its .rel file.

            A directory $ROOT/lib/releases/Vsn is created, where the .rel file, the boot script start.boot, the system configuration file sys.config, and relup are placed. For applications with new version numbers, the application directories are placed under $ROOT/lib. Unchanged applications are not affected.

            An unpacked release can be installed. The release handler then evaluates the -instructions in relup, step by step:

            release_handler:install_release(Vsn) => {ok, FromVsn, []}

            If an error occurs during the installation, the system is rebooted using the old +instructions in relup, step by step:

            release_handler:install_release(Vsn) => {ok, FromVsn, []}

            If an error occurs during the installation, the system is rebooted using the old version of the release. If installation succeeds, the system is afterwards using the new version of the release, but if anything happens and the system is rebooted, it starts using the previous version again.

            To be made the default version, the newly installed release must be made permanent, which means the previous version becomes old:

            release_handler:make_permanent(Vsn) => ok

            The system keeps information about which versions are old and permanent in the -files $ROOT/releases/RELEASES and $ROOT/releases/start_erl.data.

            To downgrade from Vsn to FromVsn, install_release must be called again:

            release_handler:install_release(FromVsn) => {ok, Vsn, []}

            An installed, but not permanent, release can be removed. Information about the +files $ROOT/releases/RELEASES and $ROOT/releases/start_erl.data.

            To downgrade from Vsn to FromVsn, install_release must be called again:

            release_handler:install_release(FromVsn) => {ok, Vsn, []}

            An installed, but not permanent, release can be removed. Information about the release is then deleted from $ROOT/releases/RELEASES and the release-specific code, that is, the new application directories and the $ROOT/releases/Vsn directory, are removed.

            release_handler:remove_release(Vsn) => ok

            @@ -466,9 +466,9 @@ ...

          $ROOT is the installation directory of the target system.

          Step 3) In another Erlang shell, generate start scripts and create a release package for the new version "B". Remember to include (a possible updated) sys.config and the relup file. For more information, see -Release Upgrade File.

          1> systools:make_script("ch_rel-2").
          +Release Upgrade File.

          1> systools:make_script("ch_rel-2").
          /usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html differs (HTML document, UTF-8 Unicode text, with very long lines)
          --- old//usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html	2025-11-19 10:45:50.489481037 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html	2025-11-19 10:45:50.493481062 +0000
          @@ -140,29 +140,29 @@
           

          To define a release, create a release resource file, or in short a .rel file. In the file, specify the name and version of the release, which ERTS -version it is based on, and which applications it consists of:

          {release, {Name,Vsn}, {erts, EVsn},
          - [{Application1, AppVsn1},
          +version it is based on, and which applications it consists of:

          {release, {Name,Vsn}, {erts, EVsn},
          + [{Application1, AppVsn1},
              ...
          -  {ApplicationN, AppVsnN}]}.

          Name, Vsn, EVsn, and AppVsn are strings.

          The file must be named Rel.rel, where Rel is a unique name.

          Each Application (atom) and AppVsn is the name and version of an application + {ApplicationN, AppVsnN}]}.

          Name, Vsn, EVsn, and AppVsn are strings.

          The file must be named Rel.rel, where Rel is a unique name.

          Each Application (atom) and AppVsn is the name and version of an application included in the release. The minimal release based on Erlang/OTP consists of the Kernel and STDLIB applications, so these applications must be included in the list.

          If the release is to be upgraded, it must also include the SASL application.

          Here is an example showing the .app file for a release of ch_app from -the Applications section:

          {application, ch_app,
          - [{description, "Channel allocator"},
          -  {vsn, "1"},
          -  {modules, [ch_app, ch_sup, ch3]},
          -  {registered, [ch3]},
          -  {applications, [kernel, stdlib, sasl]},
          -  {mod, {ch_app,[]}}
          - ]}.

          The .rel file must also contain kernel, stdlib, and sasl, as these -applications are required by ch_app. The file is called ch_rel-1.rel:

          {release,
          - {"ch_rel", "A"},
          - {erts, "14.2.5"},
          - [{kernel, "9.2.4"},
          -  {stdlib, "5.2.3"},
          -  {sasl, "4.2.1"},
          -  {ch_app, "1"}]
          -}.

          +the Applications section:

          {application, ch_app,
          + [{description, "Channel allocator"},
          +  {vsn, "1"},
          +  {modules, [ch_app, ch_sup, ch3]},
          +  {registered, [ch3]},
          +  {applications, [kernel, stdlib, sasl]},
          +  {mod, {ch_app,[]}}
          + ]}.

          The .rel file must also contain kernel, stdlib, and sasl, as these +applications are required by ch_app. The file is called ch_rel-1.rel:

          {release,
          + {"ch_rel", "A"},
          + {erts, "14.2.5"},
          + [{kernel, "9.2.4"},
          +  {stdlib, "5.2.3"},
          +  {sasl, "4.2.1"},
          +  {ch_app, "1"}]
          +}.

          @@ -194,9 +194,9 @@

          The systools:make_tar/1,2 function takes a .rel file as input and creates a zipped tar file with the code for -the specified applications, a release package:

          1> systools:make_script("ch_rel-1").
          +the specified applications, a release package:

          1> systools:make_script("ch_rel-1").
           ok
          -2> systools:make_tar("ch_rel-1").
          +2> systools:make_tar("ch_rel-1").
           ok

          The release package by default contains:

          • The .app files
          • The .rel file
          • The object code for all applications, structured according to the application directory structure
          • The binary boot script renamed to start.boot
          % tar tf ch_rel-1.tar
           lib/kernel-9.2.4/ebin/kernel.app
          @@ -355,7 +355,7 @@
                     Erlang programming language
           
                 

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/robustness.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/robustness.html 2025-11-19 10:45:50.517481211 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/robustness.html 2025-11-19 10:45:50.521481237 +0000 @@ -132,36 +132,36 @@ "pong" so that "pong" can also finish. Another way to let "pong" finish is to make "pong" exit if it does not receive a message from ping within a certain time. This can be done by adding a time-out to pong as shown in the -following example:

          -module(tut19).
          +following example:

          -module(tut19).
           
          --export([start_ping/1, start_pong/0,  ping/2, pong/0]).
          +-export([start_ping/1, start_pong/0,  ping/2, pong/0]).
           
          -ping(0, Pong_Node) ->
          -    io:format("ping finished~n", []);
          +ping(0, Pong_Node) ->
          +    io:format("ping finished~n", []);
           
          -ping(N, Pong_Node) ->
          -    {pong, Pong_Node} ! {ping, self()},
          +ping(N, Pong_Node) ->
          +    {pong, Pong_Node} ! {ping, self()},
               receive
                   pong ->
          -            io:format("Ping received pong~n", [])
          +            io:format("Ping received pong~n", [])
               end,
          -    ping(N - 1, Pong_Node).
          +    ping(N - 1, Pong_Node).
           
          -pong() ->
          +pong() ->
               receive
          -        {ping, Ping_PID} ->
          -            io:format("Pong received ping~n", []),
          +        {ping, Ping_PID} ->
          +            io:format("Pong received ping~n", []),
                       Ping_PID ! pong,
          -            pong()
          +            pong()
               after 5000 ->
          -            io:format("Pong timed out~n", [])
          +            io:format("Pong timed out~n", [])
               end.
           
          -start_pong() ->
          -    register(pong, spawn(tut19, pong, [])).
          +start_pong() ->
          +    register(pong, spawn(tut19, pong, [])).
           
          -start_ping(Pong_Node) ->
          -    spawn(tut19, ping, [3, Pong_Node]).

          After this is compiled and the file tut19.beam is copied to the necessary +start_ping(Pong_Node) -> + spawn(tut19, ping, [3, Pong_Node]).

          After this is compiled and the file tut19.beam is copied to the necessary directories, the following is seen on (pong@kosken):

          (pong@kosken)1> tut19:start_pong().
           true
           Pong received ping
          @@ -172,20 +172,20 @@
           Ping received pong
           Ping received pong
           Ping received pong
          -ping finished

          The time-out is set in:

          pong() ->
          +ping finished

          The time-out is set in:

          pong() ->
               receive
          -        {ping, Ping_PID} ->
          -            io:format("Pong received ping~n", []),
          +        {ping, Ping_PID} ->
          +            io:format("Pong received ping~n", []),
                       Ping_PID ! pong,
          -            pong()
          +            pong()
               after 5000 ->
          -            io:format("Pong timed out~n", [])
          +            io:format("Pong timed out~n", [])
               end.

          The time-out (after 5000) is started when receive is entered. The time-out is canceled if {ping,Ping_PID} is received. If {ping,Ping_PID} is not received, the actions following the time-out are done after 5000 milliseconds. after must be last in the receive, that is, preceded by all other message reception specifications in the receive. It is also possible to call a -function that returned an integer for the time-out:

          after pong_timeout() ->

          In general, there are better ways than using time-outs to supervise parts of a +function that returned an integer for the time-out:

          after pong_timeout() ->

          In general, there are better ways than using time-outs to supervise parts of a distributed Erlang system. Time-outs are usually appropriate to supervise external events, for example, if you have expected a message from some external system within a specified time. For example, a time-out can be used to log a @@ -213,36 +213,36 @@ If one of the processes exits abnormally, all the processes in the transaction are killed. As it is often wanted to create a process and link to it at the same time, there is a special BIF, spawn_link that does the -same as spawn, but also creates a link to the spawned process.

          Now an example of the ping pong example using links to terminate "pong":

          -module(tut20).
          +same as spawn, but also creates a link to the spawned process.

          Now an example of the ping pong example using links to terminate "pong":

          -module(tut20).
           
          --export([start/1,  ping/2, pong/0]).
          +-export([start/1,  ping/2, pong/0]).
           
          -ping(N, Pong_Pid) ->
          -    link(Pong_Pid),
          -    ping1(N, Pong_Pid).
          +ping(N, Pong_Pid) ->
          +    link(Pong_Pid),
          +    ping1(N, Pong_Pid).
           
          -ping1(0, _) ->
          -    exit(ping);
          +ping1(0, _) ->
          +    exit(ping);
           
          -ping1(N, Pong_Pid) ->
          -    Pong_Pid ! {ping, self()},
          +ping1(N, Pong_Pid) ->
          +    Pong_Pid ! {ping, self()},
               receive
                   pong ->
          -            io:format("Ping received pong~n", [])
          +            io:format("Ping received pong~n", [])
               end,
          -    ping1(N - 1, Pong_Pid).
          +    ping1(N - 1, Pong_Pid).
           
          -pong() ->
          +pong() ->
               receive
          -        {ping, Ping_PID} ->
          -            io:format("Pong received ping~n", []),
          +        {ping, Ping_PID} ->
          +            io:format("Pong received ping~n", []),
                       Ping_PID ! pong,
          -            pong()
          +            pong()
               end.
           
          -start(Ping_Node) ->
          -    PongPID = spawn(tut20, pong, []),
          -    spawn(Ping_Node, tut20, ping, [3, PongPID]).
          (s1@bill)3> tut20:start(s2@kosken).
          +start(Ping_Node) ->
          +    PongPID = spawn(tut20, pong, []),
          +    spawn(Ping_Node, tut20, ping, [3, PongPID]).
          (s1@bill)3> tut20:start(s2@kosken).
           Pong received ping
           <3820.41.0>
           Ping received pong
          @@ -256,45 +256,45 @@
           sent to "pong", which also terminates.

          It is possible to modify the default behaviour of a process so that it does not get killed when it receives abnormal exit signals. Instead, all signals are turned into normal messages on the format {'EXIT',FromPID,Reason} and added to -the end of the receiving process' message queue. This behaviour is set by:

          process_flag(trap_exit, true)

          There are several other process flags, see erlang(3). +the end of the receiving process' message queue. This behaviour is set by:

          process_flag(trap_exit, true)

          There are several other process flags, see erlang(3). Changing the default behaviour of a process in this way is usually not done in standard user programs, but is left to the supervisory programs in OTP. However, -the ping pong program is modified to illustrate exit trapping.

          -module(tut21).
          +the ping pong program is modified to illustrate exit trapping.

          -module(tut21).
           
          --export([start/1,  ping/2, pong/0]).
          +-export([start/1,  ping/2, pong/0]).
           
          -ping(N, Pong_Pid) ->
          -    link(Pong_Pid),
          -    ping1(N, Pong_Pid).
          +ping(N, Pong_Pid) ->
          +    link(Pong_Pid),
          +    ping1(N, Pong_Pid).
           
          -ping1(0, _) ->
          -    exit(ping);
          +ping1(0, _) ->
          +    exit(ping);
           
          -ping1(N, Pong_Pid) ->
          -    Pong_Pid ! {ping, self()},
          +ping1(N, Pong_Pid) ->
          +    Pong_Pid ! {ping, self()},
               receive
                   pong ->
          -            io:format("Ping received pong~n", [])
          +            io:format("Ping received pong~n", [])
               end,
          -    ping1(N - 1, Pong_Pid).
          +    ping1(N - 1, Pong_Pid).
           
          -pong() ->
          -    process_flag(trap_exit, true),
          -    pong1().
          +pong() ->
          +    process_flag(trap_exit, true),
          +    pong1().
           
          -pong1() ->
          +pong1() ->
               receive
          -        {ping, Ping_PID} ->
          -            io:format("Pong received ping~n", []),
          +        {ping, Ping_PID} ->
          +            io:format("Pong received ping~n", []),
                       Ping_PID ! pong,
          -            pong1();
          -        {'EXIT', From, Reason} ->
          -            io:format("pong exiting, got ~p~n", [{'EXIT', From, Reason}])
          +            pong1();
          +        {'EXIT', From, Reason} ->
          +            io:format("pong exiting, got ~p~n", [{'EXIT', From, Reason}])
               end.
           
          -start(Ping_Node) ->
          /usr/share/doc/packages/erlang27-doc/doc/system/search.html differs (HTML document, UTF-8 Unicode text)
          --- old//usr/share/doc/packages/erlang27-doc/doc/system/search.html	2025-11-19 10:45:50.545481386 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/search.html	2025-11-19 10:45:50.545481386 +0000
          @@ -135,7 +135,7 @@
                     Erlang programming language
           
                 

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html 2025-11-19 10:45:50.605481760 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html 2025-11-19 10:45:50.605481760 +0000 @@ -140,13 +140,13 @@ more editing commands in the shell (see tty - A command line interface in ERTS User's Guide).

          (Notice that many line numbers given by the shell in the following examples are out of sequence. This is because this tutorial was written and code-tested in -separate sessions).

          Here is a bit more complex calculation:

          2> (42 + 77) * 66 / 3.
          +separate sessions).

          Here is a bit more complex calculation:

          2> (42 + 77) * 66 / 3.
           2618.0

          Notice the use of brackets, the multiplication operator *, and the division operator /, as in normal arithmetic (see Expressions).

          Press Control-C to shut down the Erlang system and the Erlang shell.

          The following output is shown:

          BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
                  (v)ersion (k)ill (D)b-tables (d)istribution
           a
          -$

          Type a to leave the Erlang system.

          Another way to shut down the Erlang system is by entering halt/0:

          3> halt().
          +$

          Type a to leave the Erlang system.

          Another way to shut down the Erlang system is by entering halt/0:

          3> halt().
           $

          @@ -160,55 +160,55 @@ editor has an Erlang mode that makes it easier for you to enter and format your code nicely (see The Erlang mode for Emacs in Tools User's Guide), but you can manage perfectly well without. Here is the -code to enter:

          -module(tut).
          --export([double/1]).
          +code to enter:

          -module(tut).
          +-export([double/1]).
           
          -double(X) ->
          +double(X) ->
               2 * X.

          It is not hard to guess that this program doubles the value of numbers. The first two lines of the code are described later. Let us compile the program. -This can be done in an Erlang shell as follows, where c means compile:

          3> c(tut).
          -{ok,tut}

          The {ok,tut} means that the compilation is OK. If it says error it means +This can be done in an Erlang shell as follows, where c means compile:

          3> c(tut).
          +{ok,tut}

          The {ok,tut} means that the compilation is OK. If it says error it means that there is some mistake in the text that you entered. Additional error messages gives an idea to what is wrong so you can modify the text and then try -to compile the program again.

          Now run the program:

          4> tut:double(10).
          +to compile the program again.

          Now run the program:

          4> tut:double(10).
           20

          As expected, double of 10 is 20.

          Now let us get back to the first two lines of the code. Erlang programs are written in files. Each file contains an Erlang module. The first line of code -in the module is the module name (see Modules):

          -module(tut).

          Thus, the module is called tut. Notice the full stop . at the end of the +in the module is the module name (see Modules):

          -module(tut).

          Thus, the module is called tut. Notice the full stop . at the end of the line. The files which are used to store the module must have the same name as the module but with the extension .erl. In this case the file name is tut.erl. When using a function in another module, the syntax module_name:function_name(arguments) is used. So the following means call -function double in module tut with argument 10.

          4> tut:double(10).

          The second line says that the module tut contains a function called double, -which takes one argument (X in our example):

          -export([double/1]).

          The second line also says that this function can be called from outside the +function double in module tut with argument 10.

          4> tut:double(10).

          The second line says that the module tut contains a function called double, +which takes one argument (X in our example):

          -export([double/1]).

          The second line also says that this function can be called from outside the module tut. More about this later. Again, notice the . at the end of the line.

          Now for a more complicated example, the factorial of a number. For example, the -factorial of 4 is 4 3 2 * 1, which equals 24.

          Enter the following code in a file named tut1.erl:

          -module(tut1).
          --export([fac/1]).
          +factorial of 4 is 4  3  2 * 1, which equals 24.

          Enter the following code in a file named tut1.erl:

          -module(tut1).
          +-export([fac/1]).
           
          -fac(1) ->
          +fac(1) ->
               1;
          -fac(N) ->
          -    N * fac(N - 1).

          So this is a module, called tut1 that contains a function called fac>, which -takes one argument, N.

          The first part says that the factorial of 1 is 1.:

          fac(1) ->
          +fac(N) ->
          +    N * fac(N - 1).

          So this is a module, called tut1 that contains a function called fac>, which +takes one argument, N.

          The first part says that the factorial of 1 is 1.:

          fac(1) ->
               1;

          Notice that this part ends with a semicolon ; that indicates that there is more of the function fac> to come.

          The second part says that the factorial of N is N multiplied by the factorial of -N - 1:

          fac(N) ->
          -    N * fac(N - 1).

          Notice that this part ends with a . saying that there are no more parts of -this function.

          Compile the file:

          5> c(tut1).
          -{ok,tut1}

          And now calculate the factorial of 4.

          6> tut1:fac(4).
          +N - 1:

          fac(N) ->
          +    N * fac(N - 1).

          Notice that this part ends with a . saying that there are no more parts of +this function.

          Compile the file:

          5> c(tut1).
          +{ok,tut1}

          And now calculate the factorial of 4.

          6> tut1:fac(4).
           24

          Here the function fac> in module tut1 is called with argument 4.

          A function can have many arguments. Let us expand the module tut1 with the -function to multiply two numbers:

          -module(tut1).
          --export([fac/1, mult/2]).
          +function to multiply two numbers:

          -module(tut1).
          +-export([fac/1, mult/2]).
           
          -fac(1) ->
          +fac(1) ->
               1;
          -fac(N) ->
          -    N * fac(N - 1).
          +fac(N) ->
          +    N * fac(N - 1).
           
          -mult(X, Y) ->
          +mult(X, Y) ->
               X * Y.

          Notice that it is also required to expand the -export line with the -information that there is another function mult with two arguments.

          Compile:

          7> c(tut1).
          -{ok,tut1}

          Try out the new function mult:

          8> tut1:mult(3,4).
          +information that there is another function mult with two arguments.

          Compile:

          7> c(tut1).
          +{ok,tut1}

          Try out the new function mult:

          8> tut1:mult(3,4).
           12

          In this example the numbers are integers and the arguments in the functions in the code N, X, and Y are called variables. Variables must start with a capital letter (see Variables). Examples of @@ -222,56 +222,56 @@ Atom), for example, charles, centimeter, and inch. Atoms are simply names, nothing else. They are not like variables, which can have a value.

          Enter the next program in a file named tut2.erl). It can be useful for -converting from inches to centimeters and conversely:

          -module(tut2).
          --export([convert/2]).
          +converting from inches to centimeters and conversely:

          -module(tut2).
          +-export([convert/2]).
           
          -convert(M, inch) ->
          +convert(M, inch) ->
               M / 2.54;
           
          -convert(N, centimeter) ->
          -    N * 2.54.

          Compile:

          9> c(tut2).
          -{ok,tut2}

          Test:

          10> tut2:convert(3, inch).
          +convert(N, centimeter) ->
          +    N * 2.54.

          Compile:

          9> c(tut2).
          +{ok,tut2}

          Test:

          10> tut2:convert(3, inch).
           1.1811023622047243
          -11> tut2:convert(7, centimeter).
          +11> tut2:convert(7, centimeter).
           17.78

          Notice the introduction of decimals (floating point numbers) without any explanation. Hopefully you can cope with that.

          Let us see what happens if something other than centimeter or inch is -entered in the convert function:

          12> tut2:convert(3, miles).
          +entered in the convert function:

          12> tut2:convert(3, miles).
           ** exception error: no function clause matching tut2:convert(3,miles) (tut2.erl, line 4)

          The two parts of the convert function are called its clauses. As shown, miles is not part of either of the clauses. The Erlang system cannot match either of the clauses so an error message function_clause is returned. The shell formats the error message nicely, but the error tuple is saved in the -shell's history list and can be output by the shell command v/1:

          13> v(12).
          -{&#href_anchor"p">,{function_clause,[{tut2,convert,
          -                                [3,miles],
          -                                [{file,"tut2.erl"},{line,4}]},
          -                          {erl_eval,do_apply,6,
          -                                    [{file,"erl_eval.erl"},{line,677}]},
          -                          {shell,exprs,7,[{file,"shell.erl"},{line,687}]},
          -                          {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
          -                          {shell,eval_loop,3,
          -                                 [{file,"shell.erl"},{line,627}]}]}}

          +shell's history list and can be output by the shell command v/1:

          13> v(12).
          +{&#href_anchor"p">,{function_clause,[{tut2,convert,
          +                                [3,miles],
          +                                [{file,"tut2.erl"},{line,4}]},
          +                          {erl_eval,do_apply,6,
          +                                    [{file,"erl_eval.erl"},{line,677}]},
          +                          {shell,exprs,7,[{file,"shell.erl"},{line,687}]},
          +                          {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
          +                          {shell,eval_loop,3,
          +                                 [{file,"shell.erl"},{line,627}]}]}}

          Tuples

          -

          Now the tut2 program is hardly good programming style. Consider:

          tut2:convert(3, inch).

          Does this mean that 3 is in inches? Or does it mean that 3 is in centimeters and +

          Now the tut2 program is hardly good programming style. Consider:

          tut2:convert(3, inch).

          Does this mean that 3 is in inches? Or does it mean that 3 is in centimeters and is to be converted to inches? Erlang has a way to group things together to make things more understandable. These are called tuples and are surrounded by curly brackets, { and }.

          So, {inch,3} denotes 3 inches and {centimeter,5} denotes 5 centimeters. Now let us write a new program that converts centimeters to inches and conversely. -Enter the following code in a file called tut3.erl):

          -module(tut3).
          --export([convert_length/1]).
          +Enter the following code in a file called tut3.erl):

          -module(tut3).
          +-export([convert_length/1]).
           
          -convert_length({centimeter, X}) ->
          -    {inch, X / 2.54};
          -convert_length({inch, Y}) ->
          -    {centimeter, Y * 2.54}.

          Compile and test:

          14> c(tut3).
          -{ok,tut3}
          -15> tut3:convert_length({inch, 5}).
          -{centimeter,12.7}
          -16> tut3:convert_length(tut3:convert_length({inch, 5})).
          -{inch,5.0}

          Notice on line 16 that 5 inches is converted to centimeters and back again and +convert_length({centimeter, X}) -> + {inch, X / 2.54}; +convert_length({inch, Y}) -> + {centimeter, Y * 2.54}.

          Compile and test:

          14> c(tut3).
          +{ok,tut3}
          +15> tut3:convert_length({inch, 5}).
          +{centimeter,12.7}
          +16> tut3:convert_length(tut3:convert_length({inch, 5})).
          +{inch,5.0}

          Notice on line 16 that 5 inches is converted to centimeters and back again and reassuringly get back to the original value. That is, the argument to a function can be the result of another function. Consider how line 16 (above) works. The argument given to the function {inch,5} is first matched against the first @@ -280,9 +280,9 @@ before the ->). This having failed, let us try the head of the next clause that is, convert_length({inch,Y}). This matches, and Y gets the value 5.

          Tuples can have more than two parts, in fact as many parts as you want, and contain any valid Erlang term. For example, to represent the temperature of -various cities of the world:

          {moscow, {c, -10}}
          -{cape_town, {f, 70}}
          -{paris, {f, 28}}

          Tuples have a fixed number of items in them. Each item in a tuple is called an +various cities of the world:

          {moscow, {c, -10}}
          +{cape_town, {f, 70}}
          +{paris, {f, 28}}

          Tuples have a fixed number of items in them. Each item in a tuple is called an element. In the tuple {moscow,{c,-10}}, element 1 is moscow and element 2 is {c,-10}. Here c represents Celsius and f Fahrenheit.

          /usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html 2025-11-19 10:45:50.641481984 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html 2025-11-19 10:45:50.649482034 +0000 @@ -127,64 +127,64 @@

          The sys module has functions for simple debugging of processes implemented using behaviours. The code_lock example from -gen_statem Behaviour is used to illustrate this:

          Erlang/OTP 27 [erts-15.0] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
          +gen_statem Behaviour is used to illustrate this:

          Erlang/OTP 27 [erts-15.0] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
           
          -Eshell V15.0 (press Ctrl+G to abort, type help(). for help)
          -1> code_lock:start_link([1,2,3,4]).
          +Eshell V15.0 (press Ctrl+G to abort, type help(). for help)
          +1> code_lock:start_link([1,2,3,4]).
           Lock
          -{ok,<0.90.0>}
          -2> sys:statistics(code_lock, true).
          +{ok,<0.90.0>}
          +2> sys:statistics(code_lock, true).
           ok
          -3> sys:trace(code_lock, true).
          +3> sys:trace(code_lock, true).
           ok
          -4> code_lock:button(1).
          -*DBG* code_lock receive cast {button,1} in state locked
          +4> code_lock:button(1).
          +*DBG* code_lock receive cast {button,1} in state locked
           ok
          -*DBG* code_lock consume cast {button,1} in state locked
          -5> code_lock:button(2).
          -*DBG* code_lock receive cast {button,2} in state locked
          +*DBG* code_lock consume cast {button,1} in state locked
          +5> code_lock:button(2).
          +*DBG* code_lock receive cast {button,2} in state locked
           ok
          -*DBG* code_lock consume cast {button,2} in state locked
          -6> code_lock:button(3).
          -*DBG* code_lock receive cast {button,3} in state locked
          +*DBG* code_lock consume cast {button,2} in state locked
          +6> code_lock:button(3).
          +*DBG* code_lock receive cast {button,3} in state locked
           ok
          -*DBG* code_lock consume cast {button,3} in state locked
          -7> code_lock:button(4).
          -*DBG* code_lock receive cast {button,4} in state locked
          +*DBG* code_lock consume cast {button,3} in state locked
          +7> code_lock:button(4).
          +*DBG* code_lock receive cast {button,4} in state locked
           ok
           Unlock
          -*DBG* code_lock consume cast {button,4} in state locked => open
          -*DBG* code_lock start_timer {state_timeout,10000,lock,[]} in state open
          +*DBG* code_lock consume cast {button,4} in state locked => open
          +*DBG* code_lock start_timer {state_timeout,10000,lock,[]} in state open
           *DBG* code_lock receive state_timeout lock in state open
           Lock
           *DBG* code_lock consume state_timeout lock in state open => locked
          -8> sys:statistics(code_lock, get).
          -{ok,[{start_time,{{2024,5,3},{8,11,1}}},
          -     {current_time,{{2024,5,3},{8,11,48}}},
          -     {reductions,4098},
          -     {messages_in,5},
          -     {messages_out,0}]}
          -9> sys:statistics(code_lock, false).
          +8> sys:statistics(code_lock, get).
          +{ok,[{start_time,{{2024,5,3},{8,11,1}}},
          +     {current_time,{{2024,5,3},{8,11,48}}},
          +     {reductions,4098},
          +     {messages_in,5},
          +     {messages_out,0}]}
          +9> sys:statistics(code_lock, false).
           ok
          -10> sys:trace(code_lock, false).
          +10> sys:trace(code_lock, false).
           ok
          -11> sys:get_status(code_lock).
          -{status,<0.90.0>,
          -        {module,gen_statem},
          -        [[{'$initial_call',{code_lock,init,1}},
          -          {'$ancestors',[<0.88.0>,<0.87.0>,<0.70.0>,<0.65.0>,<0.69.0>,
          -                         <0.64.0>,kernel_sup,<0.47.0>]}],
          -         running,<0.88.0>,[],
          -         [{header,"Status for state machine code_lock"},
          -          {data,[{"Status",running},
          -                 {"Parent",<0.88.0>},
          -                 {"Modules",[code_lock]},
          -                 {"Time-outs",{0,[]}},
          -                 {"Logged Events",[]},
          -                 {"Postponed",[]}]},
          -          {data,[{"State",
          -                  {locked,#{code => [1,2,3,4],
          -                            length => 4,buttons => []}}}]}]]}

          +11> sys:get_status(code_lock). +{status,<0.90.0>, + {module,gen_statem}, + [[{'$initial_call',{code_lock,init,1}}, + {'$ancestors',[<0.88.0>,<0.87.0>,<0.70.0>,<0.65.0>,<0.69.0>, + <0.64.0>,kernel_sup,<0.47.0>]}], + running,<0.88.0>,[], + [{header,"Status for state machine code_lock"}, + {data,[{"Status",running}, + {"Parent",<0.88.0>}, + {"Modules",[code_lock]}, + {"Time-outs",{0,[]}}, + {"Logged Events",[]}, + {"Postponed",[]}]}, + {data,[{"State", + {locked,#{code => [1,2,3,4], + length => 4,buttons => []}}}]}]]}

          @@ -202,109 +202,109 @@

          Here follows the simple server from Overview, -implemented using sys and proc_lib to fit into a supervision tree:

          -module(ch4).
          --export([start_link/0]).
          --export([alloc/0, free/1]).
          --export([init/1]).
          --export([system_continue/3, system_terminate/4,
          +implemented using sys and proc_lib to fit into a supervision tree:

          -module(ch4).
          +-export([start_link/0]).
          +-export([alloc/0, free/1]).
          +-export([init/1]).
          +-export([system_continue/3, system_terminate/4,
                    write_debug/3,
          -         system_get_state/1, system_replace_state/2]).
          +         system_get_state/1, system_replace_state/2]).
           
          -start_link() ->
          -    proc_lib:start_link(ch4, init, [self()]).
          +start_link() ->
          +    proc_lib:start_link(ch4, init, [self()]).
           
          -alloc() ->
          -    ch4 ! {self(), alloc},
          +alloc() ->
          +    ch4 ! {self(), alloc},
               receive
          -        {ch4, Res} ->
          +        {ch4, Res} ->
                       Res
               end.
           
          -free(Ch) ->
          -    ch4 ! {free, Ch},
          +free(Ch) ->
          +    ch4 ! {free, Ch},
               ok.
           
          -init(Parent) ->
          -    register(ch4, self()),
          -    Chs = channels(),
          -    Deb = sys:debug_options([]),
          -    proc_lib:init_ack(Parent, {ok, self()}),
          -    loop(Chs, Parent, Deb).
          +init(Parent) ->
          +    register(ch4, self()),
          +    Chs = channels(),
          +    Deb = sys:debug_options([]),
          +    proc_lib:init_ack(Parent, {ok, self()}),
          +    loop(Chs, Parent, Deb).
           
          -loop(Chs, Parent, Deb) ->
          +loop(Chs, Parent, Deb) ->
               receive
          -        {From, alloc} ->
          -            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
          -                                    ch4, {in, alloc, From}),
          -            {Ch, Chs2} = alloc(Chs),
          -            From ! {ch4, Ch},
          -            Deb3 = sys:handle_debug(Deb2, fun ch4:write_debug/3,
          -                                    ch4, {out, {ch4, Ch}, From}),
          -            loop(Chs2, Parent, Deb3);
          -        {free, Ch} ->
          -            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
          -                                    ch4, {in, {free, Ch}}),
          -            Chs2 = free(Ch, Chs),
          -            loop(Chs2, Parent, Deb2);
          -
          -        {system, From, Request} ->
          -            sys:handle_system_msg(Request, From, Parent,
          -                                  ch4, Deb, Chs)
          +        {From, alloc} ->
          +            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
          +                                    ch4, {in, alloc, From}),
          +            {Ch, Chs2} = alloc(Chs),
          +            From ! {ch4, Ch},
          +            Deb3 = sys:handle_debug(Deb2, fun ch4:write_debug/3,
          +                                    ch4, {out, {ch4, Ch}, From}),
          +            loop(Chs2, Parent, Deb3);
          +        {free, Ch} ->
          +            Deb2 = sys:handle_debug(Deb, fun ch4:write_debug/3,
          +                                    ch4, {in, {free, Ch}}),
          +            Chs2 = free(Ch, Chs),
          +            loop(Chs2, Parent, Deb2);
          +
          +        {system, From, Request} ->
          +            sys:handle_system_msg(Request, From, Parent,
          +                                  ch4, Deb, Chs)
          /usr/share/doc/packages/erlang27-doc/doc/system/statem.html differs (HTML document, UTF-8 Unicode text, with very long lines)
          --- old//usr/share/doc/packages/erlang27-doc/doc/system/statem.html	2025-11-19 10:45:50.701482357 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/statem.html	2025-11-19 10:45:50.705482382 +0000
          @@ -128,7 +128,7 @@
           a state transition and the output is actions executed during
           the state transition.  Analogously to the mathematical model
           of a Finite State Machine, it can be described as a set of relations
          -of the following form:

          State(S) x Event(E) -> Actions(A), State(S')

          These relations are interpreted as follows: if we are in state S, +of the following form:

          State(S) x Event(E) -> Actions(A), State(S')

          These relations are interpreted as follows: if we are in state S, and event E occurs, we are to perform actions A, and make a transition to state S'. Notice that S' can be equal to S, and that A can be empty.

          In gen_statem we define a state change as a state transition in which the @@ -409,12 +409,12 @@ mode, automatically call the state callback with special arguments whenever the state changes, so you can write state enter actions near the rest of the state transition rules. -It typically looks like this:

          StateName(enter, OldState, Data) ->
          +It typically looks like this:

          StateName(enter, OldState, Data) ->
               ... code for state enter actions here ...
          -    {keep_state, NewData};
          -StateName(EventType, EventContent, Data) ->
          +    {keep_state, NewData};
          +StateName(EventType, EventContent, Data) ->
               ... code for actions here ...
          -    {next_state, NewStateName, NewData}.

          Since the state enter call is not an event there are restrictions on the + {next_state, NewStateName, NewData}.

          Since the state enter call is not an event there are restrictions on the allowed return value and state transition actions. You must not change the state, postpone this non-event, insert any events, or change the @@ -503,55 +503,55 @@ open --> open : {button, Digit} open --> locked : state_timeout\n* do_lock()

          This code lock state machine can be implemented using gen_statem with -the following callback module:

          -module(code_lock).
          --behaviour(gen_statem).
          --define(NAME, code_lock).
          +the following callback module:

          -module(code_lock).
          +-behaviour(gen_statem).
          +-define(NAME, code_lock).
           
          --export([start_link/1]).
          --export([button/1]).
          --export([init/1,callback_mode/0,terminate/3]).
          --export([locked/3,open/3]).
          -
          -start_link(Code) ->
          -    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).
          -
          -button(Button) ->
          -    gen_statem:cast(?NAME, {button,Button}).
          -
          -init(Code) ->
          -    do_lock(),
          -    Data = #href_anchor"ss">code => Code, length => length(Code), buttons => []},
          -    {ok, locked, Data}.
          -
          -callback_mode() ->
          -    state_functions.
          locked(
          -  cast, {button,Button},
          -  #{code := Code, length := Length, buttons := Buttons} = Data) ->
          +-export([start_link/1]).
          +-export([button/1]).
          +-export([init/1,callback_mode/0,terminate/3]).
          +-export([locked/3,open/3]).
          +
          +start_link(Code) ->
          +    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).
          +
          +button(Button) ->
          +    gen_statem:cast(?NAME, {button,Button}).
          +
          +init(Code) ->
          +    do_lock(),
          +    Data = #href_anchor"ss">code => Code, length => length(Code), buttons => []},
          +    {ok, locked, Data}.
          +
          +callback_mode() ->
          +    state_functions.
          locked(
          +  cast, {button,Button},
          +  #{code := Code, length := Length, buttons := Buttons} = Data) ->
               NewButtons =
                   if
          -            length(Buttons) < Length ->
          +            length(Buttons) < Length ->
                           Buttons;
                       true ->
          -                tl(Buttons)
          -        end ++ [Button],
          +                tl(Buttons)
          +        end ++ [Button],
               if
                   NewButtons =:= Code -> % Correct
          -	    do_unlock(),
          -            {next_state, open, Data#{buttons := []},
          -             [{state_timeout,10_000,lock}]}; % Time in milliseconds
          +	    do_unlock(),
          +            {next_state, open, Data#{buttons := []},
          +             [{state_timeout,10_000,lock}]}; % Time in milliseconds
           	true -> % Incomplete | Incorrect
          -            {next_state, locked, Data#{buttons := NewButtons}}
          -    end.
          open(state_timeout, lock,  Data) ->
          -    do_lock(),
          -    {next_state, locked, Data};
          -open(cast, {button,_}, Data) ->
          -    {next_state, open, Data}.
          do_lock() ->
          -    io:format("Lock~n", []).
          -do_unlock() ->
          -    io:format("Unlock~n", []).
          +            {next_state, locked, Data#{buttons := NewButtons}}
          +    end.
          open(state_timeout, lock,  Data) ->
          +    do_lock(),
          +    {next_state, locked, Data};
          +open(cast, {button,_}, Data) ->
          +    {next_state, open, Data}.
          do_lock() ->
          +    io:format("Lock~n", []).
          +do_unlock() ->
          +    io:format("Unlock~n", []).
           
          -terminate(_Reason, State, _Data) ->
          -    State =/= locked andalso do_lock(),
          +terminate(_Reason, State, _Data) ->
          +    State =/= locked andalso do_lock(),
               ok.

          The code is explained in the next sections.

          @@ -559,8 +559,8 @@ Starting gen_statem

          In the example in the previous section, gen_statem is started by calling -code_lock:start_link(Code):

          start_link(Code) ->
          -    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).

          start_link/1 calls function gen_statem:start_link/4, +code_lock:start_link(Code):

          start_link(Code) ->
          +    gen_statem:start_link({local,?NAME}, ?MODULE, Code, []).

          start_link/1 calls function gen_statem:start_link/4, which spawns and links to a new process, a gen_statem.

          • The first argument, {local,?NAME}, specifies the name. In this case, the gen_statem is locally registered as code_lock through the macro ?NAME.

            If the name is omitted, the gen_statem is not registered. Instead its pid must be used. The name can also be specified as {global, Name}, then the @@ -578,10 +578,10 @@ Data is the internal server data of the gen_statem. Here the server data is a map() with key code that stores the correct button sequence, key length store its length, and key buttons -that stores the collected buttons up to the same length.

            init(Code) ->
            -    do_lock(),
            -    Data = #href_anchor"ss">code => Code, length => length(Code), buttons => []},
            -    {ok, locked, Data}.

            Function gen_statem:start_link/3,4 +that stores the collected buttons up to the same length.

            init(Code) ->
            +    do_lock(),
            +    Data = #href_anchor"ss">code => Code, length => length(Code), buttons => []},
            +    {ok, locked, Data}.

            Function gen_statem:start_link/3,4 is synchronous. It does not return until the gen_statem is initialized and is ready to receive events.

            Function gen_statem:start_link/3,4 must be used if the gen_statem is part of a supervision tree, that is, @@ -590,7 +590,7 @@ a standalone gen_statem, meaning it is not part of a supervision tree.

            Function Module:callback_mode/0 selects the CallbackMode for the callback module, in this case state_functions. -That is, each state has its own handler function:

            callback_mode() ->
            +That is, each state has its own handler function:

            callback_mode() ->
                 state_functions.

            @@ -598,8 +598,8 @@ Handling Events

            The function notifying the code lock about a button event is implemented using -gen_statem:cast/2:

            button(Button) ->
            -    gen_statem:cast(?NAME, {button,Button}).

            The first argument is the name of the gen_statem and must agree with +gen_statem:cast/2:

            button(Button) ->
            +    gen_statem:cast(?NAME, {button,Button}).

            The first argument is the name of the gen_statem and must agree with the name used to start it. So, we use the same macro ?NAME as when starting. {button, Button} is the event content.

            The event is sent to the gen_statem. When the event is received, the gen_statem calls StateName(cast, Event, Data), which is expected @@ -607,30 +607,30 @@ {next_state, NewStateName, NewData, Actions}. StateName is the name of the current state and NewStateName is the name of the next state. NewData is a new value for the server data of the gen_statem, -and Actions is a list of actions to be performed by the gen_statem engine.

            locked(
            -  cast, {button,Button},
            -  #{code := Code, length := Length, buttons := Buttons} = Data) ->
            +and Actions is a list of actions to be performed by the gen_statem engine.

            locked(
            +  cast, {button,Button},
            +  #{code := Code, length := Length, buttons := Buttons} = Data) ->
                 NewButtons =
                     if
            -            length(Buttons) < Length ->
            +            length(Buttons) < Length ->
                             Buttons;
                         true ->
            -                tl(Buttons)
            -        end ++ [Button],
            +                tl(Buttons)
            +        end ++ [Button],
                 if
                     NewButtons =:= Code -> % Correct
            -	    do_unlock(),
            -            {next_state, open, Data#{buttons := []},
            -             [{state_timeout,10_000,lock}]}; % Time in milliseconds
            +	    do_unlock(),
            +            {next_state, open, Data#{buttons := []},
            +             [{state_timeout,10_000,lock}]}; % Time in milliseconds
             	true -> % Incomplete | Incorrect
            -            {next_state, locked, Data#{buttons := NewButtons}}
            /usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html differs (HTML document, UTF-8 Unicode text, with very long lines)
            --- old//usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html	2025-11-19 10:45:50.733482556 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html	2025-11-19 10:45:50.737482581 +0000
            @@ -132,24 +132,24 @@
               Example
             

          The callback module for a supervisor starting the server from -gen_server Behaviour can look as follows:

          -module(ch_sup).
          --behaviour(supervisor).
          +gen_server Behaviour can look as follows:

          -module(ch_sup).
          +-behaviour(supervisor).
           
          --export([start_link/0]).
          --export([init/1]).
          +-export([start_link/0]).
          +-export([init/1]).
           
          -start_link() ->
          -    supervisor:start_link(ch_sup, []).
          +start_link() ->
          +    supervisor:start_link(ch_sup, []).
           
          -init(_Args) ->
          -    SupFlags = #href_anchor"ss">strategy => one_for_one, intensity => 1, period => 5},
          -    ChildSpecs = [#{id => ch3,
          -                    start => {ch3, start_link, []},
          +init(_Args) ->
          +    SupFlags = #href_anchor"ss">strategy => one_for_one, intensity => 1, period => 5},
          +    ChildSpecs = [#{id => ch3,
          +                    start => {ch3, start_link, []},
                               restart => permanent,
                               shutdown => brutal_kill,
                               type => worker,
          -                    modules => [ch3]}],
          -    {ok, {SupFlags, ChildSpecs}}.

          The SupFlags variable in the return value from init/1 represents the + modules => [ch3]}], + {ok, {SupFlags, ChildSpecs}}.

          The SupFlags variable in the return value from init/1 represents the supervisor flags.

          The ChildSpecs variable in the return value from init/1 is a list of child specifications.

          @@ -157,15 +157,15 @@ Supervisor Flags

          -

          This is the type definition for the supervisor flags:

          sup_flags() = #{strategy => strategy(),           % optional
          -                intensity => non_neg_integer(),   % optional
          -                period => pos_integer(),          % optional
          -                auto_shutdown => auto_shutdown()} % optional
          -    strategy() = one_for_all
          +

          This is the type definition for the supervisor flags:

          sup_flags() = #{strategy => strategy(),           % optional
          +                intensity => non_neg_integer(),   % optional
          +                period => pos_integer(),          % optional
          +                auto_shutdown => auto_shutdown()} % optional
          +    strategy() = one_for_all
                          | one_for_one
                          | rest_for_one
                          | simple_one_for_one
          -    auto_shutdown() = never
          +    auto_shutdown() = never
                               | any_significant
                               | all_significant

          -

          The type definition for a child specification is as follows:

          child_spec() = #{id => child_id(),             % mandatory
          -                 start => mfargs(),            % mandatory
          -                 restart => restart(),         % optional
          -                 significant => significant(), % optional
          -                 shutdown => shutdown(),       % optional
          -                 type => worker(),             % optional
          -                 modules => modules()}         % optional
          -    child_id() = term()
          -    mfargs() = {M :: module(), F :: atom(), A :: [term()]}
          -    modules() = [module()] | dynamic
          -    restart() = permanent | transient | temporary
          -    significant() = boolean()
          -    shutdown() = brutal_kill | timeout()
          -    worker() = worker | supervisor
          • id is used to identify the child specification internally by the supervisor.

            The id key is mandatory.

            Note that this identifier occasionally has been called "name". As far as +

            The type definition for a child specification is as follows:

            child_spec() = #{id => child_id(),             % mandatory
            +                 start => mfargs(),            % mandatory
            +                 restart => restart(),         % optional
            +                 significant => significant(), % optional
            +                 shutdown => shutdown(),       % optional
            +                 type => worker(),             % optional
            +                 modules => modules()}         % optional
            +    child_id() = term()
            +    mfargs() = {M :: module(), F :: atom(), A :: [term()]}
            +    modules() = [module()] | dynamic
            +    restart() = permanent | transient | temporary
            +    significant() = boolean()
            +    shutdown() = brutal_kill | timeout()
            +    worker() = worker | supervisor
            • id is used to identify the child specification internally by the supervisor.

              The id key is mandatory.

              Note that this identifier occasionally has been called "name". As far as possible, the terms "identifier" or "id" are now used but in order to keep backwards compatibility, some occurrences of "name" can still be found, for example in error messages.

            • start defines the function call used to start the child process. It is a @@ -461,32 +461,32 @@ name of the callback module.

            This information is used by the release handler during upgrades and downgrades; see Release Handling.

            The modules key is optional. If it is not given, it defaults to [M], where M comes from the child's start {M,F,A}.

          Example: The child specification to start the server ch3 in the previous -example look as follows:

          #href_anchor"ss">id => ch3,
          -  start => {ch3, start_link, []},
          +example look as follows:

          #href_anchor"ss">id => ch3,
          +  start => {ch3, start_link, []},
             restart => permanent,
             shutdown => brutal_kill,
             type => worker,
          -  modules => [ch3]}

          or simplified, relying on the default values:

          #{id => ch3,
          +  modules => [ch3]}

          or simplified, relying on the default values:

          #{id => ch3,
             start => {ch3, start_link, []},
             shutdown => brutal_kill}

          Example: A child specification to start the event manager from the chapter about -gen_event:

          #{id => error_man,
          -  start => {gen_event, start_link, [{local, error_man}]},
          -  modules => dynamic}

          Both server and event manager are registered processes which can be expected to +gen_event:

          #{id => error_man,
          +  start => {gen_event, start_link, [{local, error_man}]},
          +  modules => dynamic}

          Both server and event manager are registered processes which can be expected to be always accessible. Thus they are specified to be permanent.

          ch3 does not need to do any cleaning up before termination. Thus, no shutdown time is needed, but brutal_kill is sufficient. error_man can need some time for the event handlers to clean up, thus the shutdown time is set to 5000 ms -(which is the default value).

          Example: A child specification to start another supervisor:

          #{id => sup,
          -  start => {sup, start_link, []},
          +(which is the default value).

          Example: A child specification to start another supervisor:

          #{id => sup,
          +  start => {sup, start_link, []},
             restart => transient,
          -  type => supervisor} % will cause default shutdown=>infinity

          + type => supervisor} % will cause default shutdown=>infinity

          Starting a Supervisor

          In the previous example, the supervisor is started by calling -ch_sup:start_link():

          start_link() ->
          -    supervisor:start_link(ch_sup, []).

          ch_sup:start_link calls function supervisor:start_link/2, which spawns and +ch_sup:start_link():

          start_link() ->
          +    supervisor:start_link(ch_sup, []).

          ch_sup:start_link calls function supervisor:start_link/2, which spawns and links to a new process, a supervisor.

          • The first argument, ch_sup, is the name of the callback module, that is, the module where the init callback function is located.
          • The second argument, [], is a term that is passed as is to the callback function init. Here, init does not need any data and ignores the argument.

          In this case, the supervisor is not registered. Instead its pid must be used. A @@ -494,12 +494,12 @@ supervisor:start_link({local, Name}, Module, Args) or supervisor:start_link({global, Name}, Module, Args).

          The new supervisor process calls the callback function ch_sup:init([]). init -has to return {ok, {SupFlags, ChildSpecs}}:

          init(_Args) ->
          -    SupFlags = #{},
          -    ChildSpecs = [#{id => ch3,
          -                    start => {ch3, start_link, []},
          -                    shutdown => brutal_kill}],
          -    {ok, {SupFlags, ChildSpecs}}.

          Subsequently, the supervisor starts its child processes according to the child +has to return {ok, {SupFlags, ChildSpecs}}:

          init(_Args) ->
          +    SupFlags = #{},
          +    ChildSpecs = [#{id => ch3,
          +                    start => {ch3, start_link, []},
          +                    shutdown => brutal_kill}],
          +    {ok, {SupFlags, ChildSpecs}}.

          Subsequently, the supervisor starts its child processes according to the child specifications in the start specification. In this case there is a single child process, called ch3.

          supervisor:start_link/3 is synchronous. It does not return until all child processes have been started.

          @@ -536,23 +536,23 @@

          A supervisor with restart strategy simple_one_for_one is a simplified one_for_one supervisor, where all child processes are dynamically added instances of the same process.

          The following is an example of a callback module for a simple_one_for_one -supervisor:

          -module(simple_sup).
          --behaviour(supervisor).
          +supervisor:

          -module(simple_sup).
          +-behaviour(supervisor).
           
          --export([start_link/0]).
          --export([init/1]).
          +-export([start_link/0]).
          +-export([init/1]).
           
          -start_link() ->
          -    supervisor:start_link(simple_sup, []).
          +start_link() ->
          +    supervisor:start_link(simple_sup, []).
           
          -init(_Args) ->
          -    SupFlags = #{strategy => simple_one_for_one,
          +init(_Args) ->
          +    SupFlags = #{strategy => simple_one_for_one,
                            intensity => 0,
          -                 period => 1},
          -    ChildSpecs = [#{id => call,
          -                    start => {call, start_link, []},
          -                    shutdown => brutal_kill}],
          -    {ok, {SupFlags, ChildSpecs}}.

          When started, the supervisor does not start any child + period => 1}, + ChildSpecs = [#{id => call, + start => {call, start_link, []}, + shutdown => brutal_kill}], + {ok, {SupFlags, ChildSpecs}}.

          When started, the supervisor does not start any child processes. Instead, all child processes need to be added dynamically by calling supervisor:start_child(Sup, List).

          Sup is the pid, or name, of the supervisor. List is an arbitrary list of terms, which are added to the list of arguments specified in the child @@ -664,7 +664,7 @@ Erlang programming language

          /usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html 2025-11-19 10:45:50.761482731 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html 2025-11-19 10:45:50.761482731 +0000 @@ -217,7 +217,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html 2025-11-19 10:45:50.781482855 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html 2025-11-19 10:45:50.785482880 +0000 @@ -270,7 +270,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 2025-11-19 10:45:50.817483080 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 2025-11-19 10:45:50.813483055 +0000 @@ -150,11 +150,11 @@

          The delete operation is considered successful if the element was not present in the table. Hence all attempts to check that the element is present in the Ets/Mnesia table before deletion are unnecessary. Here follows an example for -Ets tables:

          DO

          ets:delete(Tab, Key),

          DO NOT

          case ets:lookup(Tab, Key) of
          -    [] ->
          +Ets tables:

          DO

          ets:delete(Tab, Key),

          DO NOT

          case ets:lookup(Tab, Key) of
          +    [] ->
                   ok;
          -    [_|_] ->
          -        ets:delete(Tab, Key)
          +    [_|_] ->
          +        ets:delete(Tab, Key)
           end,

          @@ -166,49 +166,49 @@ functions print_name/1, print_age/1, and print_occupation/1.

          Note

          If the function print_name/1, and so on, had been interface functions, the situation would have been different, as you do not want the user of the interface to know about the internal data representation.

          DO

          %%% Interface function
          -print_person(PersonId) ->
          +print_person(PersonId) ->
               %% Look up the person in the named table person,
          -    case ets:lookup(person, PersonId) of
          -        [Person] ->
          -            print_name(Person),
          -            print_age(Person),
          -            print_occupation(Person);
          -        [] ->
          -            io:format("No person with ID = ~p~n", [PersonID])
          +    case ets:lookup(person, PersonId) of
          +        [Person] ->
          +            print_name(Person),
          +            print_age(Person),
          +            print_occupation(Person);
          +        [] ->
          +            io:format("No person with ID = ~p~n", [PersonID])
               end.
           
           %%% Internal functions
          -print_name(Person) ->
          -    io:format("No person ~p~n", [Person#person.name]).
          +print_name(Person) ->
          +    io:format("No person ~p~n", [Person#person.name]).
           
          -print_age(Person) ->
          -    io:format("No person ~p~n", [Person#person.age]).
          +print_age(Person) ->
          +    io:format("No person ~p~n", [Person#person.age]).
           
          -print_occupation(Person) ->
          -    io:format("No person ~p~n", [Person#person.occupation]).

          DO NOT

          %%% Interface function
          -print_person(PersonId) ->
          +print_occupation(Person) ->
          +    io:format("No person ~p~n", [Person#person.occupation]).

          DO NOT

          %%% Interface function
          +print_person(PersonId) ->
               %% Look up the person in the named table person,
          -    case ets:lookup(person, PersonId) of
          -        [Person] ->
          -            print_name(PersonID),
          -            print_age(PersonID),
          -            print_occupation(PersonID);
          -        [] ->
          -            io:format("No person with ID = ~p~n", [PersonID])
          +    case ets:lookup(person, PersonId) of
          +        [Person] ->
          +            print_name(PersonID),
          +            print_age(PersonID),
          +            print_occupation(PersonID);
          +        [] ->
          +            io:format("No person with ID = ~p~n", [PersonID])
               end.
           
           %%% Internal functions
          -print_name(PersonID) ->
          -    [Person] = ets:lookup(person, PersonId),
          -    io:format("No person ~p~n", [Person#person.name]).
          -
          -print_age(PersonID) ->
          -    [Person] = ets:lookup(person, PersonId),
          -    io:format("No person ~p~n", [Person#person.age]).
          -
          -print_occupation(PersonID) ->
          -    [Person] = ets:lookup(person, PersonId),
          -    io:format("No person ~p~n", [Person#person.occupation]).

          +print_name(PersonID) -> + [Person] = ets:lookup(person, PersonId), + io:format("No person ~p~n", [Person#person.name]). + +print_age(PersonID) -> + [Person] = ets:lookup(person, PersonId), + io:format("No person ~p~n", [Person#person.age]). + +print_occupation(PersonID) -> + [Person] = ets:lookup(person, PersonId), + io:format("No person ~p~n", [Person#person.occupation]).

          @@ -230,30 +230,30 @@ #person{idno = 4, name = "Carl", age = 25, occupation = "mailman"}]

          If you must return all data stored in the Ets table, you can use ets:tab2list/1. However, usually you are only interested in a subset of the information in which case ets:tab2list/1 is expensive. If you only want to -extract one field from each record, for example, the age of every person, then:

          DO

          ets:select(Tab, [{#person{idno='_',
          +extract one field from each record, for example, the age of every person, then:

          DO

          ets:select(Tab, [{#person{idno='_',
                                     name='_',
                                     age='$1',
          -                          occupation = '_'},
          -                [],
          -                ['$1']}]),

          DO NOT

          TabList = ets:tab2list(Tab),
          -lists:map(fun(X) -> X#person.age end, TabList),

          If you are only interested in the age of all persons named "Bryan", then:

          DO

          ets:select(Tab, [{#person{idno='_',
          +                          occupation = '_'},
          +                [],
          +                ['$1']}]),

          DO NOT

          TabList = ets:tab2list(Tab),
          +lists:map(fun(X) -> X#person.age end, TabList),

          If you are only interested in the age of all persons named "Bryan", then:

          DO

          ets:select(Tab, [{#person{idno='_',
                                     name="Bryan",
                                     age='$1',
          -                          occupation = '_'},
          -                [],
          -                ['$1']}])

          DO NOT

          TabList = ets:tab2list(Tab),
          -lists:foldl(fun(X, Acc) -> case X#person.name of
          +                          occupation = '_'},
          +                [],
          +                ['$1']}])

          DO NOT

          TabList = ets:tab2list(Tab),
          +lists:foldl(fun(X, Acc) -> case X#person.name of
                                           "Bryan" ->
          -                                    [X#person.age|Acc];
          +                                    [X#person.age|Acc];
                                            _ ->
                                                Acc
                                      end
          -             end, [], TabList)

          If you need all information stored in the Ets table about persons named "Bryan", -then:

          DO

          ets:select(Tab, [{#person{idno='_',
          +             end, [], TabList)

          If you need all information stored in the Ets table about persons named "Bryan", +then:

          DO

          ets:select(Tab, [{#person{idno='_',
                                     name="Bryan",
                                     age='_',
          -                          occupation = '_'}, [], ['$_']}]),

          DO NOT

          TabList = ets:tab2list(Tab),
          -lists:filter(fun(X) -> X#person.name == "Bryan" end, TabList),

          + occupation = '_'}, [], ['$_']}]),

          DO NOT

          TabList = ets:tab2list(Tab),
          +lists:filter(fun(X) -> X#person.name == "Bryan" end, TabList),

          @@ -297,12 +297,12 @@ #index_entry{name="Bryan", idno=2}, #index_entry{name="Bryan", idno=3}, #index_entry{name="Carl", idno=4}]

          Given this index table, a lookup of the age fields for all persons named -"Bryan" can be done as follows:

          MatchingIDs = ets:lookup(IndexTable,"Bryan"),
          -lists:map(fun(#index_entry{idno = ID}) ->
          -                 [#person{age = Age}] = ets:lookup(PersonTable, ID),
          +"Bryan" can be done as follows:

          MatchingIDs = ets:lookup(IndexTable,"Bryan"),
          +lists:map(fun(#index_entry{idno = ID}) ->
          +                 [#person{age = Age}] = ets:lookup(PersonTable, ID),
                            Age
                     end,
          -          MatchingIDs),

          Notice that this code does not use ets:match/2, but instead uses the + MatchingIDs),

          Notice that this code does not use ets:match/2, but instead uses the ets:lookup/2 call. The lists:map/2 call is only used to traverse the idnos matching the name "Bryan" in the table; thus the number of lookups in the master table is minimized.

          Keeping an index table introduces some overhead when inserting records in the @@ -325,17 +325,17 @@ mnesia:match_object() as these function traverse the whole table. Instead, you can create a secondary index and use mnesia:index_read/3 to get faster access at the expense of using more -memory.

          Example:

          -record(person, {idno, name, age, occupation}).
          +memory.

          Example:

          -record(person, {idno, name, age, occupation}).
                   ...
          -{atomic, ok} =
          -mnesia:create_table(person, [{index,[#person.age]},
          -                              {attributes,
          -                                    record_info(fields, person)}]),
          -{atomic, ok} = mnesia:add_table_index(person, age),
          +{atomic, ok} =
          +mnesia:create_table(person, [{index,[#person.age]},
          +                              {attributes,
          +                                    record_info(fields, person)}]),
          +{atomic, ok} = mnesia:add_table_index(person, age),
           ...
           
           PersonsAge42 =
          -     mnesia:dirty_index_read(person, 42, #person.age),

          + mnesia:dirty_index_read(person, 42, #person.age),

          @@ -349,19 +349,19 @@ the table. Other processes must send update requests to that process.

          Example:

          ...
           %% Using transaction
           
          -Fun = fun() ->
          -          [mnesia:read({Table, Key}),
          -           mnesia:read({Table2, Key2})]
          +Fun = fun() ->
          +          [mnesia:read({Table, Key}),
          +           mnesia:read({Table2, Key2})]
                 end,
           
          /usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html differs (HTML document, UTF-8 Unicode text)
          --- old//usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html	2025-11-19 10:45:50.841483229 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html	2025-11-19 10:45:50.841483229 +0000
          @@ -188,7 +188,7 @@
                     Erlang programming language
           
                 

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/typespec.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/typespec.html 2025-11-19 10:45:50.869483404 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/typespec.html 2025-11-19 10:45:50.873483428 +0000 @@ -241,11 +241,11 @@ predefined aliases for the type unions also shown in the table.

          Built-in typeDefined as
          term/0any/0
          binary/0<<_:_*8>>
          nonempty_binary/0<<_:8, _:_*8>>
          bitstring/0<<_:_*1>>
          nonempty_bitstring/0<<_:1, _:_*1>>
          boolean/0'false' | 'true'
          byte/00..255
          char/00..16#10ffff
          nil/0[]
          number/0integer/0 | float/0
          list/0[any()]
          maybe_improper_list/0maybe_improper_list(any(), any())
          nonempty_list/0nonempty_list(any())
          string/0[char()]
          nonempty_string/0[char(),...]
          iodata/0iolist() | binary()
          iolist/0maybe_improper_list(byte() | binary() | iolist(), binary() | [])
          map/0#{any() => any()}
          function/0fun()
          module/0atom/0
          mfa/0{module(),atom(),arity()}
          arity/00..255
          identifier/0pid() | port() | reference()
          node/0atom/0
          timeout/0'infinity' | non_neg_integer()
          no_return/0none/0

          Table: Built-in types, predefined aliases

          In addition, the following three built-in types exist and can be thought as defined below, though strictly their "type definition" is not valid syntax according to the type language defined above.

          Built-in typeCan be thought defined by the syntax
          non_neg_integer/00..
          pos_integer/01..
          neg_integer/0..-1

          Table: Additional built-in types

          Note

          The following built-in list types also exist, but they are expected to be -rarely used. Hence, they have long names:

          nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any(), any())
          -nonempty_improper_list(Type1, Type2)
          -nonempty_maybe_improper_list(Type1, Type2)

          where the last two types define the set of Erlang terms one would expect.

          Also for convenience, record notation is allowed to be used. Records are -shorthands for the corresponding tuples:

          Record :: #Erlang_Atom{}
          -        | #Erlang_Atom{Fields}

          Records are extended to possibly contain type information. This is described in +rarely used. Hence, they have long names:

          nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any(), any())
          +nonempty_improper_list(Type1, Type2)
          +nonempty_maybe_improper_list(Type1, Type2)

          where the last two types define the set of Erlang terms one would expect.

          Also for convenience, record notation is allowed to be used. Records are +shorthands for the corresponding tuples:

          Record :: #Erlang_Atom{}
          +        | #Erlang_Atom{Fields}

          Records are extended to possibly contain type information. This is described in Type Information in Record Declarations.

          @@ -256,8 +256,8 @@ name as a built-in type.

          It is recommended to avoid deliberately reusing built-in names because it can be confusing. However, when an Erlang/OTP release introduces a new type, code that happened to define its own type having the same name will continue to work.

          As an example, imagine that the Erlang/OTP 42 release introduces a new type -gadget() defined like this:

          -type gadget() :: {'gadget', reference()}.

          Further imagine that some code has its own (different) definition of gadget(), -for example:

          -type gadget() :: #{}.

          Since redefinitions are allowed, the code will still compile (but with a +gadget() defined like this:

          -type gadget() :: {'gadget', reference()}.

          Further imagine that some code has its own (different) definition of gadget(), +for example:

          -type gadget() :: #{}.

          Since redefinitions are allowed, the code will still compile (but with a warning), and Dialyzer will not emit any additional warnings.

          @@ -266,8 +266,8 @@

          As seen, the basic syntax of a type is an atom followed by closed parentheses. New types are declared using -type and -opaque attributes as in the -following:

          -type my_struct_type() :: Type.
          --opaque my_opaq_type() :: Type.

          The type name is the atom my_struct_type, followed by parentheses. Type is a +following:

          -type my_struct_type() :: Type.
          +-opaque my_opaq_type() :: Type.

          The type name is the atom my_struct_type, followed by parentheses. Type is a type as defined in the previous section. A current restriction is that Type can contain only predefined types, or user-defined types which are either of the following:

          • Module-local type, that is, with a definition that is present in the code of @@ -277,10 +277,10 @@ similar restriction currently exists for records.)

            Type declarations can also be parameterized by including type variables between the parentheses. The syntax of type variables is the same as Erlang variables, that is, starts with an upper-case letter. These variables is to -appear on the RHS of the definition. A concrete example follows:

            -type orddict(Key, Val) :: [{Key, Val}].

            A module can export some types to declare that other modules are allowed to -refer to them as remote types. This declaration has the following form:

            -export_type([T1/A1, ..., Tk/Ak]).

            Here the Tis are atoms (the name of the type) and the Ais are their arguments.

            Example:

            -export_type([my_struct_type/0, orddict/2]).

            Assuming that these types are exported from module 'mod', you can refer to -them from other modules using remote type expressions like the following:

            mod:my_struct_type()
            -mod:orddict(atom(), term())

            It is not allowed to refer to types that are not declared as exported.

            Types declared as opaque represent sets of terms whose structure is not +appear on the RHS of the definition. A concrete example follows:

            -type orddict(Key, Val) :: [{Key, Val}].

            A module can export some types to declare that other modules are allowed to +refer to them as remote types. This declaration has the following form:

            -export_type([T1/A1, ..., Tk/Ak]).

            Here the Tis are atoms (the name of the type) and the Ais are their arguments.

            Example:

            -export_type([my_struct_type/0, orddict/2]).

            Assuming that these types are exported from module 'mod', you can refer to +them from other modules using remote type expressions like the following:

            mod:my_struct_type()
            +mod:orddict(atom(), term())

            It is not allowed to refer to types that are not declared as exported.

            Types declared as opaque represent sets of terms whose structure is not supposed to be visible from outside of their defining module. That is, only the module defining them is allowed to depend on their term structure. Consequently, such types do not make much sense as module local - module local types are not @@ -291,33 +291,33 @@ Type Information in Record Declarations

          The types of record fields can be specified in the declaration of the record. -The syntax for this is as follows:

          -record(rec, {field1 :: Type1, field2, field3 :: Type3}).

          For fields without type annotations, their type defaults to any(). That is, the -previous example is a shorthand for the following:

          -record(rec, {field1 :: Type1, field2 :: any(), field3 :: Type3}).

          In the presence of initial values for fields, the type must be declared after -the initialization, as follows:

          -record(rec, {field1 = [] :: Type1, field2, field3 = 42 :: Type3}).

          The initial values for fields are to be compatible with (that is, a member of) +The syntax for this is as follows:

          -record(rec, {field1 :: Type1, field2, field3 :: Type3}).

          For fields without type annotations, their type defaults to any(). That is, the +previous example is a shorthand for the following:

          -record(rec, {field1 :: Type1, field2 :: any(), field3 :: Type3}).

          In the presence of initial values for fields, the type must be declared after +the initialization, as follows:

          -record(rec, {field1 = [] :: Type1, field2, field3 = 42 :: Type3}).

          The initial values for fields are to be compatible with (that is, a member of) the corresponding types. This is checked by the compiler and results in a compilation error if a violation is detected.

          Change

          Before Erlang/OTP 19, for fields without initial values, the singleton type 'undefined' was added to all declared types. In other words, the following -two record declarations had identical effects:

          -record(rec, {f1 = 42 :: integer(),
          -             f2      :: float(),
          -             f3      :: 'a' | 'b'}).
          +two record declarations had identical effects:

          -record(rec, {f1 = 42 :: integer(),
          +             f2      :: float(),
          +             f3      :: 'a' | 'b'}).
           
          --record(rec, {f1 = 42 :: integer(),
          -              f2      :: 'undefined' | float(),
          -              f3      :: 'undefined' | 'a' | 'b'}).

          This is no longer the case. If you require 'undefined' in your record field +-record(rec, {f1 = 42 :: integer(), + f2 :: 'undefined' | float(), + f3 :: 'undefined' | 'a' | 'b'}).

          This is no longer the case. If you require 'undefined' in your record field type, you must explicitly add it to the typespec, as in the 2nd example.

          Any record, containing type information or not, once defined, can be used as a type using the following syntax:

          #rec{}

          In addition, the record fields can be further specified when using a record type by adding type information about the field as follows:

          #rec{some_field :: Type}

          Any unspecified fields are assumed to have the type in the original record declaration.

          Note

          When records are used to create patterns for ETS and Mnesia match functions, -Dialyzer may need some help not to emit bad warnings. For example:

          -type height() :: pos_integer().
          --record(person, {name :: string(), height :: height()}).
          +Dialyzer may need some help not to emit bad warnings. For example:

          -type height() :: pos_integer().
          +-record(person, {name :: string(), height :: height()}).
           
          -lookup(Name, Tab) ->
          -    ets:match_object(Tab, #person{name = Name, _ = '_'}).

          Dialyzer will emit a warning since '_' is not in the type of record field +lookup(Name, Tab) -> + ets:match_object(Tab, #person{name = Name, _ = '_'}).

          Dialyzer will emit a warning since '_' is not in the type of record field height.

          The recommended way of dealing with this is to declare the smallest record field types to accommodate all your needs, and then create refinements as -needed. The modified example:

          -record(person, {name :: string(), height :: height() | '_'}).
          +needed. The modified example:

          -record(person, {name :: string(), height :: height() | '_'}).
           
          --type person() :: #person{height :: height()}.

          In specifications and type declarations the type person() is to be preferred +-type person() :: #person{height :: height()}.

          In specifications and type declarations the type person() is to be preferred before #person{}.

          @@ -330,27 +330,27 @@ arguments, otherwise the compilation fails.

          The following longer format with module name is also valid as long as Module is the name of the current module. This can be useful for documentation purposes.

          -spec Module:Function(ArgType1, ..., ArgTypeN) -> ReturnType.

          Also, for documentation purposes, argument names can be given:

          -spec Function(ArgName1 :: Type1, ..., ArgNameN :: TypeN) -> RT.

          A function specification can be overloaded. That is, it can have several types, -separated by a semicolon (;). For example:

          -spec foo(T1, T2) -> T3;
          -         (T4, T5) -> T6.

          A current restriction, which currently results in a warning by Dialyzer, is that +separated by a semicolon (;). For example:

          -spec foo(T1, T2) -> T3;
          +         (T4, T5) -> T6.

          A current restriction, which currently results in a warning by Dialyzer, is that the domains of the argument types cannot overlap. For example, the following -specification results in a warning:

          -spec foo(pos_integer()) -> pos_integer();
          -         (integer()) -> integer().

          Type variables can be used in specifications to specify relations for the input +specification results in a warning:

          -spec foo(pos_integer()) -> pos_integer();
          +         (integer()) -> integer().

          Type variables can be used in specifications to specify relations for the input and output arguments of a function. For example, the following specification defines the type of a polymorphic identity function:

          -spec id(X) -> X.

          Notice that the above specification does not restrict the input and output type in any way. These types can be constrained by guard-like subtype constraints and -provide bounded quantification:

          -spec id(X) -> X when X :: tuple().

          Currently, the :: constraint (read as "is a subtype of") is the only guard +provide bounded quantification:

          -spec id(X) -> X when X :: tuple().

          Currently, the :: constraint (read as "is a subtype of") is the only guard constraint that can be used in the when part of a -spec attribute.

          Note

          The above function specification uses multiple occurrences of the same type variable. That provides more type information than the following function -specification, where the type variables are missing:

          -spec id(tuple()) -> tuple().

          The latter specification says that the function takes some tuple and returns +specification, where the type variables are missing:

          -spec id(tuple()) -> tuple().

          The latter specification says that the function takes some tuple and returns some tuple. The specification with the X type variable specifies that the function takes a tuple and returns the same tuple.

          However, it is up to the tools that process the specifications to choose whether to take this extra information into account or not.

          The scope of a :: constraint is the (...) -> RetType specification after which it appears. To avoid confusion, it is suggested that different variables are used in different constituents of an overloaded contract, as shown in the -following example:

          -spec foo({X, integer()}) -> X when X :: atom();
          -         ([Y]) -> Y when Y :: number().

          Some functions in Erlang are not meant to return; either because they define +following example:

          -spec foo({X, integer()}) -> X when X :: atom();
          +         ([Y]) -> Y when Y :: number().

          Some functions in Erlang are not meant to return; either because they define servers or because they are used to throw exceptions, as in the following -function:

          my_error(Err) -> throw({error, Err}).

          For such functions, it is recommended to use the special no_return/0 type +function:

          my_error(Err) -> throw({error, Err}).

          For such functions, it is recommended to use the special no_return/0 type for their "return", through a contract of the following form:

          -spec my_error(term()) -> no_return().

          Note

          Erlang uses the shorthand version _ as an anonymous type variable equivalent to term/0 or any/0. For example, the following function

          -spec Function(string(), _) -> string().

          is equivalent to:

          -spec Function(string(), any()) -> string().
          @@ -403,7 +403,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 2025-11-19 10:45:50.897483578 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 2025-11-19 10:45:50.897483578 +0000 @@ -219,7 +219,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system/versions.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/system/versions.html 2025-11-19 10:45:50.921483727 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/versions.html 2025-11-19 10:45:50.925483752 +0000 @@ -333,7 +333,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/system_principles.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/system_principles.html 2025-11-19 10:45:50.945483877 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system_principles.html 2025-11-19 10:45:50.945483877 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/tftp.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/tftp.html 2025-11-19 10:45:50.969484026 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/tftp.html 2025-11-19 10:45:50.973484051 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/tools.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/tools.html 2025-11-19 10:45:50.993484176 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/tools.html 2025-11-19 10:45:50.993484176 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/tutorial.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/tutorial.html 2025-11-19 10:45:51.021484350 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/tutorial.html 2025-11-19 10:45:51.021484350 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html 2025-11-19 10:45:51.049484524 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html 2025-11-19 10:45:51.053484549 +0000 @@ -170,10 +170,10 @@ Singleton type variables will become a compile-time error

          -

          Before Erlang/OTP 26, the compiler would silenty accept the following spec:

          -spec f(Opts) -> term() when
          -    Opts :: {ok, Unknown} | {error, Unknown}.
          -f(_) -> error.

          In OTP 26, the compiler emits a warning pointing out that the type variable -Unknown is unbound:

          t.erl:6:18: Warning: type variable 'Unknown' is only used once (is unbound)
          +

          Before Erlang/OTP 26, the compiler would silenty accept the following spec:

          -spec f(Opts) -> term() when
          +    Opts :: {ok, Unknown} | {error, Unknown}.
          +f(_) -> error.

          In OTP 26, the compiler emits a warning pointing out that the type variable +Unknown is unbound:

          t.erl:6:18: Warning: type variable 'Unknown' is only used once (is unbound)
           %    6|     Opts :: {ok, Unknown} | {error, Unknown}.
           %     |                  ^

          In OTP 27, that warning will become an error.

          @@ -183,7 +183,7 @@

          Escripts will be compiled by default instead of interpreted. That means that the compiler application must be available.

          The old behavior of interpreting escripts can be restored by adding the -following line to the script file:

          -mode(interpret).

          In OTP 28, support for interpreting an escript will be removed.

          +following line to the script file:

          -mode(interpret).

          In OTP 28, support for interpreting an escript will be removed.

          @@ -235,10 +235,10 @@ %% In OTP 27 it is instead interpreted as a %% Triple-Quoted String equivalent to "String Content"

          """"
          -++ foo() ++
          +++ foo() ++
           """"
           %% Became
          -"" ++ foo() ++ ""
          +"" ++ foo() ++ ""
           %%
           %% In OTP 27 it is instead interpreted as a
           %% Triple-Quoted String (triple-or-more) equivalent to
          @@ -362,7 +362,7 @@
                     Erlang programming language
           
                 

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/wx.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/wx.html 2025-11-19 10:45:51.077484699 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/wx.html 2025-11-19 10:45:51.077484699 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/doc/xmerl.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/doc/xmerl.html 2025-11-19 10:45:51.101484848 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/xmerl.html 2025-11-19 10:45:51.101484848 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html 2025-11-19 10:45:51.125484998 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html 2025-11-19 10:45:51.129485023 +0000 @@ -143,7 +143,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html 2025-11-19 10:45:51.157485197 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html 2025-11-19 10:45:51.161485222 +0000 @@ -516,7 +516,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html 2025-11-19 10:45:51.185485371 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html 2025-11-19 10:45:51.189485396 +0000 @@ -206,7 +206,7 @@ Erlang programming language

          -

          Copyright © 1996-2025 Ericsson AB

          +

          Copyright © 1996-2041 Ericsson AB

          /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html 2025-11-19 10:45:51.229485645 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html 2025-11-19 10:45:51.237485695 +0000 @@ -241,10 +241,10 @@ Exported Callback Functions

          -

          The following functions are mandatory:

          • listen(Name) ->
            -  {ok, {Listen, Address, Creation}} | {error, Error}
            -listen(Name,Host) ->
            -  {ok, {Listen, Address, Creation}} | {error, Error}

            listen/2 is called once in order to listen for incoming connection requests. +

            The following functions are mandatory:

            • listen(Name) ->
              +  {ok, {Listen, Address, Creation}} | {error, Error}
              +listen(Name,Host) ->
              +  {ok, {Listen, Address, Creation}} | {error, Error}

              listen/2 is called once in order to listen for incoming connection requests. The call is made when the distribution is brought up. The argument Name is the part of the node name before the @ sign in the full node name. It can be either an atom or a string. The argument Host is the part of the node name @@ -254,12 +254,12 @@ #net_address{} record is defined in kernel/include/net_address.hrl), and Creation which (currently) is an integer 1, 2, or 3.

              If epmd is to be used for node discovery, you typically want to use the erl_epmd module (part of the kernel application) in order to -register the listen port with epmd and retrieve Creation to use.

            • address() ->
              +register the listen port with epmd and retrieve Creation to use.

            • address() ->
                 Address

              address/0 is called in order to get the Address part of the listen/2 function without creating a listen socket. -All fields except address have to be set in the returned record

              Example:

              address() ->
              -    {ok, Host} = inet:gethostname(),
              -    #net_address{ host = Host, protocol = tcp, family = inet6 }.
            • accept(Listen) ->
              +All fields except address have to be set in the returned record

              Example:

              address() ->
              +    {ok, Host} = inet:gethostname(),
              +    #net_address{ host = Host, protocol = tcp, family = inet6 }.
            • accept(Listen) ->
                 AcceptorPid

              accept/1 should spawn a process that accepts connections. This process should preferably execute on max priority. The process identifier of this process should be returned.

              The Listen argument will be the same as the Listen handle part of the @@ -268,7 +268,7 @@ may not be the process registered as net_kernel) and is in this document identified as Kernel. When a connection has been accepted by the acceptor process, it needs to inform Kernel about the accepted connection. This is -done by passing a message on the form:

              Kernel ! {accept, AcceptorPid, DistController, Family, Proto}

              DistController is either the process or port identifier of the distribution +done by passing a message on the form:

              Kernel ! {accept, AcceptorPid, DistController, Family, Proto}

              DistController is either the process or port identifier of the distribution controller for the connection. The distribution controller should be created by the acceptor processes when a new connection is accepted. Its job is to dispatch traffic on the connection.

              Kernel responds with one of the following messages:

              • {Kernel, controller, SupervisorPid} - The request was accepted and @@ -276,7 +276,7 @@ process (which is created in the accept_connection/5 callback).

              • {Kernel, unsupported_protocol} - The request was rejected. This is a fatal error. The acceptor process should terminate.

              When an accept sequence has been completed the acceptor process is expected to -continue accepting further requests.

            • accept_connection(AcceptorPid, DistCtrl, MyNode, Allowed, SetupTime) ->
              +continue accepting further requests.

            • accept_connection(AcceptorPid, DistCtrl, MyNode, Allowed, SetupTime) ->
                 ConnectionSupervisorPid

              accept_connection/5 should spawn a process that will perform the Erlang distribution handshake for the connection. If the handshake successfully completes it should continue to function as a connection supervisor. This @@ -298,7 +298,7 @@ the handshake in a #hs_data{} record and call dist_util:handshake_other_started(HsData) with this record.

              dist_util:handshake_other_started(HsData) will perform the handshake and if the handshake successfully completes this process will then continue in a -connection supervisor loop as long as the connection is up.

            • setup(Node, Type, MyNode, LongOrShortNames, SetupTime) ->
              +connection supervisor loop as long as the connection is up.

            • setup(Node, Type, MyNode, LongOrShortNames, SetupTime) ->
                 ConnectionSupervisorPid

              setup/5 should spawn a process that connects to Node. When connection has been established it should perform the Erlang distribution handshake for the connection. If the handshake successfully completes it should continue to @@ -324,15 +324,15 @@ the handshake in a #hs_data{} record and call dist_util:handshake_we_started(HsData) with this record.

              dist_util:handshake_we_started(HsData) will perform the handshake and the handshake successfully completes this process will then continue in a -connection supervisor loop as long as the connection is up.

            • close(Listen) ->
              -  void()

              Called in order to close the Listen handle that originally was passed from -the listen/1 callback.

            • select(NodeName) ->
              -  boolean()

              Return true if the host name part of the NodeName is valid for use with -this protocol; otherwise, false.

            There are also two optional functions that may be exported:

            • setopts(Listen, Opts) ->
              -  ok | {error, Error}

              The argument Listen is the handle originally passed from the +connection supervisor loop as long as the connection is up.

            • close(Listen) ->
              +  void()

              Called in order to close the Listen handle that originally was passed from +the listen/1 callback.

            • select(NodeName) ->
              +  boolean()

              Return true if the host name part of the NodeName is valid for use with +this protocol; otherwise, false.

            There are also two optional functions that may be exported:

            • setopts(Listen, Opts) ->
              +  ok | {error, Error}

              The argument Listen is the handle originally passed from the listen/1 callback. The argument Opts is a list of -options to set on future connections.

            • getopts(Listen, Opts) ->
              -  {ok, OptionValues} | {error, Error}

              The argument Listen is the handle originally passed from the +options to set on future connections.

            • getopts(Listen, Opts) ->
              +  {ok, OptionValues} | {error, Error}

              The argument Listen is the handle originally passed from the listen/1 callback. The argument Opts is a list of options to read for future connections.

            @@ -354,36 +354,36 @@ dist_util:start_timer/1.

          • allowed - Information passed as Allowed to accept_connection/5. This field is only mandatory when the remote node initiated the connection. That is, when the connection is set up via -accept_connection/5.

          • f_send - A fun with the following signature:

            fun (DistCtrlr, Data) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller and Data -is io data to pass to the other side.

            Only used during handshake phase.

          • f_recv - A fun with the following signature:

            fun (DistCtrlr, Length) -> {ok, Packet} | {error, Reason}

            where DistCtrlr is the identifier of the distribution controller. If +accept_connection/5.

          • f_send - A fun with the following signature:

            fun (DistCtrlr, Data) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller and Data +is io data to pass to the other side.

            Only used during handshake phase.

          • f_recv - A fun with the following signature:

            fun (DistCtrlr, Length) -> {ok, Packet} | {error, Reason}

            where DistCtrlr is the identifier of the distribution controller. If Length is 0, all available bytes should be returned. If Length > 0, exactly Length bytes should be returned, or an error; possibly discarding less than Length bytes of data when the connection is closed from the other side. It is used for passive receive of data from the other end.

            Only used during handshake phase.

          • f_setopts_pre_nodeup - A fun with the -following signature:

            fun (DistCtrlr) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller. Called +following signature:

            fun (DistCtrlr) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller. Called just before the distribution channel is taken up for normal traffic.

            Only used during handshake phase.

          • f_setopts_post_nodeup - A fun with -the following signature:

            fun (DistCtrlr) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller. Called -just after distribution channel has been taken up for normal traffic.

            Only used during handshake phase.

          • f_getll - A fun with the following signature:

            fun (DistCtrlr) -> ID

            where DistCtrlr is the identifier of the distribution controller and ID is +the following signature:

            fun (DistCtrlr) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller. Called +just after distribution channel has been taken up for normal traffic.

            Only used during handshake phase.

          • f_getll - A fun with the following signature:

            fun (DistCtrlr) -> ID

            where DistCtrlr is the identifier of the distribution controller and ID is the identifier of the low level entity that handles the connection (often -DistCtrlr itself).

            Only used during handshake phase.

          • f_address - A fun with the following signature:

            fun (DistCtrlr, Node) -> NetAddress

            where DistCtrlr is the identifier of the distribution controller, Node is +DistCtrlr itself).

            Only used during handshake phase.

          • f_address - A fun with the following signature:

            fun (DistCtrlr, Node) -> NetAddress

            where DistCtrlr is the identifier of the distribution controller, Node is the node name of the node on the other end, and NetAddress is a #net_address{} record with information about the address for the Node on the other end of the connection. The #net_address{} record is defined in -kernel/include/net_address.hrl.

            Only used during handshake phase.

          • mf_tick - A fun with the following signature:

            fun (DistCtrlr) -> void()

            where DistCtrlr is the identifier of the distribution controller. This +kernel/include/net_address.hrl.

            Only used during handshake phase.

          • mf_tick - A fun with the following signature:

            fun (DistCtrlr) -> void()

            where DistCtrlr is the identifier of the distribution controller. This function should send information over the connection that is not interpreted by the other end while increasing the statistics of received packets on the other end. This is usually implemented by sending an empty packet.

            Note

            It is of vital importance that this operation does not block the caller for -a long time. This since it is called from the connection supervisor.

            Used when connection is up.

          • mf_getstat - A fun with the following signature:

            fun (DistCtrlr) -> {ok, Received, Sent, PendSend}

            where DistCtrlr is the identifier of the distribution controller, Received +a long time. This since it is called from the connection supervisor.

            Used when connection is up.

          • mf_getstat - A fun with the following signature:

            fun (DistCtrlr) -> {ok, Received, Sent, PendSend}

            where DistCtrlr is the identifier of the distribution controller, Received is received packets, Sent is sent packets, and PendSend is amount of data in queue to be sent (typically in bytes, but dist_util only checks whether the value is non-zero to know there is data in queue) or a boolean/0 indicating whether there are packets in queue to be sent.

            Note

            It is of vital importance that this operation does not block the caller for a long time. This since it is called from the connection supervisor.

            Used when connection is up.

          • request_type - The request Type as passed to setup/5. This is only mandatory when the connection has -been initiated by this node. That is, the connection is set up via setup/5.

          • mf_setopts - A fun with the following signature:

            fun (DistCtrl, Opts) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller and Opts -is a list of options to set on the connection.

            This function is optional. Used when connection is up.

          • mf_getopts - A fun with the following signature:

            fun (DistCtrl, Opts) -> {ok, OptionValues} | {error, Error}

            where DistCtrlr is the identifier of the distribution controller and Opts +been initiated by this node. That is, the connection is set up via setup/5.

          • mf_setopts - A fun with the following signature:

            fun (DistCtrl, Opts) -> ok | {error, Error}

            where DistCtrlr is the identifier of the distribution controller and Opts +is a list of options to set on the connection.

            This function is optional. Used when connection is up.

          • mf_getopts - A fun with the following signature:

            fun (DistCtrl, Opts) -> {ok, OptionValues} | {error, Error}

            where DistCtrlr is the identifier of the distribution controller and Opts is a list of options to read for the connection.

            This function is optional. Used when connection is up.

          • f_handshake_complete - A fun with the -following signature:

            fun (DistCtrlr, Node, DHandle) -> void()

            where DistCtrlr is the identifier of the distribution controller, Node is +following signature:

            fun (DistCtrlr, Node, DHandle) -> void()

            where DistCtrlr is the identifier of the distribution controller, Node is the node name of the node connected at the other end, and DHandle is a distribution handle needed by a distribution controller process when calling the following BIFs:

            This function is called when the handshake has completed and the distribution @@ -519,62 +519,62 @@ because in most situation you need to do it. Unix domain sockets are reliable and order maintaining, so we do not need to implement resends and such in the driver.

            We start writing the example Unix domain sockets driver by declaring prototypes -and filling in a static ErlDrvEntry structure:

            ( 1) #include <stdio.h>
            -( 2) #include <stdlib.h>
            -( 3) #include <string.h>
            -( 4) #include <unistd.h>
            -( 5) #include <errno.h>
            -( 6) #include <sys/types.h>
            -( 7) #include <sys/stat.h>
            -( 8) #include <sys/socket.h>
            -( 9) #include <sys/un.h>
            -(10) #include <fcntl.h>
            +and filling in a static ErlDrvEntry structure:

            ( 1) #include <stdio.h>
            +( 2) #include <stdlib.h>
            +( 3) #include <string.h>
            +( 4) #include <unistd.h>
            +( 5) #include <errno.h>
            +( 6) #include <sys/types.h>
            +( 7) #include <sys/stat.h>
            +( 8) #include <sys/socket.h>
            +( 9) #include <sys/un.h>
            +(10) #include <fcntl.h>
             
            -(11) #define HAVE_UIO_H
            -(12) #include "erl_driver.h"
            +(11) #define HAVE_UIO_H
            +(12) #include "erl_driver.h"
             
            -(13) /*
            +(13) /*
             (14) ** Interface routines
             (15) */
            -(16) static ErlDrvData uds_start(ErlDrvPort port, char *buff);
            -(17) static void uds_stop(ErlDrvData handle);
            -(18) static void uds_command(ErlDrvData handle, char *buff, int bufflen);
            -(19) static void uds_input(ErlDrvData handle, ErlDrvEvent event);
            -(20) static void uds_output(ErlDrvData handle, ErlDrvEvent event);
            -(21) static void uds_finish(void);
            -(22) static int uds_control(ErlDrvData handle, unsigned int command,
            -(23)                        char* buf, int count, char** res, int res_size);
            -
            -(24) /* The driver entry */
            -(25) static ErlDrvEntry uds_driver_entry = {
            -(26)     NULL,                            /* init, N/A */
            -(27)     uds_start,                       /* start, called when port is opened */
            -(28)     uds_stop,                        /* stop, called when port is closed */
            -(29)     uds_command,                     /* output, called when erlang has sent */
            -(30)     uds_input,                       /* ready_input, called when input
            +(16) static ErlDrvData uds_start(ErlDrvPort port, char *buff);
            +(17) static void uds_stop(ErlDrvData handle);
            +(18) static void uds_command(ErlDrvData handle, char *buff, int bufflen);
            +(19) static void uds_input(ErlDrvData handle, ErlDrvEvent event);
            +(20) static void uds_output(ErlDrvData handle, ErlDrvEvent event);
            +(21) static void uds_finish(void);
            +(22) static int uds_control(ErlDrvData handle, unsigned int command,
            +(23)                        char* buf, int count, char** res, int res_size);
            +
            +(24) /* The driver entry */
            +(25) static ErlDrvEntry uds_driver_entry = {
            +(26)     NULL,                            /* init, N/A */
            +(27)     uds_start,                       /* start, called when port is opened */
            +(28)     uds_stop,                        /* stop, called when port is closed */
            +(29)     uds_command,                     /* output, called when erlang has sent */
            +(30)     uds_input,                       /* ready_input, called when input
             (31)                                         descriptor ready */
            /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html differs (HTML document, UTF-8 Unicode text)
            --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html	2025-11-19 10:45:51.261485844 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html	2025-11-19 10:45:51.265485869 +0000
            @@ -245,7 +245,7 @@
                       Erlang programming language
             
                   

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html 2025-11-19 10:45:51.285485994 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html 2025-11-19 10:45:51.289486018 +0000 @@ -667,7 +667,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html 2025-11-19 10:45:51.309486143 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html 2025-11-19 10:45:51.313486168 +0000 @@ -213,9 +213,9 @@ function is used, the convention is to "comment out" the source for the function by surrounding it with the following #ifdef (this way, one will not get warnings about unused functions):

            #ifdef INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS
            -void my_fun() {
            +void my_fun() {
                 ...
            -}
            +}
             #endif /* INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS */

            While editing the function one can define INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS so that one can see errors and warnings in the non-transformed source.

            @@ -369,7 +369,7 @@ Erlang programming language

            -

            Copyright © 1996-2025 Ericsson AB

            +

            Copyright © 1996-2041 Ericsson AB

            /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html 2025-11-19 10:45:51.361486467 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html 2025-11-19 10:45:51.365486492 +0000 @@ -155,9 +155,9 @@ BEAM interpreter. For the BeamAsm JIT introduced in OTP 24, the implementation of instructions are defined in emitter functions written in C++.

          Generic instructions have typed operands. Here are a few examples of -operands for move/2:

          {move,{atom,id},{x,5}}.
          -{move,{x,3},{x,0}}.
          -{move,{x,2},{y,1}}.

          When those instructions are loaded, the loader rewrites them +operands for move/2:

          {move,{atom,id},{x,5}}.
          +{move,{x,3},{x,0}}.
          +{move,{x,2},{y,1}}.

          When those instructions are loaded, the loader rewrites them to specific instructions:

          move_cx id 5
           move_xx 3 0
           move_xy 2 1

          Corresponding to each generic instruction, there is a family of @@ -189,9 +189,9 @@ an integer, an atom, or a literal).

          Now let's look at the implementation of the move instruction. There are multiple files containing implementations of instructions in the erts/emulator/beam/emu directory. The move instruction is defined -in instrs.tab. It looks like this:

          move(Src, Dst) {
          +in instrs.tab.  It looks like this:

          move(Src, Dst) {
               $Dst = $Src;
          -}

          The implementation for an instruction largely follows the C syntax, +}

          The implementation for an instruction largely follows the C syntax, except that the variables in the function head don't have any types. The $ before an identifier denotes a macro expansion. Thus, $Src will expand to the code to pick up the source operand for @@ -208,14 +208,14 @@ is stored in the lower 32 bits of the word. In the upper 32 bits is the byte offset to the X register; the register number 5 has been multiplied by the word size size 8.

          In the next word the tagged atom id is stored.

          With that background, we can look at the generated code for move_cx -in beam_hot.h:

          OpCase(move_cx):
          -{
          -  BeamInstr next_pf = BeamCodeAddr(I[2]);
          -  xb(BeamExtraData(I[0])) = I[1];
          +in beam_hot.h:

          OpCase(move_cx):
          +{
          +  BeamInstr next_pf = BeamCodeAddr(I[2]);
          +  xb(BeamExtraData(I[0])) = I[1];
             I += 2;
          -  ASSERT(VALID_INSTR(next_pf));
          -  GotoPF(next_pf);
          -}

          We will go through each line in turn.

          • OpCase(move_cx): defines a label for the instruction. The + ASSERT(VALID_INSTR(next_pf)); + GotoPF(next_pf); +}

          We will go through each line in turn.

          • OpCase(move_cx): defines a label for the instruction. The OpCase() macro is defined in beam_emu.c. It will expand this line to lb_move_cx:.

          • BeamInstr next_pf = BeamCodeAddr(I[2]); fetches the pointer to code for the next instruction to be executed. The BeamCodeAddr() @@ -229,15 +229,15 @@ this case).

          • I += 2 advances the instruction pointer to the next instruction.

          • In a debug-compiled emulator, ASSERT(VALID_INSTR(next_pf)); makes sure that next_pf is a valid instruction (that is, that it points -within the process_main() function in beam_emu.c).

          • GotoPF(next_pf); transfers control to the next instruction.

          Now let's look at the implementation of move_xx:

          OpCase(move_xx):
          -{
          -  Eterm tmp_packed1 = BeamExtraData(I[0]);
          -  BeamInstr next_pf = BeamCodeAddr(I[1]);
          -  xb((tmp_packed1>>BEAM_TIGHT_SHIFT)) = xb(tmp_packed1&BEAM_TIGHT_MASK);
          +within the process_main() function in beam_emu.c).

        • GotoPF(next_pf); transfers control to the next instruction.

        Now let's look at the implementation of move_xx:

        OpCase(move_xx):
        +{
        +  Eterm tmp_packed1 = BeamExtraData(I[0]);
        +  BeamInstr next_pf = BeamCodeAddr(I[1]);
        +  xb((tmp_packed1>>BEAM_TIGHT_SHIFT)) = xb(tmp_packed1&BEAM_TIGHT_MASK);
           I += 1;
        -  ASSERT(VALID_INSTR(next_pf));
        -  GotoPF(next_pf);
        -}

        We will go through the lines that are new or have changed compared to + ASSERT(VALID_INSTR(next_pf)); + GotoPF(next_pf); +}

        We will go through the lines that are new or have changed compared to move_cx.

        • Eterm tmp_packed1 = BeamExtraData(I[0]); picks up both X register numbers packed into the upper 32 bits of the instruction word.

        • BeamInstr next_pf = BeamCodeAddr(I[1]); pre-fetches the address of the next instruction. Note that because both X registers operands fits @@ -246,15 +246,15 @@ copies the source to the destination. (For a 64-bit architecture, BEAM_TIGHT_SHIFT is 16 and BEAM_TIGHT_MASK is 0xFFFF.)

        • I += 1; advances the instruction pointer to the next instruction.

        move_xy is almost identical to move_xx. The only difference is the use of the yb() macro instead of xb() to reference the -destination register:

        OpCase(move_xy):
        -{
        -  Eterm tmp_packed1 = BeamExtraData(I[0]);
        -  BeamInstr next_pf = BeamCodeAddr(I[1]);
        -  yb((tmp_packed1>>BEAM_TIGHT_SHIFT)) = xb(tmp_packed1&BEAM_TIGHT_MASK);
        +destination register:

        OpCase(move_xy):
        +{
        +  Eterm tmp_packed1 = BeamExtraData(I[0]);
        +  BeamInstr next_pf = BeamCodeAddr(I[1]);
        +  yb((tmp_packed1>>BEAM_TIGHT_SHIFT)) = xb(tmp_packed1&BEAM_TIGHT_MASK);
           I += 1;
        -  ASSERT(VALID_INSTR(next_pf));
        -  GotoPF(next_pf);
        -}

        + ASSERT(VALID_INSTR(next_pf)); + GotoPF(next_pf); +}

        @@ -275,13 +275,13 @@ move2 x y x y // In instrs.tab -move2(S1, D1, S2, D2) { +move2(S1, D1, S2, D2) { Eterm V1, V2; V1 = $S1; V2 = $S2; $D1 = V1; $D2 = V2; -}

      When the loader has found a match and replaced the matched instructions, +}

    When the loader has found a match and replaced the matched instructions, it will match the new instructions against the transformation rules. Because of that, we can define the rule for a move3/6 instruction as follows:

    move2 X1=x Y1=y X2=x Y2=y | move X3=x Y3=y =>
    @@ -437,21 +437,21 @@
     i_fcheckerror
     fclearerror
     %endif

    It is also possible to add an %else clause:

    %if ARCH_64
    -BS_SAFE_MUL(A, B, Fail, Dst) {
    -    Uint64 res = ($A) * ($B);
    -    if (res / $B != $A) {
    +BS_SAFE_MUL(A, B, Fail, Dst) {
    +    Uint64 res = ($A) * ($B);
    +    if (res / $B != $A) {
             $Fail;
    -    }
    +    }
         $Dst = res;
    -}
    +}
     %else
    -BS_SAFE_MUL(A, B, Fail, Dst) {
    -    Uint64 res = (Uint64)($A) * (Uint64)($B);
    -    if ((res >> (8*sizeof(Uint))) != 0) {
    +BS_SAFE_MUL(A, B, Fail, Dst) {
    +    Uint64 res = (Uint64)($A) * (Uint64)($B);
    +    if ((res >> (8*sizeof(Uint))) != 0) {
             $Fail;
    -    }
    +    }
         $Dst = res;
    -}
    +}
     %endif

    Symbols that are defined in directives

    The following symbols are always defined.

    • ARCH_64 - is 1 for a 64-bit machine, and 0 otherwise.
    • ARCH_32 - is 1 for 32-bit machine, and 0 otherwise.

    The Makefile for building the emulator currently defines the following symbols by using the -D option on the command line for beam_makeops.

    • USE_VM_PROBES - 1 if the runtime system is compiled to use VM @@ -680,7 +680,7 @@ a non-zero value, the matching of the rule will continue, otherwise the match will fail. Such guard functions are hereafter called predicates.

      The most commonly used guard constraints is equal(). It can be used -to remove a redundant move instructio like this:

      move R1 R2 | equal(R1, R2) => _

      or remove a redundant is_eq_exact instruction like this:

      is_eq_exact Lbl Src1 Src2 | equal(Src1, Src2) => _

      At the time of writing, all predicates are defined in files named +to remove a redundant move instructio like this:

      move R1 R2 | equal(R1, R2) => _

      or remove a redundant is_eq_exact instruction like this:

      is_eq_exact Lbl Src1 Src2 | equal(Src1, Src2) => _

      At the time of writing, all predicates are defined in files named predicates.tab in several directories. In predicates.tab directly in $ERL_TOP/erts/emulator/beam, predicates that are used by both the traditinal emulator and the JIT implementations are contained. @@ -696,33 +696,33 @@ internal loader data structures, but here is quick look at the implementation of a simple predicate called literal_is_map().

      Here is first an example how it is used:

      ismap Fail Lit=q | literal_is_map(Lit) =>

      If the Lit operand is a literal, then the literal_is_map() predicate is called to determine whether it is a map literal. -If it is, the instruction is not needed and can be removed.

      literal_is_map() is implemented like this (in emu/predicates.tab):

      pred.literal_is_map(Lit) {
      +If it is, the instruction is not needed and can be removed.

      literal_is_map() is implemented like this (in emu/predicates.tab):

      pred.literal_is_map(Lit) {
           Eterm term;
       
      -    ASSERT(Lit.type == TAG_q);
      -    term = beamfile_get_literal(&S->beam, Lit.val);
      -    return is_map(term);
      -}

      The pred. prefix tells beam_makeops that this function is a + ASSERT(Lit.type == TAG_q); + term = beamfile_get_literal(&S->beam, Lit.val); + return is_map(term); +}

      The pred. prefix tells beam_makeops that this function is a predicate. Without the prefix, it would have been interpreted as the implementation of an instruction (described in Defining the implementation).

      Predicate functions have a magic variabled called S, which is a pointer to a state struct. In the example, beamfile_get_literal(&S->beam, Lit.val); is used to retrieve the actual term for the literal.

      At the time of writing, the expanded C code generated by -beam_makeops looks like this:

      static int literal_is_map(LoaderState* S, BeamOpArg Lit) {
      +beam_makeops looks like this:

      static int literal_is_map(LoaderState* S, BeamOpArg Lit) {
         Eterm term;
       
      -  ASSERT(Lit.type == TAG_q);
      -  term = S->literals[Lit.val].term;
      -  return is_map(term);;
      -}

      Handling instructions with variable number of operands

      Some instructions, such as select_val/3, essentially has a variable + ASSERT(Lit.type == TAG_q); + term = S->literals[Lit.val].term; + return is_map(term);; +}

      Handling instructions with variable number of operands

      Some instructions, such as select_val/3, essentially has a variable number of operands. Such instructions have a {list,[...]} operand -as their last operand in the BEAM assembly code. For example:

      {select_val,{x,0},
      -            {f,1},
      -            {list,[{atom,b},{f,4},{atom,a},{f,5}]}}.

      The loader will convert a {list,[...]} operand to an u operand whose +as their last operand in the BEAM assembly code. For example:

      {select_val,{x,0},
      +            {f,1},
      +            {list,[{atom,b},{f,4},{atom,a},{f,5}]}}.

      The loader will convert a {list,[...]} operand to an u operand whose value is the number of elements in the list, followed by each element in the list. The instruction above would be translated to the following -generic instruction:

      {select_val,{x,0},{f,1},{u,4},{atom,b},{f,4},{atom,a},{f,5}}

      To match a variable number of arguments we need to use the special +generic instruction:

      {select_val,{x,0},{f,1},{u,4},{atom,b},{f,4},{atom,a},{f,5}}

      To match a variable number of arguments we need to use the special operand type * like this:

      select_val Src=aiq Fail=f Size=u List=* =>
      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html differs (HTML document, UTF-8 Unicode text, with very long lines)
      --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html	2025-11-19 10:45:51.397486691 +0000
      +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html	2025-11-19 10:45:51.405486741 +0000
      @@ -149,10 +149,10 @@
       used in BeamAsm are much simpler than the interpreter's, as most of the
       transformations for the interpreter are done only to eliminate the instruction
       dispatch overhead.

      Then each instruction is encoded using the C++ functions in the -jit/$ARCH/instr_*.cpp files. For example:

      void BeamModuleAssembler::emit_is_nonempty_list(const ArgVal &Fail, const ArgVal &Src) {
      -  a.test(getArgRef(Src), imm(_TAG_PRIMARY_MASK - TAG_PRIMARY_LIST));
      -  a.jne(labels[Fail.getLabel()]);
      -}

      asmjit provides a fairly straightforward +jit/$ARCH/instr_*.cpp files. For example:

      void BeamModuleAssembler::emit_is_nonempty_list(const ArgVal &Fail, const ArgVal &Src) {
      +  a.test(getArgRef(Src), imm(_TAG_PRIMARY_MASK - TAG_PRIMARY_LIST));
      +  a.jne(labels[Fail.getLabel()]);
      +}

      asmjit provides a fairly straightforward mapping from a C++ function call to the x86 assembly instruction. The above instruction tests if the value in the Src register is a non-empty list and if it is not then it jumps to the fail label.

      For comparison, the interpreter has 8 combinations and specializations of @@ -160,7 +160,7 @@ common patterns.

      The original register allocation done by the Erlang compiler is used to manage the liveness of values and the physical registers are statically allocated to keep the necessary process state. At the moment this is the static register -allocation on x86-64:

      rbx: ErtsSchedulerRegisters struct (contains x/float registers and some metadata)
      +allocation on x86-64:

      rbx: ErtsSchedulerRegisters struct (contains x/float registers and some metadata)
       rbp: Current frame pointer when `perf` support is enabled, otherwise this
            is an optional save slot for the Erlang stack pointer when executing C
            code.
      @@ -187,13 +187,13 @@
       used about double the amount of memory for code as the interpreter, while current
       versions use about 10% more. How was this achieved?

      In BeamAsm we heavily use shared code fragments to try to emit as much code as possible as global shared fragments instead of duplicating the code unnecessarily. -For instance, the return instruction looks something like this:

      Label yield = a.newLabel();
      +For instance, the return instruction looks something like this:

      Label yield = a.newLabel();
       
       /* Decrement reduction counter */
      -a.dec(FCALLS);
      +a.dec(FCALLS);
       /* If FCALLS < 0, jump to the yield-on-return fragment */
      -a.jl(resolve_fragment(ga->get_dispatch_return()));
      -a.ret();

      The code above is not exactly what is emitted, but close enough. The thing to note +a.jl(resolve_fragment(ga->get_dispatch_return())); +a.ret();

      The code above is not exactly what is emitted, but close enough. The thing to note is that the code for doing the context switch is never emitted. Instead, we jump to a global fragment that all return instructions share. This greatly reduces the amount of code that has to be emitted for each module.

      @@ -243,24 +243,24 @@

      As Erlang stacks can be very small, we have to switch over to a different stack when we need to execute C code (which may expect a much larger stack). This is -done through emit_enter_runtime and emit_leave_runtime, for example:

      mov_arg(ARG4, NumFree);
      +done through emit_enter_runtime and emit_leave_runtime, for example:

      mov_arg(ARG4, NumFree);
       
       /* Move to the C stack and swap out our current reductions, stack-, and
        * heap pointer to the process structure. */
      -emit_enter_runtime<Update::eReductions | Update::eStack | Update::eHeap>();
      +emit_enter_runtime<Update::eReductions | Update::eStack | Update::eHeap>();
       
      -a.mov(ARG1, c_p);
      -load_x_reg_array(ARG2);
      -make_move_patch(ARG3, lambdas[Fun.getValue()].patches);
      +a.mov(ARG1, c_p);
      +load_x_reg_array(ARG2);
      +make_move_patch(ARG3, lambdas[Fun.getValue()].patches);
       
       /* Call `new_fun`, asserting that we're on the C stack. */
      -runtime_call<4>(new_fun);
      +runtime_call<4>(new_fun);
       
       /* Move back to the C stack, and read the updated values from the process
        * structure */
      -emit_leave_runtime<Update::eReductions | Update::eStack | Update::eHeap>();
      +emit_leave_runtime<Update::eReductions | Update::eStack | Update::eHeap>();
       
      -a.mov(getXRef(0), RET);

      All combinations of the Update constants are legal, but the ones given to +a.mov(getXRef(0), RET);

      All combinations of the Update constants are legal, but the ones given to emit_leave_runtime must be the same as those given to emit_enter_runtime.

      @@ -271,7 +271,7 @@ any function call. In the interpreter, this is done by rewriting the loaded BEAM code, but this is more complicated in BeamAsm as we want to have a fast and compact way to do this. This is solved by emitting the code below at the -start of each function (x86 variant below):

        0x0: short jmp 6 (address 0x8)
      +start of each function (x86 variant below):

        0x0: short jmp 6 (address 0x8)
         0x2: nop
         0x3: relative near call to shared breakpoint fragment
         0x8: actual code for function

      When code starts to execute it will simply see the short jmp 6 instruction @@ -293,23 +293,23 @@ executable page and once with a writable page. Since they're backed by the same memory, writes to the writable page appear magically in the executable one.

      The erts_writable_code_ptr function can be used to get writable pointers -given a module instance, provided that it has been unsealed first:

      for (i = 0; i < n; i++) {
      +given a module instance, provided that it has been unsealed first:

      for (i = 0; i < n; i++) {
           const ErtsCodeInfo* ci_exec;
           ErtsCodeInfo* ci_rw;
           void *w_ptr;
       
      -    erts_unseal_module(&modp->curr);
      +    erts_unseal_module(&modp->curr);
       
      -    ci_exec = code_hdr->functions[i];
      -    w_ptr = erts_writable_code_ptr(&modp->curr, ci_exec);
      -    ci_rw = (ErtsCodeInfo*)w_ptr;
      -
      -    uninstall_breakpoint(ci_rw, ci_exec);
      -    consolidate_bp_data(modp, ci_rw, 1);
      -    ASSERT(ci_rw->gen_bp == NULL);
      +    ci_exec = code_hdr->functions[i];
      +    w_ptr = erts_writable_code_ptr(&modp->curr, ci_exec);
      +    ci_rw = (ErtsCodeInfo*)w_ptr;
      +
      +    uninstall_breakpoint(ci_rw, ci_exec);
      +    consolidate_bp_data(modp, ci_rw, 1);
      +    ASSERT(ci_rw->gen_bp == NULL);
       
      -    erts_seal_module(&modp->curr);
      -}

      Without the module instance there's no reliable way to figure out the writable + erts_seal_module(&modp->curr); +}

      Without the module instance there's no reliable way to figure out the writable address of a code page, and we rely on address space layout randomization (ASLR) to make it difficult to guess. On some platforms, security is further enhanced by protecting the writable area from writes until the module has been @@ -397,7 +397,7 @@ flamegraph.pl out.folded > out.svg

      We get a graph that would look something like this:

      Linux Perf FlameGraph: dialyzer PLT build

      You can view a larger version here. It contains the same information, but it is easier to share with others as it does not need the symbols in the executable.

      Using the same data we can also produce a graph where the scheduler profile data -has been merged by using sed:

      #href_anchor"p"># Strip [0-9]+_ and/or _[0-9]+ from all scheduler names
      +has been merged by using sed:

      #href_anchor"p"># Strip [0-9]+_ and/or _[0-9]+ from all scheduler names
       ## scheduler names changed in OTP26, hence two expressions
       sed -e 's/^[0-9]\+_//' -e 's/^erts_\([^_]\+\)_[0-9]\+/erts_\1/' out.folded > out.folded_sched
       ## Create the svg
      @@ -552,7 +552,7 @@
                 Erlang programming language
       
             

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html 2025-11-19 10:45:51.433486915 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html 2025-11-19 10:45:51.433486915 +0000 @@ -407,7 +407,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 2025-11-19 10:45:51.457487064 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 2025-11-19 10:45:51.461487090 +0000 @@ -167,8 +167,8 @@ erts_try_seize_code_load_permission and erts_release_code_load_permission).

      The ability to prepare several modules in parallel is not currently used as almost all code loading is serialized by the code_server -process. The BIF interface is however prepared for this.

        erlang:prepare_loading(Module, Code) -> LoaderState
      -  erlang:finish_loading([LoaderState])

      The idea is that prepare_loading could be called in parallel for +process. The BIF interface is however prepared for this.

        erlang:prepare_loading(Module, Code) -> LoaderState
      +  erlang:finish_loading([LoaderState])

      The idea is that prepare_loading could be called in parallel for different modules and returns a "magic binary" containing the internal state of each prepared module. Function finish_loading could take a list of such states and do the finishing of all of them in one go.

      Currently we use the legacy BIF erlang:load_module which is now @@ -319,7 +319,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html 2025-11-19 10:45:51.485487239 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html 2025-11-19 10:45:51.489487264 +0000 @@ -202,7 +202,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html 2025-11-19 10:45:51.517487438 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html 2025-11-19 10:45:51.521487463 +0000 @@ -513,7 +513,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html 2025-11-19 10:45:51.541487588 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html 2025-11-19 10:45:51.545487613 +0000 @@ -220,7 +220,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html 2025-11-19 10:45:51.565487737 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html 2025-11-19 10:45:51.573487787 +0000 @@ -405,13 +405,13 @@ interesting. One has to "guess" what is what, but as the information is symbolic, thorough reading of this information can be useful. As an example, we can find the state variable of the Erlang primitive loader online (5) and -(6) in the following example:

      (1)  3cac44   Return addr 0x13BF58 (<terminate process normally>)
      -(2)  y(0)     ["/view/siri_r10_dev/clearcase/otp/erts/lib/kernel/ebin",
      -(3)            "/view/siri_r10_dev/clearcase/otp/erts/lib/stdlib/ebin"]
      -(4)  y(1)     <0.1.0>
      -(5)  y(2)     {state,[],none,#Fun<erl_prim_loader.6.7085890>,undefined,#Fun<erl_prim_loader.7.9000327>,
      -(6)            #Fun<erl_prim_loader.8.116480692>,#Port<0.2>,infinity,#Fun<erl_prim_loader.9.10708760>}
      -(7)  y(3)     infinity

      When interpreting the data for a process, it is helpful to know that anonymous +(6) in the following example:

      (1)  3cac44   Return addr 0x13BF58 (<terminate process normally>)
      +(2)  y(0)     ["/view/siri_r10_dev/clearcase/otp/erts/lib/kernel/ebin",
      +(3)            "/view/siri_r10_dev/clearcase/otp/erts/lib/stdlib/ebin"]
      +(4)  y(1)     <0.1.0>
      +(5)  y(2)     {state,[],none,#Fun<erl_prim_loader.6.7085890>,undefined,#Fun<erl_prim_loader.7.9000327>,
      +(6)            #Fun<erl_prim_loader.8.116480692>,#Port<0.2>,infinity,#Fun<erl_prim_loader.9.10708760>}
      +(7)  y(3)     infinity

      When interpreting the data for a process, it is helpful to know that anonymous function objects (funs) are given the following:

      • A name constructed from the name of the function in which they are created
      • A number (starting with 0) indicating the number of that fun within that function

      @@ -477,7 +477,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html differs (HTML document, UTF-8 Unicode text) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html 2025-11-19 10:45:51.593487912 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html 2025-11-19 10:45:51.597487936 +0000 @@ -342,7 +342,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html 2025-11-19 10:45:51.629488136 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html 2025-11-19 10:45:51.633488161 +0000 @@ -180,12 +180,12 @@ terms, so binary_to_term is called in Erlang to convert the result to term form.

      The code is available in pg_sync.c in the sample directory of erts.

      The driver entry contains the functions that will be called by the emulator. In this example, only start, stop, and control are provided:

      /* Driver interface declarations */
      -static ErlDrvData start(ErlDrvPort port, char *command);
      -static void stop(ErlDrvData drv_data);
      -static int control(ErlDrvData drv_data, unsigned int command, char *buf,
      -                   int len, char **rbuf, int rlen);
      +static ErlDrvData start(ErlDrvPort port, char *command);
      +static void stop(ErlDrvData drv_data);
      +static int control(ErlDrvData drv_data, unsigned int command, char *buf,
      +                   int len, char **rbuf, int rlen);
       
      -static ErlDrvEntry pq_driver_entry = {
      +static ErlDrvEntry pq_driver_entry = {
           NULL,                        /* init */
           start,
           stop,
      @@ -202,10 +202,10 @@
           NULL,                        /* flush */
           NULL,                        /* call */
           NULL                         /* event */
      -};

      We have a structure to store state needed by the driver, in this case we only -need to keep the database connection:

      typedef struct our_data_s {
      +};

      We have a structure to store state needed by the driver, in this case we only +need to keep the database connection:

      typedef struct our_data_s {
           PGconn* conn;
      -} our_data_t;

      The control codes that we have defined are as follows:

      /* Keep the following definitions in alignment with the
      +} our_data_t;

      The control codes that we have defined are as follows:

      /* Keep the following definitions in alignment with the
        * defines in erl_pq_sync.erl
        */
       
      @@ -221,130 +221,130 @@
        * the driver entry.
        */
       
      -DRIVER_INIT(pq_drv)
      -{
      +DRIVER_INIT(pq_drv)
      +{
           return &pq_driver_entry;
      -}

      Here some initialization is done, start is called from open_port/2. The data +}

      Here some initialization is done, start is called from open_port/2. The data will be passed to control and stop.

      /* DRIVER INTERFACE */
      -static ErlDrvData start(ErlDrvPort port, char *command)
      -{
      +static ErlDrvData start(ErlDrvPort port, char *command)
      +{
           our_data_t* data;
       
      -    data = (our_data_t*)driver_alloc(sizeof(our_data_t));
      +    data = (our_data_t*)driver_alloc(sizeof(our_data_t));
           data->conn = NULL;
      -    set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY);
      -    return (ErlDrvData)data;
      -}

      We call disconnect to log out from the database. (This should have been done -from Erlang, but just in case.)

      static int do_disconnect(our_data_t* data, ei_x_buff* x);
      -
      -static void stop(ErlDrvData drv_data)
      -{
      -    our_data_t* data = (our_data_t*)drv_data;
      -
      -    do_disconnect(data, NULL);
      -    driver_free(data);
      -}

      We use the binary format only to return data to the emulator; input data is a + set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY); + return (ErlDrvData)data; +}

      We call disconnect to log out from the database. (This should have been done +from Erlang, but just in case.)

      static int do_disconnect(our_data_t* data, ei_x_buff* x);
      +
      +static void stop(ErlDrvData drv_data)
      +{
      +    our_data_t* data = (our_data_t*)drv_data;
      +
      +    do_disconnect(data, NULL);
      +    driver_free(data);
      +}

      We use the binary format only to return data to the emulator; input data is a string parameter for connect and select. The returned data consists of Erlang terms.

      The functions get_s and ei_x_to_new_binary are utilities that are used to make the code shorter. get_s duplicates the string and zero-terminates it, as the postgres client library wants that. ei_x_to_new_binary takes an ei_x_buff buffer, allocates a binary, and copies the data there. This binary is returned in *rbuf. (Notice that this binary is freed by the emulator, not -by us.)

      static char* get_s(const char* buf, int len);
      -static int do_connect(const char *s, our_data_t* data, ei_x_buff* x);
      -static int do_select(const char* s, our_data_t* data, ei_x_buff* x);
      +by us.)

      static char* get_s(const char* buf, int len);
      +static int do_connect(const char *s, our_data_t* data, ei_x_buff* x);
      +static int do_select(const char* s, our_data_t* data, ei_x_buff* x);
       
       /* As we are operating in binary mode, the return value from control
        * is irrelevant, as long as it is not negative.
        */
      -static int control(ErlDrvData drv_data, unsigned int command, char *buf,
      -                   int len, char **rbuf, int rlen)
      -{
      +static int control(ErlDrvData drv_data, unsigned int command, char *buf,
      +                   int len, char **rbuf, int rlen)
      +{
           int r;
           ei_x_buff x;
      -    our_data_t* data = (our_data_t*)drv_data;
      -    char* s = get_s(buf, len);
      -    ei_x_new_with_version(&x);
      -    switch (command) {
      -        case DRV_CONNECT:    r = do_connect(s, data, &x);  break;
      -        case DRV_DISCONNECT: r = do_disconnect(data, &x);  break;
      -        case DRV_SELECT:     r = do_select(s, data, &x);   break;
      +    our_data_t* data = (our_data_t*)drv_data;
      +    char* s = get_s(buf, len);
      +    ei_x_new_with_version(&x);
      +    switch (command) {
      +        case DRV_CONNECT:    r = do_connect(s, data, &x);  break;
      +        case DRV_DISCONNECT: r = do_disconnect(data, &x);  break;
      +        case DRV_SELECT:     r = do_select(s, data, &x);   break;
               default:             r = -1;        break;
      -    }
      -    *rbuf = (char*)ei_x_to_new_binary(&x);
      -    ei_x_free(&x);
      -    driver_free(s);
      +    }
      +    *rbuf = (char*)ei_x_to_new_binary(&x);
      +    ei_x_free(&x);
      +    driver_free(s);
           return r;
      -}

      do_connect is where we log in to the database. If the connection was +}

      do_connect is where we log in to the database. If the connection was successful, we store the connection handle in the driver data, and return 'ok'. Otherwise, we return the error message from postgres and store NULL in -the driver data.

      static int do_connect(const char *s, our_data_t* data, ei_x_buff* x)
      -{
      -    PGconn* conn = PQconnectdb(s);
      -    if (PQstatus(conn) != CONNECTION_OK) {
      -        encode_error(x, conn);
      -        PQfinish(conn);
      +the driver data.

      static int do_connect(const char *s, our_data_t* data, ei_x_buff* x)
      +{
      +    PGconn* conn = PQconnectdb(s);
      +    if (PQstatus(conn) != CONNECTION_OK) {
      +        encode_error(x, conn);
      +        PQfinish(conn);
               conn = NULL;
      -    } else {
      -        encode_ok(x);
      -    }
      +    } else {
      +        encode_ok(x);
      +    }
           data->conn = conn;
           return 0;
      -}

      If we are connected (and if the connection handle is not NULL), we log out +}

      If we are connected (and if the connection handle is not NULL), we log out from the database. We need to check if we should encode an 'ok', as we can get -here from function stop, which does not return data to the emulator:

      static int do_disconnect(our_data_t* data, ei_x_buff* x)
      -{
      -    if (data->conn == NULL)
      +here from function stop, which does not return data to the emulator:

      static int do_disconnect(our_data_t* data, ei_x_buff* x)
      +{
      +    if (data->conn == NULL)
               return 0;
      -    PQfinish(data->conn);
      +    PQfinish(data->conn);
           data->conn = NULL;
      -    if (x != NULL)
      -        encode_ok(x);
      +    if (x != NULL)
      +        encode_ok(x);
           return 0;
      -}

      We execute a query and encode the result. Encoding is done in another C module, -pg_encode.c, which is also provided as sample code.

      static int do_select(const char* s, our_data_t* data, ei_x_buff* x)
      -{
      -   PGresult* res = PQexec(data->conn, s);
      -    encode_result(x, res, data->conn);
      -    PQclear(res);
      +}

      We execute a query and encode the result. Encoding is done in another C module, +pg_encode.c, which is also provided as sample code.

      static int do_select(const char* s, our_data_t* data, ei_x_buff* x)
      +{
      +   PGresult* res = PQexec(data->conn, s);
      +    encode_result(x, res, data->conn);
      +    PQclear(res);
           return 0;
      -}

      Here we check the result from postgres. If it is data, we encode it as lists of +}

      Here we check the result from postgres. If it is data, we encode it as lists of lists with column data. Everything from postgres is C strings, so we use ei_x_encode_string to send the result as strings to Erlang. (The head of the -list contains the column names.)

      void encode_result(ei_x_buff* x, PGresult* res, PGconn* conn)
      -{
      +list contains the column names.)

      void encode_result(ei_x_buff* x, PGresult* res, PGconn* conn)
      +{
           int row, n_rows, col, n_cols;
      -    switch (PQresultStatus(res)) {
      +    switch (PQresultStatus(res)) {
           case PGRES_TUPLES_OK:
      -        n_rows = PQntuples(res);
      -        n_cols = PQnfields(res);
      -        ei_x_encode_tuple_header(x, 2);
      -        encode_ok(x);
      -        ei_x_encode_list_header(x, n_rows+1);
      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html differs (HTML document, UTF-8 Unicode text, with very long lines)
      --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html	2025-11-19 10:45:51.669488385 +0000
      +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html	2025-11-19 10:45:51.677488435 +0000
      @@ -176,54 +176,54 @@
         
         Data Types
       

      -

      ErlDrvEntry

      typedef struct erl_drv_entry {
      -    int (*init)(void);          /* Called at system startup for statically
      +

      ErlDrvEntry

      typedef struct erl_drv_entry {
      +    int (*init)(void);          /* Called at system startup for statically
                                          linked drivers, and after loading for
                                          dynamically loaded drivers */
       #ifndef ERL_SYS_DRV
      -    ErlDrvData (*start)(ErlDrvPort port, char *command);
      +    ErlDrvData (*start)(ErlDrvPort port, char *command);
                                       /* Called when open_port/2 is invoked,
                                          return value -1 means failure */
       #else
      -    ErlDrvData (*start)(ErlDrvPort port, char *command, SysDriverOpts* opts);
      +    ErlDrvData (*start)(ErlDrvPort port, char *command, SysDriverOpts* opts);
                                       /* Special options, only for system driver */
       #endif
      -    void (*stop)(ErlDrvData drv_data);
      +    void (*stop)(ErlDrvData drv_data);
                                       /* Called when port is closed, and when the
                                          emulator is halted */
      -    void (*output)(ErlDrvData drv_data, char *buf, ErlDrvSizeT len);
      +    void (*output)(ErlDrvData drv_data, char *buf, ErlDrvSizeT len);
                                       /* Called when we have output from Erlang to
                                          the port */
      -    void (*ready_input)(ErlDrvData drv_data, ErlDrvEvent event);
      +    void (*ready_input)(ErlDrvData drv_data, ErlDrvEvent event);
                                       /* Called when we have input from one of
                                          the driver's handles */
      -    void (*ready_output)(ErlDrvData drv_data, ErlDrvEvent event);
      +    void (*ready_output)(ErlDrvData drv_data, ErlDrvEvent event);
                                       /* Called when output is possible to one of
                                          the driver's handles */
           char *driver_name;          /* Name supplied as command in
                                          erlang:open_port/2 */
      -    void (*finish)(void);       /* Called before unloading the driver -
      +    void (*finish)(void);       /* Called before unloading the driver -
                                          dynamic drivers only */
           void *handle;               /* Reserved, used by emulator internally */
      -    ErlDrvSSizeT (*control)(ErlDrvData drv_data, unsigned int command,
      +    ErlDrvSSizeT (*control)(ErlDrvData drv_data, unsigned int command,
                                   char *buf, ErlDrvSizeT len,
      -			    char **rbuf, ErlDrvSizeT rlen);
      +			    char **rbuf, ErlDrvSizeT rlen);
                                       /* "ioctl" for drivers - invoked by
                                          port_control/3 */
      -    void (*timeout)(ErlDrvData drv_data);
      +    void (*timeout)(ErlDrvData drv_data);
                                       /* Handling of time-out in driver */
      -    void (*outputv)(ErlDrvData drv_data, ErlIOVec *ev);
      +    void (*outputv)(ErlDrvData drv_data, ErlIOVec *ev);
                                       /* Called when we have output from Erlang
                                          to the port */
      -    void (*ready_async)(ErlDrvData drv_data, ErlDrvThreadData thread_data);
      -    void (*flush)(ErlDrvData drv_data);
      +    void (*ready_async)(ErlDrvData drv_data, ErlDrvThreadData thread_data);
      +    void (*flush)(ErlDrvData drv_data);
                                       /* Called when the port is about to be
                                          closed, and there is data in the
                                          driver queue that must be flushed
                                          before 'stop' can be called */
      -    ErlDrvSSizeT (*call)(ErlDrvData drv_data, unsigned int command,
      +    ErlDrvSSizeT (*call)(ErlDrvData drv_data, unsigned int command,
                                char *buf, ErlDrvSizeT len,
      -			 char **rbuf, ErlDrvSizeT rlen, unsigned int *flags);
      +			 char **rbuf, ErlDrvSizeT rlen, unsigned int *flags);
                                       /* Works mostly like 'control', a synchronous
                                          call into the driver */
           void* unused_event_callback;
      @@ -232,11 +232,11 @@
           int minor_version;          /* ERL_DRV_EXTENDED_MINOR_VERSION */
           int driver_flags;           /* ERL_DRV_FLAGs */
           void *handle2;              /* Reserved, used by emulator internally */
      -    void (*process_exit)(ErlDrvData drv_data, ErlDrvMonitor *monitor);
      +    void (*process_exit)(ErlDrvData drv_data, ErlDrvMonitor *monitor);
                                       /* Called when a process monitor fires */
      -    void (*stop_select)(ErlDrvEvent event, void* reserved);
      +    void (*stop_select)(ErlDrvEvent event, void* reserved);
                                       /* Called to close an event object */
      - } ErlDrvEntry;
      • int (*init)(void) - Called directly after the driver has been + } ErlDrvEntry;

      • int (*init)(void) - Called directly after the driver has been loaded by erl_ddll:load_driver/2 (actually when the driver is added to the driver list). The driver is to return 0, or, if the driver cannot initialize, -1.

      • ErlDrvData (*start)(ErlDrvPort port, char* command) - Called @@ -421,7 +421,7 @@ Erlang programming language

        -

        Copyright © 1996-2025 Ericsson AB

        +

        Copyright © 1996-2041 Ericsson AB

        /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html 2025-11-19 10:45:51.697488559 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html 2025-11-19 10:45:51.701488584 +0000 @@ -305,7 +305,7 @@ Erlang programming language

        -

        Copyright © 1996-2025 Ericsson AB

        +

        Copyright © 1996-2041 Ericsson AB

        /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html 2025-11-19 10:45:51.737488808 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html 2025-11-19 10:45:51.741488833 +0000 @@ -154,18 +154,18 @@ init process and can be retrieved by calling init:get_plain_arguments/0. Plain arguments can occur before the first flag, or after a -- flag. Also, the -extra flag causes everything that follows to become plain arguments.

      Examples:

      % erl +W w -sname arnie +R 9 -s my_init -extra +bertie
      -(arnie@host)1> init:get_argument(sname).
      -{ok,[["arnie"]]}
      -(arnie@host)2> init:get_plain_arguments().
      -["+bertie"]

      Here +W w and +R 9 are emulator flags. -s my_init is an init flag, +(arnie@host)1> init:get_argument(sname). +{ok,[["arnie"]]} +(arnie@host)2> init:get_plain_arguments(). +["+bertie"]

      Here +W w and +R 9 are emulator flags. -s my_init is an init flag, interpreted by init. -sname arnie is a user flag, stored by init. It is read by Kernel and causes the Erlang runtime system to become distributed. Finally, everything after -extra (that is, +bertie) is considered as plain arguments.

      % erl -myflag 1
      -1> init:get_argument(myflag).
      -{ok,[["1"]]}
      -2> init:get_plain_arguments().
      -[]

      Here the user flag -myflag 1 is passed to and stored by the init process. It +1> init:get_argument(myflag). +{ok,[["1"]]} +2> init:get_plain_arguments(). +[]

      Here the user flag -myflag 1 is passed to and stored by the init process. It is a user-defined flag, presumably used by some user-defined application.

      @@ -702,7 +702,7 @@ also balances scheduler utilization between schedulers.

    • +sct CpuTopology - Sets a user-defined CPU topology. The user-defined CPU topology overrides any automatically detected CPU topology. The CPU topology is used when -binding schedulers to logical processors.

      <Id> = integer(); when 0 =< <Id> =< 65535
      +binding schedulers to logical processors.

      <Id> = integer(); when 0 =< <Id> =< 65535
       <IdRange> = <Id>-<Id>
       <IdOrIdRange> = <Id> | <IdRange>
       <IdList> = <IdOrIdRange>,<IdOrIdRange> | <IdOrIdRange>
      @@ -735,22 +735,22 @@
       NUMA node. If <ProcessorIds> is omitted, its default position is before
       <NodeIds>. That is, the default is processor external NUMA nodes.

      If a list of identifiers is used in an <IdDefs>:

      • <LogicalIds> must be a list of identifiers.
      • At least one other identifier type besides <LogicalIds> must also have a list of identifiers.
      • All lists of identifiers must produce the same number of identifiers.

      A simple example. A single quad core processor can be described as follows:

      % erl +sct L0-3c0-3
      -1> erlang:system_info(cpu_topology).
      -[{processor,[{core,{logical,0}},
      -             {core,{logical,1}},
      -             {core,{logical,2}},
      -             {core,{logical,3}}]}]

      A more complicated example with two quad core processors, each processor in +1> erlang:system_info(cpu_topology). +[{processor,[{core,{logical,0}}, + {core,{logical,1}}, + {core,{logical,2}}, + {core,{logical,3}}]}]

      A more complicated example with two quad core processors, each processor in its own NUMA node. The ordering of logical processors is a bit weird. This to give a better example of identifier lists:

      % erl +sct L0-1,3-2c0-3p0N0:L7,4,6-5c0-3p1N1
      -1> erlang:system_info(cpu_topology).
      -[{node,[{processor,[{core,{logical,0}},
      -                    {core,{logical,1}},
      -                    {core,{logical,3}},
      -                    {core,{logical,2}}]}]},
      - {node,[{processor,[{core,{logical,7}},
      -                    {core,{logical,4}},
      -                    {core,{logical,6}},
      -                    {core,{logical,5}}]}]}]

      As long as real identifiers are correct, it is OK to pass a CPU topology +1> erlang:system_info(cpu_topology). +[{node,[{processor,[{core,{logical,0}}, + {core,{logical,1}}, + {core,{logical,3}}, + {core,{logical,2}}]}]}, + {node,[{processor,[{core,{logical,7}}, + {core,{logical,4}}, + {core,{logical,6}}, + {core,{logical,5}}]}]}]

      As long as real identifiers are correct, it is OK to pass a CPU topology that is not a correct description of the CPU topology. When used with care this can be very useful. This to trick the emulator to bind its schedulers as you want. For example, if you want to run multiple Erlang runtime systems @@ -925,10 +925,10 @@ user's home directory and then filename:basedir(user_config, "erlang").

      If an .erlang file is found, it is assumed to contain valid Erlang expressions. These expressions are evaluated as if they were input to the -shell.

      A typical .erlang file contains a set of search paths, for example:

      io:format("executing user profile in $HOME/.erlang\n",[]).
      -code:add_path("/home/calvin/test/ebin").
      -code:add_path("/home/hobbes/bigappl-1.2/ebin").
      -io:format(".erlang rc finished\n",[]).
    • user_default and shell_default - Functions in the shell that are not +shell.

      A typical .erlang file contains a set of search paths, for example:

      io:format("executing user profile in $HOME/.erlang\n",[]).
      +code:add_path("/home/calvin/test/ebin").
      +code:add_path("/home/hobbes/bigappl-1.2/ebin").
      +io:format(".erlang rc finished\n",[]).
    • user_default and shell_default - Functions in the shell that are not prefixed by a module name are assumed to be functional objects (funs), built-in functions (BIFs), or belong to the module user_default or shell_default.

      To include private shell commands, define them in a module user_default and @@ -990,7 +990,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html 2025-11-19 10:45:51.773489033 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html 2025-11-19 10:45:51.773489033 +0000 @@ -256,7 +256,7 @@ client ->> EPMD: NAMES_REQ EPMD -->> client: NAMES_RESP
    1
    110

    Table: NAMES_REQ (110)

    The response for a NAMES_REQ is as follows:

    4
    EPMDPortNoNodeInfo*

    Table: NAMES_RESP

    NodeInfo is a string written for each active node. When all NodeInfo has -been written the connection is closed by the EPMD.

    NodeInfo is, as expressed in Erlang:

    io:format("name ~ts at port ~p~n", [NodeName, Port]).

    +been written the connection is closed by the EPMD.

    NodeInfo is, as expressed in Erlang:

    io:format("name ~ts at port ~p~n", [NodeName, Port]).

    @@ -271,9 +271,9 @@ client ->> EPMD: DUMP_REQ EPMD -->> client: DUMP_RESP

    1
    100

    Table: DUMP_REQ

    The response for a DUMP_REQ is as follows:

    4
    EPMDPortNoNodeInfo*

    Table: DUMP_RESP

    NodeInfo is a string written for each node kept in the EPMD. When all -NodeInfo has been written the connection is closed by the EPMD.

    NodeInfo is, as expressed in Erlang:

    io:format("active name     ~ts at port ~p, fd = ~p~n",
    -          [NodeName, Port, Fd]).

    or

    io:format("old/unused name ~ts at port ~p, fd = ~p ~n",
    -          [NodeName, Port, Fd]).

    +NodeInfo has been written the connection is closed by the EPMD.

    NodeInfo is, as expressed in Erlang:

    io:format("active name     ~ts at port ~p, fd = ~p~n",
    +          [NodeName, Port, Fd]).

    or

    io:format("old/unused name ~ts at port ~p, fd = ~p ~n",
    +          [NodeName, Port, Fd]).

    @@ -411,7 +411,7 @@ Semigraphic View

    -
    A (initiator)                                      B (acceptor)
    +
    A (initiator)                                      B (acceptor)
     
     TCP connect ------------------------------------>
                                                        TCP accept
    @@ -421,36 +421,36 @@
     
       <---------------------------------------------- send_status
     recv_status
    -(if status was 'alive'
    +(if status was 'alive'
      send_status - - - - - - - - - - - - - - - - - ->
    -                                                   recv_status)
    +                                                   recv_status)
     
    -                          (ChB)                      ChB = gen_challenge()
    +                          (ChB)                      ChB = gen_challenge()
       <---------------------------------------------- send_challenge
     recv_challenge
     
    -(if old send_name
    +(if old send_name
      send_complement - - - - - - - - - - - - - - - ->
    -                                                   recv_complement)
    +                                                   recv_complement)
     
    -ChA = gen_challenge(),
    -OCA = out_cookie(B),
    -DiA = gen_digest(ChB, OCA)
    -                          (ChA, DiA)
    +ChA = gen_challenge(),
    +OCA = out_cookie(B),
    +DiA = gen_digest(ChB, OCA)
    +                          (ChA, DiA)
     send_challenge_reply --------------------------->
                                                        recv_challenge_reply
    -                                                   ICB = in_cookie(A),
    +                                                   ICB = in_cookie(A),
                                                        check:
    -                                                   DiA == gen_digest (ChB, ICB)?
    +                                                   DiA == gen_digest (ChB, ICB)?
                                                        - if OK:
    -                                                    OCB = out_cookie(A),
    -                                                    DiB = gen_digest (ChA, OCB)
    -                          (DiB)
    +                                                    OCB = out_cookie(A),
    +                                                    DiB = gen_digest (ChA, OCB)
    +                          (DiB)
       <----------------------------------------------- send_challenge_ack
     recv_challenge_ack                                  DONE
    -ICA = in_cookie(B),                                - else:
    +ICA = in_cookie(B),                                - else:
     check:                                              CLOSE
    -DiB == gen_digest(ChA, ICA)?
    +DiB == gen_digest(ChA, ICA)?
     - if OK:
      DONE
     - else:
    @@ -766,7 +766,7 @@
               Erlang programming language
     
           

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 2025-11-19 10:45:51.825489356 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 2025-11-19 10:45:51.825489356 +0000 @@ -333,7 +333,7 @@
    • ErlDrvSizeT - An unsigned integer type to be used as size_t.

    • ErlDrvSSizeT - A signed integer type, the size of -ErlDrvSizeT.

    • ErlDrvSysInfo

      typedef struct ErlDrvSysInfo {
      +ErlDrvSizeT.

    • ErlDrvSysInfo

      typedef struct ErlDrvSysInfo {
          int driver_major_version;
          int driver_minor_version;
          char *erts_version;
      @@ -345,7 +345,7 @@
          int nif_major_version;
          int nif_minor_version;
          int dirty_scheduler_support;
      -} ErlDrvSysInfo;

      The ErlDrvSysInfo structure is used for storage of information about the +} ErlDrvSysInfo;

    The ErlDrvSysInfo structure is used for storage of information about the Erlang runtime system. driver_system_info writes the system information when passed a reference to a ErlDrvSysInfo structure. The fields @@ -401,12 +401,12 @@ aligned for storage of an array of doubles (usually 8-byte aligned).

  • ErlDrvData - A handle to driver-specific data, passed to the driver callbacks. It is a pointer, and is most often type cast to a specific pointer in the driver.

  • SysIOVec - A system I/O vector, as used by writev on Unix and -WSASend on Win32. It is used in ErlIOVec.

  • ErlIOVec

    typedef struct ErlIOVec {
    +WSASend on Win32. It is used in ErlIOVec.

  • ErlIOVec

    typedef struct ErlIOVec {
       int vsize;
       ErlDrvSizeT size;
       SysIOVec* iov;
       ErlDrvBinary** binv;
    -} ErlIOVec;

    The I/O vector used by the emulator and drivers is a list of binaries, with a +} ErlIOVec;

  • The I/O vector used by the emulator and drivers is a list of binaries, with a SysIOVec pointing to the buffers of the binaries. It is used in driver_outputv and the outputv driver callback. Also, the driver queue is an ErlIOVec.

  • ErlDrvMonitor - When a driver creates a monitor for a process, a @@ -485,8 +485,8 @@ add_driver_entry() -

    void add_driver_entry(ErlDrvEntry
    -        *de);

    Adds a driver entry to the list of drivers known by Erlang. The +

    void add_driver_entry(ErlDrvEntry
    +        *de);

    Adds a driver entry to the list of drivers known by Erlang. The init function of parameter de is called.

    Note

    To use this function for adding drivers residing in dynamically loaded code is dangerous. If the driver code for the added driver resides in the same dynamically loaded module (that is, .so file) as a normal dynamically loaded @@ -498,7 +498,7 @@ driver_alloc() -

    void * driver_alloc(ErlDrvSizeT size);

    Allocates a memory block of the size specified in size, and returns it. This +

    void * driver_alloc(ErlDrvSizeT size);

    Allocates a memory block of the size specified in size, and returns it. This fails only on out of memory, in which case NULL is returned. (This is most often a wrapper for malloc).

    Memory allocated must be explicitly freed with a corresponding call to driver_free (unless otherwise stated).

    This function is thread-safe.

    @@ -507,7 +507,7 @@ driver_alloc_binary()

    -
    ErlDrvBinary * driver_alloc_binary(ErlDrvSizeT size);

    Allocates a driver binary with a memory block of at least size bytes, and +

    ErlDrvBinary * driver_alloc_binary(ErlDrvSizeT size);

    Allocates a driver binary with a memory block of at least size bytes, and returns a pointer to it, or NULL on failure (out of memory). When a driver binary has been sent to the emulator, it must not be changed. Every allocated binary is to be freed by a corresponding call to @@ -521,9 +521,9 @@ driver_async() -

    long driver_async(ErlDrvPort port, unsigned
    -        int* key, void (*async_invoke)(void*), void* async_data, void
    -        (*async_free)(void*));

    Performs an asynchronous call. The function async_invoke is invoked in a +

    long driver_async(ErlDrvPort port, unsigned
    +        int* key, void (*async_invoke)(void*), void* async_data, void
    +        (*async_free)(void*));

    Performs an asynchronous call. The function async_invoke is invoked in a thread separate from the emulator thread. This enables the driver to perform time-consuming, blocking operations without blocking the emulator.

    The async thread pool size can be set with command-line argument +A in erl(1). If an async @@ -555,7 +555,7 @@ driver_async_port_key() -

    unsigned int driver_async_port_key(ErlDrvPort port);

    Calculates a key for later use in driver_async. +

    unsigned int driver_async_port_key(ErlDrvPort port);

    Calculates a key for later use in driver_async. The keys are evenly distributed so that a fair mapping between port IDs and async thread IDs is achieved.

    Note

    Before Erlang/OTP R16, the port ID could be used as a key with proper casting, but after the rewrite of the port subsystem, this is no longer the case. With @@ -566,7 +566,7 @@ driver_binary_dec_refc() -

    long driver_binary_dec_refc(ErlDrvBinary *bin);

    Decrements the reference count on bin and returns the reference count reached +

    long driver_binary_dec_refc(ErlDrvBinary *bin);

    Decrements the reference count on bin and returns the reference count reached after the decrement.

    This function is thread-safe.

    Note

    The reference count of driver binary is normally to be decremented by calling driver_free_binary.

    driver_binary_dec_refc does not free the binary if the reference count reaches zero. Only use driver_binary_dec_refc when you are sure not to @@ -576,21 +576,21 @@ driver_binary_get_refc() -

    long driver_binary_get_refc(ErlDrvBinary *bin);

    Returns the current reference count on bin.

    This function is thread-safe.

    +
    long driver_binary_get_refc(ErlDrvBinary *bin);

    Returns the current reference count on bin.

    This function is thread-safe.

    driver_binary_inc_refc()

    -
    long driver_binary_inc_refc(ErlDrvBinary *bin);

    Increments the reference count on bin and returns the reference count reached +

    long driver_binary_inc_refc(ErlDrvBinary *bin);

    Increments the reference count on bin and returns the reference count reached after the increment.

    This function is thread-safe.

    driver_caller()

    -
    ErlDrvTermData driver_caller(ErlDrvPort
    -        port);

    Returns the process ID of the process that made the current call to the driver. +

    ErlDrvTermData driver_caller(ErlDrvPort
    +        port);

    Returns the process ID of the process that made the current call to the driver. The process ID can be used with driver_send_term to send back data to the caller. driver_caller only returns valid data when currently executing in one @@ -603,14 +603,14 @@ driver_cancel_timer() -

    int driver_cancel_timer(ErlDrvPort port);

    Cancels a timer set with driver_set_timer.

    The return value is 0.

    +
    int driver_cancel_timer(ErlDrvPort port);

    Cancels a timer set with driver_set_timer.

    The return value is 0.

    driver_compare_monitors()

    -
    int driver_compare_monitors(const ErlDrvMonitor
    -        *monitor1, const ErlDrvMonitor *monitor2);

    Compares two ErlDrvMonitors. Can also be used to imply some artificial order +

    int driver_compare_monitors(const ErlDrvMonitor
    +        *monitor1, const ErlDrvMonitor *monitor2);

    Compares two ErlDrvMonitors. Can also be used to imply some artificial order on monitors, for whatever reason.

    Returns 0 if monitor1 and monitor2 are equal, < 0 if monitor1 < monitor2, and > 0 if monitor1 > monitor2.

    @@ -618,16 +618,16 @@ driver_connected()

    -
    ErlDrvTermData driver_connected(ErlDrvPort
    -        port);

    Returns the port owner process.

    Notice that this function is not thread-safe.

    +
    ErlDrvTermData driver_connected(ErlDrvPort
    +        port);

    Returns the port owner process.

    Notice that this function is not thread-safe.

    driver_create_port()

    -
    ErlDrvPort driver_create_port(ErlDrvPort port,
    +
    ErlDrvPort driver_create_port(ErlDrvPort port,
             ErlDrvTermData owner_pid, char* name,
    -        ErlDrvData drv_data);

    Creates a new port executing the same driver code as the port creating the new + ErlDrvData drv_data);

    Creates a new port executing the same driver code as the port creating the new port.

    • port - The port handle of the port (driver instance) creating the new port.

    • owner_pid - The process ID of the Erlang process to become owner of the new port. This process will be linked to the new port. You usually want to use @@ -648,15 +648,15 @@ driver_demonitor_process() -

      int driver_demonitor_process(ErlDrvPort port,
      -        const ErlDrvMonitor *monitor);

      Cancels a monitor created earlier.

      Returns 0 if a monitor was removed and > 0 if the monitor no longer exists.

      +
      int driver_demonitor_process(ErlDrvPort port,
      +        const ErlDrvMonitor *monitor);

      Cancels a monitor created earlier.

      Returns 0 if a monitor was removed and > 0 if the monitor no longer exists.

      driver_deq()

      -
      ErlDrvSizeT driver_deq(ErlDrvPort port,
      -        ErlDrvSizeT size);

      Dequeues data by moving the head pointer forward in the driver queue by size +

      ErlDrvSizeT driver_deq(ErlDrvPort port,
      +        ErlDrvSizeT size);

      Dequeues data by moving the head pointer forward in the driver queue by size bytes. The data in the queue is deallocated.

      Returns the number of bytes remaining in the queue on success, otherwise -1.

      This function can be called from any thread if a port data lock associated with the port is locked by the calling thread during the call.

      @@ -665,8 +665,8 @@ driver_enq()

      -
      int driver_enq(ErlDrvPort port, char* buf,
      -        ErlDrvSizeT len);

      Enqueues data in the driver queue. The data in buf is copied (len bytes) and +

      int driver_enq(ErlDrvPort port, char* buf,
      +        ErlDrvSizeT len);

      Enqueues data in the driver queue. The data in buf is copied (len bytes) and placed at the end of the driver queue. The driver queue is normally used in a FIFO way.

      The driver queue is available to queue output from the emulator to the driver (data from the driver to the emulator is queued by the emulator in normal Erlang @@ -681,8 +681,8 @@ driver_enq_bin() -

      int driver_enq_bin(ErlDrvPort port,
      -        ErlDrvBinary *bin, ErlDrvSizeT offset, ErlDrvSizeT len);

      Enqueues a driver binary in the driver queue. The data in bin at offset with +

      int driver_enq_bin(ErlDrvPort port,
      +        ErlDrvBinary *bin, ErlDrvSizeT offset, ErlDrvSizeT len);

      Enqueues a driver binary in the driver queue. The data in bin at offset with length len is placed at the end of the queue. This function is most often /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html 2025-11-19 10:45:51.861489580 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html 2025-11-19 10:45:51.869489630 +0000 @@ -440,7 +440,7 @@ positive and 1 if it is negative. The digits are stored with the least significant byte stored first. To calculate the integer, the following formula can be used:

      B = 256
      -(d0*B^0 + d1*B^1 + d2*B^2 + ... d(N-1)*B^(n-1))

      +(d0*B^0 + d1*B^1 + d2*B^2 + ... d(N-1)*B^(n-1))

  • @@ -625,7 +625,7 @@ Erlang programming language

    -

    Copyright © 1996-2025 Ericsson AB

    +

    Copyright © 1996-2041 Ericsson AB

    /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html 2025-11-19 10:45:51.925489979 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html 2025-11-19 10:45:51.929490004 +0000 @@ -155,29 +155,29 @@

    A minimal example of a NIF library can look as follows:

    /* niftest.c */
     #include <erl_nif.h>
     
    -static ERL_NIF_TERM hello(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
    -{
    -    return enif_make_string(env, "Hello world!", ERL_NIF_LATIN1);
    -}
    -
    -static ErlNifFunc nif_funcs[] =
    -{
    -    {"hello", 0, hello}
    -};
    +static ERL_NIF_TERM hello(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
    +{
    +    return enif_make_string(env, "Hello world!", ERL_NIF_LATIN1);
    +}
    +
    +static ErlNifFunc nif_funcs[] =
    +{
    +    {"hello", 0, hello}
    +};
     
    -ERL_NIF_INIT(niftest,nif_funcs,NULL,NULL,NULL,NULL)

    The Erlang module can look as follows:

    -module(niftest).
    +ERL_NIF_INIT(niftest,nif_funcs,NULL,NULL,NULL,NULL)

    The Erlang module can look as follows:

    -module(niftest).
     
    --export([init/0, hello/0]).
    +-export([init/0, hello/0]).
     
    --nifs([hello/0]).
    +-nifs([hello/0]).
     
    --on_load(init/0).
    +-on_load(init/0).
     
    -init() ->
    -      erlang:load_nif("./niftest", 0).
    +init() ->
    +      erlang:load_nif("./niftest", 0).
     
    -hello() ->
    -      erlang:nif_error("NIF library not loaded").

    Compile and test can look as follows (on Linux):

    $> gcc -fPIC -shared -o niftest.so niftest.c -I $ERL_ROOT/usr/include/
    +hello() ->
    +      erlang:nif_error("NIF library not loaded").

    Compile and test can look as follows (on Linux):

    $> gcc -fPIC -shared -o niftest.so niftest.c -I $ERL_ROOT/usr/include/
     $> erl
     
     1> c(niftest).
    @@ -223,21 +223,21 @@
     
     ERL_NIF_TERM world_atom;
     
    -static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info)
    -{
    -    world_atom = enif_make_atom(env, "world");
    +static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info)
    +{
    +    world_atom = enif_make_atom(env, "world");
         return 0;
    -}
    +}
     
    -static ERL_NIF_TERM hello(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
    -{
    -    ERL_NIF_TERM hello_string = enif_make_string(env, "Hello", ERL_NIF_LATIN1);
    -    return enif_make_tuple2(env, hello_string, world_atom);
    -}
    +static ERL_NIF_TERM hello(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
    +{
    +    ERL_NIF_TERM hello_string = enif_make_string(env, "Hello", ERL_NIF_LATIN1);
    +    return enif_make_tuple2(env, hello_string, world_atom);
    +}
     
    -static ErlNifFunc nif_funcs[] = { { "hello", 0, hello } };
    +static ErlNifFunc nif_funcs[] = { { "hello", 0, hello } };
     
    -ERL_NIF_INIT(niftest, nif_funcs, load, NULL, NULL, NULL)
  • Binaries - Terms of type binary are accessed with the help of struct type +ERL_NIF_INIT(niftest, nif_funcs, load, NULL, NULL, NULL)

  • Binaries - Terms of type binary are accessed with the help of struct type ErlNifBinary, which contains a pointer (data) to the raw binary data and the length (size) of the data in bytes. Both data and size are read-only and are only to be written using calls to API @@ -275,19 +275,19 @@ garbage collector or enif_release_resource). Resource types are uniquely identified by a supplied name string and the name of the implementing module.

    The following is a template example of how to create and return a resource object.

    ERL_NIF_TERM term;
    -MyStruct* obj = enif_alloc_resource(my_resource_type, sizeof(MyStruct));
    +MyStruct* obj = enif_alloc_resource(my_resource_type, sizeof(MyStruct));
     
     /* initialize struct ... */
     
    -term = enif_make_resource(env, obj);
    +term = enif_make_resource(env, obj);
     
    -if (keep_a_reference_of_our_own) {
    +if (keep_a_reference_of_our_own) {
         /* store &#href_anchor"w">
    -}
    -else {
    -    enif_release_resource(obj);
    +}
    +else {
    +    enif_release_resource(obj);
         /* resource now only owned by "Erlang" */
    -}
    +}
     return term;

    Notice that once enif_make_resource creates the term to return to Erlang, the code can choose to either keep its own native pointer to the allocated struct and release it later, or release it immediately and rely only on the @@ -339,50 +339,50 @@ libraries can however fail if deprecated features are used.

  • Time Measurement - Support for time measurement in NIF libraries:

  • I/O Queues
    The Erlang nif library contains function for easily working with I/O vectors as used by the unix system call writev. The I/O Queue is not thread safe, so -some other synchronization mechanism has to be used.

    Typical usage when writing to a file descriptor looks like this:

    int writeiovec(ErlNifEnv *env, ERL_NIF_TERM term, ERL_NIF_TERM *tail,
    -               ErlNifIOQueue *q, int fd) {
    +some other synchronization mechanism has to be used.

    Typical usage when writing to a file descriptor looks like this:

    int writeiovec(ErlNifEnv *env, ERL_NIF_TERM term, ERL_NIF_TERM *tail,
    +               ErlNifIOQueue *q, int fd) {
     
         ErlNifIOVec vec, *iovec = &vec;
         SysIOVec *sysiovec;
         int saved_errno;
         int iovcnt, n;
     
    -    if (!enif_inspect_iovec(env, 64, term, tail, &iovec))
    +    if (!enif_inspect_iovec(env, 64, term, tail, &iovec))
             return -2;
     
    -    if (enif_ioq_size(q) > 0) {
    +    if (enif_ioq_size(q) > 0) {
             /* If the I/O queue contains data we enqueue the iovec and
                then peek the data to write out of the queue. */
    -        if (!enif_ioq_enqv(q, iovec, 0))
    +        if (!enif_ioq_enqv(q, iovec, 0))
                 return -3;
     
    -        sysiovec = enif_ioq_peek(q, &iovcnt);
    -    } else {
    +        sysiovec = enif_ioq_peek(q, &iovcnt);
    +    } else {
             /* If the I/O queue is empty we skip the trip through it. */
             iovcnt = iovec->iovcnt;
             sysiovec = iovec->iov;
    -    }
    +    }
     
         /* Attempt to write the data */
    -    n = writev(fd, sysiovec, iovcnt);
    +    n = writev(fd, sysiovec, iovcnt);
         saved_errno = errno;
     
    -    if (enif_ioq_size(q) == 0) {
    +    if (enif_ioq_size(q) == 0) {
             /* If the I/O queue was initially empty we enqueue any
                remaining data into the queue for writing later. */
    -        if (n >= 0 && !enif_ioq_enqv(q, iovec, n))
    +        if (n >= 0 && !enif_ioq_enqv(q, iovec, n))
                 return -3;
    -    } else {
    +    } else {
             /* Dequeue any data that was written from the queue. */
    -        if (n > 0 && !enif_ioq_deq(q, n, NULL))
    +        if (n > 0 && !enif_ioq_deq(q, n, NULL))
                 return -4;
    -    }
    +    }
     
         /* return n, which is either number of bytes written or -1 if
            some error happened */
         errno = saved_errno;
         return n;
    -}
  • Long-running NIFs
    As mentioned in the warning text at the beginning of +}

  • Long-running NIFs
    As mentioned in the warning text at the beginning of this manual page, it is of vital importance that a native function returns relatively fast. It is difficult to give an exact maximum amount of time that a native function is allowed to work, but usually a well-behaving native @@ -512,12 +512,12 @@ with all its terms is valid until you explicitly invalidate it with enif_free_env or enif_send.

  • All contained terms of a list/tuple/map must belong to the same environment as the list/tuple/map itself. Terms can be copied between environments with -enif_make_copy.

  • ErlNifFunc

    typedef struct {
    +enif_make_copy.

  • ErlNifFunc

    typedef struct {
         const char* name;
         unsigned arity;
    -    ERL_NIF_TERM (*fptr)(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
    +    ERL_NIF_TERM (*fptr)(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
         unsigned flags;
    -} ErlNifFunc;

    Describes a NIF by its name, arity, and implementation.

    • fptr - A pointer to the function that implements the NIF.

    • argv - Contains the function arguments passed to the NIF.

    • argc - The array length, that is, the function arity. argv[N-1] thus +} ErlNifFunc;

  • Describes a NIF by its name, arity, and implementation.

    • fptr - A pointer to the function that implements the NIF.

    • argv - Contains the function arguments passed to the NIF.

    • argc - The array length, that is, the function arity. argv[N-1] thus denotes the Nth argument to the NIF. Notice that the argument argc allows for the same C function to implement several Erlang functions with different arity (but probably with the same name).

    • flags - Is 0 for a regular NIF (and so its value can be omitted for @@ -561,25 +561,25 @@ type. It can be copied, moved in memory, forgotten, and so on.

    • ErlNifResourceType - Each instance of ErlNifResourceType represents a class of memory-managed resource objects that can be garbage collected. Each resource type has a unique name and a -destructor function that is called when objects of its type are released.

    • ErlNifResourceTypeInit

      typedef struct {
      +destructor function that is called when objects of its type are released.

    • ErlNifResourceTypeInit

      typedef struct {
           ErlNifResourceDtor* dtor;       // #1 Destructor
           ErlNifResourceStop* stop;       // #2 Select stop
           ErlNifResourceDown* down;       // #3 Monitor down
      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html differs (HTML document, UTF-8 Unicode text, with very long lines)
      --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html	2025-11-19 10:45:51.957490178 +0000
      +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html	2025-11-19 10:45:51.961490203 +0000
      @@ -412,7 +412,7 @@
       

      Retrieves information about a file.

      Returns {ok, FileInfo} if successful, otherwise error. FileInfo is a record file_info, defined in the Kernel include file file.hrl. Include the following directive in the module from which the -function is called:

      -include_lib("kernel/include/file.hrl").

      For more information about the record see file:read_file_info/2.

      Filename can also be a file in an archive, for example, +function is called:

      -include_lib("kernel/include/file.hrl").

      For more information about the record see file:read_file_info/2.

      Filename can also be a file in an archive, for example, $OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia. For information about archive files, see code.

      @@ -504,7 +504,7 @@ Erlang programming language

      -

      Copyright © 1996-2025 Ericsson AB

      +

      Copyright © 1996-2041 Ericsson AB

      /usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html differs (HTML document, UTF-8 Unicode text, with very long lines) --- old//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 2025-11-19 10:45:51.997490427 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 2025-11-19 10:45:52.001490452 +0000 @@ -149,107 +149,107 @@ module, a much more lightweight message tracer is used, which only records who sent messages to who.

      The following is an example session using it on Linux:

      $ gcc -I erts-8.0/include/ -fPIC -shared -o erl_msg_tracer.so erl_msg_tracer.c
       $ erl
      -Erlang/OTP 19 [DEVELOPMENT] [erts-8.0] [source-ed2b56b] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
      +Erlang/OTP 19 [DEVELOPMENT] [erts-8.0] [source-ed2b56b] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
       
      -Eshell V8.0  (abort with ^G)
      -1> c(erl_msg_tracer), erl_msg_tracer:load().
      +Eshell V8.0  (abort with ^G)
      +1> c(erl_msg_tracer), erl_msg_tracer:load().
       ok
      -2> Tracer = spawn(fun F() -> receive M -> io:format("~p~n",[M]), F() end end).
      +2> Tracer = spawn(fun F() -> receive M -> io:format("~p~n",[M]), F() end end).
       <0.37.0>
      -3> erlang:trace(new, true, [send,{tracer, erl_msg_tracer, Tracer}]).
      +3> erlang:trace(new, true, [send,{tracer, erl_msg_tracer, Tracer}]).
       0
      -{trace,<0.39.0>,<0.27.0>}
      -4> {ok, D} = file:open("/tmp/tmp.data",[write]).
      -{trace,#Port<0.486>,<0.40.0>}
      -{trace,<0.40.0>,<0.21.0>}
      -{trace,#Port<0.487>,<0.4.0>}
      -{trace,#Port<0.488>,<0.4.0>}
      -{trace,#Port<0.489>,<0.4.0>}
      -{trace,#Port<0.490>,<0.4.0>}
      -{ok,<0.40.0>}
      -{trace,<0.41.0>,<0.27.0>}
      -5>

      erl_msg_tracer.erl:

      -module(erl_msg_tracer).
      +{trace,<0.39.0>,<0.27.0>}
      +4> {ok, D} = file:open("/tmp/tmp.data",[write]).
      +{trace,#Port<0.486>,<0.40.0>}
      +{trace,<0.40.0>,<0.21.0>}
      +{trace,#Port<0.487>,<0.4.0>}
      +{trace,#Port<0.488>,<0.4.0>}
      +{trace,#Port<0.489>,<0.4.0>}
      +{trace,#Port<0.490>,<0.4.0>}
      +{ok,<0.40.0>}
      +{trace,<0.41.0>,<0.27.0>}
      +5>

      erl_msg_tracer.erl:

      -module(erl_msg_tracer).
       
      --export([enabled/3, trace/5, load/0]).
      +-export([enabled/3, trace/5, load/0]).
       
      -load() ->
      -    erlang:load_nif("erl_msg_tracer", []).
      +load() ->
      +    erlang:load_nif("erl_msg_tracer", []).
       
      -enabled(_, _, _) ->
      +enabled(_, _, _) ->
           error.
       
      -trace(_, _, _, _, _) ->
      +trace(_, _, _, _, _) ->
           error.

      erl_msg_tracer.c:

      #include <erl_nif.h>
       
       /* NIF interface declarations */
      -static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info);
      -static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info);
      -static void unload(ErlNifEnv* env, void* priv_data);
      +static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info);
      +static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info);
      +static void unload(ErlNifEnv* env,