On this page
Version 2024.4.5, released on 2025-01-24
Fixed a crash while computing PWR003 in some Fortran procedures
Removed the deprecated option -config
option
Version 2024.4.4, released on 2025-01-21
Upgraded LLVM toolchain with the latest changes
Updated RMK007, RMK008, RMK010, RMK012, RMK013, and RMK014 titles for more clarity
Improved support for analyzing Fortran codes dependant on an Intel Fortran extension that allows to shadow imported and host associated entities
Improved the report in case of an unrecoverable fatal error in the codee application
Improved compatibility with Fortran extensions by relaxing standard requirements
Improved reporting of Fortran module dependency resolution
Fixed a bug in response file parsing on Windows that prevented Codee from analyzing files with absolute paths
Fixed a bug handling -real-size 64
Intel Fortran compiler argument
Fixed a bug that would trigger incompatible OpenMP/OpenACC AutoFixes in Fortran pure
procedures
Fixed a bug that would trigger PWR003 in Fortran procedures containing incompatible OpenMP/OpenACC directives
Version 2024.4.3, released on 2025-01-08
Improved PWR007's AutoFix to rewrite codes with statement functions
Improved support for analyzing Fortran codes dependant on libxsmm, SIRIUS and libint by bundling their modules into Codee
Improved support for analyzing unstructured Fortran loops (e.g., loops with GOTOs in the loop body)
Improved support for analyzing codes that declared variables explicitly or implicitly in preprocessor definitions
Improved compatibility with Fortran extensions by relaxing standard requirements
Fixed a bug that prevented further analysis when a variable from a common block was used
Fixed a bug that counted checkers wrongly
Fixed PWR003 being reported for functions with static lifetime variables
Fixed a crash in Codee when analyzing somes codes containing macros
Fixed a crash in Codee when analyzing some Fortran codes with procedure pointer arguments
Fixed a crash in the split-variable-initialization rewrite for procedures with include
d files
Fixed a bug with conditional return statment in fortran codes
Fixed a bug in the split-variable-initialization rewrite for procedures with parameter statements
Version 2024.4.2, released on 2024-12-11
Added support for GNU Fortran intrinsics available as both functions and subroutines
Added a new correctness
category
Added --analyze-included-files
common flag that allows analyzing included files in C, C++ and Fortran
Added --only-quality
flag to include the "correctness" and "modern" checkers, deprecating the former --only-modern
flag
Updated --show-progress
to default to the new "dependencies" report
Updated HTML report to show the tables of the ranking of quality and optimization checkers
Updated the attributes and priorities of some checkers
Improved analysis time for large Fortran files
Improved missing Fortran module suggestions
Improved support for analyzing Fortran codes with constant array accesses
Improved Fortran dependency resolution
Improved support for analyzing non-standard GNU Fortran extensions
Improved PWR007's AutoFix to rewrite codes with implicit functions
Improved PWR007's AutoFix to insert implicit none (type, external)
where appropiate
Improved PWR007's suggestion message
Improved Codee's target compiler detection capabilities
Improved PWR072 AutoFix coverage
Improved analysis time for codes with a lot of nested scopes
Improved support for analyzing Fortran codes dependant on ETSF_IO by bundling its modules into Codee
Fixed a bug while analyzing loops with different struct field uses
Fixed an issue where Codee misinterpreted paths from response files on Windows
Fixed a crash that could happen with some unsupported codes
Fixed bug that duplicated an AutoFix if the same input was in multiple invocations
Minor cosmetic changes
Version 2024.4.1, released on 2024-11-21
Added flags --only-modern
, equivalent to --only-categories modern
, and --only-optim
, equivalent to --only-categories scalar,control,memory,other
Updated PWR068 to trigger the check on calls made through implicit interfaces, instead of all procedure declarations outside modules
Improved support for analyzing Fortran codes dependant on PETSc, Libxc and flook by bundling its modules into Codee
Improved support for analyzing Fortran codes dependant on a GNU Fortran extension that allows forward references to some host-associated symbols
Improved support in PWR075 to detect the use of real array indices coming from intrinsic functions
Fixed a bug that would cause Codee to not compile some Fortran codes that used GNU Fortran intrinsics
Fixed a bug that caused Codee to exhaust system memory when analyzing C++ code with deeply nested templates
Version 2024.4.0, released on 2024-11-14
Upgraded LLVM toolchain with the latest changes
Added AutoFix for PWR072 to automatically split variable declaration initialization
Added the total number of check occurrences to the screening report 'Ranking' table
Updated the screening report to show the number of available AutoFixes for each check
Updated the screening report suggestions when analyzing multiple files
Updated the list check IDs so they are sorted by their priority
Improved support for analyzing Fortran codes dependant on GNU Fortran intrinsics
Fixed a bugs related to C and C++ structs containing other empty structs
Fixed a bug in PWR069's AutoFix that could cause Codee to crash
Fixed a bug that could cause Codee to crash opening an invalid Fortran module file
Fixed a bug in PWR008 due to Fortran alternate returns
Fixed a bug where response files were not supported on windows targets
Fixed an issue where Codee in Windows would require ZLIB to be installed when it was not needed
Version 2024.3.5, released on 2024-10-29
Added Bear binary alongside Codee to allow users to create compile_commands.json
out of the box
Added --{c|cxx|fortran}-flags
codee flags to append compiler options to all compile commands entries and updated the corresponding environment variables
Added --show-compiler-output
flag to print messages that compiler emitted during analysis
Added autodetection of compile_commands.json
relative to the command-line file filters
Updated PWR072 to clearly state the undesired implicit 'save' behavior
Updated the do concurrent
rewrite to work in compiler agnostic mode
Improved support on some recoverable internal errors, allowing partial analysis on some codes that were previously rejected
Improved support for unknown compilers by assuming GCC or GFortran depending on the input files
Fixed a bug that would report PWR075 for non-GNU compilers
Fixed several bugs
Minor cosmetic changes
Version 2024.3.4, released on 2024-10-15
Added AutoFix for PWR069 to automatically adjust and remove use statements in procedures
Added support for the f95
compiler as an alias to gfortran
Added missing progress printer to codee rewrite
Updated the screening report:
Split the ranking of checkers between optimization and modernization
Removed the main screening report table from the default output to emphasize the 'Ranking' table
Updated the codee screening --verbose
report to show a list of checkers per file
Updated ROI report based on --verbose
and --brief
modifiers
Improved PWR007 autofix to handle GNU Fortran intrinsic procedures
Improved PWR069 with a reduction of false positives and more accurate suggestions
Improved PWR075 to detect usages of real values in array indices
Improved support for unknown compilers by assuming GCC-like flags
Improved handling of input filters by rejecting invalid ones
Fixed reporting of unreachable dependencies for compilation entries with relative paths
Fixed compilation errors when -mcpu
was used in X86 targets
Adjusted checkers attributes
Minor cosmetic changes
Version 2024.3.3, released on 2024-10-01
Upgraded LLVM toolchain to version 20 (20.0.0)
Added support for Fortran programs that use OpenMP conditionally compiled lines
Improved support for analyzing Fortran codes dependant on OpenACC, by bundling those modules into Codee
Improved support on some recoverable internal errors, allowing partial analysis on some codes that were previously rejected
Improved reporting of missing Fortran modules
Improved the report of compiled but unreachable Fortran dependencies
Fixed a crash that would happen when a missing Fortran module was use
d
Fixed Fortran compilation error due to unsupported global procedure pointers
Fixed a bug in PWR069 causing invalid suggestions for transitive dependencies and symbol renames
Fixed a bug in PWR007 autofix for function return values
Fixed a bug in PWR008 autofix due to a miscalculated position in Fortran preprocessed files
Fixed an issue where Codee would report invalid errors after a missing use
d Fortran module
Fixed an issue with Fortran modules that would compile but couldn't be use
d afterwards
Minor cosmetic changes
Version 2024.3.2, released on 2024-09-13
Added a new Fortran Modernization checker "PWR075: Avoid using GNU Fortran extensions"
Added support for Intel ifx
compiler flags on Linux and Windows
Added a "native" option for --multi
and --offload
rewrites that uses do concurrent
in Fortran loops; this option is enabled with --compiler-driven-mode
for ifx
, ftn
, and nvfortran
Fixed an issue with computing dependencies that affected "compile_commands.json" with several languages on it
Fixed a crash when using input filters for files that have host-associated functions from another include
d file
Fixed undesired warnings being printed along with Fortran compilation errors
Fixed an issue detecting a particular case of an array reduction compute pattern
Version 2024.3.1, released on 2024-09-04
Updated screening report "RANKING OF CHECKERS" table by adding an AutoFix column and merging Level and Priority ones
Fixed an issue with bash autocompletion
Fixed hiding unrelated analysis errors if --show-failures
is disabled
Fixed an issue with codee rewrite
if --compiler-driven-mode
is enabled
Fixed nvfortran
compiler version detection
Removed deprecated --show-ranking
flag for the screening report
Removed pwreport
, pwloops
, and pwdirectives
shims
Minor cosmetic changes
Version 2024.3.0, released on 2024-09-03
Upgraded LLVM toolchain to version 19 (19.1.0-rc1)
Added AutoFix for PWR008 that declares the intent for each procedure parameter
Added support for Intel ifort
compiler flags on Windows
Added support for NVIDIA Fortran compiler flags on Linux
Added support for Cray Fortran compiler flags
Added autodetection of "compile_commands.json" when --compile-commands
and -- <invocation>
are not used
Improved analysis time for some Fortran files
Improved memory usage during the analysis of Fortran files
Improved support for analyzing Fortran codes dependant on MPI, NetCDF and HDF5, by bundling those modules on Codee
Improved reporting of transitive dependencies on missing external Fortran modules
Improved the OpenMP directives used in codee rewrite
for Cray and Nvidia compilers
Improved PWR068 detection in non-standard Fortran codes
Fixed a bug when filtering Windows paths with backslashes
Fixed a Codee crash for Fortran codes with loops containing statement labels
Fixed an issue parsing OpenACC and OpenMP clauses separated by commas
Fixed a leak of internal compiler messages into Codee output
Fixed a bug rewriting Fortran code with codee rewrite --multi omp-taskwait
Do not print empty tables in codee screening
on error
The list of supported compilers with optimization report is now reported with the flag codee --list-optimizing-compilers
codee --version
now lists the supported compilers, it no longer lists the supported compiler with optimization reports
Removed the "CHECKS PER CATEGORY AND PRIORITY LEVELS" table from the screening report
Minor cosmetic changes
Version 2024.2.6, released on 2024-07-30
Renamed the --config
option to --compile-commands
(-p
), which now also accepts a path to a directory that contains a "compile_commands.json" file
Greatly reduced the memory usage of Codee on large Fortran projects
Fixed several bugs
Minor cosmetic changes
Version 2024.2.5, released on 2024-07-10
Codee now requires a complete compiler invocation at the right of the --
separator when not using a compilation database
Codee will now use the given compiler to parse the compilation options
New --compiler-driven-mode
to enable the Compiler Driven Mode, that will use the compiler from the invocation as the target
Removed --target-compiler-X
flags, as Using a different target compiler is no longer supported
Added a new Fortran Modernization checker PWR069: Use the keyword only to explicitly state what to import from a module
Codee will now analyze the compilation database respecting the Fortran module dependencies
Fixed an issue where the PWR073 would show "empty" COMMON uses
Split the "quality" category of checkers into "modernization (modern)" and "other"
Improved support for header files for some bundled common Fortran modules
Updated the past changelog with some missing features
Version 2024.2.4, released on 2024-06-12
Added AutoFix for PWR007: Disable implicit declaration of variables
Include some bundled Fortran modules to improve the analysis coverage
Version 2024.2.3, released on 2024-06-05
Added new Fortran Modernization checkers (some were part of PWR063):
PWR068: Encapsulate external procedures within modules to avoid the risks of calling implicit interfaces
PWR070: Declare array dummy arguments as assumed-shape arrays
PWR071: Prefer real(kind=kind_value) for declaring consistent floating types
PWR072: Add an explicit save attribute when initializing variables in their declaration
PWR073: Transform common block into a module for better data encapsulation
Added legacy Fortran "unconditional GOTO" statements to PWR063
Created a new Codee flavor focusing on modernization tasks
Added support for gfortran
compilation flags
Improved support for analyzing Fortran codes dependant on MPI and NetCDF
The PWR042 and PWR043 checkers are now enabled for Fortran
Fixed several bugs
Version 2024.2.2, released on 2024-04-19
Fixed the analysis order with "compile_commands.json" in the presence of a filter
Removed support for "pw.json" configuration files
Minor cosmetic changes
Version 2024.2.1, released on 2024-04-17
Deprecated commands coming from the former pwloops
binary
Hide Codee compilation warnings behind the --show-failures
flag
Fixed multiple minor bugs
Updated the past changelog with some missing features
Version 2024.2.0, released on 2024-04-08
Added codee
as an unified binary aggregating pwreport
, pwloops
, and pwdirectives
functionality
Added a --verbose
mode for the screening and technical-debt reports, which makes Codee to print subtotals per file
Removed the --
prefix from all Codee commands (e.g., codee --checks
is now codee checks
)
Removed support for deprecated environment variable names
Support for analyzing Fortran source code is now considered mature instead of experimental
Changed --roi
and --technical-debt
reports to suppress error messages when targeting multiple files; this behavior can be overriden with --show-failures
Version 2024.1.4, released on 2024-03-26
Added Return On Investment Report (pwreport --roi
)
Added Technical Debt Report (pwreport --technical-debt
)
Simplified the --screening
report to omit info already available on the --roi
report
Version 2024.1.3, released on 2024-03-19
Enabled Fortran analysis on Windows an MacOS platforms
Added Fortran support for the PWR003 checker (explicitly declare pure functions)
Added "Scope" (File, Function, Loop) to the information of each Checker in --list-available-checkers
Added Codee tab completion support for bash, fish, and zsh shells; run pwreport --completions <your shell>
for instructions
Added Compiler Efficiency Report (pwloops --compiler-efficiency
)
Added support for Fortran COMMON blocks
Improved support for C++ member functions that make use of this
Improved the support for the IAR C and C++ compiler by handling --dlib_config
and --libc++
options
Improved support for Fortran compiler directives
Improved the final summary message with the number of loops and functions that have been successfully analyzed
Version 2024.1.2, released on 2024-02-21
Greatly improved analysis coverage, especially in Fortran codebases, by enhancing error tolerance and recovery in the core of the technology
Improved pwdirectives
to insert comments detailing the optimizations applied to the rewritten code; this behaviour can be disabled with the new pwdirectives --disable-comments
option
Added support for ARM big.LITTLE compilation flags
Improved analysis support for C++ member functions (functions that use this
explicitly or implicitly still unsupported)
Added analysis success/failure messages for each file in --show-progress
Changed --show-progress=files
to be the default progress reporting mode, use --show-progress=none
to suppress progress messages
Changed --show-failures
to be enabled by default, use --show-failures=none
to suppress error messages
Added --check-id
flag to filter by specific check IDs
Greatly optimized the compile_commands.json parsing phase; the total analysis time for big code bases can now be slashed down to 1/6 of the original time
Added a message to --version
showing the time to license expiration
Minor cosmetic changes
Removed "optimizable lines" column from pwreport --screening
Version 2024.1.1, released on 2024-02-01
Replaced the bundled "check-examples" folder with the new "open-catalog"
Improved analysis time on Fortran codes
Changed --show-ranking
to be enabled by default, making the argument unnecessary
Improved --list-available-checkers
by allowing filtering by categories as usual
Removed already deprecated --evaluation
flag; the --screening
flag should be used instead
Improve detection on maximum and minimum pattern computations
Improved Fortran support
Version 2023.2.6, released on 2024-01-16
Improved PWR063 with more detailed information in --verbose
mode
Improved Codee core detection capabilities, now it supports the detection of small static array temporaries
Updated PWR020 and PWR021 so they are no longer reported if there are any non-categorized compute pattern (n/a), preventing false positives
Fixed a bug for Fortran files that stopped analysis due to errors in unrelated parts of the code
Fixed a bug where PWR022 was incorrectly reported in some loops with non-invariant conditions
Fixed bug that caused a discrepancy between the screening and checks reports regarding the RMK015 remark
Improved warning message behavior related to the usage and parsing of the compile_commands.json
Improved support for some Fortran constructs
Version 2023.2.5, released on 2024-01-08
Added the number of repeated entries for each file in a compile_commands.json when --show-progress
is used
Fixed PWR063 to be reported only once per file, as intended
Several stability improvements
Fixed multiple minor bugs
Version 2023.2.4, released on 2023-12-05
Added a new recommendation PWR063: Avoid using legacy Fortran constructs
Added a new --show-ranking
option to the screening report, which shows the number of occurrences of each checker, ordered by priority
Added --include-categories
and --only-categories
to filter checkers by category
Updated --list-available-checkers
option to show the attributes of the new check ranking system
Deprecated --include-tags
and --only-tags
in favor of the new --include-categories
and --only-categories
respectively
Removed the --show-breakdown
option from the screening report, in favor of the new --show-ranking
Removed several legacy reports from Codee:
--functions
, --races
and --parallelization
from pwreport
--result
from pwloops --vector-support
Removed the --show-breakdown
option from the screening report, in favor of the new --show-ranking
Removed "mode" column from pwloops
Improved compile_commands parsing result report
Version 2023.2.3, released on 2023-11-23
New "Likelihood", "Remediation cost" and "Severity" checker independent attributes
New "Priority" and "Level" checker attributes, whose values derive from those of the three above
The checks report is now ordered by priority value
New --level
flag, which allows the user to filter checkers by their priority level
The screening report now shows the number of checkers by priority level in the second table
Fixed a bug causing crashes for code that uses unsupported pointer assignments or structs
Add support for C-like comments in Fortran fixed form
Fixed --target-arch
filtering regression
Fixed a loop filtering bug that prevented checks to be reported for the inner loops
Version 2023.2.2, released on 2023-11-15
Added support for the IAR iccarm
compiler flags
Disable remarks RMK002 and RMK008
pwdirectives
now breaks lines according to the maximum line length allowed by the language (i.e., free and fixed forms in Fortran)
Rework on the internal technology that should improve code support in some particular cases
Updated the past changelog with some missing features
Version 2023.2.1, released on 2023-11-07
Fixed a bug that stopped Codee from analyzing some kinds of unsupported precompiled headers
Fixed a bug where Codee would print warnings even if --no-warnings
was set
Added support for more Fortran compiler flags
Fix a bug where the some Fortran analysis would get stuck
Version 2023.2.0, released on 2023-10-24
Upgraded LLVM toolchain to version 17
Add Fortran matrix multiplication example
Version 2023.1.7, released on 2023-10-04
Changed pwdirectives
syntax to a comma-separated list of options (pwdirectives --vector omp,gcc
) instead of repeating arguments (pwdirectives --vector omp --vector gcc
)
The pwreport --checks
output now prints the canonical title of each check
New line in the CLI output printing the Codee version and date of the analysis
New pwdirectives
suggestion to complete array transfers in offloading computations
Improved reporting of ignored duplicated files in compile_commands.json
Changed the vectorization suggestions to be specific to the target compiler
Combined rewriting modes of pwdirectives
are now properly suggested in pwreport --checks --verbose
Fixed a bug where some checks were repeated under some circumstances
Fixed a bug where sometimes a check was not correctly filtered
Version 2023.1.6, released on 2023-09-19
Fortran array access range is no longer specified in OpenMP or OpenACC data transfer clauses
Now the files not present in a compile_commands.json will be ignored when using it alongside with input files/directories
The pwdirectives --vector
command may now apply to the whole file
Moved pwloops --non-analyzable
report to pwreport --non-analyzable --verbose
Renamed pwloops --summary
column "Optimizable" to "Has autofix" and removed the "Optimized" column
New --list-available-checkers
option that replaces --list-all
Deprecated --list-all
, --list-checks
, --list-defects
, --list-recommendations
, --list-remarks
and --list-tagged
Deprecated the option --auto
from pwdirectives
Fixed several minor bugs
Version 2023.1.5, released on 2023-08-31
New experimental support for Fortran assumed-shape arrays
New remark RMK015: Tune compiler optimization flags to increase the speed of the code
New remark RMK016: Tune compiler optimization flags to avoid potential changes in floating point precision
Several fixes and improvements in the CLI output
Version 2023.1.4, released on 2023-08-10
Tuned PWR044 to ignore integer constant expression
Fixed several minor bugs
Version 2023.1.3, released on 2023-07-14
The screening report now also prints the total number of files per language
Version 2023.1.2, released on 2023-07-07
Added check PWR060 for optimizing loops with gather memory access patterns
Removed outdated how-to on using Codee with Canny algorithm
Fixed several minor bugs
Version 2023.1.1, released on 2023-06-30
Added check PWR049 for optimizing loops with iterator-dependent conditions
New Codee --target-arch
flag, which allows the user to filter Codee checkers by their target architecture of interest
The option --check-install
was removed from Codee
The option --configuration-wizard
was removed from Codee
The target compiler setting is no longer stored in the system
The target compiler is no longer taken from the compile_commands.json. Now it can only be set through Codee CLI flags
Revamp tag filter system:
Added `--only-tags: Shows items tagged with the specified tags
Change in behavior for --include-tags
: Shows items tagged with the specified tags or if non-excluded by default
Removed --exclude-tags
Reduce the occurrence of PWR016 by reporting per variable instead of per each variable use
The error messaging related to the target compiler support was improved
The screening report and the checks report now print suggestions to use the Compiler Driven Mode
The main tags of many checks were updated
Version 2023.1.0, released on April 2022
The --actions
report was reimplemented to deliver the new --checks
report
It is no longer limited to be used by function (as the actions report was). Therefore, it is available for any code snippet
It reports a list of checks like most of the static code analyzers
New --check-install
argument to validate the correct installation of Codee
New recommendations for floating point scalar optimizations PWR044, PWR045, PWR046, PWR048
pwdirectives
modes reorganization. Now the different rewriting modes are grouped in --vector
, --multi
and --offload
options. See the --help
menu for more details
New pwdirective --memory loop-interchage
option that performs loop interchange whenever is recommended (PWR039)
Former OPP003 have been split into PWR052, PWR054 and PWR057 respectively
Codee now ignores files if they were already analyzed in the same run, even if they are explicitly repeated in the input
New input filtering syntax. Now loops and functions of the same file can be filtered with a simpler syntax: "file:loop1,loop2,loop3", instead of the former "file:loop1 file:loop2 file:loop3"
New --fp-precision
flag which allows filtering checks given their floating point computation strictness
The "Loop support" category was simplified in a new "Codee mode" category
Loops are now categorized as "Guided" or "Auto" depending on the Codee capabilities
Now pwdirectives --auto
only applies to loops with Codee Auto mode support
The verbosity level flag --level <n>
was simplified to --verbose
Improve compiler vectorization detection
Make more explicit which target compiler and optimization flags are being used
Improve detection of compiler optimization reports such as loop unrolling messages and loop replacements by library calls
pwdirectives --auto
now prints the "reason" reported by the compiler when it could not vectorize the loop annotated by Codee
Add new "Actions" column with the detected actions in pwloops --summary
Changed variable representation to show which array dimension or type member is being used
pwdirectives
can now apply a combination of directives (in a single run) to the same loop
Add support for rewriting competing directives from different vendors in the scope of offloading computations and vectorization
Now the user can accept EULA directly using --accept-eula
option or defining the CODEE_ACCEPT_EULA=yes
environment variable
Upgraded libpw to LLVM 14, integrating Flang support from upstream
Added basic support for Intel oneAPI compiler suite
Version 1.6.0, released on 2022-11-18
New Codee default behavior: Compiler Driven Analysis
A target compiler is now mandatory.
Codee will generate its reports driven by the target compiler (limited to vectorization related actions for now)
SIMD opportunities (OPP002) are no longer reported for a loop if the target compiler could already auto-vectorize it by itself
New pwdirectives
output: now it shows if Codee could finally vectorize the loops that the target compiler originally could not
Improved support for more compilers and verions:
Added support Microsft Visual C/C++ compiler
Added support for Intel C/C++ compilers
Improved support for LLVM and GNU C/C++ compilers
RMK011 is no longer reported, and it was removed from the catalog
Fixed incorrect filtering of OPP002 and OPP003
Version 1.5.1, released on 2022-09-29
Reduced the number of Screening Report levels, so 2 and 3 become 1 and 2 respectively
Improved --show-progress
flag to allow function-level progress report
The recommendation PWR024 is now shown by default for non OpenMP-compliant loops as long as they
are also opportunities
Version 1.5.0, released on 2022-09-15
Loop difficulty levels were replaced by "Codee support categories"
Former "Low" difficulty level loops are now of "Auto" or "Guided" categories
Former "Medium" difficulty loops are now of the "Development" category
Former "High" difficulty loops are now loops of the "Roadmap" category
Improved support for detecting temporary arrays
Added the recommendations PWR007 and PWR008 for Fortran
Now compilation flags in Windows are interpret for MSVC by default. This behavior can be tunned with the --driver-mode
option
pwdirectives
:
--auto
now requires the user to filter by function. It no longer rewrites entire files
Version 1.4.1, released on 2022-08-04
Improved handling of case-insensitive identifiers on Fortran
Improved reporting of Fortran unsupported features
Fixed recommendation PWR043 incorrectly reported as PWR042
Changed the loop filter to also allow inner loops. To keep the previous behaviour use the flag --single-loop
pwdirectives
:
Fixed --omp simd
to be equivalent to --simd omp
Version 1.4.0, released on 2022-07-01
New recommendations PWR042 and PWR043 related to loop interchange opportunities
Added support for compilation databases (compile_commands.json) on Fortran code
Added support for cross-architectural and cross-system analysis for GNU/Linux and Android on ARM64
Improved analysis support for automatic, assumed-shape and adjustable array accesses on Fortran loops
Improved support for C++ math functions
Improved performance on analysis of large files
Deprecated PWR033 in favor of PWR022
Added a new how-to on using Codee with Canny algorithm
Updated the EULA
pwreport
:
Rename --evaluation
to --screening
Added --show-breakdown
to the screening report
Version 1.3.3, released on 2022-06-16
Added new flag --no-warnings
to remove all Codee warnings
Added a new suggestion in pwreport --actions --level 2
for pwdirectives --auto
mode
Improved loop difficulty classification for several kinds of loops
Fixed several minor bug fixes
Version 1.3.2, released on 2022-05-26
Appentra Parallelware Analyzer is now Codee
Improved analysis support for Automatic Arrays on Fortran
Improved reporting on loop complexity for pwreport --actions
and pwloops --summary
Improved table format so long filenames don't make the table too wide
pwreport
:
Included --evaluation
with a new --level 3
report that breaks down loop complexity by function
Improved --evaluation
report output format with new "Total" rows and a new Code Coverage table
pwloops
:
Improved "codee" column on --vector-support
to report as another compiler
Now --show-messages
prints Codee cost model messages
Version 1.3.1, released on 2022-04-25
pwreport
:
Add OpenACC suggestion to run pwdirectives
on offloading opportunities
Improve wording in --evaluation
pwdirectives
:
Use "schedule(static)" clause when autoparallelizing GPU offloading opportunities with OpenMP
Version 1.3.0, released on 2022-04-19
Included a new vectorization cost model which proposes vectorization only for eligible loops
Prints out why ineligible loops are not vectorization friendly (new remarks RMK010, RMK011, RMK012, RMK013 and RMK014)
Included a new memory cost model which proposes loop interchange only for eligible loops
Included a new classification of loops by the degree of difficulty from performance optimization viewpoint
pwreport
:
function or loop filter is necessary for --actions
analysis
Added experimental support for Fortran (Linux only)
Version 1.2.1, released on 2022-02-18
New recommendations PWR039 and PWR040
pwreport
:
Links to the knowledge-base are now suggested in --actions
with --level 2
Version 1.2.0, released on 2022-02-03
libpw upgraded to LLVM 13
New recommendations PWR028, PWR030, PWR031, PWR032, PWR033 PWR037 and PWR038. Remarks RMK004, RMK005 and RMK006 were promoted to PWR034, PWR035 and PWR036 respectively
Now using a compilation database without any input files will default to analyzing all database entries
Changed default tag visibility: use --include-tags all
to enable all checks again
pwreport
:
New --evaluation
analysis which is the new default
New --non-analyzable
report that shows the unsupported features in the code
New --actions
report that superseeds --hotpot
/--summary
. Use --show-info
to show the analysis messages. Empty entries will be ommited unless --show-empty
is used.
The --level
flag controlling the detail now has levels 0, 1 and 2 and it defaults to 1
Version 1.0.0, released on 2021-10-07
Fixed bug preventing pwloops --vector-support
from categorizing gcc
messages
Fixed bug causing result count on pwloops --vector-support
to be incorrect
Improved OPP001 and OPP03 classification by taking into account floating point operations
pwcheck
: removed since all its analyses are now part of pwreport
pwreport
1.0.0: incorporated the data race analysis (--races
) from the removed pwcheck
tool, new recommendation PWR006 and new --list-tagged
option
pwloops
1.0.0: improved --vector-support
analysis
pwtrainer
1.7.0: new graphical user interface tool to ease training and experimentation
Version 0.19.2, released on 2021-09-29
Fixed bug causing crashes for codes that use macros containing several loops
Fixed bug causing pwreport --vector-support
to miss some relevant compiler messages
Fixed bug preventing files without filters from being analyzed when passed along others with filters
Fixed a regression causing --config
to be incorrectly compatible with compiler flags arguments
pwreport
0.6.2: improved --functions
analysis by adding a new "Analyzable" column and by reporting all defined functions by default regardless of whether they are used unless --include-undef
or --excluded-unused
are specified
Version 0.19.1, released on 2021-09-08
Fixed a regression causing analysis of files including "omp.h" to fail
Fixed a regression introducing incorrect opportunity codes and causing incorrect tag filtering
Fixed bug preventing function filtering from working correctly for directories
Updated quickstarts with up-to-date commands and outputs
Added missing PWR017 check example
Version 0.19.0, released on 2021-08-19
libpw upgraded to LLVM 12
Fixed bug reporting standard globals (e.g. stdout, errno) on PWR001
Fixed bug causing misplaced error messages
Tags for checks, remarks and opportunities allow filtering through the new --include-tags
and --exclude-tags
arguments
New input syntax allowing to specify a function name or loop location along the filename supersedes the --loop
and --function
filters; also supported by --exclude
Added more information to --version
regarding the supported standards, libraries and compilers
pwreport
0.6.0: new --functions
analysis providing an overview of used functions; new --show-breakdown
replacing --detail-opportunities
and --detail-checks
; new set of --list-*
arguments to list supported checks, remarks and opportunities
pwcheck
0.6.0: new defects PWD009-011 and recommendations PWR026-027
pwloops
0.6.0: new --vector-support
report to compare vectorization capabilities between different installed compilers
Version 0.18.2, released on 2021-06-18
Added an error message to alert whenever a filter or target input does not match any code
Fixed bug causing linked libraries to be treated as inputs
Fixed a regression causing crashes for some codes with read-only arguments
pwreport
0.5.2: parallel compute patterns are now shown for opportunities in --level 3
and fixed a regression causing the loss of the suggestion to use compiler flags when failures exist
pwloops
0.5.2: fixed bug causing incorrect filters in some suggestions
pwdirectives
0.5.2: fixed bug preventing --explicit-privatization
from working
Version 0.18.1, released on 2021-06-03
Fixed bugs causing some interprocedural analyses to fail
Fixed bug causing a crash when analyzing multiple files
Fixed bug causing suggestions to omit configuration file arguments
Fixed bug causing pwreport
to list some function declarations
Version 0.18.0, released on 2021-05-31
Added offload opportunities differentiated from multi-threading ones
New MATMUL quickstart example available in examples/matmul
Option --temporary
allows to declare temporaries to ease analysis
pwreport
0.5.0: new default --hotspot
structured report provides details on all actionable items including defects, recommendations, opportunities and remarks (new)
pwcheck
0.14.0: 8 new recommendations PWR018-025 focusing on vectorization
pwloops
0.5.0: offload opportunities support and improved --non-analyzable
messages
pwdirectives
0.5.0: new --omp offload+simd
hybrid parallelization
Version 0.17.0, released on 2021-02-22
SIMD opportunities now have stricter requirements and can be inside OpenMP parallel regions
Extended function, loop and variable filters to all reports
Extended --csv
and --json
output formats to all reports
Fixed bug preventing pwloops --code
from showing multiple opportunity types
pwreport
0.4.0: reduced analysis time by removing double pass
pwcheck
0.13.0: new structured report and three levels of detail with --level
pwloops
0.4.0: loops now reported as trees, new --memory-accesses
report and "dep" pattern
pwdirectives
0.4.0: SIMD support for multiple compilers and OpenMP, new --auto
mode to parallelize all SIMD opportunities detected, grouped opportunities support, new OpenMP hybrid (multi+simd) parallelization mode and --explicit-privatization
strategy
Version 0.16.0, released on 2020-11-03
libpw upgraded to LLVM 10.0
Parallelization opportunities have now stricter requirements
pwreport
0.3.0: new CSV output format
pwcheck
0.12.0: new filtering options, defects PWD004-008 and recommendations PWR011-016
pwloops
0.3.0: new --memory-footprint
analysis, --summary
columns and --non-analyzable
output format
pwdirectives
0.3.0: non-contiguous-memory array offloading with OpenMP enter/exit data
Fixed bug causing incorrect failed files counts in pwcheck
and pwreport
Version 0.15.1, released on 2020-08-21
Fixed bug causing --exclude
to fail when mixing absolute and relative paths
pwcheck
0.11.1: fixed bug causing analysis to finish prematurely
Version 0.15.0, released on 2020-06-23
libpw upgraded to LLVM 7.1
EULA acceptance is now required upon first execution
Now --config
also accepts compile_commands.json files
Added --lang
filter to analyze only source files of specific programming language
Added --analyze-headers
to consider header files as regular source files
pwcheck
0.11.0: new checks PWD002, PWR009 and PWR010
pwloops
0.2.0: memory access patterns are now reported along computational ones
pwdirectives
0.2.0: OpenMP offloading with or without teams
Version 0.14.2, released on 2020-05-28
Fixed bug causing the printing of a significant number of empty lines
Fixed bug causing missing messages with --verbose
Version 0.14.1, released on 2020-05-20
Fixed bug causing crash due to invalid PWA_LICENSE_PATH
Version 0.14.0, released on 2020-05-06
Multiple file analysis via configuration (--config <file>
)
Multiple file and flag info can be seen with --show-progress --verbose
Windows and MacOS now supported without Fortran
Fortran support is reported in --version
Header files are not analyzed unless included
License check delayed to allow some informational usages
pwcheck
0.10.1: data race analysis by file and data-race-free reporting
pwreport
0.2.1: report summary of data races and data-race-frees
pwloops
0.1.4: improved --non-analyzable
messages
Version 0.13.1, released on 2020-03-16
pwdirectives
0.1.3: fixed crash when looking for the opportunity
Version 0.13.0, released on 2020-03-04
Moved --summary
analysis from pwcheck
to pwreport
Added --show-failures
common option to enable error reporting
pwcheck
0.10.0: data race analysis and fixed wrong messages
pwreport
0.2.0: new default summary analysis
pwloops
0.1.2: converted --patterns
into --summary
and added opportunity information
Version 0.12.1, released on 2019-12-12
libpw upgraded to LLVM 7
pwcheck
0.9.4: match the way pwreport
processes files
pwreport
0.1.1: fixed Fortran metrics not being computed
Version 0.12.0, released on 2019-12-12
pwreport
0.1.0: new binary
Version 0.11.1, released on 2019-12-03
Include bundled headers for LIBC and OpenMP by default
Version 0.11.0, released on 2019-11-26
pwanalyzer
0.8.0: removed overview analysis
pwreport
0.1.0: overview results as JSON (proof of concept)
Version 0.10.5, released on 2019-11-05
pwcheck
0.9.3: summary report and filtering of defects or recommendations
pwloops
0.1.2: output non-analyzable loops
Version 0.10.4, released on 2019-10-11
Lowered minimum required GLIBC to 2.19
Version 0.10.3, released on 2019-09-17
A valid license file is now required to run any program
pwanalyzer
0.7.1
pwcheck
0.9.2
pwloops
0.1.1: changed default analysis to datascoping
pwdirectives
0.1.2: fixed bug allowing to parallelize already parallel loops
Version 0.10.2, released on 2019-08-28
pwcheck
0.9.1: PWD003 support for C and code examples
Version 0.10.1, released on 2019-08-02
pwdirectives
0.1.1: fixed bug preventing OpenMP offloading parallelization
pwcheck
0.9.0: new PWD003 check for Fortran
libpw: updated to version 0.11.0
Version 0.10.0, released on 2019-07-02
pwanalyzer
0.7.0
pwcheck
0.8.0: new binary
pwloops
0.1.0: new binary
pwdirectives
0.1.0: new binary
libpw: updated to version 0.10.0
Version 2024.4.5, released on 2025-01-24 Version 2024.4.4, released on 2025-01-21 Version 2024.4.3, released on 2025-01-08 Version 2024.4.2, released on 2024-12-11 Version 2024.4.1, released on 2024-11-21 Version 2024.4.0, released on 2024-11-14 Version 2024.3.5, released on 2024-10-29 Version 2024.3.4, released on 2024-10-15 Version 2024.3.3, released on 2024-10-01 Version 2024.3.2, released on 2024-09-13 Version 2024.3.1, released on 2024-09-04 Version 2024.3.0, released on 2024-09-03 Version 2024.2.6, released on 2024-07-30 Version 2024.2.5, released on 2024-07-10 Version 2024.2.4, released on 2024-06-12 Version 2024.2.3, released on 2024-06-05 Version 2024.2.2, released on 2024-04-19 Version 2024.2.1, released on 2024-04-17 Version 2024.2.0, released on 2024-04-08 Version 2024.1.4, released on 2024-03-26 Version 2024.1.3, released on 2024-03-19 Version 2024.1.2, released on 2024-02-21 Version 2024.1.1, released on 2024-02-01 Version 2023.2.6, released on 2024-01-16 Version 2023.2.5, released on 2024-01-08 Version 2023.2.4, released on 2023-12-05 Version 2023.2.3, released on 2023-11-23 Version 2023.2.2, released on 2023-11-15 Version 2023.2.1, released on 2023-11-07 Version 2023.2.0, released on 2023-10-24 Version 2023.1.7, released on 2023-10-04 Version 2023.1.6, released on 2023-09-19 Version 2023.1.5, released on 2023-08-31 Version 2023.1.4, released on 2023-08-10 Version 2023.1.3, released on 2023-07-14 Version 2023.1.2, released on 2023-07-07 Version 2023.1.1, released on 2023-06-30 Version 2023.1.0, released on April 2022 Version 1.6.0, released on 2022-11-18 Version 1.5.1, released on 2022-09-29 Version 1.5.0, released on 2022-09-15 Version 1.4.1, released on 2022-08-04 Version 1.4.0, released on 2022-07-01 Version 1.3.3, released on 2022-06-16 Version 1.3.2, released on 2022-05-26 Version 1.3.1, released on 2022-04-25 Version 1.3.0, released on 2022-04-19 Version 1.2.1, released on 2022-02-18 Version 1.2.0, released on 2022-02-03 Version 1.0.0, released on 2021-10-07 Version 0.19.2, released on 2021-09-29 Version 0.19.1, released on 2021-09-08 Version 0.19.0, released on 2021-08-19 Version 0.18.2, released on 2021-06-18 Version 0.18.1, released on 2021-06-03 Version 0.18.0, released on 2021-05-31 Version 0.17.0, released on 2021-02-22 Version 0.16.0, released on 2020-11-03 Version 0.15.1, released on 2020-08-21 Version 0.15.0, released on 2020-06-23 Version 0.14.2, released on 2020-05-28 Version 0.14.1, released on 2020-05-20 Version 0.14.0, released on 2020-05-06 Version 0.13.1, released on 2020-03-16 Version 0.13.0, released on 2020-03-04 Version 0.12.1, released on 2019-12-12 Version 0.12.0, released on 2019-12-12 Version 0.11.1, released on 2019-12-03 Version 0.11.0, released on 2019-11-26 Version 0.10.5, released on 2019-11-05 Version 0.10.4, released on 2019-10-11 Version 0.10.3, released on 2019-09-17 Version 0.10.2, released on 2019-08-28 Version 0.10.1, released on 2019-08-02 Version 0.10.0, released on 2019-07-02