refactor: drop direct dependency on Boost.Spirit (graphviz parser) - #533
refactor: drop direct dependency on Boost.Spirit (graphviz parser)#533Becheler wants to merge 1 commit into
Conversation
|
Compiler-warning counts vs
|
|
Boost dependency footprint vs Header-inclusion weights (graph files pulling each direct dependency in):
Transitive Boost modules: 68 → 68 (0) |
41824db to
6679ea9
Compare
6679ea9 to
0478c2d
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #533 +/- ##
===========================================
+ Coverage 92.45% 92.66% +0.20%
===========================================
Files 392 391 -1
Lines 28214 28007 -207
Branches 8008 7916 -92
===========================================
- Hits 26086 25953 -133
+ Misses 2024 1951 -73
+ Partials 104 103 -1
... and 3 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
Before submitting
developbranch.Type of change
Does this PR introduce a breaking change?
What this PR does
graphviz.hpp: removed both Boost.Spirit code paths in the tworead_graphvizoverloads (they now always callread_graphviz_new)classic_multi_passSpirit include.BOOST_GRAPH_USE_SPIRIT_PARSERstill recognized, but now emits aBOOST_PRAGMA_MESSAGEdeprecation notice and redirects to the default parser instead of selecting Spirit.detail/read_graphviz_spirit.hpp(the Spirit DOT reader that pulled in 10boost/spiritheaders).test/isomorphism.cpp: removed the incidental#define BOOST_GRAPH_USE_SPIRIT_PARSERbuild.jamandCMakeLists.txtdropped thespiritdependency.Motivation
The spirit-based graphviz parser has been non default, undocumented and untested for 16 years.
The Boost.Spirit library has 28 direct boost dependencies, and 54 indirect, effectively dragging most of Boost in BGL: https://alandefreitas.github.io/boostdep_graph/libs/spirit.html
This PR removes its implementation, effectively dropping spirit dependency and its direct+transitive chain.
The default parser uses Boost.Regex, that has a much better dependency chain: https://alandefreitas.github.io/boostdep_graph/libs/regex.html
Note: spirit is not effectively removed from the transitive dependencies chain, as Boost.Serialization pulls it in.
A next PR will drop Boost.Serialization for Boost.Core.Serialization.
Testing
Checklist
b2in thetest/directory).