Date: Tue, 6 Aug 2024 11:26:26 +0100 From: Nuno Teixeira <eduardo@freebsd.org> To: FreeBSD CURRENT <freebsd-current@freebsd.org> Subject: Fall back to fast_float when C++ stdlib doesn't provide from_chars for floats Message-ID: <CAFDf7UJwwRQZpYgTij_3r4x0D3E-MjR9vNk7fNfvfG9Y0JSmUg@mail.gmail.com>
index | next in thread | raw e-mail
[-- Attachment #1 --] Hello all, On deskutils/treesheets port, upstream did some updated that broke build. After investigating it upstream says we are building with an outdated C++ standard lib. To fix it, I'm using a fall back to fast_float as we see in main PR: https://github.com/aardappel/treesheets/issues/686 As I don't have skills to understand why this fix works, I'd like to have some expert opinion on this fix since I don't know if this will be supported in the furure. Resuming we added __FreeBSD__ to fall back in code already present: <snip> template<typename T> T parse_float(string_view sv, const char **end = nullptr) { // FIXME: Upgrade compilers for these platforms on CI. - #if defined(__APPLE__) || defined(__ANDROID__) || defined(__EMSCRIPTEN__) + #if defined(__APPLE__) || defined(__ANDROID__) || defined(__EMSCRIPTEN__) || defined(__FreeBSD__) auto &term = *(char *)(sv.data() + sv.size()); auto orig = term; term = 0; auto v = (T)strtod(sv.data(), (char **)end); term = orig; return v; #else T val = 0; auto res = from_chars(sv.data(), sv.data() + sv.size(), val); if (end) *end = res.ptr; return val; #endif } <snip> Commit is https://cgit.freebsd.org/ports/commit/?id=4ffd449f0cfdbef7d1c78442ad3ea0be9ab12ea3 Thanks, -- Nuno Teixeira FreeBSD UNIX: <eduardo@FreeBSD.org> Web: https://FreeBSD.org [-- Attachment #2 --] <div dir="ltr"><div>Hello all,</div><div><br></div><div>On deskutils/treesheets port, upstream did some updated that broke build.</div><div>After investigating it upstream says we are building with an outdated C++ standard lib.</div><div><br></div><div>To fix it, I'm using a fall back to fast_float as we see in main PR:</div><div><br></div><div><a href="https://github.com/aardappel/treesheets/issues/686" target="_blank">https://github.com/aardappel/treesheets/issues/686</a></div><div><br></div><div>As I don't have skills to understand why this fix works, I'd like to have some expert opinion on this fix since I don't know if this will be supported in the furure.<br></div><div><br></div><div>Resuming we added __FreeBSD__ to fall back in code already present:</div><div><br></div><div><snip><br></div><div>template<typename T> T parse_float(string_view sv, const char **end = nullptr) {<br> // FIXME: Upgrade compilers for these platforms on CI.<br>- #if defined(__APPLE__) || defined(__ANDROID__) || defined(__EMSCRIPTEN__)<br>+ #if defined(__APPLE__) || defined(__ANDROID__) || defined(__EMSCRIPTEN__) || defined(__FreeBSD__)<br> auto &term = *(char *)(sv.data() + sv.size());<br> auto orig = term;<br> term = 0;<br> auto v = (T)strtod(sv.data(), (char **)end);<br> term = orig;<br> return v;<br> #else<br> T val = 0;<br> auto res = from_chars(sv.data(), sv.data() + sv.size(), val);<br> if (end) *end = res.ptr;<br> return val;<br> #endif<br>}</div><div><snip></div><div><br></div><div>Commit is <a href="https://cgit.freebsd.org/ports/commit/?id=4ffd449f0cfdbef7d1c78442ad3ea0be9ab12ea3">https://cgit.freebsd.org/ports/commit/?id=4ffd449f0cfdbef7d1c78442ad3ea0be9ab12ea3</a></div><div><br></div><div>Thanks,<br></div><div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><font color="#888888">Nuno Teixeira</font></div><div><div><font color="#888888"> FreeBSD UNIX: <eduardo@FreeBSD.org> Web: <a href="https://FreeBSD.org" rel="noreferrer" target="_blank">https://FreeBSD.org</a><br></font></div></div></div></div></div></div>help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFDf7UJwwRQZpYgTij_3r4x0D3E-MjR9vNk7fNfvfG9Y0JSmUg>
