Overview
In this maintenance release of the Edge Addition Planarity Suite project, we focused on the code developer/adopter experience. The code has been scoured to find and remediate any compile-time and run-time issues. The default settings in the VS Code configuration have been changed to treat pedantic-and-beyond warnings as errors, and all existing warnings were remediated. A few very minor memory leaks were found in the planarity application layer and fixed, and none were found in the graph library and algorithm implementations. All command-line and menu-driven endpoints were thoroughly tested with address sanitizer tooling. GitHub workflows have been contributed, by developers in one of our adopting projects (Digraphs), that automatically test compilation as well as pedantic-and-beyond warning compliance, check spelling, and apply multiple address sanitization tooling. The project code has also been tested for pedantic-and-beyond warning compliance with gcc-15
on Debian 13 “Sid” prerelease.
Summary of commits contributing to 4.0.1.0 release
pkgconfigdir
; confirmed that adding this line to Makefile.am
doesn't change where the libplanarity.pc
shows up (i.e. /usr/local/lib/pkgconfig/
)
--enable-compile-warnings
flag to configure.ac
to allow one to enable compiler warnings when building using autotools
, and adds missing ax_require_defined.m4
file from autoconf-archive
, in addition to copies of ax_append_flag.m4
, ax_check_compile_flag.m4
, ax_compiler_flags_cflags.m4
, and ax_require_defined.m4
-Wincompatible-pointer-types-discards-qualifiers
and -Wnewline-eof
spelling.yml
GitHub Actions workflow
debian
, msys
, and msys-arm
jobs to os.yml
GitHub Actions workflow, fixed cygwin
job steps
devEnvSetupAndDefaults/.vscode/tasks.json
to include explicit list of compiler flags used with clang
and gcc
when one uses the autotools
build pipeline to make the distribution with --enable-compile-warnings
, where the list of compiler flags supplied to clang
is a proper subset of those supplied to gcc
.github/workflows/compile-warnings.yml
so that the Configure
step includes the --enable-compile-warnings
flag
_IsolateMinorE2()
( defined in graphIsolator.c
), added #ifndef USE_MERGEBLOCKER
. This function is called in _RunExtraK33Tests()
only when USE_MERGEBLOCKER
is not defined, which ensures we can compile and run when not using the merge blocker optimization in the $K_{3,3}$ search.
G6ReadIteratorP
and G6WriteIteratorP
typedef
s, updated all function signatures to use these new aliases, and ensured all declarations use these rather than G6ReadIterator *
and G6WriteIterator *
. Finally, ensured that these changes to the various function signatures didn't cause backwards compatibility issues with the planarity
wrapper executable.
configure.ac
, LT_CURRENT
and LT_AGE
were incremented, and the AC_INIT
was updated to match values in c/graphLib.h
, in which GP_PROJECTVERSION_MAINT
was incremented (new interface), and the GP_LIBPLANARITYVERSION_CURRENT
and GP_LIBPLANARITYVERSION_AGE
were updated to match configure.ac
. Restored beginG6(Read|Write)Iteration(From|To)G6(String|FilePath)
functions in g6-(read|write)-iterator.c
/.h
, which create the appropriate strOrFileP
and callbeginG6(Read|Write)Iteration(From|To)G6StrOrFile
. The only notable difference is that beginG6WriteIterationToString()
now only has a single parameter, the G6WriteIteratorP
; this is because we never want to pass a pointer-pointer to memory to use for the strOrFileP
's internal theStr
when ioMode
is WRITETEXT
- it should be allocated and owned by the strOrFileP
entirely until you sf_takeTheStr()
. Updated testAllGraphs()
in c/planarityApp/planarityTestAllGraphs.c
so that it calls beginG6ReadIterationFromG6FilePath()
. Updated RandomGraphs()
in c/planarityApp/planarityRandomGraphs.c
so that we either beginG6WriteIterationToG6FilePath()
for outfileName
(if we get to RandomGraphs()
via command-line, e.g. planarity -r -p 100 1000 n100.k1000.g6
) or theFileName
(if we get to RandomGraphs()
via the menu-driven system after Reconfigure()
to output all generated random graphs to .g6
)
c/graphLib/io/g6-(read|write)-iterator.c
/.h
- Strengthened validation and error messaging of _isG6ReadIteratorAllocated()
and _isG6WriteIteratorAllocated()
. c/graphLib/io/g6-read-iterator.c
/.h
- Added macro G6ReadIteratorContentsExhausted()
which will indicate that one should no longer try to read from the G6ReadIterator
(sentinel variable contentsExhausted
added to G6ReadIterator
struct is set in readGraphUsingG6ReadIterator()
when sf_fgets()
returns NULL
). c/graphLib/io/g6-write-iterator.c
- Removed unnecessary call to _isG6WriteIteratorAllocated()
in writeGraphUsingG6WriteIterator()
(since _encodeAdjMatAsG6()
immediately calls it), and removed some spaces in _WriteGraphToG6StrOrFile()
to bring the exitCode
tests up beneath the preceding calls. c/planarityApp/planarityTestAllGraphs.c
- Updated testAllGraphs()
so that it references theGraph
rather than accessing pG6ReadIterator->currGraph
, since we already have this external pointer. Also added FIXME
statements regarding access of struct
members, that we should have "getter" macros.
planarityApp
layer
AddressSanitizer
, updated TestSupport/planaritytesting/planarity_testAllGraphs_orchestrator.py
so that one may optionally -w
(rite) out stdout
/stderr
to logfiles per graph input slice file, added homeomorph search test graphs to c/samples
, updated TestSupport/planaritytesting/leaksorchestrator/planarity_leaks_orchestrator.py
so that the SpecificGraph()
test no longer requires .g6
input file (since that restriction isn’t imposed at planarityApp
layer), removed calls to reinitialize the copy of the current graph from the end of the loops of the RandomGraphs()
and TestAllGraphs()
flows, updated $K_{2,3}$, $K_{3,3}$, and $K_4$ homeomorph search function overrides for EmbedPostprocess
so that when the result is OK
, must make sure to cache theGraph->embedFlags
and whether theGraph->internalFlags
has FLAGS_ZEROBASEDIO
set before gp_ReinitializeGraph()
and restore after so that the correct override for CheckEmbeddingIntegrity
is performed.
--enable-compile-warnings
was turned on. Updated default VSCode tasks.json
build configurations for all platforms to enable the same platform-specific warnings that occur when we --enable-compile-warnings
(although specific instances of warnings are intentionally ignored using #pragma GCC diagnostic push/ignore/pop
pattern), and updated MSVC cl
build configuration to ignore specific warnings (with comments in the code justifying the ignore).
Full Changelog: Version_4.0.0.0...Version_4.0.1.0
New Contributors
- @Joseph-Edwards made their first contribution in PR #150
- @james-d-mitchell made their first contribution in PR #148
SHA256 hashes
planarity-4.0.1.0.tar.gz
:B80DE8B5E6CBBE00684C614CF7D040BB10F7C0AD6F850FD2D10C2E533C6026F5
planarity-4.0.1.0.Windows-Intel.zip
:B6BA29CA0EDC51E1C82D5628E0FAF81E1914726B1AD277E4F68C5FCE13680F4A
planarity-4.0.1.0.MacOS-Silicon.zip
:01467f2befb2ec9afcd1723a922f9460db7a232ae34be6220473720748be22b3