Skip to content

Use Boost.Charconv#993

Draft
grisumbras wants to merge 2 commits into
boostorg:developfrom
grisumbras:refactor/charconv
Draft

Use Boost.Charconv#993
grisumbras wants to merge 2 commits into
boostorg:developfrom
grisumbras:refactor/charconv

Conversation

@grisumbras

@grisumbras grisumbras commented Mar 19, 2024

Copy link
Copy Markdown
Member
  1. Removes embedded older version of Charconv and instead uses the library proper. Fix Remove GCC<5 stuff after Boost 1.87 #1032.
  2. Removes embedded version of ryu and uses Charconv for double formatting.

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

1 similar comment
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@grisumbras grisumbras force-pushed the refactor/charconv branch 2 times, most recently from 227539e to be9028c Compare December 14, 2024 17:06
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

1 similar comment
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@codecov

codecov Bot commented Dec 14, 2024

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.50%. Comparing base (2df2366) to head (bcb9865).
⚠️ Report is 24 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop     #993      +/-   ##
===========================================
- Coverage    93.71%   93.50%   -0.22%     
===========================================
  Files           91       85       -6     
  Lines         9156     8840     -316     
===========================================
- Hits          8581     8266     -315     
+ Misses         575      574       -1     
Files with missing lines Coverage Δ
include/boost/json/detail/impl/format.ipp 100.00% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2df2366...bcb9865. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@grisumbras grisumbras force-pushed the refactor/charconv branch 2 times, most recently from 91a7792 to 9e788cd Compare February 19, 2025 11:11
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@grisumbras grisumbras force-pushed the refactor/charconv branch 2 times, most recently from 3b7526f to c58ed7b Compare February 19, 2025 11:17
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

2 similar comments
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

@sdarwin

sdarwin commented Feb 19, 2025

Copy link
Copy Markdown
Collaborator

This is crashing the s390 runners. out-of-memory.
The PR was opened 10 months ago. Have you rebased it on develop?
I now adjusted those runners from 2 jobs to 1 job. Try it again.

Screenshot from 2025-02-19 07-13-23

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

@grisumbras

Copy link
Copy Markdown
Member Author

I did rebase it on develop.

It is quite interesting that the build is crashing s390 runners. This might be a problem with Boost.Charconv.

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@sdarwin

sdarwin commented Feb 19, 2025

Copy link
Copy Markdown
Collaborator

This might be a problem with Boost.Charconv.

It used more than 8GB of memory.

I have just kicked off another run on 'develop', to compare that.

@sdarwin

sdarwin commented Feb 19, 2025

Copy link
Copy Markdown
Collaborator

Depending on the test, even the develop branch may get to nearly 8GB.
Charconv is not the cause.
I don't think JSON was using that much memory a couple years ago.
In any case the runner is now parallel-jobs=1 so more memory is available.

@grisumbras

Copy link
Copy Markdown
Member Author

I've recorded memory usage when building and running tests. The outlier is pretty much compiling parse_into.cpp:

Config Max mem usage
toolset=gcc variant=release cxxstd=20 3.22GB
toolset=gcc variant=release cxxstd=17 3.15GB
toolset=gcc variant=debug cxxstd=20 3.10GB
toolset=gcc variant=debug cxxstd=17 2.95GB
toolset=clang variant=debug cxxstd=20 2.02GB
toolset=clang variant=debug cxxstd=17 2.00GB
toolset=clang variant=release cxxstd=20 1.51GB
toolset=clang variant=release cxxstd=17 1.42GB

Everthing else is below 0.9GB (https://gist.github.com/grisumbras/5985960c7781c4f657a93605d9e2b0ed).

Unfortuantely, this is inherent to parse_into.cpp. It's very template-heavy. I think, the way we should deal with this is to move it to a separate build target, and run b2 twice: one for regular jobs with regular job count limit, and then the heavy tests one job at a time.

@grisumbras

Copy link
Copy Markdown
Member Author

BTW, for posterity, the info was collected thusly:

# user-config.jam
using gcc : 13 : /usr/bin/time "-f%C|%M" -o/home/grisumbras/dev/stats -a g++-13 ;
using clang : 20 : /usr/bin/time "-f%C|%M" -o/home/grisumbras/dev/stats -a clang++-20 ;

And then b2 was invoked with

rm /home/grisumbras/dev/stats
b2 test example toolset=gcc,clang variant=debug,release cxxstd=17,20 warnings=extra testing.launcher="/usr/bin/time -f'%C|%M' -o/home/grisumbras/dev/stats -a"

After that the file /home/grisumbras/dev/stats contained collected statistics.

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://993.json.prtest2.cppalliance.org/libs/json/doc/html/index.html

@cppalliance-bot

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove GCC<5 stuff after Boost 1.87

3 participants