All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed one more test that was missed in previous update. (Was using -f filter to focus on some failing tests. Blinded to thore tests.)
-
Recent addition of
basic_config()
(see previous release) introduced an ambiguity for memory management. The underlying design from Python is based upon garbage collection and reference counting. To solve this problem there the user can now either specify a HandlerVector or a HandlerPtrVector (but not both) If the former, pFlogger will copy the handlers into its internal storage. If the latter, pFlogger will only retain a pointer reference to the user actual argument. In that case, the user is repsonsible for maintaining the handlers until pFlogger is finalized and ensuring that any locks are freed. -
The argument to
Logger::add_handle()
must now have the TARGET attribute. pFlogger will only maintain a pointer to that target. This is to be consistent with the above strategy.
- Implemented workaround for ifort 18.0.5 that became necessary after the changes above. Only impacted unit tests.
- Some flavors of MPI complained at finalize because the MPI memory windows were not freed. Fixing required nontrivial changes because handlers (and thus locks and windows) were unintentionally duplicated rather than shared among logger objects.
- Modified name of Pair type in gFTL maps. These are not used within pFlogger outside of their host modules, but it is more consistent with the latest gFTL-shared and may help anyone that tries to port with XLF.
-
Added free() methods to various classes to ensure that MPI resources are deleted at the end of the run. Without this, some MPI flavors will report an error on MPI_Finalize(). To use:
call logging%free
- Added basic_config() method for LoggerManager analogous to that of Python's logger.
- Also added overload of get_logger() with no name argument which returns the root logger. (Again as per Python.)
- Added example/basic_config/basic_config.F90 (requires MPI)
- minor bug in default fmt_ for MpiFormatter "rank" should have been "mpi_rank".
- Trivial change to allow building with older compiler (ifort 17.0.4)
- Mostly workarounds for gFortran
- Also corrections for Cmake for some configurations
- Added a "last resort" handler for when no handlers are found. (ala Python's logger)
- A problem with link-time dependency injection for mock MPI was fixed with generator expressions. Previously the fix for tests broke the examples
- Must use true/false instead of .true./.false. for YAML
- Fixed CMake test for support of MPI_ALLOC_MEM
- Improved Cmake handling of mock to allow tests to compile without linking to MPI
- Added missing init() in Test_MpiLock tests
- Cmake installation was using the wrong macro
- allow longer lines (GFortran)
Bugfix
- Needed to enable cmake testing.
- Eliminated use of submodules; gFTL must be preinstalled
- Using FindPackage to find pFUnit (not required)
- Updated to pFUnit 4.0
- Changed naming conventions for modules (dropping the _mod suffix)
- Introduced dependency on gFTL-shared . eliminates redundant code . makes container types are consistent across projects
- Now uses yafyaml for YAML processing (much more complete YAML subset)
Releasing as open source.
- including NOSA COPYRIGHT (soon to be changed to Apache)
- including LICENSE
- adding forgotten compiler-specific cmake files (oops)
Mists of time ...
Mists of time ...