From nobody Wed Jan 31 04:03:17 2024 X-Original-To: freebsd-arch@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TPpLH4yQ9z58Kjn for ; Wed, 31 Jan 2024 04:03:35 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic315-8.consmr.mail.gq1.yahoo.com (sonic315-8.consmr.mail.gq1.yahoo.com [98.137.65.32]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4TPpLG09Qvz4T7c for ; Wed, 31 Jan 2024 04:03:33 +0000 (UTC) (envelope-from marklmi@yahoo.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yahoo.com header.s=s2048 header.b=W+vvpWsY; dmarc=pass (policy=reject) header.from=yahoo.com; spf=pass (mx1.freebsd.org: domain of marklmi@yahoo.com designates 98.137.65.32 as permitted sender) smtp.mailfrom=marklmi@yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1706673811; bh=I2tSetqriSRsU0A4shNmGctLcuaS942seYehQYb6ZZc=; h=From:Subject:Date:To:References:From:Subject:Reply-To; b=W+vvpWsY3nyqtPff+6MvJb8ThkLlczmkgpfZdt6bQAvJn+tkC3Oi9GCZsAX7n3u1zkwr3rBuW7JSU0/0otdylOO3qcWxp1heUJSD/04HtEVTm+7UKhtMo6kZfQbmif3hJ2nwswWQtYodKBt/sWFN1isnVSJHB/hKCVqOG9EPOXl8yXNJm3sOnDkopEpBcImv2NhkAYoVKj1YMjU4sDwevpOn+3b3E7fpMjpLMG/s4ZfmSiXiKuvc101j4Q1zMgkbu3rNjQIXRZwMPVIk9MUoc0GZgk0Dy9S5Eg6xxNbA/h/rWmnJqH/58NtsJ58l1KSz/zn2/209bzyH2ndJEtDPyg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1706673811; bh=wMa1HUSjg3AeJa6d3/4Mf0MhBZVheSBDpN7I9Sg2zWe=; h=X-Sonic-MF:From:Subject:Date:To:From:Subject; b=rl5wvtV9GtOTFeNfkd9DbsJCWAbdsNZPETSD6A4y19NuWpKPDoK+kLxH/aToQc+S9cduq9nwCItFQTndAhUYRULk11QPXqlTMcERUcPlDJEUZIvQvL2Rp7hq2b/rb2YaVej+arT5Rnc/loP41d5VGtKGcOJunUplzmEpwcrfmAUh7kIIWlkZ6B50NkGQ7Ob2J53lLXXMMzOEXYqu/8MqMYWM5Z6hyqyig67LtNbig0ySZj72rcVbYxh0Gg+lrm6s6XSaeZrUZ5JmWIZ4YNngHctxyu8HuY3mT6P9T484byJee8BcFhkRSQmhPP7mawPKXP9gZxU4u4esA5quqzRZJg== X-YMail-OSG: l8hUhxEVM1kYZPXr7upEAA1OVI0zORSKS_pVmgVEtCxNcE5RcWFqG2hSMDd2ivg Zh.TGe3RJna0SrAt7vlQ9E5aIT97QaGFx2bwgkamQC7yJnPQO9sn1Dd2Fc03A_B8pZP5w.FTozMs LFALk9VhM7Qvjy2nNNsyOY8zJTWsOIRT1sKmDqwTSC7bQiRo7Wahsa22XNPLovMhfwGWfF5GpyAh lIeEXJhsE5BATOWguSQAYmsexYOeHH_G8bDT7Pq4V80VIkJ9VCdLEwT6lRgNQWk_4qHfLSbSiXQC QIii5yczFNs5N9WTDSVuY02BT3ypr2pTGAWcWlpageqqmWYoreaj_boxwqwgb93VHp4synJgg.EM 4Z2LvlrDq7j5tKlLbjS8d0vtLOpjeqlIO7149fXSRB3GwlynVeJ3regsOL1mmBY2PQ5OIyXvzBV7 P1.Xy2FEggiod75WZw7RGgDf4glDIg8ATRdKKX.WOZo7E0cHDgKVtbhjRe1dbsyaWKFik61VA4yS aGYLXiQReH2gNqurK_Lnk6s3UCjsMIXBa6tPk3AFywZ91Iq2MnQUauIJwf9uL1OCanCenL7hHG2U xohO7kmMdQuvaSo5KT8trY.OnfztqWpkPiUuSnL2EuXFCh_8L75lElJdr5j7B0q6rz9QUhLIbeXF R2utRhUnnkAaiJG5I1PqEHXpmPjmXVWBOq3HC9.VXjIgx6oIPhQFQ7QwggnqpbiPcTZ0xEv4Fa0b TRckHB7JXE6KJBwsqHoZkF1DeHyjQiRCoxO9iSUn1lksT1zHFNF7eETC37ezrXGbh.TZ3vEuHaHT 1NuEFHC8l9fmk7tdhxedwYZnThGC.Atvbxnpr3nnB2AT_Pm3UTdJbPUrq9Wj.VhO7Z0B4GuoUsQ2 0MRBXlnLewGQPCg_UTWCDCf8Lwj9I7pd6qbgLaLaW1Rf8uFI19hze2JcpKaXIM8UofYwVc8b9VK5 RlMxbkP.pOcNzf_RiTl3Pcw_japVZAlHI4wwOzHgo.kW7q34vs57IXNqmdLUet9g7KAQ5Kj_ck_G HIjWtzFfq6OkbLe5UOd5f8pBm1e.XjH8hG.BT9xoqdsENRmTNGkUcm.lt19K0J.Rv20XqnPQpSEb yYqczVvPODxW4sL4MC_nZNRO9mmP5dB8XD54fZZDHytkvVupLGd4AJyLmiN15RahpimPNigh3lyS DtBIJMOsLDfvZCIuC5KVSCmMN1nl96PVPu0nj.u.wXMMrgLpzRwhjerzFS00GkhKlyhyc1ZizZeH T_BvCao4q_9sNtpH4Bu3nNHt41gdlrkn4kT23WOKsbPQIZje.IlJNXZLrUzcl0V6KzMlZ2EQTw5H qLslRiOx92vLjyFtTlrTPiOSIAy24QmT1DpiEob70X0fqzyBiYKbrQgxBfJL0JKDY..S1Ki4mLcn uvbWoOuLSQOxYhoTmwvoeH9PxBlo9sdaqPW_CpgPgGXBb_VWIFQI7.pLoq5Csk.N6avIHn.5MZp_ Nhj5TNoP_3BeHx2618by963vBYm2bdHH6wvIawCxOWKuopmCZ.rXRb5oFVhXdvI5wycjn7mplJV_ TvoXOWzgR7TsBmRqg8kvNyFxPI6EfVzV4Jjs3wkgFFha_mwHd5KLtL.22dyklxYchaiedpOoyEjg bt9zWiMCcwAWYSpBpPBgkrkjXrjLGn0rHdVjZNzuD4mXmvfPPs_TEuV2crkMb1UJ3O3S28nGWxoJ w71AcnrKspcVJwEXTbj9KRzTD3P518Yb_nYgMOSfossaYx0JdpRQ.5uUinu_41u1LUPiD6.lElTB 7jAIOjmKV4k73IZVvFLKCuROlEyQz8LORjY0w.IcoznhjyWWgi7mt8hTV6GnWMnuCLek57DVhodV Qz_IFTY58h1yz3Y9Q0XnTVoRAU8Dcxqo3raQyV1kq.1brbDsjEg13FSdAQgwQtNy6RVOk931puhe uGS31sNfjNy3_F43aW3KEMZVBbOORFTTW.f7FNZ8I9oyxxGjRIwxL5DkVSuk.RWgQQ_hhRsFROZy QMUQvBcIOjPuEK6SU8DhboUT0csqQmtztWcStQP.JyqSmPHvxlQREq_RpPn30XC73XCSkE9WmYZc 9qdbbxzmBU2BIdFdxD7XcnzdAGEfRKYu2FzVjo4TYKCL1YVGFiD9G.FDz0zcVZkaZ3aY_ewbNxIM weijlWK9dUVrg7jcUa7VyK8.4OKQQzYWAoVtDUTdSbLq69z2EjmR5xjud0gUJBnzM1Hsi8wW4Sa0 HyTMC0eINY4SMdfU.eZC6W.HUZ0YDAhqfnQPQhLrebKPvUOKnFhSwgb4u2xP6VzQmJMJ1zLTUysM - X-Sonic-MF: X-Sonic-ID: 3ce1740a-bc32-4b93-a76e-3f5cabc07a04 Received: from sonic.gate.mail.ne1.yahoo.com by sonic315.consmr.mail.gq1.yahoo.com with HTTP; Wed, 31 Jan 2024 04:03:31 +0000 Received: by hermes--production-gq1-5c57879fdf-bmngc (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 37666b961d2c1e85780587e9efb364b1; Wed, 31 Jan 2024 04:03:28 +0000 (UTC) From: Mark Millard Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable List-Id: Discussion related to FreeBSD architecture List-Archive: https://lists.freebsd.org/archives/freebsd-arch List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-arch@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.300.61.1.2\)) Subject: RE: improving C++ libc headers Message-Id: Date: Tue, 30 Jan 2024 20:03:17 -0800 To: lexi@le-fay.org, freebsd-arch X-Mailer: Apple Mail (2.3774.300.61.1.2) References: X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.95 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.95)[-0.948]; MV_CASE(0.50)[]; SUBJECT_ENDS_SPACES(0.50)[]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; ARC_NA(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; FREEMAIL_FROM(0.00)[yahoo.com]; FROM_HAS_DN(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; MLMMJ_DEST(0.00)[freebsd-arch@freebsd.org]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.65.32:from]; MID_RHS_MATCH_FROM(0.00)[]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; RCVD_IN_DNSWL_NONE(0.00)[98.137.65.32:from] X-Rspamd-Queue-Id: 4TPpLG09Qvz4T7c Lexi Winter wrote on Date: Tue, 30 Jan 2024 13:30:54 UTC : > i am considering working up a patch to improve C++ libc headers in = FreeBSD. >=20 > the problem with the current headers (which come from clang/libc++) is > that this code compiles: >=20 > ------ > #include > auto main() -> int { > exit(0); > } > ------ >=20 > this should be a compile-time error, because does not declare > ::exit[0]. however, it works because is implemented like > this: While I like the removal of header pollution, various C++ standard vintages have explicit wording that it is not an error for "C++ headers for C library facilities" (the for-C ones that are named) to be this way: QUOTE of an example: It is unspecified whether these names (. . .) are first declared in the global namespace scope and are then injected into namespace std by explicit using-declarations. END QUOTE > ------ > #include // exposes ::exit() >=20 > namespace std { > using ::exit; > // ... > } > ------ >=20 > i would like to replace this with an implementation that does this > instead: >=20 > ------ > namespace std { > extern "C" void exit(int); > // ... > } > ------ >=20 > i have done a very quick proof of concept for this and it does work; > there are some more complicated edge cases, but nothing that can't be > dealt with from what i can see. >=20 > but before i put any amount of significant effort into this, i'd like = to > check if this is something that is likely to be merged. >=20 > to address some potential objections: >=20 > - i don't believe this can be handled upstream in libc++, because some > of these headers require knowledge of the implementation - > needs to know about 'struct __sFILE', for example. >=20 > - "import std" should solve this properly, but there are a lot of > implementation issues with this and it's not clear if/when it will > ever be supported; in the mean time, the existing standard headers > should behave correctly. >=20 > [0] https://www.eel.is/c++draft/cstdlib.syn#header:%3Ccstdlib%3E > [1] = https://cgit.freebsd.org/src/tree/contrib/llvm-project/libcxx/include/cstd= lib =3D=3D=3D Mark Millard marklmi at yahoo.com