Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:128991 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id A89F01A00BC for ; Tue, 28 Oct 2025 15:52:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1761666755; bh=SL5qXqqGdAYTgHfpZaROZL2CBGRDqKVSJJ0F/HiIYRs=; h=From:To:Subject:Date:From; b=FKG/O33UC31DeWMcnSSw4C2/CIo6PFQB5B0cqfBEnKvlYHC5IPVFqrKuvZWDtf4xt Hf2KhlZQkjA5hTjacjKLorswHcn3MDkWdRuGLaVRmV6tH/VJeY57Qgy64lN7d11LAk Lf/Pr0dRhvC8dXV15iWRuGJlWHhCZv+8wQcNmcWoHmSu3m+Dy3788ZITf9rIk0EmwS OmrI7K3iuUlacsShvMFG3BT33LRi9zZwav2MkBvSO9r7kDPoatW9QNx7voQjq487ic siC4hWgwKKf6JERphxTHDAA14BFxFzepgHk9LTl5C+Gt52kk0P6HYEAYsOe71v5XXm eE6KgH9QiPhCQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 95A5C1801E8 for ; Tue, 28 Oct 2025 15:52:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DMARC_PASS,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from GVAP278CU002.outbound.protection.outlook.com (mail-switzerlandwestazolkn19010002.outbound.protection.outlook.com [52.103.56.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Tue, 28 Oct 2025 15:52:34 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jWcDwyBuI33jSAVbRPyqhaf2TlEJw9eLHUsATHQwSw437HfZRVnc/ggzAdVkrBf1Vev6GbZrZsxLME4ZSvPEksf15fMIfV/elgjRsj9yDtSbYWTO10ZkgaUd7YZhsLzTgv6rdzFHxHlDhG3jfz29gTDJXzXHT75UxqAYaIjM+ll6lkhSm7WVXKLECiMHhX3MYNoFjmNn5BJtlm13wSSi9WXXswzCVLrza9t7lomk6c65rHZhiJdmva3tKA1yHAa+C8QKgsPKEo6hLcQ87LO7HvW00rcw50X+wtFoskLWt10QaIr8Y085iYySfWj54hvdjyn+vUxsRFS1il00UPR/9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FRE5pTplu1TQfAb17Gc03QVh/neQtxJi9yMLLrA+5II=; b=d0l3c4yK5NHfHamq2uc0hFG6BEO8gURuVDRxD5gemXYj9ScZP1n9Q6n3pmEGW/MGkIxBUsJXj/iWGnPgM7qc61CrlhDM46fqqUO9BJWBgdCDIUZeuPdU+t1t1WQMgom3XEOiWMpHLl3QYbU0bBl3/KpNh6RWK55nMYX1JwluIz/Vg402m3Vdj9PFSE72b2D2BEMJth77ByDmsea4BDgnkwOdfHSHqF/FvbBa4A6UhGQEtmk2NtCgLrvbVBd2GhfZAWMSXPImJ1Q2Q3eGAj1dkT0JhXg7rQ2aEIoNOqiBLiTznt8L//zY5zlH8AP5QP5hYE65pTdrazq7RbVjUAuONw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from ZR1P278MB1120.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:5b::13) by GV0P278MB0733.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:54::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.18; Tue, 28 Oct 2025 15:52:26 +0000 Received: from ZR1P278MB1120.CHEP278.PROD.OUTLOOK.COM ([fe80::ecec:8c53:43a6:8447]) by ZR1P278MB1120.CHEP278.PROD.OUTLOOK.COM ([fe80::ecec:8c53:43a6:8447%5]) with mapi id 15.20.9253.018; Tue, 28 Oct 2025 15:52:26 +0000 To: "internals@lists.php.net" Subject: [PHP-DEV] Change `setlocale()` to use the `uselocale()` C function if available on POSIX too Thread-Topic: Change `setlocale()` to use the `uselocale()` C function if available on POSIX too Thread-Index: AdxIIcFeyyYmwdjYS4K9u/xdiVbamQ== Date: Tue, 28 Oct 2025 15:52:26 +0000 Message-ID: Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: ZR1P278MB1120:EE_|GV0P278MB0733:EE_ x-ms-office365-filtering-correlation-id: cc41ce86-8c96-4aba-d156-08de1639fe3d x-microsoft-antispam: BCL:0;ARA:14566002|15080799012|13091999003|19110799012|12050799012|8060799015|8062599012|31061999003|9400799040|461199028|1602099012|3412199025|4302099013|440099028|40105399003|10035399007|102099032|26104999006; x-microsoft-antispam-message-info: =?us-ascii?Q?tOvEE38lXgGwrlepo5YGKdC33R37JY5oax3wzQahc7iUd7Fs/H1ea+lZP61A?= =?us-ascii?Q?xSrwUvQO2UvKf3Zj0Z4xRmV9iGRCazuyH8B9UWc+AiIOXUzFIiMSAsoDoEzX?= =?us-ascii?Q?2iYN85UhfXIeyTsLo0O7+V/joDsM5j2nL6DST6GTfyseVTHm8DS9nZkRwCP3?= =?us-ascii?Q?4yT8IUgQftoNa2aYryEzMbYLpeN4XA7UR8YJbl8lXv8Yvftb/8Z79pNJ9ctq?= =?us-ascii?Q?mt9BHQN9n0tvyQFaY8Kz+3z/s84I6B/iUFUisJ73GwcklDWXMsbO2ZzLl3VJ?= =?us-ascii?Q?pGerKab/sWv8EpKGBvoEz2ehsTVWZvYyBX7JD8FA5AsdBXq8s4KYzBDEofN4?= =?us-ascii?Q?i7Ux3FecYpl5YbDD4k/bkAidWmemcyBrITC/6l/mci4Vmy4P3lSOCVBZoqGo?= =?us-ascii?Q?GPmj2thHcIaQ2vT1Ol5RUCToSK2LNPC4AZHzHnhlGd38vRn0IgB/IOVhSs1N?= =?us-ascii?Q?HemvzGqPJlgtK+8Cp3Rfx3hC2KXjDbT7JzSXr3wzEJ50hbYXFBy0kGVZ4NRY?= =?us-ascii?Q?piGW6v4FSQOckZcBe2f1VYeu3cjzTDwknZNUaLuf8VDvz/8JDmRRMws1Cjo3?= =?us-ascii?Q?k8Zi6PZ1npP9kd5uk78n+gxkDj5T0g28cEyq6+CAAprWQ6OO2p6UvaqcYoGH?= =?us-ascii?Q?VB3gdhmw9aHoOHLcR4eH1ObBmL+ky2XgeirodJMQbHlvMI2vFoVq5m3OktAM?= =?us-ascii?Q?2gcjCf1orgkwITVsRNcZP20wptrRVsRgioS1jTM2hkkHlEBDBSxp0y+9E0jM?= =?us-ascii?Q?vf+lUDufHCY7NsnXeBeteEyvrKwH8iTtQO2G2UbmiFGab5U5Q4wQXjcRNjTu?= =?us-ascii?Q?W0bolBeS6a3bExc29G59/L9j5GyArKZlLwKjf+qLhO7eVl3EppXQgIyF2WgG?= =?us-ascii?Q?8JyAjgq+sAjcNnBBOFs3aRohu/o/bdLU3UpaZiQjQ7Dxi+EJb6kDfFANn88e?= =?us-ascii?Q?UcoJZe55DOz0iTsE7xDY4HmPSqTpcrf70L7QrxyhmCle1IuyjZ6Uz2/hq1o1?= =?us-ascii?Q?4fAAfcsF9x1XKkccBySjPz38SUmiWAywWSHo1Ih6RtTmz28roN7Qq4PPcM+J?= =?us-ascii?Q?SKVCV4Mj3zbanbuB2S2EnlSQisypANuyDXDrZbejxcQzAcCky+/MxP6xxRbH?= =?us-ascii?Q?LTTMKn8vPSa/0uBT0py9edsMQ8POTC7dowuR74QQ1dYdMB6p71r+lisCAltr?= =?us-ascii?Q?G9y62yyujIro2GypkNBRDlNMCjpZbhbrDanb/Zy4uvxB3MAefMfr5mHkKei1?= =?us-ascii?Q?DdpAAukexHCrlc5WQVVAmSttflkEcQmYorFfbaeWJ/ofmPpv78mJ6sWA/Am/?= =?us-ascii?Q?u5ZXjQw9zWVUOi1NrhqGoPnkf8Fg9d0aE7P1Ude2WcE0P3Kz+oDc7iMvUHuy?= =?us-ascii?Q?TnOPs5fJ74iB//aR6N1GMNJIfbAZVjZvZTk+qSOXNfXXR77dlw=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?UnIZPu2NJqK075msty1UstZGsgqNkCE5N0XGIufmrbE0jbBze8u+9TNCxClV?= =?us-ascii?Q?4cXTy7cSugZY6dnCiTf1dZGpfwUYm7oJxUuMVf+gMBZ80oMv/obe7RAMy8xB?= =?us-ascii?Q?LWYTWuqDCYZfrW0/chOSb4/BPMmQWM0PPJbR6kx2oGuraHIX4Kc84Im5hD/u?= =?us-ascii?Q?7Wi8oDcOrOt7+9mWyX97C5zhRGBmYZEgu0lAsGUS+JNdNKK3F2ypxGxkqRng?= =?us-ascii?Q?WaqOu5nAp/x2AIDWWFkjZWBV/b4gwwz2GIkAhcqya5stliLFg1Vo9ude6j6s?= =?us-ascii?Q?owoIo3klT9iQX5rB26hoNr2jyE1Eg1UsrY22gAZraABtC1TZq/hPPiIk8rWm?= =?us-ascii?Q?KWDKlSu739SmHSNcPIeQqqfnXT/uB/ywMK4sfEIoNFnaNZw5x0ur7GhKMEB8?= =?us-ascii?Q?2JsHqnPtz9hEVtDBTHR3ae/QcmzaRau9lCyASbyOkYAiOS0XLtPb7c6CsaNz?= =?us-ascii?Q?PKQVcE8dBBq5SZ6T0RrpYCPM2rQMKnp/SDP/j5z73awTsvCKF2Jq6PZbGLFf?= =?us-ascii?Q?FD9Km/tD73m6TjNsTNubzwDywOGRpK2vuDH15KD0Mx3i2RKhRMcymgq8XExi?= =?us-ascii?Q?pWWh5xoLZgN8XBUzsWDmER5AwgAW1ubH1sMq8PNHze277Td7mlNvlLvqrWaY?= =?us-ascii?Q?8bNfd91d5POUixEIaK8DlAUCKkOy1nxZm9Nu86HOlsFgMfrTI+koj78BBWHC?= =?us-ascii?Q?T+i8gfyS6KQhi33mRBkyweC5VQ6370nbUPm6wW+ZJPMdkLWq/sAS7zG3cXHR?= =?us-ascii?Q?x0HjcxdS04mblww9o2/xtcijvzlK4i3oEyvOr/2bpm+1i5pP6iQrPE+TGo63?= =?us-ascii?Q?mOKBrWepn6VWAEPcCviQPX0p/GQsjaVmPC5rNXKPJNiE4eNBHusQCWvtahP6?= =?us-ascii?Q?3v14GcIEMua7wfJMLCNf8lpWWkjlViQ7GxcrkkKA6BWPXKfqrLLHadBxtq80?= =?us-ascii?Q?lB9M0CNBU4rp1zAGwsOVKZRiLr6BvCIflnjtR2DuhYJ5up2Lazy+umHptqHM?= =?us-ascii?Q?K9EdFWapGUDVQCV3thB/hOwDRhIn9ZaOQAFKOEOQTNQYZHe8QsnKKL6ny0WM?= =?us-ascii?Q?VJ2CO/Zh9gPmfMxYH8XzvzLlnMBgjudaFarPgWajQXilasoQ3JyM+55S3Fpv?= =?us-ascii?Q?XYIRUkGputmhFgPqUsu0VVYhjuWEtFEsXU+jhN5s+o38tl8y/24Pca1VLzjw?= =?us-ascii?Q?txfkk8NR9/t+x922?= Content-Type: multipart/alternative; boundary="_000_ZR1P278MB112080300D6FB5871FFD7E9AD1FDAZR1P278MB1120CHEP_" Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-d8e2f.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: ZR1P278MB1120.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: cc41ce86-8c96-4aba-d156-08de1639fe3d X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2025 15:52:26.7158 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB0733 From: m@pyc.ac (Marc Henderkes) --_000_ZR1P278MB112080300D6FB5871FFD7E9AD1FDAZR1P278MB1120CHEP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello everyone, We recently noticed that the setlocale function currently uses `setlocale` = in its C implementation as well [https://github.com/php/frankenphp/pull/194= 1], which is a) not multithreading safe to use and b) when it doesn't crash= , leads to overriding the current locale for the entire process. For NTS builds with php-fpm this is not an issue, but for FrankenPHP and mo= d_php, this leads to unexpected behaviour described here: https://github.co= m/php/frankenphp/pull/1941#issuecomment-3457137937 On Windows builds, since PHP 7, it is already per-thread, but on POSIX syst= ems it is not. I would therefore like to get your reactions on whether it would make sense= to unify the behaviour between POSIX systems and Windows and make the `set= locale()` function thread-safe and per-thread, rather than per-process. In case my proposal sees positive reception, I'd like to go ahead and creat= e an RFC. I will also implement the changes in php-src, I've already done s= o as a proof of concept. Thank you for your time, Marc Henderkes --_000_ZR1P278MB112080300D6FB5871FFD7E9AD1FDAZR1P278MB1120CHEP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable --_000_ZR1P278MB112080300D6FB5871FFD7E9AD1FDAZR1P278MB1120CHEP_--