# AdaBrowse Version History

Version | Date | Description
--- | --- | ---
4.0.2 | 19-Nov-2003 | New `-X` option for definition of "environment" variables. (As in GNAT.) Code clean-up: added license pragmas (GNAT specific) to all units; separated some purely ASIS stuff into a new Asis2 subsystem, which is GMGPL'ed and intended for separate release. Correction in the Makefile to split $PATH correctly on Unix, where the path separator is ':', not ';'!
4.0.1 | 22-Aug-2003 | Minor improvement in the generated HTML: width specification for indentation table cells is now relative ("2%") instead of absolute (10). Solves a minor display problem on IE 5.0.
4.0 | 11-Jul-2003 | New major feature: AdaBrowse supports now the GNAT project manager, including naming schemes defined in project files! Requires GNAT 3.15p or later. If built from the sources, project file support will only be included if compiled with GNAT 3.15p or later and the compiler sources are available. Major overhaul of the index generation part of AdaBrowse. Newly, indices can be defined by the user using expressions of boolean predicates to define what goes into an index.
3.4.2 | 26-Jun-2003 | Work-around for yet another bug in ASIS: the transitive closure of "with"es (used when the "`-all` was given on the command-line) returned by ASIS-for-GNAT 3.16a doesn't contain implicitly "with"ed parents of explicitly "with"ed child units. AdaBrowse now compensates for this bug.
3.4.1 | 07-Jun-2003 | Work-around for yet another bug in ASIS: the text span returned by ASIS-for-GNAT for private type declarations with more than one discriminant ends at the first semicolon, i.e. after the first discriminant. AdaBrowse now compensates for this bug. Improved handling of casing in unit indices (including the "known children" section of parent units). If the source contained inconsistent casing, this could re-appear in these indices, although AdaBrowse tries hard to make casing consistent everywhere. By default, AdaBrowse no longer processes the private parts of task and protected declarations. Use the "`-private`" command-line option to make it process them. (AdaBrowse always processes private compilation units, though. This is on purpose: if you ask it to process such a unit, you most probably have a good reason to do so, and I don't like tools second-guessing the user's intentions.) General minor code clean-up.
3.4 | 30-May-2003 | Correction in AdaBrowse and work-around for yet another bug in ASIS-for-GNAT so that the "`private`" keyword in private compilation unit declarations is no longer swallowed. Also added a new `PRIVATE` boolean attribute to the `UNIT` and `CHILD` elements in the generated XML; bumped the DTD version to 1.1. Made corresponding documentation changes. Version number changed to 3.4 instead of 3.3.1 because of the change in the DTD.
3.3 | 28-Apr-2003 | Minor changes to work around a bug in GNAT 3.16a and another bug in ASIS-for-GNAT 3.16a. ASIS-for-GNAT 3.16a claims in its version string to be an ASIS for GNAT 5.00 (which is the (forthcoming) gcc 3.x-based GNAT). However, the ASIS library only checks the version of the tree file, it no longer requires the compiler version to match the ASIS library version exactly. The only reason for incrementing the version number to 3.3 instead of 3.2.1 is the fairly long time (five months) between these two versions.
3.2 | 26-Nov-2002 | Change in the global type index; contains now also subtypes. New command line option "`-private`" for making AdaBrowse process the private parts of packages, too. AdaBrowse 3.2 is the first version for GNAT 3.15p.
3.1 | 11-Nov-2002 | Minor correction in associating comments with "`use`" or "`use type`" clauses: the key `Description.Clause` newly applies only to interior clauses; a new key `Description.Context_Clause` governs finding descriptions for the context clauses as a whole. Also corrected the documentation: it had "`Description.Clauses`" instead of "`Description.Clause`" (singular).
3.0 | 30-Aug-2002 | Complete refactoring of the output part of AdaBrowse. Previously, tree traversals and output generation were intermingled; now they're cleanly separated, which opens the way to the next major improvement: AdaBrowse now not only can generate HTML output, but also XML output! There's a DTD for this XML in the distribution. The generated XML can then be further processed by whatever tool you like, and it can be parsed by any XML 1.0 compliant off-the-shelf XML parser. The XML file contains all the structure and information found in the HTML output, including all cross-references. Hence, to generate documentation in e.g. docbook or texinfo format, use AdaBrowse to generate XML, and then generate your favorite format from that. Saves you the trouble of having to write an Ada 95 parser, and saves me the trouble of having to provide a potentially unbounded set of special-purpose formatters for any imaginable output format. Minor improvements in cross-reference generation for implicitly inherited subprograms and enumeration literals; the cross-reference newly goes to the explicit declaration (if there is one) the item is inherited from. Also improved cross-references to items in generic instantiations, which now can point to the corresponding item from the generic template even in the case of nested generics. Cross-references in HTML now by default use both the line and the column number, whereas previous versions only used the line number. Warning: this makes HTML files generated by AdaBrowse 3.0 incompatible with files generated by earlier versions! To get the old, line-number-only behavior, use the new command-line option `-l`. Bug correction in the handling of the `Path` and the `[No_]XRef` and `Include`/`Exclude` keys, which contrary to the documentation just ignored later definitions for the same unit prefix. Now they all honor the last definition for any particular prefix.
2.13 | 09-July-2002 | Minor code clean-up; as well as a minor change to the `[No_]XRef` and `Include`/`Exclude` keys, which now do longest prefix matching on the unit names.
2.12 | 04-July-2002 | The generated HTML files now include a default style specification that can be overridden by style rules in an external style sheet specified by a "`-s`" command-line option or the `Style_Sheet` key in a configuration file. New configuration file keys `XRef` and `Include` to specify exceptions to the sets of units defined by the `No_XRef` and `Exclude` keys.
2.11 | 03-July-2002 | Minor correction in the "`Path`" keys in configuration files (2.1 had a bug making this work only if the unit name prefix was all lowercase.) New command line option "`-g`" and config file key "`Refs_To_Standard`" to make AdaBrowse generate cross-refences to items from the standard library. Major speed-up: previous versions opened and closed ASIS contexts each and every time. Newly, this is only done if a recompilation was necessary. (ASIS-for-GNAT seems to have a huge memory leak when a context is closed.)
2.1 | 01-July-2002 | Major re-haul of the formatting of descriptions: Introduction of parameters for user-defined HTML mark-up, i.e. user-defind tags may now have attributes, which can be referenced in the replacement. Addition of user-defineable formatting rules, which in the extreme make it possible to completely replace the default formatting (by running an external command). Also, generally cleaned up the formatting code and corrected a few problem cases in HTML generation (such as superfluous or even plain wrongly placed `<P>` tags, or character entities given in hexadecimal format, or a typo which made AdaBrowse emit a `MTEA` tag instead of a `META` tag, or a new `<!DOCTYPE` element, which uses "W3C" instead of "IETF" now and specifies "HTML 4.01 Transitional" instead of "HTML 4.0"). Some re-factoring and speed optimizations (the latter both within AdaBrowse and also for typical loading of the generated HTML pages: previous versions enclosed descriptions in yet another table, V3.0 now uses a `DIV` element for the same purpose, which usually renders faster than a table). Restructured a large part of the User's Guide.
2.01 | 03-May-2002 | Code clean-up and minor improvement of environment variable substitution.
2.0 | 02-May-2002 | AdaBrowse now supports user-defined HTML mark-up: you can define your own tags! See the user's guide for more information. AdaBrowse now does environment variable substitution on some entries in configuration files, and one configuration file may now include another one.
1.61 | 26-Apr-2002 | Another work-around for a bug in ASIS-for-GNAT, which sometimes crashes on generic parameter associations in an instantiation, if named notation is chosen and the formal parameter name is an operator symbol.
1.6 | 24-Apr-2002 | Minor change in the algorithm for finding descriptions such that it properly handles trailing comments, too. Also, if AdaBrowse is running in file input mode and the `-all` option was given, previous versions processed units referenced by several units multiple times, causing warnings if `-x` was given and also causing these multiply processed units to appear multiple times in the indices. This has been corrected now; any unit in a run of AdaBrowse will be processed at most once. Finally, yet another work-around for yet another bug in ASIS-for-GNAT, which returns bogus information of "`String`" in "`Some_Const : constant String := ...`".
1.51 | 08-Apr-2002 | Code clean-up such that gcc -gnatwa -gnaty3abefhiklmprt is silent. (The style checks are the same as plain -gnaty, but without -gnatyc and -gnatys because I don't like these.) Also, replaced the license on the `gal*.*` and `util*.*` units: these no longer use the Ada Community License (the one the Booch components use) but the GNAT modified GPL. See the user's guide for comments.
1.5 | 03-Apr-2002 | New options "`-p`" and "`-t`" to generate subprogram and type indices (global, over all units processed). Also, a minor correction in the generation of structured indices to correctly handle cases where child units without their parents appear in the index.
1.4 | 26-Mar-2002 | AdaBrowse can now handle unit specifications given by krunched file names. See the user's guide for more information.
1.36 | 25-Mar-2002 | Another work-around for a bug in ASIS-for-GNAT 3.14p: ASIS goes into an endless loop (or blocks otherwise) on the source "`pragma Inline ("&");`" if the operator references more than one function, and some of these functions are predefined operators. The work-around in AdaBrowse is never to try to generate a cross-reference for operators in pragmas. Also corrected a layout error in the generated HTML for task types without task definition as in "`task type X (A : Integer);`".
1.35 | 21-Mar-2002 | Bug-fix in finding the primitive operations: AdaBrowse failed sometimes with an exception.
1.34 | 20-Mar-2002 | Another work-around for a bug in ASIS-for-GNAT 3.14p: ASIS fails on record components having a type specified with an attribute, as in "`record X : Integer'Base; end record;`".
1.33 | 19-Mar-2002 | Bug fix: AdaBrowse crashed on object renaming declarations.
1.32 | 18-Mar-2002 | AdaBrowse newly replaces pairs of "`@`" without white-space in between by the HTML tags `<CODE>` and `</CODE>`, respectively. Hence one can use "`@Some_Var@`" as a shortcut for "`<CODE>Some_Var</CODE>`" in an Ada comment. See the user's guide for more information. AdaBrowse now allows line comments starting with "#" in the input file in file input mode. Improved the User's Guide, especially section 5.3. Bug correction: if a comment contains a "&" that already is the start of a named character entity (e.g. "&lt;", or "&#34;"), then do not replace the "&" by "&amp;".
1.31 | 15-Mar-2002 | `-i` and `-is` now optionally take a filename argument specifying the filename of the index; "`-`" makes it write the index to `stdout`.
1.3 | 14-Mar-2002 | Uses some packages from my Util subsystem now. As a result, configuration file syntax has changed slightly (it allows now trailing comments on a line, and also supports line continuations.) Also extended the `-f` and `-o` options for the new "file input mode". Also added `-i` and `-is` options for index generation.
1.21 | 05-Mar-2002 | Some improvements in finding primitive operations, as well a work-around for yet another bug in ASIS-for-GNAT 3.14p.
1.2 | 26-Feb-2002 | AdaBrowse now takes apart the source completely. First "fully javadoc-like" version.
1.1 | 06-Feb-2002 | Internal version, never released. Major code clean-up. New options `-q` and `-x`, many new keys in configuration files for customizing cross-reference generation and finding descriptions.
1.01 | 04-Feb-2002 | Improved error message, added `-a`/`-all`/`--all` option, tries to create tree files (by calling GNAT) if initially opening the library unit failed. I.e. it is no longer necessary to create the tree files by hand! AdaBrowse can do it for you now.
1.0 | 02-Feb-2002 | Initial public release