Changelog¶
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.
0.10 - 2025-09-03¶
Added¶
The
--summaryflag toipt format,ipt checkandipt lintis added. Instead of a full error log, this shows a brief summary of all errors during operation.Linting rule
CodeStyleTrailingEmptyLineadded
Fixed¶
Linting errors now display the correct context output when no file is overwritten and no fixes are applied.
The value of an operation flag is no longer merged with the first argument. The previous version handled the following code
WAVE/SDFR=root: bigWave
as
WAVE/SDFR=root:bigWaveThis is no longer the case and correctly parsed. This limitation is removed from the list of know limitations.
The value of an operation flag can now be a function call.
DoAlert/T=func(0) ""
There is no longer a need to add parenthesis around the argument.
Operation argument parsing has been improved in cases where no comma is set. Ipt can now correctly parse operation calls where each argument is separated by one or more spaces.
Support multiple function return flags
Allow to omit values for arguments in a macro call
Fixed parsing of dollar expressions. We can now additionally support the following dollar variants:
// assignments to a global variable/string/wave using a global string in macros $path:to:name = 42 $path:to:name:of:wave(0, 10) = 1 $(cfs)[0, ncoefs - 2] = $(cfs)[2 * ncoefs - 2 - p] // subwindow with a dollar part DefaultGUIFont/W=$(currentPanel)#Tab0/MAC popup={"Geneva", 12, 0} // dollar part in FuncFit FuncFit $funcname, ... // all remaining arguments and flags are striped away for simplicity // dollar part in the middle of a data folder path root:Packages:foo:$(name):var // calculations for which each part has a dollar expression abs($wx[0] - $wx[1]) // structure access after a dollar expression RemoveFromTable/W=$tableName $(pathToWave).l // static constants as a source of a dollar expression $MainProc#MAGIC = -1
Allow ranged access at string literals
Fixed Windows installer:
The “Create shortcut on desktop” checkbox is no longer shown. This had no effect on the previous version.
The create start menu entry page is no longer shown.
ipt will now always added to PATH by default.
The winget installation will add ipt always to PATH
ipt will now correctly be removed from PATH during uninstall
The installation directory is now completely removed during uninstall
Changed¶
Our parsing strategy has been changed. We explicitely parse whitespace characters and do no longer ignore them now. This allows us to parse more code correctly.
Function calls, wave access and string access do no longer allow whitespace characters between the name and the call/access parenthesis.
We changed our line continuation parsing strategy. The new strategy more closely follows the natural flow of the source code and allows for the correct placement of line continuation characters in more edge cases than the old strategy.
The AST printout (e.g. when done with
--print-ast) now shows line continuation markers for single tokens correctly.Statements now include their trailing comment in their own range. This can be seen when inspecting the AST printout (e.g. with
--print-ast).Our MacOSX binary is now signed with an Apple Distribution certificate and we switched back to a plain binary instead of a MacOSX bundle.
We updated our user documentation to make it more readable. This includes, but is not limited to, the following:
ipt command details are now moved to their respective sub pages
the special features page is now moves to the
ipt formatsectionanalyze rules and linting rules are now moved to their respective sections
added a specification what “error” means to the main page
specify that
ipt lintalways impliesipt format
Removed¶
0.9 - 2025-06-24¶
Added¶
The linting rule
CodeStyleEmptyLineBetweenCodeBlocksis now addedAll pragmas are now aligned like this:
#pragma TextEncoding = "UTF-8" #pragma rtGlobals = 3 #pragma rtFunctionErrors = 1
Multiline function headers are now supported
Function name( variable argument1, // documentation of argument 1 variable argument2 // documentation of argument 2 ) End
Command line interface flag
--noreturn-funcaddedDocumentation for potential issues with output coloring and unicode output added.
Fixed¶
linting rule
ReadabilityMissingParenthesisdoes no longer show repeated log output with recursive ternaries likevariable div = unit == 1 ? 1 : (unit == 2 ? 72 : 72/2.54)
multiline statements are no longer broken if they have a trailing semicolon
Fixed context output of linting error messages. It was gone with a previous update.
log entries will now contain correct positions regardless of the line ending style of the input file. It was broken if old mac style line ending was used (just a carriage return
\r).
Changed¶
error message of linting rule
ReadabilityMissingParenthesisis now simplifieda comma is no longer printed between the arguments of
AppendLayoutObject. Igor Pro does not support a comma with this operation.ANSI escape codes are now automatically enabled if the terminal supports it. This is used for coloring the log entries.
Even if linting errors remain, partial changes will now be applied to the target file.
The debug AST output has been slightly changed. Some printing routines have been simplified.
Removed¶
The feature
ReadabilityElseAfterReturn:Elsehas been removed because inverting the logic of the condition produces an unexpected result if the condition results inNaN. In Igor Pro,NaNis evaluated as false and!NaNis also evaluated as false. Therefore, we cannot provide a simple and generally valid fix.
0.8 - 2025-03-14¶
Added¶
add installer for Windows
Windows binary, installer and uninstaller now have a code sign certificate
add linting rules
CodyStyleFallthroughCaseRequireComment,CodeStyleNoFixme,ReadabilityElseAfterReturn,ReadabilityOneLineVariableInitialization. More information can be found in the respective section.allow to include/exclude rule feature on the cli
allow to use
// NOLINT(rulename)in code to exclude specific rulesadd
// IPT_NORETURNcode tag to calls that never returnadd winget as an install option for Windows
add support to list all features of a specified rule using
ipt lint --list ruleNameoript analyze --list ruleNamedocument limitation on recursive evaluations of linting rules
Fixed¶
fix bug in linting rule
BugproneReservedKeywordsAsIdentifierwhich reported the following line as an error but it isn’t oneMake/O dfr:$wvName/WAVE=wv
fixed spelling in license expiration warning message
fixed spelling mistake in user documentation
Changed¶
The output of
ipt lint --helpandipt analyze --helpis now cleaner and doesn’t list all supported rule names. Useipt lint --listoript analyze --listfor that.Reworked how the AST is internally handled. It is now much easier to extend the AST or add new functions. There should be no difference in the output. If you find one, feel free to report it.
The output of
--print-astis now more descriptive and contain more information.Reworked how we reintroduce manual line continuations. There should be no difference in the output. If you find one, feel free to report it.
The version number that is reported using
ipt --versiondoes now show the correct version format.
0.7 - 2025-01-31¶
Added¶
new command
ipt analyzefor applying specific analysis rulesadd linting rules
ReadabilityMissingParenthesis,BugproneLoopInitializationAssignment,CodeStyleDefaultPragmas,BugproneContradictingOverrideAndFreeFlag,BugproneReservedKeywordsAsIdentifier,CodeStyleEndIfComment,BugproneMissingSwitchDefaultCase. More information can be found in the respective section.add ability to include or exclude certain rules in
ipt lintandipt analyzeadd changelog to user documentation
add documentation of limitation “Merge of operation flag value with first operation argument”
add documentation about severity in the
ipt lintsectionadd icon for executable and website
Fixed¶
fixed linting rule
FixOldStyleFunctionArgument. It does no longer convert a function signature if one of its arguments have documentation attached.fixed some spelling and wording mistakes in the documentation
fixed internal AST
fixed internal AST matcher
Changed¶
ipt lintwarnings are now handled as errors in terms of exit status code