SourceForge has been redesigned. Learn more.

coan / News: Recent posts

Announcing coan v6.0.1

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.

Posted by Mike Kinghan 2014-09-16

Announcing coan v6.0

This feature release is the most extensive since coan 4.0:

  • Lexical scanning and expression parsing are re-written much more efficiently, enabling coan 6.0 to process input on average about twice as fast as coan 5.2
  • Macro-expansion code is rewritten from scratch to cope robustly with function-like macro expansions for the first time.
  • The --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.
  • The --explain option of the symbols command is radically reworked to report the successive steps of a macro expansion.
  • The --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.
  • An informational diagnostic is now issued whenever a #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.
  • The alternative operator keywords, and, or, not, etc. are now recognized
  • The symbols command now always reports the provenance of a reported symbol:
    • configured global, i.e. by a commandline -D or -U option
    • configured transient, i.e. by an in-source #define or #undef directive
    • unconfigured, i.e. neither of the above... read more
Posted by Mike Kinghan 2014-08-30

Announcing coan v5.2

This 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

Posted by Mike Kinghan 2013-09-07

Wanted: Mac OS X builder for coan

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.

Posted by Mike Kinghan 2012-06-04

Announcing coan v5.1.2

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.

Posted by Mike Kinghan 2012-06-04

Announcing coan v5.1.1

This bug-fix release closes all 5 open bugs on v5.1

Posted by Mike Kinghan 2012-04-25

Announcing coan 5.1

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.

Posted by Mike Kinghan 2012-02-08

Announcing coan 5.0

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

Posted by Mike Kinghan 2011-12-09

Announcing coan 4.2.4

This minor release closes all (4) open bugs.

Posted by Mike Kinghan 2011-06-29

New tarball

Fresh source tarball uploaded as the old one was missing test_coan/README

Posted by Mike Kinghan 2011-04-29

Statically linked Windows .exes

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.

Posted by Mike Kinghan 2011-04-28

Announcing coan 4.2.3

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

Posted by Mike Kinghan 2011-04-28

Announcing coan 4.2.2

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.

Posted by Mike Kinghan 2010-12-20

Yanking release 4.2

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.

Posted by Mike Kinghan 2010-12-19

Announcing coan 4.2

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

Posted by Mike Kinghan 2010-12-16

Announcing coan 4.1

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

Posted by Mike Kinghan 2010-04-04

Announcing coan v4.0.1

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

Posted by Mike Kinghan 2010-03-11

Announcing coan v4.0

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.

Posted by Mike Kinghan 2010-02-01