Synopsis - News

July 20, 2010: Release version 0.13.

This is a bugfix release, with a number of issues in the parsers and formatters being fixed.

--Stefan Seefeld

April 17, 2009: Release version 0.12.

Beside a couple of small bug and compatibility fixes, this release contains one important new feature. Macro declarations are handled like other declarations. They can be documented, as well as cross-referenced from call-sites.

--Stefan Seefeld

December 31, 2008: Release version 0.11.

A number of important bugfixes have been accumulated over the last couple of months. In addition, this is the first release that is officially part of the Fedora distribution. Hopefully, others will follow soon. Just in time.

Happy New Year !

--Stefan Seefeld

March 20, 2008: Release version 0.10.

After a very long year, a new release is available, incorporating many structural as well as feature addition changes.

On the structural side, Synopsis' Internal Representation has been redesigned, to better integrate multiple representations, and allow for future additions.

One consequence is, that more data can now carried inside this IR, and don't have to be stored externally. This substantially enhances the user interface.

--Stefan Seefeld

January 30, 2008: Preparing new release version 0.10.

It has been much longer than I would have liked. Busy times...

But after a lot of substantial refactoring, feature additions, and bug fixes, it's time to wrap up the ongoing work and prepare a new release. Among the new features: enhanced documentation of C++ templates, a rewrite of the DocBook formatter, and some fixes for changes in the Python 2.5 grammar.

--Stefan Seefeld

December 20, 2006: Released version 0.9.

A lot of time has gone by after the last release, and a lot of new features have gone into the code.

Among them is much enhanced support for documentation markup, better parsing of C code, and a lot of stylistic enhancements to the formatters, mostly HTML and SXR related. The Tutorial has become more useful, too.

--Stefan Seefeld

December 12, 2006: Update online documentation, prepare for new release.

After a lot of efford that went into document extraction and formatting, the results can now be seen in Synopsis' own online documentation, notably the Manual, as well as the SXR interface.

A little more cleanup, and some work on the tutorial, and we should be ready for the next release.

--Stefan Seefeld

June 09, 2005: Released version 0.8.

Finally, after almost a year, I'm proud to announce a new release.

Even though this release doesn't contain as many user-visible changes as one could imagine after one year of work, it lays the foundation for many new features to come. Stay tuned !

--Stefan Seefeld

June 01, 2005: Added DevGuide, prepare for new release.

As some of the internal redesign finally stabilizes, it is time to document this work and roll a new release. As the new APIs aren't ready for public consumption yet, they are certainly ready for public review, and so I wrote a Developer's Guide that documents all that is there to work on / with.

With some more testing I will hopefully be ready to release synopsis 0.8 by mid-june.

--Stefan Seefeld

March 05, 2005: Enhanced C/C++ parser, new APIs in sight

After some months of refactoring and new development the first results of all the work starts to be visible. The C++ parser got a heavy face-lift. It is now available through a separate API in a stand-alone (shared) C++ library.

Today I finally managed to export the new APIs (PTree, SymbolLookup, Processor) to python using boost.python. The result, though still in the sandbox, is already very promising.

While I'm looking into how to make these APIs publicly available in C++ / python, I'm also continuing the face-lift, replacing the C++ translator that generates the AST from the parse tree by the new APIs. At the same time, the ctool backend will be replaced by a brand-new C parser, based on the same code as the C++ parser.

--Stefan Seefeld

July 20, 2004: synopsis 0.7 released

Synopsis 0.7 is out, finally ! Lots of new features, such as a clear separation of Cpp and Cxx parsers, making it possible to reuse the Cpp parser in the all-new C parser. A new C++ API has been added to easy C++ extension module developement. Now the focus is on the OpenC++ backend, as I'd like to expose a much more rich AST API to python that preserves the original code and thus allows code modification / generation. We'll see how this evolves.

--Stefan Seefeld

December 18, 2003: synopsis 0.6 released

I finally released synopsis 0.6 as the refactoring work stabilizes. More changes will come, but this is a major milestone that merits a release, as everything appears to be stable and the new tutorial contains sufficient content to get users started.

--Stefan Seefeld

December 06, 2003: synopsis has a new frontend

The synopsis framework has a new scripting based frontend. It replaces the old configuration mechanism.

A new release should follow within the coming days.

--Stefan Seefeld

September 24, 2003: We've moved

Synopsis is now hosted on a machine provided by SPI, which promizes to be a much more stable environment than The website has been cleaned up in the process, and so has the cvs repository.

Some work has been done on the build system, and as soon as that has fully stabilized a new minor release will be done, hopefully in the very near future. Stay tuned...

--Stefan Seefeld

May 20, 2003: Version 0.5 Released

Synopsis has reached another milestone with the release of version 0.5. This release is still missing many desired features, but seems to be stable and has a number of new features (and redesigns) since the last version. A quick list:

You can download it here.

(Note: I reuploaded a new version today which has the correct version number in "synopsis --version", but that is the only change.)

--Stephen Davies

March 16, 2003: Updated website and added User Manual

I was hoping to have the release out before I started work, but unfortunately things didn't work out that way. It should be coming soon however - there is just some cleaning up to do.

In the meantime, I have just updated the website to give it a new look. I have also uploaded the User Manual that I have been working on recently. Hopefully Synopsis will be much easier to use now that it is actually documented more extensively than the README file!

--Stephen Davies

October 28, 2002: Boost.Python

Well working over last summer turned out to be more exhausting than I thought, and was quickly followed by two gruelling semesters which left me little time for working on Synopsis. But rejoice! I have now finished all the classes for my degree, and apart from the minor matter of final exams I am free to spend much more time on it. There has also been *some* progress during the year, I just never got around to updating this website :(

First and foremost, I am currently working with David Abrahams to whip Synopsis into shape for generating both user and developer documents for the Boost Python library. Anybody who has seen the sources for this thing will understand that it has been quite a stress test for both the preprocessor and the C++ parser! Template support has improved immensely, with many fixes to the rest of the parser, including the ability to emulate an arbitrary version of gcc (being the only compiler I have access to!)

The build system I alluded to is also working, allowing a single config file to control the whole parsing, linking and formatting sequence without using any Makefiles (a simple "synopsis -P boost.synopsis" does the trick!) It of course supports the old features that Makefiles allowed, such as using timestamps to rebuild things, and caching intermediate AST's to disk. This process is also well integrated in the GUI, as seen in the screenshot below.

There will probably be another release once Synopsis has proper support for making the Boost docs. In the meantime, you can grab the latest CVS to see what's up (look in Synopsis/demo/Boost).

Here is a screenshot (75KB) of the project GUI

--Stephen Davies

November 9, 2001: Ping

Having almost completed a horrible semester, I've dived back into the GUI. The graphical configuration I mentioned is still coming along, and has been better integrated into a restructuring of the rest of the GUI. I will be working fulltime this summer starting in a week, but during the evenings I hope to work on: Finishing the GUI, adding better cross-referencing, improved template support, a smarter build system which will replace using Makefiles, code-navigation features in the GUI and generated web pages, and finally a GUI for Berlin to make it self-documenting. Except for the Berlin GUI, all of these have already been started. Due to the nature of my work, explicit win32/COM support may be forthcoming as well, but we will see if I can stand more of that crap than I have to.

Here is a screenshot (26KB) of the new layout.

--Stephen Davies

August 3, 2001: GUI update

The gui has been developed a bit, and now includes a simple inheritance graph for classes. I have also been working on a graphical configuration interface to automate and ease the use of Synopsis, but that still has a long way to go.

Here is a screenshot (20KB) of the graph.

--Stephen Davies

July 27, 2001: GUI version

Last night I hacked together a little python script that uses the PyQt bindings to create a simple GUI for synopsis. All it does so far is browse an existing .syn file loaded from disk, in the familiar three-pane format. I borrowed the ASCIIFormatter as the easist way of getting some output, but in future I will have to refactor the HTML formatter some more and use that!

Here is a screenshot (27KB) for your perusal.

--Stephen Davies

July 11, 2001: Version 0.4 Released

Updates have been scarce here lately, but work has still been progressing as time permitted. Today 0.4 was released including numerous updates such as the beginnings of the source cross-referencer, more output formatters (.pdf, .info) and a new modular configuration file format.

The web pages have also been updated -- a new logo, rewrote old text, and updated docs to include more obvious pointers to the different demos etc, and different formats for the RefManual (pdf, info) for download.

--Stephen Davies

January 10, 2001: Home page update

I rewrote the home pages, mostly to include some more detailed information such as synopsis' own reference manual. The site is now css based.

--Stefan Seefeld

January 8, 2001: Python parser and Dia formatter

On the day of the 0.2 release I started work on a parser for Python. It turned out to be surprisingly easy and I finished it in just a few hours, based on the parser example in the Python distribution. With that I started reformatting the docstrings in the python source so that a manual can be automatically generated for Synopsis itself. Also at the request of a user I added a formatter that generates a Dia file as output. It only handles classes, attributes, operations and generalizations (inheritance) and you need to manually position everything, but it works. This also only took a couple of hours.

--Stephen Davies

January 6, 2001: Version 0.2 Released

We decided to release a new version since so much has changed recently. The C++ parser is done, it parses everything including comments. The HTML formatter produces indices by namespace and filename, and an inheritance hierarchy tree. Everything is styled using CSS/2. There are still missing features, but this version is already being implemented for document generation by the Berlin Project.

--Stephen Davies

December 20, 2000: Rewrote HTML formatter, C++ parser updates

The HTML formatter has been completely rewritten. It now generates multiple pages, a class hierarchy tree, indexes, summary/details, etc. I also extended the C++ parser to recognise classes and methods. It's a bit hazy on the types sometimes, and the OpenC++ parser we are using doesn't seem to pass comments through the parse-tree so they don't work. For some examples see Warsaw and Prague Manuals.

--Stephen Davies

March 7, 2000: persistent storage

synopsis now works in stages like a compiler. If you don't specify a formatter, it dumps the AST to the output file. If you don't specify a parser, it assumes the input file contains a parsed AST. Try running:

        synopsis -p IDL -o CosNaming.syn CosNaming.idl
        synopsis -f HTML -o CosNaming.html CosNaming.syn

--Stefan Seefeld

March 6, 2000: hooked up omniidl as IDL parser

as a proof of concept and to get started with IDL files we now can create an AST with the omniidl tool which ships with OmniORB.

--Stefan Seefeld