erlang26-wx-26.2.1-150300.7.5.1<>,.|fftp9|ѭʬ-3a^|z(m]vNqmGLakȇ~t2\wKP܎jme1>z12,#$uM)j:~ z96Ƥӛ\175H\$H&MynS.\T zMQ g c hvEC~Jfn)y&13Vhȉ`*6vK2*!(Nk6A؉J#>A?td " L &,4@ 4@ @ 4@ 4@ @ 4@4@t@ʹ@'פ'ܤ'(89 :F|G@H@I@XY\@]@^ bOcd{eflu@v wp@xp@yp)z$(.pCerlang26-wx26.2.1150300.7.5.1A library for wxWidgets support in ErlangA Graphics System used to write platform independent user interfaces.ffts390zp3anSUSE Linux Enterprise 15SUSE LLC Apache-2.0https://www.suse.com/Unspecifiedhttps://www.erlang.orglinuxs390xB"MEh W!z/t\[ zT p"4 c 2T C } xMN }88 O y-T *] 6.| "d H V% 1 .K[ #`A N  2 }QL' J Vw , tyU G#*[I{  5I $ RHq  >9A'Tq5@ DG!b7E xB% na>BT4 CGy#I0&I 1E$<nM(@,XF@:p IizP6 \F;u d,l2(&pdq04w2-4npX0L:L2`Vt0$p,po8)/,L7p PX0`pTr4:,,X3 8jq0D:cl~| 9X&Ϡk0- @| @ H<1D1+0\`,@2Xƈ1)A,?lC0dPA<z[D)9/D5ipu,2,)o.n7z)xx X;@2)0.]k<"$kh`XaL3Z\bt'l0h+4n.@htA3`n`k1o(1.|82-p|-MwDiDo3 q|7Dfc%ch@{':Q)dL*MohtP|=lH45,t-2t-JD/lj.m\5LW:>H(&GOS!/< >BkE@v99$:$/ MEx]:WAH90>x=+7pxw0JD3(1 61 6rf/d  1Y a(Pr,b79pH3*{P )| WH*xAAA큤A큤AA큤A큤A큤A큤A큤fftrfftrfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftkfftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftafftaffttfftwfftafftafftafftwd8b59040253e57e0e1d79059893789808b1735bc2ef223137c14ffdaa9d4c607043c490f172721646dada6370097768365430b6ae0def7a877d296da1745ecd9d0559db95de4afc9f3c177e5ac22982fc5bc8221a22d46ff2f9252de526c7dd24578e9ade2ce316af1d53fc56c4a571168a1c2de29a5ef3b52465bd43a79ad84f71e48edb6294f42b283fb6e551e01cf4c63f40f42e98a2d0c4dad57eb9f17f74e027a5518a4b16535f8f91dc336d244f43e4dc429c9c190045a8908e9b7dc0ef6e5e1451502bb118c1c9e6704f6139a68c5b2bacac2057be592a26575cd3d17b6640e208b6bef8c78e9412b24d10951ae4d4c79f838cfbecc2fc1781cf3f1a7460e6f7903ee60d2e2692a6a14834bcde7a2549ea87601bf962d913c107870e1d63df3eb2ee3bcfc365de6accc2120d99a30086de0a2b9ff6597cf877646f856bce991c2ee28860b883c23479b32671214f35165fc1458106e5cddf633196feb6af4faf66de39ff2bb0347ab6493332437572672643154abb70d76007f73862c788e5c88b69d29257e6188cc49fd58d95f632ae933db9dd7d0deaf37ca6bfaf014274232d1ce68c3f0a0a27d759ada186b61481d3dd7500138dc424f766c31b167e74be9eeaab0bdba33cbc649495dde06985cd4e9204327f7a4456d3f41ffc949b6d73b938fb52ccc746d9366952b587d544cd5a61f6561cf0ad04344fc5cf0a0bca1ecb1c76ffe7a4f09a433fa7f6e0e2315380ef961955acd898f66e714b7ff94c75b8cf9de17116a6f1d54890e544c2662d5bc27ad805d29dee443349875f05bdd92d0776db89f20370a32348ef6e98dfb5524a49f195ab53b3edac2bfc2c0e8d481a9cce10d7228fcf34fa0f10b387fe815f13befa7863dcef39dd5ea842be43e2f1ce940ffab6d720ff9ea0a3e9e3caf16170d6e8992874823c65260a64d016fe091413d4af889c6b4d1b462b99657163233562915f1cd051a63ed75ea0dfc20c2ab1dd1f854acdd6bfdab19dabf94b068a2d9fc9186a3017113e60eac7b87d67e3a0dfd83de6709f6b4a6e311240e92f12baa2d0bcfaa995a6b64c3a20babc0e8ddf0bedda61b9e361d232b36ee000c9cbe77903ad1bdcd69543262d5758bd1a8efb9c9fe58792593ee77853f0834311f0ee67d5c7d515b202e0668faddf56778c28cc2803cfe3a05b17bea3e078f1413a14909f50676ae958980013d45dacc4e77da2d4c616e600a28fb90926d51ee6250b81753f8f7fb5d497a7db379da69d99b71fb2493c96790f3787037966daac075ebf193e9823479d3c557ce0bef3c15910b2675d89723a4df4a1cd327c94e95a669bbd11da8c5a5136f3cf5f766cf891776973d5b4b242ef1c4aa67c568bb55eed13900ff4cbaccd3015096f9f152a7d2b8ccb2f0e8ef3511901211c2f967a6b422be7679d9405a683bfebea2c3abbbcbf3c05145ed09cdc9c292fddbe03cf8b6ab53dbbeedea271f4ac9a27a0882333bd72ea4cf30ad40f5c22901edf5db5b5b320728e1181def633163e18b5e2583990c9aa23dfda8168b7ecd20a9a23ff580d68812fb403f1acf3dd32044f2cb819a1c486e7bfcbf2e5b4a192302c3f712fb91ab2544683cd9d63ea68d8fafac8558247aa5009f46c237603dd030999851df72d0653834bcecbcf20086d64f52f78e4d512a413df65b0a0db146b2aca48b55581d0f71934b0f447034b1b5236a4dad3ba0e6c3c120b5d7398af3a55cc4a806f2149c8afcc4022925b5c4af89c19420671df6debfc9bec89eafea13605cce0da555c266a1cad8c9ed2e6889d9c7382d6e51e75e83754f50a3781406581e6da032bdf51b47e63bb22a3cc3b2441b73a5e3268c8e4039b1d213bd1fb4487db72de13f9b6ff97843d5b717a66f9169ee017fb05367edae02ee8c2d67982f51c7b9b48b8abefa52ef89af728d4c3ad777b21fb1e625db7fab8b3bdb00f6437ace7a14807e58133a0868b358675bd579e8bdc70591b67b344bfdd5e9ef1f65e7ee5c304f67b31dd4437017f8e592d0310fe4c4e4df61693eedd715da8d0ab6bf73afb0023b62ca53443b5421215a2e60e4e6c968f32c7ebb3a6d18696c66ca323ba166dea2352626a7ab8fb3a913a9ffb1ebb55e7d85677adb2c01e0bd5693dc27b5e8475dc788d0b3f97cbb73836892f28382a335be895cbc8e36558d594f46c7060f042a1dc98b63105c822865dbe8831a59660056fbc62c4362d72ec2de3e64edfd8f4e334bb41f6afbf82c034135ed45554234552caeb1eba06ace867daa2c74b8a70d6b3e81d30b4eb6695bc2f6b7799045127ab817c2ed67a2e2a1e538ef8a3030b76e933ce7d2f4257cd893532f1e62deac1a4e4caae4e3ba26d0ff5149b6f8a2ccf2c13d8d1811164cb1fa92f1e441986108c3261ff3a482693a72c0f47a999b31e0d169d4b75f9849ed242bd470d6bb903d6e58933a3dac000e8f1759b88bd6b00d0360bab1953f9d0752407bc88ebb9cee0527aaa8caa92a8b69b77358e12e17de78377f6aa60e50a7000dce7d06edd1b8c1014014e95e659c85832aefcd0e11ac55412f817918592c5cecec08b44eaadb84cbecf5e6fb3dc95c640f67745a9a2f5d647af5fa1556d4935fa4ab90fcb7e1a4d1567aaaf3a5b0e43b7ba3ed3d2a600964b200a0d4489b04475ea9c949e4055766d49c59a80795b83caecf2b0428da69c3708d6cf748818cf77d26d689abfaf0e73802ff16a7db9e19369a63756646d74d9dfcd1996c16b2dc5b74df927cedea70bf56fefd36d207bd40dbee629a59f190183e0f3d241c13036ca334cc819900e3b9f378f0624176cfa99d4eba17ab343da1b2964aabc5620c035872f23ff81f23abebf33ba35059ad60b12587cb88ec074616f93a5e2ddbb81b76e37c57056a16316e6180a6681eded243416181ff04d0e60ad1583de46f1b6753f4b635c406de66525e7a7de0f4e9fd939a52578b14f2cdbe388b36bd6c0a2a519801022f886926933755c09327fdf983bfe30febdf60865b66a3a50007416ea82b7e349ff77d48985523d7ff37d55251d57b8aa5a2610e558ea5f97f539be32a4891306e2d5b80bb8b049151491d4e17c816fb7a790a30140a82aed2c95cf7719c81ea93a927726aeb3a8abb9bbda264372c1b73ce6dce375bd29ea8737d6a77971f2e36df0c52d1f32dbb7e9c930f382546a4b4be64629484af36ca611da0340753f5ac2ab80a39f43bcace385237d627083faf42822166e9859fbe5c0cd182868f0bfd752c32ffa205004e5c30e88618293c3359fed826b675dc6db9aed9a767891ff7ca4b5e50209b741c1cfdb11b18036f0e2af2f7a4935efe8bc5681c59ec43770c2c51891cd3c7b6655ff64205a79230f824be0458eaade09814c90ece14d81b93aa559ef6101f48bf9b6033976b3b729118c485d49178c232dd24243307976e4d30937435fdaa662c21c8e0a1bdbf37cf224718ca73809278ff3a90bcc28d7df0625cf6672aca09fadade7d4b3b0c1d7731e83c4a6a822901e8f1c92ff556264b12bed667ad8beefd1e17c14e9a113fe0c441d6f788ee4b03ca46e2b9000e7f08a2632eb15ae528c00d6e36fe437dcd69e6901b9390dc955ac47ffa1ac023dcaddd736d29205378cca0cc7ca6bf560d0c4ad684b0c06ee0f1488989dba98201e5e0b72ef95dc71e56e408805a64eb6686573675f3eb7aed774a899713f1bd68035c5597c3f5704c23f56031698fd70cef1a158128d3d148722d0265d10e5ff573aa3c0701a29bca99e5e32fae64ebe682b081184eccca2230662b9b1a396869b7dc4f36c13983f6981f19197941422367bce98ccb2db9af14df711509b00cc71edd2b70f162616792590ef4f105d9c936fe2a447b4cf0c92747a17c702b0b03e409daae9fde2156532762330a7f2b5ba81adf9514cefa8d819f435ab6472e8c87079bdf3683403ae31251babe9e7bc615690380d455086126764ac07df0bc2563ff769abfa22d129957d1c44242a60ede9d430592efc57a936ac03ab48fd6e1bf0bea377d6968b124230f206ba83fd8b4726d901e860cf9d68681f22228e96760d86b7a5ac887630b821178f03f26c52cf620fcd8e9387d59540372db7a8ae1f04f6ce284c0ccb75f50cfc7cb528c1750373e3473c4c638fe9183894342e8e3fd11fec503eafde2821b72aba2e837b6c596c7594024ca962d1b8d1f344a8d925850240da0e5506aeccf56d6d8f791305e2e9434fc115922a71ccc260afc62e1f04f97f5e47f57361fbe163d8cf7a1e993d0fe9cfea6b702282d82a1173f4e1e8b64053ca93588ff427dbe1b5dcd413649eac9a75e175961549cea676d63d92ff630e862a5251794b2f25020520ec7689e0fdb17f052ebc8d616836d5edb5cd2f3dd1bfbf9fa0755dea30352b364951fdfb94d3ad081fadd74e4e9fe9016ce2b1957d50c3b5fcbd4051670054961690b8fd0fc45eaefd55a3d770fb5c159c8ee1716b2e5443053d1c1f3aba4e1c165cec1167bf51e551a9c2a6c79c62dda778ceb54ee5dc08fd4fd6b6cd9bd209ff955d7cc824596588ee8dfce3a744b0a7846bf0c994741410d05bf52f9f44614239fb8f6045bf3d37ad2f56ae489fd5162b3d2377330aa17cc674a556b34d3af3afbf31530ceeb53c41ff87ecbc2a2e0a546220c280efe8885521b29c2c0bbe85e065713a6b826fdbadbb5c6f8fcdb3c2ad6f9cf0ea3dde25b04a64dfeaa083b438c62d8cbc058d12c0ff85adbb6fe7b46424fbdcc9e150fbed6e71433f6781efa6afebd63d71fd32600555f3636f892ad24915381d8ccf4e51e14dda72b4111b6d7c5ab367629f2b977711366a344da6bf5f99f0653539139d5ac7b5d979550278d947162233b1e97d29574a27e69e54526b9386ccd4273792850f54a2d840207458922f3fe0d06a4ce2018966d3cbc6a000f299f12f18ee81923a8368cd65f04b24beb3177e7257818d2e73aff55c573805f34f130ff5160283db6437de12e9d4082c52c9118f70567c8e2a66cc88c7e3f88fcd94d9a03be6548e2d96d2d72d9eed59e902e15e4e3ea8e4f47a4e4e0f25e2a05f7cd95442c1fab576ebb7f2284d01f7030f667a1dd9f05ea9c9997e5afc1130ad323d528cbbdba77a9697c7090e8f66b53ccf697bf7dcfdc91cfb86bdbbc1de1b9e7f5ccca60c91dfbcdf16a3843fa52e7cab04fe214945021e6e7b41c6b4260be6249d7911c96641acd7451698753d39cab57a512ef13b64c0b43b50a3287acba51c618d2fdb2d3f9b44404b4271cde58d9066b5ac1e7f3fe03c6b0802c642a301d02e7aafc3e66e32a4907e76960f70608e9c05d839cd3f090d2c487d6119612271ef3190f5c6e9dd4da308a018d019a40716a8af15615a929653387221534073bdcfa2f38a5406aa8e807cd45aff9183f233426326e185eb2cea0a8d5b6e69623bf22ae5cf6cab648f9fcdcb12e70932741f69be6a07da93dbe71938eb3df86240f37aa3a0e573986c8f860596f6e2d454c3ea1b1dfe93e2fa5b1f0584b8272d73b93db8dd32e08725fc20870d340ec6035eb44a7e5b5cc3c1e1e6fab2d1a895f5807f155b6f45f9e8a1b4cedfa18c3564e706347d86bd0aa2abf6167e60bb95d1e58977ee8b7f9a2bc83a96c22dab4dfc5e1a423e604d737af36dc8e6c1bf16404556544f6f209bbc40ab594430b4cb1358ea83c826f94423bbcad54b521d201e1260c110d18e5a5c4ca0445ac59e9d6462195231bc258cb011df83974ae47bfb54e31538919a9540fd505d2e93c2acae78904b612a8988a7b4d8a9baba76f366dde43c6b76ae082763dcb6856a3b4ae8333a51f0deb96c9cbf7274de25083e78a4c92c0ef31932dddbc15018adf6c991157f477121842f5861235b43d8d63dfba66d9afc8c1e064b68e5b991905ac4a0ac532901f271362e1fd6bdb577d1a02fade7f4605b3a93a74ac1de636fbc938623906959039037f0f0a8b48bec8e49f1f1992826b3390461d866f696fba88fb9bc99ad1ed4574b079e3836b2de4c38c572c09981780b47628fba189b1e505f5262523af6b9fde49c8310029b3780c995372c927bea81da8de15ceb9663a2c13be9d0246526bd952bae5035fdfa64c699a320ea83d7e72c30f784e0888671d90d41ed1904a2a2b8e8422274117ae606872a7efffe4a86ab83af4c222ff5f426a7bd83ed2e1bd8417e51b0b30e70382a07c10466dcce20ce8644dbf9cbc88fb60b2271a0d525099b3db70c8d05a7980a61ec3f65c3b55ff970c0351b0d7f37f0268f3998e3a04d9cca8986d3300c8c1fe1f3fb38797f64406246d9ba935ba612bc61d53371026fa669ffd23890ea11263f0b711652f0f138edcae74e4c3db4ead7b002a511c07d033bb58e77922f6a82f107be6c352dceddd4a2fcd256c61eb69df5a8e3c4d4f021fc0b71199848fd61b2c76c9cfb7516282fd7e6e8655d9468aa2b7224e80efcfb516c6ab4904f6f1de267ab0af45b77bf497ab0cf58f03785ce92cd59c16e68e2ebb0041d4349bf2616feefe3dff37779a27b4dd69b682e42f28562806dae1072548544c8af80037c5aeba04eb602125fd3b4d5380479065a91831db8c668d5e578efe2647b761350c742f9ef2d43523b11c5fb506e3a1e0afd55dafb0d75b73f688863903bfdf515975b9ee78d23bad296975200beefa70d1eed7bb5654585c1872949b72d58753e12ce30ccf60c443ee518bfc7ad5e8a42da9fe40434e200d3bb03a90f8a75815dd9eea55f4011b4755fec04db462249d09922b4aedb0ce5e6d3f6a188d48c1905cce2a2e0f32e952cdc7ffbea54a2a9d5b48209e63cebc2cfc352e201642f7f3d0878ad09f14d85e0992e7abc2c6396df3de30d5926c99da4d7d69a529ea1e3325fe9b7128f5c08f1d2f4b7bb58d00f382fd3d8146fd8bbe6c83efb80a020d65ebef500f0250f29d952b8f615ea3dbaa0bf9d2ca708f5423977306e2155e93f11f2d87071def027ecb36864008b58040c9ac1ad47e7bfdd0fb8d702003ed549e40b39f50a9c374937b0802e22fe0eeb6634059c89a184e2fb3362b39190e35ddb3af75d57916d78ee81844c37aa5a0cad97c8eb417d257a4e04f59c06d75dac2d24c635d16e780d85a916948657b580925f0f571fa580f86e96974c81bf7a66b3ead6277daf648b0ba6b5ebc95f08ce8921e01f1e278a5860d1afea3a8a6d0f1538e692e5023be8d94ecf29d55d5e809a011a78a247ec308f2f6e7a33ebdd04e06a4998c2aabaa1d696b48b1513f5d4060fc087d11432a1a66b49652692c751553b14f193e3165e2dcb00a53e9872dfa7521d5f1a9336da4d40d38221f14016d9d919f30f8c823414765723110b9d190d0db4b0f30aa112425b8574a37c97143c5754e6404c54fdaa36e95cf9d9c2b7d1f786cbdc62eea84d1d1def97a58b92db760cfb1ccac0d5b9e8f84bc7cf7d79385241fce7e612b11f66fb4ff9d41b8ace61a5718dbceaab669bd1d0ba5a09958f47c915cfe7f0663ff021e88a0e6e854747e1e9c89d31c804e8542e946299d430bf2cbcd9b0be372d22c2dfa39e6d215caf1c69675d05a51895880ec9ab88c2adcbb73ecbaa6b08711f769efa1a96d07d60a6249615f0c17b9251d3a2bd68475c12c93521a4bdcaf79d3bd601984d5562e76bd16276935517e4c1a4acf00d798813e0f26a7e2e61d28d349feea337ef883e9c1e8b7b63c9ffad14239b8b7c4e029a8bcd9358e36bb8a5f9ef23c0572712928e4f03a4ded2e35031e73a5aa22772504a3cde7168a96998ce904437a5fcb64c8a1f02023bf78b14b630b5181a2b8ba761cfc44c60f7967e6072dad1258844998edafd6adbc482f92fb4c64dd421a885a69ae886b9a2276f527bb452440c8db5b47116712ca81b4e27b5cff3cd432e756cf006b55bd36d38081acbc18444e5599b2c92cb7b7dd7685b3dd052f02f3e7e1dcecb8f23db2556ca42f39d2479e052ffc4a5e55ca35dc082d14880c4911d2afd55078797251ee40085766712ba677a422d8b6ddff0cd6dee1419f2f2b82b3de725eabbc33bc7da8b328419cf8d2a5e1fd3736679543a0a1742d7f13c238e59a5adba16ae986202b1bae38f31b4fe122fdec13d8654a8ada27dbd9ae7821cdac7f2f7d1e6b77b04d2c51f4ab558bef0590ca82dde86c9dc445d980a8e450965dac29ee593a1fbcfe29105095db922e1dad3ae81b96c1479013b6a8095401bd5179d8a25483b90092ec116a0a24a91b33940cbcf63f8c6bf4b26288959e1517f256ffd4ed895f35b1373b31a3af8afe662fdc7b6539e39569f016f510be5b30448b55e9798dc52503cb447f5c88e00f6d37d13ec004082ed6edbffc981305bc3ba4c527d045d839a81a9702cd30b57bb296e5b6c56f8fda7178b3959c72e0e8bd9ac8973f4e21c2df3c03a7769c2421be44579c2ab6c408e86bd56643d0f3ee34e60db23af336d119380495ecb9c179c47e2444e236e17388050a8264c6b4d2a0d6f65e6b075468987defc3afb6a753a7be53068d9cde53d143f18581635ac1d3bc5d1ede932bf8984dfd456b33633bd983944db117b7d7a9db0ad3e5ebd05f47906ef628965d61dbb8beb84a7fabccbff29f342e2791777fcc244e80fd79cc0fd5e9b7d60b8a77b7ecd8339341ce2fd5fe9cc41bd585ff4d0392a7e188e2bf573a998bd54288d2bbbc51a3380924f1ae9b0aa491f49731ff1750aad001925fbcde13a7d8df9d5d9a135e6140e21643272449871318da04584b5b772b2863a1333c17261986b9f9fd030ede99f004cf68ed60eb73747cd39bd4d3d410452d7693d9ba816b92495165646bfb56dcc00460b8b6d9c63eb100a09cd08d41ef6a5b7d1b65c43766a8d15cfbfe221d4fb77164f90edca8f604f3e6d7b5036047b0b9e69801ac3d2d4091fec5c6cb5e3470346540695691b8315a9cddf85dd70e75a3fe517f3ee091e3ee9f773737425315ffd02179b3477891adf04863be693c84df67e0f6c83f6503d348f4ddc9f677d9daa7d2e9056693c1e430a341d8383cfd12c61df216a7cd566e09c6823228b749ceab37193d1e0d12639bd9cc6a70acae1bded9f71aaef1e0c69aae3fd57e4f79550d7c7d678ad95f22c60163f66f953fc7227b8ec55c27c36b40bd44d4f1410a6c1f0b81b67b64061cd8a465f1ebb32fe1014a2ac1111634160965162bf90a2a92d343e7e5aade67ea0ea015b04542a12065e3710d890158ae9b5075dca26664803313d959ff1f6af89a0d00b850374209e10401d5fc28283154a195c62eda57e7ed8365de7627fc85649f5c5590fbc5bcc61021ceafb6e5310aad9339ba27e3ca1ca735abf1ea0a72e410f0080a3de79d8241e90090fe31435191d6d93ec2249eb29a402f547bd12c47b5dd984e834e94c047d04324c76ca9de584f7ec2408d8524f8ef5218402a3065a9138281fe26fc7efbd0ed5bf7bf351c9bdae8d64f7ce47df8c517997c419f41f52ebed8570d39391533a9dae86ce0c494a3ba575463202b88243f430b4d9380d037e4ab727c13100b314072dc7278007e61f08d6c0f4769c0ba72d8af4295cc630adc8096c1755cb7123a2ca984fa7aae6bd2cf3612fd53821e4d1e5983635bdf9c1b5350c27c720d43b1ab20302816cc59e55ee9dc1f7e9057009b1b349560303c1c6c7e83e30668b298833905bae3451df4282675d80c783e185d57b5b622d9865abe0b0268808901415799f905e993a558336923280b78585e372575fc413cb3ae3372a773c67469a94a1b78c42d74f06e358ffb3ceedc50dbe1919378cd7e2048c471faaae21c662ddb724677bea71a8a9f1544d7978e1a78aedc4888da09dff899baed2de3c49518aa42f58ff290c2a4d6e6ad64b5c64bfb5bb2491dd8853cef94715c72a8262c60c37712efd3cf5178bc16d91927c9aceb0ea927fbb18960831b8dfc1a643bd7007494589ade349fabcb146ab9d9f9e0302c3e43a5e303f2e48f249301ce9fcec2a7848e7360f1eb9828a5794988e7ec2707cc63fdd1922bda0b216712182390a02f7bce3959c20311deab0c9f139e8472ef36ac180bb8bcf2307e7663cdf3dfe7b8c4de8c23a682d4b2525f3b9a2bd20c224eb5edc59b2d5962054a4573e69a1aaea8f553acb098da013138e57aed3ac455e76b2eae3a553804118fc1f02f909ed45fa996b900afb767948104c5bbae440e6facc0d366c54a004aaa4cf6d2cee392a7d8503c771bc8e35e3495f668994e6131090491b284221102c4ab6a2befd6bd60027921264242a7a592874bb707616d8ae59243d7de5403b6faa0aa61cb3362a03d01faf16601c58e1692348f84f64b3d5bdb871e98e307e7725e12f63cdc4a4c0d5041f40bf389210bb822a23b1b4fde5f89eeb11413581b3ab4380de86e76dbd0244d3f7a09b7ba226430c4fe675e02dbd4a9504cda0cde8be28b5015a04dc176fa9f3daa3871d814d999c7325353821303aad3cf84236175e72632fee007ac3274c7355981d8f93adc407952028924aac99ca4905873484520d45cadc87e2d2e42272e1173d726034afa1c03b3cb43489c341f7e0d14a19e49496ecdf2c66b47dd7b3ca3612b087848b9f4f95c727541949fcfce783fb46c9205d2feaee5685f8e247f20ae12298ec1f103a07b9e96365087f4e136951e1e393041e9de5ac7537537c85261c2ae825283c5dc81886d0959b93113f2809d7605a5f491292dfc0f4116b3f196a2418340ef20a430edfcdd420475b2d5085cc14aa7beff359951629108a3b5a5191fc78deb227e6f54dc9ac9d13d82ab9db0d7ec49886fa457c5c6d3c41f1ff461f75bf5ff3db8782a244f94c5cb0f340440841231695615ab12e7a04414649c9668127f876ff80cbe1ba281692398efcd45b3d3e766b64e2b354128de52e2187bb844049134d22e500af3438104b2aeafba668a757dc12f9cd79aa0692746f0120fcd1955c1926799473381ab7fae9b265754f0ddde150e00df417a7b412ad587c212334026ccaa7d5d880b313a7c1f81d463a3f2d3713820c053d3e46c025e10fc26d2f78d522394b2b8dc9a65f89c5efe939342c6923e879f684d7706f3bc54a56f1df3fae60fc697e0306fbdbfefd469358e346f8886507cc13d6c03c63e0a993541ce8e73446262045b9803a08561782ad0c351b0970b96018c797dc6aab6daf241c73a2da6bf22325022176f72afe22174bcb81b4d96302ac63c90ef32ee472ea4b21b0efc57c97f23f17bb16e92c49f805a75ba673776def7ea2bd76b63732df01bdf713df831a898510d1ae3a323b4977229335d73bf2520205cc0d717c9d8401c577a37985af598d3b79c7f45db3a56f5ef0fe810e0bb34e3b89d46402658c4edd6838a7ee53fa468565a11646c00cf72f520dbbd1dbe75b6087d882047b5db245fddf170775f1d87777d6357ce268b8b334881e8dae35e685ce2522fbbdad9b2cf345172a284bda352b00a8cb9171173bfe99800182b76385a9f1039063e567060b093eab9828d9df90f00400ebb902348e37a80c923622afe7d1a3eae1ffe41a418467c878fab9f2ee984343d9ab406a4903577a3c81a6057dcb66f4aebfbf89e5c72e2046339833cff7e33a198c9a10f47c2b0ba031e54eaee270fba6adbd614e01e3233c0f1d58597c93eb106d581316dddf56ac47b076fd8966703bb2763bb177a021e47973e9df962dfe3e64bb01a836385dc2e30eebf201b702965008a24179aafb5307e5e54d1b4813d818bc3e7faf22bd4374507925fa9bc9dcd0dc66387f2acab0ef84c9867173afffc18cffe22bec7306039a42911e11974835ab94fdae8e9f126f5b1a19374b3143bbcae7cf26d7ba0aeef32878dd6902d2900789794cf840a08fcdcb0366e49eb22acdd872bcae075b6e2d7857fea58c1ee5034c8e092f25ce5b5eaf2b5a3abdd9317a314e02a108df5e55d7f5d80473486be43032f13ddbf31366b0c593b99ce3906a5f7c3291267deca8bbf0c757b9b41e073c53133e90b1a3a32619c0b75924b925ef08cffff218cd85ae5bb54e07e21b4da89836d9eb3636810b2ac3b296c196d0709a47077c56ed8a0b10d4bc3ddc3a087abf2a0d1c84306f5096bd24e8fe7589d3980fb3b0ce373867aaae1e4b4397324c93d8dc7e3696d88af01352e6785432801c98670240ba1027d54c876168ae8b216ec57cf9654a8403d0d8af0acb375ddb9e9d26f9dd4aa5b8723de7197ed461e6c20abf35959c2e5e74e6924f60216cf88725dddd614306ef9feadbff10387c3cdd32c0c97137cd4d9476889919579f89b9ed0544886c3da5bcde41f27b0585565c83913c17cb828b827e70f8315d99e816409f8a1621aa551c727a945cc3a2940cd5ceea72397a43eb4c0bb282ffc43d8f54363318f85aff53ec75b031c8559df0ff3b96841514c295f2630b3ce72e547dad92aefe6ac0519aed8a7ac26c8c34584fe554aa363fcd592e417ff684c748e1c87466f47ec0cc76447c1e938c6b1993de67f2c87c566626300a52c8b69d2eee6a3318b82d9c8a5821f5865ac106c46e544dccffab5d313968102d6d1be6e1035f5296e3b82c5d87db197fbcd2e0763b8e88b8004f72876018ca82dee7cee3ccee5f09f2828dcdec07bf9430a22193ae6066b8200acff49f80eea70f7153b228fbca726b344446f92d13eb5700a0f5e74fc1fbbd2f68be0cdc52fa66d235d9b944298dc869ae081f6cec0f3aaf8cc7580219ccbe2b07f50ef142b0a65b29ecb1c5b5e600de3265352c62054f9799aaf982642edde70db02659e7d3125f73455560907db70d3f7b0183f38b817928b9769785a080a26a43ed8339b7f10cf8900cdba006daae31358157d22be19891bfd417bb734260f948bba7df7b124f9a41754e1c335924174517eb34624eb50cf189ae3497702729105c68e7ffdf974a481fcfa7bcef976194925c11565cac8399671fca31ee981f6a6039d3b92a0bd85d36ea960ae88a6669696eb8278a73a7bdcc197a01ea3ac9f06a58610ba713051dead86f7608633dade3834ab22a3dac94fe4c8b1c1ada8dbd5e5117e3de3aee78fc14bcc5e04029eb386556a4acec4e5a2cbeaa095a2538cf28e4f78a8f72e95c5b8f2762861cbd4266c7852b0dbb024a3c17f7693f78045d1059dfe92e57aced6a4ef79170021260158965ab71b248a0d6d99688d4ef4fe9f482f6c86173ff7ce5f349877a453b9ecfd8313c6052ef4abf8ae4293dd4c1cd7fa99fdfe53debbf7c9e7701165b2b14dbc3c50621bbb6f046fec1270e35c80088ae3748cc84aaa3566175087ce69d0c37b5288ba6d174694d500c324f8fc9a9e2384840a40e089dce59158e9d7979fa71a6b73c3d1934b880ca012b3ccfb5b85d351ece27678d3a8570301563e5382b1dc33b629493c9d82d2d3adfe314582101cef294fb1378a726a9b94d2e88da887206f5998e0c233b6815eaa328a3fc8bc82f2e9f180efbdc6e7a0c4870ce378411f83280a113c1e722b6fd6f883648ed54cbc39ec867262112fedc34fb339135f16a2e9fa424cf2d25b371ed37faaf301ec36ef81cdbe09f9968ac9bf79613393d4a5855f3b000942668304907038d3e3175b3f35fc5f7c1afb91660edd32a9a34476f3fddccf68aa0ee084213ff764d066ee07d0d13dcf3a981ce3cfef4c5f38515215eb0fe5bfaa5e43bcdb793628475ae749e682b7fbbe534f97d139c8f217efa7fb4d926acd24176b0fdbd6f132459d9218f3314bc0696d485276fbbc7606a085101bdaa6a6f2962e0fdc664c2ecfdb5e9dffb61be26dda4312a2b3ade264ef0bf18a84bf40bab733a1e1882bf0224bd8558c9c28a6b556d1a18ff55eb2c49e8b043603270303770ac77ffe2939b02e18354a63686b6a35553802c9e7df6240e69823d40beaa7b6e9665d237e09f6c47413842ec3b68a13d8d2fb2b32205063929e452a5a91847986e2eb23f0cca5ba9f6a29dddd5abd62c421ecee4e3b1dc225a696a42dadeb1298b006dd9b0b1eb6f4e94acdf2634346b923f8f407064b837db11164b3c1265816f30ffc5bd2b5e899f51a35e1e4f82e575e3c1326efd9b9bf06a0342f8b7060a8179d115832f90d04736f89fe5d2da1dc2a6f2567fe4a63fbe5b438a34679303eccc783658bb2acfe40751a75aa2d75d738bd3d018b8a17e36fc27bc8c7796a398dd2a44d2133d15cfdab86a93740f061153c756fa2de02a7fd9fd6311d9331935d148933b6ee5ba67d9b82c441e8d8736764a159f094f6986e78a31908840f1d0d0b811b1a3e2b7933b105c29bf844a2b47bc8b2401824109a3a1a7db38ceb814dbc3fbe554c7f19baaa64b79aa78bd08ab09fc5c4afdd39b463790236e089a756184ed9f2f35c9eb32ac97ae4aa446e03d883dd0c573dc02e0f37db00ed9733ded5f83e170ed6b0151c57d4000a94e18bec4e1350cb2e003be4d077b4e08af2cf0100f1c289022adc70f0b2664dee0033579b4aa595a4235d473aac8baab7baac680ace59e0edc86bdc64f71c50507fa4e4aa6081e8187cfe3e8fd8d48714e897e1decdba3f29a7eeb031b52586f6b0ce2a421f46e2d22644c062ba985710e5079fed6d63d040786acf8679b51c893d118a6c4e8816a8e9fac24cab6e4a9c0e676bac3b886a5c8bfde11e01bae0cefa4061252b94d4765cd2021484b1ae98d1cf529ba8e0ced944c24edd7ce9df7950605b98e12fef18652fcdbdd6f1aed8726291fc0d770b26f90b2e9acaad76349cf0c2c575f0a59bfabd43fce81a2d75a6be9bef929461e406dd7c4f9219957a92830b0f464d5b492e42779db2ce7e3d471cffa7206b7ec11ac9ca4da6e2b53e1c1dbe610dcaaa17ebcf70956e513d6a90c7f537d2ceaaf96f288710e5d592459a386895fe360d6c8b0a2dfca387780e3f615edd56d5aabbf1da92cb79b449f66448b51a0dd3b48f3dc45528e14d6a9a638282404dd67f36c5d98b38b0dd17683646548e72b47092d76d03f43cdbd00052c018cfa6f97064ebfd670ee4ddf1646746afa609906a428073622c97324415894576c766486073f00c29e3f4a4ecd6490c65a099675aa48be395ab998f0cac0794662d14d0e5eed8897617c38ffb3509acad0375ee526970851f9c38c4c94fdfd630726b701bfd883826d061a4b0e6e89dbdf3e5abe2312be53811bb65a538c7aa2dbe38fa040959b2146a0a9d60f6f4ae0d78bf27ed9ee30eb20bb48e5824eb9cacf805d6b7eaad0e183459258fcfafca4630e5695bd791ccf770bb9280150559eeb344a788280f23567f738642d23feb8824a1e1be34e1ff1cce25ad7310ed4fa0fd0c08846d16c1ca17a1226056a03cb1dd2fc7bd7b4b3babbd6eedc37a44dd7f7f08fc1b6621733c87123595ec0e1af1ee07b91908d5aef2bfd4466be539df7d9588480bc7e4e700736182c53c8b960279e8af8fc88b0f3f06108d417f0bad7d9fb27062939c1b1d5106bb930d23acee4c1927400209dfdfb1dac16dccb652008b1b1e7c72c7094ab93d7de84cc54d4443ca93aa66e251f66250f56834dab85da0d2df3540c685df10e8a5ba2a07f1b4b035098602e0893d6003de4487268b9db0e5fd534540db926913acbd871214c0e4867ffc8dfb55a2fbd6de8f4c7d1428dedd1d8bd92db09b4b2ef32ed87fcb6caa52a2b839cecad8c780ff5d96e89e2b966ad8a965d32e57be490232b52cea118b5d88b1cf326809b8e701a2014b194e0ebad1d46aba6967356dd66e138294f19940137d44b716db32dc1a05fc71c354bf7cd117a4ee6b52f623d155276686d207d1f614e989020d54fd405fe959fae900764148fb72e29b5dfbb2148ebb284c9267eb099d8bc464f59c71f7d615bb6261999e78a381e100be3df4e12219b5a215b147e645d28858904db2218f54f02873b2a27a41423ed27a80d4d157c3c49fa4b5b4f06ceffaba78827ab5aad1f67a60124221e7340a361658937b67f678a0579fc7baf1c9d22a0bc425d95323a58fb2cb51b6d6f59f5db5cc40881399e5f7b80ba218dcfd1ce6c449c4fbb66642ed76778ae679fcc5e3ee0bbd359dd7b3e3e3de8bd9561ddbc8bcb43bdd32e91c7e5b41457ccfa52f3c66ca187ce102958787ab54e29f7fde0e201172cc4ea0f209b11427eb506cf46fcf23e9d5d0182a416c50690f72430033a6c3af5cb84ee67cc1e01bdbbc8e8e890be561288e164d2a4742d96fb091ebde1ce18489ed90362aa38006a310067b7f20e34aba575e759ef2b35865a9c2aebbc482a7a7fd0b3e9e4889c52b8a415fca20847d2764e0bd4f9a4d4bfb4e5e82b1079dca0f1c634a98821edf65c01fecb3a7583816f749315214bf9ed109eef3463ba4ee32358ff421dad7c6b5b70f68ef70ae9bf03d20a6ae09cb8e0bff16c77a7552f93303daad9dd581ab673e19dfcff6869bcc30584865bab40ba0ccb81766bdb20e86a74a2cb12df4a40b55586c3e561c9e55fed93c5c99d404e619212a7eef82aeb2018aba164d6a81dfbc138dd1a35d4aef350b734c6e7ca92eae8d6a4e03e983b3386d0a16e8b05492e3d762e884e47414ae979a4fb64f5786a043dac844300f86566d9a1cd62cdf9dcc29e44b90a9dc3d02ea8b105a24acb85fdc30c18a78841bd8ebb9d3205d2f49db9d639e99f81762bed8a21ef10ba91b35995859e9a3b90d342380bfc5872ad9f12a297f5112f91b8ee5fb7eefe24b59b811fcf59bbfea96d9e8ba1fd02edbdf1f3dd5d306cd766d04a9e4d3a58e5da9200139de380f37b857acf7412c14eb6148c0de4eb03aee0329c0420f421e5880a5b3787619d6a887dbe6fee42eeb7458297e882b57628571a5abc41abe0607779812e53cc5f6e2a76cd50d0e5502f7fed78c2d83e9bd71a5d722541541b2bb3e14091a3ba222f17bef08b1b01f7add7e5bf9177fe9018f48bd938875cb571830be99d86c067fbb8b1ec96ca8eca65b0448aaeab6ba28577d7070b2342644ebe3c9bc5543d315c2322ed6696d86e176bce4ce1d6c38bff01911dafad9928bc3bd42abc4349332d41b3b59ea9b05318169fc93e7850bd2dc2451ca16456215a5e4c53c0759aaf2f8fc503dcddff3a6f49f3477f308b3078218684fa40764a3317b1e029e9d850769cbfab670bd255750655507f8bdccdcb7e5f6ff18e059211358750b3a22843855fba1dcb1c571e83a7e765e645bb65e631ed0cbdeaa02bd05f09c71e6e265d68e73e4a7dbdfb43b8e36759b38123519dced4a42bbba57bf68c82c99e86b30bc8f2e962cedd57001da5e97576344c22a818ca9bd6b8dfcc0110846a629c6a7eb36ac7e31b19c2fbec97b02af2ed60740c8eb972971d1c724c9ced8581015ec4ce37e393793c114a67ff7196b475495c82d367f2f10bc748fade14cf904332ca85b6578f6b6d85971d885cd394468886e5c7fd37fc41e9b0ed1707296f52b1c0f7b624ea14e3f7272ce2bb07a5c8291a244c585be56a8c124f375b1cbd7d7362a663060550321553557310fdaa802c51ae96e865d09f9efdf0fe7702cab3ad0ed2a5adf8302d5f309c55877222253be4a994596fcd9119f3778e86607a4222fe5f6cc0650ec09f5f5428c655e450c6894a0560d6f5295c0ad2eb5e79c34798247912a8c718f2a1952fe80c375ca9e02f39b0661de5f1f31e34cb84114b84b53cc34ed905632d1bf715bf71000a4dfd81453002b0ba8e145b86f35c66fad3bb126788de7b9ff2253aa8a33a91700ac83f75afe68ff0b5f3b8eff4144bc62f7cbb815af0a1b4563b171e36faa84e15fe74cf78622815058ea4daf8f351f1f28140c1830aa08e62fc04b2cf9fc8d5d227a0da9cfa4d5e918d46d74d17ebffebf81c11de8f834752263121710ea1ac87ee68c61bc7f95c82cd3891d9c90cd4923ed03d995f0af5225cf3d4aed47fac2930410b9284eb9a22be9951afa25a51cbbc258c376838f3cd70fe247265d0b61d9c9154d50376cf3c6c7a5510157511ef93f8fe1e7112efc9a156d785b5c017eda35037cb1820c68e5548727cb0f4df96c958d4a634299a0286e9a79f2f4b5da99c12520cbe6d5bddb66967dae1ad06456349c9d7c61ac91fb3c1790d5c0b3ff552c14586d37f2477fed697e748ec70e08ac4c9e821a74e906f912888791de3272d1dd09555762962e23422bdab2bd636b2bb856398782351d40ecb55430bb761ed079587d240ccf61bcf15519b2ddf0cddaed1796ea7b824e99f19cb6bffd7bffb7bfff5cf74b657204cea2902d6a36ade04e13cbd417731af3ef12004195e699a23e5d4cdc34a8853af17665b168f3f84c27d5bcd8fd83dbc3b27da0424e09fbacba15852ffa8ab51242c1e26eaff85269ce40bdb04f478b3516aa6d2a8f7599d47f22143af1ec7620bae8ef0168aaf2c9afb25bb1f9c586a2bb8cbcb35a6c6369678fe6e7718ce567e67955c6e32951881cf7efc8ab14e005ed5da52712e23ffc6be6a2b95deaab25bb7cd488cae22f4569d62276dfdae97d92134c2866f6a26b12a5a145283a306dd11a0fde162760fbfee991f673a3020010a054c3b896a927274940919fcafcad478406ef4a64268bcecce53d52b1af6b59a9057befb885e39da2f27d30f5506e6e8e4e762042b39772bccfa624a99c0f3ba10ac60c175e08e82f5ef682e9f110d81dbc8f33eb456122c0583fd5b79c06c0f660ef17962a4a871d9662d1fbf632a562fd5aa741f8a83db981e36fd385d042c08e310e6d80c8c31006937986f0f4c880ba9b08aee35aedb1fad648f27a4f94c802bc670ab929a1c4de0b2adb29d8e79d5b0a6c5a897a28e2abe72a5211dd90398089cf8f7c0b29e39bfc70c2b433954fec817edf93d7f70cf8296356642643d33a5016bac65c88f5c4d1703b85cbfd34f3c8e9c55b4e790bd70444f1d3427cef424e4a6e6eb71ad2411aa6e36e3e15ac85c56004b05e960c245f172cc51aa1eba880ff3c35818b8e9d3dc6a31d0ba6ac27cad46f57c88b27ecc89b2245958be635a2fec71b48a4cbab8d2d7622c426b59ca4a397a167e99d6ed6f3232a5495a8398d5d22743a618c3900a008aa77d1ad1be95d032d5f3e599c9c967c3268c044ae2494087e7f328794ecd13d1cf03fe27bda588795e328f54e363959e20534d91e00ff33641764d4907b38aba67ae875cf90a6d26b6d112fb8a5da312cc9a253d620267193b8d28ebec4d2149cf08db5a4a51929f687320bb419382b819dcbdfa06a4b71a40eb5bb8e6ce7340d8c20e4416c76e071c4a6d00882a0d1855074d69d5c0ebeba9d15c00dd1d5e13c64682666c09538d29a0a0a9525f453ca548dba3ca7d0e09a105a0c0de24fd925fca3adfba71db8c9de5644998d468d365a5a0c076b2b9a04910468a42d3b884f33a49c6a2b8f0ea9db737f4b0dfda9357dead92ea67d440a32048ff28b36f549784537342136dc9bfa438ac233d303983ce638e82b1b39e4f312895ad323f68dcd25d741c007a07289a3b3330a410132516ec178953a111e2af8c7f196032e10e743596818ffb71130a4bb2fe9ac3583cc8a8f6266f7d810489f13b57baaf5a85dd995b7b9305b80bea90d1b9847b1db1b01aa9a92e668b2d8afa3692a03984a419f6f0d81bbe6b263d40f91583641537c952f8583d2a7abb27c97bd2a1ecf7ff36068b8a207997a0f1ce447fe371929c618fb132b62f9ce5a3ec6d167cecd0bb6662b8e06022d76d0288aa215b44c7d5319e981b0fb4a07414824ca470fa7742eb1444b0557ecc753b3dbd115f985a521a265b4b1d8fddcdfff73d577e8f90c057399761b57cd61ee2ee83325efbdc44e89370ae1402d9229eeb048823c10df5f398a7efb765917fd172c2085d2665f95c4ed455041580f718d69398cb6a30fc1d28ce8ca78c79aa331fa7d3851f7180c2cd61f51f44047668ea5cd174355aae4fbc9fae20d1794d0232b70d5164b56b77b05c2df3b05a985d418c3aefe5e983b3614510e8e02ed8eb9b1f05dc10e7127a3e508a4fa68ac47e718408ff3ac82d088d9b98fad4b7237e3ca5aa9f2271e0dc5ea45ff53a91bfc88008f53174ca3f91eb67c149d819c8cfa4d40e5b11b8abe37810fcf20c0b3d2ddb9c5c947e9ede34e065c6b3ae19126609725f445ef4066161707820b128a0545f72fb13689438e4efe1b6b1d4c85005a9b30faaedbccc4d47f1ae10737472d80581dfa5097365efd48f6367a2cc28856ca3c4efcfad7280a895416b3839a0698a9c99b0ead7b3ccc5b5ccdee4b28a12dffb5bd71280c028920332fd1e9372d56748205509004913964d4229b66967721a288b6a43271131446a8bbfc6a2697ced6030679289ff60c9d2979de41dfa2a6d86f6c1ff0dc3206ba9bc939619a7b9cae384cd202dcdea7aa40669e947648ce670fde455b04ec4ecab11cb0211b31e83b2992b06d3954b3012b5255baa2ef3f40ae50c12cfe8f8c584669d7476cec5cc4274ee3810bfd2a499c8bc65b245890bb377a59aff6996afc03fb591102bf2187cf3a2675c58798b3b750a3866936a61960c3b5a9b87ab178cc88cd744cc68b2d34c66f4af868aef05ad2647a89869a5b2a2a871945c501507e527e10803921c1efe6df042bce3645fa9e11e7a830748a78a472cec3f815d4154f7a56e7ba5afd016b7a3068119656f4db8b308b872a3f876e686b36d93406e9414f8e4c71158b5499a42336fc19efcc097a096b8021999e17627f17494290f29a960972d59f6840ad2dd7a07785b5d0e7ad26ca622474cbec6f7e3585ab856c720c703532f715f4aae4893bf2b322c0f4110922114fd94b18cbd6f6215fd60f32bc22003fa0c71e2b0523e7567811fab9a0a36d9df4891ff7261e7dd1b02a1bfdb47e2e654df2ed9df77dfccf031c18645fd860140e746c64bb4c44183346a410211694d17d353be587694d1202379baa4ce5e0fbe473eb03e2c064c357d676c05e39fa86bf98dd79afe9accccbd52309597bd991698b07ef4ffac7aaaca8f45ea8edf8383b2ec65175fb24430925cd22d8410483a79514cbbb3091b39c03a4788e684cc4fd127d7a1c758fb3b182128574c24f4301be4a1fc795d3acf14b001f63260173019b763e60eb5165273e715cbf928efa0501aecc49dc7d7d463c3c1b3873a368abe2fb3411ae2eca45af83409b4b90dbdcb70f45624b6ee1688e72fad3ec25119ede2e877a9a60363c63d1c16994b258fb0ab87ae2f335440fdf5410c01e8e45a70f022fc25faacfb3454634ab9482fb07eadb33f14bc59d7f4421512352eb2fbb32fbfb9ccb01def6a396daddef02b47d77bbea9d70638b96ac4b322f57e74492ea38b5f879beb1bb5d4228128288e28f24fe8155444e669e74db72b7366382de4b2844620c2d8eee16a9aab02bf7d8b7e9f783c65485bf2e1dfe252e141f2e1aa39d6b69c06f980d8845d1f7ec3a8d0ef06e408fb66e31e93ac7e3bb15b8c3da1c74db2b3fc5c5eef6c6baed2c0c530ea9b7400ac1c42f1a54600a793de639c97437602aca1e391e8a85e1e68c0ed7af92fe2192fe9bf53ede1be79905b57eb4a2f5e26a3cd199fbab4dde79832001037b4e1ab0c6224e58c2bf0a5f9e9dd5fb40943396f4955881df1b3113370808730db5bc515b8486f8d0769d62644f8510496cef9c7dfa661a6c9baa489bdb8669e4cfc0fc34c1dda32b19807dbe7959148b33dd9aa5b5820791052f53bcad5ec8b14604aac5b52fa7187fd4c186205fccd2d62c802381c100329fb1c83385d99b5e2ce701a9dd9d6af74d13ce499696954fece3ce8e57dcdbd99ca59b646440aa1d11c6619ebeb47d821fd2a4248c01f12eb4b6a33c2d63f45ce1080d22806096dc4f13eb1a562577097a9d14fbc5c5f93bdbccfaa2f589c15ce85eeb1867e59ebc5a6bd4050307c6cfb2228dfa4fa4cdfe21d13b6dfc5320ba837033d0a0f430c7817468a10bb8547202c1bac30615b902d7e198a4a5da6b972b7dfecb89d5e61523db756fc27adaf6b2655f678a55f03abe0c8165fab392f325511d2d9b958b74751012e99bc0189da98097d2db7f144dd2b444419034b8c96bcbc7baa3e882e13383b73cb7a9afcc1a3ca3cd3e82aa9e9fd048080d0119c3322b51dbcc96345f4f3198c8e0926f4ad9795ec68048bdd0386fb8e2bda81366a1ab1ae5c0a06c002c2c043a1318f07b97768ddd6b4726fa0c1b4cfffb312de982db787a0d79d554a3205f6423b9a7b079cf38ea4110c3a33923fab4b8811ff38e23f49ad9e9ceda2141768fcfe73fdfc5ba1a1815059892f8484c882e937f7d401d7e93679b99358ca3f691cdbe54960e770f532d81596bd36693959a8051943d03f0032cc733eb67cf68bd35018f376cd223b7f8afde6f3ea26e447e17aad0d8dfe05b4ce2c614dda7577a5ed624ff725e000b870e787c693057c29cd5d75772e5e9893fe48f24dc616d381995d6bcf7d343625917edc41dc8c7ff76f591f1c87f49c6274a547b4704eeadcc94a16f9be64d8d3f98dfc0aec96e3f8fd192d061e7ce3cd6ae2f4f94ddd047337e4bf8df998d81436da328b927a3b1d0ff467902117ad0bd9d55bf19a270b8cf37f513ab3667dc830025bc78a8961ba4d268fcb1320e748fc43d5e0db9047028bddcb837070204f103fb9721b41941d7dd746273d1027a955a91ff53cc2926d3ce4daf2bd0aff4cdcf0ce0b6c6b89f0dff45b34012bc4e0634e4dcfe1c54c56724e85f48ca9e39cbe699fc2d1f8bff3a4765e0b9c56924d832f548b7518a8a14b8d25d1e760d985540ce42728eb2fe998a1797d70d6a02552917eecd0edbb459a88632ddec5d2274ca1b79eca59b5caf86b200547b9ee76039e8dca128e593aee0c1e4a52f3c3b240a9e793427e4fa0e40db7bdd24b245d8be9aae0caca39a9470ddff4a33257199f4934939e10585634c24bbe582c0b2e3fc5120c2b6044de1bda2e952a496900e28e3ff101973209efaf61178525ede037e61d978611efbc17a756c79233675679d3549c274d4e6b996a80f89ea460814d90653618b123de091bcca04fdb2b2383aaff8efd143eb435672627ce0a8d4efce940434b6c8e14a1cfb7411e0612d4aff3700207080b46d44ba8d0d47ec25f291a43b1758d6f4dc12c6383eaad7dc45c747e858b96d5de9534c32545c749f2c27408195dfc803b8ab5210be5b4bec4ac59a8fd03d1d0ae6f846ddb102dae88c68c556a09e74cbb298cdfabbfd0d31454fdaad40feb6dfb951662c65871d558f1a0e634fa56329609f1e421e8ecc3cc73820634c2351195a26db11427cd8c58d7ebbf99dc06e91550ab42ae922db0b42338ca85a250ec8c08e923f78483aa3dbea1b5061d5bf6772e36e5675b8a3d153958a44bcd9194d7fb525dc9613d5c5ee2de75ab102018997020096c44db991e96238ed9080b247a0b44dd94128f380ada0d2bde1ed5c1e3105ef80a79c9a499b1992a1811c558eae126bfc15fdd3294cd6f9452d4e5cfd8d05886124fa5bd6d3ea30553f6e31e53758f84fbd73ec5055ea4b8b8ab3584b11f739d4ddb0e1c4fadbafae92acd52697944e00cc7f7c6e455dbef3745fcf6f7eb6e20ad1b119ad04db65672dcef04f7da103a8007e917fbc7535460825222c53e3a90b351782a1bb4f6ac24abff7336afae00859a03c092b1f824863657c076437b20b8cc8b04eb5d07568f05f75e6db7a8aec1d76741b8af40499884fe7835a5e096ddfd370f4666e75e6f118b78fd96c240da19c7952c0c30e11625d0fa225129e7b06f7682f7949663a9fc0e195841e00934af2d1a89de505445e136e1ee66b9b3e64c2541ce62b0a19146b93bd99a5e6863bc28b03090eb9f7275a25c74eb299bfd31863cc5af958b3d65249a0b8f23e535c74d78cfe4ae9629efe535d66135b0321bc7fd252f4a076bcd70cf8109a89c43b23973846937997a8a75bdb8b9464d67d86d39ab39a0111ef5f9f8ec8e5143f27c20b6c6cc6cc8a485439ca3852de1395993ec289bf1979c25c844e5c7ffa877df23040dfb439ae3946b54d79b47fe0acb754b1a589f638793d5302bea4a78b37a583fd070043e86547b76dff815d08ae3fe249e78f415384d67a613582abc6d1744d6e92360b780452d12fc9291fa46bcb6622101ec6ac427df1562d55ece72ccaa246e309856f7d77b0fe35e89f0fdeb20e70b151ee5a3a5fcc4a7e06e2718c2f3d93a444ab288e0f892e0544a5796bc0bb569cf27120e574b2a6955c7069200d2167640f228c91d784b0224f399b3488b1374d40f2f9271c8f05a471fda047d7040a38b8cb41246b59b4badf78fd462b4e5016b283744bf94ec204c9dd1b6d4cec2350b5a58c36e9095909bce7c1a9a39ca6513b4116af7f0c56e1db18dd477d1914f945d366d83e94075fae9d54d2349420455c74306bff73acc9b87169c2969ab0f3a24325345b288bff275febfad9015b0697d6e9fb38676afabb775474dfe3e7f8fdcd69a19e024419a983254e9f80f2620d454d28668a4b30dedbea6c9bd32cc9717ed5b104185f1e6083a680757fc644432fec782ad2a297c009ec2bb99dd12f7c91e95160581ad3589d71a3903405bd1458a0f492dbe81098491c7235095f502597813adc3c8dbced54085bb03fae7fa599e9021e8d032edcb2b900b6b598fc9a184d82f977668035bf5f9f77700d8f03899c6cb52ba03575b9a7ffe20b35584b7123f759420ad3fcaefe9e6edb44d45d232a5cb2cca4f42da62612ad1211a26063a73743fea459033b2ee25f5cf88deb2e35fbb870b103632d1f539b287c8d288e4353f297d82c4a776cdd1f7afee03cc9687cf75daa655785b8b760935b4af17ca34d49aa3dcf75e2637337680d6e90cbd5c2e5a5a64e69601478bdef7c62c663d8951c29746f4828e2da8fde17d001f4b9155b12af0f8071d225d953d77ac0f9d740e32a52d5a9426604fffab69022023b7357f72396b92df5cb425cd42ba82ded48549b4abea7b2aba8f8d354971b94971c77f0de75311ac913c94ce884558eb6296847997703d06498f3057a9e8d4035118395b0ee8edd7d6ff9f92a38b344b2671937eda40909322e19e8fb0b6e593399af8f07dcdc3cec55184187501cdedadf5f13c24184b870b60fd0175c50d7e3b89310cd9c123e1016a2970042cb1ea42cad483e72a977b04a8a7600f08743a284af1375e6765f974fd5cafd5c53cd9078c61fb90463331928c4164d4d9f7f93c2e3f2327c4b13b78aa15c1b89ceb1280eb5c76733d3a16ac707f287c744d75737e71b7cae308248db7501e6801163d01a8a6124a765a4ddb2111b31ec310acf34abcfdbc3211723a21ef55f3890eedeb77558cf3fd1ef0ddd0a62f7e885ea53525764bf94bc19277f6cb438e2419f44248ab25d5c8477874decad17b88cf7f21a0c858c2a0632dcc53e7891449eefc3d1792777b34bfbae7ae731b251c16e2a74f69cf9ca22883639b38a7a1b95d941859a3c8b5adc356a9ee53af78d0a28c777cbb6740097664627d2a6923da2791dd9b65e02efa1968a84378d5abbb3593c0a370bf3b197c20c3ded5564a145703636469f7316ba7c0d15f11dca8d237520bdd3fefacaf0cc93b7a71bb691aeb48e4813e7c4e96ad868f65ac24a3bc22a26ec154arootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrooterlang26-26.2.1-150300.7.5.1.src.rpmerlang-wxerlang26-wxerlang26-wx(s390-64)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    erlanglibGLU.so.1()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.4)(64bit)libgcc_s.so.1()(64bit)libgcc_s.so.1(GCC_3.0)(64bit)libglib-2.0.so.0()(64bit)libm.so.6()(64bit)libm.so.6(GLIBC_2.2)(64bit)libstdc++.so.6()(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.1)(64bit)libstdc++.so.6(CXXABI_1.3.8)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.18)(64bit)libstdc++.so.6(GLIBCXX_3.4.20)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libwx_baseu-suse.so.5.0.0()(64bit)libwx_baseu-suse.so.5.0.0(WXU_3.1)(64bit)libwx_gtk2u_aui-suse.so.5.0.0()(64bit)libwx_gtk2u_aui-suse.so.5.0.0(WXU_3.1)(64bit)libwx_gtk2u_core-suse.so.5.0.0()(64bit)libwx_gtk2u_core-suse.so.5.0.0(WXU_3.1)(64bit)libwx_gtk2u_gl-suse.so.5.0.0()(64bit)libwx_gtk2u_gl-suse.so.5.0.0(WXU_3.1)(64bit)libwx_gtk2u_html-suse.so.5.0.0()(64bit)libwx_gtk2u_html-suse.so.5.0.0(WXU_3.1)(64bit)libwx_gtk2u_stc-suse.so.5.0.0()(64bit)libwx_gtk2u_stc-suse.so.5.0.0(WXU_3.1)(64bit)libwx_gtk2u_xrc-suse.so.5.0.0()(64bit)libwx_gtk2u_xrc-suse.so.5.0.0(WXU_3.1)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)wxWidgets26.2.13.0.4-14.6.0-14.0-15.2-12.8erlang-wx4.14.3fGFe@e@e@e9@ddd@dWd@cc\cGc @bL@bb%bMb@Qb$@b~a@apa@a @`@`@``D``@`n@`&`_ _|\@_C^n@^n@^{G^\@^M#@^G@^=Q@^8 @^*@^!]f@]+]e@]M@])]@]]b@]b@]e@]>]@] ]/@\P\@\@\@\r@\N\@\+@\k\\\Yz\J@\*\@\@[[[%@[<@[[t[r@Z@Zs@Z@Z@YYo@Yo@Y@YyYYlY YX-X-X•@X@XVz@W@W@WoWgWc@WA@WA@W(V@VVV$@VrV2 @V }@Uݪ@ŬU(Ub@UU>U@Ug@UG_@U#T@T*@T_W@T_W@sflees@suse.desflees@suse.desflees@suse.desflees@suse.dematwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comopensuse-packaging@opensuse.orgmatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comjsegitz@suse.comopensuse-packaging@opensuse.orgmatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comgmbr3@opensuse.orgmatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comg.santomaggio@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comg.santomaggio@gmail.comtchvatal@suse.comg.santomaggio@gmail.commatwey.kornilov@gmail.comgsantomaggio@suse.degsantomaggio@suse.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comdimstar@opensuse.orggsantomaggio@suse.degsantomaggio@suse.degsantomaggio@gmail.comgsantomaggio@suse.degsantomaggio@suse.dematwey.kornilov@gmail.commatwey.kornilov@gmail.comopensuse-packaging@opensuse.orgmliska@suse.czopensuse-packaging@opensuse.orgmatwey.kornilov@gmail.comg.santomaggio@gmail.commatwey.kornilov@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.commatwey.kornilov@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.comg.santomaggio@gmail.commatwey.kornilov@gmail.comg.santomaggio@gmail.commatwey.kornilov@gmail.comg.santomaggio@gmail.commchandras@suse.deg.santomaggio@gmail.comdmueller@suse.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comrbrown@suse.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commeissner@suse.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comkruber@zib.dematwey.kornilov@gmail.commatwey.kornilov@gmail.comjengelh@inai.dematwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comkruber@zib.dematwey.kornilov@gmail.commatwey.kornilov@gmail.commatwey.kornilov@gmail.comro@suse.dematwey.kornilov@gmail.commatwey.kornilov@gmail.comkruber@zib.dekruber@zib.deseife+obs@b1-systems.comkruber@zib.dekruber@zib.dekruber@zib.dedmueller@suse.commatwey.kornilov@gmail.comdmueller@suse.comkruber@zib.dekruber@zib.dematwey.kornilov@gmail.commatwey.kornilov@gmail.comledest@gmail.com- Create a versioned package for SLES- Disable rpmlint tests on SLE-15 where they currently fail- This codestream wasn't affected by bsc#1207113- Changes for 26.2.1: * erts: Removed unnecessary PCRE source tar-ball. * ssh: With this change (being response to CVE-2023-48795), ssh can negotiate "strict KEX" OpenSSH extension with peers supporting it; also 'chacha20-poly1305@openssh.com' algorithm becomes a less preferred cipher. If strict KEX availability cannot be ensured on both connection sides, affected encryption modes(CHACHA and CBC) can be disabled with standard ssh configuration. This will provide protection against vulnerability, but at a cost of affecting interoperability. See Configuring algorithms in SSH. (bsc#1218192, CVE-2023-48795) - Changes for 26.2: * all: Replaced unintentional Erlang Public License 1.1 headers in some files with the intended Apache License 2.0 header. * otp: The removal of the deprecated slave module, originally planned for OTP 27, has been postponed to OTP 29. * asn1: Fix benign warning from gcc 11 about mismatching call to free(). * crypto: Enable engine support for OpenSSL versions 3. * edoc: Emit instead of . - Disable test suite for now, it has many false positives and takes a very long time.- Changes for 26.1.2: * erts: If the external term format encoding of an argument list part of a distributed spawn operation was faulty, the newly spawned remote process could misbehave. The misbehavior included hanging or interpret an incoming message as an argument list to use. This was very unlikely to happen unless using an alternate implementation of the distribution protocol which made a faulty encoding of the argument list. The child process will now detect this error and terminate before executing the user specified code. * erts: Fix bugs where if the body of a matchspec would return a map with a variable ('$1', '$_' etc) as one of the keys or values and the variable was not an immidiate, the term would not be copied to the receiving processes heap. This would later corrupt the term in the table as the GC could place move markers in it, which in turn would cause the VM to crash. Bug has been present for since OTP 17.0. * xmerl: The xmerl version 1.3.32 was released in OTP 26.0.1, but the incorrect version number of 1.3.31.1 was used for it. This incorrect version number continued to appear in OTP 26.0.2, OTP 26.1, and OTP 26.1.1. The actual xmerl code in these OTP versions however corresponds to xmerl version 1.3.32. - Changes for 26.1.1: * wx: The wx application would fail to build on macOS with Xcode 15. * compiler: The compiler could become extremely slow for modules containing huge functions. * stdlib: Garbage collect the shell process when reducing the amount of saved history and results. - Changes for 26.1: * crypto: Fix VM crash caused by crypto being purged and reloaded (by init:restart for example) on OS with musl libc (such as Alpine linux). * crypto: Improved understanding of LibreSSL versions. Support chacha20 and chacha20_poly1305 for LibreSSL 3.7. Reflect removal of support for the DSS/DSA algorithm which was done in LibreSSL 2.6.1. * crypto: FIPS supported by crypto for OpenSSL 3.0.* and 3.1.*. * asn1: The ASN.1 compiler would ignore a constraint such as (SIZE (1..4), ...), causing incorrect behavior of the encoding and decoding function for the PER and UPER backends. Corrected to handle the constraint in the same way as (SIZE (1..4, ...)). * asn1: The JER backend has been internally refactored in a way that is compatible for applications that use the documented API. However, for a group of ASN.1 modules that depend on each other (for example, S1AP-PDU-Descriptions, S1AP-Contents, and so on), all modules in the group must be recompiled if on of the group members is recompiled. * observer: Closing the trace log window via the menu did not work. * erts: maps:put with existing key and identical value was not optimized as a no-op correctly if having the same 32-bit hash as another key in the map. In practice very rare and harmless. * erts: Fixed an issue with truncated crash slogans on failed emulator start. * erts: Fixed a bug where the emulator was unable to determine the current cgroup CPU quota. * erts: A process optimized for parallel signal delivery could under some circumstances lose wakeup information. That is, the processes was not woken up to take care of the signal, so the signal would not be taken care of until the process was woken by another signal. Only processes configured with message_queue_data set to off_heap utilize this optimization. * erts: Function socket:close/1 could cause a VM crash on Windows. * erts: Fixed a bug in the ARM JIT where it could accidentally add garbage trailing bits when creating bitstrings whose size wasn't an even multiple of 8 bits. * erts: Fix erlang:system_info/1 documentation to show correct types. * erts: Expanded the documentation about how to use the standard_io, standard_error and user I/O devices. Added the types io:standard_io/0, io:standard:error/0 and io:user/0. * erts: Fix compilation with GNU termcap. * erts: Delivery time of message signals to a process not executing any receive expressions could become very long, potentially infinite. For example, a process checking for messages using process_info(self(), message_queue_len) or process_info(self(), messages) and avoiding to execute a receive expression matching on messages could be very slow in detecting new messages. Note that you are still discouraged from using process_info() this way. A process that wants to check if there are messages available to handle should execute a receive expression matching on messages. * erts: On AArch64 (ARM64), when calculating both the quotient and remainder with a divisor begin a power two, the remainder could be incorrectly calculated. * erts: Fix bug causing "magic" references in a compressed ETS table to not keep the referred object alive. The symptom would be the referred object being garbage collected prematurely and the reference appearing stale, not referring to anything. Examples of such magically referred objects are atomics and NIF resources. * erts: Matching out short bitstrings with a fixed size not divisible by 8 could could lead to the runtime system terminating with an "Overrun heap and stack" error. * erts: A constant flow of incoming non-message signals could prevent a process needing to execute dirty from doing so. * erts: A BEAM file usually contains a chunk with the tag "Type" containing type information that can be used by the JIT. The beam_lib:strip/1 takes care to preserve that chunk, but a build/release tool that does customized stripping could accidentally remove the chunk. Loading a BEAM file without the "Type" chunk could cause incorrect behavior of the loaded code. * erts: gen_udp:recv/* for Unix Domain Socket in binary mode and passive mode has been fixed to not crash. * erts: The cleanup operation of not yet delivered signals to a terminated process yielded excessively. * erts: Fixed minor hashing issue with the local option of term_to_binary()/term_to_iovec(). * erts: Update gen_tcp_socket and gen_udp_socket to handle 'completion' (socket on Windows). * erts: Add support for Unix Domain Sockets (only for STREAM sockets) on Windows for 'socket'. * erts: In Erlang/OTP 27, by default escripts will be compiled before being executed. That means that the compiler application must be installed. It is possible to force the escript to be interpreted by adding the directive -mode(interpret). to the escript file. In Erlang/OTP 28, support for interpreting an escript will be removed. * erts: Add basic support for socket ioctl on Windows. * erts: Removed erts/etc/darwin/Info.plist, as it is no longer necessary after macos 10.12 * erts: Add support for (Windows) socket option exclusiveaddruse. * erts: [socket] Add support for the 'nopush' option. * erts: Add support for socket option 'BSP STATE'. * erts: Add tcp socket options 'keepcnt', 'keepidle' and 'keepintvl'. * erts: Add support for misc (Windows) socket options ('max_msg_size' and 'maxdg'). * compiler: The compiler could run forever when compiling a call to is_record/3 with a huge positive tuple size. The call is_record(A, a, 0) would crash the compiler when used in a function body. When used in a guard the compiler would emit incorrect code that would accept {a> as a record. * compiler: Fixed a bug that caused dialyzer to crash when analyzing bogus code that contained the literal atom undefined in segment sizes. * compiler: The compiler would crash when compiling some modules that contained a call to erlang:load_nif/2. * compiler: Fixed a bug that caused the compiler to crash on legal code. * compiler: The compiler could crash when attempting to compile a call to is_list/1 in a complex expression. * compiler: A complex guard expression using the or operator could succeed when it was supposed to fail. * compiler: Compiling nested try/catch and catch expression could result in an internal compiler error. * compiler: Using the bnot operator in a complex expression could cause the compiler to terminate with an internal consistency failure diagnostic. * compiler: Fixed a bug that caused the compiler to crash in a binary optimization pass. * compiler: The compiler could terminate with an internal error when attempting to compile a binary pattern that could not possibly match. * compiler: Fixed various performance issues related to the alias optimization pass. * erl_docgen: Expanded the documentation about how to use the standard_io, standard_error and user I/O devices. Added the types io:standard_io/0, io:standard:error/0 and io:user/0. * mnesia: Do not delete old backup file if the new backup fails. * megaco: Make megaco transports handle gen_tcp | gen_udp with socket backend on Windows (completion). * common_test: With this change, ct_hooks manual refers to CTH execution order section in user guide. * common_test: With this change, Config data from pre_end_per_testcase hook is delivered to post_end_per_testcase callback in case of testcase timetrap or linked process crash. * common_test: With this change, remaining references to not supported vts tool in ct_run are removed (mainly relates to docs and ct_run help message). * common_test: With this change, prompt search functionality in ct_telnet handles unicode input. * common_test: Expanded the documentation about how to use the standard_io, standard_error and user I/O devices. Added the types io:standard_io/0, io:standard:error/0 and io:user/0. * stdlib: The compiler could run forever when compiling a call to is_record/3 with a huge positive tuple size. The call is_record(A, a, 0) would crash the compiler when used in a function body. When used in a guard the compiler would emit incorrect code that would accept {a> as a record. * stdlib: Fix bug in ets:tab2file that could make it fail if another Erlang process created the same file at the same time. * stdlib: An {else_clause,Value} exception will now be reported nicely in the shell. * stdlib: Correct return value for error case, so that it matches the documented and intended return value {error, {already_started, pid()} when local registered names are used. * stdlib: sys:get_state/1,2 and sys:replace_state/2,3 has been corrected to handle a state named error as a state name, not as a failed system callback. For the standard server behaviours this was an issue only for gen_statem (and gen_fsm) when the state name was error, and for gen_server if the complete state was {error,_}. * stdlib: Multiple problems were fixed in filelib:safe_relative_path/2. If its second argument was a path that contained symbolic links, an incorrect result patch could be returned. Also, paths were sometimes falsely considered unsafe. * stdlib: Fix deadlock when erl.exe is used as part of a pipe on Windows and trying to set the encoding of the standard_io device. * stdlib: Expanded the documentation about how to use the standard_io, standard_error and user I/O devices. Added the types io:standard_io/0, io:standard:error/0 and io:user/0. * stdlib: Fix h/2,3 to properly render multi-clause documentation. * stdlib: Timers created by timer:apply_after/4, apply_interval/4, and apply_repeatedly/4 would silently fail to do the apply if it was not possible to spawn a process when the timer expired. This has now been corrected, and if the spawn fails, the system will be taken down producing a crash dump. * stdlib: When an Erlang source file lacked a module definition, there would be a spurious "module name must not be empty" diagnostic for each spec in the file. * stdlib: The argument descriptions for option types in argparse have been made less ambiguous. * stdlib: Clarified the documentation of normal shutdown reason on gen_server:call/2,3 * stdlib: Pattern matching and equivalence (=:=, =/=) comparisons on 0.0 will now raise a warning, as it will no longer be considered equivalent to -0.0 in OTP 27. If a match on 0.0 specifically is desired (distinct from -0.0), the warning can be suppressed by writing +0.0 instead. The arithmetic comparison operators are unaffected, including arithmetic equality (==). *** POTENTIAL INCOMPATIBILITY *** * stdlib: The semantics of the gen_{server,statem,event} behaviour's synchronous start behaviour introduced in OTP-26.0 with OTP-18471, has been clarified in the documentation. * stdlib: Added functionality to set a custom multiline prompt. * stdlib: A warning for (accidental use of) Triple-Quoted Strings has been implemented as per EEP 64. *** POTENTIAL INCOMPATIBILITY *** * stdlib: The keyboard shortcuts for the shell are now configurable. * kernel: Fixed an issue with truncated crash slogans on failed emulator start. * kernel: Fix shell:start_interactive function specification. * kernel: Fix code:get_doc/1 to return missing, when it can't find erts instead of crashing. * kernel: Function socket:close/1 could cause a VM crash on Windows. * kernel: Fix deadlock when erl.exe is used as part of a pipe on Windows and trying to set the encoding of the standard_io device. * kernel: Expanded the documentation about how to use the standard_io, standard_error and user I/O devices. Added the types io:standard_io/0, io:standard:error/0 and io:user/0. * kernel: Fix logger's overload protection mechanism to only fetch memory used by messages when needed. * kernel: Fixed a number of socket-related issues causing incompatibilities with gen_tcp and gen_udp respectively. * kernel: gen_tcp:connect with socket address and socket (inet-) backend fails because of missing callback function. * kernel: The DNS RR cache used by `inet_res` has been fixed to preserve insert order, which is beneficial when the DNS server returns RRs in some specific order for e.g load balancing purposes. * kernel: The options `reuseport`, `reuseport_lb` and `exclusiveaddruse` were accidentally not allowed for e.g `gen_udp:open/1,2`, which has now been corrected. * kernel: gen_udp:recv/* for Unix Domain Socket in binary mode and passive mode has been fixed to not crash. * kernel: Fixed issue where cursor would not be placed at the end of the expression when navigating shell history. * kernel: Update gen_tcp_socket and gen_udp_socket to handle 'completion' (socket on Windows). * kernel: Add support for Unix Domain Sockets (only for STREAM sockets) on Windows for 'socket'. * kernel: Add basic support for socket ioctl on Windows. * kernel: The file:location/0 type is now exported. * kernel: Add support for (Windows) socket option exclusiveaddruse. * kernel: [socket] Add support for the 'nopush' option. * kernel: Add support for socket option 'BSP STATE'. * kernel: Add tcp socket options 'keepcnt', 'keepidle' and 'keepintvl'. * kernel: Add support for misc (Windows) socket options ('max_msg_size' and 'maxdg'). * kernel: The keyboard shortcuts for the shell are now configurable. * kernel: Optimized code_server to reduce repeated work when loading the same module concurrently. * debugger: The call int:no_break(Module) did not remove any breakpoints. * debugger: The maybe expression is now supported in the Debugger. * debugger: The maybe expression is now supported in the Debugger. * debugger: The call int:no_break(Module) did not remove any breakpoints. * ssl: Avoid function clause error in ssl:getopts/2 by handling that inet:getopts may return an empty list during some circumstances, such as the socket being in a closing state. * ssl: The API function `ssl:recv/3` has been tightened to disallow negative length, which has never been documented to work, but was passed through and caused strange errors. * ssl: When a client initiated renegotiation was rejected and the client socket was in active mode the expected error message to the controlling process was not sent. * ssl: Add some guidance for signature algorithms configuration in ssl applications users guide. * snmp: Make snmp handle gen_udp with socket backend on Windows (completion). * public_key: Country name comparison shall be case insensitive * public_key: Add check to disallow duplicate certs in a path * inets: With this change, re_write httpd works as expected and does not return error. * inets: Fixed a bug so httpd does not crash when stopped at the wrong time during TLS connection negotiation, or any other theoretically as slow connection setup. * inets: Enhance error handling and avoid that the HTTP client hangs on headers provided on the wrong format. * inets: With this change, error report generated by httpd during connection setup contains socket type information. * inets: Stop and restart of the httpd server in the Inets application has been refactored to a more synchronous and OTP supervisor friendly approach. This should increase stability and for example avoid a supervisor report from httpd_connection_sup about killed child process(es) in some cases when stopping or restarting httpd. * dialyzer: Fixed a bug that caused dialyzer to crash when analyzing bogus code that contained the literal atom undefined in segment sizes. * dialyzer: Dialyzer could crash when attempting to analyze a module that defined a type called product/. - Changes for 26.0.2: * erts: Fix using the IME (Input Method Editor) to enter text in cmd.exe and powershell.exe on Windows. * erts: Multiple socket:accept calls issue. When making multiple accept calls, only the last call is active. * erts: Fix the shell to ignore terminal delay when the terminal capabilities report that they should be used. * erts: Fix "oldshell" to echo characters while typing on Windows. * erts: On Windows, a call to the function socket:close, when there are waiting active calls to read, write or accept functions, could hang. * erts: Fix issues when reading or configuring standard_io on Windows when erl.exe is started using -noshell flag. * erts: The following functions are now much faster when given a long list or binary: * erts: On AArch64 (ARM64), equality and non-equality tests with literal bitstrings could succeed when they should fail and vice versa. * compiler: Fixed a type handling bug that would cause an internal consistence failure for correct code. * compiler: Fixed a bug that could cause the stack trace of throw exceptions to be erroneously optimized out. * compiler: Complex guard expression using 'or' were not always fully evaluated, making guards that were supposed to fail succeed. * stdlib: Fix bug where when you entered Alt+Enter in the terminal, the cursor would move to the last line, instead of moving to the next line. * stdlib: Fix eof handling when reading from stdin when erlang is started using -noshell. * stdlib: Fixed problem where output would disappear if it was received after a prompt was written in the shell. * stdlib: The following functions are now much faster when given a long list or binary: * kernel: Fix bug where when you entered Alt+Enter in the terminal, the cursor would move to the last line, instead of moving to the next line. * kernel: Fix so that the shell does not crash on startup when termcap is not available. * kernel: Multiple socket:accept calls issue. When making multiple accept calls, only the last call is active. * kernel: Fix the shell to ignore terminal delay when the terminal capabilities report that they should be used. * kernel: Fix "oldshell" to echo characters while typing on Windows. * kernel: Fix eof handling when reading from stdin when erlang is started using -noshell. * kernel: On Windows, a call to the function socket:close, when there are waiting active calls to read, write or accept functions, could hang. * kernel: Fix issues when reading or configuring standard_io on Windows when erl.exe is started using -noshell flag. * kernel: gen_udp:connect with inet_backend = socket fails when the Address is a hostname (string or atom). * kernel: Fixed problem which would cause shell to crash if particular escape sequence was written to stdout. * kernel: Fixed problem where output would disappear if it was received after a prompt was written in the shell. * kernel: Fix a crash where the location of erts could not be found in rebar3 dev builds. * kernel: Introduce the KERNEL application parameter standard_io_encoding that can be used to set the default encoding for standard_io. This option needs to be set to latin1 if the application wants to treat all input data as bytes rather than utf-8 encoded characters. * ssl: Added keylog information to all protocol versions in ssl:connection_information/2. * ssl: Add RFC-6083 considerations for DTLS to enable gen_sctp based callback for the transport. * ssh: Added multiline editing support to ssh clients connected through OTP ssh daemon.- Changes for 26.0.1: * erts: Build of the socket nif failed on Solaris 11. * erts: Fixed two reduction-counting bugs relating to binaries. * erts: Constructing a binary segment not aligned with a byte boundary, with a size not fitting in 31 bits, and with a value not fitting in a 64-bit word could crash the runtime system. * erts: When a binary construction failed because of bad size for a segment, the error information was not always correct. * erts: Fixed a crash when calling a fun that was defined in a module that had been upgraded. * kernel: The POSIX error exdev was sometimes incorrectly described as "cross domain link" in some error messages. * kernel: Corrected the socket send function description (send with Timeout = nowait). The send function(s) could not return {ok, {RestData, SelectInfo}} * stdlib: The POSIX error exdev was sometimes incorrectly described as "cross domain link" in some error messages. * ssl: Make sure that selection of client certificates handle both TLS-1.3 and TLS-1.2 names correctly. Could cause valid client certificate to not be selected, and an empty client certificate message to be sent to server. * ssl: Improved ssl:format_error/1 to handle more error tuples. * ssl: Fixed hanging ssl:connect when ssl application is not started. * ssl: Correct handling of retransmission timers, current behavior could cause unwanted delays. * inets: Do not make the default ssl options by calling httpc:ssl_verify_host_options(true) if ssl options are supplied by the user. * xmerl: New options to xmerl_scan and xmerl_sax_parser so one can limit the behaviour of the parsers to avoid some XML security issues. xmerl_scan gets one new option: xmerl_sax_parser gets the following options: The old option skip_external_dtd is still valid and the same as {external_entities, none} and {fail_undeclared_ref, false} but just affects DTD's and not other external references. * compiler: Fixed a bug where a failing bsl expression in a guard threw an exception instead of causing the guard to fail. * compiler: Fixed a bug that would case the validator to reject legal code. * compiler: The compiler could re-order clauses matching binaries so that the incorrect clause would match. That could only happen for code that used the option {error_location,line} or for code without line or column number information (e.g. generated by a parse transform). * compiler: Complex guard expression using the or operator and guard BIFs that can fail could sometimes be miscompiled so that the guard would succeed even if a call to a guard BIF failed. * compiler: With optimizations disabled, a try/catch construct could return an incorrect value. * compiler: In rare circumstance, a combination of binary construction and binary_part/3 would cause the compiler to generate unsafe code that would crash the runtime system. * compiler: The compiler could be very slow when compiling guards with multiple guard tests separated with 'or' or ';'. * compiler: Complex guard expressions using 'or' and map updates could succeed even if the map update failed.- Version 26.0: * Leex has been extended with optional column number support. * The family of enumeration functions in module lists has been extended with enumerate/3 that allows a step value to be supplied. * Update Unicode to version 15.0.0. * proc_lib:start*/* has become synchronous when the started process fails. This requires that a failing process use a new function proc_lib:init_fail/2,3, or exits, to indicate failure. All OTP behaviours have been fixed to do this. * auto-complete of variables, record names, record fields names, map keys, function parameter types and filenames. * Open external editor in the shell to edit the current expression. * defining records (with types), functions, specs and types in the shell. * Creation and matching of binaries with segments of fixed sizes have been optimized. * Creation and matching of UTF-8 segments have been optimized. * Appending to binaries has been optimized. * The compiler and JIT now generate better code for creation of small maps where all keys are literals known at compile time. * Thanks to the optimizations above the performance of the base64 module has been significantly improved. For example, on an x86_64 system with the JIT both encode and decode are almost three times faster than in Erlang/OTP 25. * Map comprehensions as suggested in EEP 58 has now been implemented. * Some map operations have been optimized by changing the internal sort order of atom keys. This changes the (undocumented) order of how atom keys in small maps are printed and returned by maps:to_list/1 and maps:next/1. The new order is unpredictable and may change between different invocations of the Erlang VM. * Introducing the new function maps:iterator/2 for creating an interator that return the map elements in a deterministic order. There are also new modifiers k and K for the format string in io:format() to support printing map elements ordered. * Added the new built-in type dynamic() introduced in EEP 61, PR introducing EEP 61 improving support for gradual type checkers. * Dialyzer has a new incremental mode that be invoked by giving the --incremental option when running Dialyzer. This new incremental mode is likely to become the default in a future release. * Multi time warp mode is now enabled by default. This assumes that all code executing on the system is time warp safe. * Support for UTF-8 atoms and strings in the NIF interface including new functions enif_make_new_atom, enif_make_new_atom_len and enif_get_string_length. * The BIFs min/2 and max/2 are now allowed to be used in guards and match specs. * Improved the selective receive optimization, which can now be enabled for references returned from other functions. This greatly improves the performance of gen_server:send_request/3, gen_server:wait_response/2, and similar functions. * It is no longer necessary to enable a feature in the runtime system in order to load modules that are using it. It is sufficient to enable the feature in the compiler when compiling it. * inet:setopts/2 has got 3 new options: reuseport, reuseport_lb and exclusiveaddruse. * Fix so that -fno-omit-frame-pointer is applied to all of the Erlang VM when using the JIT so that tools, such as perf, can crawl the process stacks. * In the lists module, the zip family of functions now takes options to allow handling lists of different lengths. * Added the zip:zip_get_crc32/2 function to retrieve the CRC32 checksum from an opened ZIP archive. gen_server optimized by caching callback functions * The modules Erlang DNS resolver inet_res and helper modules have been updated for RFC6891; to handle OPT RR with DNSSEC OK (DO) bit. * Introduced application:get_supervisor/1. * Cache OTP boot code paths, to limit how many folders that are being accessed during a module lookup. Can be disabled with - cache_boot_path false. * Support for Kernel TLS (kTLS), has been added to the SSL application, for TLS distribution (-proto_dist inet_tls), the SSL option {ktls, true}. * Improved error checking and handling of ssl options. * Mitigate memory usage from large certificate chains by lowering the maximum handshake size. This should not effect the common cases, if needed it can be configured to a higher value. * For security reasons the SHA1 and DSA algorithms are no longer among the default values. * Add encoding and decoding of use_srtp hello extension to facilitate for DTLS users to implement SRTP functionality.- Changes for 25.3.2.2: * compiler: The compiler could be very slow when compiling guards with multiple guard tests separated with 'or' or ';'. - Changes for 25.3.2.1: * xmerl: New options to xmerl_scan and xmerl_sax_parser so one can limit the behaviour of the parsers to avoid some XML security issues. xmerl_scan gets one new option: xmerl_sax_parser gets the following options: The old option skip_external_dtd is still valid and the same as {external_entities, none} and {fail_undeclared_ref, false} but just affects DTD's and not other external references. * erts: Fixed a crash during tracing on certain platforms that cannot use the machine stack for Erlang code (mainly OpenBSD and Linux with musl). * erts: Constructing a binary segment not aligned with a byte boundary, with a size not fitting in 31 bits, and with a value not fitting in a 64-bit word could crash the runtime system. * erts: Further robustify implementation of large maps (> 32 keys). Keys that happen to have same internal 32-bit hash values are now put in collision nodes which are traversed with linear search. This removes the demand for the internal hash function when salted to eventually produce different hashes for all possible pairs of unequal terms. * stdlib: Static supervisors are very idle processes after they have started so they will now be hibernated after start to improve resource management. * compiler: Fixed a bug where a failing bsl expression in a guard threw an exception instead of causing the guard to fail. * compiler: Complex guard expression using the or operator and guard BIFs that can fail could sometimes be miscompiled so that the guard would succeed even if a call to a guard BIF failed.- Changes for 25.3.2: * compiler: Fixed type handling bugs that could cause an internal error in the compiler for correct code. * os_mon: Avoid error report from failing erlang:port_close at shutdown of cpu_sup and memsup. Bug exists since OTP 25.3 (os_mon-2.8.1). * erts: If a runtime system which was starting the distribution already had existing pids, ports, or references referring to a node with the same nodename/creation pair that the runtime system was about to use, these already existing pids, ports, or references would not work as expected in various situations after the node had gone alive. This could only occur if the runtime system was communicated such pids, ports, or references prior to the distribution was started. That is, it was extremely unlikely to happen unless the distribution was started dynamically and was even then very unlikely to happen. The runtime system now checks for already existing pids, ports, and references with the same nodename/creation pair that it is about to use. If such are found another creation will be chosen in order to avoid these issues. - Changes for 25.3.1: * snmp: Attempts to minimize the number of the error reports during a failed agent init. * compiler: When a map update such as #{}#{key:=value} that should fail with an exception was unused, the exception would be lost. * compiler: Fixed bug in the validator that made it reject valid code. * crypto: With this change, random errors are fixed for crypto:generate_key calls with OpenSSL 3. * erts: Fixed a bug in the loader that prevented certain modules compiled with no_ssa_opt from being loaded. * erts: Implementations of the call() driver callback that returned a faulty encoded result could cause a memory leak and could cause invalid data on the heap of the processes calling erlang:port_call/3. * erts: Fixed a memory corruption issue when upgrading code. The bug was introduced in OTP 25.3 * erts: Fixed configure tests for a few ARM-specific instructions, which prevented the emulator from being built on some platforms. * erts: Aliases created in combination with a monitor using the {alias, explicit_unalias} option stopped working from remote nodes when a 'DOWN' signal had been received due to the monitor or if the monitor was removed using the erlang:demonitor() BIF. This bug was introduced in OTP 24.3.4.10 and OTP 25.3. * erts: In rare circumstances, bit syntax matching of an invalid code point for a utf32 would crash the runtime system. * erts: Building the runtime system failed when native atomic support was missing. Note that execution on such systems have only been rudimentary tested. * erl_interface: Fixed configure tests for a few ARM-specific instructions, which prevented the emulator from being built on some platforms. * eldap: Added a new function eldap:info/1 that returns the socket and the transport protocol for the eldap connection. * inets: Correct timing related pipelining/keepalive queue bug, that could result in unexpected "socket_remotly_closed" errors. * inets: With this change, upon remote socket closure current request is added to a retried queue (either pipeline or keep_alive, but not both). * ssl: With this change, ssl:connection_information/2 returns correct keylog data after TLS1.3 key update. * ssl: Client signature algorithm list input order is now honored again , it was accidently reversed by a previous fix. * stdlib: The type specs in the erl_parse module has been updated to include the maybe construct and the ! operator. * wx: Improve debug prints from the nifs. Some minor fixes for wxWidgets-3.2. Fixed OpenGL debug functions.- Changes for 25.3: * reltool: Fixed a bug that would cause analysis to crash. * stdlib: Fixed a bug that would cause analysis to crash. * stdlib: Fixed a crash when formatting stack traces for error reports. * stdlib: Instead of crashing, the list_to_integer/1 and list_to_integer/2 BIFs now raise the system_limit exception for overlong lists that can't be converted to integers. Similarly, the string:to_integer/1 BIF now returns {error,system_limit} for overlong lists. * stdlib: Removal of non-necessary undefined types added to the state's supervisor record. * compiler: Fixed a bug that would cause the compiler to hang. * compiler: Fixed a crash when compiling code that contained maybe expressions. * compiler: Constructing a binary with an explicit size of all for a binary segment would crash the compiler. * compiler: The compiler would generate incorrect code for the following type of expression: Pattern = BoundVar1 = . . . = BoundVarN = Expression An exception should be raised if any of the bound variables have different values than Expression. The compiler would generate code that would cause the bound variables to be bound to the value of Expressionwhether the value matched or not. * xmerl: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * megaco: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * debugger: Fixed a bug that would cause analysis to crash. * erts: Fixed a bug on Windows where file:read_file_info/1 would fail for files with corrupt metadata. * erts: Fix process_info(_, binary) to again include "writable binaries" which were lost in OTP-25.0. Writable binaries are an optimization used when binaries are appended upon in a loop. * erts: Fix rare race when receiving fragmented messages on a terminating connection. Could potentially cause memory leaks as well as double free crashes. Bug exists since OTP 22.0. * erts: Fixed bug that could maybe cause problems when a file descriptor number is closed by a linked in driver and then opened (reused) and passed to enif_select by a NIF. No actual symptoms seen, only failed internal assertions in debug build. * erts: The runtime system could crash when tracing a process executing on a dirty scheduler. * erts: In the binary syntax, attempting to match out integers with size exceeding 2 GiB could crash the runtime system. * erts: Fixed edge case in floating-point negation where A = 0.0, B = -A did not produce B = -0.0 on x86_64 JIT. * erts: Fixed an issue in the JIT that could crash the emulator on some platforms. * erts: Added meta data to the windows installer. * erts: Fixed ETS insertion order into bag and duplicate_bag of tuples with identical keys when passed in a list to ets:insert/2. The insert order has been head-to-tail but was accidentally changed in OTP 23.0. For bag it was reverted (tail-to-head), while for duplicate_bag it was sometimes reverted depending on the length of the list and number of "reductions" left for the calling process. This fix changes the insert order of ets:insert/2 back to always be head-to-tail of the list argument. * erts: With the JIT for AArch64 (AMD64), calling bxor in with non-integer arguments in a guard would crash the runtime system. * erts: Fix bug regarding process flag max_heap_size. Could cause strange behavior when a process was killed due to exceeding the limit. * erts: Fixed binary comprehensions to be similar to other creation of binary data with respect to its contribution of triggering garbage collection. * erts: In rare circumstances, when a process exceeded its allowed heap size set by option max_heap_size, it would not be killed as it should be, but instead enter a kind of zombie state it would never get out of. * erts: Instead of crashing, the list_to_integer/1 and list_to_integer/2 BIFs now raise the system_limit exception for overlong lists that can't be converted to integers. Similarly, the string:to_integer/1 BIF now returns {error,system_limit} for overlong lists. * erts: Active process aliases of a process at its termination leaked memory. * erts: Support for fully asynchronous distributed signaling where send operations never block. This functionality is by default disabled and can be enabled per process. For more information see the documentation of process_flag(async_dist, Bool). * erts: Added the +JPperf no_fp option to explicitly disable Erlang frame pointers otherwise added when using the +JPperf map option. * erl_interface: Accept connection setup from OTP 23 and 24 nodes that are not using epmd. * erl_interface: The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled. * syntax_tools: erl_syntax_lib:annotate_bindings/1,2 will now properly annotate named functions and their arguments. * kernel: Fixed a bug on Windows where file:read_file_info/1 would fail for files with corrupt metadata. * kernel: Accept connection setup from OTP 23 and 24 nodes that are not using epmd. * public_key: As different solutions of verifying certificate revocation exists move the decode of 'CRLDistributionPoints' so that it will only be decode. When it is actually used in the verification process. This would enable interoperability with systems that use certificates with an invalid empty CRLDistributionPoints extension that they want to ignore and make verification by other means. * public_key: public_key:pkix_path_validation validates certificates expiring after 2050 * public_key: Do not leave exit message in message queue after calling cacerts_load() on MacOS. * public_key: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * ssl: Fixed that new dtls connections from the same client ip port combination works. If there is a process waiting for accept the new connection will connect to that, otherwise it will try to re-connect to the old server connection. * ssl: When shutting down a node that uses SSL distribution (-proto_dist inet_tls), a confusing error message about an unexpected process exit was printed. This particular message is no longer generated. * ssl: fixes the type spec for ssl:format_error/1 * ssl: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * jinterface: Accept connection setup from OTP 23 and 24 nodes that are not using epmd. * os_mon: The port programs used by cpu_sup and memsup are now gracefully shut down when cpu_sup and memsup are shut down. * eunit: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * crypto: A user defined runtime library path configured using - -with-ssl-rpath= could fail to be enabled. * crypto: Ensure that configure fails if a user defined runtime library path has been passed by the user, but cannot set. * mnesia: Improved consistency for dirty writes when a table was added with add_table_copy/3. Fixed a problem with sticky write, which could lead to inconsistent data. * mnesia: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * common_test: Renamed undocumented macro CT_PEER/3 to CT_PEER_REL/3. * ssh: With this change, PKCS8 formatted private key file is properly decoded and SSH daemon with such key can be started. * ssh: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * inets: With this change, handling of URI to a folder, with missing trailing / and a query component present is fixed. * inets: Adds more type information to the inets app, thus improving the errors that static analysis tools can detect. The addition of type information to records and the updates to function heads help static analysis tools to understand that some values in the records cannot be 'undefined', thus making static tools to type check correctly more modules in the inets app * inets: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * snmp: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * ftp: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * dialyzer: Fixed a bug that would cause analysis to crash. * dialyzer: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. * tftp: Replace size/1 with either tuple_size/1 or byte_size/1 The size/1 BIF is not optimized by the JIT, and its use can result in worse types for Dialyzer. When one knows that the value being tested must be a tuple, tuple_size/1 should always be preferred. When one knows that the value being tested must be a binary, byte_size/1 should be preferred. However, byte_size/1 also accepts a bitstring (rounding up size to a whole number of bytes), so one must make sure that the call to byte_size/ is preceded by a call to is_binary/1 to ensure that bitstrings are rejected. Note that the compiler removes redundant calls to is_binary/1, so if one is not sure whether previous code had made sure that the argument is a binary, it does not harm to add an is_binary/1 test immediately before the call to byte_size/1. - Changes for 25.2.3: * erts: Comparisons between small numbers and pids or ports would in some edge cases say that the number was greater than the pid or port, violating the term order. * erts: process_info(Pid, status) when Pid /= self() could return an erroneous result. * ssl: Maximize compatibility by ignoring change_cipher_spec during handshake even if middle_box_mode is not negotiated (mandated by client) * ssl: Move assert of middlebox message after an hello_retry_request to maximize interoperability. Does not changes semantics of the protocol only allows unexpected message delay from server. * ssh: With this change, ssh application does not crash when formatting some of info reports for unsuccessful connections. * ssh: With this change, ssh does not log extensively long messages. * inets: Ensure graceful shutdown * inets: Return type of the type specification for function httpc:cookie_header/{1,2,3} has been fixed from -spec cookie_header(url()) -> [{ field(), value() }] | {error, Reason} to -spec cookie_header(url()) -> { field(), value() } | {error, Reason} - Changes for 25.2.2: * ftp: Fixes calls to ftp:nlist/2 returning {error, epath} when the file / folder exists - Changes for 25.2.1: * compiler: Fixed a bug that could cause legal code to fail validation. * compiler: Eliminated a rare crash in the beam_types module. * erts: Fixed a bug in selective receive optimization that could crash 32-bit emulators. * erts: A race condition which was very rarely triggered could cause the signal queue of a process to become inconsistent causing the runtime system to crash. * kernel: The tcp connect option 'bind_to_device' could not be used with inet_backend = 'socket'. 'inet' requires value type binarry() and 'socket' requires value type 'string()'. * kernel: Minor issue processing options when calling gen_tcp:connect with a sockaddr() and inet_backend = socket. * common_test: Change timeout to infinity for gen_server calls in cth_log_redirect * inets: fixes a missing case of the type specification for httpd:info/2/3/4 * snmp: Single threaded agent crash when vacm table not properly initiated.- Changes for 25.2: * erts: Fix perf/gdb JIT symbols to not contain CodeInfoPrologue for the JIT internal module erts_beamasm. * erts: Fixed minor memory leaks. * erts: Fix bugs in ets:insert and ets:insert_new when called with a list of tuples to insert while a concurrent process either deletes or renames the table. The table deletion could be done with ets:delete/1 or be caused by termination of the table owning process. Symptoms are either VM crash or strange incorrect behavior from the insert operation. The risk of triggering the bugs increases with the length of the list of tuple to insert. Bugs exist since OTP 23.0. * erts: Boost execution of scheduled thread progress jobs. This to prevent memory exhaustion in extremely rapid allocation/deallocation scenarios, such as repeated ETS table creations/deletions. * erts: Fix segv crash during crash dumping an ETS table doing ets:delete_all_objects. * erts: Spec for function net:if_names/0 incorrect * erts: Fix bug in binary_to_term decoding a binary term 2Gbyte or larger. * erts: Documentation of erlang:module_loaded/1 has been adjusted: * erts: Fix list_to_atom/1 for negative code points. Could either return with a positive code point or fail with an incorrect exception. * erts: Fix rare bug causing VM crash when sending to a pid of a spawning process returned from erlang:processes/0. Only seen when provoked by system process literal_area_collector, triggered by a module purge operation, on a VM started with +Meamin (no customized allocators). * erts: gen_udp:open/2 with option(s) add_membership or drop_membership would drop earlier options. * erts: The inet:setopts/2 {reuseaddr, true} option will now be ignored on Windows unless the socket is an UDP socket. For more information see the documentation of the reuseaddr option part of the documentation of inet:setopts/2. Prior to OTP 25 the {reuseaddr, true} option was ignored for all sockets on Windows, but as of OTP 25.0 this was changed so that it was not ignored for any sockets. *** POTENTIAL INCOMPATIBILITY *** * erts: Fix bug in binary_to_term decoding a list of length 1G or longer. * erts: Fix bug in binary_to_term (and distributed receive) when decoding a large map (>32 keys) with unsorted small maps (<= 32) as keys of the large map. This was only a problem if the term was encoded by erl_interface, jinterface or otherwise, as the VM itself always encodes small maps with sorted keys. The "binary_to_term" would appear as successful but the created large map was internally inconsistent. The smaller key-maps could not be found with maps:get and friends. Other operations such as map compare and merge could probably also give incorrect results. * erts: Fix Windows bug in open_port({spawn, Command}, ..) when Command is found via the OS search PATH and that directory path contains white spaces. The port program would start but the command line arguments to it could be incorrect. * ftp: fix unexpected result ok when calling ftp:nlist repeatedly * inets: This change allows body requests to httpc:request/5 be an iolist() * inets: addition of type specs in httpc.erl * inets: httpc: Add support for HTTP 308 status code * dialyzer: Dialyzer would crash when attempting to analyze a bit syntax segment size having an literal non-integer size such as []. * dialyzer: Dialyzer could crash when trying to analyze a convoluted nested expression involving funs, * kernel: Fixed shutdown crash in gen_tcp socket backend, when the other end closed the socket. * kernel: erl_tar can now read gzip-compressed tar files that are padded. There is a new option compressed_one for file:open/2 that will read a single member from a gzip file, * kernel: Fix os:cmd to not translate all exceptions thrown to badarg. For example emfile from erlang:open_port was translated to badarg. This bug has existed since Erlang/OTP 24. * kernel: Spec for function net:if_names/0 incorrect * kernel: Missing ctrl option name transation for TOS and TTL (on FreeBSD) when using gen_udp with the 'socket' inet_backend. * kernel: gen_udp:open/2 with option(s) add_membership or drop_membership would drop earlier options. * kernel: The inet:setopts/2 {reuseaddr, true} option will now be ignored on Windows unless the socket is an UDP socket. For more information see the documentation of the reuseaddr option part of the documentation of inet:setopts/2. Prior to OTP 25 the {reuseaddr, true} option was ignored for all sockets on Windows, but as of OTP 25.0 this was changed so that it was not ignored for any sockets. *** POTENTIAL INCOMPATIBILITY *** * kernel: The distribution socket option handling in inet_tcp_dist has been cleaned up to clarify which were mandatory and which just had default values. * kernel: Improve warning message format for gen_tcp_socket. * snmp: Explicitly close the socket(s) when terminating (default-) net-if process. * stdlib: erl_tar can now read gzip-compressed tar files that are padded. There is a new option compressed_one for file:open/2 that will read a single member from a gzip file, * stdlib: A concurrent call to ets:rename could cause ets:delete_all_objects to fail halfway through with badarg. * stdlib: It is not allowed to call functions from guards. The compiler failed to reject a call in a guard when done by constructing a record with a default initialization expression that called a function. * stdlib: The compiler could crash when using a record with complex field initialization expression as a filter in a list comprehension. * stdlib: unicode:characters_to_binary() could build unnecessarily large call stack. * stdlib: Improve error message for ets:new/2 name clash. Say "name already exists" instead of less specific "invalid options". * mnesia: Fixed crash which could happen during startup if too many decisions where sent from remote nodes. * os_mon: The disk_space_check_interval configuration parameter of disksup can now be set to values smaller than a minute. * ssh: graceful shutdown of ssh_conection_handler when connection is closed by peer * common_test: Fix starting of peer nodes on old releases when the compile server was active and the current Erlang installation contained non-latin1 characters in its path. * public_key: Disregard LDAP URIs when HTTP URIs are expected. * ssl: With this change, tls_sender process is hibernated after sufficient inactivity. * ssl: Correct handling of legacy schemes so that ECDSA certs using sha1 may be used for some TLS-1.3 configurations. * ssl: With this change, tls_sender does not cause logger crash upon key update. * ssl: Enhance warning message * ssl: Provide server option to make certificate_authorities extension in the TLS-1.3 servers certificate request optional. This will allow clients to send incomplete chains that may be reconstructable and thereby verifiable by the server, but that would not adhere to the certificate_authorities extension. * ssl: If the verify_fun handles four arguments the DER cert will be supplied as one of the arguments. * megaco: A very minor improvement to the measurement tool. * observer: A WX event race could causes a crash in when handling socket or port info. * observer: Improve the nodes menu to include more nodes. * compiler: Line number in compiler messages would be truncated to 4 digits for line numbers greater than 9999. * compiler: In rare circumstance, matching a binary as part of a receive clause could cause the compiler to terminate because of an internal consistency check failure. * compiler: Compiling a function with complex bit syntax matching such as f(<>, <>) -> ok. could crash the compiler. * compiler: It is not allowed to call functions from guards. The compiler failed to reject a call in a guard when done by constructing a record with a default initialization expression that called a function. * compiler: The compiler could crash when using a record with complex field initialization expression as a filter in a list comprehension. * wx: Added environment variable WX_MACOS_NON_GUI_APP to allow user to override OSXIsGUIApplication behavior.- Changes for 25.1.2: * mnesia: Don't fill the logs if mnesia can't connect to all nodes, due to partitioned network. * erts: Add abandon carrier free utilization limit (+Muacful) option to erts_alloc. This option allows the user to mark unused segments in a memory carrier as re-useable by the OS if needed. This functionality was a non-configurable default before Erlang/OTP 25, but removed due to performance issues.- Changes for 25.1.1: * dialyzer: Dialyzer could crash when analyzing Elixir code that used intricate macros. * dialyzer: The --input_list_file option has been added. * ssl: Fixes handling of symlinks in cacertfile option. * eunit: With this change, eunit exact_execution option works with application primitive. * stdlib: peer nodes failed to halt when the process supervising the control connection crashed. When an alternative control connection was used, this supervision process also quite frequently crashed when the peer node was stopped by the node that started it which caused the peer node to linger without ever halting. * asn1: For the per and uper ASN.1 encoding rules, encoding and decoding the SEQUENCE OF and SET OF constructs with 16384 items or more is now supported. * erts: Listen sockets created with the socket module, leaked (erlang-) monitors. * erts: Notifications about available distribution data sent to distribution controller processes could be lost. Distribution controller processes can be used when implementing an alternative distribution carrier. The default distribution over tcp was not effected and the bug was also not present on x86/x86_64 platforms. * kernel: Listen sockets created with the socket module, leaked (erlang-) monitors. * kernel: peer nodes failed to halt when the process supervising the control connection crashed. When an alternative control connection was used, this supervision process also quite frequently crashed when the peer node was stopped by the node that started it which caused the peer node to linger without ever halting. - Changes for 25.1: * dialyzer: Two bugs have been fixed in Dialyzer's checking of behaviors: When a mandatory callback function is present but not exported, Dialyzer would not complain about a missing callback. When an optional callback function was not exported and had incompatible arguments and/or the return values were incompatible, Dialyzer would complain. This has been changed to suppress the warning, because the function might not be intended to be a callback function, for instance if a release added a new optional callback function (such as format_status/1 for the gen_server behaviour added in OTP 25). * dialyzer: The no_extra_return and no_missing_return warnings can now be suppressed through -dialyzer directives in source code. * jinterface: Fix javadoc build error by adding option -encoding UTF-8. * diameter: There is a new configure option, --enable- deterministic-build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non- determinism in several applications. * crypto: Fix configure with --with-ssl and --disable-dynamic- ssl-lib on Windows. * crypto: Remove all references correctly in the garbage collection if an engine handle was not explicit unloaded. * crypto: Changed the behaviour of the engine load/unload functions The engine load/unload functions have got changed semantics to get a more consistent behaviour and work correct when variables are garbage collected. The load functions now don't register the methods for the engine to replace. That will now be handled with the new functions engine_register/engine_unregister if needed. Some functions are removed from the documentation and therefor the API, but they are left in the code for compatibility. *** POTENTIAL INCOMPATIBILITY *** * crypto: Fixed a naming bug for AES-CFB and Blowfish-CFB/OFB when linked with OpenSSL 3.0 cryptolib. * crypto: Sign/verify does now behave as in OTP-24 and earlier for eddsa. * crypto: Pass elliptic curve names from crypto.erl to crypto's nif. * crypto: The configure option --disable-deprecated-warnings is removed. It was used for some releases when the support for OpenSSL 3.0 was not completed. It is not needed in OTP 25. * crypto: Crypto is now considered to be usable with the OpenSSL 3.0 cryptolib for production code. ENGINE and FIPS are not yet fully functional. * crypto: Do not exit if the legacy provider is missing in libcrypto 3.0. * ssl: Reject unexpected application data in all relevant places for all TLS versions. Also, handle TLS-1.3 middlebox compatibility with more care. This will make malicious connections fail early and further, mitigate possible DoS attacks, that would be caught by the handshake timeout. Thanks to Aina Toky Rasoamanana and Olivier Levillain from Télécom SudParis for alerting us of the issues in our implementation. * ssl: With this change, value of cacertfile option will be adjusted before loading certs from the file. Adjustments include converting relative paths to absolute and converting symlinks to actual file path. Thanks to Marcus Johansson * ssl: In TLS-1.3, if chain certs are missing (so server auth domain adherence can not be determined) send peer cert and hope the server is able to recreate a chain in its auth domain. * ssl: Make sure periodical refresh of CA certificate files repopulates cache properly. * ssl: Correct internal CRL cache functions to use internal format consistently. * ssl: Incorrect handling of client middlebox negotiation for TLS-1.3 could result in that a TLS-1.3 server would not use middlebox mode although the client was expecting it too and failing the negotiation with unexpected message. * ssl: If the "User" process, the process starting the TLS connection, gets killed in the middle of spawning the dynamic connection tree make sure we do not leave any processes behind. * ssl: A vulnerability has been discovered and corrected. It is registered as CVE-2022-37026 "Client Authentication Bypass". Corrections have been released on the supported tracks with patches 23.3.4.15, 24.3.4.2, and 25.0.2. The vulnerability might also exist in older OTP versions. We recommend that impacted users upgrade to one of these versions or later on the respective tracks. OTP 25.1 would be an even better choice. Impacted are those who are running an ssl/tls/dtls server using the ssl application either directly or indirectly via other applications. For example via inets (httpd), cowboy, etc. Note that the vulnerability only affects servers that request client certification, that is sets the option {verify, verify_peer}. (bsc#1205318) * eunit: With this change, Eunit can optionally not try to execute related module with "_tests" suffix. This might be used for avoiding duplicated executions when source and test modules are located in the same folder. * erl_docgen: Update DTD to allow XML tag em under pre. * inets: Add httpc:ssl_verify_host_options/1 to help setting default ssl options for the https client. * inets: This change fixes dialyzer warnings generated for inets/httpd examples (includes needed adjustment of spec for ssh_sftp module). * inets: Remove documentation of no longer supported callback. * stdlib: Fixed inconsistency bugs in global due to nodeup/nodedown messages not being delivered before/after traffic over connections. Also fixed various other inconsistency bugs and deadlocks in both global_group and global. As building blocks for these fixes, a new BIF erlang:nodes/2 has been introduced and net_kernel:monitor_nodes/2 has been extended. The -hidden and - connect_all command line arguments did not work if multiple instances were present on the command line which has been fixed. The new kernel parameter connect_all has also been introduced in order to replace the -connect_all command line argument. * stdlib: Fix the public_key:ssh* functions to be listed under the correct release in the Removed Functionality User's Guide. * stdlib: The type spec for format_status/1 in gen_statem, gen_server and gen_event has been corrected to state that the return value is of the same type as the argument (instead of the same value as the argument). * stdlib: If the timer server child spec was already present in kernel_sup but it was not started, the timer server would fail to start with an {error, already_present} error instead of restarting the server. * stdlib: When changing callback module in gen_statem the state_enter calls flag from the old module was used in for the first event in the new module, which could confuse the new module and cause malfunction. This bug has been corrected. With this change some sys debug message formats have been modified, which can be a problem for debug code relying on the format. * ** POTENTIAL INCOMPATIBILITY *** * stdlib: There is a new configure option, --enable- deterministic-build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non- determinism in several applications. * stdlib: The rfc339_to_system_time/1,2 functions now allows the minutes part to be omitted from the time zone. * stdlib: The receive statement in gen_event has been optimized to not use selective receive (which was never needed, and could cause severe performance degradation under heavy load). * stdlib: Add new API function erl_features:configurable/0 * parsetools: There is a new configure option, --enable- deterministic-build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non- determinism in several applications. * public_key: Support more Linux distributions in cacerts_load/0. * public_key: Correct asn1 typenames available in type pki_asn1_type() * public_key: Sign/verify does now behave as in OTP-24 and earlier for eddsa. * snmp: Improved the get-bulk response max size calculation. Its now possible to configure 'empty pdu size', see appendix c for more info. * snmp: Fix various example dialyzer issues * ssh: Handling rare race condition at channel close. * ssh: New ssh option no_auth_needed to skip the ssh authentication. Use with caution! * ssh: This change fixes dialyzer warnings generated for inets/httpd examples (includes needed adjustment of spec for ssh_sftp module). * ssh: The new function ssh:daemon_replace_options/2 makes it possible to change the Options in a running SSH server. Established connections are not affected, only those created after the call to this new function. * ssh: Add a timeout as option max_initial_idle_time. It closes a connection that does not allocate a channel within the timeout time. For more information about timeouts, see the Timeouts section in the User's Guide Hardening chapter. * observer: Fixed units in gui. * xmerl: There is a new configure option, --enable-deterministic- build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non-determinism in several applications. * asn1: There is a new configure option, --enable-deterministic- build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non-determinism in several applications. * erts: Fixed inconsistency bugs in global due to nodeup/nodedown messages not being delivered before/after traffic over connections. Also fixed various other inconsistency bugs and deadlocks in both global_group and global. As building blocks for these fixes, a new BIF erlang:nodes/2 has been introduced and net_kernel:monitor_nodes/2 has been extended. The -hidden and -connect_all command line arguments did not work if multiple instances were present on the command line which has been fixed. The new kernel parameter connect_all has also been introduced in order to replace the -connect_all command line argument. * erts: Fixed IPv6 multicast_if and membership socket options. * erts: Accept funs (NEW_FUN_EXT) with incorrectly encoded size field. This is a workaround for a bug (OTP-18104) existing in OTP 23 and 24 that could cause incorrect size fields in certain cases. The emulator does not use the decoded size field, but erl_interface still does and is not helped by this workaround. * erts: Fixed issue with inet:getifaddrs hanging on pure IPv6 Windows * erts: Fix faulty distribution encoding of terms with either The symptom could be failed decoding on the receiving side leading to aborted connection. Fix OTP-18093 is a workaround for theses bugs that makes the VM accepts such faulty encoded funs. The first encoding bug toward pending connection exists only in OTP 23 and 24, but the second one exists also on OTP 25. * erts: Fixed emulator crash that could happen during crashdump generation of ETS tables with options ordered_set and {write_concurrency,true}. * erts: Retrieval of monotonic and system clock resolution on MacOS could cause a crash and/or erroneous results. * erts: Fix bug where the max allowed size of erl +hmax was lower than what was allowed by process_flag. * erts: On computers with ARM64 (AArch64) processors, the JIT could generate incorrect code when more than 4095 bits were skipped at the tail end of a binary match. * erts: In rare circumstances, an is_binary/1 guard test could succeed when given a large integer. * erts: Fix bug causing ets:info (and sometimes ets:whereis) to return 'undefined' for an existing table if a concurrent process were doing ets:insert with a long list on the same table. * erts: Fix writing and reading of more than 2 GB in a single read/write operation on macOS. Before this fix attempting to read/write more than 2GB would result in {error,einval}. * erts: Fix bug sometimes causing emulator crash at node shutdown when there are pending connections. Only seen when running duel distribution protocols, inet_drv and inet_tls_dist. * erts: Yield when adjusting large process message queues due to The message queue adjustment work will now be interleaved with all other types of work that processes have to do, even other message queue adjustment work. * erts: Add rudimentary debug feature (option) for the inet- driver based sockets, such as gen_tcp and gen_udp. * erts: Introduced the hidden and dist_listen options to net_kernel:start/2. Also documented the -dist_listen command line argument which was erroneously documented as a kernel parameter and not as a command line argument. * erts: New documentation chapter "Debugging NIFs and Port Drivers" under Interoperability Tutorial. * erts: Add new API function erl_features:configurable/0 * kernel: Fixed inconsistency bugs in global due to nodeup/nodedown messages not being delivered before/after traffic over connections. Also fixed various other inconsistency bugs and deadlocks in both global_group and global. As building blocks for these fixes, a new BIF erlang:nodes/2 has been introduced and net_kernel:monitor_nodes/2 has been extended. The -hidden and - connect_all command line arguments did not work if multiple instances were present on the command line which has been fixed. The new kernel parameter connect_all has also been introduced in order to replace the -connect_all command line argument. * kernel: Fixed IPv6 multicast_if and membership socket options. * kernel: Fixed issue with inet:getifaddrs hanging on pure IPv6 Windows * kernel: The type specifications for inet:getopts/2 and inet:setopts/2 have been corrected regarding SCTP options. * kernel: The type specifications for inet:parse_* have been tightened. * kernel: Fix gen_tcp:connect/3 spec to include the inet_backend option. * kernel: Fix bug where using a binary as the format when calling logger:log(Level, Format, Args) (or any other logging function) would cause a crash or incorrect logging. * kernel: Add rudimentary debug feature (option) for the inet- driver based sockets, such as gen_tcp and gen_udp. * kernel: Introduced the hidden and dist_listen options to net_kernel:start/2. Also documented the -dist_listen command line argument which was erroneously documented as a kernel parameter and not as a command line argument. * kernel: Scope and group monitoring have been introduced in pg. For more information see the documentation of pg:monitor_scope(), pg:monitor(), and pg:demonitor(). * kernel: A new function global:disconnect/0 has been introduced with which one can cleanly disconnect a node from all other nodes in a cluster of global nodes. * compiler: The compiler will now forbid using the empty atom '' as module name. Also forbidden are modules names containing control characters, and module names containing only spaces and soft hyphens. * compiler: The bin_opt_info and recv_opt_info options would cause the compiler to crash when attempting to compile generated code without location information. * compiler: In rare circumstances involving floating point operations, the compiler could terminate with an internal consistency check failure. * compiler: In rare circumstances when doing arithmetic instructions on non-numbers, the compiler could crash. * compiler: In rare circumstances, complex boolean expressions in nested cases could cause the compiler to crash. * compiler: Expression similar to #{assoc:=V} = #key=>self()}, V would return the empty map instead of raising an exception. * compiler: Eliminated a crash in the beam_ssa_bool pass of the compiler when compiling a complex guard expression. * compiler: In rare circumstances, the compiler could crash with an internal consistency check failure. * compiler: When compiling with the option inline_list_funcs, the compiler could produce a nonsensical warning. * compiler: When given the no_ssa_opt option, the compiler could terminate with an internal consistency failure diagnostic when compiling map matching. * compiler: Made warnings for existing atoms being keywords in experimental features more precise, by not warning about quoted atoms. * compiler: There is a new configure option, --enable- deterministic-build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non- determinism in several applications. * megaco: Fixed various dialyzer related issues in the examples and the application proper. * megaco: There is a new configure option, --enable- deterministic-build, which will apply the deterministic compiler option when building Erlang/OTP. The deterministic option has been improved to eliminate more sources of non- determinism in several applications. * common_test: Fix cth_surefire to handle when a suite is not compiled with debug_info. This bug has been present since Erlang/OTP 25.0. * common_test: Common Test now preserves stack traces for throws.- Changes for 25.0.4: * kernel: A call to net_kernel:setopts(new, Opts) at the same time as a connection was being set up could cause a deadlock between the net_kernel process and the process setting up the connection. * erts: The monitor/3 BIF did not apply options to the created monitor if the target process or port did not exist. That is, the corresponding down message would get a `DOWN` tag even if a custom tag had been set, and the returned reference was not an alias even if the alias option had been passed. * erts: The erlang:monotonic_time/1, erlang:system_time/1, erlang:time_offset/1, and os:system_time/1 BIFs erroneously failed when passed the argument native.- Changes for 25.0.3: * erts: Distributed exit signals could be lost under the following conditions: * erts: A race could cause process_info(Pid, message_queue_len) on other processes to return invalid results. * erts: Fixed reduction counting for handling process system tasks. * erts: Priority elevation of terminating processes did not work which could cause execution of such processes to be delayed. * erts: An unlink operation made by a process that terminated before the unlink operation completed, i.e., before it had received an unlink-ack signal from the linked process, caused an exit signal to erroneously be sent from the terminating process to the process being unlinked. This exit signal would most often be ignored by the receiver, but if the receiver of the exit signal concurrently set up a new link, it could receive the exit signal with the actual exit reason of the terminating process instead of a noproc exit reason. It is however very hard to detect that this has happened and has no obvious negative consequences, so it should be considered harmless. A distributed unlink-ack signal received by a terminating process was also not properly removed which could cause a minor memory leak. * ssl: The link to crypto:engine_load refered the function with wrong arity.- Changes for 25.0.2: * ssl: Improved handling of unexpected messages during the handshake, taking the right action for unexpected messages. * erts: On computers with the ARM64 (AArch64) architecture (such as Apple Silicon Macs) a rem expression followed by a div expression with the same operands could evaluate to the wrong result if the result of the rem expression was unused. - Changes for 25.0.1: * ssl: When a TLS-1.3 enabled client tried to talk to a TLS-1.2 server that coalesces TLS-1.2 handshake message over one TLS record, the connection could fail due to some message being handled in the wrong state, this has been fixed. * ssl: Correctly handles supported protocol version change from default to something else by sni_fun supplied to ssl:handshake/[2,3] together with a TCP-socket (so called upgrade). * ssl: Also, TLS-1.3 should respond with a protocol version alert if previous versions, that are supported but not configured, are attempted. * kernel: The DNS resolver inet_res has been fixed to ignore trailing dot difference in the request domain between the sent request and the received response, when validating a response. * kernel: A bug in inet_res has been fixed where a missing internal {ok,_} wrapper caused inet_res:resolve/* to return a calculated host name instead of an `{ok,Msg} tuple, when resolving an IP address or a host name that is an IP address string. * kernel: The erlang:is_alive() BIF could return true before configured distribution service was available. This bug was introduced in OTP 25.0 ERTS version 13.0. The erlang:monitor_node() and erlang:monitor() BIFs could erroneously fail even though configured distribution service was available. This occurred if these BIFs were called after the distribution had been started using dynamic node name assignment but before the name had been assigned. * kernel: Added the missing mandatory address/0 callback in the gen_tcp_dist example. * erts: A spawn_reply signal from a remote node could be delayed and be delivered after other signals from the newly spawned process. When this bug triggered, the connection to the node where the process was spawned sometimes could be taken down due to the bug. The following error message would then be logged if this happened: Missing 'spawn_reply' signal from the node detected by on the node . The node probably suffers from the bug with ticket id OTP-17737. This bug only affected processes which had enabled off_heap message_queue_data and parallel reception of signals had been automatically enabled. This bug was introduced in OTP 25.0, ERTS version 13.0. * erts: Fixed type spec of erlang:system_info(dist_ctrl). * erts: The zlib built in to the runtime system has been updated to version 1.2.12. (Note that on most platforms, the platform's own zlib is used.) * erts: The erlang:is_alive() BIF could return true before configured distribution service was available. This bug was introduced in OTP 25.0 ERTS version 13.0. The erlang:monitor_node() and erlang:monitor() BIFs could erroneously fail even though configured distribution service was available. This occurred if these BIFs were called after the distribution had been started using dynamic node name assignment but before the name had been assigned. * crypto: Note in the documentation that MODP (rfc3526) groups and OpenSSL 3.0 can give an error if a call to crypto:generate_key/2 specifies a key length, and that length is to small. * crypto: The cmac now uses only the 3.0 API * crypto: Documentation is now updated with which OpenSSL cryptolib versions that OTP currently is tested. * dialyzer: Fixed the documentation for the missing_return and extra_return options. * mnesia: Fixed add_table_copy which could leave a table lock if the receiving node went down during the operation. * ssh: Binaries can be limited in logs with the parameter max_log_item_len. The default value is 500 bytes. * stdlib: In the initial release of Erlang/OTP 25, the expression bound to the _ pseudo-field in a record initialization would always be evaluated once, even if all other fields in the record were explicitly initialized. That would break the use case of binding the expression error(...) to _ in order to get an exception if not all fields were initialized. The behavior of binding to _ has been reverted to the pre-OTP 25 behavior, that is, to not evaluate the expression if all fields have been bound to explicit values.- Version 25.0: - stdlib * New function filelib:ensure_path/1 will ensure that all directories for the given path exists * New functions groups_from_list/2 and groups_from_list/3 in the maps module * New functions uniq/1 uniq/2 in the lists module * New PRNG added to the rand module, for fast pseudo-random numers. - compiler, kernel, stdlib, syntax_tools: * Added support for selectable features as described in EEP-60. Features can be enabled/disabled during compilation with options (ordinary and +term) to erlc as well as with directives in the file. Similar options can be used to erl for enabling/disabling features allowed at runtime. The new maybe expression EEP-49 is fully supported as the feature maybe_expr. - erts & JIT: * The JIT now works for 64-bit ARM processors. * The JIT now does type-based optimizations based on type information in the BEAM files. * Improved the JIT’s support for external tools like perf and gdb, allowing them to show line numbers and even the original Erlang source code when that can be found. - erts, stdlib, kernel: * Users can now configure ETS tables with the {write_concurrency, auto} option. This option forces tables to automatically change the number of locks that are used at run-time depending on how much concurrency is detected. The {decentralized_counters, true} option is enabled by default when {write_concurrency, auto} is active. * Benchmark results comparing this option with the other ETS optimization options are available here: benchmarks. * To enable more optimizations, BEAM files compiled with OTP 21 and earlier cannot be loaded in OTP 25. * The signal queue of a process with the process flag message_queue_data=off_heap has been optimized to allow parallel reception of signals from multiple processes. This can improve performance when many processes are sending in parallel to one process. See benchmark. * The Erlang installation directory is now relocatable on the file system given that the paths in the installation’s RELEASES file are paths that are relative to the installations root directory. * A new option called short has been added to the functions erlang:float_to_list/2 and erlang:float_to_binary/2. This option creates the shortest correctly rounded string representation of the given float that can be converted back to the same float again. * Introduction of quote/1 and unquote/1 functions in the uri_string module - a replacement for the deprecated functions http_uri:encode and http_uri:decode. * The new module peer supersedes the slave module. The slave module is now deprecated and will be removed in OTP 27. * global will now by default prevent overlapping partitions due to network issues. This is done by actively disconnecting from nodes that reports that they have lost connections to other nodes. This will cause fully connected partitions to form instead of leaving the network in a state with overlapping partitions. * It is possible to turn off the new behavior by setting the the kernel configuration parameter prevent_overlapping_partitions to false. Doing this will retain the same behavior as in OTP 24 and earlier. * The format_status/2 callback for gen_server, gen_statem and gen_event has been deprecated in favor of the new format_status/1 callback. * The new callback adds the possibility to limit and change many more things than the just the state. * The timer module has been modernized and made more efficient, which makes the timer server less susceptible to being overloaded. The timer:sleep/1 function now accepts an arbitrarily large integer. - compiler: * The maybe ... end construction as proposed in EEP-49 has been implemented. It can simplify complex code where otherwise deeply nested cases would have to be used. * To enable maybe, give the option {enable_feature,maybe_expr} to the compiler. The exact option to use will change in a coming release candidate and then it will also be possible to use from inside the module being compiled. * When a record matching or record update fails, a {badrecord, ExpectedRecordTag} exception used to be raised. In this release, the exception has been changed to {badrecord, ActualValue}, where ActualValue is the value that was found instead of the expected record. * Add compile attribute -nifs() to empower compiler and loader with information about which functions may be overridden as NIFs by erlang:load_nif/2. * Improved and more detailed error messages when binary construction with the binary syntax fails. This applies both for error messages in the shell and for erl_error:format_exception/3,4. * Change format of feature options and directives for better consistency. Options to erlc and the -compile(..) directive now has the format {feature, feature-name, enable | disable}. The -feature(..) now has the format -feature(feature-name, enable | disable). - crypto: * Add crypto:hash_equals/2 which is a constant time comparision of hashvalues. - ssl: * Introducing a new (still experimental) option {certs_keys,[cert_key_conf()]}. With this a list of a certificates with their associated key may be used to authenticate the client or the server. The certificate key pair that is considered best and matches negotiated parameters for the connection will be selected. - public_key: * Functions for retrieving OS provided CA-certs added. - dialyzer: * Optimize operations in the erl_types module. Parallelize the Dialyzer pass remote. * Added the missing_return and extra_return options to raise warnings when specifications differ from inferred types. These are similar to, but not quite as verbose as overspecs and underspecs. * Dialyzer now better understands the types for min/2, max/2, and erlang:raise/3. Because of that, Dialyzer can potentially generate new warnings. In particular, functions that use erlang:raise/3 could now need a spec with a no_return() return type to avoid an unwanted warning.- Fix build for Factory. Currently, any Java version is fine for Erlang.- Changes for 24.3.2: * erl_interface: Fix compile error regarding gethostbyaddr_r on Android. Error introduced in OTP 24.3. * kernel: Fix failed accepted connection setup after previous established connection from same node closed down silently. * kernel: Fixed a problem where typing Ctrl-R in the shell could hang if there were some problem with the history log file. - Changes for 24.3.1: * dialyzer: There could be spurious warnings for unknown types when a type was a subtype of an existing type that was a subtype of an unknown type. * ssl: Client certification could fail for TLS-1.3 servers that did not include the certificat_authorties extension in its certificate request message. - Changes for 24.3: * megaco: The compilation time is no longer recorded in BEAM files. There remained several undocumented functions that attempted to retrieve compilation times. Those have now been removed. * megaco: Update the performance and debug chapters of the megaco user's guide. Also some updates to the meas tools. * compiler: The expression <<0/native-float>>=Bin would always fail to match, while <<0/float-native>>=Bin would match (provided that Bin contained the binary representation of 0.0) * compiler: The compiler will now compile huge functions with straight-line code faster. * erl_interface: Add --enable-ei-dynamic-lib configure option that will make erl_interface also release a dynamic library version of libei. * erl_interface: The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled. * sasl: Fix bug in systools:make_script/1 documentation. * inets: The compilation time is no longer recorded in BEAM files. There remained several undocumented functions that attempted to retrieve compilation times. Those have now been removed. * inets: Documentation fix for inets:services_info/0, which now describes that Info might be a Reason term() in case when {error, Reason} is returned as service info. * crypto: The crypto app in OTP can since OTP-24.2 be compiled, linked and used with the new OpenSSL 3.0 cryptolib. The crypto app has 3.0 support has been improved, but is still *not recommended* for other usages than experiments and alpha testing. There are not yet any guaranties that it works, not even together with other OTP applications like for example SSL and SSH, although there are no known errors. Since the previous release, OTP-24.2, the following improvements have been done: - It has been tested during nearly every nightly test on the OTP lab - The hash algorithms md4 and ripemd160 have been enabled with OpenSSL 3.0. - The ciphers blowfish_cbc, blowfish_ecb, des_cbc, des_cfb, des_ecb, rc2_cbc and rc4 have been enabled with OpenSSL 3.0. Disabled or unsupported with OpenSSL 3.0 are still: - ENGINE support - FIPS mode - Other providers than the built-in ones - Compiling and linking with OpenSSL 3.0 cryptolib in compatibility modes (for example to behave as 1.1.1) and, the ciphers blowfish_cfb64 and blowfish_ofb64 are not supported and will not be either. Deprecated functions in the OpenSSL 3.0 cryptolib must not be disabled as OTP/crypto still uses some of the deprecated API functions. The gcc flag - Wno-deprecated-declarations is set to prevent deprecation warnings to be printed when compiling. * crypto: Crypto is adapted to LibreSSL 3.5.0 on OpenBSD. * crypto: New configure option ( --disable-otp-test-engine) to prohibit the build of the OTP test engine used in some test suites. The reason is that the test engine could be hard to compile on for instance LibreSSL 3.5.0. For that particular cryptolib version (or higher), this configure option is set automatically. * jinterface: Fix bug in OtpOutputStream.write_pid/4 and write_ref/3 causing faulty encodig. Bug exists since OTP 23.0. * wx: Removed the static_data option from wxImage creation functions, as it was broken and could lead to crashes. Now image data is always copied to wxWidgets as was the default behavior. Removed some non working wxGridEvent event types, which have there own events in newer wxWidgets versions, and added a couple of event types that where missing in wx. * asn1: Add support for the maps option in combination with the jer backend. * snmp: The compilation time is no longer recorded in BEAM files. There remained several undocumented functions that attempted to retrieve compilation times. Those have now been removed. * snmp: [agent] Remove expectation of socket being a port. * common_test: OTP internal test fix. * runtime_tools: Fixed bug in scheduler:utilization(Seconds) that would leave the scheduler_wall_time system flag incorrectly enabled. * runtime_tools: Add scheduler:get_sample/0 and get_sample_all/0. Also clarify scheduler module documentation about how it depends on system flag scheduler_wall_time. * erts: Fixed a bug in the x86 JIT that might cause floating point instructions to wrongly throw an exception. * erts: Preserve correct nodedown_reason if supervised distribution controller processes exit with {shutdown, Reason}. * erts: Handling of send_timeout for gen_tcp has been corrected so that the timeout is honored also when sending 0 bytes. * erts: By default global does not take any actions to restore a fully connected network when connections are lost due to network issues. This is problematic for all applications expecting a fully connected network to be provided, such as for example mnesia, but also for global itself. A network of overlapping partitions might cause the internal state of global to become inconsistent. Such an inconsistency can remain even after such partitions have been brought together to form a fully connected network again. The effect on other applications that expects that a fully connected network is maintained may vary, but they might misbehave in very subtle hard to detect ways during such a partitioning. In order to prevent such issues, we have introduced a prevent overlapping partitions fix which can be enabled using the prevent_overlapping_partitions kernel(6) parameter. When this fix has been enabled, global will actively disconnect from nodes that reports that they have lost connections to other nodes. This will cause fully connected partitions to form instead of leaving the network in a state with overlapping partitions. Note that this fix has to be enabled on all nodes in the network in order to work properly. Since this quite substantially changes the behavior, this fix is currently disabled by default. Since you might get hard to detect issues without this fix you are, however, strongly advised to enable this fix in order to avoid issues such as the ones described above. As of OTP 25 this fix will become enabled by default. * erts: Corrected the type specification of erlang:seq_trace/2. * erts: Fix memory leak when tracing on running on a process that only handle system tasks or non-message signals (for example process_info requests). * erts: Add support for using socket:sockaddr_in() and socket:sockaddr_in6() when using gen_sctp, gen_tcp and gen_udp. This will make it possible to use Link Local IPv6 addresses. * erts: Show on_load failure reasons in embedded mode. * erts: Compile date saved in the Erlang VM executable has been removed. * erts: Improve documentation for the dynamic node name feature. * ssh: Fix makefile dependency bugs. * ssh: Fixed faulty OpenSSH decoding of Ed25519/Ed448 keys in the OpenSSH format openssh_key_v1. * ssh: Correction of ssh_file typing, specially for the experimental openssh-key-v1 encoding. * ssh: Improper tag for private ED keys when encoding with ssh:encode/2. The tuple had ed_priv as first element, but should have had ed_pri. This is now corrected. *** POTENTIAL INCOMPATIBILITY *** * ssh: Add support for Ed25519/Ed448 SSH host keys in the RFC 4716 format ("-----BEGIN EC PRIVATE KEY-----") generated by for example openssl or via Erlang functions (i.e. public_key:generate_key({namedCurve, ed25519})). Ed25519 SSH host keys generated by ssh-keygen was, and are still, supported. * kernel: Handling of send_timeout for gen_tcp has been corrected so that the timeout is honored also when sending 0 bytes. * kernel: By default global does not take any actions to restore a fully connected network when connections are lost due to network issues. This is problematic for all applications expecting a fully connected network to be provided, such as for example mnesia, but also for global itself. A network of overlapping partitions might cause the internal state of global to become inconsistent. Such an inconsistency can remain even after such partitions have been brought together to form a fully connected network again. The effect on other applications that expects that a fully connected network is maintained may vary, but they might misbehave in very subtle hard to detect ways during such a partitioning. In order to prevent such issues, we have introduced a prevent overlapping partitions fix which can be enabled using the prevent_overlapping_partitions kernel(6) parameter. When this fix has been enabled, global will actively disconnect from nodes that reports that they have lost connections to other nodes. This will cause fully connected partitions to form instead of leaving the network in a state with overlapping partitions. Note that this fix has to be enabled on all nodes in the network in order to work properly. Since this quite substantially changes the behavior, this fix is currently disabled by default. Since you might get hard to detect issues without this fix you are, however, strongly advised to enable this fix in order to avoid issues such as the ones described above. As of OTP 25 this fix will become enabled by default. * kernel: Fix bug where logger would crash when logging a report including improper lists. * kernel: Make erlang:set_cookie work for dynamic node names. * kernel: Add support for using socket:sockaddr_in() and socket:sockaddr_in6() when using gen_sctp, gen_tcp and gen_udp. This will make it possible to use Link Local IPv6 addresses. * kernel: A net_tickintensity kernel parameter has been introduced. It can be used to control the amount of ticks during a net_ticktime period. A new net_kernel:start/2 function has also been introduced in order to make it easier to add new options. The use of net_kernel:start/1 has been deprecated. * kernel: Improve documentation for the dynamic node name feature. * erl_docgen: Fix css for large tables and images on small screens * erl_docgen: Fix bug with codeinclude tag that caused it to not include the code if used in a correct, but unexpected way. * observer: Calculate the display width in etop, instead of hard- coding it to 89 characters. * debugger: Fix record index matching, it was broken and could never match. * ssl: Improved error handling. * ssl: Before this change, net_kernel used with TLS distribution might be leaking processes in case of connectivity issues. * ssl: Fix makefile dependency bugs. * ssl: Make sure the TLS sender process handles explicit calls to erlang:disconnect_node properly, avoiding potential hanging problems in net_kernel. * ssl: Add support for TLS-1.3 certificate_authorities extension. And process certificate_authorities field in pre-TLS-1.3 certificate requests. * ssl: Support password fun for protected keyfiles in ssl:connect function. * ssl: Add in some cases earlier detection of possible DoS attacks by malicious clients sending unexpected TLS messages instead of the client hello. Note that such attacks are already mitigated by providing a timeout for the TLS handshake. * eldap: Fix eldap extensibleMatch dnAttributes option. According to the ldap ASN1 the dnAttributes should be a bool, instead it was generated as a string. * eldap: Implemented paged searches according to https://www.rfc- editor.org/rfc/rfc2696.txt * public_key: Support password fun for protected keyfiles in ssl:connect function. * stdlib: The compilation time is no longer recorded in BEAM files. There remained several undocumented functions that attempted to retrieve compilation times. Those have now been removed. * mnesia: Reduce the number of locks taken during table copying, should reduce the startup time on large systems. * diameter: The compilation time is no longer recorded in BEAM files. There remained several undocumented functions that attempted to retrieve compilation times. Those have now been removed.- Changes for 24.2.2: * inets: Avoid intermediate ungraceful shutdown of the HTTP server. * ssh: The ssh sever parallel_login option was missing in OTP-24- Changes for 24.2.1: * ssl: Improve SNI (server name indication) handling so that protocol version can be selected with regards to SNI. Also, make sure that ssl:connection_information/1 returns the correct SNI value. * ssl: Fixed cipher suite listing functions so that the listing of all cipher suites will be complete. Another fix for cipher suite handling in OTP-24.1 accidentally excludes a few cipher suites from the listing of all cipher suites. * ssl: Reenable legacy cipher suite TLS_RSA_WITH_3DES_EDE_CBC_SHA for explicit configuration in TLS-1.2, not supported by default. * ssl: Avoid unnecessary logs by better adjusting the tls_sender process to the new supervisor structure in OTP-24.2 * erts: Fixed a memory leak in file:read_file_info/2 and file:read_file/1 on Windows. * erts: Fix GC emulator crash when spawn_request was used when message tracing was enabled.- Changes for 24.2: * compiler: When the compiler is invoked by Dialyzer, it will no longer apply an optimization of binary patterns that would turn the pattern <<"bar">> into <<6447474:24>>, which would be very confusing when printed out by Dialyzer. * compiler: The compiler would replace known failing calls (such as atom_to_list(42)) with a call to error(badarg). With the extended error information introduced in OTP 24 (EEP 54), those "optimized" calls would not have extended error information. To ensure that as much extended error information as possible is available, the compiler now keeps the original call even when it is known to fail. * sasl: Make release_handler even more resilient against exiting processes during upgrade. Same kind of bug fix as OTP-16744 released in sasl-4.0.1 (OTP 23.1). * ssl: Allow re-connect on DTLS sockets Can happen when a computer reboots and connects from the same client port without the server noticing should be allowed according to RFC. * ssl: Fix tls and non-tls distribution to use erl_epmd:address_please to figure out if IPv4 or IPv6 addresses should be used when connecting to the remote node. Before this fix, a dns lookup of the remote node hostname determined which IP version was to be used which meant that the hostname had to resolve to a valid ip address. * ssl: Use supervisor significant child to manage tls connection process and tls sender process dependency. * ssl: Random generation adjustment for TLS1.3 * ssl: Allow any {03,XX} TLS record version in the client hello for maximum interoperability * mnesia: Documentation and minor code cleanup. * common_test: Before this change, group handling grammar was ambiguous and also group paths did not support test specs. * common_test: Before this change, it was not possible to link to a particular header entry in Common Test log. Change adds right aligned anchor icons in HTML test logs. * parsetools: The default parser include file for yecc (yeccpre) will no longer crash when attempting to print tokens when reporting an error. * tools: Erlang-mode fixed for newer versions of xref using CL- Lib structures instead of EIEIO classes. * inets: Correct HTTP server URI handling to fully rely on uri_string. The server could mistreat some URI paths that in turn could result in incorrect responses being generated. * inets: Extend header values to httpc:request/5 to allow binary() as well. Make error detection of invalid arguments to httpc:request/5 be more precise so an error is returned in more cases instead of causing a hang or function_clause. Be more precise in documentation regarding the types of arguments being accepted. * crypto: Fixed the C-warning "implicit declaration of function 'OpenSSL_version_num'" if compiling with an early LibreSSL version. * crypto: FIPS availability was not checked correctly for AEAD ciphers. * crypto: Fixed that cipher aliases (like aes_cbc etc) could be present even if the aliased cipher(s) (like aes_128_cbc, aes_256_cbc,... etc) was missing. * crypto: The crypto app in OTP can now be compiled, linked and used with the new OpenSSL 3.0 cryptolib. It has not yet been extensively tested and is in this release *not recommended* for other usages than experiments and alpha testing. There are not yet any guaranties that it works, not even together with other OTP applications like for example SSL and SSH, although there are no known errors. Compiling and linking with OpenSSL 3.0 cryptolib in compatibility modes (for example to behave as 1.1.1) are not tested. It is not tested with external providers. The support for FIPS mode does not yet work, and is disabled when compiled with OpenSSL 3.0. Deprecated functions in the OpenSSL 3.0 cryptolib must not be disabled as OTP/crypto still uses some of the deprecated API functions. The gcc flag - Wno-deprecated-declarations is set to prevent deprecation warnings to be printed when compiling. The hash algorithms md4 and ripemd160 are disabled temporarily when compiled with OpenSSL 3.0. The ciphers blowfish_cbc, blowfish_cfb64, blowfish_ecb, blowfish_ofb64, des_cbc, des_cfb, des_ecb, rc2_cbc and rc4 are disabled temporarily when compiled with OpenSSL 3.0. * crypto: The error handling in crypto is partly refactored using the new error reporting support. Errors earlier propagated like exceptions are still so, but when the failing function is called from the terminal - for example during failure hunting - a more descriptive text is produced. * crypto: A new function crypto:info/0 which presents some data about the compilation and linkage of the crypto nif is added. * crypto: Added the pbkdf2_hmac/5 function to the crypto module. It calls the PKCS5_PBKDF2_HMAC function which implements PBKD2 with HMAC in an efficient way. * stdlib: Fix rendering of nbsp on terminals that do not support unicode. * stdlib: Improved the erl_error printout for when re fails to compile a regular expression to also print hints about why the compilation failed. * stdlib: Fixed spec for supervisor_bridge:start_link(). * stdlib: Added missing shutdown clauses in supervisor which could cause erroneous error reports. * stdlib: Add the no_auto_import_types to erl_lint to allow a module to define types of the same name as a predefined type. * erts: When matching and constructing utf16 segments in the binary syntax, the native flag would be ignored. That is, the endian would always be big endian even on a little-endian computer (almost all modern computers). * erts: Fix the help printout of +JPperf. * erts: Fix bug that could cause Erlang to deadlock during creation of an Erlang crash dump. * erts: Fixed C++ build errors on some aarch64 platforms. * erts: For macOS, the Info.plist file embedded in the runtime system now only contains the absolute minimum amount of information needed for the web view in wx to work towards localhost. The other fields have been removed, allowing an application packaged in a bundle to specify the application name and other parameter in its own Info.plist file. * erts: Fix bug in internal stacks (WSTACK and ESTACK) used by term_to_binary/2 to encode terms. The bug could cause a segfault if a very very large map was to be encoded with the deterministic option given. * erts: Improve the error printout when open_port/2 fails because of invalid arguments. * erts: Fix bug in crash dumps where the stackframe of a process would be printed using an incorrect format. Crash dump viewer has also been fixed to be able read the broken stack format. The bug has existed since Erlang/OTP 23.0. * erts: An option for enabling dirty scheduler specific allocator instances has been introduced. By default such allocator instances are disabled. For more information see the documentation of the +Mdai erl command line argument. * erts: Minor optimization of receive markers in message queues. * erts: All predefined types have been added to the erlang module together with documentation. Any reference to a predefined type now links to that documentation so that the user can view it. * erts: Suppress a code checker warning caused by debug builds of YCF. YCF tries to get a conservative estimate of the bottom of the stack by reading and returning a call stack allocated variable. * erts: Add file and product properties to erl.exe and werl.exe. * erts: Micro optimization in bitstring append operations. * erts: Responsiveness of processes executing on normal or low priority could suffer due to code purging or literal area removal on systems with a huge amount of processes. This since during these operations all processes on the system were scheduled for execution at once. This problem has been fixed by introducing a limit on outstanding purge and copy literal requests in the system. By default this limit is set to twice the amount of schedulers on the system. This will ensure that schedulers will have enough work scheduled to perform these operations as quickly as possible at the same time as other work will be interleaved to a much higher degree. Performance of these operations will however be somewhat degraded due to the overhead of enforcing this limit compared to when using a very large limit. This limit can be set by passing the +zosrl command line argument to erl, or by calling erlang:system_flag(outstanding_system_requests_limit, NewLimit). * kernel: socket:which_sockets( pid() ) uses wrong keyword when looking up socket owner ('ctrl' instead of 'owner'). * kernel: In epmd_ntop, the #if defined(EPMD6) conditional was inverted and it was only including the IPv6-specific code when EPMD6 was undefined. This was causing IPv6 addrs to be interpreted as IPv4 addrs and generating nonsense IPv4 addresses as output. Several places were incorrectly using 'num_sockets' instead of 'i' to index into the iserv_addr array during error logging. This would result in a read into uninitialized data in the iserv_addr array. Thanks to John Eckersberg for providing this fix. * kernel: Minor fix of the erl_uds_dist distribution module example. * kernel: A bug has been fixed for the legacy TCP socket adaption module gen_tcp_socket where it did bind to a socket address when given a file descriptor, but should not. * kernel: Improve the error printout when open_port/2 fails because of invalid arguments. * kernel: Calling socket:monitor/1 on an already closed socket should succeed and result in an immediate DOWN message. This has now been fixed. * kernel: Fix the configuration option logger_metadata to work. * kernel: Fix tls and non-tls distribution to use erl_epmd:address_please to figure out if IPv4 or IPv6 addresses should be used when connecting to the remote node. Before this fix, a dns lookup of the remote node hostname determined which IP version was to be used which meant that the hostname had to resolve to a valid ip address. * kernel: Add logger:reconfigure/0. * kernel: Add socket function ioctl/2,3,4 for socket device control. * kernel: Add simple support for socknames/1 for gen_tcp_socket and gen_udp_socket. * kernel: The types for callback result types in gen_statem has bee augmented with arity 2 types where it is possible for a callback module to specify the type of the callback data, so the callback module can get type validation of it. * erl_docgen: Fix codeinclude tag to correctly respect the type attribute. * erl_docgen: The HTML documentation has been updated to collapse better on small screens. * erl_docgen: All predefined types have been added to the erlang module together with documentation. Any reference to a predefined type now links to that documentation so that the user can view it. * snmp: Handling of test config flag when starting "empty". * snmp: Add support for new authentication algorithms (SHA-224, SHA-256, SHA-384 and SHA-512), according to RFC 7860. * snmp: Improve debug info for (snmp) manager. * wx: Fix crash in cleanup code when a gui application is exiting. Fix errors in the OpenGL wrapper that could cause crashes and improve the documentation. * edoc: Add option link_predefined_types that is used to create links to erlang predefined types. This is mainly to be used by erl_docgen when creating the Erlang/OTP documentation. * dialyzer: Fixed a crash when opaque types contained certain unicode characters. * dialyzer: When the compiler is invoked by Dialyzer, it will no longer apply an optimization of binary patterns that would turn the pattern <<"bar">> into <<6447474:24>>, which would be very confusing when printed out by Dialyzer. * observer: Fix bug in crash dumps where the stackframe of a process would be printed using an incorrect format. Crash dump viewer has also been fixed to be able read the broken stack format. The bug has existed since Erlang/OTP 23.0. * ssh: The value of the connect_timeout option is now used as default value for the negotiation timeout. * ssh: Add better error handling in connect/2,3,4. Detect incorrect arguments and return an informative error tuple instead of throwing a function_clause or similar. * ssh: Make ssh algorithm selection better handle dynamic changes changes in crypto fips mode. * megaco: [megaco_tcp] When connect fails, include more info in the error reason. - Changes for 24.1.7: * ssh: Fixed a race condition in the acceptor loop: if a client disconnected immediately after the tcp connect, the server could cease handling connection on that address:port. - Changes for 24.1.6: * ssl: Correct typo of ECC curve name in signature algorithm handling. Will make the signature algorithm ecdsa_secp521r1_sha512 succeed. * ssl: Suppress authenticity warning when option verify_none is explicitly supplied. - Changes for 24.1.5: * erts: The runtime system could call select() with a too large timeout value when executing on MacOS. This could in turn cause the runtime system to crash. * erts: The fix for Linux's behaviour when reconnecting an UDP socket in PR-5120 released in OTP-24.1.2 has been refined to only dissolve the socket's connection before a connect if the socket is already connected, that is: only for a reconnect. This allows code to open a socket with an ephemeral port, get the port number and connect; without the port number changing (on Linux). This turned out to have at least one valid use case (besides test cases). Should one reconnect the socket then the port number may change, on Linux; it is a known quirk, which can be worked around by binding to a specific port number when opening the socket. If you can do without an ephemeral port, that is... * erts: Certain distributed signals that for various reasons must to be forced into the distribution buffer even when it is full would instead be lost if the distribution buffer was full when sent. The effected signals: * kernel: The internal, undocumented, but used, module inet_dns has been fixed to handle mDNS high bit usage of the Class field. Code that uses the previously obsolete, undocumented and unused record field #dns_rr.func will need to be updated since that field is now used as a boolean flag for the mDNS high Class bit. Code that uses the also undocumented record [#]dns_query will need to be recompiled since a boolean field [#]dns_query.unicast_response has been added for the mDNS high Class bit. *** POTENTIAL INCOMPATIBILITY *** * kernel: The fix for Linux's behaviour when reconnecting an UDP socket in PR-5120 released in OTP-24.1.2 has been refined to only dissolve the socket's connection before a connect if the socket is already connected, that is: only for a reconnect. This allows code to open a socket with an ephemeral port, get the port number and connect; without the port number changing (on Linux). This turned out to have at least one valid use case (besides test cases). Should one reconnect the socket then the port number may change, on Linux; it is a known quirk, which can be worked around by binding to a specific port number when opening the socket. If you can do without an ephemeral port, that is... - Changes for 24.1.4: * erts: Fix bug where a gen_tcp write error that happened during a delayed_send would cause a use after free segfault. * erts: Fix x86 JIT bug where a rem instruction could cause a segfault if given values that would cause an badarith exception. - Changes for 24.1.3: * ssl: Fix TLS-1.2 RSA-PSS negotiation and also fix broken certificate request message for pre-TLS-1.3 servers. * ssl: Fix CRL issuer verification that under some circumstances could fail with a function_clause error. * erts: Reduction counter was not updated before and after doing apply operations on the runtime system with the jit enabled. This caused reduction counting to get out of sync if a garbage collection was made as part of the apply operation. * erts: This fixes a bug in erts_factory_undo that caused the heap to not be reset correctly. The erts_factory_undo function is, for example, called when a binary_to_term/1 call fails to reset the heap to its state before the binary_to_term/1 call. This can cause the heap to contain invalid terms which potentially can cause issues (e.g., crashes) when the whole heap is scanned. * erts: When attempting to construct a binary with an segment having an illegal type for the size (e.g. an atom), there could be an unnecessary memory allocation (and subsequent deallocation) before the operation failed. Amended to fail before allocating any memory for the binary. * erts: Fix bug in persistent_term when a key-value pair contains a magic reference that is referred more than once. Magic references are NIF resources or returned from BIFs like ets:new, atomics:new. The bug could cause the memory of the referred resource to be prematurely deallocated. The bug also apply to magic references in message passing on a runtime built with configure option --enable-sharing-preserving. Bug exist for 64-bit since OTP-24.0 and for 32-bit since OTP-20.0. * erts: Fixed a crash when inspecting the stack trace of an exception raised at a very high line number. This bug was introduced in OTP 24. * erts: The following two bugs that caused erlang:demonitor() to behave erroneously have been fixed. The bugs were only triggered if the monitor that was removed by demonitor() had previously been created simultaneously as a monitor and as an alias.- Changes for 24.1.2: * kernel: The undocumented DNS encode/decode module inet_dns has been cleaned up to handle the difference between "symbolic" and "raw" records in a more consistent manner. PR-5145/OTP-17584 introduced a change that contributed to an already existing confusion, which this correction should remedy. * erts: The python scripts that existed in erts/lib_src/yielding_c_fun/lib/tiny_regex_c/scripts had a license that was incompatible with Erlang/OTP's license. This ticket removes these scripts that were not used by us. * ssl: Before that change, TLS downgrade could occasionally fail when data intended for downgraded socket were delivered together with CLOSE_NOTIFY alert to ssl app. * ssl: Avoid re-encoding of decoded certificates. This could cause unexpected failures as some subtle encoding errors can be tolerated when decoding but hence creating another sequence of bytes if the decoded value is re-encoded. * ssl: Fix possible process leak when the process doing ssl:transport_accept dies before initiating the TLS handshake. * ssl: Fix dtls memory leak, the replay window code was broken. * public_key: Avoid re-encoding of decoded certificates. This could cause unexpected failures as some subtle encoding errors can be tolerated when decoding but hence creating another sequence of bytes if the decoded value is re-encoded. * crypto: Fixed minor memory leak at crypto module purge. * crypto: Fix possible inconsistency in fips mode when linking with some cryptolibs. - Changes for 24.1.1: * kernel: Add more info about the socket 'type' ('socket' or 'port') for the DOWN message when monitoring sockets. * stdlib: Fixed a bug that could cause a child to become orphaned when a supervisor died between unlinking and sending the shutdown signal to this child. There was also a possibility for erratic supervisor reports caused by a race between a supervisor shutting down a child and that child exiting by itself at the same time. * erts: A race between an exiting port and handling of simultaneously received signals to that port could cause a runtime system crash. The effected signals are link, monitor and demonitor. On OTP 22 a similiar race could also cause a memory leak when receiving an unlink signal. * erts: A user defined tag on a monitor message could cause the runtime system to crash when the monitor message had been received. * erts: A call to erlang:demonitor(Ref) where the reference Ref referred to an active alias, but not an active monitor, caused the runtime system to crash. * erts: The message queue of a process entered an inconsistent state after a receive expression with an invalid timeout value was executed. If the exception raised due to the invalid timeout value was caught, the following receive expression executed by the process could fail to match messages already present in the message queue. On OTP 24 this could also cause the whole runtime system to crash. * erts: Sending a Port ! {PortOwner, close} signal from a process other than the port owner could erroneously trigger a badsig exit signal being sent to the port owner process even though the correct PortOwner had been passed in the signal. * snmp: Sockets are monitored, but the handling of the 'DOWN' message expected a new style socket ('socket'), old style (port) was not handled. - Changes for 24.1: * kernel: The extended error information has been corrected and improved for the following BIFs: binary_to_existing_atom/2, list_to_existing_atom/1, erlang:send_after/{3,4}, and erlang:start_timer/{3,4}. * kernel: Fixed rare bug that could cause net_kernel process to hang for ever. Have seen to happen with massive number of TLS connections while remote nodes are restarting. Bug exists since OTP-22.0. * kernel: Improve handling of closed sockets for inet:info/1. * kernel: This change fixes a performance problem introduced in pull-request #2675. Pull-request #2675 made so the system tried to start children of already started applications which is unnecessary. This change fixes this performance problem. * kernel: Fix code:get_doc/1 to not crash when module is located in an escript. * kernel: Parsing of the result value in the native DNS resolver has been made more defensive against incorrect results. * kernel: A bug in the option handling for the legacy socket adaptor, that is; when using inet_backend = socket, has been fixed. Now socket options are set before the bind() call so options regarding, for example address reuse have the desired effect. * kernel: inet:ntoa/1 has been fixed to not accept invalid numerical addresses. * kernel: Parsing of DNS records has been improved for records of known types to not accept and present malformed ones in raw format. * kernel: The ip_mreq() type for the {ip,add_membership} and {ip,drop_membership} socket options has been corrected to have an interface field instead of, incorrectly, an address field. * kernel: Add simple utility function to display existing sockets i the erlang shell (socket:i/0). * kernel: gen_udp can now be configured to use the socket inet- backend (in the same way as gen_tcp). * kernel: Functions erlang:set_cookie(Cookie) and erlang:get_cookie(Node) have been added for completeness and to facilitate configuring distributed nodes with different cookies. The documentation regarding distribution cookies has been improved to be less vague. * kernel: A workaround has been implemented for Linux's quirky behaviour to not adjust the source IP address when connecting a connected (reconnecing) UDP socket. The workaround is to, on Linux, always dissolve any connection before connecting an UDP socket. * kernel: Documented our recommendation against opening NFS- mounted files, FIFOs, devices, and similar using file:open/2. * debugger: Improve record handling, print known records with record syntax. * observer: Atoms with Unicode code points greater than 255 (for example Greek or Cyrillic characters) would not be displayed correctly by crashdump_viewer. * observer: Fix the crashdump_viewer to be able to parse monitor_node/2 monitors correctly. * observer: Observer now has a sectiion for new socket. * observer: Added a trace all button to the trace window. * parsetools: Fix a bug in Leex which caused the Erlang Compiler to generate warnings. * parsetools: Fix a bug in Yecc which caused the Erlang Compiler to generate warnings. * mnesia: Fixed that index keys was deleted for set tables when mnesia:delete_object/1 tried to delete a non-existing record. * mnesia: Optimized table loading and added max_transfer_size configuration parameter. * stdlib: Fix io:format with ~p to no longer interpret floats as printable characters. * stdlib: Fix specs for base64 encode/decode functions to also include 0. * stdlib: The failing call io:format("~p\n") would result in a warning for line number 0 instead of the correct line and column numbers. This has been corrected, and all warnings for failing calls to io:format() has been rephrased to make it clearer exactly what the problem is. * stdlib: When the options warn_missing_spec and export_all were given, there would only be warnings for missing specs for functions that had been explicitly exported using an -export attribute. * stdlib: Calling c:ls/1 with an atom whose contents is the the name of a file (as opposed to a directory) would crash. * stdlib: The MODULE and MODULE_STRING macros would always appear to be defined (when tested by -ifdef), even though no -module() declaration had been seen yet. Changed so that -ifdef ?MODULE. will not consider ?MODULE defined if -module() has not been previously seen. * stdlib: Fix bug with rendering of missing types and callbacks in shell_docs. * stdlib: When the deterministic option was given to the compiler, the ?FILE macro would be expanded to full path of the source file before the first include directive and to base part of the filename after include directive. * stdlib: Fixed broken win32reg:delete_key and fixed win32reg:value for default value. * stdlib: Fixed error information for the call maps:get(some_key, [#]{}). * stdlib: Most output functions in the io module now print extra error information when provided with invalid arguments. The functions are: io:format, io:fwrite, io:put_chars, io:nl and io:write. * stdlib: EEP-54 (Provide more information about errors) now includes two new return values for the format_error callback, general and reason. Multi-line error descriptions returned from a format_error callback are now correctly indented. The documentation for erl_error, error/3 and Errors and Error Handling in the Erlang Reference Manual have been extended. * stdlib: In the documentation for the lists module, it has been clarified that predicate funs must return a boolean. * stdlib: The documentation for c:c/1, c:c/2, and c:c/3 has been clarified. * tools: The cover tool would not work on modules compiled with the tuple_calls option. * common_test: Float allowed as multiply_timetraps parameter. * common_test: Remove usage of legacy API macro and functions. * erts: Atoms with Unicode code points greater than 255 (for example Greek or Cyrillic characters) would not be displayed correctly by crashdump_viewer. * erts: Fix rare minor memory leak related to jit code loading. * erts: The extended error information has been corrected and improved for the following BIFs: binary_to_existing_atom/2, list_to_existing_atom/1, erlang:send_after/{3,4}, and erlang:start_timer/{3,4}. * erts: Fix bug provoked when building with gcc 10 and link time optimization (-flto), causing Erlang compiler to crash. Bug exists since OTP-24.0. * erts: Corrected bugs where builds were not reducible even when the deterministic option was given. In particular, modules with map literals with more than 32 elements could cause this problem. As part of this fix, the term_to_binary BIF now accepts the option deterministic. * erts: After an exception has been caught in a process, the stack trace would be kept in the process longer than necessary. * erts: Fix rare race bug in memory management of distribution entries. Have been seen to cause VM crash when massive number of repeated concurrent failing connection attempts. * erts: The configure test for --disable-esock-socket-registry has been corrected so disabling now works. * erts: init:stop() no longer unloads loaded code before terminating the runtime system. On systems with slow CPUs (such as Raspberry PI Zero), that can significantly speed up termination of the runtime system. * erts: Fixed match specifications that use maps in either the guard or the body to work properly. With this fix both keys and values in maps can be expressions. Various other crashes and bugs when using maps in match specifications have also been fixed. * erts: Parsing of the result value in the native DNS resolver has been made more defensive against incorrect results. * erts: When binary_to_term/2 failed, the extended error information would always blame the second argument even if the actual error was in the first argument. * erts: On 32-bit computers, binary_to_term/1,2 is now more resilient against corrupted binaries containing maps in the external format. * erts: A call to process_info(Pid, status) could erroneously report the status running when it should have reported waiting. This occurred when the calling process was executing on a higher priority than the process being inspected. This bug has been present since OTP 21.0 (erts version 10.0). * erts: Optimize memory usage of erts internal processes used during code loading/purging by hibernating them after a long time of inactivity. * erts: Add the type erlang:stacktrace/0. * erts: The arity argument of error/2,3 can now be none to indicate that the calling functions arity should be used. * erts: Optimize match spec compiler for immediate (single word) constant terms. * erts: Functions erlang:set_cookie(Cookie) and erlang:get_cookie(Node) have been added for completeness and to facilitate configuring distributed nodes with different cookies. The documentation regarding distribution cookies has been improved to be less vague. * erts: A workaround has been implemented for Linux's quirky behaviour to not adjust the source IP address when connecting a connected (reconnecing) UDP socket. The workaround is to, on Linux, always dissolve any connection before connecting an UDP socket. * erts: The internal documentation for how to use Yielding C Fun (YCF) has been updated to contain text about best practices for using YCF for ERTS. * erts: Optimize garbage collection for processes with large number of binaries, funs and/or external pids/ports/refs. * erl_docgen: Fix codeinclude tags to work as part of reference manual documentation. * erl_docgen: Fix creation of link elements with anchors in EEP-48 style documentation. * dialyzer: Do not crash if a PLT file no longer exists. * dialyzer: Fix bug in erl_types related to maps. * dialyzer: Fix bugs in erl_types regarding improper lists. * dialyzer: The underspecs and overspecs options will now generate correct warnings for misused opaque types. * eunit: In an eunit test, when a test case times out, include a stacktrace. * snmp: It is now possible to configure the built-in net-if processes (both agent and manager) to use the new (gen_udp-) option 'inet_backend'. * asn1: A parameterized type with a SEQUENCE with extension ("...") made the compiler backend to crash. The previous fix for this in GH-4514 was not complete. * wx: Fix crash when closing an application. * wx: Some functions with overloaded color arguments could not be used. For example the copy constructor wxTextAttr:new(TextAttr) did not work. * wx: Added the Microsoft Edge WebView loader dll to the installer on windows. * wx: Handle specific Mac gui application events. * erl_interface: erl_call now prints an error when the arguments cannot be parsed. * erl_interface: The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled. * edoc: Fix broken documentation link in edoc_extract:file/4. * ssl: Fix Makefile dependency generation to work no matter what the ERL_TOP folder is called. * ssl: If trying to downgrade a TLS-1.3 connection to a plain TCP connection, possible TLS-1.3 session ticket messages will be ignored in the "downgrade" state while waiting for the close notify alert. * ssl: Corrected error handling to correctly generate an insufficient security alert when there are no suitable groups that can be negotiated in TLS-1.3 instead of crashing resulting in an internal error alert. * ssl: Properly handle default session data storage. When a client tries to reuse an expired session the default server storage handling would crash loosing other session data. This would cause a error report and possible loss of abbreviated handshakes. * ssl: Add support for RSA-PSS-PSS signatures and signature_algorithms_cert in TLS-1.2. This is a TLS-1.3 RFC requirement to backport this functionality. * ssl: Use inet:monitor/1 to monitor listen-sockets so that we are compatible with the new socket backend for gen_tcp. * ssl: Enhance ssl:prf/4 handling and testing * ssl: Enhanced cipher suite filtering functionality, making sure TLS-1.3 and TLS-1.2 cipher suites can be supported correctly together even when TLS-1.2 anonymous ciphers are included. * ssl: Enhance gracefulness especially in TLS-1.3 * os_mon: On a Mac with Apple Silicon, memsup:get_os_wordsize/0 would return 32 instead of 64. * ssh: Fixed that a slow start (>30s) of a client subsystem could cause a log entry with the password. * ssh: Fixed an error when running as an sftp server and a client requests a directory contents listing. The fix is to handle the error code {error, eacces} as {error, enoent} in the ssh_sftpd:get_attrs/5 internal function; that is, just skip it. * ssh: The "Key exchange failed" Info Report is now more informative. * inets: Before this change hrefs in dir listing page contained percentage encoded forward slashes which did not work properly with httpd. * inets: Restored HTTP headers handling in inets/mod_esi. * inets: inets/httpd dir listing icons and other improvements * inets: httpc: Improve performance by removing redundant URI handling * compiler: If a parse transform raised an exception using throw/1 or exit/1, the compiler would report that as an internal compiler error, which would be confusing. Amended to report that the parse transform failed. * compiler: The failing call io:format("~p\n") would result in a warning for line number 0 instead of the correct line and column numbers. This has been corrected, and all warnings for failing calls to io:format() has been rephrased to make it clearer exactly what the problem is. * compiler: When the options warn_missing_spec and export_all were given, there would only be warnings for missing specs for functions that had been explicitly exported using an -export attribute. * compiler: In rare circumstances, the compiler could emit an incorrect warning for a term that was constructed but never used. * compiler: Corrected bugs where builds were not reducible even when the deterministic option was given. In particular, modules with map literals with more than 32 elements could cause this problem. As part of this fix, the term_to_binary BIF now accepts the option deterministic. * compiler: The MODULE and MODULE_STRING macros would always appear to be defined (when tested by -ifdef), even though no - module() declaration had been seen yet. Changed so that -ifdef ?MODULE. will not consider ?MODULE defined if -module() has not been previously seen. * compiler: In a guard, not (X =:= true) would incorrectly evaluate to false for non-boolean values of X. * compiler: When the deterministic option was given to the compiler, the ?FILE macro would be expanded to full path of the source file before the first include directive and to base part of the filename after include directive. * public_key: public_key:pkix_sign/2 now honors the salt length from the provided input parameters. Earlier this could result in incorrect signatures if not using recommended defaults. * public_key: When decoding an 'ECPrivateKey' unwrap the private key. For more precise information see RFC 8410, section 7. * runtime_tools: Observer now has a sectiion for new socket. * runtime_tools: The dbg docs have been expanded to include the meaning of all the function name acronyms. * megaco: It is now possible to configure the built-in transports (megaco_tcp and megaco udp) to use the new (gen_udp- and gen_tcp-) option 'inet_backend'. * crypto: Fix bug in crypto:ensure_engine_unloaded. Also fixed minor memory leak related to engine unloading. * crypto: Fixes that FIPS enable and disable (or vice versa) on Windows sometimes leads to core dump at the time of process exit. * crypto: Disable fips if cryptolib < 1.0.1 and OTP/crypto is configured with --enable-fips If not, there could be compiling or loading problems with antique OpenSSL versions. * jinterface: Fixed rare race bug that could cause NullPointerException on local close of connection. - Changes for 24.0.6: * erts: A call to the process_info() BIF could end up hanging for ever due to a bug introduced when the new selective receive optimization was introduced in OTP 24.0. Note that this bug only effects process_info(). * erts: Fix buffer overrun problem in the tty driver. The problem happens on some platforms when using the CTRL+R functionality of newshell with very long strings in the history. * erts: Fix race-condition that could cause a crash when tracing scheduling or garbage collections on a process that was running on a dirty scheduler. * erts: Fix rare bug where re:run would crash/return invalid results when given a subbinary as subject. This bug has existed since Erlang/OTP 20.0. * erts: binary_to_term/1,2 is now more resilient against corrupted binaries containing maps in the external format.- Added hardening to systemd service(s) (bsc#1181400). Modified: * epmd.service- Changes for 24.0.5: * kernel: For gen_tcp:connect/3,4 it is possible to specify a specific source port, which should be enough to bind the socket to an address with that port before connecting. Unfortunately that feature was lost in OTP-17216 that made it mandatory to specify the source address to get an address binding, and ignored a specified source port if no source address was specified. That bug has now been corrected. - Changes for 24.0.4: * stdlib: Fix a bug that could cause a crash when formatting tuples using the control sequences p or P and limiting the output with the option chars_limit. * ssl: Handle cross-signed root certificates when old root expired as reported in GH-4877. * ssl: The signature selection algorithm has been changed to also verify if the client supports signatures using the elliptic curve of the server's public/private key pair. This change fixes #4958. * ssl: Slight optimization of certificate decoding. * public_key: Handle cross-signed root certificates when old root expired as reported in GH-4877. * common_test: An incoming NETCONF notification received before a call to ct_netconfc:create_subscription/* caused the connection process to fail with badarg. Unexpected notifications are now logged in the same way as other unexpected messages. * common_test: Add 'receiver' option to ct_netconfc To allow a destination for incoming NETCONF notifications to be specified at sessions creation. Previously, a caller of create_subscription/* became the destination, but RFC 5277 create-subscription is no longer the only way in which NETCONF notifications can be ordered.- Fix more directories not owned by the package (boo#1187546)- Changes for 24.0.3: * erts: A call to erlang:cancel_timer(_, [{info, false}]) could cause the calling process to block forever in the call. Note that only the synchronous version of the call (that is, the async option is false) in combination with the info option set to false was effected by this bug. * erts: Microstate accounting (msacc) and os:perf_counter() unintentionally used system time instead of monotonic time for time measurements on a lot of systems. These systems were all non x86/x86_64 systems or x86/x86_64 systems without a reliable and constant rdtsc instruction. The lock counting (lcnt) built runtime system also unintentionally used system time instead of monotonic time for time measurements on all systems. * erts: Simultaneous calls to erlang:system_flag(schedulers_online, _) could cause callers to end up in a suspended state forever. * dialyzer: Do not expose line number 0 in messages if there are other locations to use. * dialyzer: In rare circumstances, Dialyzer could crash analyzing code with a list comprehension whose value was ignored. (Thanks to Ulf Wiger for reporting this bug.) * ssh: Filter out sensitive data (passwords etc) from progress reports and supervisor reports. * inets: Improved user input handling in inets/mod_esi preventing unnecessary atom creation. * compiler: A compiler optimization pass could crash when given odd but legal code using throw/1. - Changes for 24.0.2: * kernel: Fix a race condition in Global. * kernel: After a node restart with init:restart/0,1, the module socket was not usable because supporting tables had been cleared and not re-initialized. This has now been fixed. Handling of the "." domain as a search domain was incorrect and caused a crash in the DNS resolver inet_res, which has now been fixed. * kernel: Handling of combinations of the fd option and binding to an address has been corrected, especially for the local address family. * kernel: Bug fixes and code cleanup for the new socket implementation, such as: Assertions on the result of demonitoring has been added in the NIF code, where appropriate. Internal state handling for socket close in the NIF code has been reviewed. Looping over close() for EINTR in the NIF code has been removed, since it is strongly discouraged on Linux and Posix is not clear about if it is allowed. The inet_backend temporary socket option for legacy gen_tcp sockets has been documented. The return value from net:getaddrinfo/2 has been corrected: the protocol field is now an atom(), instead of, incorrectly, list(atom()). The documentation has also been corrected about this return type. Deferred close of a socket:sendfile/* file was broken and has been corrected. Some debug code, not enabled by default, in the socket NIF has been corrected to not accidentally core dump for debug printouts of more or less innocent events. * stdlib: Fix a bug that could cause a loop when formatting terms using the control sequences p or P and limiting the output with the option chars_limit. * erts: Not yet handled alias-message signals in the signal queue at the time when a garbage collection was performed could cause a memory corruption which in turn could result in a crash of the runtime system. This bug was introduced in OTP 24.0. * erts: Fixed bug when using external pids/ports in keys of big maps (> 32). Could cause runtime crash. Bug exists since OTP 24.0. * erts: After a node restart with init:restart/0,1, the module socket was not usable because supporting tables had been cleared and not re-initialized. This has now been fixed. Handling of the "." domain as a search domain was incorrect and caused a crash in the DNS resolver inet_res, which has now been fixed. * erts: A call to port_command() could cause a scheduler to end up in an eternal loop if the port was busy and the calling process had incoming signals at the time of the call. This bug was introduced in OTP 23.3.2 (ERTS version 11.2.1), OTP 22.3.4.18 (ERTS version 10.7.2.10), and OTP 21.3.8.23 (ERTS version 10.3.5.18). * erts: Bug fixes and code cleanup for the new socket implementation, such as: Assertions on the result of demonitoring has been added in the NIF code, where appropriate. Internal state handling for socket close in the NIF code has been reviewed. Looping over close() for EINTR in the NIF code has been removed, since it is strongly discouraged on Linux and Posix is not clear about if it is allowed. The inet_backend temporary socket option for legacy gen_tcp sockets has been documented. The return value from net:getaddrinfo/2 has been corrected: the protocol field is now an atom(), instead of, incorrectly, list(atom()). The documentation has also been corrected about this return type. Deferred close of a socket:sendfile/* file was broken and has been corrected. Some debug code, not enabled by default, in the socket NIF has been corrected to not accidentally core dump for debug printouts of more or less innocent events. * erts: Dirty execution of a process in combination with an unlink signal from a port to the process could cause the signal queue of the process to enter into an inconsistent state. The result of the inconsistency typically caused a crash of the runtime system. This bug was introduced in OTP 23.3 (ERTS version 11.2). * erl_docgen: Fix links generated in specs to types in other applications to point to the correct place. This bug was introduced in Erlang/OTP 24.0. * ssl: Fix cache invalidation problem for CA certs provided by the cacertfile option. * ssh: Avoid an extra blank line in the ssh known_hosts file * compiler: Fixed a bug that could cause after blocks to be ignored when erlang:raise/3 was used in a catch block. * compiler: Fixed a bug in the validation pass that could cause it to reject valid code. * crypto: EC keys are now zero-padded to the expected length if needed.- Use sysusers-tools to provide epmd user - Fix directories not owned by the package (boo#1187546)- Install RPM macros file to %{_rpmmacrodir} (boo#1185667)- Changes for 24.0.1: * erl_interface: Commit of generated configure script. * wx: Fix build problems when wxWidgets are built with -enable- std. * wx: Commit of generated configure script. * crypto: Removed a risk for coredump. * crypto: Fixed and documented the DED_LDFLAGS_CONFTEST configuration variable in $ERL_TOP/HOWTO/INSTALL.md. * crypto: Commit of generated configure script. * common_test: Commit of generated configure script. * ssh: Add missing known_hosts and authorized_keys file types to ssh_file:decode/2 and ssh_file:encode/2. * erts: Commit of generated configure script. * snmp: Commit of generated configure script. * megaco: Commit of generated configure script. * odbc: Commit of generated configure script.- Version 24.0: - Highlights compiler: * The compiler will now inline funs that are used only once immediately after their definition. * Compiler warnings and errors now include column numbers in addition to line numbers. * Variables bound between the keywords 'try' and 'of' can now be used in the clauses following the 'of' keyword (that is, in the success case when no exception was raised). * Generators in list and binary comprehensions will now raise a {bad_generator,Generator} exception if the generator has an incorrect type Similarly, when a filter does not evaluate to a boolean, a {bad_filter,Filter} exception will be raised. * Warnings for expressions whose result was ignored that could be suppressed by using the anonymous variable '_' can now be suppressed with a variable beginning with '_'. * Selective receive optimization will now be applied much more often. The new recv_opt_info compile flag can be used to print diagnostics relating to this optimization. You can read more about the selective receive optimization in the Efficiency Guide. - erts, kernel, stdlib: * hex encoding and decoding functions added in the binary module * The BeamAsm JIT-compiler has been added to Erlang/OTP and will give a significant performance boost for many applications. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17. To verify that a JIT enabled emulator is running you can use erlang:system_info(emu_flavor). * A compatibility adaptor for gen_tcp to use the new socket API has been implemented (gen_tcp_socket). * Extended error information for failing BIF calls as proposed in EEP 54 has been implemented. * Process aliases as outlined by EEP 53 has been introduced. * Implementation of EEP 56 in supervisor. It adds the concept of significant children as well as the auto_shutdown supervisor flag. See the supervisor manual page for more information. - ftp: * Add support for FTPES (explicit FTP over TLS). - ssl: * Make TLS handshakes in Erlang distribution concurrent. * TLS connections now support EdDSA certificates. - wx: * The application has been completely rewritten in order to use wxWidgets version 3 as its base. * Added support for wxWebView. - edoc: * EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0.- Pack doc/chunks into %{_libdir} (boo#1184492)- Use wxWidgets < 3.1 (boo#1180488)- Changes for 23.2.2: * crypto: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure script sources. * odbc: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure script sources. * snmp: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure script sources. * erts: The suspend_process() and resume_process() BIFs did not check their arguments properly which could cause an emulator crash. * erts: The runtime system would get into an infinite loop if the runtime system was started with more than 1023 file descriptors already open. * megaco: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure script sources. * erl_interface: Integers outside of the range [-(1 bsl 32) - 1, (1 bsl 32) -1] were previously intended to be printed in an internal bignum format by ei_print_term() and ei_s_print_term(). Unfortunately the implementation has been buggy since OTP R13B02 and since then produced results with random content which also could crash the calling program. This fix replaces the printing of the internal format with printing in hexadecimal form and extend the range for printing in decimal form. Currently integers in the range [-(1 bsl 64), (1 bsl 64)] are printed in decimal form and integers outside of this range in Erlang hexadecimal form. * erl_interface: The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled. * ssl: Fix CVE-2020-35733 this only affects ssl-10.2 (OTP-23.2). This vulnerability could enable a man in the middle attack using a fake chain to a known trusted ROOT. Also limits alternative chain handling, for handling of possibly extraneous certs, to improve memory management. * ssl: Add support for AES CCM based cipher suites defined in RFC 7251 Also Correct cipher suite name conversion to OpenSSL names. A few names where corrected earlier in OTP-16267 For backwards compatible reasons we support usage of openSSL names for cipher suites. Mostly anonymous suites names where incorrect, but also some legacy suites. - Changes for 23.2.1: * erts: Fix emulator crash when sending small bit-strings over Erlang distribution while the connection is being setup. The fault was introduced in OTP-23.0 - Changes for 23.2: * erl_docgen: Fix links in titles to github and anchors to work. * erl_docgen: Fix some typing errors on variable names in documentation examples. * mnesia: Avoid potential performance issue, if the input queue to mnesia_tm is long. * crypto: Build the supported curves cache in the NIF when crypto is loaded, no matter how it is loaded. This prevents a possible problem with different processes starting the crypto application concurrently. * crypto: It is now possible to build with crypto and openssl gprof-enabled and statically link them into the VM. * crypto: Fixed performance loss in HMAC when using older OpenSSL due to mutex issues. A workaround is implemented to allow fallback from using the EVP API for HMAC operations. On some architectures this may improve the performance, especially with old OpenSSL versions. This fallback to low-level functions is always enabled for openssl versions before 1.0.2. * kernel: The apply call's in logger.hrl are now called with erlang prefix to avoid clashed with local apply/3 functions. * kernel: Fix memory leak in pg. * kernel: Fix crash in logger_proxy due to stray gen_server:call replies not being handled. The stray replies come when logger is under heavy load and the flow control mechanism is reaching its limit. * kernel: Fixed a bug in erl_epmd:names() that caused it to return the illegal return value noport instead of {error, Reason} where Reason is the actual error reason. This bug also propagated to net_adm:names(). This bug was introduced in kernel version 7.1 (OTP 23.1). * kernel: Add export of some resolver documented types. * kernel: Add configurable retry timeout for resolver lookups. * kernel: gen_server:multi_call() has been optimized in the special case of only calling the local node with timeout set to infinity. * public_key: Corrected dialyzer spec for pkix_path_validation/3 * snmp: If an attempt was made to send a v1 trap on a IPv6 transport this could cause a master agent crash (if the agent was *not* multi-threaded). * snmp: The deprecation info for a couple of the deprecated MIB compiler functions where incorrect. Referred to functions in the 'snmpa' module instead of 'snmpc'. * snmp: Make it possible for the agent to configure separate transports (sockets) for request-responder and trap-sender. * snmp: The mib server cache handling has been improved. First, the default gclimit has been changed from 100 to infinity (to ensure the size is as small as possible). Also, the method of removing old elements has been optimized. * snmp: It is now possible to configure the agent in such a way that the order of outgoing notifications are processed in order in the agent. What happens after the notification message has left the agent (been sent) is of course still out of our control. * snmp: Improve handling of the udp_error message. Basically an improved error/warning message. * wx: Add popup menu callback to wxTaskBarIcon:new/1. * dialyzer: Clarify warning option -Wunmatched_returns in dialyzer(3). * tools: Correct the Xref analysis exports_not_used to not report internally generated behaviour_info/1. * syntax_tools: In the syntax_tools application, the igor module and all functions in erl_tidy except file/2 have been deprecated. * compiler: Several minor compiler bugs have been fixed: Constructing a binary with a list as a size of a binary segment could generate a BEAM file that could not be loaded. When matching a binary segment of type float and ignoring the matched out value, the match would always succeed, even if the size was invalid or the value of the float was NaN or some other non-numeric float value. Attempting to construct an invalid external fun (e.g. fun m:f:bad) is supposed to raise a 'badarg' exception, but if the value was never used, no exception would be raised. * compiler: Fixed multiple bugs in the validator that could cause it to reject valid code. * compiler: The compiler could crash when a binary comprehension had a generator that depended on another generator. * compiler: Fixed a bug in the type optimization pass that could yield incorrect values or cause the wrong clauses to be executed. * erts: Fixed bug which could cause VM crash when a NIF is loaded at the same time as the Erlang implementation of the NIF is called. Bug exists since OTP 23.0. * erts: Fixed enif_make_map_* functions in debug build when given environment from enif_alloc_env. * erts: Fixed broken configuration option --disable-pie. * erts: Fixed rare distribution bug in race between received signal (link/monitor/spawn_request/spawn_reply) and disconnection. Symptom: VM crash. Since: OTP 21.0. * erts: Fixed a performance issue when extremely many items were stored in the process dictionary. (Fixing this bug also eliminates a compiler warning emitted by the latest version of Clang.) * erts: Remove -ftree-copyrename from flags passed to compiler when building erts. The flag is not used by modern gcc's and is not supported by clang. * erts: Modules using complicated nested binary comprehensions could fail to load. * erts: Fixed a race in file:read_file/1 were an incomplete file could be returned if another OS process swapped the file out while reading. * erts: The call list_to_integer("10", true) would return 4 instead of raising an exception. Certain other atoms would also be interpreted as a number base. * erts: On macOS 11 (Big Sur), erl would not start if the maximum number of file descriptors were unlimited (ulimit -n unlimited). * erts: Add manifest to all executables and dynamic libraries. * xmerl: Corrected namespace and expanded name in the old dom backend example module. * xmerl: Corrected a bug that in some cases didn't allow unresolved references when skip_external_dtd option used. * ssh: Fixed problems in the ssh cli/shell handling. Most important are: 1) the ssh:shell function did sometimes cause the input to be echoed twice, 2) the ssh:shell function didn't transfer the LANG and LC_ALL shell variables to the connected server which sometimes made Unicode handling erroneous, 3) Unicode was not always transferred correctly to and from the peer. * ssh: The SSH protocol message SSH_MSG_DISCONNECT was sometimes sent instead of SSH_MSG_CHANNEL_FAILURE * ssh: The ssh_cli module now always sends the exit-status to connected clients so they can use that to check for successful command execution. * ssh: A new option pk_check_user enables checking of the client's user name in the server when doing public key authentication. * stdlib: This change fixes the handling of deep lists in the path component when using uri_string:recompose/1. * stdlib: Fix shell_docs to clear shell decorations (bold/underline) when paginating output. Fix various small renderings issues when integrating shell_docs with edoc. * stdlib: Improved the API and documentation of the uri_string module. Added a new chapter to the Users Guide about Uniform Resource Identifiers and their handling with the new API. Added two new API functions: uri_string:allowed_characters/0 and uri_string:percent_decode/1. This change has been marked as potentially incompatible as uri_string:normalize/2 used to decode percent-encoded character triplets that corresponded to characters not in the reserved set. After this change, uri_string:normalize/2 will only decode those percent-encoded triplets that correspond to characters in the unreserved set (ALPHA / DIGIT / "-" / "." / "_" / "~"). *** POTENTIAL INCOMPATIBILITY *** * stdlib: The shell_docs module has been expanded with the possibility to configure unicode, ansi and column size for the rendered text. * megaco: Empty statistics descriptor (now) allowed in both encode and decode for version 3. * ssl: SSL's Erlang Distribution Protocol modules inet_tls_dist and inet6_tls_dist lacked a callback function, so the start flag "-dist_listen false" did not work, which has now been fixed. * ssl: Correct OpenSSL names for newer cipher suites using DHE in their name that accidentally got the wrong value when fixing other older names using EDH instead. * ssl: This change improves the handling of DTLS listening dockets, making it possible to open multiple listeners on the same port with different IP addresses. * ssl: Fix a bug that causes cross-build failure. This change excludes the ssl.d dependency file from the source tarballs. * ssl: This change fixes ssl:peername/1 when called on a DTLS client socket. * ssl: Retain emulation of active once on a closed socket to behave as before 23.1 * ssl: Corrected server session cache entry deletion pre TLS-1.3. May increase session reuse. * ssl: Handle extraneous certs in certificate chains as well as chains that are incomplete but can be reconstructed or unordered chains. The cert and certfile options will now accept a list of certificates so that the user may specify the chain explicitly. Also, the default value of the depth option has been increased to allow longer chains by default. * ssl: This change implements optional NSS-style keylog in ssl:connection_information/2 for debugging purposes. The keylog contains various TLS secrets that can be loaded in Wireshark to decrypt TLS packets. * ssl: Use new gen_statem feature of changing callback mode to improve code maintainability. * ssl: The handling of Service Name Indication has been aligned with RFC8446. * ssl: Add explicit session reuse option to TLS clients for pre TLS-1.3 sessions. Also, add documentation to Users Guide for such sessions. * inets: Fix an issue about HTML-escaped filename in inets. * common_test: Add behaviour for test suites - Changes for 23.1.5: * ssh: An ssh-client can take an accepted socket from a listening socket and do an ssh:connect/2 on it. Multiple clients on sockets accepted from the same listening socket had stopped working. This is corrected now. - Changes for 23.1.4: * ssh: The inet option raw was not passed on from the ssh option list to inet.- Changes for 23.1.3: * erts: Fixed a crash when exceptions were thrown during call time tracing. * ssh: A supervisor sub-tree could be left if the connection handler process is brutally killed. This will make the max_sessions checking option to count the existing sessions erroneously and could finally block further sessions. - Changes for 23.1.2: * compiler: Fixed a bug in the boolean optimization pass that caused the compiler to confuse different clauses. * erts: Fixed bugs causing issues when enabling the ERTS internal allocators on a system built with the undocumented and unsupported SMALL_MEMORY feature. * erts: The inet driver used to use 16 as maximum elements in an I/O vector passed to writev() (and WSASend() on Windows). When the data to send contained lots of elements, this caused a performance degradation since repeated calls to writev() had to be made to a much larger extent. The inet driver now looks up actual maximum amount of elements that can be used on the system, instead of just assuming 16. On most systems this will result in a maximum amount of I/O vector elements of 1024. As of OTP 23.0 the term encoding of signals to send over the distribution are encoded into I/O vectors of buffers instead of into a single buffer. Reference counted binaries are referred to directly from the I/O vector instead of being copied into the single buffer. That is, Erlang signals containing huge amounts of reference counted binaries was effected by this performance degradation. * erts: In the distributed case, a faulty reply option in a call to the spawn_request() BIF erroneously caused a badarg exception instead of a badopt error message reply.- Changes for 23.1.1: * erts: inet:setopts([{active,once}]) wakes up IO polling thread unnecessarily, leading to lock contention and visibly higher CPU utilization. * erts: Two bugs in the ERTS internal thread wakeup functionality have been fixed. These bugs mainly hit when all threads in the system tried to go to sleep. When the bugs were triggered, certain operations were delayed until a thread woke up due to some other reason. Most important operations effected were code loading, persistent term updates, and memory deallocation. * erts: Fixed bug in ets:select_replace/2 on compressed tables that could produce faulty results or VM crash. Bug exists since OTP 20. * erts: When compiling Erlang/OTP on macOS using Xcode 12, the performance of the BEAM interpreter would be degraded. * erts: As of OTP 22, the allocator specific memory carrier pools were replaced by a node global carrier pool. This unfortunately caused substantial memory fragmentation in some cases due to long lived data being spread into carriers used by allocators mainly handling short lived data. A new command line argument +Mcp has been introduced with which one can enable the old behavior as well as configuring other behaviors for the carrier pools. In order to configure the old behavior, with allocator specific carrier pools for all allocators, pass +Mucp : (including the colon character) as a command line argument to erl when starting the Erlang system. The default configuration for carrier pools will be changed to +Mucp : some time in the future, but not in this patch. * os_mon: The configuration parameter memsup_improved_system_memory_data has been introduced. It can be used to modify the result returned by memsup:get_system_memory_data(). For more information see the memsup documentation. Note that the configuration parameter is intended to be removed in OTP 24 and the modified result is intended to be used as of OTP 24. * ssh: Fix decoder bug. * compiler: Fixed a performance bug that could be triggered by tuple matching in very large functions. * public_key: Fix the issue that pem_decode will crash with an invalid input. - Changes for 23.1: * kernel: A fallback has been implemented for file:sendfile when using inet_backend socket * kernel: Make default TCP distribution honour option backlog in inet_dist_listen_options. * kernel: Raw option handling for the experimental gen_tcp_socket backend was broken so that all raw options were ignored by for example gen_tcp:listen/2, a bug that now has been fixed. Reported by Jan Uhlig. * kernel: Accept fails with inet-backend socket. * kernel: Fixed various minor errors in the socket backend of gen_tcp. * kernel: Correct disk_log:truncate/1 to count the header. Also correct the documentation to state that disk_log:truncate/1 can be used with external disk logs. * kernel: Fix erl_epmd:port_please/2,3 type specs to include all possible error values. * kernel: Fix erl -erl_epmd_port to work properly. Before this fix it did not work at all. * kernel: Fix typespec for internal function erlang:seq_trace_info/1 to allow term() as returned label. This in turn fixes so that calls to seq_trace:get_token/1 can be correctly analyzer by dialyzer. * kernel: Fix erroneous double registration of processes in pg when distribution is dynamically started. * kernel: Make (use of) the socket registry optional (still enabled by default). Its now possible to build OTP with the socket registry turned off, turn it off by setting an environment variable and controlling in runtime (via function calls and arguments when creating sockets). * kernel: erl -remsh nodename no longer requires the hostname to be given when used together with dynamic nodenames. * observer: Fix graph windows flickering on windows. * mnesia: FIx mnesia delete object handling in transaction storage. In a transaction mnesia:read/1 could indicate that exiting objects did not exist after another object was deleted. * mnesia: Fixed crash during startup, which could happen if a table was deleted on another node. * stdlib: The functions digraph:in_edges/2 and digraph:out_edges/2 would return false edges if called for a vertex that had a '_' atom in its name term. * stdlib: filelib:wildcard("not-a-directory/..") should return an empty list. On Windows it returned "not-a-directory/..". * stdlib: Fix the typespec of shell_docs:render to use the correct type for an MFA. * stdlib: Fix uri_string:recompose/1 when host is present but input path is not absolute. This change prevents the recompose operation to change the top level domain of the host when the path does not start with a slash. * stdlib: The epp module would return a badly formed error term when an 'if' preprocessor directive referenced an undefined symbol. epp:format_error/1 would crash when called with the bad error term. * stdlib: lists:sublist(List, Start, Len) failed with an exception if Start > length(List) + 1 even though it is explicitly documented that "It is not an error for Start+Len to exceed the length of the list". * tools: Correct the Xref analysis locals_not_used to find functions called exclusively from on_load functions. * erts: Update the documentation of the abstract format to use ANNO instead of LINE. * erts: The emulator will no longer revert to the default number of schedulers when running under a CPU quota lower than 1 CPU. * erts: Fixed a problem with crash dumps. When a process that contained reference to literals internally created by the runtime system (such as the tuple returned by os:type/0), the literal would not be included in the crash dump and the crashdump viewer would complain about the heap being incomplete. * erts: Fix configure detection of PGO for clang. * erts: The to_erl program has been fixed to correctly interpret newline as only newline and not newline+return. This bug would cause the terminal to behave strangely when using lines longer than the terminal size. * erts: A race condition when changing process priority by calling process_flag(priority, Prio) could cause elevation of priority for a system task to be ignored. This bug hit if the system task was scheduled on the process calling process_flag() at the same time as the priority was changed. The bug is quite harmless and should hit very seldom if ever. * erts: Adjust /bin/sh to /system/bin/sh in scripts when installing on Android. * erts: In rare circumstances, when loading a BEAM file generated by an alternative code generator (not the Erlang compiler in OTP) or from handwritten or patched BEAM code, the loader could do an unsafe optimization. * erts: A memory and file descriptor leak in socket has been fixed. (When a newly opened socket that had not entered the fd into the VM's poll set (neither received, sent, accepted nor connected) was abandoned without closing (process died), after assigning a different controlling process, then a memory block and the file descriptor could be leaked.) * erts: The documentation of statistics(run_queue) erroneously stated that it returns the total length of all normal run queues when it is the total length of all normal and dirty CPU run queues that is returned. The documentation has been updated to reflect the actual behavior. * erts: Changes in order to build on the Haiku operating system. Thanks to Calvin Buckley * erts: When building the inet driver on Windows, there where many compiler warnings regarding type casting (used when calling the debug macro). This has now been resolved. * erts: Make (use of) the socket registry optional (still enabled by default). Its now possible to build OTP with the socket registry turned off, turn it off by setting an environment variable and controlling in runtime (via function calls and arguments when creating sockets). * erts: Change default filename encoding on android to UTF-8. * erts: Clarification of the format of the atom cache header used by the distribution. * erl_docgen: Repaired lost function "since" versions in the right margin of the module reference HTML documentation. * erl_docgen: Remove erlang compilation warnings and trailing whitespaces. * ftp: Avoid timing issue when setting active once on a socket that is being closed by the peer. * ftp: Avoid timing issue when setting active once on a socket that is being closed by the peer. * dialyzer: In rare circumstance, dialyzer wold crash when analyzing a list comprehension. * eunit: Fixed compiler warning. * snmp: For agent fix PrivParams for SNMPv3 USM with AES privacy, as earlier fixed for the manager in OTP_16541. * snmp: The SNMP Agent missed to re-activate datagram reception in an odd timeout case and went deaf. This bug has been fixed. * snmp: Use of deprecated functions in example 2 has been removed (no more compiler warnings). * snmp: A file descriptor leak has been plugged. When calling the reconfigure function of a mib, it opened the config file(s) but never closed them on successful read. * asn1: Changes in order to build on the Haiku operating system. Thanks to Calvin Buckley * syntax_tools: Minor documentation fix of erl_syntax:operator/1. * erl_interface: Fix erl_interface on windows to be compiled with correct flags to make internal primitives reentrant. * erl_interface: Fixed ei_get_type to set *size to zero for floats, pids, port and refs according to documentation. * erl_interface: Fix ei_connect when using a dynamic node name to force usage of distribution version 6. This bug caused erl_call - R -address to not work properly. * erl_interface: Changes in order to build on the Haiku operating system. Thanks to Calvin Buckley * erl_interface: The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled. * ssl: If a passive socket is created, ssl:recv/2,3 is never called and then the peer closes the socket the controlling process will no longer receive an active close message. * ssl: Data deliver with ssl:recv/2,3 could fail for when using packet mode. This has been fixed by correcting the flow control handling of passive sockets when packet mode is used. * ssl: This change fixes a potential man-in-the-middle vulnerability when the ssl client is configured to automatically handle session tickets ({session_tickets, auto}). * ssl: Fix the internal handling of options 'verify' and 'verify_fun'. This change fixes a vulnerability when setting the ssl option 'verify' to verify_peer in a continued handshake won't take any effect resulting in the acceptance of expired peer certificates. * ssl: This change fixes the handling of stateless session tickets when anti-replay is enabled. * ssl: Fix a crash due to the faulty handling of stateful session tickets received by servers expecting stateless session tickets. This change also improves the handling of faulty/invalid tickets. * ssl: Correct flow ctrl checks from OTP-16764 to work as intended. Probably will not have a noticeable affect but will make connections more well behaved under some circumstances. * ssl: Distribution over TLS could exhibit livelock-like behaviour when there is a constant stream of distribution messages. Distribution data is now chunked every 16 Mb to avoid that. * ssl: Implement the cookie extension for TLS 1.3. * ssl: Experimental OCSP client support. * ssl: TLS 1.0 -TLS-1.2 sessions tables now have a absolute max value instead of using a shrinking mechanism when reaching the limit. To avoid out of memory problems under heavy load situations. Note that this change infers that implementations of ssl_session_cache_api needs to implement the size function (introduce in OTP 19) for session reuse to be optimally utilized. * os_mon: memsup now returns the correct amount of system memory on macOS. * os_mon: Fix memsup:get_os_wordsize/0 to return the current size on aarch64. * ssh: Fixed a bug when a message to ssh-agent was divided into separate packets. * ssh: Fix a bug that could crash the cli server if a too large cli-window was requested from the client. * ssh: Increased test coverage. * ssh: A chapter about hardening the OTP SSH is added to the User's Guide. * ssh: The internal Diffie-Hellman high level API for key generation was slow in old and by OpenSSL now unsupported cryptolib versions (1.0.1 and earlier). If such a cryptolib is used anyhow, the low-level API is used internally in the crypto application. * ssh: A new timeout is defined for daemons: hello_timeout. The timeout is supposed to be used as a simple DoS attack protection. It closes an incoming TCP-connection if no valid first SSH message is received from the client within the timeout limit after the TCP initial connection setup. The initial value is 30s by compatibility reasons, but could be lowered if needed, for example in the code or in a config file. * inets: Clarify the handling of percent encoded characters in http client. * inets: fix crash for undefined port in uri. * inets: Avoid timing issue when setting active once on a socket that is being closed by the peer. * inets: Handle message body of response with 1XX status code as next http message. * inets: Fix a crash in http server when setopts is called on a socket closed by the peer. * inets: A vulnerability in the httpd module (inets application) regarding directory traversal that was introduced in OTP 22.3.1 and corrected in OTP 22.3.4.6. It was also introduced in OTP 23.0 and corrected in OTP 23.1 The vulnerability is registered as CVE-2020-25623 (boo#1177354) The vulnerability is only exposed if the http server (httpd) in the inets application is used. The vulnerability makes it possible to read arbitrary files which the Erlang system has read access to with for example a specially prepared http request. * inets: Add support of PATCH method in mod_esi. * compiler: If the update of a map with the 'Map#{Key := Value}' syntax failed, the line number in the stack backtrace could be incorrect. * compiler: Fixed a performance bug that slowed down compilation of modules with deeply nested terms. * compiler: The compiler could in rare circumstances do an an unsafe optimization that would result in a matching of a nested map pattern would fail to match. * compiler: Fixed a bug in the validator that caused it to reject valid code. * public_key: Fixed an insignificant whitespace issue when decoding PEM file. * public_key: Experimental OCSP client support. * public_key: Use user returned path validation error for selfsigned cert. It allows users of the ssl application to customize the generated TLS alert, within the range of defined alerts. * public_key: add API function to retrieve the subject-ID of an X509 certificate * runtime_tools: Fixed a crash in appmon_info triggered by trying to read port info from a port that was in the process of terminating. appmon_info is used by observer to get information from the observed node. * megaco: The expected number of warnings when (yecc) generating v2 and v3 (text) parser's was incorrect. * hipe: Fixed a warning issued when building the hipe application. * odbc: Changes in order to build on the Haiku operating system. Thanks to Calvin Buckley * crypto: Fix type spec bug in crypto for crypto_init and crypto:one_time * crypto: The deprecation message for crypto:rand_uniform/2 indicated a non-existent function. The correct one (rand:uniform/1) is now suggested. * crypto: Implemented a workaround to allow fallback from using the EVP API for Diffie-Hellman key generation * crypto: The internal Diffie-Hellman high level API for key generation was slow in old and by OpenSSL now unsupported cryptolib versions (1.0.1 and earlier). If such a cryptolib is used anyhow, the low-level API is used internally in the crypto application. * sasl: Make release_handler more resilient against exiting processes during upgrade. - Changes for 23.0.4: * stdlib: When a temporary child of a simple_one_for_one supervisor died, the internal state of the supervisor would be corrupted in a way that would cause the supervisor to retain the start arguments for subsequent children started by the supervisor, causing unnecessary growth of the supervisor's heap. There state corruption could potentially cause other problems as well. * erts: The ERTS internal I/O poll implementation could get into an inconsistent state causing input events to be ignored. * megaco: The v2 and v3 parsers could not properly decode some IPv6 addresses.- Changes for 23.0.3: * erts: Fixed bug in erlang:load_nif/2 that could cause it to throw badarg exception if a concurrent code change operation was in progress. Bug existed since OTP 23.0. * erts: Minor fix of debug compiled VM. * erts: An unintentional reuse of an already used emulator internal event object could cause a wakeup signal to a thread to be lost. In worst case this could cause the runtime system to hang. This hang was however quite rare. * erts: NIF threads and driver threads on non-Linux systems leaked internal resources when terminating. On Windows these resources were one event per thread. On most other systems one mutex and one condition variable per thread. On these other systems that also lacked pthread_cond_timedwait() also a pipe with its file descriptors was leaked. * compiler: When calls to is_map_key were repeated, the compiler could terminate with an internal consistency failure. * compiler: Fixed a bug in the type inference pass that could cause the compiler to hang.- Changes for 23.0.2: * erts: Fixed bug when sending an export fun (eg lists:reverse/1) on a not yet established connection. It could cause VM crash. Bug exists since OTP 23.0. * megaco: The mini parser could not properly decode some IPv6 addresses. - Changes for 23.0.1: * erts: The functionality utilized by BIFs for temporary disabling of garbage collection while yielding could cause system task queues to become inconsistent on a process executing such a BIF. Process system tasks are for example utilized when purging code, garbage collecting literal data, and when issuing an ordinary garbage collection from another process. The bug does not trigger frequently. Multiple code purges in direct sequence makes it more likely that this bug is triggered. In the cases observed, this has resulted in a hanging code purge operation. * erts: SCTP and UDP recv/2,3 hangs indefinitely if socket is closed while recv is called (socket in passive mode). * compiler: In rare circumstances, a guard using 'not' could evaluate to the wrong boolean value. * compiler: A guard expression that referenced a variable bound to a boolean expression could evaluate to the wrong value.- Version 23.0: - Potential Incompatibilities: * SSL:Support for SSL 3.0 is completely removed. TLS 1.3 is added to the list of default supported versions. * erl_interface: Removed the deprecated parts of erl_interface (erl_interface.h and essentially all C functions with prefix erl_). * The deprecated erlang:get_stacktrace/0 BIF now returns an empty list instead of a stacktrace. erlang:get_stacktrace/0 is scheduled for removal in OTP 24. - Improvements and new features: * ssh: OpenSSH 6.5 introduced a new file representation of keys called openssh-key-v1. This is now supported with the exception of handling encrypted keys. * Algorithm configuration could now be done in a .config file. This is useful for example to enable an algorithm that is disabled by default without need to change the code. * SSL: Support for the middlebox compatibility mode makes the TLS 1.3 handshake look more like a TLS 1.2 handshake and increases the chance of successfully establishing TLS 1.3 connections through legacy middleboxes. * Add support for key exchange with Edward curves and PSS-RSA padding in signature verification * The possibility to run Erlang distribution without relying on EPMD has been extended. * A first EXPERIMENTAL socket backend to gen_tcp and inet has been implemented. gen_udp and gen_sctp will follow. * Putting {inet_backend, socket} as first option to listen() or connect() makes it easy to try this for existing code * A new module erpc in kernel which implements an enhanced subset of the operations provided by the rpc module. Enhanced in the sense that it makes it possible to distinguish between returned value, raised exceptions and other errors. erpc also has better performance and scalability than the original rpc implementation. This by utilizing the newly introduced spawn_request() BIF. Also the rpc module benefits from these improvements by utilizing erpc when possible. * Scalability and performance Improvements plus new functionality regarding distributed spawn operations. * In binary matching, the size of the segment to be matched is now allowed to be a guard expression (EEP-52) * When matching with maps the keys can now be guard expressions (EEP-52). * ssh: support for TCP/IP port forwarding, a.k.a tunnelling a.k.a as tcp-forward/direct-tcp is implemented. In the OpenSSH client, this corresponds to the options -L and -R. * Allow underscores in numeric literals to improve readability. Examples: 123_456_789, 16#1234_ABCD. * New functions in the shell for displaying documentation for Erlang modules, functions and types. * kernel: The module pg with a new implementation of distributed named process groups is introduced. The old module pg2 is deprecated and scheduled for removal in OTP 24.- Changes for 22.3: * compiler: A 'receive' with an 'after 0' clause would prevent the optimization that can avoid scanning the entire receive queue when matching on a newly created reference. * compiler: HiPE can again handle modules with catch and try constructs. * compiler: Fixed a bug in bit-syntax optimization that could crash the compiler. * crypto: Fixed potential memory leaks involving calls to the crypto ng_api. * common_test: Document incl_apps cover option * common_test: The ct_property_test has now a report function for results of stateful testing. * common_test: Don't hide error reasons from user * stdlib: Fix type specification for uri_string:normalize/2 that may also return error(). * stdlib: Improve error handling in uri_string:normalize/2. This change fixes a crash when the input URI has faulty percent- encoding. * stdlib: Fix minor bugs in the Erlang pretty printer (erl_pp). * stdlib: Fix the Erlang parser regarding consecutive unary operators. * stdlib: Let calendar:rfc3339_to_system_time() crash when the time offset is missing. * stdlib: Implement uri_string:resolve/{2,3} that can be used to resolve a URI reference against a base URI. * stdlib: In gen_statem it is now possible to change the callback module for a running server. See gen_statem's documentation for change_callback_module, push_callback_module, and pop_callback_module. * ssl: Correct handling of TLS record limit in TLS-1.3. The max value differs from previous versions. Also the payload data max record check was broken, that is record overflow problems could occur if user sent large amounts of data. * ssl: Correct close handling for DTLS * ssl: Fix ssl:getstat/1-2 to also work for DTLS sockets * ssl: Correct internal handling och socket active mode to avoid reviving TCP data aimed for a downgraded TLS socket. * ssl: When using the host name as fallback for SNI (server name indication) strip a possible trailing dot that is allowed in a host name but not in the SNI. Also if the server receives a SNI with a trailing dot send an UNRECOGNIZED_NAME alert. * ssl: Immediately remove session entries if handshake is abruptly closed at transport level. * ssl: Implementation of the key and initialization vector update feature, and general hardening of TLS 1.3. There are cryptographic limits on the amount of plaintext which can be safely encrypted under a given set of keys. This change enforces those limits by triggering automatic key updates on TLS 1.3 connections. * ssl: Add support for TLS 1.3 Session Tickets (stateful and stateless). This allows session resumption using keying material from a previous successful handshake. * ssl: Add support for key exchange with Edward curves and PSS- RSA padding in signature verification. * megaco: The documented function megaco:get_sdp_record_from_PropertGroup/2 was a wrapper for megaco_sdp:get_sdp_record_from_PropertGroup/2 but did not actually exist. This has now been fixed. * megaco: Test suite completely reworked. Add (timestamp) utility functions for debugging and testing. * erl_interface: Fix link error "multiple definition of `ei_default_socket_callbacks'" for gcc version 10 or when built with gcc option -fno-common. Error exists since OTP-21.3. * asn1: Fix 'DEFAULT' with 'OCTET STRING' and 'SEQUENCE OF CHOICE' with extensions. * erts: gen_udp:recv(S, N, 0) corrupted the internal state for the socket so after receive with {active, once} it always returned {error, timeout}, and wasted the received UDP packets. This bug has now been fixed. Reported and pinpointed by Alexander Petrovsky. * erts: The atom esock_atom_user and esock_atom_kernel was never actually created. This has now been corrected. * erts: Fixed bug in socket module that could potentially lead to scheduler deadlocks. * erts: Fix bug causing VM crash if down or stop callback of a NIF resource is called after the NIF module has been purged. The fix will postpone unloading until all such resource objects have been garbage collected. * erts: Fixed bug in ets:update_counter/4, when called with an invalid UpdateOp and a Key that does not exist, causing ets:info(T,size) to return incorrect values. Bug exists since OTP-19.0.2. * erts: Fix potential heap corrupting bugs when a process calls a BIF that blocks other normal schedulers and then writes to its own heap without the main process lock. A NIF running on a dirty scheduler trying to interact with such a process could corrupt its heap. The fixed BIFs were related to code loading and tracing. * erts: Fixed bug in erlang:list_to_ref/1 when called with a reference created by a remote note. Function list_to_ref/1 is intended for debugging and not to be used in application programs. Bug exist since OTP 20.0. * erts: The prim_net nif (net/kernel) made use of an undefined atom, notsup. This has now been corrected. * erts: Corrected the valid range of the erl command line argument +SDio from 0..1024 to 1..1024. +SDio 0 was erroneously allowed which just caused the VM to crash on the first dirty I/O job scheduled. * erts: Fix a crash when attempting to log faults when loading files during early boot. * erts: For socket, not all send and receive flags are supported on all platforms. In order to (at least) simplify testing, the socket:supports/0,1,2,3 functions has been extended with send_flags and recv_flags items, which indicates what the current platform can manage. * erts: Add a "full featured" version of getifaddrs in the net module. * erts: The options busy_limits_port and busy_limits_msgq have been added to the BIF erlang:open_port/2. The busy_limits_port option can be used for controlling the busy state of a port executing the spawn_driver or the fd_driver. The busy_limits_msgq option can be used for controlling the busy state of the port message queue. * erts: A socket "registry" has been added making it possible to list current open sockets. * erts: The counters managed by the socket nif has been extended. Their "size" has been increased from 32 bit to 64. Two max package size (for read and write) has been added. And four accept counters has been added. * erts: Add gcc option -fno-common to detect accidental name clashes of global variables. * erts: New dynamic lock checker that verifies locking orders and detects potential deadlock bugs in drivers and NIFs. Enabled together with the old static lock checker (for ERTS internal locks) in emulator started with -emu_type debug or built with configuration option --enable-lock-checking. * snmp: A simple supervision of the snmp manager net-if process has been added. Also, a way to forcibly restart the net-if process has been added. This could be useful if the net-if process hangs for some reason. * snmp: Misc documentation corrections * mnesia: Fixed a timing issue in uninstall fallback functionality. * eunit: Backport of PR-2316: Strip control codes from eunit_surefire output to avoid generation of invalid xml * ssh: Unicode problems for ssh_sftp:write fixed. * ssh: Changes to the internal api of the experimental ssh_dbg tool. * ssh: The new functions ssh:set_sock_opts/2 and ssh:get_sock_opts/2 sets and reads option values for the underlying TCP stream. * hipe: HiPE can again handle modules with catch and try constructs. * hipe: When the return value for try/catch was ignored, the native code compiler could crash. * public_key: Add support for key exchange with Edward curves and PSS-RSA padding in signature verification. * diameter: Add the 'first' tuple to type diameter:peer_filter/0. The filter was added in OTP-17.5.6.8 and OTP-18.3, but neither release updated the type specification. * tools: An Emacs warning due to lacking type in defcustom declaration has been fixed. * tools: Improve emacs indentation. * tools: The cover tool could generate instrumented code for a module that would cause warnings to be issued. * tools: Fixed generated fprof analysis format to also handle data in maps. * sasl: A socket "registry" has been added making it possible to list current open sockets. * kernel: The DNS resolver `inet_res` has been fixed to return the last intermediate error when subsequent requests times out. * kernel: The prim_net nif (net/kernel) made use of an undefined atom, notsup. This has now been corrected. * kernel: Fix a crash when attempting to log faults when loading files during early boot. * kernel: Fix crash in logger when logging to a remote node during boot. * kernel: Improved net_kernel debug functionality. - Changes for 22.2.8: * diameter: The possibility of choosing a handler process for an incoming Diameter request with a configured MFA was documented in OTP 20.0, but counters (with {traffic_counters, true}) were not incremented when this process was on a remote node. Counters are now incremented on the node that configures the transport in question. Introduced in OTP 21.3. * diameter: Transport options differing from those passed to diameter:add_transport/2 were used in several situations: when starting a transport process after connect_timer expiry after an initial connection attempt has failed, when starting a transport process after a connection has been accepted, when sending events, when returning options in diameter:service_info/2, and possibly more. In particular, the following configuration options to diameter:add_transport/2 were dropped: avp_dictionaries, incoming_maxlen, spawn_opt, strict_mbit. Moreover, any service options mistakenly passed to diameter:add_transport/2 were interpreted as such, instead of being ignored as the documentation states, with the consequence that outgoing and incoming requests saw different values of some options, some were always taken from transport options, and others from service options. diameter:add_transport/2 must be called in new code for the fix to have effect. Introduced in OTP 20.1.- Remove conditions and support for openSUSE/SLE < 15 - Remove not really needed service file _service - Convert the dependencies to pkgconfig style ones- Changes for 22.2.7: * compiler: Fixed a bug that could cause the compiler to reject valid code that used the is_map_key/2 BIF. * compiler: Fixed a bug that could cause the compiler to reject valid code that matched the same map key several times. * compiler: The compiler could crash when compiling a convoluted receive statement. * compiler: The compiler could crash when a fun was created but never used. The compiler could crash when compiling the expression true = 0 / X. - jsc#SLE-10913- Changes for 22.2.6: * erts: A process could get into an inconsistent state where it was runnable, but never scheduled for execution. This could occur when a mix of normal and low priority processes where scheduled on the same type of dirty scheduler simultaneously.- Changes for 22.2.5: * erts: A process could end up in a state where it got endlessly rescheduled without making any progress. This occurred when a system task, such as check of process code (part of a code purge), was scheduled on a high priority process trying to execute on a dirty scheduler. * erts: Improved signal handling for processes executing dirty. For example, avoid busy wait in dirty signal handler process when process is doing garbage collection on dirty scheduler. * stdlib: A directory traversal vulnerability has been eliminated in erl_tar. erl_tar will now refuse to extract symlinks that points outside the targeted extraction directory and will return {error,{Path,unsafe_symlink}}. (Thanks to Eric Meadows-Jönsson for the bug report and for suggesting a fix.)- Changes for 22.2.4: * ssl: Enhance error handling, all ALERTS shall be handled gracefully and not cause a crash. * ssl: Enhance alert logging, in some places the role indication of the alert origin was missing. So the log would say undefined instead of client or server. * ssl: Two different optimizations did not work together and resulted in the possible breakage of connections using stream ciphers (that is RC4). Reworked the implementation to avoid this.- Changes for 22.2.3: * ssl: Fix the handling of GREASE values sent by web browsers when establishing TLS 1.3 connections. This change improves handling of GREASE values in various protocol elements sent in a TLS 1.3 ClientHello. * ssl: Correct DTLS listen emulation, could cause problems with opening a new DTLS listen socket for a port previously used by a now closed DTLS listen socket. * compiler: Fixed a bug in the compiler that could cause it to reject valid code.- Changes for 22.2.2: * erts: Taking a scheduler offline could cause timers set while executing on that scheduler to be delayed until the scheduler was put online again. This bug was introduced in ERTS version 10.0 (OTP 21.0). * erts: The ets:update_counter/4 core dumped when given an ordered_set with write_concurrency enabled and an invalid position. This bug has been fixed. * erts: A process calling erlang:system_flag(multi_scheduling, block) could end up blocked waiting for the operation to complete indefinitely. * erts: Duplicate entries for [socket:]getopt and [socket:]setopt in man page. * stdlib: The ets:update_counter/4 core dumped when given an ordered_set with write_concurrency enabled and an invalid position. This bug has been fixed. * crypto: Constant time comparisons added. * ssh: Fixed that ssh_connection:send could allocate a large amount of memory if given an iolist() as input data. * ssh: Safe atom conversions. * ssh: Constant time comparisons added. - Changes for 22.2.1: * erts: Corrected an issue with the new socket api which could cause a core dump. A race during socket close could cause a core dump (an invalid nif environment free). * erts: Corrected an issue with the new socket api which could cause a core dump. When multiple accept processes waiting for a connect a connect could cause a core dump. * snmp: Its now possible to remove selected varbinds (from the final message) when sending a notification. This is done by setting the 'value' (in the varbind(s) of the varbinds list) to '?NOTIFICATION_IGNORE_VB_VALUE'. * snmp: Its now possible to specify that an oid shall be "truncated" (trailing ".0" to be removed) when sending an notification. * ssl: Add missing alert handling clause for TLS record handling. Could sometimes cause confusing error behaviors of TLS connections. * ssl: Fix handling of ssl:recv that happens during a renegotiation. Using the passive receive function ssl:recv/[2,3] during a renegotiation would fail the connection with unexpected msg.- BuildRequire pkgconfig(libsystemd) instead of systemd-devel: Allow OBS to shortcut through the -mini flavors.- Changes for 22.2 * http://erlang.org/download/OTP-22.2.README * Highlights: * erts: The Kernel application's User's Guide now contains a Logger Cookbook with common usage patterns. * erts: Numerous improvements in the new socket and net modules * Standard libraries: common_test: ct_property_test logging is improved * Standard libraries: ssl: Correct handling of unordered chains so that it works as expected * Tools: Emacs erlang-mode function that lets the user open the documentation for an Erlang/OTP function in an Emacs buffer has been improved. Users will be asked if they want the man pages downloaded if they are not present in the system.- Changes for 22.1.8 * http://erlang.org/download/OTP-22.1.8.README * erts: Large amounts of quickly executed dirty work could cause heavy contention on an internal spin lock. The spin lock was replaced by a mutex which behaves much better under these conditions.- Changes for 22.1.7 * http://erlang.org/download/OTP-22.1.7.README * compiler: Fixed a performance bug that caused repeated matches of large records to take a very long time to compile. * erts: A literal area could prematurely be released before all uses of it had been removed. This occurred either when a terminating process had a complex exit reason referring to a literal that concurrently was removed, or when a terminating process continued executing a dirty NIF accessing a literal (via the heap) that concurrently was removed. * erts: Fix bug causing VM crash due to memory corruption of distribution entry. Probability of crash increases if Erlang distribution is frequently disconnected and reestablished towards same node names. Bug exists since OTP-21.0. * erts: Fixed bug causing crash of VM built with configuration - -enable--sharing-preserving. Provoked when a sent message contains both a bit string and the heap binary (< 65 bytes) which the bit string was matched from. Bug exists since OTP-19.0 but has seen to be easier to provoke since OTP-22.1. - Changes for 22.1.6 * http://erlang.org/download/OTP-22.1.6.README * compiler, erts: The compiler could do an unsafe optimization of receives, which would cause a receive to only scan part of the message queue. * crypto: The AEAD tag was not previously checked on decrypt with chacha20_poly1305 * erts:Fix bug where the receive marker used by the runtime to do the receive queue optimization could be incorrectly set. The symptom of this would be that a message that should match in a receive never matches. * snmp: Agent discovery cleanup. If there is no receiver of INFORM then #state.reqs in snmpa_net_if keeps on growing for DISCOVERY.- Changes for 22.1.5 * http://erlang.org/download/OTP-22.1.5.README * snmp: Application(s): snmp Related Id(s): ERIERL-427 The agent discovery process has been made to work with snmptrapd..- Changes for 22.1.4 * http://erlang.org/download/OTP-22.1.4.README * compiler: Fixed a bug where the compiler could generate incorrect code for a 'receive' statement inside a 'try'. * crypto: FIxed a bug if the erlang emulator was linked with a very old cryptolib version (1.0.1 or earlier). The bug now fixed could have triggered a core dump if an unknown cipher name was used in crypto functions. * erts: Erlang/OTP can now be built on macOS Catalina (10.15).- Changes for 22.1.3: * inets: Add HTTP server error logging vi logger - Changes for 22.1.2: * erts: Added the environment variable ERLC_SERVER_ID, which allows multiple compile servers to run separately under the same user. - Changes for 22.1.1: * erts: A terminating process sending distributed 'EXIT' or 'DOWN' signals while terminating could end up in a state where no progress at all was made. This was triggered by a distribution channel that the terminating process was sending on got busy. This bug has existed since ERTS version 10.4 (OTP 22.0). * erts: When communicating with a simultaneously exiting port via the erlang:port_*() BIFs one could sometimes get stray {Ref, What} messages. Where Ref was a reference and What usually were the atom badarg. * snmp: Made it possible to add 'extra socket options' to the (gen_udp) socket open call (for both manager and agent). A new option has been added, extra_sock_opts, which makes it possible for the user to add a list of extra socket options that will be appended to the other socket options for the open call. See the snmp application config man page (erl -man 6 snmp) or the "Configuring the application" chapter of the Users Guide for more info. * compiler: Fixed a bug in the bit-syntax optimization pass that could crash the compiler.- Changes for 22.1: * kernel: The type specification for gen_sctp:connect/4,5 has been corrected. * kernel: Extra -mode flags given to erl are ignored with a warning. * kernel: Fix type spec for seq_trace:set_token/2. * kernel: logger:compare_levels/2 would fail with a badarg exception if given the values all or none as any of the parameters. This is now corrected. * kernel: Fix bug where the log file in logger_std_h would not be closed when the inode of the file changed. This would in turn cause a file descriptor leak when tools like logrotate are used. * kernel: Fix a race condition in the debugging function net_kernel:nodes_info/0. * kernel: Fix race condition when closing a file opened in compressed or delayed_write mode. * kernel: The possibility to send ancillary data, in particular the TOS field, has been added to gen_udp:send/4,5. * kernel: If the log file was given with relative path, the standard logger handler (logger_std_h) would store the file name with relative path. If the current directory of the node was later changed, a new file would be created relative the new current directory, potentially failing with an enoent if the new directory did not exist. This is now corrected and logger_std_h always stores the log file name as an absolute path, calculated from the current directory at the time of the handler startup. * kernel: Support local sockets with inet:i/0. * observer: Fix bug after a user followed link on a pid from an expanded term window. * observer: Improved dark mode colors on Linux. * mnesia: mnesia:add_table_copy/3 could cause a deadlock if called when a new node was starting. * mnesia: Transactions with sticky locks could with async_asym transactions be committed in the wrong order, since asym transaction are spawned on the remote nodes. To fix this bug the communication protocol between mnesia nodes had to be updated, thus mnesia will no longer be able to connect to nodes earlier than mnesia-4.14 , OTP-19.0. *** POTENTIAL INCOMPATIBILITY *** * stdlib: re:run() now yields when validating utf8 in a large subject. * stdlib: Upgraded the ERTS internal PCRE library from version 8.42 to version 8.43. See http://pcre.org/original/changelog.txt for information about changes made to PCRE. This library implements major parts of the re regular expressions module. * stdlib: The bug with ID ERL-717 has been fixed. The functions io:columns() and io:rows() only worked correctly inside interactive erlang shells before this fix. These functions returned {error,enotsup} before this fix even if stdout and stdin were connected to a terminal when they were invoked from an escript or a program started with e.g., erl -noshell. * stdlib: Fixed handling of ".." and "@" in wildcards. ".." would only work when preceded by a literal pattern such as in "a/..", not when preceded by wildcard characters such as in "*/..". The combination "@/.." was also broken, and in addition "@" in a pattern could degrade performance of the wildcard matching. * stdlib: Make sure ets:fun2ms() can handle ++/2 in the head of functions when called from the shell. * stdlib: Debugging of time-outs in gen_statem has been improved. Starting a time-out is now logged in sys:log and sys:trace. Running time-outs are visible in server crash logs, and with sys:get_status. Due to this system events {start_timer, Action, State} and {insert_timout, Event, State} have been added, which may surprise tools that rely on the format of these events. New features: The EventContent of a running time-out can be updated with {TimeoutType, update, NewEventContent}. Running time-outs can be cancelled with {TimeoutType, cancel} which is more readable than using Time = infinity. *** POTENTIAL INCOMPATIBILITY *** * stdlib: re:run() now avoids validating utf8 in the subject more than once in the same call. This validation could previously be performed multiple times when the global option was passed. * stdlib: ETS ordered_set tables with write_concurrency enabled has got a performance issue fixed. There were no limits for the values of internal statistics counters before this fix. This could result in that the data structure sometimes reacted slowly to a change in how many parallel processes were using it. * stdlib: The ordsets:union/1 is now faster when passed a long list of ordsets. * stdlib: unicode:characters_to_binary() could return very small binaries as reference counted off heap binaries. This could cause an unnecessary large memory usage and an unnecessary load on the binary allocator. Small binaries are now always returned as heap binaries. * stdlib: Display a more meaningful error message when a bad I/O server is used in a script written in Erlang (escript). * stdlib: New feature ets:info(_, binary) to get information about all reference counted binaries kept by a table. This is the same kind of debug information that process_info(_, binary) returns for a process. * stdlib: Corrected ETS documentation about the behavior of compiled match specifications when serialized through external format. * tools: cover would fail to start if two processes tried to start it at the exact same time. * common_test: If a ct hook is installed in the suite/0 function in a test suite, then the hook's terminate/1 function would be called several times without it's init/2 function being called first. This is now corrected. * common_test: If init_per_testcase fails, the test itself is skipped. According to the documentation, it should be possible to change the result to failed in a hook function. The only available hook function in this case is post_init_per_testcase, but changing the return value there did not affect the test case result. This is now corrected. * common_test: Add ct_netconfc support for NETCONF 1.1 (RFC 6241). The 1.1 base capability can be sent in hello, and RFC 6242 chunk framing is applied when both client and server advertise 1.1 support. * common_test: Correct lib_dir paths in common_tests opaque data structure that is passed to ct_release_test callback modules in functions upgrade_init/2, upgrade_upgraded/2 and upgrade_downgraded/2. The incorrect paths may cause confusion when debugging although it will not cause any incorrect behavior on the part of common_test as it is currently not used. * erts: If you set {linger,{true,0}} on a gen_tcp listen socket, accept a connection on that socket, and then close the accepted socket, now the linger zero setting is transferred to the accepted socket. Before this correction that information was lost and the close behaviour on the accepted socket incorrect. * erts: Sending ancillary data implemented in OTP-15747 accidentally left behind test code that caused all UDP sends to fail on Windows. This has now been fixed. * erts: In the socket nif, used invalid flags when if-def'ing for supported TCP flags: TCP_MAXSEG and TCP_NODELAY (the support function). * erts: Fixed memory leaks in experimental socket module. * erts: re:run() now yields when validating utf8 in a large subject. * erts: Fixed bug in seq_trace:set_token(label,Term) which could cause VM crash if Term was heap allocated (not an atom, small integer, local pid or port). Bug exists since OTP 21.0 when terms other than small integers were first allowed as labels. * erts: Extra -mode flags given to erl are ignored with a warning. * erts: Don't loop indefinitely when --enable-pgo is given to configure, but compiler does not support pgo. * erts: Fix seq_trace:print/2 not to raise badarg exception if label is not a small integer. Bug exists since OTP 21.0. * erts: Fixed hipe_flush_icache_range for non-Linux OS on ARM. * erts: The fix in OTP-15871 was too conservative and disabled the offending load-time optimization in some cases where it was safe. * erts: Upgraded the ERTS internal PCRE library from version 8.42 to version 8.43. See http://pcre.org/original/changelog.txt for information about changes made to PCRE. This library implements major parts of the re regular expressions module. * erts: Fix race condition when closing a socket while using {active,N} on Windows. * erts: Allow more than one -config command line option to erl on Windows to conform with other OS. * erts: Fix so that ERL_FLAGS environment variable does not interfere with command line arguments. Before this fix you could write: ERL_FLAGS="10" erl +S and erlang would start as if +S had been given the argument 10. * erts: The bug with ID ERL-717 has been fixed. The functions io:columns() and io:rows() only worked correctly inside interactive erlang shells before this fix. These functions returned {error,enotsup} before this fix even if stdout and stdin were connected to a terminal when they were invoked from an escript or a program started with e.g., erl -noshell. * erts: Do not use named label in ethread.c inline assemble. This allows erts to be compiled using gcc 9.1.0 with LTO enabled. * erts: erlang:fun_to_list/1 will now escape the module and function name when necessary. * erts: process_info(P,binary) would neglect to look through heap fragments, potentially missing a few binaries associated with the process. * erts: HiPE is now automatically disabled on systems with non- glibc implementation (for instance musl). This is because musl does not provide the API's for guaranteeing that signals are delivered on the correct native stack. * erts: Fixed bug triggered if a process is killed during call to persistent_term:put or persistent_term:erase. * erts: Add units to all memory slogans in the crash dump documentation. * erts: Fix a bug in binary_to_term that would crash the emulator if a term larger than 16GB was to be decoded. * erts: Fixed bug related to an exiting process sending EXIT and DOWN signals to remote linked/monitored processes. Bugs exists since OTP 22.0. * erts: erlc can now automatically use a compile server to avoid starting an Erlang system for each file to be compiled in a multi-file project. See the documentation for how to enable it. * erts: The possibility to send ancillary data, in particular the TOS field, has been added to gen_udp:send/4,5. * erts: The net module has been split into 'net' (kernel) and prim_net (preloaded). * erts: Socket counters now works as expected and can also be extracted with the (new) info function. * erts: re:run() now avoids validating utf8 in the subject more than once in the same call. This validation could previously be performed multiple times when the global option was passed. * erts: The un-documented function erlang:dist_get_stat/1 now returns the real value of what the distribution queue contains instead of a boolean. * erts: ETS ordered_set tables with write_concurrency enabled has got a performance issue fixed. There were no limits for the values of internal statistics counters before this fix. This could result in that the data structure sometimes reacted slowly to a change in how many parallel processes were using it. * erts: Optimize the reception of large distribution messages. * erts: Binary matching and functions like split_binary/2 will now create heap binaries when the results are small enough, reducing the chances of small sub-binaries keeping large binaries alive. * erts: Fixed rare emulator crash in instrument:allocations/0-1. * erts: Ports could pass very small binaries as reference counted off heap binaries to processes. This could cause an unnecessary large memory usage and an unnecessary load on the binary allocator. Small binaries are now always passed as heap binaries to processes. * erts: unicode:characters_to_binary() could return very small binaries as reference counted off heap binaries. This could cause an unnecessary large memory usage and an unnecessary load on the binary allocator. Small binaries are now always returned as heap binaries. * erts: Improved erl_nif documentation regarding on_load and Erlang stub/fallback functions. * erts: New feature ets:info(_, binary) to get information about all reference counted binaries kept by a table. This is the same kind of debug information that process_info(_, binary) returns for a process. * erl_docgen: Update the documentation build support to handle FOP 2.1 . * ftp: A possibly infinite loop when receiving messages divided in parts is removed. * dialyzer: Allow native compilation when using Dialyzer from Erlang. The options native (defaults to false) and native_cache have been added. * eunit: Handle get_until request with explicit encoding in the implementation of the I/O protocol. * snmp: Fix various minor issues related to Dialyzer. Mostly these are dialyzer warnings, but there was also some minor bugs detected by Dialyzer. * snmp: Fixed a dets usage problem detected by dialyzer. * snmp: The function snmp:print_version_info() prints various version info. For each module a number of items are printed, such as app vsn and md5 digest. And an attempt was also made to print "compile time". This used to be available in the module_info for each module, but has now been removed. * snmp: The use of the deprecated random module has been replaced the with rand module. * snmp: Removed use of the deprecated function erlang:get_stacktrace(). Instead make use of the 'catch Class:Error:Stacktrace' feature. * syntax_tools: Add missing calls to erl_syntax:unwrap/1. The nodes concerned represent names and values of maps and map types. * wx: Fix a driver bug that could crashes when allocating memory. * erl_interface: Fix bugs in ei_print_term for binaries and bit strings causing incorrect output. * erl_interface: Fixed bug in ei_decode_fun for very old fun encoding format. Bug exist since OTP 22.0. * erl_interface: ei_print_term() now supports printing of maps and funs. * xmerl: xmerl_sax_parser crashed during charset detection when the xml declarations attribute values was missing the closing quotation (' or "). * ssl: Handling of zero size fragments in TLS could cause an infinite loop. This has now been corrected. * ssl: DTLS record check needs to consider that a resent hello message can have a different version than the negotiated. * ssl: Basic support for TLS 1.3 Client for experimental use. For more information see the Standards Compliance chapter of the User's Guide. * ssl: Correct solution for retaining tcp flow control OTP-15802 (ERL-934) as to not break ssl:recv as reported in (ERL-938) * ssl: Enhance dialyzer specs to reflect implementation better and avoid dialyzer warnings for the user that wants to use TLS with unix domain sockets. * ssl: Add support for ECDSA signature algorithms in TLS 1.3. * ssl: Correct error handling of TLS downgrade, possible return values form ssl:close/2 when downgrading is {ok, Port} or {error, Reason}, it could happen that only ok was returned instead of {error, closed} when downgrade failed due to that the peer closed the TCP connection. * os_mon: Fix disk_sup to ignore squashfs on Linux when determining if a mounted filesystem is full or not. * os_mon: Fix bug where cpu_sup:util() always returned 100% on systems not using gnu libc, for example Alpine OS. * ssh: Fixed wrong type definition for the daemon option subsystems. * ssh: Fixed a possible SSH logging crash if there was a problem in an early stage of session setup. * ssh: The documentation for the modules ssh_connection, ssh_sftp and ssh_sftpd are now generated from the -spec:s. * ssh: Internal cleanup including removal of the internal file ssh_userauth.hrl. * ssh: Removed unused definitions in ssh.hrl. * ssh: Removed unused fields in the internal #connection{} record. * ssh: To get information of a connection_ref() from for example ssh:connect/3, there was previously one function available namely ssh:connection_info/2. This ticket adds ssh:connection_info/1 which returns all information. For daemons (servers) started with for example ssh:daemon/2 the function ssh:daemon_info/1 returning all information was available. This ticket adds ssh:daemon_info/2 which returns only the information specified in the second argument. The info of connections and of daemons now also includes the item 'options'. Only those options that does not have their default values are returned. For a connection also the items 'algorithms' and 'channels' are added. * inets: httpd - Accept singel LF as line terminator * inets: mod_esi will now always propagate the actual HTTP status code that it answered with, to later mod-modules, and not in some cases hardcode 200. * compiler: Code such as the following would crash the compiler in OTP 22: [some_atom = fun some_function/1] * compiler: Compilation could get really slow (in the order of minutes instead of seconds) when compiling huge functions. (Thanks to Kostis Sagonas for reporting this bug.) * compiler: Fixed a bug in the validator that could reject valid code. * compiler: In rare circumstances, when two clauses had identical bodies and guard tests that tested a single boolean variable, the guard test for the second clause could be discarded, executing the second clause unconditionally if the first clause was not executed. * compiler: Fixed extremely slow compilation for huge functions doing predominantly pattern matching. * compiler: The compiler could generate unsafe code (that would crash the runtime system) for map pattern matching. The code could be unsafe if the matched key was not present in the map at runtime. * compiler: Correct code using try/after could fail to compile when using the option 'no_type_opt'. * compiler: The compiler could crash when compiling code that called 'length/1' on a binary extracted using the binary syntax. * compiler: Fixed a bug where the compiler could fail with an internal consistency failure error when compiling receive statements. * compiler: Fixed a problem where the compiler would crash when compiling binary matching in a function head. * public_key: Support Password based encryption with AES * public_key: Change dialyzer spec to avoid confusion * runtime_tools: Fix dbg:stop_clear/0 to also clear trace events (send and 'receive'). * megaco: Fix various minor issues related to Dialyzer. Mostly these are dialyzer warnings, but there was also some minor bugs detected by Dialyzer. * crypto: The implementation of crypto_one_time/4 is adjusted to match the type specification. The spec and the black-box behaviour of the function are unchanged. Some details: Both the spec and the implementation were correct seen separately. But with both of them combined simultaneously with crypto_one_time/5 which was called by the implementation of crypto_one_time/4, an (obvious) error was detected by a Dialyzer with more thorough checking than usual. * crypto: When using crypto with FIPS mode enabled, the digests were not correctly handled. * crypto: A memory leak in error handling code in ng_crypto_init_nif is fixed. * crypto: Fixed the broken static build of the crypto nifs * crypto: The Message Authentication Codes (MAC) CMAC, HMAC and Poly1305 are unified into common functions in the New Crypto API. See the manual for CRYPTO. * sasl: The net module has been split into 'net' (kernel) and prim_net (preloaded). * jinterface: Replaced deprecated with in documentation.- Rebased patches: + 0001-erts-Do-not-use-named-no_cpuid-label-in-asm.patch dropped (merged upstream)- Udate -ffat-lto-objects in order to properly build static libraries provided by the package (boo#1142645). - Use %make_build macro.- Add patch 0001-erts-Do-not-use-named-no_cpuid-label-in-asm.patch: fix boo#1142913 - Changes for 22.0.7: * compiler: Fixed a compiler crash introduced in 22.0.6 (OTP-15952). - Changes for 22.0.6: * compiler: Fixed an unsafe optimization when matching tuple_size/1 outside of guards, which could crash the emulator if the argument was not a tuple. * compiler: Fixed a rare bug that could cause the wrong kind of exception to be thrown when a BIF failed in a function that matched bitstrings. * compiler: Fixed a bug where receive statements inside try/catch blocks could return incorrect results. * ssl: Enhance error handling for erroneous alerts from the peer. * hipe: The HiPE compiler would badly miscompile certain try/catch expressions, so it will now refuse to compile modules containing try or catch. As a consequence of this, dialyzer will no longer compile key modules to native code. *** POTENTIAL INCOMPATIBILITY *** * dialyzer: The HiPE compiler would badly miscompile certain try/catch expressions, so it will now refuse to compile modules containing try or catch. As a consequence of this, dialyzer will no longer compile key modules to native code. *** POTENTIAL INCOMPATIBILITY *** - Changes for 22.0.5: * inets: Fix a regression in http client that causes a crash when request URI has no scheme. * ssl: Fix handling of certificate decoding problems in TLS 1.3 similarly as in TLS 1.2. * ssl: Hibernation now works as expected in all cases, was accidently broken by optimization efforts. * ssl: Fix interoperability problems with openssl when the TLS 1.3 server is configured wirh the option signature_algs_cert. * dialyzer: Make sure Dialyzer does not crash if the formatting of results fails. Instead of crashing, an unformatted version of the results is returned. * erts: An invalid value test caused the socket:setopt(Socket, ip, add_membership, ip_mreq()) to fail with badarg. The same for drop_membership. * erts: Fixed bug causing VM crash when doing textual dump of a process containing an unhandled monitor down signal. Textual process dumps can be done with erlang:system_info(procs), trace feature process_dump, Erlang shell break menu and a crashdump. Bug exist since OTP 21.0. * erts: lists:subtract/2 would produce incorrect results for some inputs on 64-bit platforms. * erts: Fixed a bug in the loader that was similar to OTP-15938, yielding incorrect code for some inputs on 64-bit platforms. * erts: Fixed bug causing scheduler threads in rare cases to block spinnning indefinitely. Bug exists since OTP 21.0.- Drop priv/obj directories: boo#1140404- Version 22.0.4: * http://erlang.org/download/OTP-22.0.4.README - Bug Fixes * erts: Fixed a buffer overflow when binary_to_existing_atom/2 and list_to_existing_atom/2 was used with the latin1 encoding. * erts: The runtime system disconnected a connection if it received an exit/2 signal where the recipient was a process on an old incarnation of the current node. That is, the receiving node had the same node name, but another "creation" number. The signal will now just be dropped since the receiving process no longer exists. * kernel: user/user_drv could respond to io requests before they had been processed, which could cause data to be dropped if the emulator was halted soon after a call to io:format/2, such as in an escript. * ssl: Correct handshake handling, might cause strange symptoms such as ASN.1 certificate decoding issues. * ssl: Fix handling of the signature_algorithms_cert extension in the ClientHello handshake message. * ssl:Handle new ClientHello extensions when handshake is paused by the {handshake, hello} ssl option.- Version 22.0: - Potential Incompatibilities: * gen_* behaviours: If logging of the last N messages through sys:log/2,3 is active for the server, this log is included in the terminate report. * reltool: A new element, Opts, can now be included in a rel tuple in the reltool release specific configuration format: {rel, Name, Vsn, RelApps, Opts}. * All external pids/ports/refs created by erlang:list_to_pid and similar functions now compare equal to any other pid/port/ref with same number from that node. * The old legacy erl_interface library is deprecated as of OTP 22, and will be removed in OTP 23. This does not apply to the ei library. * VxWorks is deprecated as of OTP 22 and will be removed in OTP 23. - New Features: * Support for Erlang Distribution protocol to split the payload of large messages into several fragments. * ETS option write_concurrency now also effects and improves scalability of ordered_set tables. * The length/1 BIF used to calculate the length of the list in one go without yielding, even if the list was very long. Now it yields when called with long lists. * A new (still experimental) module socket is introduced. It is implemented as a NIF and the idea is that it shall be as "close as possible" to the OS level socket interface. * Added the NIF function enif_term_type, which helps avoid long sequences of enif_is_xyz by returning the type of the given term. This is especially helpful for NIFs that serialize terms, such as JSON encoders, where it can improve both performance and readability. * The compiler has been rewritten to internally use an intermediate representation based on Static Single Assignment (SSA). The new intermediate representation makes more optimizations possible. * All compiler options that can be given in the source file can now be given in the option list on the command line for erlc. * In OTP 22, HiPE (the native code compiler) is not fully functional. The reasons for this are new BEAM instructions for binary matching that the HiPE native code compiler does not support. If erlc is invoked with the +native option, and if any of the new binary matching instructions are used, the compiler will issue a warning and produce a BEAM file without native code. * Cover now uses the counters module instead of ets for updating counters. The new function cover:local_only/0 allows running Cover in a restricted but faster local-only mode. The increase in speed will vary depending on the type of code being cover-compiled, as an example the compiler test suite runs more than twice as fast with the new Cover. * A simple socket API is provided through the socket module. This is a low level API that does *not* replace gen_[tcp|udp|sctp]. It is intended to *eventually* replace the inet driver. It also provides a basic API that facilitates the implementation of other protocols than TCP, UDP and SCTP. Known issues are; No support for the Windows OS (currently), a small term leakage. This feature will be classed as experimental in OTP 22. * SSL: now uses the new logger API, including log levels and verbose debug logging. * SSL: Basic support for TLS 1.3 Server for experimental use. * crypto: The new hash_info/1 and cipher_info/1 functions returns maps with information about the hash or cipher in the argument. - The application otp_mibs has been removed from OTP.- Update to 21.3.8.1: - Changes for 21.3.8.1: * http://erlang.org/download/OTP-21.3.8.1.README * erts: Fixed a buffer overflow when binary_to_existing_atom/2 and list_to_existing_atom/2 was used with the latin1 encoding. * ssl: Correct solution for retaining tcp flow control OTP-15802 (ERL-934) as to not break ssl:recv as reported in (ERL-938) * tools: cover would fail to start if two processes tried to start it at the exact same time. - Update to 21.3.8: - Changes for 21.3.8: * http://erlang.org/download/OTP-21.3.8.README * common_test: The test result when a hook function fails is in general the same as if the function that the hook is associated with fails. For example, if post_init_per_testcase fails the result is that the test case is skipped, as is the case when init_per_testcase fails.This, however, was earlier not true for timetrap timeouts or other error situations where the process running the hook function was killed. This is now corrected, so the error handling should be the same no matter how the hook function fails. Related Id(s): ERIERL-334 * common_test: In some rare cases, when two common_test nodes used the same log directory, a timing problem could occur which caused common_test to crash because it's log cache file was unexpectedly empty. This is now corrected. Related Id(s): ERIERL-342 * common_test: Two new common_test hook functions are introduced: post_groups/2, which is called after Suite:groups/0 post_all/3, which is called after Suite:all/0 A new term, {testcase,TestCase,RepeatProperties} is now also allowed in the return from all/0. This can be used for repeating a single test case a specific number of times, or until it fails or succeeds once. * eldap, public_key, ssl: Back port of bug fix ERL-893 from OTP-22 and document enhancements that will solve dialyzer warnings for users of the ssl application. This change also affects public_key, eldap (and inet doc). Related Id(s): ERL-893, ERL-929, PR-2215 * erl_interface: erl_interface/ei refused to use node names with an alive name (the part of the node name preceding the @ sign) longer than 63 characters and a host name longer than 64 characters. The total amount of characters allowed in a node name (alivename@hostname) was thus limited to 128 characters. These limits applied both to the own node name as well as node names of other nodes. Ordinary Erlang nodes limit the node name length to 256 characters, which meant that you could not communicate with certain Erlang nodes due to their node name used. erl_interface/ei now allow the total amount of characters in a node name to be up to 256 characters. These characters may be distributed between alive name and host name in whatever way needed. That is, the maximum amount of characters in the alive name may be 254 and the maximum amount of characters in the host name may be 254, but in total the node name must not exceed 256 characters. * erts: Fixed more bugs in process_info(reductions) causing it to sometimes behave non-monotonic. That is, a subsequent call toward the same process could return a lower reduction value. Related Id(s): ERIERL-337, OTP-15709 * ssl: Missing check of size of user_data_buffer made internal socket behave as an active socket instead of active N. This could cause memory problems. * eldap, public_key, ssl: Back port of bug fix ERL-893 from OTP-22 and document enhancements that will solve dialyzer warnings for users of the ssl application. This change also affects public_key, eldap (and inet doc). * stdlib: A bug in gen_statem has been fixed where the internal timeout message could arrive as an info to the callback module during high load due to incorrect use of asynchronous timer cancel.- Update to 21.3.7: - Changes for 21.3.7: * http://erlang.org/download/OTP-21.3.7.README * ssh: When an SSH server receives the very first message on a new TCP connection, and that message is not the expected one, the 64 first bytes of the received message are now dumped in the INFO REPORT that reports the Protocol Error. This facilitates the debugging of who sends the bad message or of detecting a possible port scanning- Update to 21.3.6: - Changes for 21.3.6: * http://erlang.org/download/OTP-21.3.6.README * ssl: With the default BEAST Mitigation strategy for TLS 1.0 an empty TLS fragment could be sent after a one-byte fragment. This glitch has been fixed.- Update to 21.3.5: - Changes for 21.3.5: * http://erlang.org/download/OTP-21.3.5.README * diameter: Fix inadvertently broad monitor that resulted in gen_server cast messages to hidden nodes from module diameter_dist. * erts: Add missing documentation of new external tags NEW_PID, NEW_PORT and NEWER_REFERENCE introduced in OTP 19. These new tags are planned to be "activated" in OTP 23 when distribution capability flag DFLAG_BIG_CREATION becomes mandatory. Older nodes (>= 19) are able to decode these new tags and send them back to the new node. Nodes older than OTP 23 will however never encode their own local pids, ports and references using the new tags. * inets: Fix the internal handling of the option erl_script_timeout in httpd. If explicit erl_script_timeout value was supplied in seconds it was not correctly converted to millisecond units for internal usage. This change fixes the handling of erl_script_timeout in all possible configuration scenarios.- Update to 21.3.4: - Changes for 21.3.4: * http://erlang.org/download/OTP-21.3.4.README * crypto: Fixed build link error on Windows. Unresolved symbol 'bcmp'. * erl_interface: Fix handling of Makefile dependencies so that parallel make works properly. * erts: Fix erlang:open_port/2 with the fd option to correctly cleanup the pollset when the port is closed. Before this fix there would be error printouts sent to logger when the same fd was reused in a new port. * ssh: The callback ssh_channel:init/1 was missing in OTP-21 * ssh: If a client was connected to an server on an already open socket, the callback fun(PeerName,FingerPrint) in the accept_callback option passed the local name in the argument PeerName instead of the remote name. * common_test: OTP internal test improvements.- Update to 21.3.3: - Changes for 21.3.3: * http://erlang.org/download/OTP-21.3.3.README * erts: Fixed a bug in seq_trace:reset_trace/0 that could crash the emulator. * erts: Fixed bug in process_info(reductions) causing it to sometimes return invalid results. * kernel/stdlib: Fixed a performance regression when reading files opened with the compressed flag.- Update to 21.3.2: - Changes for 21.3.2: * http://erlang.org/download/OTP-21.3.2.README * erts: If a suspend/resume signal pair was sent to a process while it was executing dirty, the receiving process could later end up in a suspended state indefinitely. This bug was introduced in ERTS version 10.0 (OTP 21.0). * etrs: Fix a possible deadlock when terminating the ERTS caused by a dirty scheduler not releasing it's run-queue lock when terminating. * xmerl: Handling of character references in attributes are fixed. * xmerl: Normalization of whitespace characters in attributes are fixed so it works when character references are used.- Update to 21.3.1: - Changes for 21.3.1: * http://erlang.org/download/OTP-21.3.1.README * erl_interface: Fixed two bugs in the erl_call program. A missing initialization (introduced in erl_interface-3.11) which either caused a crash or failure to connect to or start a node, and an incorrectly calculated timeout which could cause failure to start an erlang node. These bugs only caused failures on some platforms. * ssl: The timeout for a passive receive was sometimes not cancelled and later caused a server crash. This bug has now been corrected. * ssl: Add tag for passive message (active N) in cb_info to retain transport transparency. - Update to 21.3: - Changes for 21.3: * http://erlang.org/download/OTP-21.3.README * Erlang/OTP 21.3 is the third service release for the 21st major release with improvements, as well as a few features * Highlights * Kernel: The standard logger handler, logger_std_h, now has a new internal feature for log rotation. For full information see the documentation. * SSL:The Reason part of the error return from the functions connect and handshake has a better and documented format. This is a potential incompatibility. See the documentation. Refactoring of state handling has improved the TLS application data throughput and reduced CPU overhead Code optimizations has reduced CPU load for encryption/decryption, especially for Erlang's distribution protocol over TLS Now supports active N * Erl_interface: Support for plugin of a user supplied socket implementation has been added. * OTP:The HTML reference documentation now shows the OTP version where modules and functions were first introduced. Versions of OTP older than R13B04 is not shown in the reference documentation * For a full list of details see: http://erlang.org/download/otp_src_21.3.readme - Update to 21.2.7: - Changes for 21.2.7: * http://erlang.org/download/OTP-21.2.7.README * erts, otp: Fixes of install/release phase in build system. - - The source tree was modified when installing/releasing and/or applying a patch. - - Some files were installed with wrong access rights. - - If applying a patch (using otp_patch_apply) as another user (except root) than the user that built the source, the documentation was not properly updated. * erts, kernel: Setting the recbuf size of an inet socket the buffer is also automatically increased. Fix a bug where the auto adjustment of inet buffer size would be triggered even if an explicit inet buffer size had already been set. * erts: Reading from UDP using active true or active N mode has been optimized when more packets than specified by read_packets are available on the socket. * erts, kernel: Setting the recbuf size of an inet socket the buffer is also automatically increased. Fix a bug where the auto adjustment of inet buffer size would be triggered even if an explicit inet buffer size had already been set.- Update to 21.2.6: - Changes for 21.2.6: * http://erlang.org/download/OTP-21.2.6.README * erts: When using the {linger,{true,T}} option; gen_tcp:listen/2 used the full linger time before returning for example eaddrinuse. This bug has now been corrected. * stdlib: Optimize pretty printing of terms. The slower behaviour was introduced in Erlang/OTP 20.- Drop unsupported openSUSE versions- Update to 21.2.5: - Changes for 21.2.5: * http://erlang.org/download/OTP-21.2.5.README * inets: Fixed bug that causes a crash in http client when using hostnames (e.g. localhost) with the the option ipv6_host_with_brackets set to true. This change also fixes a regression: httpc:request fails with connection error (nxdomain) if option ipv6_host_with_brackets set to true and host component of the URI is an IPv6 address.- update to 21.2.4: - Changes for 21.2.4: * http://erlang.org/download/OTP-21.2.4.README * erts: Fix bug where doing a gen_tcp:send on a socket with delay_send set to true could cause a segfault if the other side closes the connection. Bug was introduced in erts-10.2 (OTP-21.2). * erts: Fix a race condition when a port program closes that could result in the next started port to hang during startup. Bug was introduced in erts-10.0 (OTP-21.0). * erts: Fix a bug where polling for external events could be delayed for a very long time if all active schedulers were 100% loaded. Bug was introduced in erts-10.2 (OTP-21.2). * inets: Make sure ipv6 addresses with brackets in URIs are converted correctly before passing to lower level functions like gen_tcp and ssl functions. Could cause connection to fail. - update to 21.2.3: - Changes for 21.2.3: * http://erlang.org/download/OTP-21.2.3.README * compiler: An optimization that avoided allocation of a stack frame for some case expressions was introduced in OTP 21. (ERL-504/OTP-14808) It turns out that in rare circumstances, this optimization is not safe. Therefore, this optimization has been disabled. * erts: Fixed a crash when dangling files were closed after init:restart/0. * erts: A bug that could cause dirty schedulers to become unresponsive has been fixed. * ssl: Fix encoding of the SRP extension length field in ssl. The old encoding of the SRP extension length could cause interoperability problems with third party SSL implementations when SRP was used. * ssl: Guarantee active once data delivery, handling TCP stream properly. Correct gen_statem returns for some error cases * xmerl: The charset detection parsing crash in some cases when the XML directive is not syntactic correct.- update to 21.2.2: - Changes for 21.2.2: * http://erlang.org/download/OTP-21.2.2.README * ssh: Fixed port leakage if a ssh:daemon call failed. - update to 21.2.1: - Changes for 21.2.1: * http://erlang.org/download/OTP-21.2.1.README * erts: Fixed bug on big endian architectures when changing file permissions or ownership with file:change_mode, change_owner, change_group or write_file_info. Bug exists since OTP-21.0. * erts: Fixed bug in operator band of two negative operands causing erroneous result if the absolute value of one of the operands have the lowest N*W bits as zero and the other absolute value is not larger than N*W bits. N is an integer of 1 or larger and W is 32 or 64 depending on word size. * ssl: Fixed renegotiation bug. Client did not handle server initiated renegotiation correctly after rewrite to two connection processes, due to ERL-622 commit d87ac1c55188f5ba5cdf72384125d94d42118c18. This could manifest it self as a " bad_record_mac" alert. Also included are some optimizations - update to 21.2: - Changes for 21.2: * http://erlang.org/download/OTP-21.2.README * HIGHLIGHTS * erts, sasl: New counters and atomics modules supplies access to highly efficient operations on mutable fixed word sized variables. * erts: There is a new module persistent_term that implements a term storage suitable for terms that are frequently used but never or infrequently updated. Lookups are done in constant time without copying the terms. * ssh: Requires OpenSSL 1.1.1 or higher as cryptolib under the OTP application crypto. * ssl: *** POTENTIAL INCOMPATIBILITY *** ssl now uses active n internally to boost performance. Old active once behavior can be restored by setting application variable see manual page for ssl application (man 6). * erts: Add a new pollset that is made to handle sockets that use {active, true} or {active, N}. The new pollset will not be polled by a pollthread, but instead polled by a normal scheduler. This change was made because of the overhead associated with constantly having to re-apply the ONESHOT mechanism on fds that all input events were interesting. The new pollset is only active on platforms that support concurrent kernel poll updates, i.e. Linux and BSD. * POTENTIAL INCOMPATIBILITIES: kernel: A new function, logger:update_handler_config/3 is added, and the handler callback changing_config now has a new argument, SetOrUpdate, which indicates if the configuration change comes from set_handler_config/2,3 or update_handler_config/2,3. This allows the handler to consistently merge the new configuration with the old (if the change comes from update_handler_config/2,3) or with the default (if the change comes from set_handler_config/2,3). The built-in handlers logger_std_h and logger_disk_log_h are updated accordingly. A bug which could cause inconsistency between the handlers' internal state and the stored configuration is also corrected. * ssl: ssl now uses active n internally to boost performance. Old active once behavior can be restored by setting application variable see manual page for ssl application (man 6). * full relase notes here: http://erlang.org/download/OTP-21.2.README- Drop crypto.patch: isn't required anymore Reported by Gabriele Santomaggio- update to 21.1.4: - Changes for 21.1.4: * http://erlang.org/download/OTP-21.1.4.README * kernel: Fix bug causing net_kernel process crash on connection attempt from node with name identical to local node. - update to 21.1.3: - Changes for 21.1.3: * http://erlang.org/download/OTP-21.1.3.README * erts: Added an optional ./configure flag to compile the emulator with spectre mitigation: - -with-spectre-mitigation Note that this requires a recent version of GCC with support for spectre mitigation and the - -mindirect-branch=thunk flag, such as 8.1.- Pack /etc/init.d/epmd only for systemd-less cases (boo#1116009)- update to 21.1.2: - Changes for 21.1.2: * http://erlang.org/download/OTP-21.1.2.README * compiler: Fixed a bug where incorrect code was generated following a binary match guard. * erts: Fixed a rare bug where files could be closed on a normal instead of an IO scheduler, resulting in system instability if the operation blocked. * public_key: Add DSA SHA2 oids in public_keys ASN1-spec and public_key:pkix_sign_types/1- Fix instructions for changing address for epmd.socket service. The ListenStream option needs to be completely overriden otherwise the socket will be started with multiple ListenStream options and it will fail.- update to 21.1.1: - Changes for 21.1.1: - http://erlang.org/download/OTP-21.1.1.README * erts: Fixed a memory leak on errors when reading files. * ssl: From ssl-9.0.2. CLOSE ALERTS could under some circumstances be encoded using an incorrect cipher state. This would cause the peer to regard them as unknown messages. * ssl: Correct handling of socket packet option with new TLS sender process, from ssl-9.0.2. When changing the socket option {packet, 1|2|3|4} with ssl:setopts/2 the option must internally be propagated to the sender process as well as the reader process as this particular option also affects the data to be sent. * eldap: A race condition at close could cause the eldap client to exit with a badarg message as cause. - Changes for 21.1: - http://erlang.org/download/OTP-21.1.README * ssh: The key exchange methods 'curve25519-sha256@libssh.org', 'curve25519-sha256' and 'curve448-sha512' are implemented. The last two are defined in https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves They all depends on that OpenSSL 1.1.1 or higher is used as cryptolib. * crypto: The typing in the CRYPTO and PUBLIC_KEY applications are reworked and a few mistakes are corrected. The documentation is now generated from the typing and some clarifications are made. A new chapter on Algorithm Details such as key sizes and availability is added to the CRYPTO User's Guide. * erts: The socket options recvtos, recvttl, recvtclass and pktoptions have been implemented in the socket modules. See the documentation for the gen_tcp, gen_udp and inet modules. Note that support for these in the runtime system is platform dependent. Especially for pktoptions which is very Linux specific and obsoleted by the RFCs that defined it. * ssh: The cipher 'chacha20-poly1305@openssh.com' is now supported if OpenSSL 1.1.1 or higher is used as cryptolib. - Changes for 21.0.9: - http://erlang.org/download/OTP-21.0.9.README * compiler: Fix a regression in OTP-15204 that removed .beam file metadata that some external build tools relied on. * erts: As of ERTS version 10.0 (OTP 21.0) the erl_child_setup program, which creates port programs, ignores TERM signals. This setting was unintentionally inherited by port programs. Handling of TERM signals in port programs has now been restored to the default behavior. That is, terminate the process. * erts: The fix made for OTP-15279 in erts-10.07 (OTP-21.0.8) was not complete. It could cause a new connection attempt to be incorrectly aborted in certain cases. This fix will amend that flaw. - Changes for 21.0.8: - http://erlang.org/download/OTP-21.0.8. * erts: A process could get stuck in an infinite rescheduling loop between normal and dirty schedulers. This bug was introduced in ERTS version 10.0. * erts: Garbage collection of a distribution entry could cause an emulator crash if net_kernel had not brought previous connection attempts on it down properly. * kernel: Fixed bug in net_kernel that could cause an emulator crash if certain connection attempts failed. Bug exists since kernel-6.0 (OTP-21.0). - Changes for 21.0.7: - http://erlang.org/download/OTP-21.0.7. * erts: A race between termination of a process and resume of the same process via erlang:resume_process/1 could cause the VM to crash. This bug was introduced in erts version 10.0 (OTP 21.0). * erts: When tracing on running, in trace events could be lost when a process was rescheduled between a dirty and a normal scheduler. - Changes for 21.0.6: - http://erlang.org/download/OTP-21.0.6.README * crypto: Update the crypto engine functions to handle multiple loads of an engine. * inets: Change status code for no mod found to handle request to 501 * ssl: Correct cipher suite handling for ECDHE_*, the incorrect handling could cause an incorrrect suite to be selected and most likly fail the handshake. - Changes for 21.0.5: - http://erlang.org/download/OTP-21.0.5.README * POTENTIAL INCOMPATIBILITIES erts: Fixed a bug causing some Erlang references to be inconsistently ordered. This could for example cause failure to look up certain elements with references as keys in search data structures. This bug was introduced in R13B02. * compiler: Fixed an issue where files compiled with the +deterministic option differed if they were compiled in a different directory but were otherwise identical. * crypto: Fixed a node crash in crypto:compute_key(ecdh, ...) when passing a wrongly typed Others argument. * erts: Fixed a bug which caused an emulator crash when enif_send() was called by a NIF that executed on a dirty scheduler. The bug was either triggered when the NIF called enif_send() without a message environment, or when the process executing the NIF was send traced. - Changes for 21.0.4: - http://erlang.org/download/OTP-21.0.4.README * erts: Fixed a crash when matching directly against a literal map using a single key that had been saved on the stack. * erts: Fix node crash when passing a bad time option to file:read_file_info/2. - Changes for 21.0.3: - http://erlang.org/download/OTP-21.0.3.README * otp: Build support for the erlang/corba repository. * erts: Fixed a scheduler bug that caused normal schedulers to run dirty code. * erts: Fixed a bug in erlang:trace_info/2 which caused the emulator to crash when a bad argument was passed. The bug was introduced in ERTS version 10.0. - Changes for 21.0.2: - http://erlang.org/download/OTP-21.0.2.README * compiler: In rare cases involving matching of binary literal strings, the compiler could optimize away code that should be executed. * compiler:There could be an internal consistency check failure when compiling code that called map_get(Key, Map) and then updated the same map. * compiler: In rare circumstances, the compiler could crash in beam_jump when compiling a floating point operation. * erts: Fixed a rare bug that could cause processes to be scheduled after they had been freed * erts: Fixed a race condition in the inet driver that could cause receive to hang when the emulator was compiled with gcc 8. * public_key: Fix some of the keylengths in the newly generated moduli file in public_key are not universally supported. This could cause the SSH key exchange diffie-hellman-group-exchange-sha* to fail. Those keylengths are now removed. * stdlib: Fix a bug that could cause a crash when formatting a list of non-characters using the control sequences p or P and limiting the output with the option chars_limit. - Changes for 21.0.1: - http://erlang.org/download/OTP-21.0.1. * compiler:The compiler could crash when compiling a complicated function that used the binary syntax. - Changes for 21.0: - http://erlang.org/download/otp_src_21.0.readme * Erlang/OTP 21 is a new major release with new features, improvements as well as incompatibilities. * Potential Incompatibilities: - All Corba applications are now moved from the OTP repository - A new Corba repository will be created https://github.com/erlang - New applications ftp and tftp, moved from inets - ssl no longer supports 3_DES cipher suites or RSA-key exchange cipher suites by default - Erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception. Instead a monitor will be created, but it will only supervise the connection to the node. * Highlights: * Erts: - Enhanced IO scalability - Support for usage of distribution controller processes for alternative transports, routing etc - compact instructions on 64bit systems for code below 4GB 20% less memory for loaded code - Rewrite of the efile-driver with NIFs and "Dirty schedulers" resulting in faster file operations non-smp VM removed - link and monitor optimized for scalability- update to 20.3.8.9: - Changes for 20.3.8.9: - http://erlang.org/download/OTP-20.3.8.9.README * Fix a regression in OTP-15204 that removed .beam file metadata - Changes for 20.3.8.8: - http://erlang.org/download/OTP-20.3.8.8.README * inets: Do not use chunked-encoding with 1xx, 204 and 304 responses when using mod_esi * inets: Add robust handling of chunked-encoded HTTP responses with an empty body (1xx, 204, 304) - Changes for 20.3.8.7: - http://erlang.org/download/OTP-20.3.8.7.README * crypto: Update the crypto engine functions to handle multiple loads of an engine * mnesia: Fixed a bug where the bag table index data was not deleted when objects were deleted.- Update to 20.3.8.6: * inets: Change status code for no mod found to handle request to 501- Update to 20.3.8.5. - Changes for 20.3.8.5: * erts: Fixed a bug causing some Erlang references to be inconsistently ordered. This could for example cause failure to look up certain elements with references as keys in search data structures. This bug was introduced in R13B02. Thanks to Simon Cornish for finding the bug and supplying a fix. * compiler: Fixed an issue where files compiled with the +deterministic option differed if they were compiled in a different directory but were otherwise identical. * crypto: Fixed a node crash in crypto:compute_key(ecdh, ...) when passing a wrongly typed Others argument. * erts: Fixed a bug which caused an emulator crash when enif_send() was called by a NIF that executed on a dirty scheduler. The bug was either triggered when the NIF called enif_send() without a message environment, or when the process executing the NIF was send traced. * erts: Fixed a bug causing some Erlang references to be inconsistently ordered. This could for example cause failure to look up certain elements with references as keys in search data structures. This bug was introduced in R13B02. Thanks to Simon Cornish for finding the bug and supplying a fix. * mnesia: When master node is set do not force a load from ram_copies replica when there are no available disc_copies, since that would load an empty table. Wait until a disk replica is available or until user explicitly force_loads the table. * mnesia: Allow to add replicas even if all other replicas are down when the other replicase are not stored on disk. * ssl: Correct handling of empty server SNI extension * ssl: Correct cipher suite handling for ECDHE_*, the incorrect handling could cause an incorrrect suite to be selected and most likly fail the handshake. - Changes for 20.3.8.4: * asn1: A bug in ASN.1 BER decoding has been fixed. When decoding a recursively enclosed term the length was not propagated to that term decoding, so if the length of the enclosed term was longer than the enclosing that error was not dectected. A hard coded C stack limitation for decoding recursive ASN.1 terms has been introduced. This is currently set to 8 kWords giving a nesting depth of about 1000 levels. Deeper terms can not be decoded, which should not be much of a real world limitation. - Changes for 20.3.8.3: * erts: Fixed a race condition in the inet driver that could cause receive to hang when the emulator was compiled with gcc8. * erts: Fix bug in generation of erl_crash.dump, which could cause VM to crash. Bug exist since erts-9.2 (OTP-20.2). * ic: Fixed potential buffer overflow bugs in oe_ei_encode_long/ulong/longlong/ulonglong functions on 64-bit architectures. These functions expect 32 bit integers as the IDL type "long" is defined as 32 bits. But there is nothing preventing user code from "breaking" the interface and pass larger values on 64-bit architectures where the C type "long" is 64 bits. * inets: Enhance error handling, that is mod_get will return 403 if a path is a directory and not a file. * kernel: Non semantic change in dist_util.erl to silence dialyzer warning. * ssl: Improve cipher suite handling correcting ECC and TLS-1.2 requierments. Backport of solution for ERL-641 * ssl: Option keyfile defaults to certfile and should be trumped with key. This failed for engine keys. - Changes for 20.3.8.2: * erl_interface: Make ei_connect and friends also accept state ok_simultaneous during handshake, which means the other node has initiated a connection setup that will be cancelled in favor of this connection. * erts: Fixed a rare bug that could cause processes to be scheduled after they had been freed. * ic: Fixed bug in ic causing potential buffer overrun in funtion oe_ei_encode_atom. Bug exists since ic-4.4.4 (OTP-20.3.4). * kernel: Fix some potential buggy behavior in how ticks are sent on inter node distribution connections. Tick is now sent to c-node even if there are unsent buffered data, as c-nodes need ticks in order to send reply ticks. The amount of sent data was also calculated wrongly when ticks were suppressed due to unsent buffered data. - Changes for 20.3.8.1: * inets: Options added for setting low-level properties on the underlying TCP connections. The options are: sock_ctrl, sock_data_act and sock_data_pass. See the manual for details. * ssh: SFTP clients reported the error reason "" if a non-OTP sftp server was killed during a long file transmission. Now the signal name (for example "KILL") will be the error reason if the server's reason is empty. The documentation also lacked type information about this class of errors. * ssh: Fix ssh_sftp decode error for sftp protocol version 4 * syntax_tools: Fix a bug regarding reverting map types. - Changes for 20.3.8: * erts: Fixed bug in ets that could cause VM crash if process A terminates after fixating a table and process B deletes the table at "the same time". The table fixation could be done with ets:safe_fixtable or if process A terminates in the middle of a long running select or match call. * snmp: The Snmp MIB compiler now allows using a TEXTUAL-CONVENTION type before defining it. - Changes for 20.3.7: * erl_docgen: Update makefile so db_funcs.xsl is a part of the installed application. * erts: Fixed bug in enif_binary_to_term which could cause memory corruption for immediate terms (atoms, small integers, pids, ports, empty lists). * erts: Fixed bug in erlang:system_profile/2 that could cause superfluous {profile,_,active,_,_} messages for terminating processes. * inets: The option max_headers operated on the individual header length instead of the total length of all headers. Also headers with empty keys are now discarded. - Changes for 20.3.6: * crypto: If OPENSSL_NO_EC was set, the compilation of the crypto nifs failed. * crypto: C-compile errors for LibreSSL 2.7.0 - 2.7.2 fixed * ssh: Host key hash erroneously calculated for clients following draft-00 of RFC 4419, for example PuTTY * ssh: Renegotiation could fail in some states - Changes for 20.3.5: * erts: Fixed a crash in heart:get_cmd/0 when the stored command was too long. * ssl: Proper handling of clients that choose to send an empty answer to a certificate request. - Changes for 20.3.4: * erl_interface: Fix bug in ei_connect functions that may cause failure due to insufficient buffer space for gethostbyname_r. * erl_interface, ic: Optimize encoding/decoding for pure 7-bit ascii atoms. * inets: Fix broken options handling in httpc (ERL-441). * ssh: An ssh_sftp server (running version 6) could fail if it is told to remove a file which in fact is a directory. * ssh: Fix rare spurios shutdowns of ssh servers when receiveing {'EXIT',_,normal} messages. - Changes for 20.3.3: * sasl: When upgrading with instruction 'restart_new_emulator', the generated temporary boot file used 'kernelProcess' statements from the old release instead of the new release. This is now corrected.- Update to 20.3.2 * ssl: Added new API functions to facilitate cipher suite handling * erts, observer: More crash dump info such as: process binary virtual heap stats, full info for process causing out-of-mem during GC, more port related info, and dirty scheduler info. * inets: Add support for unix domain sockets in the http client.- Update to 20.2.2. - Changes for 20.2.2: * mnesia: Removed a quadratic behavior in startup. This change implies that backend plugins (if used) must be set when the schema is created or via configuration parameters before mnesia is started. * mnesia: Bad timing could crash mnesia after a checkpoint was deactivated and reactivated with the same checkpoint name on different tables. - Changes for 20.2.1: * ssh: Fix problem with OpenSSH 7.2 (and later) clients that has used sha1 instead of sha2 for rsa-sha-256/512 user's public keys. - Highlighted changes for 20.2: * crypto, ssl: The crypto API is extended to use private/public keys stored in an Engine for sign/verify or encrypt/decrypt operations. The ssl application provides an API to use this new engine concept in TLS. * ssh: SSH can now fetch the host key from the private keys stored in an Engine. See the crypto application for details about Engines. * ssl: A new command line option -ssl_dist_optfile has been added to facilitate specifying the many options needed when using SSL as the distribution protocol. * stdlib: Improve performance of the new string functionality when handling ASCII characters.- Update to 20.1.5: * erts: Fixed a regression in zlib:gunzip/1 that prevented it from working when the decompressed size was a perfect multiple of 16384. This regression was introduced in 20.1.1 * erts: Fixed a memory corruption bug in enif_inspect_iovec; writable binaries stayed writable after entering the iovec. * erts: Fixed a crash in enif_inspect_iovec on encountering empty binaries. * erts: zlib:deflateParams/3 will no longer return buf_error when called after zlib:deflate/2 with zlib 1.2.11. * inets: Correct the handling of location headers so that the status code is not hard coded. This should have been fixed by commit 2cc5ba70cbbc6b3ace81a2a0324417c3b65265bb but unfortunately was broken during a code refactoring and unnoticed due to a faulty placed test case. - Update to 20.1.4: * inets: Fix broken handling of POST requests * inets: Make sure ints:stop/2 of the service httpd is synchronous * inets: Honor status code returned by ESI script and modernize "location" header handling. - Update to 20.1.3: * diameter: A fault introduced in diameter 2.1 could cause decode errors to be ignored in AVPs following the header of aGrouped AVP. * erts: Added zlib:set_controlling_process/2 to move a zstream() between processes. * erts: Fix so that schedulers are bound correctly when the first available cpu is not the first detected cpu. e.g. when using "taskset -c X..Y" when X is not equal to 0. * snmp: The recbuf configuration option was not propagated correctly to the socket for the SNMP Manager.- Replace references to /var/adm/fillup-templates with new %_fillupdir macro (boo#1069468)- Update to 21.1.2: * diameter: An inadvertently removed monitor in diameter 2.1 caused the ets table diameter_reg to leak entries, and caused service restart and more to fail. * erts: Fixed bug that could cause a VM crash when a corrupt message is received on distribution channel from other node. - Update to 20.1.1: * compiler: The compiler could issue an incorrect internal consistency failure diagnostic for some complicated bit syntax maches. * erts: The new zlib module returned a data_error when inflating concatenated streams, which was incompatible with the old module's behavior of returning the uncompressed data up to the end of the first stream. * erts: zlib:gunzip/1 will no longer stop at the end of the first stream when decompressing concatenated gzip files. * ssh: Fixed broken printout * ssh: Disable aes_gcm ciphers if peer is OpenSSH 6.2 which is known to have trouble with them in some cases. - Update to 20.1: * crypto, public_key: Extend crypto and public_key functions sign and verify with: support for RSASSA-PS padding for signatures and for saltlength setting X9.31 RSA padding. sha, sha224, sha256, sha384, and sha512 for dss signatures as mentioned in NIST SP 800-57 Part 1. ripemd160 to be used for rsa signatures. A new tuple in crypto:supports/0 reports supported MAC algorithms. * diameter: Add service option decode_format to allow incoming messages to be decoded into maps instead of records. Decode performance has been improved. Add service/transport option avp_dictionaries to give better support for dictionaries only defining AVPs. * erts: Upgraded the ERTS internal PCRE library from version 8.40 to version 8.41. * erts, kernel, tools: Profiling with lock counting can now be fully toggled at runtime in the lock counting emulator (-emu_type lcnt). Everything is enabled by default to match the old behavior, but specific categories can be toggled at will with minimal runtime overhead when disabled. Refer to the documentation on lcnt:rt_mask/1 for details. * lcnt:collect and lcnt:clear will no longer block all other threads in the runtime system. This makes it possible to run the lock counting under heavier load. * erts: The zlib module has been refactored and all its operations will now yield appropriately, allowing them to be used freely in concurrent applications. * erts, tools: Add erlang:iolist_to_iovec/1, which converts an iolist() to an erlang:iovec(), which is suitable for use with enif_inspect_iovec(). * erts: Add new nif API functions for managing an I/O Queue. The added functions are: enif_ioq_create(), enif_ioq_destroy(), enif_ioq_enq_binary(), enif_ioq_enqv(), enif_ioq_deq(), enif_ioq_peek(), enif_inspect_iovec(), enif_free_iovec() * observer/crashdump_viewer: Reading of crash dumps with many binaries is optimized. A progress bar is shown when the detail view for a process is opened. The cdv script now sets ERL_CRASH_DUMP_SECONDS=0 to avoid generating a new crash dump from the node running the Crashdump Viewer. * observer: Add system statistics and limits to frontpage in observer. * public_key, ssl**: Improved error propagation and reports * ssh: A new option modify_algorithms is implemented. It enables specifying changes on the default algorithms list. See the reference manual and the SSH User's Guide chapter "Configuring algorithms in SSH". * tools/xref: The predefined Xref analysis locals_not_used now understands the -on_load() attribute and does not report unused functions. * tools/fprof: When sampling multiple processes and analyzing with totals set to true, the output now sums together all caller and callee entries which concerns the same function. Previous behaviour was to report each contributing entry separately.- Only Java 1.6 is supported by Erlang since 18.0 release- Update to 20.0.5: * erts: Fixed bug in binary_to_term and binary_to_atom that could cause VM crash. Typically happens when the last character of an UTF8 string is in the range 128 to 255, but truncated to only one byte. Bug exists in binary_to_term since ERTS version 5.10.2 (OTP_R16B01) and binary_to_atom since ERTS version 9.0 (OTP-20.0). * inets: http_uri aligned to follow RFC 3986 and not convert "+" to space when decoding URIs. * inets: Added new option max_client_body_chunk to httpd server to allow chunked delivery of PUT and POST data to mod_esi callback. Note, new mod_esi callback implementation is required. Also correct value provided by server_name environment variable.- Update to 20.0.4: * dializer: Fix a bug where merging PLT:s could lose info. The bug was introduced in Erlang/OTP 20.0. * erts: A timer internal bit-field used for storing scheduler id was too small. As a result, VM internal timer data structures could become inconsistent when using 1024 schedulers on the system. Note that systems with less than 1024 schedulers are not effected by this bug. This bug was introduced in ERTS version 7.0 (OTP 18.0). * erts: Automatic cleanup of a BIF timer, when the owner process terminated, could race with the timeout of the timer. This could cause the VM internal data structures to become inconsistent which very likely caused a VM crash. This bug was introduced in ERTS version 9.0 (OTP 20.0). - Update to 20.0.3: * asn1: Default values now work in extension for PER, so if you give the atom asn1_DEFAULT instead of a value it will become the default value. * compiler: Fail labels on guard BIFs weren't taken into account during an optimization pass, and a bug in the validation pass sometimes prevented this from being noticed when a fault occurred. * erts: Binary append operations did not check for overflow, resulting in nonsensical results when huge binaries were appended. * ssh: All unknown options are sent to the transport handler regardless of type.- Update to 20.0.2: * asn: Fixed compilation error of generated code caused by a missing quotation of function names as part of an external call for encoding. * erts: Added missing release notes for OTP-14491 ("performance bug in pre-allocators") which was included in erts-9.0.1 (OTP-20.0.1). * erts: Fixed a bug that prevented TCP sockets from being closed properly on send timeouts. * erts: Fixed bug in operator bxor causing erroneuos result when one operand is a big *negative* integer with the lowest N*W bits as zero and the other operand not larger than N*W bits. N is an integer of 1 or larger and W is 32 or 64 depending on word size. * kernel: The documentation for the 'quiet' option in disk_log:open/1 had an incorrect default value.- erlang-gs application has been depricated- Update to 20.0.1: * erts: Fixed a bug in gen_tcp:send where it never returned when repeatedly called on a remotely closed TCP socket. * erts: Fixed segfault that could happen during cleanup of aborted erlang:port_command/3 calls. A port_command is aborted if the port is closed at the same time as the port_command was issued. This bug was introduced in erts-8.0. * erts: Fixed implementation of statistics(wall_clock) and statistics(runtime) so that values do not unnecessarily wrap due to the emulator. Note that the values returned by statistics(runtime) may still wrap due to limitations in the underlying functionality provided by the operating system. * erts: Fix performance bug in pre-allocators that could cause them to permanently fall back on normal more expensive memory allocation. Pre-allocators are used for quick allocation of short lived meta data used by messages and other scheduled tasks. Bug exists since OTP_R15B02. * runtime_tools: A faulty encoding comment was added when saving trace patterns to file. This is now corrected. * stdlib: A bug in proc_lib:format() introduced in Erlang/OTP 20.0 is corrected. * stdlib: Fix string:len/1 to be compatible with previous versions. * stdlib: In OTP-20.0, the behavior of c, make, and ct_make was changed so that in some cases the beam files by default would be written to the directory where the source files were found. This is now changed back to the old behavior so beam files are by default written to current directory. - Update to 20.0.0: * Potential Incompatibilities * ERTS: * The non SMP Erlang VM is deprecated and not built by default * Remove deprecated erlang:hash/2 * erlang:statistics/1 with scheduler_wall_time now also includes info about dirty CPU schedulers. * The new purge strategy introduced in OTP 19.1 is mandatory and slightly incompatible for processes holding funs * see erlang:check_process_code/3. * The NIF library reload is not supported anymore. * Atoms can now contain arbitrary unicode characters which means that the DFLAG_UTF8_ATOMS capability in the distribution protocol must be supported if an OTP 20 node should accept the connection with another node or library. Third party libraries which uses the distribution protocol need to be updated with this. * Asn1: Deprecated module and functions removed (asn1rt, asn1ct:encode/3 and decode/3) * Ssh: client only option in a call to start a daemon will now fail * Highlights * Erts: * Dirty schedulers enabled and supported on VM with SMP support. * support for “dirty” BIFs and “dirty” GC. * erlang:garbage_collect/2 for control of minor or major GC * Erlang literals are no longer copied when sending messages. * Improved performance for large ETS tables, >256 entries (except ordered_set) * erlang:system_info/1 atom_count and atom_limit * Reduced memory pressure by converting sub-binaries to heap-binaries during GC * enif_select, map an external event to message * Improvements of timers internally in the VM resulting in reduced memory consumption and more efficient administration for timers * Compiler: * Code generation for complicated guards is improved. * Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2, 'a'=>3} will warn for the repeated key a. * By default there is now a warning when export_all is used. Can be disabled * Pattern matching for maps is optimized * New option deterministic to omit path to source + options info the BEAM file. * Atoms may now contain arbitrary unicode characters. * compile:file/2 has an option to include extra chunks in the BEAM file. * Misc other applications: * Significantly updated string module with unicode support and many new functions * crypto now supports OpenSSL 1.1 * Unnamed ets tables optimized * gen_fsm is deprecated and replaced by gen_statem * A new event manager to handle a subset of OS signals in Erlang * Optimized sets add_element, del_element and union * Added rand:jump/0-1 * When a gen_server crashes, the stacktrace for the client will be printed to facilitate debugging. * take/2 has been added to dict, orddict, and gb_trees. * take_any/2 has been added to gb_trees * erl_tar support for long path names and new file formats * asn1: the new maps option changes the representation of SEQUENCE to be maps instead of records * A TLS client will by default call public_key:pkix_verify_hostname/2 to verify the hostname * ssl: DTLS documented in the API, experimental * ssh: improving security, removing and adding algorithms * New math:fmod/2- Disable global PIE for erlang, code is currently not fully ready.- Update to 19.3.2: * erts: The +Bi command line argument of erl erroneously caused SIGTERM to be ignored by the VM as well as of all its child processes. This bug was introduced in erts version 8.3.- Update to 19.3.1: * crypto: Fix a bug with AES CFB 128 for 192 and 256 bit keys. Thanks to kellymclaughlin ! * erts: Trying to open a directory with file:read_file/1 on Unix leaked a file descriptor. This bug has now been fixed. * erts: Invoking init:stop/0 via the SIGTERM signal, in a non-SMP BEAM, could cause BEAM to terminate with fatal error. This has now been fixed and the BEAM will terminate normally when SIGTERM is received. * inets: Fixed a bug in ftp that made further operations after a recv_chunk operation impossible. * ssh: ssh:daemon_info/1 crashed if the listening IP was not 'any' * ssl: Correct active once emulation, for TLS. Now all data received by the connection process will be delivered through active once, even when the active once arrives after that the gen_tcp socket is closed by the peer.- Changes since 19.2: * crypto, ssh: The implementation of the key exchange algorithms diffie-hellman-group-exchange-sha* are optimized, up to a factor of 11 for the slowest ( = biggest and safest) group size. * dialyzer: The peak memory consumption is reduced. Analyzing modules with binary construction with huge strings is now much faster. * erts: A received SIGTERM signal to beam will generate a 'stop' message to the init process and terminate the Erlang VM nicely. This is equivalent to calling init:stop/0. * kernel: The functions in the file module that take a list of paths (e.g. file:path_consult/2) will now continue to search in the path if the path contains something that is not a directory. * kernel: Two OTP processes that are known to receive many messages are rex (used by rpc) and error_logger. Those processes will now store unprocessed messages outside the process heap, which will potentially decrease the cost of garbage collections. * public_key: New function pkix_verify_hostname/2,3 implements certificate hostname checking. See the manual and RFC 6125.- * public_key, ssh: The ssh host key fingerprint generation now also takes a list of algorithms and returns a list of corresponding fingerprints. See public_key:ssh_hostkey_fingerprint/2 and the option silently_accept_hosts in ssh:connect. * ssl: Move PEM cache to a dedicated process, to avoid making the SSL manager process a bottleneck. This improves scalability of TLS connections. * stdlib: filename:safe_relative_path/1 to sanitize a relative path has been added.- Add missed scripts requires for erlang-epmd package- Update to 19.2.2: * mnesia: Fixed crash in checkpoint handling when table was deleted during backup.- Update to 19.2: * stdlib: The new behaviour gen_statem has been improved with 3 new features: the possibility to use old style non-proxy timeouts for gen_statem:call/2,3, state entry code, and state timeouts. These are backwards compatible. Minor code and documentation improvements has been performed including a borderline semantics correction of timeout zero handling. * ssl: Experimental version of DTLS. It is runnable but not complete and cannot be considered reliable for production usage. To use DTLS add the option {protocol, dtls} to ssl:connect and ssl:listen. * ssh: Extended the option silently_accept_hosts for ssh:connect to make it possible for the client to check the SSH host key fingerprint string. Se the reference manual for SSH. * ~40 contributions since the previous service release OTP 19.1- Update to 19.1: * erts: Improved dirty scheduler support. A purge of a module will not have to wait for completion of all ongoing dirty NIF calls * erts: Improved accuracy of timeouts on MacOS X * kernel: Add net_kernel:setopts/2 and net_kernel:getopts/2 to control options for distribution sockets in runtime * asn1: Compiling multiple ASN.1 modules in the same directory with parallel make (make -j) should now be safe * httpd: support for PUT and DELETE in mod_esi * ~30 contributions since 19.0- Update to 19.0.4: * erts: Fixed a race that could cause a lost wakeup of a process that timed out in a receive ... after. This bug was introduced in ERTS version 7.0. * erts: Fixed segfault after writing an erl crash dump.- Update to 19.0: * compiler, stdlib: New preprocessor macros *?FUNCTION_NAME, ?FUNCTION_ARITY*. New preprocessor directives -error(Term) and - warning(Term) to cause a compilation error or warning, respectively. * gen_statem: a new state machine behavior * mnesia_ext: plugin of external storage solutions to mnesia * crypto: uses EVP interface in OpenSSL resulting in generally better performance and support for HW acceleration * ssh: performance improvements, uses the new gen_statem behavior * ssl: enhanced error log messages * dialyzer: the support for maps is very much extended both the type specification syntax and the type analysis. * erts: erlang:open_port(spawn, ...) 3-5 times faster * erts/kernel: Experimental support for Unix Domain Sockets * ose: Deprecated application has been removed * webtool: Deprecated application has been removed * test_server: Deprecated application has been removed, use common_test instead- Do not suppress errors from useradd/groupadd - Orthographic/typographical fixes- Update to 18.3.4: * inets: Handle multiple \t in mime types file * ssl: Correct ssl:prf/5 to use the negotiated cipher suite's prf function in ssl:prf/5 instead of the default prf. * ssl: Timeouts may have the value 0, guards have been corrected to allow this * ssl: Change of internal handling of hash sign pairs as the used one enforced to much restrictions making some valid combinations unavailable. * ssl: Create a little randomness in sending of session invalidation messages, to mitigate load when whole table is invalidated.- Return diameter application: as for 18.3.3 it is distributed under APL license- Update to 18.3.3: * common_test: The nodelay option used to be enabled (true) by default for sockets opened by the Common Test telnet client. * common_test: Fix bug in cth_surefire * common_test: The ct:get_timetrap_info/0 function has been updated to return more information about timetrap scaling. * common_test: A problem with stylesheet HTML tags getting incorrectly escaped by Common Test has been corrected. * common_test: The ct_run start flag -no_esc_chars and ct:run_test/1 start option {esc_chars,Bool} have been introduced. * inets: Put back unused module inets_regexp * ssl: Correct cipher suites conversion and gaurd expression.- Update to 18.3.2: * inets: Add environment information item peer_cert to mod_esi * ssl: Corrections to cipher suite handling using the 3 and 4 tuple format * ssl: Make values for the TLS-1.2 signature_algorithms extension configurable- Update to 18.3: * New statistics info about runnable and active processes & ports. Call erlang:statistics with: total_run_queue_lengths | run_queue_lengths | total_active_tasks | active_tasks. * Time warp improvements: dbg:p/2 and erlang:trace/3 with monotonic_timestamp |strict_monotonic_timestamp. * Introduced a validation callback for heart. * The module overload in sasl has been deprecated. * several bug fixes- Update to 18.2.3: * inets: mod_alias now traverses all aliases picking the longest match and not the first match.- Update to 18.2.2: * ssh: The authentication method 'keyboard-interactive' failed in the Erlang client when the server after successful authentication continued by asking for zero more passwords.- Update to 18.2.1: * Due to a bug in the handling of paths on windows none of the following would work with paths containing a space: ct_run dialyzer erlc escript typer This also contains a fix for HiPE enabled emulator for FreeBSD. - Update to 18.2: * ssl: Add configurable upper limit for session cache. erts: Add function enif_getenv to read OS environment variables in a portable way from NIFs. * kernel: Add {line_delim, byte()} option to inet:setopts/2 and decode_packet/3 * ssh: The 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384' and 'ecdsa-sha2-nistp521' signature algorithms for ssh are implemented. See RFC5656. * ssh: The ssh:daemon option dh_gex_groups is extended to read a user provided ssh moduli file with generator-modulus pairs. The file is in openssh format.- disable hipe on s390/s390x to fix build- Update to 18.1.3: * ssl: Add possibility to downgrade an SSL/TLS connection to a tcp connection, and give back the socket control to a user process. * ssh: The following new key exchange algorithms are implemented:'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521','diffie-hellman-group14-sha1', 'diffie-hellman-group-exchange-sha1' and 'diffie-hellman-group-exchange-sha256'. This raises the security level considerably. * kernel,stdlib,sasl: A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed based on feedback. See config parameter error_logger_format_depth in the Kernel application. - Removed erts_fix_unlock_status_lock.patch: fixed in upstream- Rework wxWidgets BuildRequire: fix build for Leap 42.1- update to 18.0.3: * erts: Fixed a binary memory leak when printing to shell using the tty driver (i.e. not -oldshell). * erts: Fix a bug where the standard error port sometimes crashes with eagain as the reason.- add erts_fix_unlock_status_lock.patch to fix a rare deadlock in erts- fix RHEL/CentOS 7 build- update to 18.0.2: * Fix processes ending up in an inconsistent half exited state in the runtime system without SMP support * Remove unnecessary copying of data when retrieving corrected Erlang monotonic time. * POTENTIAL INCOMPATIBILITY: Change default OS monotonic clock source chosen at build time. This in order to improve performance. The behavior will now on most systems be that (both OS and Erlang) monotonic time stops when the system is suspended. (changeable via the - -enable-prefer-elapsed-monotonic-time-during-suspend configure parameter) * Fix erlang:system_info(end_time) returning a faulty value on 32-bit architectures. * Fix the trace_file_drv not handling EINTR correctly which caused it to fail when the runtime system received a signal.- update to 18.0.1: * Fix a rare hanging of the VM seen to happen just after emulator start. Bug exists since R14.- update to 18.0: * new license: APL 2.0 (Apache Public License) * erts: The time functionality has been extended. This includes a new API for time, as well as "time warp" modes which alters the behavior when system time changes. You are strongly encouraged to use the new API instead of the old API based on erlang:now/0. erlang:now/0 has been deprecated since it is a scalability bottleneck. See http://www.erlang.org/doc/apps/erts/time_correction.html * erts: Beside the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made. Examples are: + scheduler specific timer wheels, + scheduler specific BIF timer management, + parallel retrieval of monotonic time and system time on OS:es that support it. * erts: The previously introduced "eager check I/O" feature is now enabled by default. * erts/compiler: enhanced support for maps. Big maps new uses a HAMT (Hash Array Mapped Trie) representation internally which makes them more efficient. There is now also support for variables as map keys. * dialyzer: The -dialyzer() attribute can be used for suppressing warnings in a module by specifying functions or warning options. It can also be used for requesting warnings in a module. * ssl: Remove default support for SSL-3.0 and added padding check for TLS-1.0 due to the Poodle vulnerability. * ssl: Remove default support for RC4 cipher suites, as they are consider too weak. * stdlib: Allow maps for supervisor flags and child specs * stdlib: New functions in ets: + take/2: Works the same as ets:delete/2 but also returns the deleted object(s). + update_counter/4 with a default object as argument- update to 17.5.6: * Fix broken relay counters * Fix diameter_sctp listener race - fix build for SLE_12- Update to 17.5.4- fix systemd service files for epmd: * fix stop of epmd (epmd -kill is deprecated and ignored, so stop hangs)- Update to 17.5: * ERTS: Added command line argument option for setting the initial size of process dictionaries. * Diameter: configurable incoming_max len and string_decode for diameter messages * Bugfixes and minor small features in applications such as compiler, common_test, crypto, debugger, eldap, erts, hipe, inets, ssh, ssl, ... - remoce ct-fix_incl-dirs.patch (included upstream)- add ct-fix_incl-dirs.patch (upstream patch for common test)- Version 17.4: * eldap: Nearly all TCP options are possible to give in the eldap:open/2 call. * ssh: Added API functions ptty_alloc/3 and ptty_alloc/4, to allocate a pseudo tty. * ssl: Handle servers that may send an empty SNI extension to the client.- use wxWidgets 3.0- fix bashisms in pre scripts390zp3a 1717990558  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@26.2.1-150300.7.5.126.2.1-150300.7.5.1  wx-2.4docchunksgl.chunkglu.chunkwx.chunkwxAcceleratorEntry.chunkwxAcceleratorTable.chunkwxActivateEvent.chunkwxArtProvider.chunkwxAuiDockArt.chunkwxAuiManager.chunkwxAuiManagerEvent.chunkwxAuiNotebook.chunkwxAuiNotebookEvent.chunkwxAuiPaneInfo.chunkwxAuiSimpleTabArt.chunkwxAuiTabArt.chunkwxBitmap.chunkwxBitmapButton.chunkwxBitmapDataObject.chunkwxBookCtrlBase.chunkwxBookCtrlEvent.chunkwxBoxSizer.chunkwxBrush.chunkwxBufferedDC.chunkwxBufferedPaintDC.chunkwxButton.chunkwxCalendarCtrl.chunkwxCalendarDateAttr.chunkwxCalendarEvent.chunkwxCaret.chunkwxCheckBox.chunkwxCheckListBox.chunkwxChildFocusEvent.chunkwxChoice.chunkwxChoicebook.chunkwxClientDC.chunkwxClipboard.chunkwxClipboardTextEvent.chunkwxCloseEvent.chunkwxColourData.chunkwxColourDialog.chunkwxColourPickerCtrl.chunkwxColourPickerEvent.chunkwxComboBox.chunkwxCommandEvent.chunkwxContextMenuEvent.chunkwxControl.chunkwxControlWithItems.chunkwxCursor.chunkwxDC.chunkwxDCOverlay.chunkwxDataObject.chunkwxDateEvent.chunkwxDatePickerCtrl.chunkwxDialog.chunkwxDirDialog.chunkwxDirPickerCtrl.chunkwxDisplay.chunkwxDisplayChangedEvent.chunkwxDropFilesEvent.chunkwxEraseEvent.chunkwxEvent.chunkwxEvtHandler.chunkwxFileDataObject.chunkwxFileDialog.chunkwxFileDirPickerEvent.chunkwxFilePickerCtrl.chunkwxFindReplaceData.chunkwxFindReplaceDialog.chunkwxFlexGridSizer.chunkwxFocusEvent.chunkwxFont.chunkwxFontData.chunkwxFontDialog.chunkwxFontPickerCtrl.chunkwxFontPickerEvent.chunkwxFrame.chunkwxGBSizerItem.chunkwxGCDC.chunkwxGLCanvas.chunkwxGLContext.chunkwxGauge.chunkwxGenericDirCtrl.chunkwxGraphicsBrush.chunkwxGraphicsContext.chunkwxGraphicsFont.chunkwxGraphicsGradientStops.chunkwxGraphicsMatrix.chunkwxGraphicsObject.chunkwxGraphicsPath.chunkwxGraphicsPen.chunkwxGraphicsRenderer.chunkwxGrid.chunkwxGridBagSizer.chunkwxGridCellAttr.chunkwxGridCellBoolEditor.chunkwxGridCellBoolRenderer.chunkwxGridCellChoiceEditor.chunkwxGridCellEditor.chunkwxGridCellFloatEditor.chunkwxGridCellFloatRenderer.chunkwxGridCellNumberEditor.chunkwxGridCellNumberRenderer.chunkwxGridCellRenderer.chunkwxGridCellStringRenderer.chunkwxGridCellTextEditor.chunkwxGridEvent.chunkwxGridSizer.chunkwxHelpEvent.chunkwxHtmlEasyPrinting.chunkwxHtmlLinkEvent.chunkwxHtmlWindow.chunkwxIcon.chunkwxIconBundle.chunkwxIconizeEvent.chunkwxIdleEvent.chunkwxImage.chunkwxImageList.chunkwxInitDialogEvent.chunkwxJoystickEvent.chunkwxKeyEvent.chunkwxLayoutAlgorithm.chunkwxListBox.chunkwxListCtrl.chunkwxListEvent.chunkwxListItem.chunkwxListItemAttr.chunkwxListView.chunkwxListbook.chunkwxLocale.chunkwxLogNull.chunkwxMDIChildFrame.chunkwxMDIClientWindow.chunkwxMDIParentFrame.chunkwxMask.chunkwxMaximizeEvent.chunkwxMemoryDC.chunkwxMenu.chunkwxMenuBar.chunkwxMenuEvent.chunkwxMenuItem.chunkwxMessageDialog.chunkwxMiniFrame.chunkwxMirrorDC.chunkwxMouseCaptureChangedEvent.chunkwxMouseCaptureLostEvent.chunkwxMouseEvent.chunkwxMoveEvent.chunkwxMultiChoiceDialog.chunkwxNavigationKeyEvent.chunkwxNotebook.chunkwxNotificationMessage.chunkwxNotifyEvent.chunkwxOverlay.chunkwxPageSetupDialog.chunkwxPageSetupDialogData.chunkwxPaintDC.chunkwxPaintEvent.chunkwxPalette.chunkwxPaletteChangedEvent.chunkwxPanel.chunkwxPasswordEntryDialog.chunkwxPen.chunkwxPickerBase.chunkwxPopupTransientWindow.chunkwxPopupWindow.chunkwxPostScriptDC.chunkwxPreviewCanvas.chunkwxPreviewControlBar.chunkwxPreviewFrame.chunkwxPrintData.chunkwxPrintDialog.chunkwxPrintDialogData.chunkwxPrintPreview.chunkwxPrinter.chunkwxPrintout.chunkwxProgressDialog.chunkwxQueryNewPaletteEvent.chunkwxRadioBox.chunkwxRadioButton.chunkwxRegion.chunkwxSashEvent.chunkwxSashLayoutWindow.chunkwxSashWindow.chunkwxScreenDC.chunkwxScrollBar.chunkwxScrollEvent.chunkwxScrollWinEvent.chunkwxScrolledWindow.chunkwxSetCursorEvent.chunkwxShowEvent.chunkwxSingleChoiceDialog.chunkwxSizeEvent.chunkwxSizer.chunkwxSizerFlags.chunkwxSizerItem.chunkwxSlider.chunkwxSpinButton.chunkwxSpinCtrl.chunkwxSpinEvent.chunkwxSplashScreen.chunkwxSplitterEvent.chunkwxSplitterWindow.chunkwxStaticBitmap.chunkwxStaticBox.chunkwxStaticBoxSizer.chunkwxStaticLine.chunkwxStaticText.chunkwxStatusBar.chunkwxStdDialogButtonSizer.chunkwxStyledTextCtrl.chunkwxStyledTextEvent.chunkwxSysColourChangedEvent.chunkwxSystemOptions.chunkwxSystemSettings.chunkwxTaskBarIcon.chunkwxTaskBarIconEvent.chunkwxTextAttr.chunkwxTextCtrl.chunkwxTextDataObject.chunkwxTextEntryDialog.chunkwxToggleButton.chunkwxToolBar.chunkwxToolTip.chunkwxToolbook.chunkwxTopLevelWindow.chunkwxTreeCtrl.chunkwxTreeEvent.chunkwxTreebook.chunkwxUpdateUIEvent.chunkwxWebView.chunkwxWebViewEvent.chunkwxWindow.chunkwxWindowCreateEvent.chunkwxWindowDC.chunkwxWindowDestroyEvent.chunkwxXmlResource.chunkwx_misc.chunkwx_object.chunkwxe_master.chunkwxe_server.chunkwxe_util.chunkebingl.beamglu.beamwx.appwx.appupwx.beamwxAcceleratorEntry.beamwxAcceleratorTable.beamwxActivateEvent.beamwxArtProvider.beamwxAuiDockArt.beamwxAuiManager.beamwxAuiManagerEvent.beamwxAuiNotebook.beamwxAuiNotebookEvent.beamwxAuiPaneInfo.beamwxAuiSimpleTabArt.beamwxAuiTabArt.beamwxBitmap.beamwxBitmapButton.beamwxBitmapDataObject.beamwxBookCtrlBase.beamwxBookCtrlEvent.beamwxBoxSizer.beamwxBrush.beamwxBufferedDC.beamwxBufferedPaintDC.beamwxButton.beamwxCalendarCtrl.beamwxCalendarDateAttr.beamwxCalendarEvent.beamwxCaret.beamwxCheckBox.beamwxCheckListBox.beamwxChildFocusEvent.beamwxChoice.beamwxChoicebook.beamwxClientDC.beamwxClipboard.beamwxClipboardTextEvent.beamwxCloseEvent.beamwxColourData.beamwxColourDialog.beamwxColourPickerCtrl.beamwxColourPickerEvent.beamwxComboBox.beamwxCommandEvent.beamwxContextMenuEvent.beamwxControl.beamwxControlWithItems.beamwxCursor.beamwxDC.beamwxDCOverlay.beamwxDataObject.beamwxDateEvent.beamwxDatePickerCtrl.beamwxDialog.beamwxDirDialog.beamwxDirPickerCtrl.beamwxDisplay.beamwxDisplayChangedEvent.beamwxDropFilesEvent.beamwxEraseEvent.beamwxEvent.beamwxEvtHandler.beamwxFileDataObject.beamwxFileDialog.beamwxFileDirPickerEvent.beamwxFilePickerCtrl.beamwxFindReplaceData.beamwxFindReplaceDialog.beamwxFlexGridSizer.beamwxFocusEvent.beamwxFont.beamwxFontData.beamwxFontDialog.beamwxFontPickerCtrl.beamwxFontPickerEvent.beamwxFrame.beamwxGBSizerItem.beamwxGCDC.beamwxGLCanvas.beamwxGLContext.beamwxGauge.beamwxGenericDirCtrl.beamwxGraphicsBrush.beamwxGraphicsContext.beamwxGraphicsFont.beamwxGraphicsGradientStops.beamwxGraphicsMatrix.beamwxGraphicsObject.beamwxGraphicsPath.beamwxGraphicsPen.beamwxGraphicsRenderer.beamwxGrid.beamwxGridBagSizer.beamwxGridCellAttr.beamwxGridCellBoolEditor.beamwxGridCellBoolRenderer.beamwxGridCellChoiceEditor.beamwxGridCellEditor.beamwxGridCellFloatEditor.beamwxGridCellFloatRenderer.beamwxGridCellNumberEditor.beamwxGridCellNumberRenderer.beamwxGridCellRenderer.beamwxGridCellStringRenderer.beamwxGridCellTextEditor.beamwxGridEvent.beamwxGridSizer.beamwxHelpEvent.beamwxHtmlEasyPrinting.beamwxHtmlLinkEvent.beamwxHtmlWindow.beamwxIcon.beamwxIconBundle.beamwxIconizeEvent.beamwxIdleEvent.beamwxImage.beamwxImageList.beamwxInitDialogEvent.beamwxJoystickEvent.beamwxKeyEvent.beamwxLayoutAlgorithm.beamwxListBox.beamwxListCtrl.beamwxListEvent.beamwxListItem.beamwxListItemAttr.beamwxListView.beamwxListbook.beamwxLocale.beamwxLogNull.beamwxMDIChildFrame.beamwxMDIClientWindow.beamwxMDIParentFrame.beamwxMask.beamwxMaximizeEvent.beamwxMemoryDC.beamwxMenu.beamwxMenuBar.beamwxMenuEvent.beamwxMenuItem.beamwxMessageDialog.beamwxMiniFrame.beamwxMirrorDC.beamwxMouseCaptureChangedEvent.beamwxMouseCaptureLostEvent.beamwxMouseEvent.beamwxMoveEvent.beamwxMultiChoiceDialog.beamwxNavigationKeyEvent.beamwxNotebook.beamwxNotificationMessage.beamwxNotifyEvent.beamwxOverlay.beamwxPageSetupDialog.beamwxPageSetupDialogData.beamwxPaintDC.beamwxPaintEvent.beamwxPalette.beamwxPaletteChangedEvent.beamwxPanel.beamwxPasswordEntryDialog.beamwxPen.beamwxPickerBase.beamwxPopupTransientWindow.beamwxPopupWindow.beamwxPostScriptDC.beamwxPreviewCanvas.beamwxPreviewControlBar.beamwxPreviewFrame.beamwxPrintData.beamwxPrintDialog.beamwxPrintDialogData.beamwxPrintPreview.beamwxPrinter.beamwxPrintout.beamwxProgressDialog.beamwxQueryNewPaletteEvent.beamwxRadioBox.beamwxRadioButton.beamwxRegion.beamwxSashEvent.beamwxSashLayoutWindow.beamwxSashWindow.beamwxScreenDC.beamwxScrollBar.beamwxScrollEvent.beamwxScrollWinEvent.beamwxScrolledWindow.beamwxSetCursorEvent.beamwxShowEvent.beamwxSingleChoiceDialog.beamwxSizeEvent.beamwxSizer.beamwxSizerFlags.beamwxSizerItem.beamwxSlider.beamwxSpinButton.beamwxSpinCtrl.beamwxSpinEvent.beamwxSplashScreen.beamwxSplitterEvent.beamwxSplitterWindow.beamwxStaticBitmap.beamwxStaticBox.beamwxStaticBoxSizer.beamwxStaticLine.beamwxStaticText.beamwxStatusBar.beamwxStdDialogButtonSizer.beamwxStyledTextCtrl.beamwxStyledTextEvent.beamwxSysColourChangedEvent.beamwxSystemOptions.beamwxSystemSettings.beamwxTaskBarIcon.beamwxTaskBarIconEvent.beamwxTextAttr.beamwxTextCtrl.beamwxTextDataObject.beamwxTextEntryDialog.beamwxToggleButton.beamwxToolBar.beamwxToolTip.beamwxToolbook.beamwxTopLevelWindow.beamwxTreeCtrl.beamwxTreeEvent.beamwxTreebook.beamwxUpdateUIEvent.beamwxWebView.beamwxWebViewEvent.beamwxWindow.beamwxWindowCreateEvent.beamwxWindowDC.beamwxWindowDestroyEvent.beamwxXmlResource.beamwx_misc.beamwx_object.beamwxe_master.beamwxe_server.beamwxe_util.beamexamplesdemodemo.beamdemo.erldemo_html_tagger.beamdemo_html_tagger.erlerlang.pngex_aui.beamex_aui.erlex_button.beamex_button.erlex_canvas.beamex_canvas.erlex_canvas_paint.beamex_canvas_paint.erlex_choices.beamex_choices.erlex_cursor.beamex_cursor.erlex_dialogs.beamex_dialogs.erlex_frame_utils.beamex_frame_utils.erlex_gauge.beamex_gauge.erlex_gl.beamex_gl.erlex_graphicsContext.beamex_graphicsContext.erlex_grid.beamex_grid.erlex_htmlWindow.beamex_htmlWindow.erlex_htmlWindow.htmlex_listCtrl.beamex_listCtrl.erlex_notebook.beamex_notebook.erlex_notificationMessage.beamex_notificationMessage.erlex_pickers.beamex_pickers.erlex_popupMenu.beamex_popupMenu.erlex_radioBox.beamex_radioBox.erlex_sashWindow.beamex_sashWindow.erlex_sizers.beamex_sizers.erlex_slider.beamex_slider.erlex_splitterWindow.beamex_splitterWindow.erlex_static.beamex_static.erlex_textCtrl.beamex_textCtrl.erlex_treeCtrl.beamex_treeCtrl.erlex_webview.beamex_webview.erlimage.jpgsimplehello.erlhello2.erlmenu.erlminimal.erlsudokusudoku.beamsudoku.erlsudoku.hrlsudoku_board.beamsudoku_board.erlsudoku_game.beamsudoku_game.erlsudoku_gui.beamsudoku_gui.erlincludegl.hrlglu.hrlwx.hrlpriverl_gl.soerlang-logo128.pngerlang-logo32.pngerlang-logo64.pngwxe_driver.so/usr/lib64/erlang/lib//usr/lib64/erlang/lib/wx-2.4//usr/lib64/erlang/lib/wx-2.4/doc//usr/lib64/erlang/lib/wx-2.4/doc/chunks//usr/lib64/erlang/lib/wx-2.4/ebin//usr/lib64/erlang/lib/wx-2.4/examples//usr/lib64/erlang/lib/wx-2.4/examples/demo//usr/lib64/erlang/lib/wx-2.4/examples/simple//usr/lib64/erlang/lib/wx-2.4/examples/sudoku//usr/lib64/erlang/lib/wx-2.4/include//usr/lib64/erlang/lib/wx-2.4/priv/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:34194/SUSE_SLE-15-SP3_Update/35a51d78cd5d900791f607b03bb3d75a-erlang26.SUSE_SLE-15-SP3_Updatedrpmxz5s390x-suse-linux directoryASCII text, with very long linesASCII textPNG image data, 256 x 256, 8-bit/color RGBA, non-interlacedHTML document, ASCII textJPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 79x96, frames 3ELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=86cb8c2cb7f1070ae70da1373cbf607d11359451, strippedPNG image data, 128 x 128, 8-bit/color RGBA, non-interlacedPNG image data, 32 x 32, 8-bit/color RGBA, non-interlacedPNG image data, 64 x 64, 8-bit/color RGBA, non-interlacedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=f7069f2a4a345626bf47aea53f6ed256f6ec41d1, stripped RRRR RRR RRR RRR!RRRR R RRRR RRRRRRRRR RRRRRRR RRR` [e6zutf-8b52d56083cd391c830b426bdcbe5b525f55f80ed09287b4b383099828152ca72?7zXZ !t/ }]"k%2&vj7r2?Zcz eQbS樞~1W _`hI'mlO!/肞}2xR)xg:VV@ltk?:cq-&T_':3 GcaE~ &a&W~W$|chRSӆWtXݰhAbI걿 嫌!PZXs,kTyo:>rm 3/ ԉwb)`NB |4N)14wM^蛠-U>އ[ )MdV X1+vcX@ D+AҾzrLӽ+}w3~nZyʿg {/{6җU\iҼ>JJ9yZy݇6'Q#!׍m]۟Sz1"-P?6}A2hH5VlXՑUh55 #n|kd5֤U C@f6$2^ALnSe$<8`rpn-è=ˆ1ӄtnjSxRL9dRDRcϗm,pr Z>鍶b,l. RKKJ_ck.9`>;5#y81Pi8d? А5mdjׅW2+b٫AEMGϧ1D6>OMM!B⳴u2C([3$B9[z\-(Z:Cj@6wg:O!tfˉ{j=OzMK+9`W&)./aN1hUͿ[ϼ RN 8%rB 8*wo,`2 _<׎qWTCٳQ<߀ o\٦FIam2& Y¿x M7'r}֞K"o#.X7>Lzv%`ւ\d!R&?PD8.&9 y-ѕ:-R m gI؛YW;JI8[V5 !bX{ܒʼnmE`^E,n d]?>/j mBE M vX_u5ScS>?ز4NX6L,f)i_i /OE_@HXݽ07Že^O.\hr|$";Ve磻=w8sLDWvzLyߞRYG̼¤\V8x0{KWxuK?mYPJ& [2m7bOre=kCꙄfS9(iKa="=&1I5:0H?M0t }r>ȅ/!bEylJKΚS V[| ?|N ~*+>b:e7"N41ǒeϝ~bͷmZ|l:VjSWs+ :gxkX~tTI]%O 8#taϘ1!d3- _)JRԙxߔNZԚאdXMIe-2apAWTcB\L }}^p18DLˠT@:qf4-#+hR)dWC8d63u*mrJ wG]hJDt{V]9"Q;@Lp M\I`'uؔ1f}rLPϳBK.wk:۔A I5e +g>볶i-^8?(GjG4]`$|>_BU&k^Y8d3ZiBK5R(N.%01wL2 G)f) pG&IY!+X,_ҥI#CL)UqlX9t܄~E?A-%;]954H.uOhvWӊMT ˳ýǠ.qE72#r'66GAp(( RɋEU839o\>ck14QNkFx#=cÃ6^8?p8JhNW.3DCh|Mk{S>*^ha ˑЎ`b +>8vzmrg@6ien uuoI N[op(1@dZŜp( |K4U\ɾb;:3npױݱzj C}B_DLJ_\N -es{䧤ݯTٻ=i&Nw%(~.3i ,4Kd)ѬCb&\ dSHw0q:mº!" lk: UPʓ֩k0ZUpZ@)<]@G{衂U7I Ɔ^> INGe8'IRuF%^N g*6jct֑]\%