~/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 @@ -3174 +3174 @@ -/usr/lib64/erlang/lib/ssh-5.2.4/ebin/ssh_file.beam fb5de9d319aeab8c0274c44cf986924440330a4e45b977e4f41cb30517533838 0 +/usr/lib64/erlang/lib/ssh-5.2.4/ebin/ssh_file.beam 172d609b68371d56558b9be0e447510741da5441b3d916e5453013a085971d46 0 @@ -3519,16 +3519,16 @@ -/usr/lib64/erlang/man/man1/cdv.1.gz 51f2283b5e6481b91019869d94ae85921848a3894f712b08cb56842344f1749b 0 -/usr/lib64/erlang/man/man1/ct_run.1.gz 7291b30bf190fbbff416886a441cfae92023225c37894d38783172f7fa7fbc60 0 -/usr/lib64/erlang/man/man1/diameterc.1.gz 75be855eec0e8470421e47c3f5129da6de03192ace063ff2183d5701b8069d87 0 -/usr/lib64/erlang/man/man1/edoc.1.gz c4a62f85842e6b2626743a371011d0efdc7538ac4fc2139a31751b7cd550aced 0 -/usr/lib64/erlang/man/man1/epmd.1.gz d743101b64a44ad10533be37c6d9041d6e10dbcd01933ff95e77cc3c376e2aa3 0 -/usr/lib64/erlang/man/man1/erl.1.gz 9051b38e77e7ebbcb0c665f1ef2557bd4e3b128f5262b99e16dc193f46375379 0 -/usr/lib64/erlang/man/man1/erl_call.1.gz bbafc4fa4b50b1c6d1441e1e079a7beb59c5477a672ac90ebe5d7ea063ca33b9 0 -/usr/lib64/erlang/man/man1/erlc.1.gz 2fd0207274ca2ecde846fc8505191ae073bae1dcdd51fc8eb9c38a2635963b3d 0 -/usr/lib64/erlang/man/man1/erlsrv.1.gz 83365b02c3283d9c56a595f7fe3eaff65793762e946ce8b5c2f8b69f6dd3e8ef 0 -/usr/lib64/erlang/man/man1/escript.1.gz 19bd8d01b0e5e031f7bb60a2844ef0e697219d74c7b24afbbcd05e6e78087d24 0 -/usr/lib64/erlang/man/man1/run_erl.1.gz ec936c6074937395c50fea6287c2d8598257322c6fc1934aebc1e237a6a718d9 0 -/usr/lib64/erlang/man/man1/snmpc.1.gz dcb29ba802c8f5b7a903df14f86256f04804bedb76665186b42f9ba50e4e1f9f 0 -/usr/lib64/erlang/man/man1/start.1.gz e8d391dff6b6ae71f9d84edc5cee8ad2c312becc1633943d9ac6d60a4ef16e01 0 -/usr/lib64/erlang/man/man1/start_erl.1.gz fc8ae6f05fde0b691c9d65a48e681bd2b9d970aa595b2c887828455101f3008f 0 -/usr/lib64/erlang/man/man1/typer.1.gz f1b9cbf61844da9caff23712aa22d628f9e4ceda61ecaf29a9d40f759f1e0ff2 0 -/usr/lib64/erlang/man/man1/werl.1.gz 90e23cbeb6b29967dc3e90c68cf11e10d7fea29984cf3f83ee186e1deeaba878 0 +/usr/lib64/erlang/man/man1/cdv.1.gz 35720c665a33b8a3ca90e8dcaaf4a597a5b6b2896bff82da6192c6a229d9968b 0 +/usr/lib64/erlang/man/man1/ct_run.1.gz 686174bce2932ee9b0c0f60125ec709d161118830a7d7caf70bc9d2d84513933 0 +/usr/lib64/erlang/man/man1/diameterc.1.gz 081228233a82a08dfecba1d1e7e214d03e4e047ec2b270daeb373c73aac0f85e 0 +/usr/lib64/erlang/man/man1/edoc.1.gz 917b89e1a789a23c315abdff7be17af6021658478178f0a75a72ab0fece35708 0 +/usr/lib64/erlang/man/man1/epmd.1.gz 85b10bda7039c4deaf9f7d7839d7cd1b4946e4ac40f25fb1d51b2e2678d4d60e 0 +/usr/lib64/erlang/man/man1/erl.1.gz c399c8175ac7a6658c7e661f6e0b6f8022b5b695fe25ab7e24699d22de59a4ee 0 +/usr/lib64/erlang/man/man1/erl_call.1.gz 870fdcf0d9ce0c6b933704199df1f615609214056a90bd1272444861858f553a 0 +/usr/lib64/erlang/man/man1/erlc.1.gz c45254052c9fbf4ab68a41db2b935c49c5ba610d43fa090e2a3aaf3cad15ae1e 0 +/usr/lib64/erlang/man/man1/erlsrv.1.gz ae786de7c68307aa53db7459f2565311bb4942f810ae160de40dfeb55e574765 0 +/usr/lib64/erlang/man/man1/escript.1.gz 26917301c0471dd91c1dfee3f876f070b27ccf9699cfe8d7c3df2e7f2fa11b37 0 +/usr/lib64/erlang/man/man1/run_erl.1.gz 86b2cf3b3fd1a4c44c2db6468433ddaa59d60d5e6005440710d2609978c8e4d4 0 +/usr/lib64/erlang/man/man1/snmpc.1.gz e7018fd4f1483d6f98af8fdfef1a0a816ef7a9028f42675b2c474ae83d4d8d3b 0 +/usr/lib64/erlang/man/man1/start.1.gz bebc37b89d5d110944db8496550b54f918f1b186772bccae97228626223ae60f 0 +/usr/lib64/erlang/man/man1/start_erl.1.gz 81801d1dfd5085bf031d5b15ff6cce54b1b332f1c44a38122347b9570d027892 0 +/usr/lib64/erlang/man/man1/typer.1.gz b3dfa9f884a197ca040812ac063eb7e064a6d5dfb6e36b0d0ce763920860000e 0 +/usr/lib64/erlang/man/man1/werl.1.gz 011f2f6197a0c8b0029248f750a984f0762b62e71d2af547aafcfa560c0dee00 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/ssh-5.2.4/ebin/ssh_file.beam differs at offset '69489' (Erlang BEAM file) --- old /usr/lib64/erlang/lib/ssh-5.2.4/ebin/ssh_file.beam (hex) +++ new /usr/lib64/erlang/lib/ssh-5.2.4/ebin/ssh_file.beam (hex) @@ -1,10 +1,10 @@ 00010f40 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 64 |ptions for the d| 00010f50 65 66 61 75 6c 74 20 73 73 68 5f 66 69 6c 65 20 |efault ssh_file | 00010f60 63 61 6c 6c 62 61 63 6b 20 6d 6f 64 75 6c 65 77 |callback modulew| -00010f70 08 65 78 70 6f 72 74 65 64 77 05 66 61 6c 73 65 |.exportedw.false| -00010f80 77 05 65 71 75 69 76 6d 00 00 00 1b 6f 70 65 6e |w.equivm....open| -00010f90 73 73 68 5f 6b 65 79 5f 76 31 5f 61 74 74 72 69 |ssh_key_v1_attri| -00010fa0 62 75 74 65 73 2f 30 77 05 73 69 6e 63 65 6b 00 |butes/0w.sincek.| +00010f70 05 65 71 75 69 76 6d 00 00 00 1b 6f 70 65 6e 73 |.equivm....opens| +00010f80 73 68 5f 6b 65 79 5f 76 31 5f 61 74 74 72 69 62 |sh_key_v1_attrib| +00010f90 75 74 65 73 2f 30 77 08 65 78 70 6f 72 74 65 64 |utes/0w.exported| +00010fa0 77 05 66 61 6c 73 65 77 05 73 69 6e 63 65 6b 00 |w.falsew.sincek.| 00010fb0 08 4f 54 50 20 32 31 2e 32 68 05 68 03 77 04 74 |.OTP 21.2h.h.w.t| 00010fc0 79 70 65 77 03 6b 65 79 61 00 68 02 61 f5 61 02 |ypew.keya.h.a.a.| 00010fd0 6c 00 00 00 01 6d 00 00 00 05 6b 65 79 28 29 6a |l....m....key()j| 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 @@ -512 +512 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/dist/search_data-961544C0.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/dist/search_data-D052B73D.js 2 (none) 100644 root root 0 4294967295 @@ -753 +753 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/dist/search_data-FC950B1D.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/dist/search_data-1A8AA22A.js 2 (none) 100644 root root 0 4294967295 @@ -831 +831 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/dist/search_data-F7B0262D.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/dist/search_data-B90F468D.js 2 (none) 100644 root root 0 4294967295 @@ -904 +904 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/dist/search_data-DCE6DC3D.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/dist/search_data-6DB131C5.js 2 (none) 100644 root root 0 4294967295 @@ -1224 +1224 @@ -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/dist/search_data-492AF504.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/dist/search_data-2DB78EC4.js 2 (none) 100644 root root 0 4294967295 @@ -2369,2 +2369,2 @@ -/usr/share/doc/packages/erlang27-doc/doc/404.html e507051682899c100e8ebb30a7c9a2667871313ce85c1e0ed9eed4f184ef9ea3 2 -/usr/share/doc/packages/erlang27-doc/doc/asn1.html 2d5d1ae62b6c8ac065a6c2b7a67bffa528663c5b7fa75c614012ca44eab4203c 2 +/usr/share/doc/packages/erlang27-doc/doc/404.html 27d8b6d928d73141c781276620291b6ebfa192efe3cf22ffea9364fed6822e69 2 +/usr/share/doc/packages/erlang27-doc/doc/asn1.html 90efafb6ef574aa6f763497093956b79bf4c84760b70372f678ad5d252ef2ff6 2 @@ -2373,8 +2373,8 @@ -/usr/share/doc/packages/erlang27-doc/doc/common_test.html 33dc8d1195b6282ffca1bc92b193e69d225c9257c45c31f072c1f3428bee7cff 2 -/usr/share/doc/packages/erlang27-doc/doc/compiler.html cb6f169b29002a37b4098841e66b4340091b6332963aaaa6fd775c61a205a8ec 2 -/usr/share/doc/packages/erlang27-doc/doc/crypto.html bb06997da2c76e804b2322825826133473f011add29045dc64120a40df5dddba 2 -/usr/share/doc/packages/erlang27-doc/doc/debugger.html 7b22083a1e84557edfbae82c46c069330d8a05cb522684403905ca6a6c15deb0 2 -/usr/share/doc/packages/erlang27-doc/doc/deprecations.html ab2cdf5746126d9d15f7f4a4dcbbdce6bb99c5a6e218f38166387da94d31b577 2 -/usr/share/doc/packages/erlang27-doc/doc/design_principles.html b6485eb1ddcec01ee4f01ecb8c896a9418d09dcc6f7172c22fc0e7b05d5640a9 2 -/usr/share/doc/packages/erlang27-doc/doc/dialyzer.html f06876ff6aed856544cef04e9ec18aa2200c8d80c637a82b05139d1ef00e3e65 2 -/usr/share/doc/packages/erlang27-doc/doc/diameter.html d35647219828880ec93e86fbba566445cb98eac2d70dd903f1b1a3e3ad826e4e 2 +/usr/share/doc/packages/erlang27-doc/doc/common_test.html 4e7d1bbbbba3fddf3c875f50fbabfadca5b5a52107fa4dac6ee2bd1ce03e8fec 2 +/usr/share/doc/packages/erlang27-doc/doc/compiler.html 2a13e4a70b639bacbb3b28d0e004e6240a7dc26366529adf66bcd8f591b9e106 2 +/usr/share/doc/packages/erlang27-doc/doc/crypto.html 85678de5a1de90e166b39a377ff69423843101771466505e860a61867e562cfc 2 +/usr/share/doc/packages/erlang27-doc/doc/debugger.html 95734e3fc6b73ed8d14a6c8975c2e062280785fd17e61a6d4d9c9d01c170dee8 2 +/usr/share/doc/packages/erlang27-doc/doc/deprecations.html 60426e123e2a66798c2830ac164758657bb9b4a80a0929df8ab3c48029423591 2 +/usr/share/doc/packages/erlang27-doc/doc/design_principles.html ac7c22addd639b97f858bb5d4a57edbb13f0ac8478abfffdbad95b7d79cb71d2 2 +/usr/share/doc/packages/erlang27-doc/doc/dialyzer.html 4f071bfad1136c8a569aab665a202aba1778cee2bc53201e8da7e670952ba650 2 +/usr/share/doc/packages/erlang27-doc/doc/diameter.html 4649d407a78653b06b402a9079257ad9ec9deb225b1c825d08640095cb386f82 2 @@ -2401,10 +2401,10 @@ -/usr/share/doc/packages/erlang27-doc/doc/edoc.html ce83debb7b0ef88c93a64cef24f745481b0e1cf5fd5f6e3a32ffd53c9f5492cf 2 -/usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 238f2978ba6a016e47238b8f3f575d9c5b7baddfb138922f1e34c58652c579a9 2 -/usr/share/doc/packages/erlang27-doc/doc/eldap.html e04a0820d33d3c4ce5c156e973935a02c0c4e234e00845f6f28af6ae2898b672 2 -/usr/share/doc/packages/erlang27-doc/doc/embedded.html b91d9a7e4acb443a19d5d9e4a5eea6bcb7614907dd5273ae2ae486f7fa4d45f7 2 -/usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 0a3d879a1251698e0e52023702271fbeb6f82893c8b528c8b9fdee23e6c02901 2 -/usr/share/doc/packages/erlang27-doc/doc/erts.html fc93eeeeacbc3479d2c1ad2a07cf4eddd8a7b7d06d860ace3236bb762c8fb570 2 -/usr/share/doc/packages/erlang27-doc/doc/et.html 7131d82e86f6500f32736826d05f47b340af5e375e2f15b37222c1a9a97e4c84 2 -/usr/share/doc/packages/erlang27-doc/doc/eunit.html 20dbf3d7d2cbb57a3a90834a62bb164900519b8c97b4023d6f0f3d73185f8349 2 -/usr/share/doc/packages/erlang27-doc/doc/ftp.html a4c1531faa69ae3714bce32baa9c7e8dd6f90c8f5cfd2bd516b9c790e77ed6e0 2 -/usr/share/doc/packages/erlang27-doc/doc/getting_started.html 5d81655b769c7558732ab6040ffe5bd99137c5d3b26dd474d0c1683c63a8b685 2 +/usr/share/doc/packages/erlang27-doc/doc/edoc.html e051bcbe1858608d9e4a3ad7e17d5f71cc15dd7c1ef856e12169552666d9586f 2 +/usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 4c8588b3237561cbab2f3ec130cbb0f52cc0550e2fd94df46362fd277fdad73b 2 +/usr/share/doc/packages/erlang27-doc/doc/eldap.html ea0de49df3bc18285aaa3e0f7c5d19270c1b0b4ecb13c1839d8effd132b1e40c 2 +/usr/share/doc/packages/erlang27-doc/doc/embedded.html 9c9d301fe49c64ea1cf568a1e477f3e352576431317e8f91607d5d038eaf0bf4 2 +/usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 1a6cb2e8c831b71f44e0eab1b4196e6ce7e27cdb1f41c053e3efc0803c0ac5da 2 +/usr/share/doc/packages/erlang27-doc/doc/erts.html c93a496a359cbc88215efb5e19e946310ab9947d4557690aedf627fccd794d86 2 +/usr/share/doc/packages/erlang27-doc/doc/et.html 955f075b93aad352c59c75481870c946d3c23096d02217737eaf7b20f550bda4 2 +/usr/share/doc/packages/erlang27-doc/doc/eunit.html 3e470e968cd04f419ead7edf21ab372745041beeb0266eaddd2bef48bea88ddf 2 +/usr/share/doc/packages/erlang27-doc/doc/ftp.html b7dc3ff89152a671a85b2eb1ffa83f66499d2a19a84f46e93b12f2d0e32acc51 2 +/usr/share/doc/packages/erlang27-doc/doc/getting_started.html 999acc6beba039b361ffe780b015d73aadaa94209752d31d011aa2f3681de06d 2 @@ -2412,26 +2412,26 @@ -/usr/share/doc/packages/erlang27-doc/doc/inets.html e2cd762250de8212105bc689531333c5e4a69ccc0036d25ab934747b97e144c5 2 -/usr/share/doc/packages/erlang27-doc/doc/installation_guide.html 00c3e6ad4c31402fdb4d2effe5999ff8a46a4daa031d2cfbcfa87bd6e37ace5c 2 -/usr/share/doc/packages/erlang27-doc/doc/jinterface.html 3d013f29fe1404174a256e6b8e6b77594e744014a953ae0abd7831b65b0fa4da 2 -/usr/share/doc/packages/erlang27-doc/doc/kernel.html bc56d0602490ea1b6e7f62cb4b6eadf9efc00f6088b56e56cda9119d0594a4ae 2 -/usr/share/doc/packages/erlang27-doc/doc/man_index.html 3ffe92476b6888ea5e7bfbee628b4460691fc39f984a55287a29431d1164963c 2 -/usr/share/doc/packages/erlang27-doc/doc/megaco.html 8e2d1adbaf2aa9cd58223e25b90a21ef58d513c13bc523fb473e53da7830a74d 2 -/usr/share/doc/packages/erlang27-doc/doc/mnesia.html ef5d5ec73453fe42d283660ed1049b681fbd900fad036f08147de6f2c3133a01 2 -/usr/share/doc/packages/erlang27-doc/doc/observer.html ea6dde49c80986cb6f4c70c9d1c051f4f3e0b16458537df77786ecb060e7921b 2 -/usr/share/doc/packages/erlang27-doc/doc/odbc.html abe8a5780e913db65aac1b69724855c9450557d992405f1997f835db4b336b4e 2 -/usr/share/doc/packages/erlang27-doc/doc/os_mon.html f62413fe61d07cd32b9bbe05c9c9f5061680a15792913e8c51a7e68e2e479cee 2 -/usr/share/doc/packages/erlang27-doc/doc/parsetools.html 58fb65615d4567790b49c7426195e20d6dd2e72a833dbf5667cf26959acbfe98 2 -/usr/share/doc/packages/erlang27-doc/doc/programming_examples.html f72d6a29e1e3b38c4ffdce4f0566fb3a3b7be9f8c2bb7c3c8b9b040a9e1ac2a1 2 -/usr/share/doc/packages/erlang27-doc/doc/public_key.html d3481411d590cfe21c000a5dd1e6ea5a9b02cff974ceb2f4da4cbd28183bf1b3 2 -/usr/share/doc/packages/erlang27-doc/doc/readme.html c205efb46b083e0edc35a626ac1ed8f480e4a748efd6120eaffe21fae3d5c1b6 2 -/usr/share/doc/packages/erlang27-doc/doc/reference_manual.html 09d88163bb169149e371a7b8518c41f92df0e8578a090506fe0fc1bf080c34ef 2 -/usr/share/doc/packages/erlang27-doc/doc/reltool.html cfb8660ac4d0abda8c8f7567ec8aae3238718be8d4f580579e5efec52ee56bbd 2 -/usr/share/doc/packages/erlang27-doc/doc/removed.html 5ae42781b2f4e52ba50ba46b89a4d3aeed1e42103a368c25fb68267e0103c982 2 -/usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 6b255daa3e29bec821655ffb9022706a110b0fce75ff4643768f3cbb49dd447c 2 -/usr/share/doc/packages/erlang27-doc/doc/sasl.html 3e58b2847485d84c549384f671533b8c80b285018a7a6c11dbe6782bdda3ff38 2 -/usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html 598fa2962520980642face9e843b6bc1841b175f2584e89e9ba091db80c42a9a 2 -/usr/share/doc/packages/erlang27-doc/doc/search.html 5b8767da92d450cf645637639032ae17c5637a2c4e2d85544ee718a9f8a1bdb1 2 -/usr/share/doc/packages/erlang27-doc/doc/snmp.html 535608e5a1ed7237082dc5dac0271cf598cec5c1b2757687713f8bd3faf94c11 2 -/usr/share/doc/packages/erlang27-doc/doc/ssh.html 79fa4659dc596900686d462dc7ab33d7822cd561d8bd735648014039fa3ffbb8 2 -/usr/share/doc/packages/erlang27-doc/doc/ssl.html 6dca9d42749d11fbae7c979daa686decbfc60fb5c09874894ad9649248bcc8e4 2 -/usr/share/doc/packages/erlang27-doc/doc/stdlib.html b2425d889ef8eda64d7e50b1c2b10105cb69b7a572864f8540285df785713b19 2 -/usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html 7d2660ae6835572c4f02326c0029196d28ff723216f7a5051399c83ff75a7605 2 +/usr/share/doc/packages/erlang27-doc/doc/inets.html 3762b8c13032a299a8ae181ce4a870e4695661641a285eb4bba1986bfef9df96 2 +/usr/share/doc/packages/erlang27-doc/doc/installation_guide.html 26007873d63e66b065ff64719613c93e10df9eb867b3cf3b22a77713837fb0cc 2 +/usr/share/doc/packages/erlang27-doc/doc/jinterface.html 1adccf7837c438a7fdf9eb26ec68a49e58c5f2a0a401b60621dbe4b9bdbd81e2 2 +/usr/share/doc/packages/erlang27-doc/doc/kernel.html 570a0b7634bb18627c29fc2ebc7a0ef61c73717f7aa65f05048afe24f987f7d2 2 +/usr/share/doc/packages/erlang27-doc/doc/man_index.html 827722f13871491228e76dd9fe83e5a9f21e39820aa548d6279e8727e2fb4dd7 2 +/usr/share/doc/packages/erlang27-doc/doc/megaco.html 19184ddd8b37bdc8f7371fc388e71dbb66b6b40610a777c1cfe4faebbee8631d 2 +/usr/share/doc/packages/erlang27-doc/doc/mnesia.html 9950a6b17c337a9433b4710b5c02c97dfaf28127386d4236f1c5808daec82012 2 +/usr/share/doc/packages/erlang27-doc/doc/observer.html e83d378e88a8d13bed448b879dba3dab38f50b0c983875e54d9288da7ccbd9bd 2 +/usr/share/doc/packages/erlang27-doc/doc/odbc.html 74f711cf11360aaf649c9459f28498e1cb866cd792ff526f736fded2a4cd44d2 2 +/usr/share/doc/packages/erlang27-doc/doc/os_mon.html 9e64a12c27564231c4303709c337ac1e851df3e0b59516809b6289137da5b396 2 +/usr/share/doc/packages/erlang27-doc/doc/parsetools.html 0ab96102ca8b7c5717165159d62e6f6361af9051cb6a032d73ace46b12c93834 2 +/usr/share/doc/packages/erlang27-doc/doc/programming_examples.html 01d39cff27dbecb53824a2fface10d72155f99b4bbcb4dd50350a6967011bf6a 2 +/usr/share/doc/packages/erlang27-doc/doc/public_key.html 0335ccb415c21ef85039f8b7ce238e968a7689ee8777a7e16b4be6d4b98b351d 2 +/usr/share/doc/packages/erlang27-doc/doc/readme.html 89c9a7ff2f4bff22f731f55fc1b97ae46fab46a0e3e31cbc50bda9a1dd081b4a 2 +/usr/share/doc/packages/erlang27-doc/doc/reference_manual.html bc0fa5a30ee3a27276f6c387b642b0c54a3473faac89a67edf2b3dbf6beafdb5 2 +/usr/share/doc/packages/erlang27-doc/doc/reltool.html aa7c575d5ed6c1aa299603dc6d45af38fc97948ce434273a2a9d193c6e851a7d 2 +/usr/share/doc/packages/erlang27-doc/doc/removed.html 706a8d40f15175f40be2d54c1a580053940e7e34f3bb270a94fbcfeebb6352df 2 +/usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 173f9150e6ca77dc5d7bc318c5701925a17c23c6e3fa49a4cbf2e8289417f9dd 2 +/usr/share/doc/packages/erlang27-doc/doc/sasl.html 205f73789bd0d7006febb773f0d90b15882f0b632b13adc78760a5ce129bb4b2 2 +/usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html fdde445852564adaceb2da1a74a83f73bf39927dd8f0a2c2c7ae481a2ca4712e 2 +/usr/share/doc/packages/erlang27-doc/doc/search.html 6f543d7585501c5fb4029a7d1721e0176591e35928bdeebc772d3e6058c26fb0 2 +/usr/share/doc/packages/erlang27-doc/doc/snmp.html b17039248cfe7fac2772318abccfe3b0ba272782e870b9b4d7a22e26c6eccd0b 2 +/usr/share/doc/packages/erlang27-doc/doc/ssh.html b548c7f286417e5a430b1f70035ba59b22dff229caf61d7e4b24bc1838fccafb 2 +/usr/share/doc/packages/erlang27-doc/doc/ssl.html 9a8dae73f971d93b6736961d8cf003ebbc8bc870fe95068dc3e1ba0fa4a2face 2 +/usr/share/doc/packages/erlang27-doc/doc/stdlib.html e2a5529395c3f3eb0cfad30ce64c3117d77177c34122592e4e7ca4b34ee66052 2 +/usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html fc91e02caf9162156a8423f464fcbe2efe3150ac87b06c7e3da40b2c41925e99 2 @@ -2439,4 +2439,4 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/404.html c102f86f568c04b869abbc9e0826c78eb59f870735913d72c68c3ae59ff23c1e 2 -/usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub ff4072bb0a5b761cb2c6f7444b9e58eab3a28f5b7571a0a3a090ca2f07b15199 2 -/usr/share/doc/packages/erlang27-doc/doc/system/applications.html 41468d08a85a4ff81ccc8fde0303deabdc16fe1fdcee4e46c19e6eb4725ece16 2 -/usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html d027af7b0d60b079d10534a7b430b289f1955235cb4a96103caed53d8a69c9a0 2 +/usr/share/doc/packages/erlang27-doc/doc/system/404.html 0901d793426c6c52c8988a52f4694c8b9eb66fe22ab9901f1318f967aabcfef1 2 +/usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub ae1e19eaf07aacda4aa177640a58d5c89951568f64c271e20392881d1ea6a717 2 +/usr/share/doc/packages/erlang27-doc/doc/system/applications.html 74c9fb42b40c89882daf8472debfd45afd07406a6db3e933ab1921826256c8f5 2 +/usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html eae202f5a44e5bf47fce68badc97694ac3590253ba97d198c489a48d4cdaf71d 2 @@ -2452,14 +2452,14 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html 0629109e2815c385d29c6b966655ba562f364be651ff5ed453950227d4f7cb49 2 -/usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html d8d5e5843a919e1ffd3e4beaf9739c57b4d5682202334c98549ad93025c094cf 2 -/usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 7c02e5fdc4b58b47cfa81fe519a6012524f9e09ceee4e04ba3cde3ccba9dbb54 2 -/usr/share/doc/packages/erlang27-doc/doc/system/c_port.html c844fde5380949f74c320a39dfbd7d05c18dd462bfa00ed722c8e12409e13376 2 -/usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html 08428851e4b3b90aee899ce2901c0b25fe6a0236dbecd4e311a829e83860eefd 2 -/usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 40d10ae87a353f0e560b22655a7f5745d1fea196c1d70a5fec9879f79cb7257d 2 -/usr/share/doc/packages/erlang27-doc/doc/system/cnode.html 2ec4623300f8fbcb2d4c79e3eb05cae6b44f8e7403a24734c7f316758d636a90 2 -/usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html b73a84b95b5255d5ca0bd49aceb1026eeecba43f8d8dd1140bd9ab9c8e922864 2 -/usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html cd2aeca1589559ec6610c559041dc1624fbaa1f5238c22a4c2b218092e60637c 2 -/usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html 4421119a15c0f14bd04fcadc10f417e2ac9cd3ea8de15a130095f02462db3fab 2 -/usr/share/doc/packages/erlang27-doc/doc/system/create_target.html d8508f08872d8c705d03f67c2f67a3c54b6f5f646b353ed6e872037ee18e9941 2 -/usr/share/doc/packages/erlang27-doc/doc/system/data_types.html cfa04fb606e937a4d8ddaa402975907cb3b82ccc01bb9dd595c8b066933de367 2 -/usr/share/doc/packages/erlang27-doc/doc/system/debugging.html 29ff1fb21dc68dac2183d42c340943f43f946a30c6cdc06493d66ccc34a20e22 2 -/usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html 0154e07e75b1a29ff063b3bba6e5b37b6d6f23fffaaec03deacf5b718e2b8180 2 +/usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html f8d8ac5f9c916c0fb01a04cd11186139b297a09fa0f5d03116ad507dcdacd093 2 +/usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html 451eba49f501a2f282f96640b58e8c14d4099412e3af55758f658496ac5abf7f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 9609c580e5f22e7ccf4cb2b4fe15c6894d39804cc85ed6d4e16982cfce9ae781 2 +/usr/share/doc/packages/erlang27-doc/doc/system/c_port.html 40a9539c09db99ac55193823b52032b67623af36a80f4d2d43f18966fef8d035 2 +/usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html bb9d36a0aa7bf21a3cc95b49fffbebee883415ec450db70b644b2715c23c14a4 2 +/usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 92ec9fbc22130c0a73e61f21cfe946bbcaf61217786870da9d8b28d3c464a76d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/cnode.html cbaa71566d4103a41ce21ee51840fa61e5c50b6ea6198a4c818e90c956a7ee97 2 +/usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html 312664eec8042c392b3e8f56d20bd49028f2b108258755083c52a96ebbba50d2 2 +/usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html f652623c4ca19d44cbe20d3a5821fb2e7d533305f781492b3e41c67e5e2e8ee0 2 +/usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html 592315ba503492d399ab2bbe039c4e61239c6069995018866a5187d7a0c3c030 2 +/usr/share/doc/packages/erlang27-doc/doc/system/create_target.html dfe3bda6f0edc58be69ad6d3295718318835109625aa62a5fcedaa23789d9e82 2 +/usr/share/doc/packages/erlang27-doc/doc/system/data_types.html e844635848c7b69e464d22b0145343093b4649056e2a1612ff2d6b066db38857 2 +/usr/share/doc/packages/erlang27-doc/doc/system/debugging.html c24fa8351cf5854a5fe04fb4393a8476ab3f4affcc1d3fcc15ed89bb7c621274 2 +/usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html 95a97aa02a67465de23a0316d185872f8179bb95b70f3fd4a9d0944de6024388 2 @@ -2486,19 +2486,19 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 8e11f940b9af9d870f234c56d3ce759dd76e626c0898fb8310725514884c6ff2 2 -/usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html bd07eab440baf794157d8612a99458afa2de9ca3edec58281f07c1242ce63469 2 -/usr/share/doc/packages/erlang27-doc/doc/system/documentation.html 5d7ce41c48b4908d7059b9cf260a58a9bef38579e14a91766b189d144719fd08 2 -/usr/share/doc/packages/erlang27-doc/doc/system/drivers.html e779e81fab1e10152617022411ea8a7e524994613654ae99bb913dd619cdc184 2 -/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_functions.html 2390fd00634b8398c3885739f2f8f8291b591c660f5d38f9e218b46086e6ae8c 2 -/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_processes.html e37d0288b427f493b54228bd67808d214034ee282b3ea32edf1ff7ffeb01b1fa 2 -/usr/share/doc/packages/erlang27-doc/doc/system/efficiency_guide.html e013124f3f3c80b2a70d3e96648f721d56357f061f397ef3c5baea529e773e61 2 -/usr/share/doc/packages/erlang27-doc/doc/system/embedded.html 655eb96f43040814d60fc4b7456da7c0bef45626f559957d8d325cfbf1ad0936 2 -/usr/share/doc/packages/erlang27-doc/doc/system/erl_interface.html bd32a0143a5d5441ecad1b5b07c670c2586b171bdb4ca12b295987f06ec54c61 2 -/usr/share/doc/packages/erlang27-doc/doc/system/error_logging.html 4bdacfb56926076fa923b5361dff839e70fab344e797e3b9a78d3a6ddcf6f9b9 2 -/usr/share/doc/packages/erlang27-doc/doc/system/errors.html abac8ff1ec8bff7b1731c79deff8451920eef8948bc97bf3ee83be75570c84bc 2 -/usr/share/doc/packages/erlang27-doc/doc/system/events.html 8fa720014d3b055ad06ca2638e666bdf09696d871dd6b09389e186b953ed2163 2 -/usr/share/doc/packages/erlang27-doc/doc/system/example.html e5f943b267d7b3b3b9c924d73d9bdd483f5ec5c6d5bdfc1c715348da385f8cfc 2 -/usr/share/doc/packages/erlang27-doc/doc/system/expressions.html 68a6fc76c27bb11939436514cd119a6510a367fd5d270a126455b86836ac001e 2 -/usr/share/doc/packages/erlang27-doc/doc/system/features.html cfd474d6ffc90c60fa1cbbb5a525389df7aac4c5d735c82eef1925e0f8714595 2 -/usr/share/doc/packages/erlang27-doc/doc/system/funs.html f618f6643e8940b649169a0f3591183308cab8244157216212b1523dbc464eda 2 -/usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 6dcb3070d93dcd1c08a30ee6f6399cb8d6d1342129d101ed9487ba963dea0094 2 -/usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html 55da3c6031db5f39ae75c68c14b6efcc72b17c9164433675aeeaf0986fc0e988 2 -/usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html be89c386573c1870e13c5c8bb722090aeb14541b8140ad15ff1bf65ec657488a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 4ff80fe9ac9ec4fa58b5073b60c732bd62f230503e2b5984d52df8a4a399c6fd 2 +/usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html b3e4c2dcbf971c5e3fcb99727830569cf08ce2bb3a623474b9ea08a66fbf0c1d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/documentation.html 5e55b274f66c6d345f3428d442b245a8f9306c6eb9806e4801d1a88e43ced9a9 2 +/usr/share/doc/packages/erlang27-doc/doc/system/drivers.html 6436fd2c953e760c13d7ce888aebc4d97241c16c2c066ab8c5f530d8cbd3a9f6 2 +/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_functions.html 9a8a4d8b4fea37453ffb62e86c2fa39e095bb5cf2f1382a127bbf27970f929f6 2 +/usr/share/doc/packages/erlang27-doc/doc/system/eff_guide_processes.html 10e9f7487005656f9217ca0a322d445982eed0c934f831acbdc2c043fb2c976f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/efficiency_guide.html f13bc559053883dda84d9c965da98253f69b5e55d98353914ff27699f845127b 2 +/usr/share/doc/packages/erlang27-doc/doc/system/embedded.html 44febe7b261d39a077381eee976f99cdda5dfcac2fd56f07277bf051aa679095 2 +/usr/share/doc/packages/erlang27-doc/doc/system/erl_interface.html 2fd29af185f9a13c9d7013ac19715186122ebf64269a1af040f63840ca1d27cf 2 +/usr/share/doc/packages/erlang27-doc/doc/system/error_logging.html 2f816e10168bde764535b272cb5543eff88d01330c57efea74b02b46b04c0d9e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/errors.html 5b596fb299b1b259d75251b2050954318e77faf84aede4c64ee2b58d5a6e19bb 2 +/usr/share/doc/packages/erlang27-doc/doc/system/events.html a309304965ceb9737c37d882e2de063ddd2d5ff84841626dfe423719066b05af 2 +/usr/share/doc/packages/erlang27-doc/doc/system/example.html 4db99a8d4b0e32774cd40ffcd416e393c7e54659b3e96a4435ebf5bc4e25c792 2 +/usr/share/doc/packages/erlang27-doc/doc/system/expressions.html 25f122d653170dbdbeaa541e1cedd3dd2429005c47caee74cbddb43b12c375ef 2 +/usr/share/doc/packages/erlang27-doc/doc/system/features.html 482d8ca4088c217676c9a2667275550b089697adbb58e0590dfaa1a0107f0c6b 2 +/usr/share/doc/packages/erlang27-doc/doc/system/funs.html c6f86536708dab3b23248b4d373661e6f5701ace3e439e12b907590ce0011c3b 2 +/usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 1bd6962b10ec91ddb988da7c0cfccd4c8f6c87016aa4435e6e54bf9ddfc83c9f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html 850b2db91677f47d639014250cc180149dfae79f6a0c4937b79f6354d9e8e957 2 +/usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html 22ba1a5e13a4ad3741967fd08c044de250beb1d3aa15ca211f71fe34c8cefeb0 2 @@ -2506,48 +2506,48 @@ -/usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html 73c7c3f003957f4fbb4e0cf30580381c5f0ac20916418900846a947d2ee367b6 2 -/usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html 331a8bb697b4b81291c015e97d28520b82a8bfa239fb8a86b789ea9fde464119 2 -/usr/share/doc/packages/erlang27-doc/doc/system/install.html 096d4b082f190aacb33e8d0959f894dfb6c4a0a5e96cc4174b1c447d4e3128b7 2 -/usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html 6604721a9f0cd7ed1b64650f18b7cc9677ecadd8e77fed4265490c168fca9a38 2 -/usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html a852c880aa0d7ce7928ff21122447828eee48f3ffea13927b713b2561c47fe06 2 -/usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html 49de198c4714aca1248f5f821c1b1e6409b0d6c00debf46a167eea1229bc79fc 2 -/usr/share/doc/packages/erlang27-doc/doc/system/macros.html 676626f36573e8a05a20e8164b82d64f5a42cea02fb72b987f0ade428ce19116 2 -/usr/share/doc/packages/erlang27-doc/doc/system/maps.html 472ff5525b2ebe6c721c2f89891df25a0fa8df7ac8265ec63be2c11f9a9d2853 2 -/usr/share/doc/packages/erlang27-doc/doc/system/memory.html 1d253c066d583e3f0fcbc0d87da288984b32d5c5c2e0c244ba37fa33464d0e92 2 -/usr/share/doc/packages/erlang27-doc/doc/system/misc.html 19f2cda187803f4270a5487ab4330673a0cfe7c591bfaf29b61f8a80870e5679 2 -/usr/share/doc/packages/erlang27-doc/doc/system/modules.html 28449bda481d541f4538320ea09508f68ff9854898ceeb120efc9533931070d5 2 -/usr/share/doc/packages/erlang27-doc/doc/system/nif.html 2c222eac2f44fe98d9569fd831673df2729558babeae60364008edbb67961c33 2 -/usr/share/doc/packages/erlang27-doc/doc/system/opaques.html 91cb2ee37e7b7347014574cab8a967179bb2910dd52d6b9f0eeb438c25116099 2 -/usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html 956318a1b25545d06fc69cb23ae3705a2e92d585b92cbdac171a34ef9fdc2f57 2 -/usr/share/doc/packages/erlang27-doc/doc/system/overview.html d55be303f68cc0ce54c89247079e018a68c8f31d23b9bdfb020cdb66c74fd912 2 -/usr/share/doc/packages/erlang27-doc/doc/system/patterns.html 4fb994c07bffefc324edabf0aba3ec508d0063e6d8b0ba68d889ec944bd4cd26 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ports.html 8be5b9f07b4e53443bf166bda82abeec1f2e972af065c11afcf16cbfb12d4362 2 -/usr/share/doc/packages/erlang27-doc/doc/system/profiling.html 06a9ed1d5af736a12d22d214f1a1ff626c50394d7363b40db065c7a66858d878 2 -/usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html 42068e1d982b5d4cecc5608c56edef76a2cc5bf00f3eef1b5a47d526cc08efc0 2 -/usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 3d111d61fca42486fd7a4e8878fd456e6e7321ea2adc975d9be98dd805d9cd4e 2 -/usr/share/doc/packages/erlang27-doc/doc/system/readme.html 3cfa5ca28597480b0e449d00905171a054c3fb076bf888cc87b844bc5c6cf5d3 2 -/usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html e08d40fc8c907b65fed0ac29eb8dc9f326d89c83211dd20a8dc37ed2ca8d5c68 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html 6ffd6811de5a29009972244a3e2468c66e6aee008672994946b54f5b5a832b39 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html a84c5b9fb629cd2143758cf5c363331be002c83fdfa25d2b889cf7175bf7a000 2 -/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html 24ede55edf1d44ed7649c0887ece1820669a9b71e1a0a17e13c038c0fd7c31e5 2 -/usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 488dc82e5b0fcbbcd8291d4c00dfc465155583011dbc18beb0312bb141a8f702 2 -/usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 2a0c7b0cdd502a3c9f99d0131344ef63f007a71a265768c7ab1294129cd71fd8 2 -/usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html 8fde5a7b9abbab103313addf9dd16bbaeeb88729215edf79ea94b4e3b8b1caf9 2 -/usr/share/doc/packages/erlang27-doc/doc/system/robustness.html a49796ee47c86acc1652031741cb71b25e6b797feaa94363915719b4da354ad8 2 -/usr/share/doc/packages/erlang27-doc/doc/system/search.html c24d322d85eaf8efac609c11cbe7fe88ff35e9be29c2d511f2df83244fcf94e2 2 -/usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html 998d125550ff3158b95b493a9fc96c3f302b81fa9490686dcb23b001fada9ae7 2 -/usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html b7fec8e5c607ec25adebd814d709a511b3a0b3b5a87113822955af5209ce660f 2 -/usr/share/doc/packages/erlang27-doc/doc/system/statem.html 3d026572c4163669923a90096c4481a92f79338921c9680ffb9c9002bd5e996b 2 -/usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html 8577fa6ab8d65af904623dba808643ffe3202f2f70d228c5f7bb5faa16b80736 2 -/usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html 34fea7a2cf23d464a6160dceedc5233b00677f2556f1b49263b851df57304286 2 -/usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html 1fcc475bae1a978dec14a13b785c4bdf09edc05075a7a22f0558e42992ce17de 2 -/usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 8e0cdb0e1fa6f1a19914d982bd07c2968bb914d535968de2881136391f19fdc2 2 -/usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html 8e3abdb7b5dd266411b960fe061a4df3a66a099e6f430b8cee77c9e378a45f68 2 -/usr/share/doc/packages/erlang27-doc/doc/system/typespec.html 8eed816b4f1f5de282509e01f0328c51a372c0cf23df091d05ce990049b7def7 2 -/usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 65bb2501b3ed8275b7c4bc51894cd02b33a07255160d433e69e04e673dd3f62a 2 -/usr/share/doc/packages/erlang27-doc/doc/system/versions.html 2a49509e2cce2e76eac435c267efc1ec6ca10eafd99b1a8d0aeb3cfd67616df4 2 -/usr/share/doc/packages/erlang27-doc/doc/system_principles.html 906fbdc1a0617b697a1ee8778fc0c15c20a4e9b0b642436dce65a369bee0c8ab 2 -/usr/share/doc/packages/erlang27-doc/doc/tftp.html b7ec2dd28bef8b31616d96565c03c78d92e294df722915013d06106f0d7b7130 2 -/usr/share/doc/packages/erlang27-doc/doc/tools.html c0a682f5ab01ec78a1cec2421f9bc2a12ff2f0e99d8f29863f63e8adf7e2e3b2 2 -/usr/share/doc/packages/erlang27-doc/doc/tutorial.html d57ffc4c84aa6a1ea2d3b9c0f013681b629e73de4055cef22112b4ad87e1679f 2 -/usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html a3ac227a52a5299db6335fae7f5087124d078c35fbf73ffd2b6c3b79817e1b97 2 -/usr/share/doc/packages/erlang27-doc/doc/wx.html 2f047a75c3281e642a1e7b901bc907cab81bd7eab85e1e9d57e9ab34dc883c96 2 -/usr/share/doc/packages/erlang27-doc/doc/xmerl.html db3f0f7baf06bbdf3acf112c84adf75b35f5ce6f2c8d7601b9edaf6c50e2afb6 2 +/usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html b43c1e3006978a82c8f0ebf6f883e796f8f22d26e229d3380828a54c2c4fde91 2 +/usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html fc316953dea71cad91ee06444264ca8396cb96aecf34f370f2810dfee336de69 2 +/usr/share/doc/packages/erlang27-doc/doc/system/install.html f1d3a726cac417608152545b2086687a6fb38e44d05893e639b137ac72e80bcd 2 +/usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html 645857683fd18cb27666cf2aa194b57e0925e9a746e234314d22d844a8917ce9 2 +/usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html 698f37d297a9520a6b87fc1c55582bf86f2ec3762e0f5b24d5ab74ee92a907c0 2 +/usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html f67e505bb6368347b0bce0e7e8bd81124a3164e8af15cd8a9511be8fa91f48dc 2 +/usr/share/doc/packages/erlang27-doc/doc/system/macros.html 642ce4e4f80b11227fe27f1b6792122f660581f153b4d0d5f5a3801d417cf5fa 2 +/usr/share/doc/packages/erlang27-doc/doc/system/maps.html 76bde57f56e8d65898a8d65a1f4ba0b2e8f65d96bcf91cfb49f49e80e7f42e7d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/memory.html b2b11396f5c1b9bed281d7e3a02fd8f8f1a4d31087f30bb8cd0b4cc029275494 2 +/usr/share/doc/packages/erlang27-doc/doc/system/misc.html fadbb7cee3c2b025986272f73c3814e0bd4f8616e299905fda624f29f599b4ad 2 +/usr/share/doc/packages/erlang27-doc/doc/system/modules.html 417040067701886cdaa36953c814535c06b4d53b9ea92c99d5e24442d9a9c2cc 2 +/usr/share/doc/packages/erlang27-doc/doc/system/nif.html 9582a79ad958444b93373cd29d9fab929631df41b4e62bf6b8122d54c22753db 2 +/usr/share/doc/packages/erlang27-doc/doc/system/opaques.html a530fb07c22e290303548f7f786989501341aab7cdf089e838490a41a394086a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html 781dfc23f876e1e6de1805b350981cc8539bbc6c38cbead9bb2e8d895e351423 2 +/usr/share/doc/packages/erlang27-doc/doc/system/overview.html dcee32cf85b0b57d4ca77aaef1a51392761e856e7afd7f15a9f51e3ea3d72a80 2 +/usr/share/doc/packages/erlang27-doc/doc/system/patterns.html 0254aeddf75b33be62ccf748756a4fd7f73d000a16ca632a68066f1186ba2a90 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ports.html 3c0be8eb7e22c147f6cbd7a27a3f5e3669f6eacf8988b77c5a579e73765834ee 2 +/usr/share/doc/packages/erlang27-doc/doc/system/profiling.html f9577fb4a886db52093226f0efbe7d5be54d4b7781fda237b96bb12071f8fc70 2 +/usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html c752479f628fdfc5e4ab3c0c0cce7d49287d97142605e9d1dfe9e25dddad113c 2 +/usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 44cf7b193d14648756ff0443c8baf638ee228650ba174b9d081b39d574b6b6f4 2 +/usr/share/doc/packages/erlang27-doc/doc/system/readme.html 9045164edf722129b0f265dbe4fea6816e889ce0c53d0dd0666877a468ecd04a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html 07be912218fb356891571a8c9dfcb1b0907bbd9652794fce429755de261950e1 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html 919f7ed3c7ba6391a2a0445fd56e64fc18ebf3a0df9654ee9a4cae03e97c414d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html bb2d1f21ff885c0b6519d9adeae1197f2ce4392ebc0db68dfacc10f092dae24a 2 +/usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html c3b565c114f466da33f6f3502d538c9c0d997b3c424eba63e2afef1b6b33f833 2 +/usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 28bffd99f82d6454f34340923e53a747fb134b99ff387144f512dbf2e1944d96 2 +/usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 16d94aa8d931b3bb490fc989dcccd748b6125661de13522af5fcf80517d5e2eb 2 +/usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html ebb2284d00502a8ceebf71098244290022872022402076bf3a70d66ce6aa7ea1 2 +/usr/share/doc/packages/erlang27-doc/doc/system/robustness.html e836d8fec9c7418b7caf65a44f46fe112a6c849176a533881b05d854165a415f 2 +/usr/share/doc/packages/erlang27-doc/doc/system/search.html 4d8dc5d6e8bfd1c4adac12180a085dcbdfa6b57813bc048bce4a5d2da62a50ca 2 +/usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html 6b3d55228dbd2422254cd1215447fa3fdd3cf237021ebc71177f1166ea18cf31 2 +/usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html 858bf123418416cc952302ae103d1542b7976261066587a122a505855147aa2e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/statem.html 59d68d8533c64df751a67637377ee792ab57d09ad008bef40c00811f3d9ca615 2 +/usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html 46267d6af97b424c7eef6dc6fda7b01a3fd7c7cab705e0ac5d0a148056d04695 2 +/usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html ae48f0bdba745a3294a5fb25f0f6868b18d565162e9ab033884307054c03a76e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html 550a6dd0ffd8568f83ac7a33ac073fb54c8645510a8c8bec0f08c55d35defd04 2 +/usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 384325c91c6a0b0bdfea175ec4a5a3043982baf588f30dfad368d73d2c4db136 2 +/usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html 4bf9a2e82101d4192d6ecc060a819c148a1373b1536dcb53e7d1bf7edf15a564 2 +/usr/share/doc/packages/erlang27-doc/doc/system/typespec.html f07a034c37fa87b311bfff0d24a18de58808ad9dcc2e02fd9aac6713f222b18d 2 +/usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 942bac9558bbf20f8e478c880b5747e8cb40e3e298d8bcfde1fb46e09fb2776e 2 +/usr/share/doc/packages/erlang27-doc/doc/system/versions.html b354563fbe57a385b3820cc59a6993e217be5dc0bb02e79743012902972db742 2 +/usr/share/doc/packages/erlang27-doc/doc/system_principles.html 793e20347d85276388db091106c71ef98a525603b3939b9afd93af6183754caa 2 +/usr/share/doc/packages/erlang27-doc/doc/tftp.html 1b97fdaabb7ef202529387bf6dd891f0b92e7c1bb32aa0072abde4e0cd120b50 2 +/usr/share/doc/packages/erlang27-doc/doc/tools.html 1310be108b6dcbb110f091e5d83158b3d3ef3a49f84d7e86e50126ea341ccc4f 2 +/usr/share/doc/packages/erlang27-doc/doc/tutorial.html 39e3f5b01b0cf08273746d3657e01e4900d90aafea8321c29370ca8a19a3cfab 2 +/usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html aa22e4e9ad15362e4fe69e8835b1a017bc2b30707f26ef257fdabe9542306beb 2 +/usr/share/doc/packages/erlang27-doc/doc/wx.html 286d58628307a98c27d29b49f27c91f8659080dc701319c95c2c2772d595cae6 2 +/usr/share/doc/packages/erlang27-doc/doc/xmerl.html e25528c9edbdc12cab737124e0c5783e82a44a525e869c282b4ccc89a3a8a849 2 @@ -2557,5 +2557,5 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html 1d514a53a1b104ac421abe3fc4d16915e40eb86f199456976cb7d261e4c0a3c0 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html 3318534c96fdd55be564b596b1b0439f584c5e8bfff0f3f119a6bc12fa224b57 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html d38a7de4f1583e898933009eaea8060d960ee16ee257d6738ec0ef0a27214296 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html 06a367039caa873f29887792373958a04cc827e5c164bb5485d45a7e31896236 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html 25c522fbbc09c1bf0ccb765c62b312d458354c19597721659e42f763c2791d6e 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html c4c456a475c7912ba76e1a99747168d8f9853614ace7a797b331c4d30aef8a65 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html 32f901b0a07889d4c89ac8815ace87f9909528df6a4d73b8047f13f04288138c 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html d3406bf835d987abee999a044342437e52fea6326cc8c0df503ab715b1472f27 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html 206db273854566cbea11c94dea46119790efce63d39606217bc0f2a3a2d1cfbf 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html 43eaf323038a939af8ccee63720571ffb11a3512bef6c7a9abdfbdde8d6bbf4b 2 @@ -2577,11 +2577,11 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html a8703e0c721a335730c36fcf1f8bb44e1a4ab7ad91890f96d26f84e561c45146 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html 735d04ee672edffa207707e101bd7aaa3f8190a861e1d69cd792a24adbfcd1e1 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html a7a746bcb3128ff28f9cdcd0d9bcdfe89bf38e4131fd16a9c77d099be57f8a39 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html 8ebe9f5632e870533dfd278e2f8e4bf3ef6d93f7d8331392459ee1b46a9c9e27 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html 3059780ad03bba3bafd85fb43b7196399fe6aa7c6e3479afef44299d87344397 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 6796dd5d0802c1e9ae963086a730e26fef0fa8b83267edfefdc7f0da03eb6d5b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html d2d0ba22690904cafacd452807c0acca6c2e8d9aec1fecc5c2d14d4c8bc89927 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html 43dbb05f76f545bdd0a103f2e079c9b8b6b285ba0a59861c41d3fc6126186c5d 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html 274a63dac442265464fd841109d63481a402f7528fc4f3a5cd7bc23cd8034266 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html ab2b45a0c12fa4eae92decdb47bfd7eb1b4cf8746eea61a0348c75aa79edfec9 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html bf0b802142f4f38fe50711e2f7462b17553620c5c8155a31ec6bb79d72500932 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html 1d065b206ed3cebb9c058f554b1eb424a812e5376a0634f04ff6c9448ccb2682 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html df7879d09141b6225c5ee499c916f334f9d4d26dbace277d1982a332118d3800 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html 95718d98f6a64a79c30022050ea45efd3cd75e56e9877b69b865360a33f56123 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html 41885f254c2ed146cb2053f0f1e3ad97ab221288959bd6735e7b6b526d4bedb3 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html eaf369595cf4acf5732bc374dc2f9de024cdc71e44455fd6f329ab749f7c5440 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 96d9dd9887734ddf0f6c44180299ca545083dfc5e2f9dacb1399d55ec366862c 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html 407a8cf38da0e860d78a9d8baa30331e8428ad283f220c5dafccf59c1fcb0780 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html 7a8b30ad8c94d61160a65e9204c5b0ccb888b79e99cb9f8314f8aedc2456907c 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html f09b358b1b76273ed143c286a6f7af1e07a0f14ea395613ca2dc67673d6e942f 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html 2518d24627ae6908cd97fe18f069de2914b90acc3034ade04951553ea062c5e4 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html 3f9ba1c630ac7ed13bbe33a0b38d521ccc396a17e9ae5954e6e13df54aa36576 2 @@ -2608,16 +2608,16 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html d11aa40a7b259f827b0bf5655848ec87adb89bdd841f35aaaf62853fb2f42c49 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html 4d7b833ae0016ee9ec89fa54c89fdd76e4392d7ba39e136167ed646a74965ebe 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html bfd977516335c729582d7947a1e96c4556d3eb63606acecebd810f8466ce7002 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html ab8c3a7518d7569fe39dc80d353f6c061e4010e61f692100589ab91e2f2c4fbf 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html e0dc71f64a84ea3f951677f05f687b8395cac2d0c8bc69e2c0b77cca0998300b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 084f71f5d797ae24ecf1806dcfa2bbcbd18212e42e02110f43b58f188a8be87b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html 54d9a58c833e09445f1f173ee846f0fe10d631e72994bb7980aaca671fb28ba9 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html 4f47c256666460da299dcb789d2041418a07507b3fa8dabe0a313cf16fcab474 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html 5807d1d20e3f7e29b9896e66516a1d963cad089008843c754d3999fcd7efad76 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 648c223da2d953031af26a87e48ecc47caab81eb128e6b5eb690fba1e8ab6417 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlang.html d6528a57f5e6ebf95a1b0a78dd117ec5c4cf064fb9d3f6204062260c4a81d2f6 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlc_cmd.html 3bfeee7732c562539389a868e25e38778bd260cf5a1f06221bbcd609985ecac6 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlsrv_cmd.html 1f25d3f1ad0eafa8fba71db6b33744674da02557dc9d3177563c7a1e202d5f35 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erts_alloc.html d0b930d0f7d756c02627562138b2f725fae782bb9ce7208cd682db5bcec72e84 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/escript_cmd.html f096577032a5049fe9418e379322fc0b00455838c9e3fe60d51db80aae5ddf45 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/garbagecollection.html d11b267dbbd5f71a550e7a2adc15cac339d6dbc8161693a081310db03368302e 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html 2cdaa24279bb781c875eb40478bb20cfd4e3b849ef0353861f054d639830e1a3 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html 6580c3d80efe9d17d3bc1921f4bb2da9bda018de4c135913c1dedb961e50a36f 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html 6948cfe00ebb31d08169f0341e6c8c83cf4cfb3931c9d48fe5dffeef30a1b282 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html a01c546d1ec5285f2a66c4689419c416b73a6006b2480b253feced3e739b571d 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html b49ec09194a6b3d9e74915a63b757ea5dcd6131ea6f4a534787f765ecae3d5f4 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 9e65f9a99b65ee68501908abef95ffe858b5ad6f53446ea0c6e3fa986e9f5e09 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html e6f2f909ba31fc7f86e6652bdac0fbcf4c6bb2f6da7d2d1536206687a358d4a0 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html f6a2564563af2cda4c2ce87ed1a1723c0b759e92a190a8c8f71ddaaa09cf3eb3 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html 290a2c441e85fe85830295a9720b2a8f87611c171f85f7ddba420e13bb2fed54 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 46dca812376a539b847bee4a068d4e508270c3d50d507b5a0f951e05f82d6f22 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlang.html 76e7186fa9b82e25f837a0275b989e874a739598ed950a668d305dfb9cb8bbab 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlc_cmd.html 29c782c760dd536a452174fa2158ef6a94f06ae992bae2e92b9b614dcf5345a4 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erlsrv_cmd.html 55ea3dec0de50401a06667ce5d5f9127a5972ea33871cad4dba2694d4d6581ce 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erts_alloc.html 6e59af26d23a1354e0d44afde7a0b580f7447e31fd63376d913be8bf813aeef7 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/escript_cmd.html de88814599eed95a69f88107b3fd8d1501e3b4c1a5976b7397d4c79a6854d4bc 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/garbagecollection.html 23d9dad22728c9c836957498a93ad06bf65df93dbeaff49c01d5ae8264796cf6 2 @@ -2625,20 +2625,20 @@ -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/inet_cfg.html 3eda428dd8b94b946a7f9e88d44b1b6a4ab349af50413f9145615ce04375ebc7 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/init.html cf693e0e28199e8ac923de2c9900894d9fa074d33148e8de001086b27f0bd145 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/introduction.html eb6118b05e2f89377d20d5111a30bf26e8ce3d3fe6a938c6c7794234d4a4546f 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/match_spec.html f31b00eaa3487127084b801236e8fa8f694215791d01d7f419527f84dca4a04b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/notes.html 93fdc31883ba943aed2078d08401d74084127d34a495864dbd05677a6104e99b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/persistent_term.html 67722630ab2ed8e431b746496d06c6a4e09aa8617eea71d4c934daf7f7b8b616 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/portsignals.html b803fb0271c83f2a9b8c6375b31c1bbc4feec1767ec6582b0b027c6cac3dd40e 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/processmanagementoptimizations.html 824adfd641c2be1efbe61cbabbedd7b7f7fdcfd5077ade51a1a3e7a78791360b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/ptables.html a08c4263a83cb1b101efb38924ba8d2474c0256490685bdc748426bc44961639 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/run_erl_cmd.html 119c66f10b22d765aca13a3e86904e7d451579067df7e7477508ab7c483ea8f0 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/search.html 8d9f9be7cb98ebdd22b97db5cc2ab8c44b75f0aa98e92fcad054cea7934ec4a4 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_cmd.html af42eacf9a038b3639463b7889501a06bc9c73f7d293fb98177ed00dc5ad1275 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_erl_cmd.html ce30bd86c9cb964e346e39f91dafc5f8f579fca47c2938e54fb4a4f6283522f6 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/supercarrier.html 451d5d1de92213cda71f6a33df065af7cdbc3d5870f1b77ebb05aab0695cad8f 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/threadprogress.html 97e909a00b8864f77331467c37ea58423c42edbfe2f804ea6e3b7e04375f1fe7 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/time_correction.html 354cb12796825e38be7a60e48c7322b9ba842eda16181fac1fba0cc9b26d315b 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tracing.html 0947129a675ebd074ce45a9a6dbebfbe1d51d6cbe7a9fd5934f0206614b7c5b4 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tty.html e4d423e05efa58e963b464bd7bac2ee5bc34a6e23a539f908d242c2a317de611 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/werl_cmd.html dc01b8b7b6e0405416440a2bfed95cc0aee0fa8db0ee7785120f33212f1e39e3 2 -/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/zlib.html 208d5e0c295ea4e3d7c1961ef99f64348f49df13d49f213b7aec4cd847acd3cc 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/inet_cfg.html cc879df3c64e6eb834bfd5bfffa1241907b02d35eccae8a513959a75cc3a63c5 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/init.html ccf49e89ab841ffb75634f2a33a8736112cf487f278caee94bb617fbfddc4c61 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/introduction.html 10f2f7c1bd84cb70a6b7808673dcab81c5baf493aa86419c71bb16f8c8ddc906 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/match_spec.html 61c7e71687ebeb9b1b9919c947f5373dc82de39532fd5646d1c4540e7be6c66d 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/notes.html 76ea775a355b3b65de84afb4fcafbcfdfe8d04d9de098d1f4d87af589448ec79 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/persistent_term.html 3397047da4076ac56b9c09e54c96c8d80e8a36186a610b8a1aa3a66564a3d9a8 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/portsignals.html 09f04c8feac0a37481806147f19c33f4f2472b1ea26537253e13683467c506de 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/processmanagementoptimizations.html 6a854fff2f54f5ed1cd017a0f9b7d4cdc901d506854f13f77595026946322a7a 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/ptables.html 1da49f60142a99802da3a60ed1df7cb7fb64c3609e625a69d629ddd12590306d 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/run_erl_cmd.html 8a31af86b4b65bb42a2aea4200d758ee41298c3e81abf7f4c235b6cdab16f69c 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/search.html e702a89afbf5c467ed60d6f5ff07c2e88eb3e4aa3334d8a229d34beea12e079a 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_cmd.html aa374ea95470268ab25e2f5ff281551032b711febdfe10f84fae46671b3564b1 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/start_erl_cmd.html df6cbaa5792b53055b4ef922da13b190616926f6284637eba422b9a31dde2282 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/supercarrier.html bde45dc1602d73ed353e6ec98d06a1924911bbaab96ee927da8704e14ef1a786 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/threadprogress.html 220c98d6b65cc05d6c7fcfd60a02aefdd13c44c6fff7ac49c9a8fe75ec4d6892 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/time_correction.html 88e60a6887331278fe88a5c78749c6255f6a6694caff8374788ca35bd11aa50d 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tracing.html aca1945386c34baff88ab42c7f5f81ebea8b0423dfcf5ffe76c3a58286303e3b 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/tty.html 373ea518aadef4e3b437e179d65584986f4ef9f04ef33167d2e19de879fde082 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/werl_cmd.html a6fa015d3ecdfadc57b950a2a864f81de3dd90fb996842598b657b8e3f335b32 2 +/usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/zlib.html 9aa820f629caa74a9670033cab30410aaf363776dba18baae1b0032732c7464f 2 @@ -2649,8 +2649,8 @@ -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/404.html d965d77afa160d5c25e76c61756b52579587595786ec8ae80e165b80e6eb0c93 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/api-reference.html c64fbee5194d1498fcd01e05728a5c71c2c6ca4c948cf466782382f36737b7fe 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1.epub 7ba2611b83fdafe1eae0a857362dbe3442023963c332590b5508aeec41c7c28a 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_getting_started.html f93367640013519c872cea7228d019cedbd26f053f3ed1705b191d6c43a64e69 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_introduction.html 4557f79e8541218f25f0c0cc56b73561a73c3465af3335a2855d41a9808cd1a1 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_overview.html ec5ab88c62d064fd29313c0e81f86891b648c5f2e671751671ed622ed43607c0 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_spec.html 4683d0aca9f7299b63c5402590960e017c89b08f908c95d39192e0e3bfb78f83 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1ct.html f4ed7fece19c4e1aa13f1913e1fb577399f52a9e0e9645a9beb0e64f36a946fa 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/404.html 0b47234ece8a59ed674b404f21a9c2796fa71d1010e6c81405bb111ad33c6e95 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/api-reference.html e0f7c5321f7fabc4614c5641ef3c35d598c7e9567795891f069c8f3fc2548117 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1.epub 48a526ce7bf5a70c00864416434d88113216d5eb1849da0df2c10d30ee34909e 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_getting_started.html 6db07ddea0f1984157eb143a93dec3fcc77be70426868735fa1ecc71cb6d4312 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_introduction.html 238fabccfc267dc922996ac43f2b598a68d26bea775cb09a88d1a071ea945dd9 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_overview.html 79aa948b0ec6cf3d30c41f192aea977de2438630d9713cab3864429b594c9585 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1_spec.html 5b74311602705824692730b6a2f82d329cd8f0078bed3613ec7df6dac7f5ba7b 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/asn1ct.html e066e6c1995127ff4269dbbc19525d8cd75fb5c788b738875201fd1d244bacc9 2 @@ -2683,2 +2683,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/notes.html 8c36a799afb36ff20a251c088820c9c80ad7a3a59247ebf512e86e019f8c1c95 2 -/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/search.html 95722a6f508f44c94e42260bd563dbb025fa031a768321d3ee80ccd73726d5f7 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/notes.html 53f0c6006e3a8d30edba6239cf8cfb9cb55b6c5708edc0b35ed42d5914a95bb2 2 +/usr/share/doc/packages/erlang27-doc/lib/asn1-5.3.1/doc/html/search.html ebb3a2fc9ef5c2234cccdd76a582c3364510d2a82f829f971100eba92a21bff0 2 @@ -2688,2 +2688,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/404.html e8dba931a7a9e1e0215ff6a807a91534b1b912a976afb45fb70ce33d000d685d 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/api-reference.html 3441a557a03ff056960a717e89c0672b630a56c863f471bae7bce4ed96ac43a4 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/404.html 977012a34640e1ae287d48fe525e9dc247b96dd8cf544cc0e1c403fe04082133 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/api-reference.html d135f7959d16a24fe452a6c82d216d3bae5b4bede29a4db54d5da972ac65df5c 2 @@ -2695,24 +2695,24 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/basics_chapter.html 262af675ad899eca96bc91821d49031362c49a7c6bc466dd7a44e1078bf9c794 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test.epub 7ba71d43e0be9bce599497b1af6379f53feefe4e15d5f820460f3931ad66989c 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test_app.html 86aa659b88e64d87a93c1bce5887654562af423b082d6aa723fed47055b051d4 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/config_file_chapter.html 0ab465cdcd6899f492eb9fd216d9d0c2256788a36076c758b2412c73946c4ef2 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/cover_chapter.html b89c4f2753b4571335bc2347428da44fccd3e41065ed9d31677033a199d9f8d8 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct.html 72359714c0e2991a033a6c65db428498b4f243185c3249f4231c87dc79851b31 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_cover.html 3f9b152e66865f855fb9f0795cacd25479839d7cb32eaeb1c28cdab2a0cf092a 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ftp.html 9f54f62a131d65e97520217608791fa7cbe9751276e9eeb7b58d5cb5a2b33fb6 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks.html c97e5c137bc2fc8497394b24a71c0a2750566c983c9d514515d7fb2d95ef55d1 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks_chapter.html 5c3c9c2f5aee522c9f4d31f4e24d5e5901b95d462b17e1d3f9808b7b8bad4c67 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master.html 1954dcdf9518bfde2b561ff47b6bfedf856f127a996c04c584f8fd9c2cbcc45f 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master_chapter.html 6b4de1926865b74b131b1bb900a5b3c02216b88c199169a1e1d0565bc173a53c 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_netconfc.html fe010099427f02dcd8b1b968570d1b686d3aa8294a4edc33ac17d508535f276a 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test.html 51d27b1fe589539fb04d8eae466633b99db5ebe826c3cde716b0cfcaf89e7886 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test_chapter.html 474ed89a2185d56bb9cfa31c085fd9d5beb47b253807c0e7e97aaa4d20d326bb 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_rpc.html 46d2ee2d57c1185d38e3e5f6554520bae9812a827a83a5e94f9a30c8221f7af5 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_run_cmd.html d1555e2fd15023a2ca52e5a1450d6ce298adaf7d7082d847d33b349cdeb73a66 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_slave.html 9e6eb4b4566c699a09bc2a904b5f35feeb5c1ea9826fa77f8dca33de2f1c7fe4 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_snmp.html e2e285101abcbb9e0c89759c12ab53b541e33878fbddd15602b165870fbb1c08 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ssh.html 490829b764f7b0eb1645ecbff96f405d397849a762f60fcf77c83557e55f89ef 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_suite.html 4066c0c6286e0b4cb073ee5e1da69632d47d4ef3e571ec4e68cc00edf1928534 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_telnet.html 6ce9f881d001bf9e59017cd7f3462f2b1d390dfde14ef2b51b16607762b2555b 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_testspec.html 702a91b303e7294fa62734752c005dc2907a01ed7a174de24f46579889633efb 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/dependencies_chapter.html 3b1f31b5d08021ca90886cc0faf8669ad1261ab6989d7f9d3df858e3e3d5581f 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/basics_chapter.html f35e7b497e3c5f074e89b329aa031726b3c47ef37b8f81cb5494a6ad0afde44d 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test.epub 03724a6497c9cdb827521db9ce8cdaa148fa11a97bc3b33e1c6be745ee53b4c9 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/common_test_app.html 07217c461fe42ba4a394de4b2a5dfa6e2a5358c36270115ab8937a2b032536ea 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/config_file_chapter.html c7b295e12fccd85682c9ef87adeb933a7130aefbeaf1f43bdc0c5c8d9087077e 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/cover_chapter.html af3610ee5ca547cdce52ff5fb0c56581acace4087c056c5cef8705ed41f4e789 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct.html 568fc98f99a4394ea5d84eac3e2440a8a75a2460ae0683d90e9bee8a1e824a94 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_cover.html 9ec646a27a992355b5ab06efbad60a47fa2d4aebf052fde8112626d30c66f434 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ftp.html ffc24075b567a8774fa28e4ffea8948c6d90d5bdd8813e9ee1a6ec11c8056bae 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks.html 78def9a3421a42d4e33ef305b4ec3ffca676a392938386375b8a72b251c604f0 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_hooks_chapter.html dc9acc01715a81a3831040bb2f569a7a5f35ee1c0bcb36991eaa568cc3705a28 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master.html cf56eea16e60488c540e5d754bea89e38426f7d4a73d86af987a2fd54265e116 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_master_chapter.html 4471e5c71c22bb4a31e780696ce8cee73a1d9926486ca235e29e932c756aae61 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_netconfc.html d3729e78b2f12436f84b4cc88cafc03036a981c9b54f039489d10d73ae32b4dd 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test.html ec7108cf92ef0a053e90e1f21f97dee275fdedc6421cdc7c19532d45ee6196d6 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_property_test_chapter.html 1e05e760b030c6bc29ee02c84bcfea03a5ef0e47952b72a2b874850b88c5b9c5 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_rpc.html 26f88cf2cf6aaa6bbfe79261b1cfc758309c68af76c5985e8bc3d5e5f2a09c7f 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_run_cmd.html 928cceba93679698bbd2b1a0273b9a63da2c5c571f0c4a94e8cb894da2eb1f3f 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_slave.html d5b6552815e2bdde55894f3f8afa70a7b2ef0427cfa5afaa518b3d3bfe6bd82a 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_snmp.html da8167a9a38a0b7daaccb38620fa80295786451eeca711a9271eff312486ca3b 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_ssh.html 2d13695a550123ffc246af370cb525b965971572365ccc458bd66b93c5ed93a0 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_suite.html 754dc5b8f4c38a0fa1b1d1a1a9e0fe7d98067de7bcfe923c89071e7173150a38 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_telnet.html 22f1e15c169f23d91e35a0950fa1ed62bc7825a27a5503207d66332d873c4086 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/ct_testspec.html ea681ed785ba7cc5e6c5cbf498f6d8fe12bd2fffb3f30cb8839eb0b7aa508c8d 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/dependencies_chapter.html 07fce8ebaeab9eab6bb3a193753e300ec4db7a92d6781ff0651a37a3b0215983 2 @@ -2739,3 +2739,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/event_handler_chapter.html 6c49a59c9266d2adb7f3ec13b2b72b246b5c3660df6330a27404d034f5f468fc 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/example_chapter.html f726f3563ff4e9ccb875c6e64eb797aa49a9b58909a8978a7fec1869671b4d4c 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/getting_started_chapter.html 53137c0ed9a96ccb3356f368e238e384062d8cf1238063f959c9216e65a2f3d8 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/event_handler_chapter.html 761bfd9586108bfe65b8b61f7e7e775e6e22716e95354e2fda45563484f27373 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/example_chapter.html fdee68cfa0b887a7dd6fb704ffa7c44d7f7d0fc18e2ee7144fac5497830fbbbc 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/getting_started_chapter.html 5727f608e1fd15a3e87e55ee4f1cd8b54efdbb574434709508dc5504a03974cd 2 @@ -2743,9 +2743,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/install_chapter.html 16a33edde057b0d9ac2a79910c29f482243353b36b566ded365abc15825f11c2 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/introduction.html b178745b53e0dea97d6010ba39a1cceadd62946e5089a10ed6a6ec32cb959c4f 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/notes.html f66aabbd53cafd2dd7737e461ab51a79707f2fe8ad83f495393d5935bf4860ca 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/run_test_chapter.html a23eb201e9c446baf273d9755b8006005a9ed260f70dfedeedc600ba5fa33cc7 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/search.html eafce606d56694c6a81f88c20b7e52e862f1e59734a6db41b99fa32fd9c67ff2 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/test_structure_chapter.html b19026447eb46da6c6ba96c5eefd64f43c60908a9141eba164d70d1297d1cb61 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/unix_telnet.html 25efad0f5b67112d23a408156fae4316e7b85b09b51f091364942f06646b3890 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/why_test_chapter.html c6f524c0caaea322ca2d6264bf02dfa24432b7a39f464931e511789de332aee7 2 -/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/write_test_chapter.html 9dee9d4563f9cd8dbec39be223c74e2bb2ed69102c3b56413cfebbead99bdfeb 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/install_chapter.html d34dffef14e06466e288c125cebcdae94674b6a5113a905c49091ec5bbceb22a 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/introduction.html 36ae8aed0a7f568de7944f524cf89dcff348a7e461332fa0fdff63912a09dda0 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/notes.html 17dc64bc28efd84c3f13b61ede9ae666b1b12c3f49894d20c51dcc1e4b03d092 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/run_test_chapter.html 89f7e587f4c30056802d088bcffd15eff3f65e44159aa787d48434ab0dd96c04 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/search.html 589886b0184d37544e224550c3acad6e647b7d540d3fd818c48ceb1f4c8c636d 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/test_structure_chapter.html 6f9f47ab0375e01f96f6f0b156febb13b4b95fb5d0ac4a8e123869218d7546ff 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/unix_telnet.html 5a4ed4494097ba8ac98f34d52c8a3b1165104f8841abd2194524c36b2ee4f6ef 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/why_test_chapter.html 60d89fcfec675ed283d577738d4cd06d72b788c298a169122fc9fd3dbc93bc25 2 +/usr/share/doc/packages/erlang27-doc/lib/common_test-1.27.4/doc/html/write_test_chapter.html afbe98265231d84e681adcb0e74fe48919c6e9c8108eed1d691251b4a197a8a9 2 @@ -2755,2 +2755,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/404.html ac0fc18117a898b7ac8acc11e0d8b9a30f10a3273f55e2271c983cc71311248c 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/api-reference.html 65494970fcbfd2e9767aa2b3755a3acbbd80e8e83397cf09b30f7fa1c29c7a7e 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/404.html 7845bbf086a851adf8618d8d30dce22b9f6b65f0d30bd9e50a0566dee4c7b92e 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/api-reference.html cc0acb3fa5c86b3e1a398cd2d17af2e0cd0ddc1c08f927fe9e2d9e3d1a7be8c3 2 @@ -2759,6 +2759,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/beam_ssa.html 181f25e49632578ce8845bdff7fb17e94ef39f3803a56260be4ad0bae27474ef 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl.html d513d2604944be8031eaf98aeff35f0bb150b24b831f6fc9b8954c4a442e810c 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_clauses.html 9e7b8f462f801a2dcab8e60c43e5cf8702b8466bae265e6842f6014e65366373 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_trees.html 05078f8bde8fce09b66ac0cd4c9a2f665b5a6f7d13681e5520d67bdb9694e0d8 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compile.html e96ce715cf21358c9cb92fa80b8e5eaaa5d730f1b79df2fd625c0c08b8109eea 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compiler.epub 46ea7d00b7b55a5116f8393faaf0001d205be783bf1507961b8d612e1dbbb426 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/beam_ssa.html df977e9c833c7914f79606855e3ec460f86e868e7561d41a935129b93bb97db2 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl.html cea8cbc96fbcf9d8f1343a1f437daba6e3e20ec64c79cf5e0f80a00c0f6d127a 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_clauses.html 27b4280cd580792871745922ee15025d2d4f0cab8e31cf416a382f8f1aec259f 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/cerl_trees.html 80997173d8952c405daba563d67be8bf2d1a0e1317531559956301315dc616f9 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compile.html fcf1deb29f1483c82c11453ec7821dfba9c0d2b3c0316097bb91de7c549c0884 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/compiler.epub 1e4bc52cb1b05c05fafd2818ad9f07a2440a614c49e65bed150a76e9aa0a5659 2 @@ -2783 +2783 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/dist/search_data-961544C0.js 48dde1107f12e726d32d69ab0726e51ea321615b3928261a0f328c303b4c40f1 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/dist/search_data-D052B73D.js cdf444c14a3ed0040b5d6ea66cbd4e8befc3c3c3f3f0d626d7e424c163c5fdf6 2 @@ -2786,3 +2786,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/notes.html ecda31b8ed595e5dc0826bd1da5b07377d208d67d09f69775a1d8c315b8440be 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/search.html ff11c6b24154bfe5014a7d30620d6f2cc7d7e240b71385eaa52dce0093e36910 2 -/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/ssa_checks.html a43a947ca5ee5b67fe27e862d4c7f4eabb6ea2522a1ac844056172ad64368079 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/notes.html 4104cdcbe1f7c3ab7c34ad8769b99d3b2efbbdd02859b3c0bf8591daa2165654 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/search.html be5a59810ce2f781eb686c38ae9419ff28a09ebb92331ee9216ad7748aa3a7ca 2 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/ssa_checks.html 11b2318ebe95383319c68384b3271dee04b8033887bc3d5fed40a3228ce79221 2 @@ -2792,3 +2792,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/404.html c7b3810e6ddbb06bbd2af7b7a0bd9e7428a5817ebfed2b6d9d1e68c82eb4ceae 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/algorithm_details.html 46e8f3c34e6bd3f4a4845de38daa8e109d8ae85506254846a23bc0f2bf7ca60f 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/api-reference.html 5e334a4dd98c1f5de39dbd0d5e2d6b6ba41a735e8129b9c66a6a2da01156d540 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/404.html 812eac2f4d8d987481533b542ee2ff751fab0efa0b650795de48acb1a3194e06 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/algorithm_details.html 7793071cc70b95621fdc371ccb625940f9a86d09f651e3ba7f405f6caf160f79 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/api-reference.html 950f71c71655e3bdf728b467e75f70e079d7bb7825d3f34bd29b86a88d717ace 2 @@ -2797,3 +2797,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.epub c4060e871cc52e8ea59883d35392e9ca54b4f22b0ad2daeda325599ea7e407b5 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.html e5d1a45364a3b53667569d596d356e8f902f6c99c72b319640d573f1c6ecde5e 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto_app.html 769b5720a1c6ab2e0fa0bd58eb4b5c691ab69ffd08eb3e099ccac795ce789682 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.epub 8afce139b40cd4ee7baeedc83114f8878bef94804463414d81da4c6ee4b54273 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto.html 646805fe0e7320911674fe99723c09c4ff116e3c23e16e881e1a76f4b0afba22 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/crypto_app.html 60552733ba564cf6411334d1051f2d38080a2b81e7a566c8a5b627ca9590ce76 2 @@ -2820,3 +2820,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_keys.html ba2676db7b26bc604788153c25f70e7052ef6e4247d1aaa49f39f05528961c52 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_load.html 0308098a14f6a4ac11b791e8ed82c59241d520bac87732d21da7330c59c635d2 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/fips.html 7504d6a082135bf2cd72f22a67270a0e0f4bc27bb093ea2f775fd15d74c3a299 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_keys.html 2baa96710369c63e6cfa0101c5a4974e10fcc5b971035b40aeda094387e60090 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/engine_load.html 453394d0be653b77a561562b1ea4ab75631e03533e3d820eb176444152eafaac 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/fips.html 62e95c304b6282131730d894f0bc1a0cea34ba1229d7756513141e11d992444f 2 @@ -2824,4 +2824,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/licenses.html b0106190e06ca5a5e70f181cef0be786f57fa889400fefca6ff1fead0ffdad5c 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/new_api.html adb9aa2845de197dc74d0a4fd732556203fe9ba5687f477ddd6c5e1c448db04e 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/notes.html 829a5e869df9b06e28fcd15dd0ddc86b2790c9ef1f16b5ab40a2df209d36b885 2 -/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/search.html 4c973e44cdfdf3d3ac1a8f168d2292b2f27d9469161ed9548cf05576388ab7d6 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/licenses.html 50a8bd8a78a28b918a4f3dbfa4b2cb3632f145226df09931329affbf5bd58ded 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/new_api.html 833c065a0a7823391869d1ccfe485d146e6cc409310e43d78ea32ecdf72b8811 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/notes.html 56bed691861fb070180e17cede18670ea887a63751f4144d4d1df8160c836500 2 +/usr/share/doc/packages/erlang27-doc/lib/crypto-5.5.1/doc/html/search.html ae77ede350939c2fbf0888dad41c7f0c5463003acb0b45989984ab63f35b0467 2 @@ -2831,2 +2831,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/404.html a443d15c61d8df3a16fab4b906786880c6716a85a8ebab5fe12400b81d3a1bf4 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/api-reference.html 97579aeb79560df224328cbb6873f6452050110e34e3ae30fcde07cd69281c4c 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/404.html 436ff7d5a65d5b45c3e7e5ddee55d74c7943c96c7864e76263d4a14384db2d66 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/api-reference.html f1e8ed3ae2a05e777b41a5b2c40ab59733ec8de44d509ae55774745c7dbc1e04 2 @@ -2842,3 +2842,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.epub 6822030cfcea9d838237d9308de5fff760b90863bc9f8850da39703aafcea7bb 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.html 8aa7cbf8546d9a41555325eae0b59fbd2bd1b0a42acb2b0ce339dfe49c58037c 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger_chapter.html 7b0d7f31119c0ff6eb99f60c35e27d67eda6533e42c7276e83db305cc8c86ecf 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.epub f055dc8e3f0bd8519646b857af89eca4d8981322bd07aa967e494b5232bdc3ce 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger.html 5a119bf0350443f55b6c0793ef6b4e8c58d8f88dd5bb436f68d1a34c3587ac4e 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/debugger_chapter.html 33283d9019b1501826d03492864e379b4056b3a8af98728dfe2dc1e784c8ac95 2 @@ -2865 +2865 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/i.html c1ddb0b2f340360681ccd69ec325b3c4268055e4111d10347b46196dcae59122 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/i.html a67db35756ecd4679f4e276739cf5aef654b5992563ceab53fa79826a72f1bec 2 @@ -2867,4 +2867,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/int.html 9e5709c0c6084f87e85fde5e352ebfa43b722cff596f7bd9368058af30432dae 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/introduction.html 5a579d3ab76e1690e223925a954ec3020279e25e18790c5b24ee8b5da4ec2d9c 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/notes.html 338321259a0a44704f0d76d34826c11c9de5efdd537b668a71ee50e33c5f4329 2 -/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/search.html b75be157bae9a452f580a4d5eb7b92708f61d8ff2ff4205bb777ade88aa3be33 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/int.html 234bac88ce3d3d3716525bec65ef37faf80a1a0da9ba42f62595b50cab4f60a9 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/introduction.html 8e202a55b5d3156fa8c4d7983dfe66b50c7415f56d2edef00d31cb7c4291ca8a 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/notes.html 3805d4e9939add4e53364a0ae63283a8f6da456e5608f2d506a782aba0ecc924 2 +/usr/share/doc/packages/erlang27-doc/lib/debugger-5.4/doc/html/search.html 3bc169664731f6dec4227e6ca665a2cb01036b2fde30d8f95e117ca7a53a1d7a 2 @@ -2874,2 +2874,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/404.html 5dbc5c63a1e4e32b53408d15719d9c47d9e14a31a414d264b50acaab010e8bcd 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/api-reference.html 52f56ab4672f1473544fa46340d89e7aba27c0725f021f80c2037199728ef845 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/404.html d34ffd7c72d6660e493a437a67c3c46a155fd67c1859ea81c113791d517e7406 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/api-reference.html 6fe654e45a0eefb0453c4b2943ba93c629b46b51a545ee888828502f7b820d45 2 @@ -2878,3 +2878,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.epub cc90fae761fcf5ec846a30d1e6e231b97bde8c1faf45983d179502cc0a6ac1f9 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.html 78dc9038f4c80f2ff4036607af9a28116f3cd4d203519744faac5c2bed8f1c02 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer_chapter.html ae4ef0b48e3690326498406688e1b7424f0c249993d84fec3ba14a63beccd3e2 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.epub 52f0e5fa73aef3d2c60db0f72d1ba8154b04a6657f8fa91e9efaa9e1aacd9d88 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer.html c9cf88e6e439b3dc1f36f3f4aabd3401e2061502ce3e994aad3c04c081dc04b7 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/dialyzer_chapter.html 77af08c9fbcf17192ba105dd79958cd1842ec4a883d2667f581659e354866057 2 @@ -2902,3 +2902,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/notes.html 004a344c7bdfbe6a8b49b9396b660e3f2557cee10b38f1e9881c0b121b6fa6af 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/search.html 68e8c9111cca8ae3066177530447bde3ac293c7d115ec90db05ebdae982479d1 2 -/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/typer_cmd.html 5fd5a6c5d6b2a5b1781f1f0b0bd3b269c68b268b521c62c7a55dd77f663e1cd4 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/notes.html d005c4324d5fea7c295ce3a5c84bd29f3149f99b775fa7bf9a7c7f85e0cb589b 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/search.html dd23ac4c6107c3e3bae40a459a25637d9e0e584ffa55f6f744b9a7e6e62e5b36 2 +/usr/share/doc/packages/erlang27-doc/lib/dialyzer-5.2.1/doc/html/typer_cmd.html dd58e24c35bb2d0c4da09657f99b39eca183677911fc3cc96d2249396185fa7d 2 @@ -2908,2 +2908,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/404.html 07b22cd93117e20be78aa75d75e6185abfa6d0a1ae18e27d78f082244b0ec22d 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/api-reference.html b780b95b4381772f555f1e93eb4295cdd261cce429aa37e505e5d176d912b7f1 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/404.html 672ed759aee77a1b2db7e6f801f70514b99268891ae942c3c01ceef4d8b9394e 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/api-reference.html 4e6eb35b25c37c087f3f33fff16298095396ab17eebaa3f7b6273e7b8788b195 2 @@ -2912,15 +2912,15 @@ -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.epub 9074fd681df83b44b6c441914ce9a26caab4bea63003a3880ced1be3c49dc1a7 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.html 6072ad7d8905f35d77672e5ed6c6753ff1b08eadae1aef807f88971e65288d4d 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_app.html 3f8da34120d28533bb4d64ab6c423a5be689672f54e972cd8a952819591ba2ec 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_codec.html ce32ec60b93a41ca9dc72025ab1b86e98e8eaab7333a258e5a7e17546de9338c 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_dict.html e8da0186e9c83cb699ec57f0bc087df4f0aa779eaebad04d2910788d231b05fb 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_examples.html 1c02deb0dc7f84763a78d5b27665e3eaa0f6006ed31c115a8589ad7541c9b2b5 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_intro.html 82520a89e6b220fa1cae4aa6ade5eee1667d11c8d9073f68885fcd8bc4ed22a9 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_make.html 7cc1113407773926b55f9602f88e281cae95ec6ee2dff9e72c42e1359457da58 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_sctp.html cd4d2d7970ca7229d6039b574c38973da02e6528fb7e6f811adca87331c7bf8b 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_service.html 9af097f0170849fe9cb1c29b0d10ccc10241bc12b0f1db0213e181f8b011c20c 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_soc.html 0cf46731e2daf646221d55734c2eb127037c75298d5b7b00bd32513c2f9cec89 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_tcp.html a9d8d8e38f45e795ca0770fe175e99a6462e54de417bc3ab8794ba11a080a39e 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_transport.html 36d3e251603d92473fa0c5fbde3bcdda80a88ba8f162ec2c589d91fa6006fe12 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_using.html d0017793dd4f38d081d410ff6a8203e35da3d3e68e3173fcf80287084aaf8ae2 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameterc_cmd.html b3516503d45dc22b289d499c2034f179ed09c04580505aa0b419559be1f39f18 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.epub 322caf18383e6564d857383050542969521a88edb6d29a9ceb12ddaaa0b704b9 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter.html ccdc8074990bf5c5bf777de1fa06292e3faa6423dced1bef73ca348bd396995e 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_app.html 79211ea423e82f5157ccfe53511fb41eb8aeed52ad7cf8356b0a07ab63162c8b 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_codec.html 992b0ddaeaa6f3bb3c529094127e4c8b007734fb66215363fe30467bf9c746a5 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_dict.html 2c1329a679ca92be665ab385d8c1ca72b29125d31353b3c5796a1dfbe61133ff 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_examples.html db996093cd9ae7dcc62515d6b80491bde64b08634e3c91a9d98cbb705b6d828b 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_intro.html 1bc84dc6132dc4c59d5b53643717bea174fbc12a7e69642b69b49437d9d5af78 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_make.html 5abc4272236872f48038c8729cce15c45f6dcfe1b04c9cdf62d4cc2fb8929f7e 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_sctp.html e3da7b8f8bcf87e5c8895b17652d852c91a6bed78e9ecee5e939e9c02f10d50f 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_service.html 2ec9ce26f85403408bb976797316cf7b10140a69037885c4a7cf3496fb3b281b 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_soc.html 958ca0e6a79e810d08ff93a4ead9fa88407a47280c36c4d07d20b532873740c5 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_tcp.html 2fbc3d4e2f807b66cfddf528b5c8b54cd3511089aecee206a7555d5b4eef6635 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_transport.html 9fe4a9108da434442934aff2abf3692b7b83a94611c241d84468485198a429ea 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameter_using.html 38a1b9357f092601e94a296cb459efc4bdae44e53fa97d240fc10c951423ea7a 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/diameterc_cmd.html 56d9d7a5ebd74b2dced986b5052fc3d4db145fdb1f20b16784b400ab5c3f9acc 2 @@ -2948,2 +2948,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/notes.html c6ba099b9a71555c8e65fb113bf4a4769b6ee1c578e7964c592b6a764ffc5ecd 2 -/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/search.html 58ae14891a421a62ac4b455b764952b681ac5e40c9104be0869ed7cad244b1c3 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/notes.html c5d569fa4e643ecc5714a59b72838c53494a61a417ee743aecab7c43340ad1bf 2 +/usr/share/doc/packages/erlang27-doc/lib/diameter-2.4.1/doc/html/search.html 10e57b73af22c131d4ca9c5e8184236cc862668d173dc9597860422e1397dfb3 2 @@ -2957,2 +2957,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/404.html 7e861ea6313ff9d2f9bb676caf3d5a6f6be6ba8c9d59b5a1a7505a8ff34e4d44 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/api-reference.html dc8a5473974849c1b1b6cefc3b15d49fc92e26bb1177c2e10f5bac6ba807c028 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/404.html 70b287dec48f11a9267bd0c6edc17e25815a9814d7bb0d82da954921b29f142b 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/api-reference.html 4992c160ecf795d58c88f22d118697d3f1c947008a3322ab3d5e62128c85c1ac 2 @@ -2963 +2963 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/chapter.html c7530343387c88dbc9443ec88561345a26cb34dea1594642e6ce8ecbb18ce017 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/chapter.html b334e4307ba649bb6ca8e66bd1d66721546688854acbc675b9fa564b0621d057 2 @@ -2984,12 +2984,12 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/doc_storage.html f8f1597997efaddd77859a987d2358013587ebadb28a89adcf72d79fccca09d8 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc.html 4a8c70a289e6b481b59f25d1b46543401c97dcd7cd661b2002399df9fa3738fb 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_cmd.html 7ed66441201c2f70f0e970c1184abd357907e5793e5bf638d76e9ec9af5d3218 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet.html c6c1a408a8d29e5c07833d71d053f1d270b619e95be520814cf72a0cb87d229e 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_chunks.html 333b7d68b5cd5e45ef1bda471a528ece31bbcea74bec4df09243428d366aa6c0 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_markdown.html ccfe642350c3f9c28edb78770dda1f4a8c4d19ece872765176da9ccb5cbba2cb 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_extract.html dc0a65c53973cfb1aa2c691f3cba146df1f7a68c93e5d5e2cef5392fdaa42a0e 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_html_to_markdown.html 4135159ca35f3eeeb785254624c6ec62af2d5b66851774223afab724bc596921 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout.html 7afc8a9bb6400646f034f7bdcc1123f58ad4fa487f402ce83decec8416d335f7 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout_chunks.html 930a23332aa140e239835a0825e60b5af3e24e2fc0bd03a78fd56e18b1c6af78 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_lib.html 3a8350b755082e322873e4191f3e00ef8720f3b355c9b8794e9d05b350fe5f4c 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_run.html d32abf6083559d9f8868b4e9dc497e4691ebad6c2559c9f91ab45613d99772ff 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/doc_storage.html a97cad7e28257052bff0651565c037d48812a724519ffb3d13df9f247c0edd92 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc.html a019fada635726b3d9de58a8667e5f77bf9075a2a0d1f1f865d18ec5f48448fd 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_cmd.html 0c58f67a89b7245d2c07b6286b427b02ce57645b03958ab701c47dd96c21c9fb 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet.html 455a32b39ccfdbcea1647e426a1718d45ec1e1ac7f0c0975de2f5cb146cae43a 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_chunks.html 2cdae86b705ec3c3e36c2ff8611cc2aa28da4a8a9c367fc3be8b5ad47f14e5d8 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_doclet_markdown.html a6762c0a8c1ae5160658e63b121dc4c61ca28aad493efe2dfc572b48d00997f8 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_extract.html cff1db0ee1232e6ee810c23a034a6547394515b95e2088b1d3d6e347aa509d8c 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_html_to_markdown.html d0b276e3657b8cbbe86f8750ffd8385fee1f475abb34e516d05224ce4a3ac543 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout.html 92eefdda18d4198ecddec7a51092dc587b260c4d4ede66f3e848a9e6aeb8823e 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_layout_chunks.html d626b631b179f387ce2f69370455507260da57d922650315dd3c39d0c6dee05a 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_lib.html 7b24c670c6006071f860f8c12c5f6717059b294548ec06184cde80582d29178e 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/edoc_run.html d578c916af9d96d67b40b3f1940c2046c98f34cb09591219c582a10ded941e11 2 @@ -2997,2 +2997,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/notes.html 8caf1e317cc6407652bfe21f40c1bed8a779fb2553fca5bf1787e3e584a09163 2 -/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/search.html 1cee261d46634d3c4f5a45cad9c0d1f0116f524f1ecc12ac09c2f04fae4edf40 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/notes.html 3f88e4583fa71f78ebfe99de15ad6268b15d1a90860baaef7a52971a5958defb 2 +/usr/share/doc/packages/erlang27-doc/lib/edoc-1.3.2/doc/html/search.html fdc9797236051118858b8008fd9519f637ebc83fdcfe5f8242908526b96f65e4 2 @@ -3002,2 +3002,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/404.html 6845315327eb4443d48653a7a847c389a1f03d86c680d164efc5f45ba7f3880e 2 -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/api-reference.html c713b344041417613fe27d3a0cd0efb6982a5ff5d908948b1353db206c0d7bc5 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/404.html b2e35c6796f7339e7b9fca6b69696bcc74197f3a4d7c2e1a0908c80ec979cebe 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/api-reference.html ff3644465ad95e2fe53ab4a646bce0a219f63bc6e447fb72012100e19382450f 2 @@ -3024 +3024 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/dist/search_data-FC950B1D.js 58b9d5e899ecc7704feb43487988b8a3ffa160637018938597f6ff4febb71811 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/dist/search_data-1A8AA22A.js d1896ce6cf639895ec351e7ee77535274fbd0cefacb342a0211c3fdaee3b0e5f 2 @@ -3026,2 +3026,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.epub 27d2ec6bbd4f51374115822cc3f6b9818b5e36c776b79e55c9c671a3344c69e6 2 -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.html 1b71ec28c8c84a6a7738ccca6d980a8175d690bbaa9c44a9bd772f3eba3a0d3a 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.epub 73e8c92378d37e018f25233e3cb9b2bf450ba22e645a5905faeaf65bdff9af09 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.html b4845150177f535d697c5fcc87ffeca0c825eba1cb32ee999299c24469d0666b 2 @@ -3029,2 +3029,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/notes.html b561375947d91cfdd5c96492f76012a687eb00af7e9cff991f0337ca6c0af968 2 -/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/search.html 3ff10231983b67e8a997218e837ce9ab1aed919eb79fb0b44a386a28c688b475 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/notes.html c3c996c418834a57080232f12839e731102f5076e430edc1c97e18fea650ba05 2 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/search.html 8d9def382f4a5ea87b7a86317fb07252914882d4ae02cdd7dcd1c85e53619fc8 2 @@ -3034 +3034 @@ -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/404.html 971aada3e4fb06ed756b482f935f56f97c8ea5bb4d7667978bee02336125732c 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/404.html 289d6ab33967c5c4d41d8037e9e5abca4ac93f83e0c0213e4577423ae52f0744 2 @@ -3057,6 +3057,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei.html a63024fb1b4e3f7ca75b0b885d46de48ebba38c95e479aad4caddcaa9a416712 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_connect.html 0eeb1b45a6e6205ed0679298e8bb9910938842a371b20b4015655d4e31134568 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_global.html 2a5413745a797320391e98a1f0c5d47c76702595562b778916a0ab1f6e953885 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_users_guide.html 139affb48cb84e51137c1e972a20096222274d2ae50ebe4c60feb92ade1f7b59 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_call_cmd.html 917f830366f9a588cd0731b49cfb76abb44c846614653341270df4bbc4a2987a 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_interface.epub c5b064fe08e2caf375704b9ba7ff7c0ed285e0e0579b176a13a29750b11d8d2c 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei.html c55d9213b75b534503c0f27a1efc7bead9031870c6372bb119304f8f0bc523ad 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_connect.html 0948c0ef2b45b0a59ca90784cff76108f401da60d1999897a64cd9b088b83e12 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_global.html 50e195142fd53f3601a563506a6dc1059503aec2c564ce8f0e18568e7e3390cb 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/ei_users_guide.html 925727778e64f3997136bb2260dbcbdb7b21a5885e10c3c5ff5c6b9078299fbb 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_call_cmd.html 4f1d01e16ea0cd53eb65b30559abac28c7b4d79cbf64bbbe385db042e7f41dd7 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/erl_interface.epub 70f6222cf51f6d0fa2ce0c9b6635f088df4fc757089425ddca0afc595c79842b 2 @@ -3064,2 +3064,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/notes.html 14ad0b0b49d7e58a3f9ec2a273f5586d7a5719ab3eac9c0a37a0bccf2e62da54 2 -/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/search.html 32f9bf0cfa6cd849d396a63fc6883d4b21becf665936ccd2e15c8ebcd60d6843 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/notes.html 533b28ce58a33e930dbc3ed53dfc4abd4a407b25cd12466434371d1518314f7e 2 +/usr/share/doc/packages/erlang27-doc/lib/erl_interface-5.5.2/doc/html/search.html e802236a79122af78bd4ac6ce00f566a60c336666de28a9ac3b43368e7169074 2 @@ -3069,2 +3069,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/404.html 7145a86428ebbe73e8ee42c598d5f69ea548f06749c38623b02a7ef8be2289be 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/api-reference.html 0bb472edc419260c43a9b6b8e139fe9bc6a759b0c386fa06b5b03cbed8d1f4b1 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/404.html 21494159644cb6e739bd1b14954eb3fcd437307844cc62de51bd862cd77680c8 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/api-reference.html b467fd1e50fa106619b0206cb54c1cd16af5873681d399eb5754ef8ace64d61b 2 @@ -3102 +3102 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/dist/search_data-F7B0262D.js bb37585d7c582ecae7fdb42cbd26662d97ce3162db40ca1bff92c9f6b8251ac3 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/dist/search_data-B90F468D.js e8f33b8a5206d7848d260e6952dc3116bc9210eb80daafbcaa82c1077e83088b 2 @@ -3104,9 +3104,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.epub 0428148a7c6b0e4e6230b3ddd30ef8f2c2795faab9c5110dc377ba2c8cc4a085 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.html 4ed2d2adfde4245ec0d4ec15ee58adac6461859be5c3e353e6005b46ec320b17 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_collector.html e896dab8af18269bfe91902ac2c669f550c67a7303de868f960074c7e3567d67 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_desc.html f1e231406d42a9f2f4c08ebffd09f88f809ac39fc475081f70ef2175c2c1e3c1 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_examples.html 5006b8fe0fb922a090215adc8a7a1b5b99f9c4170b147bb60f4bcdc9fb7238ad 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_intro.html 6c55187ce3af1658f2cf4c307e7a13b686a756d4c040ec43130b89d1e29d152f 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_selector.html f114900127049b63c4117a6e8eb334e48b28f5ec22b1772a7664b06e6cd92efb 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_tutorial.html 48e5af5a5a78d59c11a64ecb373e1d0248f8b9da96aa9ed884927133df7a5f01 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_viewer.html 34ba7c9e59ca55d5c2defa29fb4f679cf351f26fbecde14d1b74515362ea5571 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.epub bb893b9896df16e1037534ba5d108f9552762a9afb05c0949977c7ce70774588 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.html 08afce994aae338bef44ec52fb24d5750b24c12783be33602edee2c9b0a4830a 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_collector.html db0b0a3544d93a83354d83281240521e8d386cb753063d2f47ba33134c2dbd2a 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_desc.html 56d6f460770fbe80fb2b69ad9f6905ceaa1bad039f585ac220ec545960f7848d 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_examples.html 7670f9a505f2029b5d52e90fbe01d6114113d9cb1d159c74bc95cdefae3ee284 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_intro.html 563acc1c42a178b2e93037b29f4dae95bc295ec64b81b4ca3918b44a916ac741 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_selector.html 87d6474a3aa336204b87cc612e5880d5fe7c327db6d438706b994fbb5faa11e8 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_tutorial.html c35a0e2ba39bbf6405cc467c583367d24d5dad73363691de68f082ab8de8b0f0 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et_viewer.html 5f7a59bb1bd621d121ff381a3c509c131ed4ffda8c861cc8866799b8f5e3ac6c 2 @@ -3114,2 +3114,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/notes.html 1cf1d6f7afbb1f9547365d355ce6e9bab71d3ed242d454ec39a7246df6a3ba2c 2 -/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/search.html 9dd344797882e89cfc9980723b347b20764684a4ad8676f8a31ff6b9de2d862d 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/notes.html 9ca09ceee649a4462ea64c0e96ec7dfea550b2950f2bdfb03febaa473503f083 2 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/search.html 4dfd4933737670e0f6a5c8ee9d4fc95d9719912b572a38b1545f72b5724b87f2 2 @@ -3119,2 +3119,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/404.html 7fbee599eb54ec5d718c4b46c5bbc49c0cb9d35068183ee72780d6f8f63c43ee 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/api-reference.html 874c070d32b6f2efab23dbd50f0fcff6ef28bc23ded1f8f33eb9bc587fee819f 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/404.html b663f3ff1f02f5cbfdc875b97aa07b160914c30e26999bd8fd795f0ccd340f33 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/api-reference.html 8a876273ef3bea5d908eddb85cf8eee160ddf9864bcf7bb8d1b616943bcd1d6a 2 @@ -3123 +3123 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/chapter.html e67f2e60a9b049a60ed2808ad9621d0893054c8925d46ce754ecb0715eb558b1 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/chapter.html 8b57a821d699661832d82958ea5117f5870af02dc57cdd19fc1abdb9b7fc3894 2 @@ -3144,3 +3144,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.epub ac24c19153e30de2e4a5245e24508b1e3806df21cfffd24abd53558f317c1ce5 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.html 45b77fb9af957558c1d5bdafc78d2663d7698894931c41eed443f387c8e1959d 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit_surefire.html e19e4605e1889bdb13712708db6bfba2913509a5c50254f4a87c0838fd1b3db9 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.epub 3888f2335076d6aedbd9eb3e55705e6e2703e97df085a60818461cd86441b7c5 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit.html 8fc350d0c0861eecacddbacdd72cae2c11d6b1ebc716deddbcd6b8c79d0d2d0f 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/eunit_surefire.html ed62a219377f2ecc820db467c9fb19f5fb92279bca87827dca55e0050e69fb79 2 @@ -3148,2 +3148,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/notes.html 4ce3c76594a60b3c50d45d42a3834fec51b02bc77df9cf8d498d18aea61906ce 2 -/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/search.html 810ce71fa36f1527b06af09c0ef08133796e6a33e84682819ca4781b97b8455a 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/notes.html 5ad8c83aa605837311ead8d28173f520d88e5cf04447b4fc5717089466007751 2 +/usr/share/doc/packages/erlang27-doc/lib/eunit-2.9.1/doc/html/search.html c9637f48eac30dda71255d2db8ac32a925583b6db58a0ed9f3c1b484e6ed9bc6 2 @@ -3153,2 +3153,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/404.html 39986dc4969aa8ebdcd1f5d49ae3903c829b1d58bd42c83741e9c33dadf1c4c0 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/api-reference.html 52be056fc6aa410a81ad70f167b3ec0211c34bcd438e6d06d3b260bdb9bf1820 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/404.html de8c71f34c07a0590ed9f1bf1820c4bd5fb04e46b066dadcf5126862e8ef3dbb 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/api-reference.html 6944ae5c01f04910d286fa2bd89b2d94f2b44b1ab44e9d7dc8c21d85b335911a 2 @@ -3175 +3175 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/dist/search_data-DCE6DC3D.js 3462854b02af79d5b4b80c26306f5f72ca461bce3be07c0748f5d24d4a8f037c 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/dist/search_data-6DB131C5.js d110c5cac5418f29c629ee93ec2bfc6085ece6479412513cd3c9cefe22ef6d6f 2 @@ -3177,3 +3177,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.epub f29507186e2e50dbec4d00e258416ebf7e2d227fc0e3ec5f895e9c8b82cc2e2e 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.html da31199552dda4a9302fc6de248f598f3cdef8a348add03e99cf5960dd0ad226 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp_client.html 410fbd4e9c8a523cfca0f06d00dedb99f5926db0cd5a3576b5846de169e95482 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.epub d181e34153e9e060ceaebee12db6078e4cfa70b7b87f9e0e42e1b02aaba37515 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.html 3d7801d4f97996583d961fc7ec4cfd745b8a560147846fa98c2592bf5aa7592b 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp_client.html 9af6c96dad15f04c5bc7a43bb6423ed3d4078b56d4e79afec8fa87964e82b7a2 2 @@ -3181,3 +3181,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/introduction.html f334f11926787d98e16d5c06590f943e99bb75a451c65ec130f59a2061698b72 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/notes.html e6cb1ce7ebf5e34a6e3d9e2796a2d6f187c3a48222da7ae50f206860b4f5a7e0 2 -/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/search.html 688b1b689248f06b155b4af4196ad1918d9498c8edcda6251ca1cc5b4e10a621 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/introduction.html d2baa0b85bc3159282f83298226fc6d920aef0d3599dd2734fdd146ed50c6026 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/notes.html c1db13bfae78db3a92b997c03dad1b5507df1d55cb18d5fd45c71291444b140a 2 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/search.html e41eb85a9135d683a07461550836268947c33b3f0cbb44f2e1c62e4e03d46f91 2 @@ -3187,2 +3187,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/404.html 6a929575600d1b5afdf24eedc0e5db92e12f6a69d29a0de16ef739d9dbd3b3d1 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/api-reference.html a5234bc78d22b22af8aa43aa31bab22ca77f29ec673df494283a449327788fe5 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/404.html c5f5de226f0d693a7d424d966b27544e2ef5867e6e385fb44177151fe6781543 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/api-reference.html 557dde458a9ce92cd49f97836bcb430650c3141605f9b5eb80d5ce43fe0942a8 2 @@ -3211,8 +3211,8 @@ -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_client.html 037418b5c10bd180dc96c6b671ba252f2fff6829aff009126d4e1902486bea64 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_server.html 5c540821e16238916cf95885de7ab5ea236ca053727bcd9a5377d2804a9533cb 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_uri.html d966f0525df48b3827ac487e8af8fae3f32f2f92f8b9fbd547ad63c33ba17be4 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpc.html 1f4abdd1681edc2e72c4a4c3bf81b14fecf0389d0e3875935e6cd060f49751cb 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd.html 8a90cdd7d06a2a7290287180a438bc524c912db37819871c30131abdf0b2a99f 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_custom_api.html 461cbe37fd5af7bdc82d3bcb8085f6bdf4da312478e4431c3635f89dd71276fb 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_socket.html d688e95eb24470333c0ef89090e603a6d982887c8546bc5d0958d55d536a121b 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_util.html d658d19ca3919c3fbc49c5a754c0ea6d6f1f55f9b27387d7252d0622744b2349 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_client.html 87351172763cda470af9ea0e0ac83ad693ca4f3ac81324bcfa1a7720487ce798 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_server.html fa0385f8a9fd4e634e141b298f8af8364fb3a7210d63cc89279795a75c7fbff1 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/http_uri.html efa9ce786b282fab7712186ee94467fa1e3dc93a4dda557958a5c04a3702ea34 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpc.html 836617b4511e9763c87aea951219a0f4def3c9c421014ef40ec0853ed1c57a76 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd.html 1e603784b44d9e9bdae2b439475ffb3d5c12482acabc0c1d8f5ce3b817742a52 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_custom_api.html 5374c18b21652e2535f0bc4ebe0beb9918e88ebf26d42eefcdd7d2d19d66e854 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_socket.html c72325148d0f6260bd19f50256b7cc78bbdbe42b778e8b41fa30c814dd6f6b1e 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/httpd_util.html 06773c2899480b3b3bae0da5e5aef0377ffabef717942ed58e612c07b28ea45e 2 @@ -3220,10 +3220,10 @@ -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.epub 83138093c230f6003e6973b822de87992803de317be50515dffd770e36951d47 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.html 3e335e543ed0babd9173df2c15b47e9f561c88250acbc01216bcc871a700416a 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets_services.html a181b366a70fd6dd3b49bb26f57618f17da8ae8a0cd70c97b7365b196e809ed6 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/introduction.html 85f66001229f007f0515547f1bfc225d8b3008809f8a307aaf44e5a7a4670c45 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_alias.html acf5075bf3eb16213a77ef346aa5db8b3c6750d29f1ced8f8055f08c3faf177e 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_auth.html b56febd03281e15b1a86fc66da5a2fdaaada08f1f9072d02ccd29f7a4ac1c8fd 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_esi.html 7e869239800a806b856f4d88b96d38d71107a0cebd0b4922ebbd6b4280505c2d 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_security.html dbe6c8498caf0aa1a3a8130d86385d6732bde2249c53b17013f50a882c3c2e6b 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/notes.html 4b172fb5998209f06c05540f5db8a81be3e04e6bd3256414bfb21e5ee8d590d6 2 -/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/search.html b9656f0cf98a65b14d88de927ac94a877c1be7480f031bd9f5eba3d597c99a8e 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.epub c9204eb252ee2e56938a7a3c36ee0bb8ee5c93beab07f593de7e53f202d08167 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets.html 8587a5eafbdd178eab6b09a61fe42745d1964de055575f7de3bce18022523048 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/inets_services.html f7f1a17fd728b8d889e861e2b14af6cacda3e1d353b4c000e863dcba639e5aca 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/introduction.html cf33e57e0516e2b07ae4c0e6f375df7969b56de70354ee8b1d52d3ce442c33e4 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_alias.html 27fbb66d603573a81289ef23b378ead249d7d94f9dca23e71bbdd4319571419a 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_auth.html cc9f057b2ec6aa25b497dbf8cb5542dd8ec948061c35ae877a42be24a851e142 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_esi.html bd47e4c4497f17488c296579138af54433506392dbcb387d42c488ad3cd0c014 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/mod_security.html 8ee7c4f72ce0d067c699fd5845d9e16c40190f77cfcee83661683043cfffb5b1 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/notes.html ca05af66b11572c43d0ad4596ce9c18fc4aa37df81e9d41ad7017aa6a76ce9e2 2 +/usr/share/doc/packages/erlang27-doc/lib/inets-9.3/doc/html/search.html f732778bcb2886a624c7afb7ed70f3211668dbd54537edd92cb58102ff30c584 2 @@ -3233 +3233 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/404.html b0c2a78b5e26e0e3cd90fb94cfa1d3886c2be327ff833149a39a76e4e1283cfb 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/404.html 939f08cd80b7aec93d3d4258648b1904940631b65e78356b714792a2f5c6a5a2 2 @@ -3236,2 +3236,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allclasses-index.html 8e785b0612e0823a6739e88cda19c23208a323fe46c7813147289020c8acfd17 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allpackages-index.html 9a056cf90cab4d363cbd36f63b6062b812277ede17fadf1ea7e69c586bcfa12e 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allclasses-index.html 9df2019878b38f6cdf283e7664b0e15340b33b1569092c56b67c0e2367f98e46 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/allpackages-index.html b89eb62d30841cbee02b3f22f32681c977ba0be9733caa7223284813362cc07b 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 eeaff83ab56fe78271212b3bf9c39283650090cf56ad97cb293b830014ecd3a8 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractNode.html c804e0650119b6137d523d83448ec5fe266075dfa738ed23a1f244de95b6e7e1 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/GenericQueue.html dffc22c7ecc1229777d2c151f99ee519f1e4c0c692bdb3e4f4c0d3accc26010f 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpAuthException.html fe9ef764bd13e596922584f22d36dcdb3534c0a65fea05faf688c7c33e8c1e7f 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpConnection.html f19ae4cb3dc474a782f18e63891efa66daacacd07ee032b0ca9cd672a4921394 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpCookedConnection.html 6d559665afd52a166c264c83e7bfa36041380bf6c2d5158b57df168dfa2e60ff 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpEpmd.html 1bd0da844320f86ab63071d9f475c806d92aa6c60ae16419be22510d58999d35 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangAtom.html deafebc30e1158c04570c2ddc9f558929e1284946aa2a223d979c95c60c49b56 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBinary.html 4da6858494cf7755d9bf0b40c2dff3b9c3e16fa139b6832ffc7ba0eb948d2cca 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBitstr.html 78e23225b6fcb8166de2fddf8353fc76eaf2bdeb5147acfad66534334a809a54 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBoolean.html 2ce68853d3c7c7f56b6782c4233e355202b1f9ee9f53001b10e964649038a320 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangByte.html db4bacc575a7303a51c129dea023e0b1edede76bc50e54214aba9d58ce93cf04 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangChar.html 910f49a5fb8a82cd5699c571f52f1ea01b9c1517c86176068b273783c7afc483 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDecodeException.html c81dcd304868c29c2eb524b7f44e64e8fe68a8ab6fee2470ec4e35d0606a6605 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDouble.html 1be8841fde9401710084d245ca5afb8f7ea568dc206c637847d2539b6b839058 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangException.html 9a551558a70d81f192eae10c2eff32c5a80ff91430824ea88bdd77ec7a0e91ba 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExit.html 675a8f548671b2e1a456b8de2f4f92d5fcdc341f70c60753a458e4e5b04ee3fb 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExternalFun.html e48bf734fefc5759a27f7c80089259ebf8833f354e80af45067f1f0531b17af1 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFloat.html 8f13361568cd958f452e6af641ba620830a757514bdddc29c45e286e0a220e4e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFun.html 0e43c00027750dda995ac3e77b1a6c1c38350928780450055a09d8f4f983d7d5 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangInt.html e020ca465d1a0a9ee14525f93901f39aa880e6ec0583401709a7dd0ac13368f8 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.SubList.html f7a01361529f45f29fc055cef7948567d62a6be8d2297214b145feefef027ede 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.html 02ee293e07182b391ad6e89277740f3adf7fea84a94fe99fb33f62e7aed198fc 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangLong.html 0c2226072eaec08773c0ab77550114e27f4fe1fe1ab67d08a0c12c977aa7c4f9 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangMap.html 13a2e209743f8952a0c81870d7910de7412d1348ee807cb135a31ca50c5325dc 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.Hash.html c0586e2951e12a7e7424337a89e57766ba9d1c7ba90ffde90f632d0c268b7b47 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.html 6954a10a1714d756cd21539926a5cb3cf942fcdac4370d548ea2e87e80f50a02 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPid.html a11035a44bf6dfe5e45fb4914add1ed7f75e4f847d43f63af1da8b17b87ed5a7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPort.html d268b1417201a93a2ecf2ec7cb9d130927ee66a5d69bc8a0da0f692ed2589b8d 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRangeException.html 49c32ba10b8fc437afdfb14a3b6c060fc2578f4876276cbd5763419da10c67b7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRef.html 28ce695894da4be182bfce619838aad8923c314a46e5171613df782f04b59646 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangShort.html 2b495677081e6f6114acade93d645dbc5059a7c433e4ae2c7ab0a451fe38425b 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangString.html 9eff591eabf35aea49ba1296998412094cd179fdd27e11553003e8c9c72e7f45 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangTuple.html 61e70e2330986d8fbe123691b0dedeb3e7ddb506b2d8f84444be3954168b9199 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUInt.html b2e50220c1ae1b5f31ace18fe2c3222ef2e5ad100972a645d87312bac64f1d5a 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUShort.html 06ff31c5701b89b6335716044527d0fdfd90cc594fa3364b478f0fbdcbf927e8 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpException.html 6bc1d663cbf2eb0f5455587ef7baddca9ddfb07d2758d699e61f6b749d27d848 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpExternal.html faf78e73e4bc2e2b849fd80c66f61f6168765fdded9283bd69269bf70a3ab53e 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpGenericTransportFactory.html 07e0ca3e73e55b8d9b0471339b08f099dfc30aab48f24411e8033b2f45ecab67 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpInputStream.html 62682ecbb1365888be6880021d3ca0687de3d7da57406fec336408ddad750742 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpLocalNode.html 76044fa14d6683ce5098042b4c3bebf3c0effe3e4c488dec0c2a22c8afe3559f 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMbox.html 2f02a9fed76eec5312e626f9242e848620332ad1188b1f3183be2a5214fed4b3 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMsg.html f04f5f5a3a5943adddb878b30f1ae83fb6cf8d2419a51ccb7ce2d07bae6b8680 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Acceptor.html 187ab43ac8dbace3f4c96dc5a35696a186e26497975b6a484f0628f1570babe3 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Mailboxes.html 24de27d34bf493705225d83d49d8eb281aee546a1b09fab62cfbc187747d1267 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.html 77d847d7d32709c9e4f04febf5d04a3566a94327d0ab32a02a2dd4f9822b60c2 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNodeStatus.html 29067e69a5fd0d95289c599d21ed19171cdf18bfc15dc36137b5a50d9275ae28 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpOutputStream.html 2d0eb53ac6d164ef601377bf2c69df012c83a64159f04690f49787849ece59b2 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpPeer.html 9775327b4e0b48e574dbce47b611011a2902c1b7688a18f2c63baa6c02e447ca 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSelf.html e8a1c6e34366f72c9ec8184aae68330c557ce68776ac1b64a32bd237907e820f 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServer.html b30977fbcef54b846d9187b0049eca43efad8b2a2f9fb9fa9297e49e176f704b 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerSocketTransport.html 92a25deea5e9e7fa221b091b52707f8fabb772354a3ad067ff403e74499ab46f 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerTransport.html b1de56c582454ba47785c6df40a2c58c69dac72e05119dcf1d29e65b673a559d 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransport.html bb6f6a5a2dee5ef9a53b2b2c8437907ca313e22613f03b4095b5af3740671581 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransportFactory.html 8875ee78d11c200fbaa7cdad01e85a3f9a4c563492274f9be879e86fc86efdab 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransport.html 0b6c11be921e875db51b5176cc5b5b08f03370421eb68970434fff3e029154a2 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransportFactory.html 39b9aded1fe7371fc28856f8e2fe5c4747dba9fd850dba72d8ba183fff6655d1 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-summary.html 1f92bdbcf4c5cef1cdd569d17ffd8951a2e4c5bee082c0900cd02fe5fe7cf3df 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-tree.html 2011ff549c00d62d31dce3eeefefacb15f033908dc3ba14986f93281bb4a9e95 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/constant-values.html 1a84c875cf17e374e6ec804dc2110cfc981194484625b2f6cfa5ee4e52df030a 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/deprecated-list.html 7fb5798e290e2151d2e95e98cd7828122d20e997f8810974b76d39735691dd5a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractConnection.html 4589103278bbc61f6684ffcfa4725bcce127866e1c27a884f9ac99b015ed3054 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractNode.html 33e9d993a90fe9e12a0556e740148ef7891edd4b5224bd67f4a03d18c39c6b59 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/GenericQueue.html 91c06d0b247b6b662ab4817f27929f8c22250a08b97035e56ec4db60cbd32f6b 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpAuthException.html 798f25ccfb3c1a963691c007f8ba74e132383f207271e757a734bdbdba0047de 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpConnection.html c944568900c684ce4dc5fc67b5a325f0bf947d41e22b5daec17b56121ea6d68a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpCookedConnection.html e75720bdb2ce5002132e6afb882c46c5d2cbb4d34a7ba12d8fb955db92966ede 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpEpmd.html 31ce7cd9884ae1eb8f1fa8d7bb393cb00a78cf1ff97307f9386e9535c42eb8a9 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangAtom.html e274d260f1aa876d2e8a4505c58b7f42f43d68e7fbdfea1edf4539c02af2608c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBinary.html 9f8c8642fc390b41914dc24b85290d0f92e6012b5547957ff5766d32aa6fa9aa 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBitstr.html fb8ec9c48669314ec0a22c21141a022b1f15f863342966ea5e91d72bde929a18 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBoolean.html 11e36f1d1aa37a182201a1cfa9248085da985123a181f0ed687ec4de66e50e81 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangByte.html 0b5c63dc537f01caaeb39a77c28ff9c2131e09ed829f9da66534674246b47381 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangChar.html 8d169762173cdf84fcf6a5d569509054e3e352ffc5335d58cafebfdf41528e8a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDecodeException.html 4380de9fbef4b003f65f59d781893fb596b03549c97a65a541a0490c02d44ce1 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDouble.html 52d4828124fd43dbd37453a74ce6842712842a64327de4c29b49a1ed74d710e8 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangException.html 97afb5c3c555555156277a3a51017aa6452cbe0c9a8b1df6cfc28249c362df0c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExit.html f654a4ffa64cef565c81a522f6f0a65ede6fba049833fd15b1e7aeab70f666a4 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExternalFun.html d1343e927be778481817720e0b6a74c0e7c656732749f13ab9308ee2e4235b55 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFloat.html a8c16c6d8382953a6c712d93642e320f3b2af2f399ce426d9fdbedb7b0131367 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFun.html b763803ccbfb012f6e5ce9b3892d170f30b39fbf2ce0a2abbdef28f548c5f3c2 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangInt.html 4b9a7893cfd342cd10e6dba358d0b35ad3c77448e49fdec4e03ceaa2998b2627 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.SubList.html 01715226ba8ac49f494fcabd9cf61e39f554ec169990b91dd36155f97c52ed80 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.html 1497ab33b0c76ad79463030beb55498324cc9f263f047c0ea6ad241039f05195 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangLong.html c47d1b0044391ce4b0be7ddc38a6dab202288fa8d42fef412e7c0f502c7224a5 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangMap.html c661c61ee437366667eeb5637ab19df916a2df19d0240133d0d2e8dfe21b20eb 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.Hash.html 8b53ae7308cb79030e0b1d6d652e2b7f7b19927db951d7b94224645313fb3288 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.html 4c15e784a801a08acfcad09c63868c0e740d6d1d671af5c3c5ba6c47a98bf35c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPid.html 4d066c06b25a481ea2f10b6626c1f902dab9662788c68a88517e10a8ed30c4c3 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPort.html c448c6222d4af93bab82c9b38b24ee09ad7f0940cbaf05d21331de32fe75894a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRangeException.html 9f9355809eea17950d4f6f8b4a45049c416f70fd5ba3a17a8f56e755493a7a3a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRef.html cb32fa1ac2a84b5b5c9fe36d28f2fe56f5bf4749c98d53c43e30a6b9ad019541 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangShort.html a5b5157e683eb3fe9da040b79952b5cae75d2ebb137184e542fe77ded9b0274f 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangString.html 0b7b4816a55aeff796db5e384d2cd088bd6d03fe3e8e500d9af27868fddfda20 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangTuple.html 6b77ccb241efc631157ba6e9531738cd8eea932e9b3480c25e816362e2fc90de 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUInt.html 1798d1027929acb090cddb061fbf98d4490301b5da6c1bf6be4d451603496983 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUShort.html 249743673e5681581334edbf8c234877f2cc82883046d6aa7c4f356b357abe6a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpException.html 5994de3a0dd4ef49de8086cded00d2d8b0b768e950b9715379529be2a6ba646c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpExternal.html f37cf11e41680001376848bdf5b91a007fd7d0f3c5047c247237aded0d22669a 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpGenericTransportFactory.html 35e5cd709bc462a6471db66470ecf4d25b1c349a901c8474a2847100db812a3e 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpInputStream.html 7e403e4211bb205ac5840db0996e837f5a82a20d8e9f3e77cbbe8e374b401c3b 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpLocalNode.html 67d57bb635606029f25b4265a19198af26829fff82fb5356a2f0824904102091 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMbox.html bc541c17ada5d0d96acd1513cd09438ed0e2b50c107dacf254e5e2e0430e68c3 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMsg.html f96b445f1d8abd816ac786324a906b65578f7a1121704c8b3e228869f9a3109f 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Acceptor.html 4875f47bef4694cdb639e9a9bdab37a835dd7e18c4bd184f920edecb44f4f3e9 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Mailboxes.html 98864515aa7212f990a050aff72813406adaaedb4f683df7c8662ee8a12ccfbd 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.html 414a63bbfa03b042bc3bc9b06f2aa5bd577d80b213cbeae67b2daad18357ae68 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNodeStatus.html 379fafbb7248a5cf330cd31e28f04772846f6d857a659ea24d20088b4f136183 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpOutputStream.html 943153069bcc9b7ec331aa38255188b438ea9de896cadd06b5bc47d7d6919572 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpPeer.html e38859da3242fef356177dd2e67e85f50b7432cdc42b8c19278fca8999a86ab2 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSelf.html 48dc3da21ef6301ce2eb5998e2e72da5170d0d3a4b7248df785b506c96442c6c 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServer.html 7b818766cf5194c2fd478f5ec58e215adc4334b146e2e098567777c2e90e1431 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerSocketTransport.html 1b45839f231d0f74176916b13c4999f711f61bd5e38de2b4b7241310d17693d2 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerTransport.html be4b311200c8c5c1acb419e9f65477df2a343697c0a1484a09506bc7a1500fbf 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransport.html ddbc3830f260dc0c74810fe98647ceb04880aeff8aefadc3df0654d3f964ecbb 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransportFactory.html afa2cf8b3b03e345670d6381a8caffa684728cac48499384296700cd937479f3 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransport.html 0250c592fd815d702bfdf4cb0f9b8b1b097d1ed35ffc2c4072bba3ebd42c8e3b 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransportFactory.html ab8bb5bd302380fa1fe3d081a74be9fa156e749e3e75553d03b34aee8519444e 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-summary.html e3772a437e52535139ec0c2fbd43b114d6e75b4f0acbdf4d36b0290dea33ad11 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-tree.html a9941ec720a24b9e6f88d2c19578bcdb41c659529d6a7f85e0dce482fbcbfdf0 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/constant-values.html ed834b1012db5626cbc19592c1fbb1c537bc7ea20f82cad79cd79bb59106ac7d 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/deprecated-list.html 5fec90fc4aa5676cafe53bc7703852e5f20d3fb828f99375b03cb00f945b544f 2 @@ -3304,3 +3304,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/help-doc.html 427d71fe2fda0e0a16960fa006aa1c8f1df932fa1af2b2d7acd2dd792b7b2de9 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index-all.html ff43a6f57e8394836a76bffa4197e13048a94dcbed1a72cc641a2b5bf2378408 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index.html bc6848d330dd013fb66220bda21e6f161280d7008946b7ea15157d0e1c2a8ca2 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/help-doc.html 4273ed36bebb474947257e860bd2a3d7571bde487382301ef2752acae016d330 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index-all.html 17c99e0d45c29b5ba3eac115ebdc2c836cf5a609096922d7b1af73d5b57dd116 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/index.html 33439635a53c435da156cd2333c7dce01e1e2da8f3b433d72e819395e9e27872 2 @@ -3316 +3316 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/overview-tree.html 0dd12003ce5a474f99566ebba81a8e30d5d1de11d8fdad43e391702e4d5c288d 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/overview-tree.html 2e432faf97aa0e5b7ddda785aa7823f12a0dbfc1af1f9cabe54a4705f74aadeb 2 @@ -3359,2 +3359,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/search.html 5b66e73c7cd2f72bf215372be47594a46aef07630560006c7fda3aa09cf40c1b 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/serialized-form.html e2464b2e97a26766b24acbd489df2e30f24233531097b572ec75752bb60d3c3d 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/search.html f6d5b6a3b9957fe81a5b1b0e5ef306aee95bd60cb9b6a8f495a1d97e363e9bd3 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/assets/java/serialized-form.html 7a7f7363fc6efc4a0c04cb60c593d77ceb895ff74fec22268bc92d6c34df80be 2 @@ -3385,3 +3385,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/jinterface_users_guide.html 8afba6b13c9261afab02ae3e19e6ab11cb50db01d83b429ccd2167c6bf058af7 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/notes.html 7ec33d8681d15f24abf909abdcda0c5adda1c7703701bd8a486433a8e0fd78f5 2 -/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/search.html 627b918144a440667ec597870f74df7ca3b6b2c89841b38501731a7c9d5cd0b8 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/jinterface_users_guide.html 4c6cca952568482556ff5a0686e6cbc7387856436084b1c365ab626fc661633b 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/notes.html bcb21c0704d0faea262815d31e2a2ca18a0c5d7fb5561a519d10590fcc04853b 2 +/usr/share/doc/packages/erlang27-doc/lib/jinterface-1.14.1/doc/html/search.html 3ffde8526fd750bcf457398295b992d9d6bbcab704390788ea6dd91fd684cf93 2 @@ -3391,4 +3391,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/404.html f9dc2ae79f3bf0e4b0833518ac0a06abead9ee32af7e02a427cbc3086995fc88 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/api-reference.html 1df0d60fb050a84c8c7ea701d876f6585c9436aefd60a2f708b64d2bbdd872d4 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/app.html af26d90cf855a2c6f01e609163a8ece5b8f467481e37d6ca33fc08c09493ecf8 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/application.html 49eb65f833ed094623b73a434d0bd5819d85f19215d289646d7782e042c8a3b4 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/404.html 6252b760ddbcec59eecad4a7544d4c276069b82aadcc2101e1b21617cfc627c9 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/api-reference.html ad309db7fe7d5e001d35e87446adbe1d5b4442b7d327cf8a5824fa51d0a64ea3 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/app.html 9874b2529dd1bfd6ec8104adffca607e2e4d77280f5bf0d6c5b773165417824b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/application.html 46ba897037a76e0d15a3b4851e559fa63a8c4f1ef601fda7e72be2596374d316 2 @@ -3397,4 +3397,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/auth.html b5536e981210295665c36f15e65153add101d292e996f86631ed59c9d185eef6 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/code.html 9f294d5bf08b525cc5c85d3ebaf895c09cbf24d030152fa6ee8d7cb7d9ad8916 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/config.html d943b37fd832be9898298098d819a309d86f41ec984ab4e44ba301e4ddde2259 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/disk_log.html fff74343a2faa03f40e13161bb36f922b9f05bcc0905c97c9adf222832e61f44 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/auth.html 6467d97a18d70f5d0595bd914e0bca9deab36c66ad5995fbb1c5081d49f283f2 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/code.html 686962a534bf530e2f13ba2aa8a702b1ae7a32bd803c99ac451bbde0b76e6a4b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/config.html a7802d9ad44ced904c31fd578f059b71db2a9324718420b7224307f93353de8c 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/disk_log.html c798f4e754ba87d1bf53c95754e27ce57f9705d250368779848fc18080b2be9f 2 @@ -3421,14 +3421,14 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/eep48_chapter.html a776ab3a05215d3e20d5540f266c62cf0782e7dc0f4f7a29d0a527ad240c8adf 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_boot_server.html 4b88632946214707fcb231c55a0bf0e9477e00e9090f3ec196e27ac0dff7d764 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_ddll.html 1c7aae3fb36a222fd00340c58e26e32e53a3bd114e116382add347745ee2f051 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_epmd.html 111bf35bde4cab5e402aa4ac2e20c68b474bc09b0af9f4719b5ac48178b8684f 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erpc.html 5274362fe413ebdea61cc6e52d79bc6f2172133d1c37da9439f04c9bb25ab482 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_handler.html a45a06bcde59648c4243f0e0577c4ebace75b3337efc38fe48c5bf40f1081645 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_logger.html 873e795098b8f348b6cab2c5b8a8e6bdf8f2f7c37f9a0a47f5bd8a33d67450f2 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/file.html 2b9252bb45b183d7c9e5a8a84b45727317070c9a9f21b2427a37d0b7447c34db 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_sctp.html c4f31d10a7b11a0fd4bfbc76e35e719f4d9972ab61e592c80b3996abb143729b 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_tcp.html 69e438007163ab4296b5314e39f6c22d39e59249a90ea9c6f7babbd9367f184f 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_udp.html 1097f43f3ef9afd40409b92d09f4350b1840e107173794288e06d76be6bde3bc 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global.html 83482a5ead1785acae4d55367ae715fae4f43243c0f7fd46e02d5a29497696c3 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global_group.html ec0253d57ea1bf9221549ba493c9cfef278c1b67f19a26c028fb6a318abaca4a 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/heart.html 11bc5e51fff37ca3598b286401086a389ebece27252d101c099890a9f0cabc5a 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/eep48_chapter.html 57c38695863f31129e489b9666b06b7b2a30501f48a942cbea11bd1d39c313f1 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_boot_server.html 8dce477551dc188afbd9e421a6f6ecaff63c98beba330189c077729ee363b3b2 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_ddll.html 789b53763852a619c6f7b23632ea16109e35080cf526ec44b5ed10b449eecdd4 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erl_epmd.html 9758167ce4798aa046fbebc8e7f0a428d189277bb808ef11c9ae01750530db81 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/erpc.html 8d141b151c2d045384cc22b42cf614d6a1f27a2990802230bb72189816bdbd81 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_handler.html c105826f452c579cf21cd73b85f622265d59481fb02ed508292dcb33a2859602 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/error_logger.html 8c7aba86071e812acf27c1740ed68437ad45afa47d7211dfaeadb3b19f9c363b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/file.html db35abdc599adc64a49fa29ffed932e299e98641bf6cce8ad0190800774acd66 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_sctp.html d37f4e817aa96295784d2da3d0154fb5bc6dfce230e16a8ecad3735a9615ccbc 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_tcp.html 2462117a076f2acbe8db4c5c17c461116a21018848ad3d6c187f970779e522a0 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/gen_udp.html a170f4cf0946bce765bbc6fa9cf9149e8a50a650e92e543a1c560d7d059c386a 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global.html 48779f68502a70de4db8ec110b022a77995e0e6394bb328372c87ac1706d59d9 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/global_group.html 5e7adbb43c69f61339843a3f65f26e82d0ea228a6b4d9ab9dbb90996edb9c596 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/heart.html 991bb4fd6d545375430e61e6c3de4c2ad3e4c235e5ed3b5df74926b77cace9e8 2 @@ -3436,26 +3436,26 @@ -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet.html b67a2c6832bea7a71c5d694c914568d7eee2e7e5f3083cd3621881c82c9151cc 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet_res.html b3751796a92fc94e663c23b579f52bd8cc6071e1dd46bdcb20f8d28848f3232b 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/introduction_chapter.html c4d68e018903b1d3b0efecfe135b8a103a31e366da8b6167e5afb70998a6e64b 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel.epub 5cd5d55054d5fb01d09848cb9950723b2fafa5b799c87679d23bd7d11fc9b78d 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel_app.html 61c1e65dd49848bd9dae695b1cdb8e2878dd2e45c6a4437d4b51ca12dcc10c12 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger.html 8c060f01d38897c45533d3eaa5bdba084e1b14a628a05e20a397eb2c8b96d865 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_chapter.html a2f882ef4895f6f5cd57df57ab046e3d3c391b8dc25b23078bffcf43f3ef60bb 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_cookbook.html 119ed0d39df62267d02fbdd42914340004ee2b733f20302a7e5bb2d2d68e2569 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_disk_log_h.html b0da6642ed861f6316934137d77bef1bcd4f6006b838bfb53a80a02ac2d69fbe 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_filters.html 467a1687ea9fcb90d3f87fe53b9e4cdc4c1fdfddf74582453acc60d0deaa4a41 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_formatter.html 1459994a9e7f9fef9b4824a2d435963c69dd5518c550186350f05b155f7e7833 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_handler.html 63d05ff05a4e778369ff8d70b9b207129bdcc79de08dda6d7227033a82335f4f 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_std_h.html 988eb2bdc5f6b9a920575e29514334c800cbecdb2aa8c17c789d90a31459e47f 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net.html 2725d5c9f9bca3f230906fa2c5a174492a03f7c93d1826c0e207d84d78f51629 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_adm.html d1ae943f0d5dbe16f14aac3095f7551d74fd552a4595dd95d887a794f5f7de2d 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_kernel.html 82eb94e5a8042ca4bacef4561901e6dffcad2bcfa002834fe1278b66ce65486a 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/notes.html ad5e26077ec9e889f117d5263e80fee4bb23f9765cc9895b12de4ecc898e0422 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/os.html b7848debd82de01b624a9dac1e0e647d57063815f6fdecc81c753fc3fe6ba879 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/pg.html 8c16ae3ad2a1ca3b0d75d7723dcfa9718468bae97483f1850de7c07df448b0b4 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/rpc.html 15d2405633eeba516b77e11e811a984b31c52954bc330735f0637c0fea2751a1 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/search.html 9e49642c347c1b86fc3fd31f616ab73436a032e713ca097d0bdc99a20df6b9c1 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/seq_trace.html b02b62ff1b0e1969be647e863171380cf870975c84dfff42ba6ec68b5a207acb 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket.html 01012bd4e13ca0e7a6c5dda18d2d1ba3b02337760080fd5f137a9b871c2e473c 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket_usage.html c1da6048484983d9ae373ab022979cae5c574ff8874ff6a09b3f0a7bee1230ef 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/trace.html dc09f506f1a2441aab213183c8e72eee6f6075c06bbe57c7403a82763b0a6e0d 2 -/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/wrap_log_reader.html 7b4a1cbe255e6ad40de2ab313c51625951ec33b9dd6ad631f7e3b3b5c8e23192 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet.html 2941834bbd6a2d526b73911df87f76f94a6d592088f55fe8920616a5ebe1bfeb 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/inet_res.html cf038982a7074d36194d84e8b73de868b964715e482114f33d3c4af01faa6970 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/introduction_chapter.html 7c5aae9e1f8c6dd890c5a4296c315dee77f9f4be265c9c0ae63e7e87c29a1736 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel.epub 688d815fe9739eebfb32fbffffcc9ae04e41a9b007e73357a4fea51131974374 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/kernel_app.html 8a4710250a156787bb0786bb5b763a10a6e0c7a66158dd194afc74a23f232304 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger.html 278595a13777092d0f8224ba3115397fcc394b6cc4cbf66ccfe0bc0eb982aac0 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_chapter.html 821776394fb40a7e655a82adcbc3e74eea7d5d09cc165d36acd309821dac943a 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_cookbook.html eaca81c4dfd803673e931b28c88cc19f3188b40db22e7b77fec904bb8fedcf0e 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_disk_log_h.html d1749cdc5aadf2112e8be86980313d0431d509d0b2d3c0b92de7411f8f436b83 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_filters.html 50ee7fe1dc1bd58f20388e1aae783be6526acb2fe8dcd6dcb8eeb89837ffe80b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_formatter.html f39c7ae09fde3c1ccb7c7d8fe0deff292dd7b4e2a239d8442f863815fe5acf4e 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_handler.html 2e6b334d2b94bd90f282e0e1140aa08e02697b24fae71cf8c88ead1d21898631 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/logger_std_h.html faf53bda51c0766a94007c0973e2bfc69fc833665540096cad619716818ab5f9 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net.html fa11b675a2238924ecebe3e299500764904c9ed3e6ea6cc398ae63f7275e8259 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_adm.html e60d47bb99525f88d644ca04088807bcbddd3b0cf00d2f013e5cfc659d4dbd81 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/net_kernel.html 959d84897c084c631808f59c5633720954dea634c4208799c741a82c1c7ac424 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/notes.html cb535c5e631fa5a159d7f990387d26bf095b14bc98f2c4dddcf4b19cac5959fd 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/os.html d43215f11e329130888bc2d5d5daa9143b3c3724a1cc5ece2202eab7538f4f66 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/pg.html 28f4e16a694e5af2793c6d7586e543ae545fb5132f2cf7d3416a0858ebd3735c 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/rpc.html f52f38730d4b64b17bbe5f95631144ed433b4b284c492ea5318877bf0b007217 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/search.html c899f1df71fbcf545853a149a24a266fcf9a3cd146ab24f0d07ddd8061954b73 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/seq_trace.html 2461155b0bd97e7617d7273627bc75f93897b6e0c89c7b2abd8b14935720a027 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket.html 6b07dd2feda17596d0fd9b06bb3a3267e3c519015ff38fe3eb475c49bd64225b 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/socket_usage.html 19a5a6d316cc7d30bc96efda2508fd74f4942c28ca60ccf9b44108ab4c88f6ed 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/trace.html 03a23da149d4b50b9bb959ccc0c08dc8be6cd16edd8d5feb1307c8483b4c51cf 2 +/usr/share/doc/packages/erlang27-doc/lib/kernel-10.1.2/doc/html/wrap_log_reader.html 39d948397e00cc23e5bdc0896b68f91b64c840874c37223c1d523c703e88cf7f 2 @@ -3465,2 +3465,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/404.html f6ca03a504f9c88cab2a6f6246b58eef0c60165e69861904784f8b1911482321 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/api-reference.html b1a9afce3974ded6b1494992326f38ca508a5b99b23fedabd4980185173c01a0 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/404.html e02f8d4f26c73286760fb75b4003095f5fb91197dcdfd893e55581cff6619ff3 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/api-reference.html 3b3e984b5540c366015b8b8e3d5fcc5439d2e586822c017750770972e17bc7f1 2 @@ -3495 +3495 @@ -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/dist/search_data-492AF504.js 8ce64bb8b7cb3f58758d49f28e0adfb9d5c80fd2b47cbc56adc3719668db5211 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/dist/search_data-2DB78EC4.js 7b15b2a8221134c47d5da6aaf4a6e94ed97259821686beb526406e9035f26274 2 @@ -3498,26 +3498,26 @@ -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.epub 15a515fd4f26329efd136e9af11bd788ea4386ab2a4eb7b3e751278b1a6681fd 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.html 81b77bdd9e2036b67262ab67d80394d36b2782cdb06b6edfc7ef60687acb1652 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_architecture.html ccc3fbdbe5bfa2ffae92cd6a1a24101caa22e7e0c2467343deaf6ffaa31a0af7 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_meas.html 3c25ed863f38ba9e93f0655a4094509382c690cc88d0a99e49f6e8c2e14ae69c 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone1.html b0326266a45c8c2d4a1fce093a5c6579a7bd8102039efabbca831f96753d63cd 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone2.html 615f286a93a402717898274268387c0bb71da4d92fb43bf5e2e5bd1925688458 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_transform.html f6391c0d0f08c5f615aa4e5154ed878baf178f57e64de01e085d9cd356301094 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_debug.html 4a7b3c24d5d06ff66d1f4d6e303169c49d11232abffd0dacb6e1b72d5816dcfd 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_digit_map.html 9a3eb56fbd95db3aa00a68281dfe18967737b150635e9328d361f42760be50ea 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_edist_compress.html fa95061d2464a440d5c9001b7da3324d9724b21e538b35e3aa88b6dff8c7a733 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encode.html b7e6b64a117ddde70029a32b19610d742e3fe0a05781e8c182521512e810b245 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encoder.html e32f42aa96dcbcdc33a2b0de68ec788df45160f834c93a714ce17f58378d40c1 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_examples.html b319d8f8db693a0a970c7125dd99172b28b8ec5e3e82b2af2183b1cbc3ff9f64 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_flex_scanner.html 62964b829ba895ba31bf7f5adf165f622eb359271bd62ec69f0221b9f8d1d4cc 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_intro.html 4d34ba5386ff512043a5c32758490abd997fd587b5da35f5e6edcd9b9c6aca5a 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_mib.html af5eca7c71c0168b2f696f91f049484b6588106e00688d0244ebd5b8be20ed67 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_performance.html 03e39cd612ec47656b8c4bc7e7760b92cff13a76bdf9876483e84ca760f6ea1b 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_run.html e97f93b28db9c53e4e57e507e156db332a4d1e27c3455fc57b4cf6de0f827b65 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_sdp.html 1986227f67818fb215b1981ca82f8c11d9df668c0c9565d9a51ac89a66171751 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_tcp.html 16f54daa84c05592abb251a058fe9ed31f03695a9b8654722d7fad4d318c24b3 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport.html 0d182dfcee4022c35b179fbfb5e482de46fb1910bac3f9d6b1ccd3d863e5765f 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport_mechanisms.html d82474632944c82fb8375aa3661e0f40acb8da129cb0cb87d04b19cbc78f487f 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_udp.html bed639c4abb3d885d0d7ea28a067c6f92734ab4646e53baf013233c929041c56 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_user.html 9c698cd98cea902268b6a20ba7d12b542befb9fb583b5aa5f158fd47022c50bd 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/notes.html e5b3fc77d67fc4b44154cdd3e044f646ada94d211569f0cf1e4d2bf42978685e 2 -/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/search.html cfa16c2b1abf82dc001db3927bef90a550877a611d7ccceb718f98ac8c63bec5 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.epub 84fdd14071670f10878c890c2382a3d356ee3f996039d70ec7f93bc59d85e9af 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.html 1bcdf41f068f57750cda409c32f639403bea8d2ddeb0e509fe3c3438d428c28d 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_architecture.html 8b9f724aa8913c8bf21b5c88077134ee3bb8fd6f89c224ea401363f047068475 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_meas.html 6a92ba4151a44f0c5dde9bd7a9dc3792afcd64936bb0783895f7de4e88f2c94c 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone1.html 97b1953a0014fee7ac59d56c1d0fac308940b4c03b0748016d715de61000945a 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_mstone2.html c3e0b7c26df73ebb79bd79287bab33e54b113b5da335c14ed5ba0a93f63a5bf1 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_codec_transform.html d41ca59faf9d5bd66322125cc91e8d981b5e60c4530912db5cd5c59ec28faaa6 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_debug.html 9e3c2fecdeb8b15c2a86020f796f434d75fb8d0422e566c9323af5832990b8d7 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_digit_map.html a8c0243d55087f841ae56be69be63587492bbb00e50d6539923419f49260c442 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_edist_compress.html 3acd90acdcdab6fa29bf60be8e18bf1359154b6eea1c271195e3089a25e90bc7 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encode.html 1579ea7373ae761499d6111a9ce759aa8b237656425cbd89eb94b5c696d45881 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_encoder.html eb7518146379655634dde511bdd5f6b9d496cbc1a52c56fae61e9b2ffe32cacf 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_examples.html 01c17ac1281a71e34438cb55c17538850ae359dace1aadb6c5e424cab7182d95 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_flex_scanner.html 774b74f80112b26adbdf72848f3d7cf2dde04365ed1c02b37d79b6e5ef23cd2e 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_intro.html 372532bf38f882d6f54666cf0b8ff0be03a7530caf096d27f5fa44a3bd5c9c9e 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_mib.html a107d9c8d76c2d142e9fa5a1aec046dd840442b1fda8c7c48688a75750150b96 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_performance.html 439f6ba251621e21575deaa807e991768b8769e1499be2dd84701db83c54e04b 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_run.html 6abbcf4bb0cee3345cca3471d111862fb81ac49d3e726f74e3e2961670c56111 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_sdp.html cc0cd558dbf730cea08a9b319f11a0e0c010572ecd03758180f65666e2bd97e6 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_tcp.html 40241c0217830245e13509083bf4acafd1fd819b2b2ffa1e5426a50330237a55 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport.html fb471c2e4ce2a69b0d174c52c29c0f5638fa382a2692a3cbf8dff2684d3c74a7 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_transport_mechanisms.html 11ea81c6dac23dbb203b0eb8b6dbc383f26b469f11b774199cd249ef7bb9be08 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_udp.html 30d9029dbf8080b31d1e4f8a75737769ab939913583aae39b8342c53dc84d979 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco_user.html b0f115d221bf9b1a251e796f1517d89fc21755caa94c1e25422bba462513b10e 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/notes.html b881e4a82f3df7ad4bf81fa48db7d95b671214d7dcaf4c746816f8273f91066b 2 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/search.html 4843831797edcbc47bfd01ccf8255e3a483bd04f6067b2604aba56196aa8df4e 2 @@ -3527,2 +3527,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/404.html dee5e8f9cf897ce1b8aacd2c3411c5c18b1d38cda32059c33a09237baa7a1a6e 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/api-reference.html 97e008ef3fd774844e7030963f63676a0a07ba780783751e63cf56fdc11a5281 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/404.html 246a13386b886f097e0c3a6a1ce2fc4d9256310a6f7226f2ee94c8425b902796 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/api-reference.html 12445a1762c4ab9c133921333b412746694c565298ff2acee29e1d9bb3525ab1 2 @@ -3552,17 +3552,17 @@ -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.epub df3b220cfbd04a1a246a5d915b435498b742dd009558ce2ecc27aa9a896d1ca7 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.html ff1fab6fb365edd10acfdc4307ab7c0c6e8b54c2527cc11d380f073b0158159f 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_a.html f6d9e80b147d852b78b7b4f66d3f5bf089e6928e14927da9e4dad7a88ca3a5ec 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_b.html c4e98ef8ab6ed2f4d091f87468261336fa4725b5c54c2930016469fa0425784e 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_c.html 2dd2a99eadfb494661425ee498e9723ef1576f160d5629e3a11a2871f7fcc198 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap1.html 2d1b3d5a44f83fa2965a8f1348cf26048fd6a4eaf8e794756b7efaa637f129b6 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap2.html 6b9cc7bde5caa8f533da66904036529cf1ac5889773c75fbfd79f9ded221d2f5 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap3.html fcaa8d697a392ec9de72fa9be8ec13ca6c70ff0b5b281ce26eb411b1415f43f5 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap4.html b06f7cb1463d6094f277d7feff7b667537c919362a7df02ec3cc10f0f18398b7 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap5.html 83fd0e4fb059ba0bcc31779d7c9f1d9852d6ceda98629dbca01982efc971ea0f 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap7.html 79c77db443fb73deb2ba524fec9ed367bed8be93a41c1d477b7679febdf7bb40 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap8.html d56216f372112750bd1232f9f1843cfa671cc3ce21472bbf7fc9cbe73255b2af 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_frag_hash.html bff69361eef81858c0869faa5a66586c77cf0891d42a54adf26fd3aadebe71a6 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_overview.html 9244999fdb519c54063a3e735ca0c5b44f64d6bbcbcdefe801a73590b5cedba7 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_registry.html 2a6e37d1285d29f626ec68d07977e681d32d7a0aa76f1b061d12a996389604c9 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/notes.html d3b1e032a0ec573c2e78da97f3ff67b1ac379b30d2e68fa56253a6bc0c1d176b 2 -/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/search.html 20ff8cc5bb5cfbedd52a08c8a593d27f6e742035ee4b4a6e1bc7601b27eb18bb 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.epub 8d8398c36b6dd3df3e26288490e52bfc9f626738520a5534de1aad59f7466661 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia.html e6f54c9372e71d7b800015d09f5999c5021c3bf8b21f604f6dd630fdecf6cd6a 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_a.html 123bff51f3c90f9fbf8cc45fec5aa3ffb124763cc618bd5227c1a76953a5824f 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_b.html 050feed66ab5b3ce48e273e1eb128a75a13a6418d43de0ee24fa8d450ee41ca2 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_app_c.html 8ac642321949b5b465c90c78bc3543d25a8fdefc2bf8ccfec7554c9597a4abfc 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap1.html 138c4a5874e91d5171c8ffa31783e9b917a38b8b00c248bc73a0e52113b9340c 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap2.html 61a40b89c51f1dba1d6d3d35c65a90680d8a0d35dc44b41c5b3f9dd89171b122 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap3.html 323ff1aa1e4b746af61a5b96ab5d3c54782a272588fbe679eb87fce544b7470f 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap4.html 95ed0ff64688dccb592f3ca4eacecea594950c068f0a7af1425b63c323a7db29 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap5.html e2d61c55a0982d76cb7359b0b8049f19cbcee49b0a605aff721a9c48526920ec 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap7.html b50f7192caf3b92672ffadcc580551b499baaeee6b910da8c46237dd7844754e 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_chap8.html acacff25d6a8c5dfa4969b4e9fbd9ec1185eaddd3ebc7b9b226fb3b19f47c486 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_frag_hash.html b5345f39d1939c0253801d1e10627e3005990d74931c4a745bf9084fc519ce83 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_overview.html 09d99512c3ffd5c91a0f4c39090cca78fcb5d05c3ff843a59006be52950be5a0 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/mnesia_registry.html c8cb189490ca11110e7a0e101991ac9bc36f96c162c7d0e6482dddd2f31f0c52 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/notes.html 468945fcc5779e2e43e13a6e44da5069178ae6e7f814882ffe3a7ea6a94a38e4 2 +/usr/share/doc/packages/erlang27-doc/lib/mnesia-4.23.2/doc/html/search.html 7afadb8dda22f58eb2ba3dd27e17c6006771042dc5f3cd0d93fa6fd92adb4cf4 2 @@ -3572,2 +3572,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/404.html 3b0d545fafae111b3540e285261e75b751e8b53bb946a68df154949a4689a3b7 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/api-reference.html 4d2a76a2e66cc62884be489fee4adb05f078be211d216d93f2ef7b4029b50e77 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/404.html 390ab3dd83329e5659c15430247bdb8264c17496b89f1a1357293d3b3833857a 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/api-reference.html bb69033a83dfcd5d88455974a93573eabaa36a7be2f26025cd834d99fad13e2b 2 @@ -3578,3 +3578,3 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/cdv_cmd.html 7e4dd467799dd394c635b77f71236fc4e82eefb63152fd39ae18f3f73a6f9999 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_ug.html 723ef1faa7e06440e0a8f2450c741c25412bab70b54ddd55209d283e4c1d95d2 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_viewer.html 4095c9a0eb274a512f634c405612a2eee1d5bb054b7f64f06a696d32c6fa4547 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/cdv_cmd.html f62dafdbdfc9a51177f352a218734147d11fa544a9aa5a1d13e32ea10ad47faf 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_ug.html b0c52d520f12cc69ed6d533ebdfe8065a04520e24391961c94fb7ed92fc97d91 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/crashdump_viewer.html d3a30aaebba1d922187d60cb43f91baad2a3a72221c259fa87b1795a82316357 2 @@ -3601,2 +3601,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop.html bc85a6ef2e48b3ab07e5d1f0dfc89b8955a78afba42c79710d31164aaf1eda3d 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop_ug.html c28f7a3875bce3e85ec64eb2ca4499ed87347f23bee2935d43f35ff1dff19e79 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop.html a9ef00d12b23ee21b7ff9e92b318c7b7b890d1f45d1fd7326fbaa904edb5d332 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/etop_ug.html f01bf19ebb5557de58ac79bfb696e576c1a9514dee65f108371ba2dda9241ba1 2 @@ -3604,9 +3604,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/introduction_ug.html c45b95cf13351d1ef2139debea20f3f02c81f9da718dba002fefd0065137b5f1 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/notes.html 4d2a36fcd5809b5e51019c95bc1f0bc71fd7c61d2563445495431daa5179cc8f 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.epub 9dbb7205e8d111d977725f6cdb4b6bcb54270be98972b6ba8cb897322f9f3f6d 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.html 30e696ce6fe83f5c9dca3ca650e5d021a2c612b75eb66c3bc305923f2aedab59 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_app.html 6e591ed8f5a1b52b37959cf1af6ddc1285cf462f5402b61142a2defe4bdda31a 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_ug.html a814aed2e6da667f350ace33b24e4f78769d9907bea281e4ec79e26e182fdc5a 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/search.html f674af264488f80c080be7116a3e31249261a3bb6c794fdadbb1cd2eb8dd12a1 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb.html a5164c34d57e66b5115074c9140ffc4a8be1b64eb534a816a76cb835b8f5da28 2 -/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb_ug.html 3df48a03aa5354d760bc94db44509df9f2dd62468eadfb1819c37098a55c40c9 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/introduction_ug.html 06682732ddaa58678d12689fc4471fd9b61570e36b7e7bf529f61849f5fe77b8 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/notes.html a2dac79b164de89e92e584be03da24fd90eb10c73d1516d6c2f2f5a5bd6ebbe5 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.epub 914a5bc3efc104255911e61bbafb2fb9007bed689ca95c975752287c7fe21e4b 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer.html a96f7cb854c279020e0bc8b392f850febc6b214b342c80f968e9c40c66f3b539 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_app.html d1d74b8d7f89c978e48cac104a82faf45233979dd8ade571c690423470483036 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/observer_ug.html e3b6b2923d9096187bd1093583a737649e63f750e5df79e77e050fbe41c2848e 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/search.html 413f485535b478c647c187c1f0f0f84886ec57f7d88d69d68718e6e199be3d36 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb.html 002216d924b7558dd5c4d715ab2b74903a578f3228c93c9a78eeaade7640c33e 2 +/usr/share/doc/packages/erlang27-doc/lib/observer-2.16/doc/html/ttb_ug.html 934341b9a209c4cdcad3931c38db477e04247464164737f2ef2797916cbf878a 2 @@ -3616,2 +3616,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/404.html 7c9012c6a430a42816f391500ec11c070935fd39bd270643065ded09f0f2142f 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/api-reference.html 2c87bd314c52d597f0605ad961b4c5ccac90d508a283b88eada2e736ab9a12d5 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/404.html 4a941c0c3c8ceb71affa9b367363556aa9f6937a658498b0da650969c45290a1 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/api-reference.html 5aa16c9f038ba764128cfc6bd190abf300bcfe124b0d9822c5199e9362bd98a5 2 @@ -3621 +3621 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/databases.html f4ef351779572a39a9d2d3c9d29ed2b227871acc7eabf80cc4bc8cd5884d3710 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/databases.html 04b3d813dcbdfac6836fdbe4b6670d7b46826d1e4733f4f92f4938a5e8210d98 2 @@ -3642,2 +3642,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/error_handling.html 5d6b3c979a564fb6609b4777f0f0beb0a408cc73111d8296d99f41da7a18af70 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/getting_started.html 8a04fa608b5b4baa39fd608a9935917b81e05c3bf9d9f5f25f2ddd1334d106e0 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/error_handling.html 11932f5441850691be6314179cb7bc89c069f3771b5537c327ff73d6d3d9d673 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/getting_started.html f4270c7cd4de6d3c4533021843915dc386931126a2cadadf7915d5e9c117fc18 2 @@ -3645,5 +3645,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/introduction.html 43fa911bd80a3c13ec499800fb4188781e53d147f33b0edd990995c00b29c82b 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/notes.html 9cd14e01ec977a4ebabd9dfaa2e7ed81a3a3cdc45879e2aaf2d3a604447e8328 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.epub 0cb7427c78bf6e95e0ca1d4ebaa343b98cf04119232caf7955c1d4d83c674fc4 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.html e7a4f99ab195fc43b08964f5a594ccffcf224afbc546215688aaa0150f7e0e87 2 -/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/search.html 8313da8017b67701ec2e3ce62b5f6933a6ab0dc1ecd582b5b79515f30e8aaee9 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/introduction.html af8b5cf9f959e7996aea8bda3e23b4bec993319a50c64fa7b6e72d023c0bfc48 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/notes.html 76ea458656b019baeaed5d98e02a7fac3959de0d2d0c0cff63a6fa0884c4295a 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.epub 9500f1034be53af0d9eb0fe12ab4d4f5c7161964f8da103ab48ca4a829f75e7a 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/odbc.html 5b4db9771b218bdc11adace7147d349c2040edbde33a52977d01f515b108a535 2 +/usr/share/doc/packages/erlang27-doc/lib/odbc-2.15/doc/html/search.html fd63c22035c7a222e4b106bc86dc14b321edaa8019c4c273e11986c693d344b0 2 @@ -3653,2 +3653,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/404.html 198ae8d14d14b13c7c5a1a5a035a7489ee87056c2074510a96473c03884a0580 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/api-reference.html 100a2e7fc40ffb4f71e6addc417f89ac78effe853769aba34a46e00ede2b1ca1 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/404.html 8e3259cc774d8fb6bb1c719db39b9de6e62f4fe0cfbffb3a5edcded2d17c2f62 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/api-reference.html ccf509d6abff5770295ee578f33f61f4951173a2892ce71b1b6fe7d426558b15 2 @@ -3657,2 +3657,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/cpu_sup.html 4c9b6ac502d15da3fca4f93d2bb4d20968ea603eb20c8b62c12062eb40d398a4 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/disksup.html 08cc6cf1310072a44030bf3f7c3e5b29e1685ebac503e91a5be88558dc4a5e4b 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/cpu_sup.html 2c4a0b2e743577b301abb771211a3399fb23525a8d309ed5d62ded8b4c581373 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/disksup.html 84a4c453c74dd362209f42e4dfd9ec2a613007e1e6dd21838ea4d103994321b4 2 @@ -3680,7 +3680,7 @@ -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/memsup.html bb9dfe07215d36d90abee54b16942df011ccc2cf7be240b55adb68be3bde65d4 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/notes.html c78dfb727ec090b553f9c33d84f295daa6350f672ea8a2d7c0de09bb8340a78f 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/nteventlog.html 0e22bc9e514210a447b20c5e1719885a6422cee60eea454093c844fbfd512f58 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon.epub 77172212210778faa33bc683fdee32f24416b1f16f2ac156f882a0c20dd1c7ef 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon_app.html 53cc6a2c461683360e41ae8995ca08e2fd162a449b2cc29c4fbac64daa1e859d 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_sup.html 83312d0b81ee26b300d63af33ad77ffead43b0e5893344fbd6243f7d8c22ab82 2 -/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/search.html ca6002ae5694916bc530f45220b40072b2b1e734796ee748d8a9cec0909c1484 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/memsup.html b2e1bd0441c03f3834665f9fbe8b78c1ffd5d65bed72455241e1febec851ba8b 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/notes.html e4fcb7c5108e311e7c365394adcb1c5ab84c75f4c550ec97e2885a00662a7371 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/nteventlog.html 26858285f752ce43146d6f2b775351b0f9f533a654cfa9b24fa39b1f7c9243b6 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon.epub 003219e4696a09f93dcda661797403734c94cb48eacfb82c052fce819360d2f4 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_mon_app.html 319e707a27d264ce246dd3e688ffa56b1b98c0691604227e35e7736b17f0c793 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/os_sup.html 3663bce3689c5e10c64b86ec63e231229583448e90a7a177edf59924e89e7942 2 +/usr/share/doc/packages/erlang27-doc/lib/os_mon-2.10/doc/html/search.html 590919c162687767bdbb5f16a2405a3ada0f5e0b8b09256d4c46d5f99683053c 2 @@ -3690,2 +3690,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/404.html e8990e760abb9a3f4b2496bea8b3e3838e6a724154fb9b25dfd27554822d5046 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/api-reference.html 70531e23f7ba5a77b466e66d159836bd5d9b6b8bb802196d3dc059c34673f886 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/404.html 51bae02f23f204d5b6362f8595f53c7d78fa368b09199131b02603c221947eff 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/api-reference.html a79a65f8674b765e73575f8d0a3b1fce5ee67d40ba0d6f0967f826a355ccf4a2 2 @@ -3715,5 +3715,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/leex.html 257177f3189dbdeb22f6cbf82bb4d959a975bbd8912c8c1f314b122bb540f601 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/notes.html a72bf0cebc85c55839d93f7bf7e778e88d5d7ba0cae92b0e45bdcc5fd4d96393 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/parsetools.epub 0808a88fefefb8f7c72e1d6082922eb4c3f4fe06028620f239cb85d54fc5a27f 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/search.html abbfcea45d8cd035f08bdcd86fb6a18de828b709636b79b1c4856554597cd5d6 2 -/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/yecc.html 4c7dee248f535268f25129fd295080a4c0cc80521a6b53616d93b81c5717582e 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/leex.html 8f01c104c5aefc835290365d7bd3fa647be94a3ccf634296da6ac90143222961 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/notes.html 36b99b57994923d5b90ccfe4eceef700529b59861ab3a0fcc38668fa72184cc6 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/parsetools.epub c6c1f09f3dde7b4e5eab6d5e8eab4d17c7f842386f1124e839d0ce2b5c8f7037 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/search.html 10ab7ce5daad9ded72b12e82d4cf73be7483a8cfe1978e52daf774624c60ad65 2 +/usr/share/doc/packages/erlang27-doc/lib/parsetools-2.6/doc/html/yecc.html c03fe2f13fbc4c48fc75459e5bf8652260472562751b2d95098e0251eb1b61d0 2 @@ -3723,2 +3723,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/404.html d59a5701d8f20085a9a5d8d31fe416daf679378eaf915987e4318f9caefb52a0 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/api-reference.html 0429444450e0cb95abfda6fefe4743337e674f90d2c59e681df9736fc7c8e9bb 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/404.html 8f2655279398fde37254ecc2c2633593b58fceaf6ed69648ed3dd2ac2497f94b 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/api-reference.html 2cb889e3b2eb1aa613ba0130436cd264b23b3a83efeed72f816291c57a3c680e 2 @@ -3748,7 +3748,7 @@ -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/notes.html 569b4f6827adbbca7594a5ab7e5026bba097256468872989194b683673661a66 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.epub f95c6c1924a66dc17d6b0afefb97caa5bda8a6b96dc895732d7fcbdacafce6b0 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.html fa92a1dbab44649df4e7b88b579a3b3c387e7be667b57a4f158650b031f81034 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_app.html 1da90b0a25337dc1bd4b092be894ea183d974bf9ee3dc3254f2a4f434613f403 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_records.html be932ee77d4c289fa4129bf698c3ff70347eb2c19b6e5a757a63376696ff14d9 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/search.html 0665e9da921e014321b7b46a89c9389c05107d83c471382e681843315de2359a 2 -/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/using_public_key.html 7a39667ad3d5652aa26749aee23de173ed25c0ce7f922ba7a2cb2a7e7695efb9 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/notes.html f94cdbca5b93a64ee6695d4fed3dfac3dca45dbe86153aca8c37e1c178fe5a1b 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.epub 9ccfe493142662cc5a5035666188701f231fc7d1f47e2075f6736ebb84324332 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key.html 68df6f64ceb7d0519cceb054c6673d1f8af2acc57ec6839f428144e3b396f5f0 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_app.html 4c9f78a04152add13d4c5a30c410e3676371b96a2cdac7f31b526556a3e1e157 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/public_key_records.html 668f650d448803ade0fd49917ae354de5876c2c7688ace69c8ae7131baeb48a3 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/search.html aebc358e267674a58462db1ec18f5b41101f5c5ff2d32e1b2659ba18bd65f535 2 +/usr/share/doc/packages/erlang27-doc/lib/public_key-1.16.4/doc/html/using_public_key.html 2d4c1a5eff585c57665d33d33401ef06c3bebe2269e64fac5c417b318e364782 2 @@ -3758,2 +3758,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/404.html f025d7cdb6895a3416917e5bf9cc9b46a2ede3231adc913a26f5fe4de1fe69e5 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/api-reference.html 8e404f761a2ea6885d0250016f0e8dc2a31ec431795406377aa5783a8a7a0d29 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/404.html 91e17738a039f84498592d4ec25d0371c8897d20c143aac5b7f943bc9b184736 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/api-reference.html c7c26335e8fe979d929bdaf4d6040b983d44e39b6d78a213ba6bbd3c6aa6913e 2 @@ -3783,7 +3783,7 @@ -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/notes.html 30b62fba25dda1c87bdcfd2088068c52a787bacc2e275455cf92c6f603024463 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.epub 20a50a09c23082261ec70b1ff6de65dfa77806addb1708fcebefbf3b4da5fe3d 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.html 2a3232fde89971504bc5b03a6b8ab54dc26c4edd1575d39bc290650d374f3cec 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_examples.html 26ac9bfc97c4217b8b2c7e7e86c86d56e7317fac0ef67de7ae85b575ca4cf300 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_intro.html b27e37535ee64a841dfe3d48e08f2e4f0f8f9e35203877411e4353f0a9f0b7a2 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_usage.html 31ee63877fdabdddece55d0f61bf23eaa547173afd46c95a147da0b1e9bbd2aa 2 -/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/search.html fd22bacf39cd3630cd8947866652f3d647ded297921d4641f21e089643e41116 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/notes.html 6e10d552cc27f53666b09a921a44eb787ac0bd08e5f280bfeffa83c0e0697522 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.epub 989c69ae061d5df984019fd6ba022e671954d58510bfdca4c45d30ea1b126ee3 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool.html 827532f20b963e6ff66e0ae7bb7edd1eaefcdf5f036050b5f7a56f9639030ae9 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_examples.html 66f050d3822ac469308a0098061ee0c94fe688f31ce4482e749f3d590ae7114a 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_intro.html cdeaa7a01a28bf3690aa064eddd03c4658b2335796a0505e0993e637f3d2cc6e 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/reltool_usage.html a6e278e1ce063231e3e8fd5b86bf06a7bef4f326e6e97820304286af9b9d147d 2 +/usr/share/doc/packages/erlang27-doc/lib/reltool-1.0.1/doc/html/search.html 9fa79c2dcb44c7ebdf13ce2b8b5bc2865acbbfd73d7e016335eb208c5bf8cc2e 2 @@ -3793,2 +3793,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/404.html 24350d717fa2e03074c98223cc087dfcc77619bca5debce28976d4d19c873df1 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/api-reference.html 88d486c5e2e6584691f4cc047d3c3ac33ca8a2cd9d9b244846a2020903bce731 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/404.html f2ca4a02da00c25c2e38051522696deb907f3d93258a65721d37fe74245cf636 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/api-reference.html 4cde3eee3a7587c73ca2c84ec2f339d0fb3c1b328976ccb1427cb9ed51087457 2 @@ -3797 +3797 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dbg.html 1036b6e8695f155bd2180786b226068f4c45ce054f19e7f1a09c5c82ea03d443 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dbg.html 380c12f5b91a8f46cdfecfabf46eda384b3455b94faf4f6829f56b99d8b99b68 2 @@ -3818,2 +3818,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dtrace.html 85feccf629c05fbe7ed745e89c46d9be38f03a0459d27b5c6e539473c2869959 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dyntrace.html 9fe461679535bdf87fd110a9f22978308aa251705d7b4da965d67077728b014d 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dtrace.html 55c5cf0d1506509e3ba7e05f5fe23892795c972e2d1e4c9fe6bd5a273f9d4d07 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/dyntrace.html 60e991c7d7973aab3fdb4d46cf92def7394346f23b885cd641b9067f60bd3035 2 @@ -3821,10 +3821,10 @@ -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/instrument.html 088ab7aa95f2e369acf9f49074c03f25cfb41eba0f8555aaa344d464d0b5a368 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/lttng.html c6058ff9ffee3149ab4df25843523026d9b9e9933117c2512e5452470dad19f4 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/msacc.html 344d6c77bcba379059854bb64a238d264197a48dcde6df3d9c3b1f0c2442d1a3 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/notes.html 4cc33fbcd6c516facb473972c1e375ad9cc890756ba44ff695b7cdcb95a1b231 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools.epub 1282ac5dcce6519303c8252e9e57d2abb832a5db61ad6c8ed54fa72c83a797c6 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools_app.html 0d7e1753277b56cb1b6da62a9c55c196fe6c408ea55da31ee6342b731e362645 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/scheduler.html 6e1db9cfe38838adb71382427326f9a2d687eac489618834c1c2c2065cc076de 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/search.html 6d84b65535e740a4ac63dc3d567609bcf09f56345632e87b974ca4244da048c4 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/system_information.html 06f54d0c307ed7aeab44b7b0bb93e0ddaed524c11beaa68e4f1d3308e5a0342b 2 -/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/systemtap.html 592818067fdd09b58bf952fc9d564f6114a7d0be7893d8748973f856cdeab7f0 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/instrument.html 6ae0cb95de9d608b2954b25e420361934ee86c39b7f534448c9f4b4397dd2011 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/lttng.html d6f688cb6f45ac02334de0baaa701b9b9e502d96f01dde55aa11c6404a381754 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/msacc.html cd9f718c31c8610c1010036d4f696144e303e6fae2c6afac81e24be17893ef2a 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/notes.html e88f8759613b92cc7d0d908f986006b307d996d95a1f421b367ad4e50910a049 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools.epub 90d516852e990c0009e497eee746f27339ddf3816351f2a31a75a7784cd40486 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/runtime_tools_app.html e96bb9ad0ed52f5d1fc95b6351a01b5886d9e5c3011cdae1281f77406c160ec6 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/scheduler.html 4c77df96334219327a43e9ec7bc2fe1344dc90724cc0879c39ef847ff73ea191 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/search.html bcf8636814e713686d6f6b1563cd26006fe868a3ea34dcab8a6fea1e522a9a65 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/system_information.html fb3c5aafa8cbf6eb12e6c0f2ebc1b55e493825b77d36730cc8b211034076395f 2 +/usr/share/doc/packages/erlang27-doc/lib/runtime_tools-2.1.1/doc/html/systemtap.html 6e09a99bcbf2af4e93265c4543fad964e7d1fcabff5916fbc76ad6f600f199c6 2 @@ -3834,4 +3834,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/404.html 739604664d484cd9d75882fe8904944c8f2e84be0988b86b0af8c2ff8657697d 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/alarm_handler.html dbcc5e586a4a1832b3f3ad6bfb134e7f83704aa3c2b03707a8fefd14ca47eaa0 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/api-reference.html b1d5d08669d2c86da9a7fef1fee9bb4786c171da85a5b76654316163545a1e93 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/appup.html 8680c3e8e21f143443ab84ca8d716a4f0b2f80247de39ef8177a8bb0e440526e 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/404.html c7c766e68a75f584e99bf96342e65a55aed20dfefddd8497f77f7963fd289438 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/alarm_handler.html 87af3cc1fad386a25be64b47d4e7029e855ba21a6bf3084478dbfc943705afd9 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/api-reference.html 6f9f7f2b55ce77189f6c40806d1918c8cd3237d45106736d080bb464f2c82c70 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/appup.html 5151e3b5f5a51a74945c62970144dc1661f191f74dd6a41756e16fa51460114b 2 @@ -3860 +3860 @@ -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/error_logging.html c5e9f274e225872e31967e927be7d4552b5ba5d4534cd620685ce645ecbe8140 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/error_logging.html dada2be93c4553ea1802d76efeb7986256ec7943d310b720aa23694fbf6fe347 2 @@ -3862,11 +3862,11 @@ -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/notes.html 37f7fd75c70748ce91ca03a827d52c6403af20f47b04b9413f036e3160782bc9 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rb.html ea9b8b150e27142f446e3c8161eb5516c5b5956be3282cd8e4402a414565edd3 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rel.html 9903ecc279e3ad242d9b406b7b26aab3d7c36f451594ae1912a24886a66f4b13 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/release_handler.html e298f1a2c7a9bb6def608b99766c5a843e38e55bc0ea4aa2476b769f1cb80402 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/relup.html 6700f735c7312b97ba05149a68252ef334a3e14480e3aa173b33101dfd2e8378 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl.epub 9eccd9fc12504046c7ca2d893ff4d9ad8f5fb4f8510d096ccd688f901d530c7e 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_app.html 3e8dab909dea4258248ee93c6fe63cd063e608e9aef61bdd8f1c41d01d7813d2 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_intro.html 127c61da435cc5372f5f2c01da84ed414778b0581c2582daa5f8b27d7d1ff4da 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/script.html e17278042e9ee0816b0ec5e2a59de94da76e7b907fd1d50cc2f9d031610c1f72 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/search.html f308dd46ba24f6d2baa968e692549122efb4cc9561b9cf521a37e4510262f798 2 -/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/systools.html 6f6d32681e06dd04ae9fe9e874ca846820f179fed508390b022d2a8e575cd9e0 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/notes.html 589425cdef20c810d4914adc57737d0af8775df5b3dbbbcd6c3e5efecfa4bdc8 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rb.html c98ee79fed40944710607b44a968725a587d6bbc5e43ee05234b5b1678686484 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/rel.html 1a9bb7be3973ca0174c351fcef75eb3dfcca90c263f442e599f271c5a59518b4 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/release_handler.html 3dbe23580a5ff8e81cca9b960e038a62c57e8e8dc709773aca831e7dc2c43085 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/relup.html 0ed541483b1cb0a8d5e27b9a5848211451733b77740f3af52426a020a7adef8c 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl.epub b72934312d1619ddb7952533f4fbff6a7e6a44cacdc63713f3dd5414ae056f64 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_app.html b0b2b06259e85a3c23cb88d752a1a3ba6026bea1da985b3afe8151406a3f5a29 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/sasl_intro.html 74e84e5948a66cdea147ece4f5ea48d9bd9d40ef932d21a42073bb94079074df 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/script.html 2a843bb199c66caaea76364fe415ab11d00b2b157ebe2bcad58658a98ee8f962 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/search.html 97fda721dde6106b0c53a88fa9fd68cbe12cd7c0662310137db127e8634e937f 2 +/usr/share/doc/packages/erlang27-doc/lib/sasl-4.2.2/doc/html/systools.html 971ff58d3108a22da06e3adf44a8e598802c25a5d4c893b6a6e4fc91393801d3 2 @@ -3876,2 +3876,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/404.html 6e7f4b464c84899d78e43fbb541b1eca03022f643c265ab70ec1742937dc06e7 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/api-reference.html 1ceed2732da93d5fd4fb6888e10785a854950eeef315bb646d4930c9fd412d75 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/404.html 50f2fdbcf331261f139dbbad701ed3adc107e89c364b4b3d2047238855206c4f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/api-reference.html 79d08174ac11f22a709346e09bbc73a16454cabde7abe75b862619fa935dfbf8 2 @@ -3911,57 +3911,57 @@ -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/notes.html 9c3700fa9dd151f5ea467ff3a954a8095633264eae059d37e1422e1e4218ef18 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/search.html c074db83511990f3db21fa9681db28d89ea3f84c3b5d0d7ed4be15df2ce01a75 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.epub 3b59713cced272dfffe277f77dcf7dac13b0f26337eecb9ff90c96071b9c264d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.html 13c4ec581f2d9e89f191f8197d61f448924296f0b99260978f2454c14a857b5d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_advanced_agent.html 9e00f809b759ec86e4e7ec75611b075330bdabe08c26bee74bce9936fd2ad0fd 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_config_files.html ef78f5c1d49957be93df4405fa6971258505e547ff9f439b85b4a0cfd8eddbdd 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_funct_descr.html f88ab903e98fb2247d575ee19aa06e77ad49c77baa8a9b1991ef0ec68802d19d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_netif.html 440fc6f75266f365bbd59056d1152f3db78e912b262ea1599b2296f3dcabac83 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app.html de3873621be610258924a3ceaa21b75c0bb21a137a9f7872db7178f8d5abc62d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_a.html 5c6d277f1fef92d577bf328a4db440d9872f9d18371edbc88e22f14106d0f9e1 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_b.html 9e8ff3f0f1b6b9389f176dbecb9275d386b9dab9382c10650225e7792cba8ea0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_c.html f40d9d69127c5055acad2a233b6219eb46d9a18c85a6d0547777796d88f3a9e0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_audit_trail_log.html 06619d2ca85defcb927ede196dbb62f209c430bdd288e1eb99618ff4c12ec123 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_community_mib.html e00e91e0e6926917be963a8b8b0f83593762b1468914aa84f22ea31245a98d05 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_config.html c259ead2cf2c3f42099f86537ab797b971633ab1a3079334467cf60dac3af39d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_def_instr_functions.html 1ea4e281f6cde813e08ba417a5dad809bd93cd87fb853ef286f7635354430e4e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_framework_mib.html 981cd1425622f126fe877dadc801b4e2429dfa5379967f73ff183fa012d139fb 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_generic.html cf28a7eb53e450fb86a7bd7dc135525499b88d848086f8509415d20a034060f0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_agent.html 33ee751afa10647213a8be6dbcb5f562f03312398ea5c6fa34fc71083f6eb33e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_manager.html 1d8283c447052018a684849abafd7ca548c9667092724002afb1be28cfd435ba 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_index.html 194c3cb713529db7869f8077ad921a0d4c5af313917fd82e3e20be6e5b91de75 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_instr_functions.html a314a5c4ebd7d0595750e5d6e278937831064ccd3c600d91c3eaa0866a776a43 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_intro.html 7512f78f382807926af628aa2fb653020e066493a085744ab7d0b9de8de42f0b 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_config_files.html 4d9e623f2a2f17c8e694a7e2a640df9971554e3c26124d06596ead1113df4d08 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_funct_descr.html b5f41bdd75dd49b2efa91539fafd456dff00413a79dcd1bc602c4ec54a0a54a7 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_netif.html 36d4c10cf113c6467a1b40d45f879698cf9cd2df54874e671c99212ce06d6d65 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_mib_compiler.html a731378fe9c8adb2c17b82711678cd78aefe220b0836f373a2a3eaa85960ffcb 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_notification_mib.html b004f1a3213f7a6c3d7d157048e1ef46e2b12fca536f858b9a0b982ba0385c35 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_pdus.html 4e57ecc231fbe5badb21660ca3aeac22a360d2acd471f9efdffc460710ae4677 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_standard_mib.html e36a7a94367fc6b58379a7b9e5c80a21b45347cd0c65a62921a309e30978ba9e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_target_mib.html 6a14d38decf095fee868a35a07c08204cabfb4bcc39a1fff94c22b86fff6666d 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_user_based_sm_mib.html 1ca5ab795f5cd4c116fa57ad1d1d4177d4f15f3a1780d805a5bfb8dfba47f477 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_view_based_acm_mib.html 5a304e99c7115caeb2979f809fcabe1b0d6b23ec9980dcf61b5e5738f39ebd9b 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa.html 6e50b7642bf3da374360ca368de58aea40c02b09cf82f19f02984a8bd604c079 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_conf.html baf2198557feb2f93aa35f9006c0ab2ca08ac464fb2f55f016163f91bc195af6 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_discovery_handler.html 0559cd18c7a9f41fb8852378cae98277e0072a27a25eff2c8f7dcfff5bf45af6 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error.html ca2b3750afd10e9a8d514fefc3b91c02b07911c136134ed9acfbe040e2ce59b4 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_io.html 288f2ecdb92b834710bd90d30fbf1ddce1200b3f169ff19b810a55477acd80e8 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_logger.html 2347243fd978f3538fe29a5d242e431a410f25228074094c489a0052376df8aa 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_report.html 4908f27cf890d63be2252f8de3d1e77460b4971edb51d650c44b68d42721343b 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_local_db.html eb0ad93db5819429e601de8e6bb08302e99e9347771c294a1d81bb585e115f99 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_data.html f06d523ab0a863b06666fd80df1c18c33efaed01bb71253ca1dee744c34a06bc 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_storage.html dfa11771a7aaa9b591e705490a1214d7f47e8389b43bd65f10199868db5aedf8 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mpd.html 6e83edadc53225fce589e57b2d17b867817dc8830664ff65240a2e7f827a66eb 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface.html 31117fb2af7c0ad1ed897ed0e33456a776ec5422df63f11b50fa9253830008e1 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface_filter.html 44bcdf0fe0811de8df9eea69cb2a5b3476ccd55f96a4d8df23465cdd07407070 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_delivery_info_receiver.html 8cc3ce09656adcda86d2e21664cdc9c127c51d2a6d17883f084fcb5f6c12123e 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_filter.html 3d91a15a0f751a9d0392f7d35fe2fee737e0a3f12bea7f2028d0591d788a8bef 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_supervisor.html 47b2c1754761cb6ab00a1092b4a71e558319f6e0d60cdfdc2008c7ab57e325d4 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc.html 973fecc6cc65976ab36c8b090ffd1dac528555d7d7c854d4d377c63062e39fa0 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc_cmd.html 8c69d9a9dad3b634bfdeb3e56569f5531777929a86e65d3781e2dc7ecc65ee23 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm.html cd21099c24750e4e75c5ae1f23d7b051b0b1d9fb500e532dc0e90e2783ff7c0f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_conf.html 487baec5f437bf01d3231e9942493292ef71310c79f338ba31adb393f0571f16 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_mpd.html 9c68ec7318a770af403702626c01f12ad8a23d5b115ba46754573ab9d5aafcc4 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface.html 8b0a34cda106e699d9c18693f6931647f371f50754790ebc48fcb8a4a4a0ad96 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface_filter.html 3d43ead92123ccb3394a78e2a35c5a92f6407fb110125d23f37b60ce55d0215f 2 -/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_user.html 337cf67d82b9711d085d5c11faeaab4c0d089b75c58ad2f83b59d861f6c5ddd8 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/notes.html 55f67b703b068baf0e678df0bc86fabd38c4952c0eecf8ae170d2d22fe0d460b 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/search.html fcd44c684ac722ed2279f426757e809fea50686b4270c2f174c58a095b594f8d 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.epub f9aec629e72dba7efdb52242872316fa9c364b2cc49c783d95da2eaee722168e 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp.html 70bab9986c93484eb38f3d980a5c7df199c94101b3e3805d8824be876f93d9d7 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_advanced_agent.html 13c1ff1f0f65cda26ca59451d87f5c91a373c8b68899ff55858b3412118f6b17 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_config_files.html 117bcc90c0b16b08a4eb846fa998b139f1c7ba21d71ac551ab1fff03cabfbfcf 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_funct_descr.html 21ebab9978ff260e857e1222b10130ec127953e57af23153b3c5dc87faa361cc 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_agent_netif.html cd338e202fdd75440bdb15d42cbd50d2c1352bd3c7902fbadb2cb9927f4e73cf 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app.html 1863032b5adb5f0eac16bccda3b0ed04547d1d0a5938615b16fb8be333a7bb05 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_a.html 63776dc01489edc7b53f2f59df6ccd5d3b8d170cecd7dfae54d8a109b82c137d 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_b.html 6b5b9756ad8bf86cfc4db21d839de3e1fcd5beb2c85c9bf748f3ab4fc41bde7f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_app_c.html 34678a25f2a9164659808d85d753a19b443395fd03799492cd49f6404db77914 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_audit_trail_log.html 8fb0c7c58f20331491aa581fc984dd474f2d1e9cac7f7874de31e9592c96e3c3 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_community_mib.html 17070b0b6681a0314f30d97f96cc4302c809f245019706aa45528d110614015a 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_config.html 09b311e749fd4cf2e512112fb736b7e8dcdb92b217405fa67b47607f4d4a913a 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_def_instr_functions.html ecd3fff20efdcf26d9e645c695d235fe2ed1fd3292a611827c86875266466754 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_framework_mib.html b08b1eb292f8258ffd145871f75b7ceb5177c8ea99379b8c78442c19723e74c6 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_generic.html e3206ac506350e483604535dd567b08420a04e1e4541bfe993b713f041de4b40 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_agent.html 1e7855c690866d02f0c1eef90d0cb6e8631b79c3a3023a7616de0dafd405142b 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_impl_example_manager.html b493e8d61689a4027b876233ba014355d9eb17c3ae83f4254c6852678f08ce71 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_index.html a29727f3889d892f9318d2632e99d495824d3fb10ac80cbc238130afebde9506 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_instr_functions.html a0b980da3b03a02431df94a575aa83ee6da65d967e862bef924b4c461471ebbf 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_intro.html 29f01ee1f47e7514f526855d5800236b92d8bec3125c5caa17c5129e60f57a22 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_config_files.html 2d5a42f5b1daccd2249643653cb892a06550aa48addf1fdedf2e1dc5428578e0 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_funct_descr.html 8c10686ece33eaf2fb63dc14590acf99129c9d6eaa114adef433a1b0c461cfd6 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_manager_netif.html 379d83dbb95385b8b9b34e23883afd7a272a9fbb9212eb546bed8d788f0932d9 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_mib_compiler.html ecb7cf6143560fbb304420ef80954824525720d21cd84ad13138952de824ba5e 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_notification_mib.html f5723418e2edb42499886bbc8d2d9c267cb234a65751ae1aa85e6a0e0b520d0a 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_pdus.html 446cae730ca662c08555765dbaa03dcc4875d144aa11bd337e97c5392166bd1e 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_standard_mib.html 8feea3a2ca358f4f3e4d7803ba027faf8b627559bdc327a8c1ed89d4b36518b0 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_target_mib.html 38e092c56dee7821c86564700b3e9a29de23aa07c8dd597e73492665e6eeb321 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_user_based_sm_mib.html 6d564913318c90fa58fc24bd639627099ea9690501eb968985e07f2fee815636 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmp_view_based_acm_mib.html 4a0b09237986f2d481c2a1620ad2f4aae853c3ec84907c9a5804fc419f26b57e 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa.html 8e23f82a6f00018ba08d8dd9175454e54e388c98949f5e6106f0eeae047f74d1 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_conf.html 2909abc1f2f9f4d603cc47ce7f9855795ca2b77515c2ada9a8fd494a76f19014 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_discovery_handler.html 2c702c3231c8ab29a3706329f7bbf7d82864adf57759eb120ba9bf5d10d16fcd 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error.html ba28ef0415d0579c74d5b368a392b5177279d025151b67498bedede1f1ecf266 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_io.html 7b26467bf224bf78519c38e8e3995607f82178345922eded8dcd7cf6d90dc495 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_logger.html 40295a71ea82994e6690d463f3275615819c372f5ec2b9c9a9e1f01fa3455b0d 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_error_report.html 731e4e402d5039ca6bf027643a64867fb43b1737293674feed3acb5c68fe31ec 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_local_db.html 4caba55f63f88c6e092a9f171ebdc444e46c04b91a13c5356b0c5beb06ef6c5b 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_data.html 19943dbdb4dfb0eca15d93643e12e3652b01400d3e05f03e464d7a4eca754833 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mib_storage.html dcb2911a99a634edb9bb0ecf630c965c4b16216e2c5e8547e0f1bace42d418b4 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_mpd.html 59b0bf7032cfc5c2fce9d4e7f36a0e5eebeabab60784dcb9f925ca35d3b77608 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface.html a23e6dc45caa4e1f75c6f8fd00538bd32e0b0078cd9bf9c6ac89d6602a03c96f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_network_interface_filter.html e8219905216fd39a2e9360860ad2051a1d75ae7ca21d4bdcc5508eafc0c8ada5 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_delivery_info_receiver.html 1c78f6a5cf7605b4c3195fd3f620c005bb1271e2ba0b0cc9118f232bf03653e2 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_notification_filter.html 880e7b417994cdd9aefdc91977fe7b9815d4da1b4f4f4f26ac46b3c5bd92a353 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpa_supervisor.html 39f0045fd87a1f4de8cee89fb34c463fc169851b39b2b4dbfd027ecaf329da2f 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc.html f86251b0fbacd78f277239d5d2df6a14afd2fb2c8953be75a3bad3bb5bcc72a9 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpc_cmd.html 4608563c7b8fd3c9c95a8416c56513e1bf0f459ac9ccdb6f5b704c9dbb250812 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm.html dc90b741381f71f4514e5323fd73fb62896c14ac561f9616dab2f2f106f6f071 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_conf.html 2f2c334eeee7ead647c97d664200e6b4f85cc2feb9a297d82fec62048176e272 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_mpd.html e09787a284f6f47ce74c8a1a6f8e4226c74f175eab934b5cd52beddd6faf0231 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface.html fcbb767823907c0443334d1b35fcb6e1dac974b18475cf176a87af7050511260 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_network_interface_filter.html e30342d221959dff6eb03a69e9c8a281741a159d01a6f3772a51e42d01f65108 2 +/usr/share/doc/packages/erlang27-doc/lib/snmp-5.17/doc/html/snmpm_user.html c1de71d4aeb0a2a7e86a2d484da1e00d1228ee2904922386d70fa1831dd27779 2 @@ -3971,2 +3971,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/404.html fcbac5beff955191a0da602fb0e113639f8aa19199a914083356909638859bf2 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/api-reference.html 8263dc7045bf930f9dcf4b8882b19fc69b12cb9aa84a30831d092c7d4ca7616b 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/404.html afdd6cead2fced5cfeabccfe669087efafc2942f032a4611468f2330a37be11d 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/api-reference.html c3579fdb810994144cf1e322551e0166bd1a22005dba4478e8a9fa770863b848 2 @@ -3976,2 +3976,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configurations.html d28d7d4c75ce076a6b1dd6d97618409bb6bca7782cfa49db3684d1b499130dfe 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configure_algos.html 8e34e8ecc847a12d73b2eb12d8d160bee7e278f0e7d38e7d89caed5356391e46 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configurations.html 52b99be3f342810540d8a65db899536e7b1cc7648da0f5f7bc63f5bfab34685e 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/configure_algos.html 8983ce9bf3200d838073497b97f54fa02aa8d6556a866ae959c728dd032b949a 2 @@ -3998 +3998 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/hardening.html 3387cc6ab805c882bd3fd524fe9759547be5209b9c7d6049fc09602944a9ca10 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/hardening.html 9aff1d3361777ddcc0ca4746e0a3fe6519d5bd8955a9267294cc3698f3ca1e7a 2 @@ -4000,17 +4000,17 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/introduction.html 89d17bbcf854459cf353f54736de194274dfa519579086b1f018e5a11be190ef 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/notes.html 409e2235d9becc11697a40a33ed97bde28321a40e99607788d9795717680ae5a 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/search.html ff59cbd8ebffd472794e591235ff841484ce61a3b367c68aea6f3f65bc57a83e 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.epub f0e262c7ee2c26754e872272a9c1a3dfc92f6d7a97f0231807acf5e00c7e3810 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.html e947e54061434f58f32e9efb3363ee8542ff4333731b4ec665429e7ffc7e5d39 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_agent.html 0dc21803f4971d86d88bd621eee219c2a8c3495a1101f0b1377208614dccfa17 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_app.html bfd1685be2179e77fa2aefa8befd89394ca0d7358fd1ef533a6aa2589402f153 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_channel.html d12607defc2bf52e7cfa990119e51224a10ea0a1a0218809ed00fa47560ee637 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_key_api.html ca76cabb11275b271e4c2ca15d417514a57a9f43e303722333464545fd340aa0 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_connection.html d3048ead56975f5bb8d544aeb9ba33d93f473d3c514024844270103282f461e2 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_file.html 8f3f376aa9f3fee13492bc81e99bde16974cdbb606f5685b48b9ceb05ea4ec22 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_channel.html e40c4642479a5355a7f0272b3e94e4dc92649ac69f9b0373e2636416ae1f9f5c 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_key_api.html 10808b2cd3b9c0a93026614bb101e4d7fb8fd0a2814d4fd56e2f3538a65b5bdd 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftp.html a1df396b596b9a10edfb5f00a2611145c373e4891a1f1bb84022b7f78cd90241 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftpd.html aff1626fe024163294a00a54a74a92ba1ee602a69f4616ce606e368916ba5cff 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/terminology.html d1a8e06bbe9a8481503c64c508264e9f68e70616f288d0b882144501c0df2730 2 -/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/using_ssh.html 28cf0d84825dfba24ff9b699778b2116333e5f797324b3cebf444ffab97a2140 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/introduction.html 19c97320f9cf571f6aaae0c3c5e8aca05649eda2d63b8df019dda7d75433c93c 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/notes.html 4de825447a05f452be70c13cd53f6d81c5638e10d42df67d933258160ca9dd7a 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/search.html 2c4d0ac214976a2aed77c39137b4c5b5c3850dd3f3c2cdb1cea317365c6115ea 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.epub 3ffa4559deb622e0a77bf2ef42d35099aad511a9301d7fc5affd8d1291ab1d44 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh.html 66d8e8899d783e059483858269186f85bb69232d96e842f2adccbbff65e0f677 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_agent.html ea5fc14903bf15299d475cde4abb32292df089a280c98d17fe110f73953f44df 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_app.html e903882d47ab2c28c501c4d1c01d845a43b0c99a8cc82448e33ca62736c51458 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_channel.html 7f07511b79f320384bcffd003f745115d6a7ec434faedb7ba6b8a1e077ea9b75 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_client_key_api.html a1a58830030ad3828a538acefb3ac6725dde0d3a6d2b92ac48950e95bf9935fe 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_connection.html 1217c892a9a3a0fe17edccdfaee2a8932f5ead458f59037581e14631a176c7ab 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_file.html f48c08d62ab45616ce88da94e2e8b797ec708670bdf9241c3cda81cd1af6ee15 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_channel.html 447df258a49efa05bbefc98231e8225d5925b09d2e7daf3c133ce0e19f5912d8 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_server_key_api.html 5ae1faf25f05b5c68a916c50c8545dc03959d310c248901bb18ca74122d229af 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftp.html 7fa61f2ee2daf225152d14c342ed9f45389d42231943c2b7e0931276bded52b1 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/ssh_sftpd.html 6f3cb789c54c125513b0d14a4558a544c66b59033dadb62a49ced2c9984558c4 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/terminology.html f3eb204eb593b381f060d177890e5a9bf72d756dcc90acd3af7659e71fc3225b 2 +/usr/share/doc/packages/erlang27-doc/lib/ssh-5.2.4/doc/html/using_ssh.html ce325f700e068d606d010a734f7f04bec987b023e5557186f37cac985f1ce522 2 @@ -4020,2 +4020,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/404.html ec769ae4e7a1a5e694fc18562c0908b810c1f6cbd8186f23c4f550da75db710d 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/api-reference.html 70f59b319d991ee2475211ece8e124762acfcd8e76a8e2f3485aad3f5d02aaa2 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/404.html a515e1d735e24cdcbf9c36daaa750bb891df80b308bf70a181ff1c09b163f5f9 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/api-reference.html 29740b396bf42d6a576e066f3efefe9e1b23b358f422f4f9f7722eb518e622de 2 @@ -4045,12 +4045,12 @@ -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/notes.html f182bdb062837cfbae5dd92a7f329cde4ab534f4b560929cd0aa65456a4e42be 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/search.html 136866f1061a9145b8f0dd73becb50fad8ab82b25cbdac3a322b7618ca03cbf7 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.epub 8771a3e80a9771555a1217d6b4c0d6bb581a13eb26abe55d50557353da864e00 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.html f9ad28e27cf775fa6ad2dbc44236a3f7e5ea26dc74ffd87c125967dda457fa08 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_app.html 51807d9a8f164cebf2fcbbbdd3e43fb683db3262670a5dada1bd2992b2bd96a8 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache.html bc601ed43e76e7f53dcfd2e902af91e1febbfa812dc9cf3f945924ef996ba4eb 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache_api.html b5c1cdc23bf07b81ab6f57b3bb01c3df567d6392cd573a5358d966ed6eacc03d 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_distribution.html 51264d97e5085a90f115de5aba9bf754ef37749cff8c55e5662e6f493947ac26 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_protocol.html 82f68b99362aaccd93404a039b2b16216353d2578331fee8c2ad0975cdc0fb41 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_session_cache_api.html c202bedd5e1dfb9a4e03580cd05ced9ae1dae8cc3f1e65b52ca9a9cc0f123945 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/standards_compliance.html 55d852f62e19cfc74daea9813b6777770b5cc144c2a6ed95446b06f2f182bf4b 2 -/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/using_ssl.html 2f82c01e40c3de3095a495a7100a2743355e18e18e49f4f807f98928f8d78002 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/notes.html 3556bc971ae0181afc910432913926ec56d7cff17118bbd694ccb883cb9336df 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/search.html e4d8f7ad2889dceffe50386eb043e937d51312d1d850cfb107d87890d0dc4415 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.epub d72c5b5d9d73f19af49fc2380b03788a41abf7655e9727dc2663a3ecfe597011 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl.html a80099c0f2b13a1fd77ad482f96796d61c29b62b8acbc29de012662758b2de6c 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_app.html 649d83c73154d2403b6ac31ad82432cd6cd1bf0f5dfafee5ed95c290d6884904 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache.html fd7155663535ee0880bad188a619565050ab2fe50bd0b24832dc974d6fe05ace 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_crl_cache_api.html e1a92bb8a1f6ea03ac94e87ba65017e7240db1f74fd03a955e3dffc78058c53c 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_distribution.html de9a2d354db6641c6a10bfe014cea4d4a04f183c177485dc9b8c6c91326fd93f 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_protocol.html aaedce2bad50e8a8b186515ee40486f85e9c3221d15ec9f805b7e4ccb8a87db4 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/ssl_session_cache_api.html 32c34a445f7c0f2e0450c5dbc010c8aeab3e06d6775bcbf2f61991926d043adc 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/standards_compliance.html 231e4e9b8b2e79050512f968d3d857f1440f297e9e8917fea5e089ea5ce8c807 2 +/usr/share/doc/packages/erlang27-doc/lib/ssl-11.2.5/doc/html/using_ssl.html 3ff8cea9912e1c6ac594823a7c14b7d0663e4273b980fd55e7ce6f9a144917cc 2 @@ -4060,5 +4060,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/404.html 54e1bee480e5287b1dc5f833218c6669e352133b8ad4489150d20d9561aa34a2 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/api-reference.html 39b026de8816d5bca29dbbbb43d6e84fe02c014dc71337fa6115efd596fd1107 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/argparse.html f139bb7e0f6e7faa802934917d0c70d77b792d58a8c606ad9495ba807c343e7a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/array.html 82fbc202f240b8a26bd75cb55e96cbe5ef716ae6ad9988ee29b066964e21e961 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/assert_hrl.html c9ac10e38402ae863d14612eb81883d99dc9daff9ed2b639c6cdfa5fcd48c6db 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/404.html 5899c8ae291febfa899aa9ee0d87a61946d49ad1aea43051248af4478ce0d2a7 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/api-reference.html e99e307e29199d44e67a1b7ca25caf7ceb08971dd0857f3b56539ac227ecb889 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/argparse.html cc457c345e411303261c38d0359fc2fd134af113c96671b749ad0facb5e22e3d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/array.html 35617af88bfa8fa0e0f325b55e43f0aefb57254a3bf758c99ee76c273d4ad1a0 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/assert_hrl.html ef5fe35d1b774b243955176872195498b1db3f2f51e39f6cc9defb57395e42e7 2 @@ -4067,9 +4067,9 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/base64.html c953133002b1575c205b12b7a1f77c09d3ef0f4fe853729524311a27692d2d37 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/beam_lib.html aa9d79ffb2a572a2a6607d2fe0ec9650faa8af71e48c97d052376ecb2edfc01f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/binary.html 585aee32a808f5c4733cd54c6d224f5d9d69c1a2f19a9e9d1c3d52ea6dcf4804 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/c.html 92d21d032fbe294eb28ba926d27cb7cbbbeb94cbf94685dac899733a22e81a98 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/calendar.html fe29c9e616e15c85fe1156b52bd3c6eb4857d3dea2d590b48be15e415f7a987e 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dets.html 886e1a4c37970e266a5ff9547351c20bbefe91eb1a2676fb327ee875358b7992 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dict.html 27abb8db5e5cd5ff60d81c8024a584ab81363a4b55d9d4cbfac8340fd495cc7a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph.html 94b2aa6625b7c08e2b207720b217d06ba21321f79dfe7734b9f7e908dba3977a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph_utils.html 6e96e97c9181222895b7d4d3fcfc3dedb5d2e3b20d6e01f6c491fa9602a098dd 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/base64.html c1b2842bfa328dccfe3e71fe492182d885f2187f3f49d16178cd64c9511ec761 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/beam_lib.html 17b24b8dbf0e7a2a60037a4226ec266dff5bbe79b7518714e588074f09f955ca 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/binary.html 99e2373f7b9ff94904f494fbae3be400f9843dacfb76c475f6272d9a96105e48 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/c.html 2310afc39c5ef99399712edfaf4f80bf073b20460b7c046b026ea06ab073c5ee 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/calendar.html 22b83afc4a48b03286fa89b64cccd7cab102549699d1fb1c9052431f94db5deb 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dets.html 7af48e35e178f7c14a8f32be3d4a2334d1fd105cd2ad5277ac6e8e706e4c99a6 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/dict.html ab546dbbd05e266fce14408d9f2edd867602bb781474835ade418c1feed56924 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph.html 49e878fe5845368d707e9fa0e895766ebe83d752fbbb6460d450a3404f7d7af9 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/digraph_utils.html e298ba8303b0e7a940ae9105628f5077f23671c4715ad9b7585d165e3c092f39 2 @@ -4096,26 +4096,26 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin.html 84a6bcda3ffd5ff5eba5fd01fb964b5a9c589c1bb8957b63cf20ac738dd66957 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin_expand.html 72d06f9d8281b1d56c0ac29e242814dcfe35cd706be2385acb8ea653ae8d7681 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/epp.html 40b5d3c1a62ab2f95344df985452cc68473d68a15380f8b50fa3a5fdd1f9e60e 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_anno.html 8e0d27dce36427c506bc073767742a9c2603a97d996bba0becbc309f25f536af 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_error.html af8909769cb5527b80255ef44a7cbe2dfcf503f200ae3d068f289b536974352b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_eval.html 2ea975e732f7ea295ae1a76be2ef55012cfd5bef4fc5409cb31ae08cb5c19ee6 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_expand_records.html 32d794c5062193443aac5fc4ce7005924afcaeabc04569cbff35e29114b046f9 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_features.html 83dd8bcfe652af0e67dffef12228671ffb66de0ffa412ae726bfef28220ddc78 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_id_trans.html a490883d0f1c07a8100eb1969991f7ab3606491b14a5f92cef27f82301d343be 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_internal.html cd87bacf54af496955fbeca4887748538c0307572e22be1269e5abbda28d5292 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_lint.html b7b8c196e778f86b6bdf1027c5b0169ec4b7a477a26ef71b11f0365c77e31ee6 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_parse.html dd3949eb48a780e5a9990178f478f4c16d3df1b42caad160bd652732f6d2e780 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_pp.html 761d143a7b06ed2f43931e5cf22a780c6bf7a935c877279cd39f945ebde41456 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_scan.html 30bbdc9170b6247b6e684359861e7a2d0ed759e40a248f7ac0cc8972ed7b2870 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_tar.html b4984521376bb3283b4270ae9b86e8d76ef9b23057a70fead098b5133c861ba4 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/escript.html 838c1782fb60a8a7747265224705af78cc6bb8ebac3bf94a0ad02a827078efe6 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ets.html cceb66946eb52c78cfea2a9d5a523d67f5d839ef3b8cf06351a8a72d480ec93d 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/file_sorter.html 8dcb909a1785cadba8f1fc24320ba52e7006a6204de4da853fdad74c041dbda4 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filelib.html e29ebaf91a86591c31602d4f50d9e17941a646d30270ae2ce8ed99f0953be051 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filename.html e20d1f3ec77b39d5fe37fd3e0b5de29a55d33aa3ee7a86e17e8afe991ac86ab3 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_sets.html b83e0e121a8e083abc088dd2a03be036679685bd9f47585e3cb3a49ec6f44b3f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_trees.html 288545de41c159b97fa63c8578803ee57e1e64a1bbba471793b324869097b205 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_event.html c3a676a9861fbef76a79d2052316d95be278d49fd0bb6d20332680fb2dd07090 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_fsm.html eb2cf5c88230804e203b137e69f9a10851da53e1b66c949315f7c5487281a614 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_server.html cafe3e42e51f3f0e36a5f9cda6e949e78e054096f4320833ddbf04c72643b685 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_statem.html 5b17f02dd6fbca01635ef228b7ad780ba93409b7254a16642cf5ee280520876a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin.html 7cfbfce258afd1d488cabc7e62716c46b8de20fc24362b466345d2780ccd617f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/edlin_expand.html 929e2492a5c067ff687439deee55878db483cd09c54af5c2dda620d32b4b4e35 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/epp.html 56a790319fd2888f8219960931e53b2fc6b58b68dc2927b78712b36196003cb2 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_anno.html da27e8af677c84c440aff1fc04efc5047521bb46e70b490eed45979f4f9c6eb4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_error.html b46b53571b4509ce6ebdc077466bd73dc1a3e75517a3a1d88cc8c65818aab9f4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_eval.html 95b4aaf7e925bc854a14cb6266585f9f2b7c87e2fffe3f21d1e242b2f790e032 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_expand_records.html 9f2f273e2ffc881c3b9239b5b7b681f2ac3bd94f24bf50c0d2ab006774cfab71 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_features.html 838deab51a2fcbd2ec738be7c8a0e3745a9d822ea279b5187ec657254fc124e3 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_id_trans.html 50297e7d663eb3c851fce1890e30b5c70ad82cbc1f00f9dd21745f47ec00dd6f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_internal.html 9d6f36947dcd49729cebc1ce30bcfd506e00a4ed8e9f0f66e23dc5d3f59c2880 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_lint.html a68d2c6624eb8d1ec4f46e36db573654a23fc205f69ec831ed55820453aa3fb6 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_parse.html ad9c3c4f3c1f7fa46eed823ddee93b30d8bb6297fcd943fa410fc8c52a1ba4c1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_pp.html 693a3bb396aa5c7ab2af27980496dcf5f794020b8ad6c665b335d21eea2ece0f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_scan.html 51d48a0be4c7aae8bccd9aba33f65447d3d3cfae20b5a58f368d4a4f8693e4e7 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/erl_tar.html c205619b0bb12cad5614e646001af67222446dc38233a1c360869adab4075d53 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/escript.html e1c03480bc4dbc4c59634f5b7e40f57629fe5366373c78cdc8020d09f7b6bee4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ets.html fb3a9fde09f78d01365caf9b9998e7e395c1f4b954a235e999dcee33b4598fc2 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/file_sorter.html 71983fbca7a1a048eaf36892b830e809161617d63a7a1e56f42d2533857a2529 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filelib.html 275e9008f23c9c6e7ac5ee782d76ba6a6a64b2fc1e6e9a776964c583f8d0f49a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/filename.html 8e94f2b03649feb14a8f1b01fedf05388bc5ded89f36047b9f602ab3ed2bbc84 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_sets.html a27e16ebbd050086216d8e80405c07027bff3a02604f89f75918baa4f6b8e47c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gb_trees.html fdf466b5ae5b08e76ef6f5a6725b6019a2e27dd73a9751b2c8de1e0bae26d86d 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_event.html 078bc678fd9da46061c0ed89d692ada597bca4dc65e54b6b47a405ddcff06459 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_fsm.html 5c0382abec35a30f1dfab50ac9818e4e94797645cf1d2f0360d8ca3ea404ea4f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_server.html ba4f77419c32aefbdd86d1c7414ac4ce707d65049aa2a33143e62b1b6f127a9a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/gen_statem.html 1a50ddc4ca37d604c268e3e43e4a29c7b14e041f4e1ef6b7a1a4a56e44f7de95 2 @@ -4123,42 +4123,42 @@ -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/introduction.html 8a88613dfe0c09a71259ab05fb03992c35a11c4f33355d55a84db42cfed8fddb 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io.html 8e4e4abc5cd375893c3850af63a32ead84e852cb627bda3e3602b320332286c7 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_lib.html 17ec702965208591f05fe0e01ec4f8fd49e455874dcdba6ec3d00907e69c0512 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_protocol.html 09fd829b890599c79689ab64bdbea3aa4c2cacaaeb55cc25c86e01b5a04c957f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/json.html 2de99722ccfc801c349f73dcff0ec3a802304c64146a90ed6d9d48cb33293c6f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/lists.html 3c53d8b22987a8c35dcaea66f623de74fbaab0e1d79634a6a0279b0fda446c4c 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/log_mf_h.html b18e1c64d7a9e54ff3029e7b46612439fdd9e68e7ed930dcdddbea8cb7ccd3fc 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/maps.html 3b2016bafc61f536f43be16fc46eb0ae2f44e93da00416e6373c9f76fee8393f 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/math.html 552d763f16154e8d43e0d2a68198e9685ef2646b1cdc8aeea7cee3f150e12b83 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ms_transform.html 30712eaeb69e8497f590532f1886af0c11edb1e91559508fb9155bdedb11ce5b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/notes.html 56a974b2dc7737a7009c19cb74efe2422ffcabbe602585f99fcea296293571eb 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/orddict.html 0292d6cbd76b58c8df5fae4e50b6e84e9531353d6826754cda5eff2823737239 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ordsets.html 7229f9166ec8b7d13f77f1bf5cc5d108a9af71e54b30ad1e491ec1d38eda88cc 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/peer.html 0d94829a2b3b4693fd46a4e7119245ef60766232c142eb5a4ea2db477f72afca 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/pool.html dd496ee489fa10bf49f668f097eb5dc61ac09ba0d2e5d40822de6369aa0bcf12 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proc_lib.html 47936dba79dbeba8a7989bde07c2782e466d053d6cc9e282a459cddf63d83577 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proplists.html dd2d2c30d27d0409d89e1e5e4fc283d8c19310f8c6686d5a0a6f151db2021465 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/qlc.html aa0b611844ae3a6dffc9deb6a59c3622afd6e7ec98fc13afdd9449bc5064bad3 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/queue.html f4b424cd14674ab21e71ad9a1a18ffd332d0f565af68ede1844a2eae9514dd78 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/rand.html aac5beb3a6c0b119593d800c2dbe55ce741f490bb0cfd5a0b08e84fba6ea5f90 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/random.html 5730fc69922ab5588d17e42e0b757f6280d24268561b179e7306e43f8a46731d 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/re.html d6b79c70cf0d9ec129f4ff7db99e626816244df22080e8b6484d6df8b50f39eb 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/search.html 2c49968b6632353792f733498857629571afe74533f1b8efb32a9eb9340edcea 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sets.html 645f437e51b124a6b8b668785b41c7c1d7cb5636a556dd34c72c8c532a6d0c81 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell.html 994009eebe90f165b7504a1c5ee3ae6f8001b6361161bce5bf0518e9f083ff21 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_default.html 66de701b20a4332ca946d03afb4cb1ee3967793a8efe703578242803c20ebafe 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_docs.html f16132d648d8787e85608d92b2c6b6563442b607124515d1cef3f66fbae62b9b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/slave.html 0c0c24bbc3e948fca140df332a6bfa03bb995943aba1b842749f2b170d8dc97a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sofs.html 1734c13f52329b02034869f0491779aa88ccd76b171177f74a0f284259d9d3a3 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib.epub 7c72249c9b27f4b695d443eb254c15a6d8a14a85322a76a454b313410abf736d 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib_app.html 47f014f14267861f29df1b47698713bf3b723a5ab5d0e310806cf5d2f53573d4 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/string.html 2f234f9b225a4a5a463a275e1194f674927449b00906142b903b15e3cb2e814b 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor.html 7c9096215caa410973fedee5b28b8f85d83b375d138cde25d18c0ce9a6e7ee45 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor_bridge.html 4c480d82b3f539394584b754f2d23c1ffce77f09bc70d119627e5527bd762e7e 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sys.html a6032140b89a10ddf9c45681c50522720e6229700db092b801aa70082d11e89d 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/timer.html 789418a58c0de9b5173dc6657f135384a6c128b2f68b2a05eeb89a169055a964 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode.html 306fec93233fb7deb7fcb47b3dcdc533366babad70572d2d2d325715f68e1f8a 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode_usage.html d58babad82fbc37c222773084dfcc7cba5b2046613e7579e2d26972fcae7b780 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string.html 01ec55e590c65f8470f338f5cf7c73998fcdef13e8f313c3e48a1c10f1a9ca64 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string_usage.html cc1adae75f397ef6e9982340cb4de9a8a0f84d7b04682040492398210ac7cc34 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/win32reg.html 9bee5b01edb2e20fc5509e4a1fc311e3f988a931e86e6b69cf66500d242adcc2 2 -/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/zip.html cc32fc405ea0d44c4bbeb2c6db8c057f3efa9a96d43813ab19da21381471cc80 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/introduction.html 5c696804114252ac1f77b2ca18fc31444a4d43489ae02397bf099134f33acd31 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io.html 7a41736b6bb5eb92b27bead9b6694a10098dcc23c44b20903d475e0f23bf369e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_lib.html a87be8b0491d7e03e7a39fb5f791483f40f4d777969993517ebb898bf031643b 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/io_protocol.html a41a33206f57b3654a9108fb444c8044b4e649f31fb0c868d832764fc5a83d89 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/json.html d7354fa2e086bd296b7b68bd98a6c68d567173a9d80647b9ccd00a8f7515906c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/lists.html f6138fa19c10f6a53eb590170c1541d42c0935aefedef504497e7a3747916ab0 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/log_mf_h.html be7b12aa4e63e851c16f08537cefcdb5efff5057272e80b783c21296d339e7ee 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/maps.html 182d30799f72f9395cc5c019d39d74f52339f74ec28c61498dea8fbfffd5f273 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/math.html bcb9de983f3557eec9774b6f1f6286228fc5b9f1904542789c860653df4a8774 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ms_transform.html a78bc8957b3cc325067d67352a3f00ebf1e80a6a11222d2ac6b99ed7d3755902 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/notes.html 39bf8c0e53640533a20a9ee3d308aad94843003d98f002725d0cd2140ddf064b 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/orddict.html 79011458858d2fdb5d39e8e0bebc0b05592de360faa5bed1649845947e37c939 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/ordsets.html 7ee3083bd90ae36f412f00fb58a320c6ab846ad44ab9762703b1dc395d600221 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/peer.html 682456f34b8bcaf576a293402c1004acfeb848f94a6cb6980c7ba26240e0614e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/pool.html 4c042a149800a7476937ba785da42d4befd429ba840fc86a3acdd4bb31cee87a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proc_lib.html 76862cee6fd4e107e4b6f8cc85f7281f89ef58ee7abb8685c68e2dace87af52f 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/proplists.html bccf4848310a05da35b4e435b3b771f0dac4a6d5ec1e0c01280859879f1e56aa 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/qlc.html 1f5a10027aacf4d573dd187075c32ef57cc7d39ccd54211c27c3e75d8a1c116a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/queue.html 1b7df59e88562c09e63706f7050913fecdd129479a24be5823d068057f8cc1ae 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/rand.html c13977f67f1bf6eee3e9d6b4af9c543f613109f30f0eff5bd96e0e7fb9a64db1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/random.html bc5546e31654ba6c14d9f915c283b2b11cf53f1bf3f737e934c2f8b216500025 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/re.html 9b0a2f78a230b271d1cd5b6fdf1774c1c6725d1719f0fb06a2ce7d9759ab92c1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/search.html 63559839c69b5872b26b529d3bc326211aaec39d7514a1b42aef0ff68125562e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sets.html 925e644255d5ee600254625f433efbc58a0ee0e9b0049f2fcaa01839a1ee1288 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell.html 87198d579612dc085fc491a5ced61ad51cbcf2c40454837db907fae27dcf2c6e 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_default.html 78f5ee877d4e37efd49dcbd937be252eb65f4aef86f0f8e9d72fd00b345c58a2 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/shell_docs.html 3d62ccbeb6c3bd1efa43aea7f21d9035e1943008c98aa0ab5f0dd7cfa059e99b 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/slave.html 14bcbf49f5a4b660b21dbe469dcf326b668e0282825a8721e6ef20881fd3edd9 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sofs.html e487c8c0150380cf47a201bbfc1dc8cba0c0a180aa428b229397337aa595963c 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib.epub 27b28933a73de07f2382b6d6c32290875f6a6b115a3d9580270c620c39352f1a 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/stdlib_app.html 8bc12a8740e2e984e661b3d261fc9733ee06dbc10e4dffd96c1ff989cd6f6c59 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/string.html a3c8b40394cede8cf6c4d6c8510ea2e09de53d911c0e3da1b4867e31f1ff4fe4 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor.html c9033fc5c405969ef97bae4104f023312e8a6b80a5f685ddec1b5e13940ea15b 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/supervisor_bridge.html 410194fadebab22c7eba247171c4a8de1c8c1d2459c5582bae8cf26158ef23d1 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/sys.html 77b4fc2aafed4345ba1da52c30dd220b8c3981b9929842d2ae4aefd148302290 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/timer.html aa7056046529b500f5c08e8e7fdaf1825f18fe552cca70878cfb17cc5335d3b5 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode.html 463a17e59506dd95458858e46e4464b9323bc518cc9b0a9f64ed6b829bf856ec 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/unicode_usage.html bab5ef862c0c4e977b5b37bacb2b8bd184e4ebb3630f718907f694562848cec7 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string.html c28fb8f7d80c9244152c86b993f7014a8f419bb3622eca8b4140d5593d4ef4b5 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/uri_string_usage.html 2a9de0045fa8b370ec2b24f47fc0c84016935e6736c623702dc4c9682b82f162 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/win32reg.html 93581fba20af4a71f9416f03933eb65bce8629c0e6419332d9c781a71638dd54 2 +/usr/share/doc/packages/erlang27-doc/lib/stdlib-6.1.2/doc/html/zip.html 3a76f7a036249ddd2a55014790a92d3a5f9ee87f59ce861180bc1814bb621e57 2 @@ -4168,2 +4168,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/404.html de824264181f2da96707e73f6c21d53bea54c8b322d161899817acf74ce07945 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/api-reference.html 97b542a69d672a4e292772d1f537ad7841e12899fd5d83f19880ddcb36984012 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/404.html 683900bcbb94492e6f98652e45522b4df8daa1b7ca7859805c510fda87f4e076 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/api-reference.html f39e1a7eecbceef66578724d996a2d32576ab6b99874a923c10aedd2c90287c0 2 @@ -4173 +4173 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/chapter.html 4bac81a71e08fbeaf1aacf777b89890d41e4a9715ac61445be69bf276a80dfec 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/chapter.html a8f22535c0ea4da05565b6f7f360f120706806731be1d95277eeac2990dd2077 2 @@ -4194,6 +4194,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/epp_dodger.html b59b40dfc95a36f0dc68720ae752ab1fc8b767202e78fe08493c9a5b079505c9 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_comment_scan.html 7884ce645000465820a7b6459db951ba4c716cd96da9d3b0d457238824cf9f1f 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_prettypr.html 4d32c58d52a243abfe1911a54f66b35c1d7c81078a109cef25b3550e6ded0f39 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_recomment.html 8423359f7b5e2d0d1c0c8a43a9dce8839fe123c0a9d8bcfea1aa5f82f774c85e 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax.html 24e321ac909a57fdf866c8b827f96485f53149e8446447248297f596e9173170 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax_lib.html aa1b4a267613fe56f0374664f29a55233f6c0ef967c1ca2a32a32c822fe212f0 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/epp_dodger.html c1ca8ab53ff904507600fe35492f56d1b8c921793e449f660f231f4929aa898d 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_comment_scan.html a3d2a63a0ff8c42dcdeee297216ea8e676b69a40c9c0c14cd4b5df76cc167be0 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_prettypr.html 54e172c8c2a8771e9f9f3902188da05a6b1fa70ead58bc98400d6d5d79012987 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_recomment.html 7f288198fbc2420c7107edb14b64e5419acd8272f041d697e4583666b6e891f5 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax.html bf3e08834ac2a3ce8fc1352a0591b5079c5b63f62980deb83a870be2e7033801 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/erl_syntax_lib.html 060aeda1e309194b1fed41b3a5e866f8856627dfa1553c2be18059828c0fc5b0 2 @@ -4201,5 +4201,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl.html 652b2f42bb7150c2838d9b0f5b7c0bdc8de93e771a841e6fe13ea26c02fc0099 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl_transform.html 22b7410af081ffeb293b6f1f657bc792cafdc58270e420a6df2f7efcda4435f9 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/notes.html 7d65bd82201295ed0e187b4677a4fa486926ec8d21e0b4714b8c38898b21d3d2 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/prettypr.html 9e2f5357b06d56adc00b5efe271876ca80e7ab837d12836f98e14630d7e1a79d 2 -/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/search.html 8eb41908d31736504f54e57d192e328de8d53b103b8a1909d23a5c3a768b73d8 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl.html 909dae6fc846e94957b281151ffb298141b44fd1727d33d3d44fab7481b69ac2 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/merl_transform.html 76a7e9dde3deb86a769d8cb7f90f83bb27f936f5d7542f32d4ff6ecf33c79b2b 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/notes.html b3b2c80954da4758f014c71ed61458e6fd343b1a8db229d1144f4a0611004163 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/prettypr.html 963513a81b3c42bc6224d317e1f4dd722b2d80edf308941e62974c493b0d56fc 2 +/usr/share/doc/packages/erlang27-doc/lib/syntax_tools-3.2.1/doc/html/search.html 3f38e0f27da3376a5ff06c5bff97eab068fe4ccc2528679cfc2aa382fed0d489 2 @@ -4209,2 +4209,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/404.html 3194b8ec049944de9a3cb4e255838fc1e2c90ba6cc6dbb49b4b8c937fb21f1a6 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/api-reference.html ad67dffde540e7566689e914a292d1ae36e9766169c8564a6548a2521b93c287 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/404.html edaa1c5a2da0f61f6a0ff948bd491db7f70fce46b8765707f043be5e8a170656 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/api-reference.html fd924bac34b5a04672ffbcce5c4e2507cd3ea6e859a33b0eeb369e5ca36d5429 2 @@ -4233 +4233 @@ -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/getting_started.html 2863dd802b03ff01421817a6897a0af2e7c1e4ff8a56875830c383dfbe6ddf3c 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/getting_started.html 8e75c220feefd4da24ec7fc9936c63ac3bc2cf3bdee1ef11c31c848c2950642c 2 @@ -4235,6 +4235,6 @@ -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/introduction.html 4905d88b5a19f8f2ec7f73cae39134542efc9c503c0367c5bb1735f86b373406 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/notes.html 92191c76dbbad4f2a6a543463ff28e0f903ec9e70d7e6effb2ab1e4d095ce4d7 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/search.html fe3307b07224b28a69cff96b202d089bf094605bd05f980d5438d9647363fb32 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.epub 95e8228294b875625bbcede96945c0ea135492465bdcaef11e6de0a00911c3c5 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.html 41b005c8ca36242c88295730ba016ca08c728f457b3d3717d79ece344115d209 2 -/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp_logger.html 5c0b49a1f201a3403415dbc1e5d0b01d0975d48e2ced70f52965214a2dd621d7 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/introduction.html 628bdde711783d0d2c5c06c19aed7d09e010c07f853f6323443f1644ede021a2 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/notes.html 5e72c7044aed971b0be05be6c26ba168d73f491046976d5068b9b7b26b671c5a 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/search.html 718455c8bfdf8553b83b0251f3d7b4e8714a08927f02540dc90a90816951655c 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.epub 3819cc889b201d1bfe76f6d2f849eae1ff6d4e6edc2ab41fcae30738dc0709ee 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp.html dc0ce1834e9bf4e348c732ede63dffae1a56ffd869b25a71e30ff635a89c79c2 2 +/usr/share/doc/packages/erlang27-doc/lib/tftp-1.2.1/doc/html/tftp_logger.html 1b2481a22f9e81ff32efbf0ad1c41083f3ee4a46c69b8d714a52375af7c46198 2 @@ -4244,2 +4244,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/404.html 919ac422cd817c37ebc7353e77ae97a8af1bdad6d6817cb38f2e3cf3da19d3aa 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/api-reference.html 7e071cbf87a9ad0347024e965aaa4523001b5bf3e64d4b02121b7c42e0dacd4d 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/404.html e957f821674fb77bed7f7ae36059d2981a261044abd3decdec2bd8f035cbf7ce 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/api-reference.html 3773edb5b696a472b2931c4aa77389fe822d846c7c88b3cf4534c8de89596587 2 @@ -4250,4 +4250,4 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover.html f12d52e96bbd8d41b49c0487b68735666cbbcf5030efb776d057c96bdeb324f0 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover_chapter.html ca5778b38a40802584ac47e47347e8d50ed63a0b81d7a754d310d0c6cab6b483 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof.html 30d4f943c4996cd2fc87c09fc8b64270ec89ab72f0fe81ff165673f85986ce9d 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof_chapter.html 8beefc2e86cba64da855788aa090ed22ef6e066f985cb26718183e02534e370b 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover.html 0945a6ede6507b448fc95f3b02831c10822b6fdec77ac7b3c30299cd49a795c4 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cover_chapter.html f69fa910e3e11649668f2c2a1849b92f186de1c0d315e36abc1bf593403c56b5 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof.html 42fbcb3e794c48f015f04d24df5f2c40013dae2694650baaa85dbb343e484db7 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/cprof_chapter.html d9c073e3e2cf9d6fc06f30b084cc594e2c96c8e9e6e57c4a13d56f192a18f122 2 @@ -4274,5 +4274,5 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/eprof.html ed0ea63830eae5f53be09529c1f0545284664e2381044c61ce7aca0776e9b985 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang-el.html 60046fc38ae6e257d103a787ba4de8a882e489ccc7cbb85de7fd6c7d9f775e70 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang_mode_chapter.html b31b219e3bf22ff8090750c086d659a4d406d460299196b2564d82decaebfd9c 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof.html 39ede9c1dc345965c86d00ec18cf29b94479a5a9c3af2e923d534d914a60023a 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof_chapter.html 69b3e9dd00a2778c9d591ed61279bd67d784530505cb430c5d9739f84c45059d 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/eprof.html da06eb9c7a72deb2cecc3b64f0cc4ef3dab06e3ebac001e77e24cdde1dad5664 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang-el.html f75f4e9239763aa6370ef1bc50d010aac7182d13fe2dfa9d54cf79ff5738590d 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/erlang_mode_chapter.html a15630315b1c6618db519bb2ab262021b7db899dda5f9ce7de9272a41a54a48b 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof.html 2e27334273e53f43e9ce360e2ed276cddf8392da2aa4d849dc4b6cd34417ab04 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/fprof_chapter.html 749873ecb4c94a3a1e49a7b396d2550482b6af2e295d62c08cc36306a4c1f9cb 2 @@ -4280,10 +4280,10 @@ -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt.html 4831b05381c815991035965df07a18369d3dafe80f206a4eb3a94fc50db51fef 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt_chapter.html 47b8d689344a5f38f97e7a898dfdb44c9f93cb94955666fa034ae3ff69a73fe7 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/make.html 63eb2ddaf2c675136d03765739647f9f191466382b92da8f6ea0db7eaa89969d 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/notes.html 94db8ff52a53ce52f4257ab2bf67a53ba78c40523d3ed237ce691ae70cbb41d5 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/search.html 52771a0b45c1d22edf962300a3e03ca09f1e2f61f4d12a5e4c9fc7b40a3c32c3 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tags.html c81e64051e49242800bbced30c2d520437587fda9a8c84470de3fc7417c2c1dc 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tools.epub b4864d684379787fd7edb8ffb7ee9d8105900ba6306c772ad47fcc848bfe6f98 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tprof.html 79db087fb2e1c859f27f83bda9f55492c8b1c44c0b00d61b3799522772270501 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref.html 5882b31e1b1ee4bb9b5e36c0a8414ae5a54d2e65662e919b612e8a82b1417d4e 2 -/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref_chapter.html 2ac368df5597147df13583aba1170acb7605a788d41e365596d1803126e85236 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt.html 3b2daf054f0040889ddc968a3789026378c7c6fecc507d56244525b1424b2971 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/lcnt_chapter.html 18034b8dd9d9f781d7e4ac04ba650f32fe9a098fd473e43e79d1ff2d881add59 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/make.html 5f77bf9c66cfe2d1f8d234fc31cdcdcfb8686249e5318019fb78dc442507b9c1 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/notes.html d47ed714a293ba25d5a3985efa62cfe11bec479d60d9d8d2ad2283b1b2f28e0f 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/search.html 8fdf81845ce20a09b35803cfd4c9c2489053f6998bdee98594525f89083bbc33 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tags.html f678b248f8849460668f48ee91861bfc1cf9d92cd9b3b2692ea83edf18146e01 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tools.epub eb82ca63f6868ef42f35004d5023fc154649606eb714931f8292f939f1196f07 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/tprof.html 553d76da270341c3daa1d318897d9942d0b1094500942cc12848abc3a72cbe03 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref.html 561134afde2d90b0b8fdab29f114a13e619003536a71d596601c30f401e78934 2 +/usr/share/doc/packages/erlang27-doc/lib/tools-4.1/doc/html/xref_chapter.html c8d8158f00bb99fcd15da4d34f35955496d92d764c663f113524c132004f392c 2 @@ -4293,2 +4293,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/404.html 24663de58c9e64dcf3580235c05032ff6e89864e166e0c3e3853a1b573c2d638 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/api-reference.html 00f872fc42bc9bbadbe58dfac829f80bbd30af2574bdbbd02b460c8dda971a6f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/404.html f348230c96f06b029d1bc57faa1d7eaa6bdfe898647639d28ac860ac06fe3d91 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/api-reference.html c7521f5562c2943f8242a51f7223e52f84ed2a948c04533d946089cfb3fa704b 2 @@ -4297 +4297 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/chapter.html 08bca76eeaacbdb67bd650b2422af7520592aadfb621af5c54419aefeaf66cd1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/chapter.html 0eea6f80714bb1e2b37d172eb0bd61c0e54a10924b465fb24b38658b3fa4a170 2 @@ -4318,2 +4318,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/gl.html e5a031128041edef78887aa8368568b9543ed4d920edadf9753be201072e9045 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/glu.html a24e40f040d357ee98e6f51e10a05e774e8f63bae06f9fdb8605ca723e496567 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/gl.html 4014ca183a79a51c28d2f95c13095a7ec30958a8b9ae86cbc735c2e570c749d6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/glu.html 0276d14540192d9a6fec596e8cc001a3c929b1ced6a648af3b83f331a527f265 2 @@ -4321,239 +4321,239 @@ -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/notes.html 306275d3bde9c2de853fe1b6a6f7940c1560d7a227ae20a4196a97109181767a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/search.html feb67a8c395e3604b551438d5bbde24dadb9674505dc4057ab71904b63346ee7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.epub 4ec22395fd411a0473a436b4ada3b6474f226bf5e583b13ab7f1f5aa0aa5d3ab 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.html 390e8e1b999eb87c6fb5671156dda88924fc763865b776948bd2801b9ae5e41d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorEntry.html c87fe288b27c9769efbc355166e295dddb967d62073f0683fad1ebb6dab3322e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorTable.html c9f1bc73b83c27700064945922938fbe808319e8ea249e53e9b0f7e6b3f93da9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxActivateEvent.html 37d4d5723f466c80ea4775ecac23f855837cf81f7cb6c3a13769237d057a2df9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxArtProvider.html 06f0e05fcdbabaae0ff752cd417c16763b4eabd59c17d187f3a99fb72197cdc8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiDockArt.html 491ad4e42ccc17e5c3aa325635b58618d6ef3d0f2fa0c2321c27a7749fb0e212 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManager.html 194bf33d12c56080bc457ed8f5322a8462b7500339bdfc96c42df2f2bd356453 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManagerEvent.html 91cccbd2d962768eb0dd32b2db90d30c60efd4264da97c9c27cf403c96c8e4a6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebook.html ca756e56766c4afcf1f653001e14605c33be7b88c961c76d8dbe91f3aa2cd4d5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebookEvent.html 6698a9b787dc23f123da2210c94afa04d82a3ae6ed601a7d77eb36f85f1b57af 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiPaneInfo.html f2bda4bc165380acbf5418ce00d6f28750e309e40760a6ba6508b6996031c2fb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiSimpleTabArt.html dad6dc365fae15364fec4f416246e266ef6b8ff0952a225d45b13c45ae46f5db 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiTabArt.html 41e2c3afe60907d5cd2b339b3dc08e9bf4da6d75ab85e90cddaaf1209608ad34 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmap.html fabae1dc65682804ce6c0afa0c3a00b8af5c2031b22ce8000e3fa16ba736e84d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapButton.html 3fc2093c5fe27ce7a4aa9d5faeae280b1f352e92f511069993b83def42397d1f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapDataObject.html bd6df5e7498ebcc8e6c733cba909881554124b8cf68017e18dda4b1183820dcd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlBase.html 686e8d395fab064d43a66e6a919e4fbb96f137659e6dc6b0c12fd184a3f79e8f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlEvent.html 5f8930e12d22882cdc6c2c558e1bd77c898c800e8974ec7d0ca59e9fc4634bbb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBoxSizer.html b9c6970d4a5abf486c0ede7fd78922d912518c5fa11be02d18fc5fec9c6f2955 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBrush.html 50cdf3b63af6dda0db28896d7950b4efb8739b0945f8fefd02302111e1a9b363 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedDC.html 11f95c97a15dabc0b6e21db0166612e1b8eb9cbf1bdb26b93d1b3f519849d066 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedPaintDC.html 81dd6ba8ecea6ffe15a8c826dcc3de67ccbf3d0d54ee315f09fb83365b8cfa98 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxButton.html eaafcc44531d9ea068377d273552369105cbaf070e02aa785e8ebd7960b8a801 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarCtrl.html d935a99f374abebb6e3dd74a4f96b929e81baa4a9197990b33e34083159b064a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarDateAttr.html c11a9c925f0aa00d83db58974274590ba3df9376111498fa17bd64be0ce55e14 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarEvent.html 5f6e51eba9c43c007ceb57e37183b5816285eac0db96b38ce8abfd66f31a8eac 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCaret.html 59df42ca601e2724beb042a471d854951cbed90186c83fcf6c653c42dd240807 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckBox.html 77f82f063ea952ab0e940a3ec530fd00c45b797dff2cfe2b08f26584e710a11e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckListBox.html 993f51a5dbe77b688eabd32c0594e05a7c934157e21d8f28c93537943cd246d0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChildFocusEvent.html 273a9f5ac8cf8e8949320b84b3b0afe9b5eb3474feb340a0cfa7eeb8aaee807f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoice.html 575c00e0cdba0303d5c9cab9a45217239fe47660139c177164321bb204567f26 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoicebook.html b449e4df4d66396f2a826b2e28438332ad3a8380073f2573eaa43a4568e7fd8f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClientDC.html 398176195ebecc7d31bed3707881ed6dfd61ffa72fd241438b8dce20ed82dd9d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboard.html 80245dabce7b83a8b5141377ce0005dbb84fca2b99f590dab60d30265022cb1e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboardTextEvent.html ed3a2610f3e3ae44e167adfd0f72302b498737b309d862cb1fcfdb337e8f8ee4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCloseEvent.html a230b343799f0d77ddebc7d2d03601952fd012f6e6afcaa3d4a9efbbc696c88a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourData.html 6ecc3b2ce9990b9bf8cc5aad50f9226da0e6687f46cdd0109f92f966292b5d0f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourDialog.html 368b45605bdf9906f2c4fe725db466e3099c4bcced3e182063f9d21226680bf5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerCtrl.html a37b473621eeeae7516ff72cd9890b2344c08e866f01fdcd2101e4cf086d3ba4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerEvent.html 77a6aa41b74cf59c075d6699b78e957febc9ab3dee858e500942d2310b9f0ebe 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxComboBox.html deec94f1fe7cfe5852d412b569a708344603007c0c241aac42cef333291b1762 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCommandEvent.html f80ae86aaf371c967341c19858e926f39488e0b6aabb055c64fce6d60ac7ac8a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxContextMenuEvent.html a13965c722804ae7dad0c9c109b3c2b4b90f5644941a483be46de0915a259a7c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControl.html 905fac4b9a92d800157d130baca157c3c6113fc0565450eb52e4712e1716c52f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControlWithItems.html 323b8fdae6bb242d06d5c31bf802299545b737a7beda1c640c2dab7d9b7116f0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCursor.html 700c045e3601b3f6ddae8b4ae642efaea20cad87995d5ccee97f8a933fdc8656 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDC.html f05018516088dc54cef91f576ec59fb71e5de271039b05ee0a8c041bbebdf6f3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDCOverlay.html bf319686a9664cec6a75d3594b6a6e186cd9ed32dfeae56a8c0ed04d60003851 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDataObject.html 3ac265d3d20a8adf449e3b43a8332ef9404be28649a93b290c89bb4a960d3f83 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDateEvent.html 3e55420ef479873d75de6fa3dda8c8581609068bb80f3452073fc4306d889f3f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDatePickerCtrl.html 6207bc7031f892cdc0f11ed10b806e8a4dc0b3a798608c9cdf508a5ec2400458 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDialog.html c1682876edabb3d9d9d60b5f04804fe5200bc708a38071f6efc4f83458e33d27 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirDialog.html b74f13d61cdf7c3930645a77a963697cddb71a7e81565cd87a50033031a78bad 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirPickerCtrl.html 32b077b97e3ec1be3d3174d927a1b6ba116e84c8d0abde212cc22bdfd0b67905 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplay.html 54f36c81f04cc7c52dc47786c8a6ef09265e8228c8011b8030466bd3804522c7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplayChangedEvent.html 1d65e8b9a44f9c5efc8eaa91e1352962d507e37c96a64ce1829b7b170eacd23b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDropFilesEvent.html 90162ad34189cd674d1eea8429f2ee930c01b9d94921968acaec5f7ff5905576 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEraseEvent.html 6013bcc19544c1c6dd8750502ef8e57f7032736f891499ff6f414b5b8ef45d3d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvent.html 79be35023c9b5d0d6387a85d9162f37371ea16a6242e524cb5d43f51ea4b72fc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvtHandler.html 2f4edd59b446b3289ad5bdcab866a271d9287620e992d1c8fddabf82e9688fe2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDataObject.html d74336080070175e872105287b20487290b50a2ce7c3b1f5eff6dba3bd6766de 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDialog.html c276bb402d0a7d1b7cc75796f377565c5b39b9a1f161624de5a555af2b18b588 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDirPickerEvent.html d95a464c451108f0781f0d1a07819832d48480151a495881805cf3998057e070 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFilePickerCtrl.html 2944e449b811dcbc149a4aef7ae53edbf4c214068849705193410f217fb35df0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceData.html d01a6d8a292466793aa213474c60d9a26c5f8956d4365703fe00f65129913752 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceDialog.html 25e0d1904dab80501d374e00398dfd56bf969621bf85249925addd24affc54d1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFlexGridSizer.html ebffa1bfd007428d47490ffcfa8e49a1f1380d8589d3195b2a867e120cdfb68e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFocusEvent.html ad45a816fd7be23b916ab5e774bed67c8f53fe44700e17eb7ab2d84b1df7ec1a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFont.html 353649b281ab42727ac2ac15eed34c3267e23b7c4325d7bb7222ba508c16410a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontData.html 093aa8101d0a2502087362774d74a342041b4bb7950c023d85a4d79dc60e442a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontDialog.html 98619d4ce777825c146e0e25c18eb669fdeb138cfb1a9aab8a86dd171d766220 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerCtrl.html 986a12f533f22d82648dff0785501930e8cdeacafd5d058f26b8a12d39731919 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerEvent.html 862c402395c3ce3020ed48cedc823a76c70c4ecbcd32e3e66df1734379122623 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFrame.html 9f2e6832df57af68aa3a54cdef63e5789a4a663e788a25b5b0781557e9711abe 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGBSizerItem.html a67c19a01020f71f4b57ece64a7da90df834db143f0acf4b9e30c18012b49d99 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGCDC.html e0fd2bf617a812f97bb237248cf456323c77eddbf6e3e6e9f8eb3faa09d27447 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLCanvas.html 6aaf0b046ede7f0b3292efa4c312ba79b1c2411bdbb5417ffdc319c90acae591 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLContext.html 17c29b4b3f0cfff16ee4b9e4113df3fe997237c254f6fd17934eae90573c3946 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGauge.html 9a15a342a1aab7d0ef4ab77c9bcb14cf32c69ad66d7b5682964322affe90764f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGenericDirCtrl.html 830f26a379bb125a0525e99e37ee9aa767bcac5d0a5f517e9a269fac532148f7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsBrush.html c81e31997bd734a205572fc646fcf6c80de6c866837275353cb69e06bb6f5af8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsContext.html 86782da60f9eb1f0ca69ec156498b47e7bb09349b5a153494bea6576ef241598 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsFont.html 4869a5aa4e13144ba17ac8d6ec1dfce1f7d692f1dcf1f1120baef184cded1b3f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsGradientStops.html 930cc04f355361e985aea4d972d1c4a7ea1caa723f640c86d3f748b996ec58f3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsMatrix.html 6d5e5db44d4b4ccbed49cc9e72c0c4d7d94c1b9c6f288f2bb054fa5c1ca1f1d5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsObject.html cf307a033bfb52fa63251f409eca45390d903cc99e22d1eef3a51e513ee0ffcc 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPath.html f1ae81ea9ab5e76612477ae5ebd2bcd9ca811d4be64da01a80f996b2d907fc8f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPen.html 04bf27e0d31e9b20cbc1e1f07c151800e0d43272e7f0131a3a85b1c4e645a8f1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsRenderer.html 98a95c59bff0c01a49d2ff6581903c14e42f45cd526e2cc2b4fb3e8dfca2b7ea 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGrid.html ae2c5b2306097713b77d43d2d9dbacf2d84eb1c70eed7054f660d696d4f8237b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridBagSizer.html f34c0762fb7e2216c95147c3206cb7ddf5614ef445a3d5c13414cc0683dbf5c8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellAttr.html 01c27d79f0d7b72fd7cac0cd20ddbdb1eac2ccd7fa6c0a319722cc1580a2ee9d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolEditor.html 4197e962be38db57782cb6bb889826a58ae19210c30022afee5f45dfca2f8c66 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolRenderer.html 8bedf153b173b67246841dd3bf5d98a3562601c560ba4fc2e9a56b7399dffbca 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellChoiceEditor.html 4d11a52c1c6acb8341826e66d79d6640181377e798f44f26ab7c53086e40948a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellEditor.html c023d83bbe887494ad8778b80c21c6d375127c051ea94aaaa0a1b1203d556b47 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatEditor.html eb4f078ec6aee94c3d5f349811a2d8546e0553cde45fdf8a5ed83e43b5c24aae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatRenderer.html 188a3bc87c8a589c06d92107c0d5cc8e9457660496090f8906374d0ec852b1f6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberEditor.html 30bc409fb1536593ef7147b7d2893fb4a4b64feede9a963435228a4104ca204d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberRenderer.html e925dbb18ab06769dbbbaac7ccde60e20b58d7dfb8a9643e501366b27f0018e0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellRenderer.html f2b7f3c21ab203dd4239a66f674333ee5ff4be123e697efdd41176cb207fd834 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellStringRenderer.html 59c1c232991393ec2094884be8abfdf1e40518c4431c5d6e4a543547537f64e3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellTextEditor.html ce750bcf673fc672055b21a1b182e0d7e95e66e11b3cd64c11fd67b938d05cde 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridEvent.html 09b2a4feb04cb89a573c5d7584c38dadd7d2875c65aaf0b0c01d06505b1bc379 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridSizer.html 5bb3c0deb507c62820d4cd3bee2722c531ea4b0d62779aba44f13074989763af 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHelpEvent.html f736df1530dd3e47904e5f1f830839f3e9cee17264fcef0bd93aa0b4b90f3578 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlEasyPrinting.html 350c13df702f9e26cfc860aa9ad4aa0835c220815b22cd19a8eceed429dacbf4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlLinkEvent.html 30f9bc7ef5fd8c45c1530b753f36228b51c1c8318725be82662b9f817e4f2c9f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlWindow.html 3bafe3602268d02614142e03ffdf3d903e93fe69cd8d4beff095d4720233efaf 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIcon.html b528acd56fa709d9970a4800cae3b50a001c9fe3f4a7a22991ba501c5b6a4189 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconBundle.html fb66e8e493d0567c7eae3a0c5c037abc8fa2aa6215a7c41a199c8d3e00588234 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconizeEvent.html 745a292d45564c13aa176d2e23e33aa69dec07d8e31f61b4c51d03c8b6ce8913 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIdleEvent.html 47dbf3189d56190fb414f11300e136cef9c39b214050de1e0b6f879d00d71163 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImage.html 922c3bc2f69ecd5258b0cb93e67800055d18896db2f2b0e65d4128650680b1bb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImageList.html a872da2921e740e6f9ebf1ece5a313dc251755bf916c949958283b7272a8d652 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxInitDialogEvent.html 7aef77c8e20b9bbeca28eb8d93572cd2f22e4ca04c373d4cd31c351486ad3b9a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxJoystickEvent.html dc89695e2fd8ed738e229caad54326e489cfdb6caa48a682c0d7d7c4909dfe3a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxKeyEvent.html 63cab58c480b863a50e5fb869a820d0700849dfce655a3f4f09f2b87375ada87 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLayoutAlgorithm.html acd7e7e68beb1f2403839bc3649e3c95d0ceff84415bb1e9b94038414779c106 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListBox.html 373a5cc78e82c560958cbe864c42fdd63563c20e70230683d19ae25e229a2f3d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListCtrl.html 61a123544aa3e4519805e38df2a2a9ffbf3bfffe6cf9b0bb26eafd4e16a8495f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListEvent.html 9b58f012b5eafdd01d8a745092b21bbcf3977b68cbaff7e7d2cd48538c06cd3b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItem.html b03c8989b2d81557455de467b8ededd1f5cd86b369a5f549f53981f606b3de4e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItemAttr.html d4d9ca9c55ec024631d709f6bed2c24622d6d3d675840250085f4a8724e31598 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListView.html ee6535ac6690a4b5fc5662ab63d3ee3ead566c68b6c14d27872e515c4f515eff 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListbook.html 2a1eaed10154dea81c76ad5013b3947216e55ecffd57574f201ce48b503e9a3c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLocale.html 9a1d04c9452c89525459d66e87c9b755de5ae0e51a0b2c3397545041cb7f8421 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLogNull.html 52a0895ee8ddaf3bc4f9ba43fb1d44be0f10fd6c83c597638964ae89d07750c3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIChildFrame.html 9ee8d44b85fcc7d26e4b4e3661f5f340bbd8d5488b2fa1f03519bb90d8e897dd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIClientWindow.html d4ce15cc7052b28fc88c353f625cfd8c78879faf1bb83f6132ca302577f8fab1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIParentFrame.html eb6f47e323e56e11f7de7f8f07bb1bcdeb19071191b5d0f04b2ec23f04523c1f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMask.html 2f833e239f1c241e3fe2efbffac046bc3a8eb26fbcde5e05c9f8d2f215f618a2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMaximizeEvent.html dbe8af65655922baa6428a8656ac78a6d7d7db76ae26a13d238a6926334f6916 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMemoryDC.html ece19f0f101f7df67456d49b308cf33906c4a744d5a4f9c6bea1a388419d6d69 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenu.html 7fd2f5e34b345692b2af40cb74632762d093cda02c9a8bfa8b072972340d587a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuBar.html 932953cd91efaf395609afc8dc223e9458cffe9f8634275d5031504d6d324721 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuEvent.html a871424d66662faa9dbfa74cd3ae8e8cf2c7c2f507f2ef58edb4569d6b99e992 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuItem.html 0f961d1f4e1a87ef2700dca9a20ae2fa6ea19cfe3e8b2796aa70117d57488f37 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMessageDialog.html fa322006bfab8c79d79207d9540cdac54438edf07a2aff3417ecb033c1647c2b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMiniFrame.html a4a5767d30be2f05ecbf89b118e617909b31bd65bf69714710ed144311d73dec 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMirrorDC.html d3e10ff877703af91cd8f159acd640c3bec70fca6cfc064c189c5aad93f3f6a4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureChangedEvent.html 06f03e17d7d05acb3f498080094f6eddcd4ac8e40acfa7d90ebf94a871b700d1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureLostEvent.html 7e7e18ce8d7e3d296b671bb003c39c13ba071417b42ae6349bba579cd5bbca34 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseEvent.html 617055203b68e410a51a6fb16da8e0b95c112511732d24a3ab08a4b3a7e036e3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMoveEvent.html 66b9920c25ab5c2defbaac03030d262d90816512f9339a89cad2db95fe17f7e1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMultiChoiceDialog.html a3bd04133ed7237cd485fa756647bc7c6a7ca1c5e401fb9cecf31e338c522bc4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNavigationKeyEvent.html 0a8b461f6a650c320a57ee053777313736fb0b9479bf8b49fae5f7887f6647b6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotebook.html 106dca8b9403b14b2f75290effaa9a0c03d4b5f12b3f9fbcd286aa5ac87147d9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotificationMessage.html 513f45ebaa21d0982a626db229f2708e2f5569a32240121ba55bb54446859601 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotifyEvent.html d317ba5792ca1c80ed79195ab8042dbbeae3c0120a2951b86ae3d86924ed964e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxOverlay.html f0501499fc7777ca75b5dc37869a0f51660fd943131a28b3e959b659297e72f4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialog.html 60381e1949970a9efaf1d5b11614bb1514a275fd5418cd16689a859402b366fe 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialogData.html 83f1b85490384c014ee5a9f4b77c9bb1fd9a78b537e4eb20a3cc39709108205b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintDC.html 64f87795d53c647be6e88c5b803cf15f058b549626e672bdf7e3ee7800fd4e89 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintEvent.html db7bdfb3ea431ccd940a743d89603bf9b99bb5863ab569f68a2e267ba006f4b5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPalette.html b3a897655aa1b23cda6d6e72a78cf168c7866b182c119f4cf73a7e852ad3e40f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaletteChangedEvent.html 2471cd0e1d096847c1912494b17c46237b602029e9de8484567e4ebd87fbbb3b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPanel.html 8130a5af28d76b5f7df1cc13214187a8198cc72281a4aa320642df935d908d36 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPasswordEntryDialog.html b71bc291fd8bc181abcc8964f0f3910b249b7a69e566a114d5bb7ccfe9c9dc85 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPen.html 182a372bee84a70331ed594c00477cf963a6d5ef2f2f46b40fbb49c4018b2e9e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPickerBase.html 4fc5923c44d83c8910c7aa2c5219c91c89c1f392473a33650be8c75cbdb4d5f1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupTransientWindow.html 1c3efa731b83b0f08c4379eec790804a242c2ae8e1d2a9af92a249b99d59cfd8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupWindow.html 6c4d4786ca79c4c7995bc87cfa9135c83e5a2b1db5cecfe2784a2a3d232549a3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPostScriptDC.html 9be2ed9b2e03f8dc36b8a45fc7f668281d73619ed1d057c5d93c4ebe0fb7f831 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewCanvas.html 2eeebfb75dc917f1eba2875a5a80c7122ac86aa06867567b9bcc2702e11a04f0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewControlBar.html b3d96b7d4f1cf5849f73ba329f17bfeb6238ca3d01fe42d418cea35da142e6d7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewFrame.html edc585198329b80f93a086cac3b3f06574114fa94baae7794d46a609fe06dedb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintData.html bb2a20a1d92f83fa605d28b36fa9a4c04f0908ad5c578db3a42fa013b3568f54 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialog.html d254d9349d83ea8bd91f1703873b494ad6844d50bfa524332f11e008cd27b07a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialogData.html cfd406f820339fc87a9045244897151d7fe0cd874e659810fea87c2e0355198e 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintPreview.html 419fc6d15927853f134b082ce5ff7e1312e2b554879355a64566b01905bc5b2c 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrinter.html 8132e18b76275f3c17c1c06854267baf25e9bd370b54ea9ce777818ff7eb45a1 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintout.html 133ab35bf0f1c281131668fcbfe766bd32fcf8fc3938437c04b5d80ad13e5ad3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxProgressDialog.html 792da2643ebc4080bfa6d633c55391b393a11114e9f5da621ed5f7c6adc3c764 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxQueryNewPaletteEvent.html 19e5aca33677d8af91f1c161863d0658c8ff53202e8003f0eb96c2721cc25af8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioBox.html e4f63a6f98053eadea5ee50eab9600e24133f9334d4ff09eb843996fb1084f23 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioButton.html 4f13d3b39cbb9b0dbb30a9268874f919d7192f0b9132d5bcc62269e4ed0d6d84 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRegion.html 88fd1fbba3f90d77aab65d1eeafda07cfaa07b58cd82cc3a2200fd28659c097a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashEvent.html fa866b93a228c204839e8480f342266eea6ad37f836c7c5595a6d83add7189fd 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashLayoutWindow.html 43e801d79804c5749fd13841ec38540b229b9b6f91c8ec5ab41e087389a27163 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashWindow.html c8c3a19886574f48f3a61c6e9d92f49a3408c0f58f5724aae9da4efd0c02f44d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScreenDC.html 1340f45be4dd4bce573195ff428fee34407ae49fddac1ed9bd16253bf2bf51ae 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollBar.html dc6af815837c353e3b4a15b422f69342552707e90e0531ae02f6abe0b92c4840 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollEvent.html 3cc50f651957323034bda4731fd3f916fc1f829ca1518b640af62066c3c0a18d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollWinEvent.html 3ca4fe4bafb58b4030cbfc7b4f640e9c9283e26c8531cd80debfaca3e540a061 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrolledWindow.html 60c2ed28f099d40d29c712ccb3d27bfd3f96e88c1a716da1609584747945043d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSetCursorEvent.html 6fcb24e0b9c0011d13fee60cbf0b68a07c70d4b3050ab12db28cc9209d54db0d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxShowEvent.html ff2cd6cb44f2875db4df6559c4470ec996f18dacc432152688522d4235df204f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSingleChoiceDialog.html 707f19acf566dc7e3103ece9b9e7bf17564381f7d96762594821783d677a0bf9 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizeEvent.html 7211676598374639524a4cbf01167ce0f4d2dca16872df3431225181a79b852f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizer.html f4d1b3a8848c83a19d5298926a5ebddc59645b4373c79b6ff5248fd30f00d473 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerFlags.html 2c401795817b3d0c03fd665d5ac4371830260639662c1a4c234c1ffd1bb0daa3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerItem.html e05f1ed653a85be4754616c24054ce352d938ad647faaaa86a673f89be0b7fa0 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSlider.html 8f2d7cf5b0bca95d8a378f6536483bf83eed5ac02d065c1f1e58d8f0816a6530 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinButton.html d37db10fb1942c0e211a837a343387c11d584ec9f0607ed540bbab1fcf660b25 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinCtrl.html 42926d539aeaee4938997883faef17845153589cfe1d81e72c0bc672897df893 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinEvent.html d49a47b93e10814b623fea315def77be89f67d2d7a20cfdb9155547b788b44fa 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplashScreen.html 2e1805b333c96aad4b863f18b8217f74573eb3000f9ef35e4aafea8938bba30f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterEvent.html 5fb0d827d333bc90e2b2402068e920ec59666487f711993f19060edb956092f6 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterWindow.html 405a17ade7e79a5acd667e416528cf4ef0c2b2fbbb5847934c9a4f1516d7620f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBitmap.html 0e974ddeaa4ea358fbc7cea20a4b1f0fcbf72c85c37561b08946e2004e0e3386 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBox.html a2a1e6f25dd276180583f9c1232deae042b9af6953555994ff04f9f69a7825af 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBoxSizer.html 8ff0a11c2eac42ce3b0c6898c96059255cdc301b34566755b0bb0f57fcd90479 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticLine.html 4f457754dbfbe0f0cf95d4265a36c7135396826de4356ca30a4be1e35ee90ca7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticText.html 18596da738af4203ffce5633dcf2807ee55f6a4f96c81f3d8e960f6c22cc28b8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStatusBar.html b09a11bf22f04b4722f9be878155d5ead599f3e2608088390e16ac265c69604b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStdDialogButtonSizer.html ba5e4a4c941dfafd8d34c631f9f98a273c0ac91db4a6f83a0a5b110c952c56b5 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextCtrl.html 3e4580b486f2a0d93cb1604d4562f90284c59095ebfac40fa033605ac39f9783 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextEvent.html 0f2a4231a616f7baa59386963da017b48e6268e448609b1e46256b61c5249d3a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSysColourChangedEvent.html ab4bb51373741dc732cf4622a04cc4fdcbf7886063bf6a3fe53e112287e28d9a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemOptions.html 37c39d0f6b2c8bffe669410cef04394da55fea35f9d72116dd0dade20aed0652 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemSettings.html 9fea3f4953d5c5514d597995bcc489d82136274975911a8558dd40f0adb0c538 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIcon.html 68e18770ae555d385e30f07b7fa53b509c788d3a57b338a5f0428a4047782dd2 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIconEvent.html ffd1101cc0a5655817eda99392942a26ba98cd9cb58f33246e6ca74e5af8a6bb 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextAttr.html 4994cd2ffafdb0e7af5890ff60a11e2ff52a090dd5a25ffcd1e7ec224a427e9f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextCtrl.html 9d6b6a5969b452bd50fbf4d3145060e88daef2ebf0610095a82a3dfee64fe680 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextDataObject.html c45b18cd2116c39ba2556575e1b6207d0a4c27b9c3b0b885e8ebd3ce2afe2c22 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextEntryDialog.html 80ddac845527de7621a1a91111253e48cffa7cde65d4fb325a119c2b830a7bea 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToggleButton.html 36823d74aae001e83a0922ceb5665b39ac55cb9bb885653b58ea80493202b646 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolBar.html c1346167dce3691cb8e4474c82d25cacf7f6af78756594a2bea89061c83a099b 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolTip.html fd5d351d81499653e3df44525ce85616bf1652cbd4227516da6c1ae7fcc2db67 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolbook.html 612a4e61699af7ca7a9866dda841cfae5eb472cdcea3b131483b633611adeccf 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTopLevelWindow.html 16e09e1d2ff9367ec863a79bed1218fd3d6b62728bf463de90b73d01c837a021 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeCtrl.html b020d9418cbafc2b9994d514e6a0ad31e0b9eaa06490ec97387ab2a88f3a8db4 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeEvent.html c1b24d69df4f9bae322a01808b46ccb7a18ddf08d67361b137d795f0779b7da3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreebook.html 691fe80e82cfb21570e40134df7d05d5a3131ce2197f3fd7aa1b48bf63bfdc6d 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxUpdateUIEvent.html 2537942eace31f031eeaf1139d214f8b9ec0ed9653a5eaa2de57a117f9f6a9af 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebView.html 43cf84254fec516e0b60e16f5765d61368fd2299501ea9e9cedbcf37a195c2ef 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebViewEvent.html aa7fc06d3da1faa5ad0b84011a4073d77332b40bd363ff165469c479f3a861c8 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindow.html 0fdff4b88e83a6ec367f92ee9bd0f48a65aab94575f72735e06f764afdf2f30f 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowCreateEvent.html 83110e5825144668b338f9184329c2e1ed2e11d9b6945661f51429e7427ee6c7 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDC.html 48dd6bfca836f3582467a47dfcb3a6cc5d4581b8b17f071a394141797f5c1b6a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDestroyEvent.html a8461652808a1fb917860ab9a66738b7f9b2be2701eee718a1eec5ca9b22fcd3 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxXmlResource.html 3263945263ad919b7f93bc2040995af667e897529b37f67ee6c9d630a43db90a 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_misc.html 89dca6a30af573777ec7a06c46588e46672eb3439abc66d7aa99964cc85f3617 2 -/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_object.html b6b71b1a4375234fb24eb85627fa8a19d22a1596dd2be1635ce85c9a2b05eb84 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/notes.html f8b8bd3f96883efc7ac7f6cb7722dc7b0c846a32134b8075870a850954f11cf8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/search.html 34d3676dec92c20435b3ad96c376fccabe9452c42a25dd0d3868fe84d9fdb84f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.epub f1f537281c7ba0beb0a11397abe0f96db5a5395e6cb3dd0e50bd50d7ee005ee1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx.html feeb3ee586c9044e73558717243774c7174698db343296774f48631dd78b57c0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorEntry.html cf749ec2538ecd488b1a0289dbd30bd5e13adcd48d9d3a2b360f72ca67f7c6ec 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAcceleratorTable.html 7087e241cd3eda6f936bf97a717271a5081fc82ded1e443892b9a3d7e968ea5f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxActivateEvent.html 7d0cf7c35307ce9143b3c4f322bb3946f190ba5d66f66c8d6693d6109c1c78ce 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxArtProvider.html 106d29a063cc10d63083fdac28f688e1c42c024d045883ee6fc5ce6e7544313c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiDockArt.html 04223ffad51c3a89746719046141dd24bc9f82641a68a1e44db8ffdf2f0f1165 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManager.html 79dfb75bfa5ef5e87ab0ee5b3e1c78388028ad1be5a4adda45f9c663031fcdd1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiManagerEvent.html 6a1392363eb7607a48eafabb8c5966634679579adf14ff59cb500a87913a20d9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebook.html cbf1559ec4f93ee9a09cb1f3acda2bdce028325147b5b765ef2bc5255c6c9662 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiNotebookEvent.html 2d71e30cb1739b1f5bc00327ae5092f8862d7987f815917ec4d3579bd1e7b788 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiPaneInfo.html ce1ca298a78ee13a637f3c2ccd256326bee00b7c2ee4d8612bf11a10216284c8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiSimpleTabArt.html 46f802df4b0834d5f88984c6c2a27e42185592a39eb3511adbd4404fe1cbe32e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxAuiTabArt.html 2401cf810181afe272f675817ea5457104a91ad554e8a744e2b049ac8d0ff2ae 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmap.html d7b3869df2e8b7799f89eb41bbc6536be2ca3bd717b8ee1a1780ffeeeacce3ac 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapButton.html 53a40f2724250fcf07a7d61cac983f70c01497b677c2fbeb5fb58331bdae8c20 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBitmapDataObject.html 7727f56bdf38f47d5bc30f0cf68eefb7b00737e62e3a57b013d5db2cae5578a1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlBase.html c4e7cca36825f9b3bf1e02827017caa60f8783475d6d40d4b20de2e03b95321f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBookCtrlEvent.html 421cde9eb5ce062aa65418182abece6a7d52f98b5006ed48eabd7046ca03ef36 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBoxSizer.html c1af71c606d533d7054d594bb86c66ffe380ccf497aba0b0fbaed3971137cec9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBrush.html 06bacfbe6bf8feb530de8d3056bacd6dc37d644895d3e5ce008bd9f89bf2cb8c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedDC.html 9bca73b8fdb0fbc79a1e6c3d92664c5bc3fdc50efc4a3516078248d513f1182c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxBufferedPaintDC.html a6fe80d22d695419bf7513a95e07bba049ba9f8a1b9cb38298d7e0a483b35ee8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxButton.html 0ad1c87b6f685179adfe9157f5639e6ac5669fcb4e7d8af097e7917c588ccf5f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarCtrl.html d1ba00ca5d787138e475a5f66ebdcf67d829aec1d135362ff995d9cca8748a4e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarDateAttr.html abe6e2a37325f0fe76952537473f1c765b01fb99910b1c9ab9d1a8e4f52e4992 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCalendarEvent.html 7de3fd54cbb1fe569ac784b30f088b474dccc2376ca68f01cb2890ab0956028a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCaret.html 5913718f4d22169b6b07a6c6e0804dfac7e58289f92703dc94c72669421473e5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckBox.html 835528b6c50c08e8ff83c64aebd34e90c47fb37c2ad35cb307368b87a78703fd 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCheckListBox.html ea4696f6f98e1d68978da1b1de5be6d0327961edf1eaea3fdfa5c9ed24b49472 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChildFocusEvent.html 71dd49010f77fde64eaf7d5301231a992b6207f1ec90c6ae79e7013a77619606 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoice.html b7c3c3d787a641473c205a47ff28d30fea0ab17b56090763fab3599ecae6cf82 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxChoicebook.html 90e90bc671136908e030f6f3a2b3e269e87392ffa370c19b50ec20ad106cdd8b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClientDC.html 4de68c4a12cd8c0e388f906c5c81429b11be8e764e76aee7c88123de802787f8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboard.html 9d09910d6f0e23153a95e6e039b75d89cd2cc7451345a8b111c06f8722ce5b71 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxClipboardTextEvent.html fe02fdf128aab62c724df483cf7849ff8aa5e5bd7429e2494debc96c7b93c270 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCloseEvent.html f5a4ed02fcfa510ec925aba108326ea40fa90350e0a3c10974fcc23d5635d1d8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourData.html 479bed7019eea95f80665eda5dbb556f3e5259128ab1f006df906e86b7d39969 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourDialog.html 0f91641f8ee28616b6f69f67a713a3048caf290691f8ef0c7ed45c5891d16b09 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerCtrl.html e5c9c100e1041fa3917ae10855b9f96c288444c344f37929ec95d146c431eed7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxColourPickerEvent.html d8eb2b22d4e5bdc3fc3a59c52525b57bc0dab2e9c8be37affba475397714dfdd 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxComboBox.html 0e0c1e5512e3795b167a837c97aeef196df01de7411f02334653a4ea9f9e475d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCommandEvent.html 8fe6d2e0c4d546bc6e27d3b5cd569d63090800f54d6132dfa249f7ae2127d023 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxContextMenuEvent.html 7772fee09ba6650f645c55de4a5877a221f1433800e872db7a96c578dd9aafe8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControl.html 813c63663debb13acae8e339cd9b4e54e4733fa8ae341fd87595168e9c83a7d0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxControlWithItems.html 482704d6386542c47ee002d172c48584baf359cf919c0c19181ef982caaf30f6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxCursor.html 2140b70ae3799451e76486785d3a2b4be9701a12dbd11ff95fc7b577be5720f8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDC.html d56b63e9b5b647ba6ee3dcc24ea69cc7bfac2dd25f96896520102bdaade733b5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDCOverlay.html d0e3ad7aca97246d8743bd77018697cb7d38b2d965b8804b8710807858b1e88b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDataObject.html a34a16ef99d8602153d36056d21b8c4cc3a0cbc41189b7523efc8015d3f8f96d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDateEvent.html 374b4f9866df51614f872361eeb3baad32a7404491c6ecf68121833315a0933c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDatePickerCtrl.html 9d09a6b6adb8a3cdda7239d781c090ecd15e96fa14f6a5bf153ea5346f211a22 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDialog.html 0a83b8da17f493ac3c9a8e9a3099a2853aab4532819b5d641027f26d4b009763 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirDialog.html b0aee8d78994c770d1d7408684933b4c005a8ea7b93dedf56b0fb6130bba73ca 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDirPickerCtrl.html 2cfc4e771152909ab8e94d08f9613bcfb3856567f4b4c7e651cb22565571c212 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplay.html 3e51592c3de991f8f5af14fee190365288736992dcd22ef2623e5af40989f228 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDisplayChangedEvent.html edd823e8eabeb9e136a2f598b0cdb0ce843a19dfa997a4d25add27abd6ca9ad8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxDropFilesEvent.html 6fbc04383bb1976c4af25ae419b83cda36bf6bca6acf77f08b364bc8fbd4e131 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEraseEvent.html e597a92606d5af8863144f120a5214b9fc52160f0b7336c4516b2f4a898e5d11 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvent.html 3c7f449f54a36f492a1938575f82b4cb4004d2b07d49df50ca45bc871c3dc665 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxEvtHandler.html 080352e16bc38407e63446141bbc3dfd172d9be5805f9406635011a9efef3508 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDataObject.html 67d42def0503526b863da481c67dd03983db2e50a2f44fa0a201d4f2f55e4842 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDialog.html 770e7e7893ea70ef556e67a2a2a57c65eed85cee165c65868c1568ff41c712e3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFileDirPickerEvent.html 12c6c815585201b426e64af4f837684da62bc6c7052461b48cd51d1d9d80a169 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFilePickerCtrl.html 13ab0ccc3a07f4913539b7466a7742f0d00836d7bcf48a9aa80b41a31f9bc194 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceData.html 0a9dee2f0354f464051d9e0323e378169ac9670b5663c69aaf1cbcd85e710dcb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFindReplaceDialog.html 6a454d6ae8f24971b8def88cdd76761238e9486a399d0a02d4a1a5c85c74e029 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFlexGridSizer.html 0a4d416081687ac5434438873d3e0cb93e61489b163b047e43a14575299c4a5f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFocusEvent.html d1fff3043fd2ab8ab07fbee542cdd0cb018c14e0890fea4fd8e6144b0db9c3c8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFont.html af8d20961bbe38c5bb5a1912df0a93688c2c6793b2c69a6fa3cf085df1a0b4c8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontData.html 06b8ca8f530e4b6c58c2c98cba48200977184d46601d18c78deb7c5f49d70c9e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontDialog.html 6defcbb0b7cef333f645ab574a968f5c5086702763696a3910faf1b66a448fc5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerCtrl.html 325cb403ad9f9ffc1ad12e60d8fa49fb5563845ad25ba8596426cec9d88498fe 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFontPickerEvent.html a708a418ace42d9f1959a4b23891a9d13527a5aefd2f26948b55d067593d805d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxFrame.html f08a2bb334efeb72ae503aed36acd784e98312953731609e40ed2d4a93741eaf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGBSizerItem.html 358ff69e9367395361da8053330e1c401a542cceef19b993c6b96511d213b52c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGCDC.html f5a806d66092d7e36397da73e2de8ca519f3ce112a8b5d5548d6e2b184d4261f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLCanvas.html d0b602756b1928b780aaa3414194134f6773e698d59b12eab333a2ced2b7f1c2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGLContext.html ecd7b133192909dd62820e36501297b47384ad36c28053c06c4ca4f0be7a8acd 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGauge.html 1da8cee161568fda7ad890855d74ca90fe8df8dd2c11a0d856d6af89f83ae258 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGenericDirCtrl.html a174ede2cfdd28ee039db44069490f9ed04961dc834d88880ba57c2ee2718ce5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsBrush.html 80c48e8bab88147056d762a56984be01ff3be846f96bbd63986969f77ccb7e46 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsContext.html 1d552eb8b117c909a9d9f691c3491387a70213cbf952cbe3149a0b533657b89a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsFont.html 3a58cd9e6a0eec2f88bfa9cf9fe97ed7290bde7e9e1216d7ff887eec7e490921 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsGradientStops.html 6299a88d8c579815f90767f2f374a4a2db2da29dc0a7f0ac3eb73a8386b62528 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsMatrix.html 0ba596c481b36625ab7adf358c70eaefe2eba427664e2c8b5f756514dd28b397 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsObject.html 875cd732e0380154c77fbac033c6b79fa1cd1e0d8d8ee2596fdccc942bc8ee0f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPath.html 3c314fc51a6e12eaf21356fa09782bfcef25de97e8325cb3d12b08049cab2b2e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsPen.html f89ee298f63e585db041bc7f49bc796e6cf8b3bf4c99326ed500ca55ec3c0ec0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGraphicsRenderer.html 91a4331cdeff453e224bbfa9648af5413c9f6b33dacf7c515ddf71d761e455c6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGrid.html 1f657c2d05981a343ae35959a73e2f5336a22434604f780d5e00e35bb18e3b41 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridBagSizer.html ce234ed0e36701380f3266d96ec66dde5996f3893b741e6613e0786f8f85ab75 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellAttr.html 87f0a1e644f35933cc0a80c2c4789c4d3322bb05efda49ac226e425f415c771a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolEditor.html 1782f122d32f844ce90aad84f486eccd3397191280173b63563f51383aa7490c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellBoolRenderer.html 99ba625fcb4a4c930b13f70b0dc74a7d8d5842885682ad7b3ba15ce20f6c5324 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellChoiceEditor.html 1e205feeddeb6e3af9635f20e466499abe29377f8ad52599989feaa53955d50b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellEditor.html 4721946a0d6a0aea4ca3c1208c81ef947258493e9f67ba0904f9c9a53a8e9138 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatEditor.html cb05f318b29d9175b164b3ac3ad2e6998a49ad58184504256df0097b072c6ae6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellFloatRenderer.html 000b26d16add56fcfa17e6d9e2a3bc9ae9a3f1c26a11f46471ed24fd3433ceb7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberEditor.html dcf4bb6e87f25109735fef497b043b108de481d005ee9da98f08ed757ceb6804 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellNumberRenderer.html bbc7beb52efe899b503da403ff2fb2b3b35b6b88ebf34f352148117436aabb34 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellRenderer.html e1d31053562e81ea35cb4d77676e1b546322343751323e04f79dd6489bfa00be 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellStringRenderer.html a5d8ed6854d1b2bf86845c98e9118dd90092db94c9782273abfdd582b034f67e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridCellTextEditor.html e0432cad5c61676187db106fbda8d5c6ac0a35ea285709f93e6d2c240f29d533 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridEvent.html 25bfff4843940e6a73e1972f428e7a4c2adf5c57e2f59abaa2ecac66247d0258 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxGridSizer.html f08ebbcd0977f3fedbba2ea09fcf3294799f5987c0a3990bb221c696363e294a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHelpEvent.html 7634ea6366a058930567d730e504fbfba5fcb73ae2826fc8178dde26e907a96f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlEasyPrinting.html 63d65ec634aea81d9667bfd74948d4c9e5a244ba6499cc4e9c56d6142fcc3a31 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlLinkEvent.html ef0db1de88e2364a04195f3086ee48f464c1addf03876c0f979229bc14efb4bb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxHtmlWindow.html 7006a43303c6e65b39ccdd97a65dd2d5d2209bd88643da9759df010eb630e4ed 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIcon.html 0603b3544688cdea96c1e6fec9188d49ef302e4eaa8861ad532b0eb25cf8dddc 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconBundle.html a9499b453e43beae6d01d784068ec57bbada35a6016c4a854329338ffc3d5686 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIconizeEvent.html da4f99bcb759cf1e686aa8e2ad933ef8ee97d99f2bb9a809f777cb2f72cdf3f8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxIdleEvent.html 348c9627b3230b5b6b3506ea379cb8e75d954bd0da735cbcb7b50a3cdf08ca44 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImage.html fe0f43749e9036dea2e8f7027b62bf17c1ae361d5ae7e3e1aab653788bb4b7ef 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxImageList.html abfc2437dc92363ef5f626283c1663350b7931abda7dad6fa12e566eb4301e6f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxInitDialogEvent.html 2ddf64b782ab0132f1218598b72447eb32f059b9de72174eb3072ad05392adc0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxJoystickEvent.html 109882e389370f7bfd6b7f849c87048c9534724ff0890e630e9ba410fbcf818e 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxKeyEvent.html b7d49044147c6779ff8e3172c1e80f87860778f4fff991a731344e7374bc2c90 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLayoutAlgorithm.html 40426a92dafcf015b25b9719a3ee3d9b59bf265b6ed1224e2b3d238c0301b175 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListBox.html 4911b77df31e89755829a5d7ae4b0f6184c3817224abc9b0b8b7e90dc7b0694f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListCtrl.html 40c70633d60f16bd5326afd3bdd7d95bf4627b943471c64fb353cceaebeb3bfd 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListEvent.html bee9f4e82db540b8785c9d08dd35029aedcc316bae6079a747aab7e38ea05aab 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItem.html 7c5a5de15600a85c12dcd79c825e40a5fac42ae11320ffc90f1effdaf7722469 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListItemAttr.html f8a2603514c8edb35a5e994a9fc2571b545c78892da3b6670c60d94a8d8aa7fd 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListView.html ca512f1bcd75fa4728aba4b7e7bc481b9ed3974d0d3db5bda626fe2ff46d1f7b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxListbook.html 779ec2aac9be1ea50785defc70fdab9730f6f01a821b4172f068f12cf3abc172 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLocale.html 145e613b0b2b7571bb605730b63aa40dd3c45ddb0d313e96b0886d5e839aa66a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxLogNull.html b8fbb506c34404722a9607e01e16827151072182fd734f80b0f39483cef592d2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIChildFrame.html f1e9c71b277f035f22cebafdf52eb28c64518f6a12453bb4b1bb10f6a9b24b6d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIClientWindow.html 5f2080e32097a83ff0b1366841672d841ec01fa791cc774caf3ccc5b2383cbf6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMDIParentFrame.html 8b89972a0fecd35cee9fe51ab5c0015151fb96cbfd4b028478a24884ae4db4b9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMask.html d6f6d557076b715162638828ff8c4402b534c65d25bca5809744a96431a442c5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMaximizeEvent.html 3fd3cc135f014850ab3715d318ea6db5738caa25de1452906e26372c3a5f381d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMemoryDC.html 9115e93c5b6016edd5d9196b865c42406950b752766aba3f6dbbddd6322555d4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenu.html 0d89f96de88819cb428c3a452375fd1c62419839a0207d49e7e082a9d7374504 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuBar.html 62d544b93371774be87821f20f021ec41e19e2b29e09858713dbc4410a054470 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuEvent.html 04053b4f654a064e7b5a607177a6f210d75291b8dc4fdb8e94a8b12f26abeb0f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMenuItem.html bd690959c33b70a85963183f8a21c47cbf816c7c460da93f2e630dd1f086684a 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMessageDialog.html 86ef1f3a0b11a7cd58570402a1906d3b825403be7c7a5cf94272743754c32174 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMiniFrame.html 495690e95d72abc1724469cdffa1ff83c0ba0ff0fcb002d6419e83685fa74de1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMirrorDC.html b5955bdb9d058db96eb447a66f865c5bf9233af8779edae9a559c19491e17bd4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureChangedEvent.html 4ea250cceeb10005b09f10666f69165626f4f03db25afcf3ed05f8e822a1ce69 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseCaptureLostEvent.html 39b2bb36c90bb000125650d8c46a311c4906ceceed87f5c9b3b7e20885e417ac 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMouseEvent.html d790e506907ce8cb32fa7d84d7da3212f9dd1d1127e989d242e2bd38cb88beeb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMoveEvent.html e0335b65f5ecd6af26f17a7598bed08ae923fcd5ff369a763afb71079d60cb77 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxMultiChoiceDialog.html 90e245f88ccd9de831b8a6c019883b04496c032da5fd4424808074ac36e165d7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNavigationKeyEvent.html 57944478ae915030c5a8b673eb332627781d34280e4a2cad8326e8a608ce37f2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotebook.html c0624e6c96125371900da8504b812fec3103acf75af34f343ef0ff2fffffea66 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotificationMessage.html b1deba66074862c902f1e8e88f9c7094bae794cd658ed3568d50887f49b99ec3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxNotifyEvent.html a6fcf2530cfecd13f5a2c3754ddbc64d4e9e9d87df7385616b7aa25f10ac03c4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxOverlay.html 45d0c4e98b099476c242c42e8c31fc53ab08ed60325ea4273165a54fab481770 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialog.html d1c3c951eaa1e56fc21f7b49bfb1e26f375b12bfe525d60dd7cf5dc9005329e1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPageSetupDialogData.html 2536207de0a2554695dcb56b0bc603c3804c69d2634e5d3c7f203e65154d7d8b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintDC.html e30c5f402e08a9dc044e2967a304b8c47a9f110f1cee821efca168a05f6fe085 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaintEvent.html 386cd7b6071ac8463410b13a914efb7822fb79f108cd87b57fcf9b852d572c92 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPalette.html 7fcd41e146e7f733cc3c8447444ed844f9ec139f6296a338e744eba653b4e349 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPaletteChangedEvent.html 0d5b45c8264a159df1db702ffa2d6812aa90e8cf86306048fddff3c0497aae03 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPanel.html cba8e03465035a7a3c32379b72c023001542dbfddab5da543513104b175f1d1f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPasswordEntryDialog.html c3b508aed6ae370a59cda91b4c47021a85d5c1439135e6c69c72faa968c53a04 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPen.html e8cb474035d4383fab428778c8c875b1b22215647d293767cf57b98eec87ed86 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPickerBase.html 769d243625585627c70b06fccc5761320a541304661c1456d83732da56b5f8de 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupTransientWindow.html 41e96a84a5a258d14d079038e29def63cf223470393e6d1c9393cab02b6521fc 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPopupWindow.html e572cf34d6cecfae8e77aef6b0321d94ccfb390e782732de8218b28b93a391c9 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPostScriptDC.html 79281fddeea7156dd7889270994a381338bb01bb0acf9a483fab2d1b89aebcf8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewCanvas.html 7f321cef763e75a52503cf854cdfda2fce688a5f2d3d837068ffa7655947f54c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewControlBar.html a4c4b81f0f8c14a65b597d1ec96a39dfd49424ef772b61a27243ee0f7df7e1de 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPreviewFrame.html 646d63014ea7e40ab386736c25fdf66b086e8fca2c0541949363da421ef59f70 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintData.html 2ed5aef7d65530223811f8b247c018af87ac39a79f995ef8feb732693dc3f51c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialog.html 77a4f12bd4bc814cf55af1ddc87c9ae2f8ba2bbf52e9220d0d1c24bc10941626 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintDialogData.html 5c568e5b3931566ff09d741c41899bd6fb1d07853cdd93bd555b4a5b95c0c888 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintPreview.html 4332ac506cdb79a05b0b30c30b98ac2b0f6cc9b810f9d51cd6e87fe19c2446fd 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrinter.html e3db2984ee5711cf2b1208d786264b0d028ebbdf274df874cfc9e8f9939a18e2 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxPrintout.html 4c34296050a4f1ce133f0ea4385025a7e8f577fad0553bfadaacdfa9ff874cc1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxProgressDialog.html 4c083c457d78b854cb2ef35daa78d04633b5607ab7d6790fa096e605e20f0529 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxQueryNewPaletteEvent.html 3cb99d359ae0a6d0c2e56de0acc55006c4b61c5dcd5e6b36e8fbcad9b88ad24f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioBox.html 75d540b32fa1e607c51bb528435f1fa51bf67b137dac0dc58eebf957f38aefea 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRadioButton.html 160fbe1084f6ae2cc0c0947cfa51cf9186ee7299fc250fb156bd1ea2f4093aaa 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxRegion.html 86082d7aa843d32f57099c4a98e509d7cb466b2d47455ecdf50c2b290e274068 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashEvent.html 7f817475223e28ce0978d3e53a293d78f3e40455a602557f3ec75649ab7e3b69 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashLayoutWindow.html 87f0ff04131039b3742c5f4533cece25b5ea9449693d3454401b4ebd2b0e4a21 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSashWindow.html 36a46ee692377bc6eab91c4d600d4b5920fc9f2ac3a1ed4386d98ac3926969ce 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScreenDC.html 9d9fd20ac40cf12dcbbae3c2a48925de50d0216ff8594caf8af241da4b6de0de 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollBar.html 4032dedb10d080bbdacaeae038dc5e91a9b1d9cf5cb3311967693add38585119 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollEvent.html ff81753dd6075a1e91bbde629d25c6c35cc7efd2d2d3149be66b6fc85813bb79 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrollWinEvent.html fe0288122deb41564be4119a462d3f3e8095b463e14698eb099e0122ff9fa5d0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxScrolledWindow.html 5830b3961620489f76e4f99a953481cc13e18a2bd2d2306f41d95239531764e6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSetCursorEvent.html 7154a7649985c82849ddaadf25ecf0ba24e38f9b5a4398582f3de8e79552c895 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxShowEvent.html 89dd9c3fc58f33efea6e91571ca14b081d199bfc3928d1a88d5e253761d4068f 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSingleChoiceDialog.html 67c4b33a7662b912695902dc5fa46e16f7369e7d9ca8e1d674ba8b8dda4ff18d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizeEvent.html c1fa8075c4610338c013cd89d9b86ad141fc904bafcf4bbe0092188da7c9bdc8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizer.html 554353643cd1c72b80bacdf372364238dd0d5d3fc66cd9eadb1acecef9bad4f3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerFlags.html cc7fe9947f397a7cb8d05c8bd278606dedb7f2134806d629f42e54a4c9ccebb5 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSizerItem.html a91bd55490cca58024ac2856dc0a9c0d7ea3d649eaaad671cc932b0be2562bc4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSlider.html b65627f57773c4fb4aea18d17c62cbb10d44c9a6569cabc3c34ace31523048a6 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinButton.html dd92ba47d07fabe318ee3eec75ab82004d2ba763e922fd09e843ef5b451929c1 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinCtrl.html e9fb6317df26350ff9066afbe2170dd4ee91eccda7b32eca45575175fc091fe3 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSpinEvent.html 71df8918466bc4a56d97fd27d64a27a73fcecc1973b3b3ef141a07101bc29fe8 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplashScreen.html 1a073570955f188d88858993835f42f536973c022293d51ecd439f36887ca541 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterEvent.html 63d36e6da7c71cd98cb717c6c9793d028e0b288d1c4179579733eadc74da1fea 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSplitterWindow.html efc8fd6a6af8fcdac31edaec79c55522d04f83bc992f94120751bc36105b85bb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBitmap.html 4f3750e2373ce7d04f416088ca0dac4b6b298e1b050404a47e36b318f069a959 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBox.html 2609a1879522576fd03e84341f9b377da45f852d98aae214c7eaa1bba11272ad 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticBoxSizer.html 550c02925846ada28531308545da147d746449bf19a18e5fbdff8fbd84c38aed 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticLine.html eff182a36c24218034782c0df77ac15f2c45271044254a1af44ac91665c1cfb7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStaticText.html 406310ce6d6b6e16f777352682e07293d5213757399fca9b7282bf08f151fc65 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStatusBar.html 476f7a9ab358d8ae51cb5b926f404660d5a59dd7b4cce80e2c565b2200adae86 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStdDialogButtonSizer.html 095122146bde1a8050c0f74c5de0b066d5714f39ce1b298eb73be96384e83d98 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextCtrl.html ce0dbbb59eb5974914070b8451c536229134761f4fac21b2074bea720332d86d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxStyledTextEvent.html 2a33f934618549adba9e0ac02d1c0f0196613dcaa8b4fea3af313c4eb4443beb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSysColourChangedEvent.html f4ced2f23c20f13e1b1fddddf36e765d9201d443f38d558997a669c0d022768d 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemOptions.html f1b3fd1e6efa7ad58dd951fc7bef2df701d5102ba2a923c3ac1dbbe0f424945b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxSystemSettings.html 74b1c1a2f4c1a4d556fa1dc8d059a21205d7e9887a62bb4798cbecdab91e9d38 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIcon.html e9001f54b528b0cc6082868e06e87b97e9f42b5cd003e9919da0f1f439dbfcfe 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTaskBarIconEvent.html 2c2f3427c3667211ee0660f6ad82aec872209e887516a2caa01dca7695ef87ce 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextAttr.html 415b09a5c3c8906c20399d2c48d88128c66b0bfc0ee25ba49a7344fb2b43bfbb 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextCtrl.html f85e1a721700bcbdc579c0ed2c1bd7cf514d41cfcf067ebd390e899edc6e177b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextDataObject.html 83b66215dd3f3c72ead60406246f00f7e57c37cb3a90ab1102460daf7283bb9c 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTextEntryDialog.html 233e0cdc1898c9863f297e0b989b1782d4c4b44960118a71ad3386183594c930 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToggleButton.html 0b2c5e42adc1125488df82038f554ae68563367bbe81b5ef295d620f49464fbe 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolBar.html e04cc013fdb7f538607b090d10e6f7d2d7e2223b6983aab52c2db2db6c12f0f4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolTip.html 41715af77962b27c7b3a494eb3a34c615218e922211bba6328058f4a3f3fdb39 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxToolbook.html d160a2ffaee2803fb5ad821257d948e55ef9bd586a5a6229a1840a6f01cdbcc0 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTopLevelWindow.html 5c2de1d1f3806feb9e25aa4f6c33f951ce30c5790e8879dc55494e1498974bbf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeCtrl.html d1c9aadb9135e4d00e3e80d70945c2958f43e9ab10a64d50a34650fb917a7c34 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreeEvent.html bb35cc335c04b4ced6e972ecd9cd49cea0c4104252722abd90dbfb8bb8e6e411 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxTreebook.html 8e0673da74bb5653d6c02d61ed5c795510a5824242ab325d69795401f371e8ae 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxUpdateUIEvent.html c63cb893441434cdbc74895001ed68bb8f57629b9cbe8dcd197e007885c5f679 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebView.html b30a71057ea659b5330817e692529db416ace66a30a76e4d3b69cea180ffd0ab 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWebViewEvent.html cecf4ae47fcb97d3dea192f9c67ddbb7b42c919d89ea0137a6d015c2d94401e7 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindow.html 9ae93af9207e06b414580c115741bf81949e480e329f0c7094e2b522510c6dda 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowCreateEvent.html d9d9cf6f66c6d68633ac189ddb69d664bc80353e85142439ba6b3f8fa9dc9923 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDC.html 599d472fe76a1bc32fa79b6fddad0b172a3df7be94275f8ba31ef6f3aadd608b 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxWindowDestroyEvent.html ca7804a60f82cfaf92fbbd7482fbc75e1bc09e5caad114def582c5211afa0cbc 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wxXmlResource.html e842bbd84d4e32bf6aa3bcf875805830b23da5f992b0c3a9c196e64c5bf8cccf 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_misc.html a9c564fe4e5f8307cf1348f98a86c882dbd6fa83917efadee7f8131a5dc231c4 2 +/usr/share/doc/packages/erlang27-doc/lib/wx-2.4.3/doc/html/wx_object.html 0759f89d48b7339ffef7809ed228fa6135d4026720c8a1f5ab79642c9013fb55 2 @@ -4563,2 +4563,2 @@ -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/404.html f96f4501e114ddd06dc4c23ff882bfec392f8adfe8b9c5147f62b9ecc93a58af 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/api-reference.html 554fe337b71fae0d8c623d2cc68d49ebcfcb76c8d87d3b94409b3dd7fdf6e31c 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/404.html 9a597880ad412c94f6b391f5d5c419c826e10db685e51208ac3b89d6a2fadcb7 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/api-reference.html d3382db7ca375de650bdb894f2f4773a65fdb0f8e550036e59be4effb17f1d33 2 @@ -4599,12 +4599,12 @@ -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/notes.html f479f48d007b5ddf554236481e202146a66f49e672d838931b51d6b39139dcee 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/search.html e0f37cdbce3c19e8befdf45a76a86fda5efaabe5376eba20eabc1c5c321778a0 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl.html 7295bc1da7372d83cc66eb4bd53aae8de089418a15193a83c1df3daa19c947ab 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_eventp.html a7e8ea9bf089b61f9261d1b57c637bdbd3d2eaca741a435edbaff0d63f3f8a18 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_examples.html 7b6aaf7f44fcd3f8d20da5b0d5f1cfb0ff3532ce437436f0fb6e4251fefbffaf 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_sax_parser.html 8e168903563b653be873a795e2a33b1a29cba9a29981be211f6d72064e905fed 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_scan.html b33a074a58b3b01f8e61e734947113740a4b80c5936038e785c024fa04945292 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_ug.html 5f1c01b1fa59b1ca76dfc7a86042473d2ec901827e8f25fe103affd24bb237b1 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xpath.html cdd54159115604e060c8835570f8584296fdb9425387a2bd89daa857bb1ee285 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs.html e2e4fe5c14525b46dcec4da60f4222268480501ede85a0d896ca6920b0a2f360 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs_examples.html 4199d9348fb433de62ff887be5d3e36d5316494d146e6ab465bdc30e511af2c8 2 -/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xsd.html 02d9849883277d6b0bc82430f50be1aa3ab0695ac36bed0ddab63dc8d2919fd9 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/notes.html aad96cf431f1d4821e3412e0e2b81dc0f8b447198afb11de91475af38bcd92f8 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/search.html abbae852aae641cb99c4c8814a25a71295c112e41720492381d52109fafe9798 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl.html 119e136f69fa07b683a401d6c4fc8e6f67b4e7c0095976feac0dde562afa4546 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_eventp.html eba0a41c3a1905e86662b04e2f972949b82a250723face975fb5e7f620603ea2 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_examples.html 454e295bbdedb9c398f2743fe11dd98a1a8328ff7aea4ded81c0050fe198358e 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_sax_parser.html 5f1d10e233522f766b2e6762e4ddd52d9ce4aaac3b6fb5855ace674601b722eb 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_scan.html fd4ce7c9bdbfeb3d8ea0189e344a179066d91d8e5795bd86de841c960e9c492c 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_ug.html c5be44a3d1c3a7d12c19be9260bfd1707f0921b01527decbeef34fcf90dcc249 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xpath.html 3d9807c68714da991e68522e85ae8414cb34c20a62dccb5728051b005b9883d9 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs.html b946d2ff2a7b249fac78d62fd7c76b74eec7b8d242c1631046d65ac3faab5ed5 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xs_examples.html e839e58c49f3ce6055629ff4abade1306d3115d94e2fe784f3c4cb5abc653ca7 2 +/usr/share/doc/packages/erlang27-doc/lib/xmerl-2.1/doc/html/xmerl_xsd.html 53d79a90aba5b2e59fbcddb6424b4cb210617a7cbc4d5592e287559a3ff8b61a 2 comparing rpmtags comparing RELEASE comparing PROVIDES comparing scripts comparing filelist --- old-filelist +++ new-filelist @@ -436,7 +436,7 @@ /usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/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/compiler-8.5.3/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/compiler-8.5.3/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/compiler-8.5.3/doc/html/dist/search_data-961544C0.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/dist/search_data-D052B73D.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/dist/sidebar_items-505D2234.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/index.html 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/compiler-8.5.3/doc/html/notes.html 2 (none) 100644 root root 0 4294967295 @@ -677,7 +677,7 @@ /usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/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/eldap-1.2.13/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/eldap-1.2.13/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/eldap-1.2.13/doc/html/dist/search_data-FC950B1D.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/dist/search_data-1A8AA22A.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/dist/sidebar_items-A81F2B0C.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.epub 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/eldap-1.2.13/doc/html/eldap.html 2 (none) 100644 root root 0 4294967295 @@ -755,7 +755,7 @@ /usr/share/doc/packages/erlang27-doc/lib/et-1.7.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/et-1.7.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/et-1.7.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/et-1.7.1/doc/html/dist/search_data-F7B0262D.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/dist/search_data-B90F468D.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/dist/sidebar_items-207E2C66.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.epub 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/et-1.7.1/doc/html/et.html 2 (none) 100644 root root 0 4294967295 @@ -828,7 +828,7 @@ /usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/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/ftp-1.2.3/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/ftp-1.2.3/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/ftp-1.2.3/doc/html/dist/search_data-DCE6DC3D.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/dist/search_data-6DB131C5.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/dist/sidebar_items-B6B07F6E.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.epub 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/ftp-1.2.3/doc/html/ftp.html 2 (none) 100644 root root 0 4294967295 @@ -1148,7 +1148,7 @@ /usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/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/megaco-4.6/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/megaco-4.6/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/megaco-4.6/doc/html/dist/search_data-492AF504.js 2 (none) 100644 root root 0 4294967295 +/usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/dist/search_data-2DB78EC4.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/dist/sidebar_items-50746EC9.js 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/index.html 2 (none) 100644 root root 0 4294967295 /usr/share/doc/packages/erlang27-doc/lib/megaco-4.6/doc/html/megaco.epub 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 2026-03-12 21:48:43.894486933 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/404.html 2026-03-12 21:48:43.894486933 +0000 @@ -131,7 +131,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:43.918487077 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/asn1.html 2026-03-12 21:48:43.918487077 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:43.946487244 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/common_test.html 2026-03-12 21:48:43.942487219 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:43.966487362 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/compiler.html 2026-03-12 21:48:43.966487362 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:43.990487506 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/crypto.html 2026-03-12 21:48:43.990487506 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.014487648 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/debugger.html 2026-03-12 21:48:44.014487648 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.046487840 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/deprecations.html 2026-03-12 21:48:44.042487815 +0000 @@ -463,7 +463,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.070487982 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/design_principles.html 2026-03-12 21:48:44.070487982 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.102488173 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/dialyzer.html 2026-03-12 21:48:44.102488173 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.126488316 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/diameter.html 2026-03-12 21:48:44.130488340 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.154488483 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/edoc.html 2026-03-12 21:48:44.154488483 +0000 @@ -153,7 +153,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.182488649 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/efficiency_guide.html 2026-03-12 21:48:44.182488649 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.206488793 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/eldap.html 2026-03-12 21:48:44.206488793 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.234488960 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/embedded.html 2026-03-12 21:48:44.234488960 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.262489127 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/erl_interface.html 2026-03-12 21:48:44.258489103 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.286489269 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/erts.html 2026-03-12 21:48:44.286489269 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.310489413 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/et.html 2026-03-12 21:48:44.306489389 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.334489556 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/eunit.html 2026-03-12 21:48:44.334489556 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.362489723 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/ftp.html 2026-03-12 21:48:44.362489723 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.386489865 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/getting_started.html 2026-03-12 21:48:44.382489842 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.414490032 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/inets.html 2026-03-12 21:48:44.410490009 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.434490151 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/installation_guide.html 2026-03-12 21:48:44.434490151 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.458490295 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/jinterface.html 2026-03-12 21:48:44.458490295 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.482490438 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/kernel.html 2026-03-12 21:48:44.482490438 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.554490867 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/man_index.html 2026-03-12 21:48:44.550490844 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.586491058 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/megaco.html 2026-03-12 21:48:44.586491058 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.614491225 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/mnesia.html 2026-03-12 21:48:44.614491225 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.638491368 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/observer.html 2026-03-12 21:48:44.638491368 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.662491511 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/odbc.html 2026-03-12 21:48:44.662491511 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.690491678 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/os_mon.html 2026-03-12 21:48:44.690491678 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.710491797 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/parsetools.html 2026-03-12 21:48:44.714491820 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.738491964 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/programming_examples.html 2026-03-12 21:48:44.734491940 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.758492084 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/public_key.html 2026-03-12 21:48:44.758492084 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.786492251 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/readme.html 2026-03-12 21:48:44.782492226 +0000 @@ -153,7 +153,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.810492393 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/reference_manual.html 2026-03-12 21:48:44.814492417 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.838492560 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/reltool.html 2026-03-12 21:48:44.838492560 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.870492751 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/removed.html 2026-03-12 21:48:44.866492727 +0000 @@ -392,7 +392,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.898492918 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/runtime_tools.html 2026-03-12 21:48:44.898492918 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.926493085 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/sasl.html 2026-03-12 21:48:44.926493085 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.954493252 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/scheduled_for_removal.html 2026-03-12 21:48:44.954493252 +0000 @@ -216,7 +216,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:44.982493419 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/search.html 2026-03-12 21:48:44.982493419 +0000 @@ -131,7 +131,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:45.014493609 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/snmp.html 2026-03-12 21:48:45.014493609 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:45.042493776 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/ssh.html 2026-03-12 21:48:45.042493776 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:45.066493919 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/ssl.html 2026-03-12 21:48:45.070493942 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:45.090494062 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/stdlib.html 2026-03-12 21:48:45.094494086 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:45.114494206 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/syntax_tools.html 2026-03-12 21:48:45.118494229 +0000 @@ -162,7 +162,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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 2026-03-12 21:48:45.142494373 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/404.html 2026-03-12 21:48:45.142494373 +0000 @@ -135,7 +135,7 @@ Erlang programming language

-

Copyright © 1996-2026 Ericsson AB

+

Copyright © 1996-2042 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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/applications.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
    +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/drivers.xhtml"	2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_functions.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/eff_guide_processes.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
    +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/erl_interface.xhtml"	2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/error_logging.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/errors.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/events.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/example.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/expressions.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/funs.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
    +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/gen_server_concepts.xhtml"	2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/included_applications.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/install-win32.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/list_comprehensions.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/listhandling.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/macros.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/maps.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/modules.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/nif.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/opaques.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/otp-patch-apply.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/patterns.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/prog_ex_records.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/records_macros.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_functions.xhtml"	2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_processes.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/ref_man_records.xhtml" 2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_handling.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/release_structure.xhtml"	2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/robustness.xhtml"	2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/seq_prog.xhtml"	2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/spec_proc.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/statem.xhtml"	2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
              +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/sup_princ.xhtml"	2042-04-07 10:24:15.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" 2026-03-05 21:05:46.000000000 +0000 +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/tablesdatabases.xhtml" 2042-04-07 10:24:15.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"	2026-03-05 21:05:46.000000000 +0000
            +++ "new//usr/share/doc/packages/erlang27-doc/doc/system/Erlang System Documentation.epub/OEBPS/typespec.xhtml"	2042-04-07 10:24:15.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 2026-03-12 21:48:46.062499855 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/applications.html 2026-03-12 21:48:46.062499855 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.098500070 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/appup_cookbook.html 2026-03-12 21:48:46.102500095 +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	2026-03-12 21:48:46.122500214 +0000
              +++ new//usr/share/doc/packages/erlang27-doc/doc/system/benchmarking.html	2026-03-12 21:48:46.126500237 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.158500428 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/binaryhandling.html 2026-03-12 21:48:46.162500451 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.190500618 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/bit_syntax.html 2026-03-12 21:48:46.190500618 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.226500834 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/c_port.html 2026-03-12 21:48:46.218500785 +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 2026-03-12 21:48:46.262501048 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/c_portdriver.html 2026-03-12 21:48:46.254501001 +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 2026-03-12 21:48:46.286501191 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/character_set.html 2026-03-12 21:48:46.286501191 +0000 @@ -190,7 +190,7 @@ Erlang programming language

            -

            Copyright © 1996-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.310501334 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/cnode.html 2026-03-12 21:48:46.310501334 +0000 @@ -168,7 +168,7 @@ Erlang programming language

            -

            Copyright © 1996-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.334501477 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/code_loading.html 2026-03-12 21:48:46.338501501 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.366501668 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/commoncaveats.html 2026-03-12 21:48:46.362501644 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.410501930 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/conc_prog.html 2026-03-12 21:48:46.410501930 +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	2026-03-12 21:48:46.450502169 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/doc/system/create_target.html	2026-03-12 21:48:46.446502144 +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	2026-03-12 21:48:46.486502383 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/doc/system/data_types.html	2026-03-12 21:48:46.486502383 +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 2026-03-12 21:48:46.518502573 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/debugging.html 2026-03-12 21:48:46.518502573 +0000 @@ -335,7 +335,7 @@ Erlang programming language

            -

            Copyright © 1996-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:46.558502812 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/design_principles.html 2026-03-12 21:48:46.558502812 +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 2026-03-12 21:48:46.590503003 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/distributed.html 2026-03-12 21:48:46.590503003 +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-2026 Ericsson AB

              +

              Copyright © 1996-2042 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 2026-03-12 21:48:46.610503122 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/distributed_applications.html 2026-03-12 21:48:46.618503170 +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-2026 Ericsson AB

              +

              Copyright © 1996-2042 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 2026-03-12 21:48:46.646503337 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/documentation.html 2026-03-12 21:48:46.646503337 +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 2026-03-12 21:48:47.042505697 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/features.html 2026-03-12 21:48:47.042505697 +0000 @@ -239,7 +239,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.082505935 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/funs.html 2026-03-12 21:48:47.078505911 +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 2026-03-12 21:48:47.110506102 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/gen_server_concepts.html 2026-03-12 21:48:47.110506102 +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-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.134506245 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/getting_started.html 2026-03-12 21:48:47.134506245 +0000 @@ -185,7 +185,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.166506436 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/included_applications.html 2026-03-12 21:48:47.162506412 +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-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.194506603 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/install-cross.html 2026-03-12 21:48:47.194506603 +0000 @@ -488,7 +488,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.226506794 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/install-win32.html 2026-03-12 21:48:47.222506770 +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-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.270507056 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/install.html 2026-03-12 21:48:47.266507032 +0000 @@ -661,7 +661,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.298507223 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/installation_guide.html 2026-03-12 21:48:47.298507223 +0000 @@ -175,7 +175,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.334507437 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/list_comprehensions.html 2026-03-12 21:48:47.330507414 +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-2026 Ericsson AB

        +

        Copyright © 1996-2042 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 2026-03-12 21:48:47.370507652 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/listhandling.html 2026-03-12 21:48:47.366507629 +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-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.402507843 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/macros.html 2026-03-12 21:48:47.402507843 +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 2026-03-12 21:48:47.434508033 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/maps.html 2026-03-12 21:48:47.434508033 +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="2666796581-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="8473466960-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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:47.454508152 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/memory.html 2026-03-12 21:48:47.458508177 +0000 @@ -222,7 +222,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.482508319 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/misc.html 2026-03-12 21:48:47.486508344 +0000 @@ -241,7 +241,7 @@ Erlang programming language

    -

    Copyright © 1996-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:47.514508511 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/modules.html 2026-03-12 21:48:47.514508511 +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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:47.538508653 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/nif.html 2026-03-12 21:48:47.542508678 +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-2026 Ericsson AB

        +

        Copyright © 1996-2042 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 2026-03-12 21:48:47.570508845 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/opaques.html 2026-03-12 21:48:47.570508845 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.602509035 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/otp-patch-apply.html 2026-03-12 21:48:47.598509012 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.626509178 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/overview.html 2026-03-12 21:48:47.626509178 +0000 @@ -311,7 +311,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.654509345 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/patterns.html 2026-03-12 21:48:47.654509345 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.682509512 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ports.html 2026-03-12 21:48:47.682509512 +0000 @@ -229,7 +229,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.714509702 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/profiling.html 2026-03-12 21:48:47.718509726 +0000 @@ -315,7 +315,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.746509893 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/prog_ex_records.html 2026-03-12 21:48:47.746509893 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.774510060 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/programming_examples.html 2026-03-12 21:48:47.778510085 +0000 @@ -167,7 +167,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.806510252 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/readme.html 2026-03-12 21:48:47.806510252 +0000 @@ -169,7 +169,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.834510418 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/records_macros.html 2026-03-12 21:48:47.834510418 +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	2026-03-12 21:48:47.866510608 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_functions.html	2026-03-12 21:48:47.862510585 +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="9457030725-3">).
          +2> atom_to_list(&#href_anchor"p" data-group-id="5765397692-3">).
           "Erlang"
          @@ -249,7 +249,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.902510823 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_processes.html 2026-03-12 21:48:47.898510800 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.934511014 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/ref_man_records.html 2026-03-12 21:48:47.934511014 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.958511157 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/reference_manual.html 2026-03-12 21:48:47.958511157 +0000 @@ -213,7 +213,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:47.998511395 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/release_handling.html 2026-03-12 21:48:47.998511395 +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	2026-03-12 21:48:48.030511587 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/release_structure.html	2026-03-12 21:48:48.030511587 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.070511824 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/robustness.html 2026-03-12 21:48:48.066511801 +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	2026-03-12 21:48:48.098511991 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/search.html	2026-03-12 21:48:48.102512015 +0000
          @@ -135,7 +135,7 @@
                     Erlang programming language
           
                 

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.166512396 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/seq_prog.html 2026-03-12 21:48:48.162512374 +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 2026-03-12 21:48:48.214512683 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/spec_proc.html 2026-03-12 21:48:48.214512683 +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	2026-03-12 21:48:48.270513016 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/statem.html	2026-03-12 21:48:48.266512992 +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	2026-03-12 21:48:48.314513279 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/doc/system/sup_princ.html	2026-03-12 21:48:48.314513279 +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 2026-03-12 21:48:48.342513445 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/system_limits.html 2026-03-12 21:48:48.342513445 +0000 @@ -217,7 +217,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.370513612 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/system_principles.html 2026-03-12 21:48:48.374513636 +0000 @@ -270,7 +270,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.402513803 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/tablesdatabases.html 2026-03-12 21:48:48.402513803 +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	2026-03-12 21:48:48.434513995 +0000
          +++ new//usr/share/doc/packages/erlang27-doc/doc/system/tutorial.html	2026-03-12 21:48:48.434513995 +0000
          @@ -188,7 +188,7 @@
                     Erlang programming language
           
                 

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.466514185 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/typespec.html 2026-03-12 21:48:48.462514162 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.490514329 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/upgrade.html 2026-03-12 21:48:48.494514352 +0000 @@ -219,7 +219,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.526514543 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system/versions.html 2026-03-12 21:48:48.522514519 +0000 @@ -333,7 +333,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.550514685 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/system_principles.html 2026-03-12 21:48:48.550514685 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.574514829 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/tftp.html 2026-03-12 21:48:48.574514829 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.602514996 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/tools.html 2026-03-12 21:48:48.602514996 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.626515139 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/tutorial.html 2026-03-12 21:48:48.622515114 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.658515330 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/upcoming_incompatibilities.html 2026-03-12 21:48:48.654515305 +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-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.678515448 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/wx.html 2026-03-12 21:48:48.682515472 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.706515615 +0000 +++ new//usr/share/doc/packages/erlang27-doc/doc/xmerl.html 2026-03-12 21:48:48.702515592 +0000 @@ -162,7 +162,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.726515734 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/404.html 2026-03-12 21:48:48.726515734 +0000 @@ -143,7 +143,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.758515926 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/absform.html 2026-03-12 21:48:48.758515926 +0000 @@ -516,7 +516,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.782516068 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_disco.html 2026-03-12 21:48:48.778516045 +0000 @@ -206,7 +206,7 @@ Erlang programming language

          -

          Copyright © 1996-2026 Ericsson AB

          +

          Copyright © 1996-2042 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 2026-03-12 21:48:48.834516379 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/alt_dist.html 2026-03-12 21:48:48.830516354 +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	2026-03-12 21:48:48.866516569 +0000
            +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/api-reference.html	2026-03-12 21:48:48.866516569 +0000
            @@ -245,7 +245,7 @@
                       Erlang programming language
             
                   

            -

            Copyright © 1996-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:48.902516784 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/atomics.html 2026-03-12 21:48:48.898516760 +0000 @@ -667,7 +667,7 @@ Erlang programming language

            -

            Copyright © 1996-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:48.930516951 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/automaticyieldingofccode.html 2026-03-12 21:48:48.930516951 +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-2026 Ericsson AB

            +

            Copyright © 1996-2042 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 2026-03-12 21:48:48.994517333 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beam_makeops.html 2026-03-12 21:48:48.990517308 +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	2026-03-12 21:48:49.038517594 +0000
      +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/beamasm.html	2026-03-12 21:48:49.038517594 +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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.066517761 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/carriermigration.html 2026-03-12 21:48:49.066517761 +0000 @@ -407,7 +407,7 @@ Erlang programming language

      -

      Copyright © 1996-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.098517953 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/codeloading.html 2026-03-12 21:48:49.094517928 +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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.122518095 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/communication.html 2026-03-12 21:48:49.118518071 +0000 @@ -202,7 +202,7 @@ Erlang programming language

      -

      Copyright © 1996-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.154518287 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/counters.html 2026-03-12 21:48:49.154518287 +0000 @@ -513,7 +513,7 @@ Erlang programming language

      -

      Copyright © 1996-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.174518405 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/countinginstructions.html 2026-03-12 21:48:49.178518429 +0000 @@ -220,7 +220,7 @@ Erlang programming language

      -

      Copyright © 1996-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.206518596 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/crash_dump.html 2026-03-12 21:48:49.206518596 +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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.238518787 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/delayeddealloc.html 2026-03-12 21:48:49.234518763 +0000 @@ -342,7 +342,7 @@ Erlang programming language

      -

      Copyright © 1996-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.282519049 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver.html 2026-03-12 21:48:49.274519002 +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	2026-03-12 21:48:49.314519240 +0000
      +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/driver_entry.html	2026-03-12 21:48:49.318519263 +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-2026 Ericsson AB

        +

        Copyright © 1996-2042 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 2026-03-12 21:48:49.342519407 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/epmd_cmd.html 2026-03-12 21:48:49.346519430 +0000 @@ -305,7 +305,7 @@ Erlang programming language

        -

        Copyright © 1996-2026 Ericsson AB

        +

        Copyright © 1996-2042 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 2026-03-12 21:48:49.386519669 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_cmd.html 2026-03-12 21:48:49.386519669 +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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.422519883 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_dist_protocol.html 2026-03-12 21:48:49.426519908 +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-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:49.478520217 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_driver.html 2026-03-12 21:48:49.474520193 +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 2026-03-12 21:48:49.514520431 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_ext_dist.html 2026-03-12 21:48:49.514520431 +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-2026 Ericsson AB

    +

    Copyright © 1996-2042 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 2026-03-12 21:48:49.578520813 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_nif.html 2026-03-12 21:48:49.578520813 +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	2026-03-12 21:48:49.614521029 +0000
      +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_prim_loader.html	2026-03-12 21:48:49.618521051 +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-2026 Ericsson AB

      +

      Copyright © 1996-2042 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 2026-03-12 21:48:49.654521266 +0000 +++ new//usr/share/doc/packages/erlang27-doc/erts-15.1.3/doc/html/erl_tracer.html 2026-03-12 21:48:49.654521266 +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