This patch release corrects minor autotooling bugs in the coan test-harness. There are no changes to the coan executable apart from the version it reports.
This feature release is the most extensive since coan 4.0:
--evalsyms
option of the symbols
command was of little investigative use. It is removed and a new option --expand
is introduced. --expand
reports the full macro expansion of a symbol invocation, and the integer to which it evaluates, if any.--explain
option of the symbols
command is radically reworked to report the successive steps of a macro expansion.--once
option is removed and replaced by two new options --once-only
and --once-per-file
. The former is equivalent to the old --once
. The latter causes each distinct reported item to be reported just once per input file.#define
or #undef
directive retrospectively affects the meaning of previously defined symbols, e.g. if #define BAR 1
is encountered after #define FOO BAR
, or when the commandline option -DFOO=BAR
is in effect.and
, or
, not
, etc. are now recognized#define
or #undef
directiveThis feature release adds two new options to the symbols
command
that analyses the processor macros used in the scanned code:
The --select
option lets you specify a set of symbols or wildcard
prefixes to restrict coan's reporting to matching symbols.
The --explain
option directs coan to "backtrace" the expansion of
each macro M that is reported by recursively reporting the expansion of each
macro that is expanded in expanding M. ... read more
I would be most grateful to hear from any Mac OS X developer who can report on build success or failure for coan on recent OS X releases.
This patch release provides build support for the Clang C++ compiler >= v3.1, in addition to GCC and MSVC++.
New binary packages are available for:
- Fedora 17
- SUSE Enterprise Linux 11 SP 2
- Ubuntu 12.04
The one open bug on v5.1.1 is closed.
A new commandline option --no-transients is provided. By default an in-source #define SYM or #undef SYM directive is transiently treated as a -DSYM or -USYM option within the source file where it is found. --no-transients suppresses this behaviour, forcing coan to take no account of #define and #undef directives. This feature was sponsored by Qualcomm (UK) Ltd and has been requested by other users.
Release 5.0 is a radical refactoring of coan from C to C++, making way for much deeper improvements in design, performance and robustness.
Two major new features are introduced:
The new 'spin' command allows a selected configuration of an entire codeline to be generated under a target directory, replicating the relative directory structure of the original sources.
Macro-expansion is now supported. Definitions of function-like macros that are #define-ed in-source are parsed and invocations within subsequent directives are evaluated.... read more
Fresh source tarball uploaded as the old one was missing test_coan/README
The Windows executables initially released with 4.2.3 were dynamically linked. This was an oversight, creating a dll dependency on MSCVRT10. They are now replaced with statically linked versions.
This bug-fix release closes all bugs open on v4.2.2.
- A native executable is now provided for Win64 as well as Win32.
- Windows builds are now run for MS Visual C++ as well as MinGW.
- The --version command now reports the 32/64-bitness of the executable.
A complete listing of the changes can be found in the Changelog at http://coan2.sourceforge.net/
The serious regression raised against 4.2, Sourceforge bug 3139307, is now fixed.
Sourceforge bugs 3140329 and 3140331, which identify a seg-fault for empty input files, are now fixed.
All other open bugs on v4.2 are fixed.
A complete listing of the changes can be found in the changelog.
I've taken down the v4.2 release in response to bug reports:
- 3139307 - a bad regression.
- 3140329 & 3140331 - seg faults in two fairly exceptional use cases, which must have been lurking for years.
Fixes shouldn't be long.
Coan now factors active #define and #undef directives into the evaluation of subsequent #if-conditions in the same source file. These directives are added to the commandline --define and --undef options for the duration of the source file where they appear. This eliminates one of the last remaining blindspots in Coan's simulation of the C preprocessor and paves the way to remove the others.
Simplification of #if-conditions now preserves parentheses for readability where the meaning would otherwise depend on operator precedence.... read more
Coan is supported on MacOS for the first time.
The new option -m, --implicit allows a configuration to implicitly
--undef all symbols that are not --define-ed, allowing the user to
express the blanket assumption that symbols are undefined unless
explicitly defined.
The handling of integer constants in #if-directives becomes simpler and
more intuitive. **Commandline compatibility with previous versions is
broken to achieve this**.... read more
This is a bug-fix release with related upgrading of functionality. The most useful improvements are:-
The long-standing laxity of integer-type recognition is addressed. Coan now correctly construes and calculates with values
of all the C integral types from char through unsigned long long. The integer promotions and the usual arithmetic conversions are applied.
Character constants are handled by integer parsing for the first time. Multi-byte utf8 character constants and character constants
expressed as escaped hex or octal codes, as well as ascii characters, are correctly evaluated.... read more
Coan v4.0 is the 4th major release of the tool formerly known as Sunifdef. The new name reflects an enlargement of the tool's functional scope to become a C/C++ Configuration Analyser
All further development and bug-fixing will take place on the coan code-line.