Releases: PlasmaFAIR/fortitude
Releases · PlasmaFAIR/fortitude
v0.6.2
Bug-fixes
- Fixes
unnamed-end-statement
replacing whitespace after the end statement when running in--fix
mode
What's Changed
- Fix
Node::edit_replacement
eating newlines by @ZedThree in #225 - Bump version to 0.6.2 by @LiamPattinson in #226
Full Changelog: v0.6.1...v0.6.2
v0.6.1
Bug fixes
- Fixes to the
star-kind
rule are now considered unsafe, and the documentation has been updated. - Fixed broken link the
README
.
What's Changed
- Fix link to rules table in Readme by @imciner2 in #217
- Bugfix:
star-kind
fix set to unsafe by @LiamPattinson in #218 - Bump version to 0.6.1 by @LiamPattinson in #219
New Contributors
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Overview
New Features
- Adds
--preview
flag. Going forward, many new features will be hidden behind this prior to a stable release. - Adds autofixes.
- A subset of rules can now be fixed automatically by passing
--fix
or--unsafe-fix
(mostly style-based rules) - Fixable rules are highlighted in the output
- See the new rules page for an overview of which rules are now fixable
- A subset of rules can now be fixed automatically by passing
- Adds many more output formats, including SARIF and GitHub/GitLab CI
- Adds rules to the
modules
category for checking accessibility in modules (both in preview mode)missing-accessibility-statement
requires you to explicitly declare the default accessibility toprivate
orpublic
default-public-accessibility
requires you to set the default accessibility toprivate
- Adds rules to the
style
category:missing-double-colon
requires variable declarations to include::
, e.g.integer :: i
instead ofinteger i
.incorrect-space-before-comment
requires at least two spaces before an inline comment.
- Adds rules to the
typing
category:external-procedure
warns for the use of procedures within implicit interfaces using theexternal
declaration.implicit-external-procedures
warns when a bareimplicit none
is used instead ofimplicit none (type, external)
, which forbids implicit typing when calling external procedures.
- Adds the 'obsolescent' rule category for catching outdated Fortran features, with three new rules:
common-block
statement-function
entry-statement
- Adds an optional progress bar -- useful when running on very large projects or on slower hardware.
- The
no-real-suffix
rule has been upgraded, and no longer complains in cases where no precision would be lost, e.g:
use, intrinsic :: iso_fortran_env, only: dp => real64
real(dp), parameter :: x = 3.141592653589 ! Error, RHS is single precision, precision lost in assignment
real(dp), parameter :: x = 3.141592653589_dp ! Okay
real(dp), parameter :: y = 1.0 ! Okay, no precision lost
- We have docs! 🎉
Bug-fixes
trailing-whitespace
andline-too-long
can handle multibyte UTF-8 characters in strings and comments- Correctly report number of files scanned on completion
Breaking changes
- The rule
external-function
has been renamedprocedure-not-in-module
to avoid confusion with the newexternal-procedure
rule.
What's Changed
- Add
--preview
option by @ZedThree in #151 - Add fancy progress bar by @LiamPattinson in #145
- Don't require argument for CLI
--preview
by @ZedThree in #153 - Show preview rules in
explain
by @ZedThree in #154 - Less aggressive warnings for
no-real-suffix
by @LiamPattinson in #156 - Add rule for statement functions by @ZedThree in #162
- Add rule for missing
private
statements in modules by @ZedThree in #150 - Move statement-function rule to preview set by @LiamPattinson in #164
- Add rule
common-block
by @LiamPattinson in #165 - Bump tree-sitter-fortran by @ZedThree in #167
- Add rule for obsolescent
entry
statement by @ZedThree in #169 - Add rule for missing double-colon in variable decls by @ZedThree in #171
- Bugfix: report number of files scanned by @LiamPattinson in #173
- Print git commit and extra info with
--version
by @LiamPattinson in #174 - Fix failing build/release CI action by @LiamPattinson in #176
- Add (many) more output formats by @ZedThree in #177
- Add fix for
deprecated-relational-operators
by @ZedThree in #182 - Add fix for
old-style-array-literal
by @ZedThree in #183 - Add fix for missing label on
exit
/cycle
by @ZedThree in #184 - Add fix for
star-kinds
by @LiamPattinson in #186 - Add automatic fixes by @ZedThree in #181
- Add fix for
unnamed-end-statement
by @LiamPattinson in #185 - Add fix for
trailing-whitespace
by @LiamPattinson in #187 - Bugfix:
DiagnosticMessages
were created on pre-transformed file by @ZedThree in #191 - Add rule for implicit external procedures by @ZedThree in #192
- Add check for
external
procedures by @ZedThree in #195 - Add rule for incorrect whitespace before comment by @LiamPattinson in #194
- Bugfix: utf-8 multi-byte characters breaking diagnostic output by @LiamPattinson in #198
- maint: Move
profile.dev.package
block to top-levelCargo.toml
by @ZedThree in #201 - Rename
external-function
toprocedure-not-in-module
by @ZedThree in #200 - Add sales-pitch to README by @LiamPattinson in #203
- Add basic docs by @ZedThree in #210
- Version 0.6.0 by @LiamPattinson in #212
Full Changelog: v0.5.1...v0.6.0
v0.5.1
Overview
- Fixes a performance bug that was limiting the possible speed-up due to parallel file checking.
- Fixes a bug in which warnings were raised for
procedure
dummy-arguments without an intent. - Clarifies
check
help text to note that directories are recursively searched.
What's Changed
- Remove
AstRule::apply
by @ZedThree in #138 - Don't warn on missing intent for
procedure
arguments by @ZedThree in #139 - Better parallel performance by @LiamPattinson in #137
- Clarify check help text for recursive file searches by @LiamPattinson in #143
- Update to version 0.5.1 by @LiamPattinson in #141
Full Changelog: v0.5.0...v0.5.1
v0.5.0
Overview
This release adds a lot of internal Ruff-like functionality (much of it borrowed directly from Ruff!), and has made both the CLI and config files more user-friendly:
- Outputs a success message when no errors are found.
- Rules can be selected by name as well as by code, e.g.
--select=line-too-long
- Entire rule categories can be toggled, either by name or by code, e.g.
--select=T
or--ignore=typing
- Multiple output modes can be selected using
--output-format=full/concise/json
- Fixed bugs in the config file reader, TOML errors are now propagated to the user
- Checking now occurs in parallel, giving a speed boost on larger projects
We've also put in place a lot of the required infrastructure for auto-fixes, so we expect to have that working by the next release.
What's Changed
- Update README install instructions by @LiamPattinson in #93
- Make
check
functions static by @ZedThree in #97 - Use ruff's diagnostics crate by @ZedThree in #96
- Add crate for proc-macros by @ZedThree in #98
- Update dev README to provide correct commands for installing from source by @jatkinson1000 in #102
- Add fix for superfluous implicit none by @LiamPattinson in #99
- Add a success message when all checks are passed and a summary of number of files scanned by @jatkinson1000 in #104
- Add
Rule
enum by @ZedThree in #107 - Add CITATION.cff, update authors lists by @LiamPattinson in #109
- Fix explain bug with RuleSelector, improve explain output by @LiamPattinson in #110
- Enable more sophisticated rule selection by @ZedThree in #108
- Select rules by name by @LiamPattinson in #111
- Select categories by name by @LiamPattinson in #112
- Make
explain
arguments positional by @ZedThree in #113 - Remove deleted flag from help text by @ZedThree in #115
- Refactor: Use
strum_macros
to get rule and category names by @LiamPattinson in #116 - Add some basic integrated tests by @ZedThree in #117
- Convert unit tests to snapshot tests by @ZedThree in #121
- CI: Bump deprecated macos runner by @ZedThree in #123
- Fix reading config files by @ZedThree in #124
- Update precision explanations by @LiamPattinson in #126
- docs: Clarify how
check
searches for files by @ZedThree in #128 - CI: Only format/lint on pushes by @ZedThree in #130
- Add structure for more output formats by @ZedThree in #127
- Parallelise check by @LiamPattinson in #129
- CI: Check installation by @ZedThree in #131
- Update version to 0.5.0 by @LiamPattinson in #132
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
- Add ranges to
Violation
by @ZedThree in #85 - Add support for config files by @ZedThree in #87
- Add setting for file extensions to check by @ZedThree in #89
- Bump tree-sitter-fortran version by @ZedThree in #92
- Update version to 0.4.0 by @LiamPattinson in #91
Full Changelog: v0.3.0...v0.4.0
v0.3.0
v0.3.0
Some big changes over 0.2, including:
- A rewrite to simplify a lot of the internals
- Much improved outputs that show a snippet of any offending code
- Use a updated version of
tree-sitter-fortran
that can handle more pre-processor statements - Many new rules
What's Changed
- Add precision category by @LiamPattinson in #34
- Add release info to README.dev.md by @LiamPattinson in #37
- Better AST methods by @LiamPattinson in #41
- Bugfix: newline printed for files without rule violations by @LiamPattinson in #42
- Print context of violations by @ZedThree in #45
- Overhaul core by @LiamPattinson in #46
- Update tree-sitter-fortran to v0.1.0 by @ZedThree in #47
- Return multiple violations from rules by @ZedThree in #49
- Add rule for missing
intent
attribute by @ZedThree in #50 - Fix clippy warnings by @ZedThree in #51
- Fix clippy warning, update pre-commit hook by @LiamPattinson in #52
- Add check for old-style array literals
(/.../)
by @ZedThree in #54 - Add rule for missing label on
exit
/cycle
by @ZedThree in #53 - Convert AST free functions into a trait by @ZedThree in #59
- Add rule for assumed size dummy arguments by @ZedThree in #57
- Add rule for initialisation in declarations by @ZedThree in #72
- Column number for text rules by @ZedThree in #58
- Add rules for
character
assumed size issues by @ZedThree in #75 - Implicit real kinds rule by @LiamPattinson in #81
- Fix incorrect test name for implicit real kinds rule by @LiamPattinson in #83
- Add rule for deprecated relational operators by @ZedThree in #82
- Add rule for non-explicit end statements by @LiamPattinson in #84
- Update version to 0.3.0 by @LiamPattinson in #80
New Contributors
Full Changelog: v0.2.0...v0.3.0
v0.2.0
v0.2.0
- No new rules, but multiple existing rules have been upgraded.
- The code runs about 10x faster than before!
- The 'best practices' category is gone, and has been replaced by multiple more descriptive categories.
- 'strict' mode is gone, and for now all rules are switched on by default.
- Internally, the project has been largely cleaned up and restructured.
- Better docs in the repo.
What's Changed
- Remove strict mode by @LiamPattinson in #15
- Simplify method types by @LiamPattinson in #19
- Recategorise rules, restructure project by @LiamPattinson in #22
- Contributing docs by @LiamPattinson in #25
- Use lazy-regex crate instead of plain regex by @LiamPattinson in #27
- Remove tree-sitter-fortran submodule by @LiamPattinson in #28
- Remove tree-sitter queries by @LiamPattinson in #30
- Optimise tree sitter usage by @LiamPattinson in #31
- Bump versions 0.2.0 by @LiamPattinson in #32
Full Changelog: v0.1.0...v0.2.0
Initial Release
v0.1.0 Fix installed package name