Skip site navigation (1)Skip section navigation (2)
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&#39;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&#39;t have skills to understand why this fix works, I&#39;d like to have some expert opinion on this fix since I don&#39;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>&lt;snip&gt;<br></div><div>template&lt;typename T&gt; 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 &amp;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>&lt;snip&gt;</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:  &lt;eduardo@FreeBSD.org&gt;   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>