| Home | Libraries | People | FAQ | More

## Change Log

### Version 1.1 - Boost 1.33.0

- First version to be included in boost.

### Version 1.3 - Boost 1.34.0 to 1.34.1

- Quickbook file inclusion [include].
- Better xml output (pretty layout). Check out the generated XML.
- Regression testing facility: to make sure your document will always be compatible (full backward compatibility) regardless of changes to QuickBook.
- Code cleanup and refactoring.
- Allow phrase markup in the doc-info.
- Preformatted code blocks via ``code`` (double ticks) allows code in tables and lists, for example.
- Quickbook versioning; allows full backward compatibility. You have to add [quickbook 1.3] to the doc-info header to enable the new features. Without this, QuickBook will assume that the document is a pre-1.3 document.

- Better (intuitive) paragraph termination. Some markups may terminate a paragraph. Example:

      [section x]
      blah...
      [endsect]

- Fully qualified section and headers. Subsection names are concatenated to the ID to avoid clashing. Example: `doc_name.sect_name.sub_sect_name.sub_sub_sect_name`
- Better &nbsp; and whitespace handling in code snippets.
- [xinclude] fixes up the relative path to the target XML file when input_directory is not the same as the output_directory.
- Allow untitled tables.
- Allow phrase markups in section titles.
- Allow escaping back to QuickBook from code, code blocks and inline code.
- Footnotes, with the [footnote This is the footnote] syntax.
- Post-processor bug fix for escaped XML code that it does not recognize.
- Replaceable, with the [~replacement] syntax.

### Version 1.4 - Boost 1.35.0 to 1.40.0

- Generic Headers
- Code changes to allow full recursion (i.e. Collectors and push/pop functions)
- Various code cleanup/maintenance
- Templates!
- [conceptref] for referencing BoostBook <concept> entities.
- Allow escape of spaces. The escaped space is removed from the output. Syntax: `\` .
- Nested comments are now allowed.
- Quickbook blocks can nest inside comments.
- Import facility.
- Callouts on imported code
- Simple markups can now span a whole block.
- Blurbs, Admonitions and table cells (see Tables) may now contain paragraphs.
- `\n` and `[br]` are now deprecated.
- Conditional Generation. Ala C++ #ifdef.
- Searching of included and imported files in an extensible search path with `--include-path` (`-I`) option.

### Version 1.5 - Boost 1.41.0 to 1.42.0

- Support multiple copyright entrys in document info.
- Improved SVG support.
- [globalref] for referencing BoostBook <global> entities.
- Fail on error.
- Fix crash for templates with too many arguments or trailing space.
- Improved handling of unexpected characters in code blocks.
- Improved handling of unmatched escape in code blocks.
- Support for python snippets.
- `teletype` source mode.
- Use static scoping in templates, should be a lot more intuitive.
- Accept a space between `section:` and the section id.
- Support table ids.

### Version 1.5.1 - Boost 1.43.0

- Improve the post processor's list of block elements. `table`, `entry` and `varlistentry` are treated as blocks. `replaceable` is treated as an inline element.
- Check that `[section]` and `[endsect]` tags are balanced in templates.
- Add unicode escape characters, eg. `\u03B1` for α.
- Support UTF-8 files with a unicode byte order mark.
- Disallow `[` in simple markup. Fixes some errors with mismatched punctuation.
- Add command line flag to define macros at the command line, e.g. `quickbook "-D__italic_foo__=/foo/"`.

### Version 1.5.2 - Boost 1.44.0

- Use the cygwin 1.7 API for better path handling.
- Improved boostbook generation:
  - XML encode the documentation info correctly.
  - Avoid generating empty paragraphs.
  - No longer wraps block templates in paragraphs.
  - Warns if you use invalid doc_info members for docbook document types.
  - Fixes some other causes of invalid boostbook, although it still generates invalid boostbook in places.
- Improved grammar:
  - Supports multiple categories in library doc_info.
  - No longer requires commas between authors in docinfo.
  - Allows empty document bodies.
  - A line containing only a comment is no longer interpreted as a paragraph break.
  - If a line starts with a comment, interpret it as a paragraph even if it's followed by whitespace or a list character.
  - Doesn't treat several consecutive blank lines as multiple paragraph breaks.
- Fixes duplicate image attribute detection.
- Fixes using code snippets more than once.
- Early work on quickbook 1.6, available using the `[quickbook 1.6]` version switch, but liable to change in future versions.
  - When automatically generating ids for headers, use the quickbook source, rather than the generated docbook.
  - Fix id generation in included files. It wasn't correctly using the main document's documentation id.
  - Correctly restore the quickbook version switch after including a file with a different version.

### Version 1.5.3 - Boost 1.45.0

- Fix command line flag for defining macros.
- Fix a couple of issues with the code block parser:
  - A comment with no indentation will now end a code block.
  - Code blocks no longer have to be followed by a blank line.
- Improved tracking of file position in templates and imported code blocks.
- Better generated markup for callout lists.
- In docbook, variable list entries can only have one `listitem`, so if an entry has multiple values, merge them into one `listitem`.
- Support nested code snippets.
- Support nested blocks in document info comments.
- Revert xml escaping document info, it broke some documentation files (now a 1.6 feature).
- Further work on quickbook 1.6, still not stable.
  - Allow heading to have ids, using the syntax: `[heading:id title]`.
  - XML escape documentation fields, with escapes to allow encoding unicode in ASCII.

### Version 1.5.4 - Boost 1.46.1

Boost 1.46.0:

- Add support for `lang` attribute in documentation info.
- Improved anchor implementation. Especially for using an anchor before a section or heading.
- Fixed some more issues where lines containing comments were treated as blank lines.
- Allow import, include and xinclude in conditional phrases. Will allow more block elements in a future version.
- Rearrange the structure of the grammar.
- Use filesystem 3. Remove cygwin 1.5 support.

Boost 1.46.1:

- Work around optimization bug in g++ 4.4 on 64 bit linux.

### Version 1.5.5 - Boost 1.47

- Tweak anchor placement for titles.
- Hard code the quickbook path into the quickbook testing tools. This means that they can be used from multiple locations.
- Generate an id for boostbook `bridgehead` elements. This results in more consistent html, since docbook generates a random id if they don't have one.
- Improved unicode support on windows. Unicode can now be used from the command line, and unicode filenames are supported. Unicode output is a bit weak.
- Check for windows paths, and warn about them.
- Fix relative path detection on windows.
- Reverse deprecation of `[br]`, printing a single warning about generating invalid boostbook.
- Fix handling empty category attributes.
- Store data from the parser in a dynamic data structure. This simplifies the implementation and makes it easier to parse more complicated data structures.
- Improved error messages for unknown doc info attributes.
- Richer copyright syntax. Now understands: `[copyright 2001-2006, 2010 One person, 2008 Another person]`.
- Fix delimeter checking for simple markup.
- Allow more block elements to be nested.
- Go back to using invalid markup for lists. It generates better html.
- Better anchor placement for lists.
- Pass-thru comments in code snippets.
- Use relative paths for `__FILENAME__` macro.
- Rewrite xinclude path generator so that it doesn't use deprecated filesystem functions.
- Allow quickbook escapes inside comments in syntax highlighted code.
- Quickbook 1.6:
  - Scope source mode changes to the file they're made in.
  - Explicit markup for lists. e.g. `[ordered_list [item1][item2]]` or `[itemized_list [item1][item2]]`.

### Version 1.5.6 - Boost 1.48

- Xml encode escaped punctuation (eg. `\<` is correctly encodes to <).
- Rename duplicate generated ids.
- Close open sections at end of document (still warns about them).
- New anchor markup for headers, will hopefully generate better pdfs.
- Remove some whitespace around code from post processed output.

### Version 1.5.7 - Boost 1.49

- Several internal changes.
- Some improved error messages.
- Better handling of block templates expanded in a phrase context.
- Avoids empty simple markup (i.e. // is not treated as an italic empty space.
- Better anchor markup for headers, which should be better for printing - suggested by John Maddock.
- Further improvements to the id generator.
- If sections are left unopened at the end of a document, then close them in the generated markup.
- Try to handle whitespace better at the beginning and end of code blocks.
- Handle lists that come immediately after an anchor.
- Make horizontal rules followed by multi-line comments a little more sensible.
- Better support for empty ids and titles in docinfo.
- Fix some minor regressions in SVG handling.
- Better handling of invalid command line macros.
- When auto-building quickbook, build the release version.
- Lots of changes for 1.6:
  - Scope templates in included files.
  - Support import of templates and macros.
  - Including top level quickbook blocks from source files.
  - Use doc info blocks in included quickbook files.
  - Better handling of macros with the same name.
  - `block` element.
  - Better handling of significant punctuation (e.g. escapes, square brackets).
  - Support escapes in links, anchors, images, includes etc.
  - Improved table title syntax.
  - Paragraphs nested in lists.
  - New docinfo attributes:
    - `compatibility-mode` to make it possible to upgrade documents without breaking ids.
    - `xmlbase` for escaped `xi:include`s.
  - Allow some docinfo attributes to be used before, or without, a doc info block (`quickbook`, `compatibility-mode`, `source-mode`).
  - Only add explicit alt text to images.
  - Don't put 'inline' code blocks inside paragraphs.

### Version 1.5.8 - Boost 1.50

- Write dependencies to a file, using `--output-deps` (#6691).
- Fix handling of section tags in lists.
- Fix indented code blocks in lists.
- Fix handling UTF-8 code points in the syntax highlighter. Was treating each individual byte as a character. Still doesn't deal with combining code points.
- Internal changes:
  - A lot of restructuring.
  - Stop using 'v3' filesystem paths and namespaces, it's now the default version.
  - Remove awkward intrusive reference counting implementation, avoids a gcc internal compiler error (#6794), but is also a cleaner implementation.
- 1.6 changes:
  - Better handling of brackets in link values.
  - Improved handling of escaped characters in include paths.
- Starting to develop 1.7:
  - Source mode for single entities.
  - Callouts in code blocks.
  - Escaped docbook in docinfo blocks.
  - Starting to implement calling templates from link values.

### Version 1.5.9 - Boost 1.54

- When code blocks are indented using a mixture of tabs and spaces, convert indentation to spaces.
- In the C++ systax highlighter, fix syntax highlighting for `#`, so that it's used for preprocessor statements at the start of a line, and as a 'special' character elsewhere (#8510, #8511).
- Add C++11 keywords to syntax highlighter (#8541).
- Hidden options for formatting of `--output-deps`. Not really for public use
- yet.
- 1.6 changes:
  - Better template argument parsing, so that it understands things like escaped markup.
  - Support for using macros in the doc info block.
- Internal changes:
  - Convert to use `boost::string_ref`.
  - Clean up the source map implementation (used to get the correct location for error messages in things like templates and snippets).

### Version 1.6.0 - Boost 1.55

- Remove nested blocks in lists from 1.6, move to 1.7. (Can still nest block elements in lists though).
- Don't break out of lists after a nested block element.
- Check for errors when writing dependency files.
- Improved markup for lists.
- Make escaping templates with a punctuation identifier illegal. Escaping templates with an alphanumeric identifier is still fine.
- Fix detection of code blocks at the start of a file.
- XML encode the contents of the `change_log.qbk` macro.
- 1.7 changes:
  - Make it an error to use an element in the wrong context.
  - Error if the body of a phrase element doesn't parse.
  - List markup in nested blocks.
  - Allow block elements in phrase templates.
  - Make it an error to put a paragraph break (i.e. a blank line) in a phrase template.
- Internal changes:
  - Clean up the id manager implementation.

### Version 1.6.1

- Better URI encoding of links.
- Extra validation of attribute values.
- 1.7 changes:
  - Improved source mode tagging:
    - Works for lists and paragraphs.
    - If the source mode is changed inside a tagged element, that change will now persist after the element.
    - Tagged sections will now use the source mode for the whole section.
  - Template calls from anchor, role and include elements.
  - Stricter handling of templates called in attribute values.
  - Glob support.

### Version 1.6.2 - Boost 1.61

- Better file URL generation for `xinclude`.

### Version 1.6.3 - Boost 1.64

- Improved some error messages.
- Fix `--no-self-linked-headers` options.
- Hide 'debug' command line option in help text.
- Changes to test and build setup to support continuous integration.
- Fix a crash when templates are called with no arguments. Only affected files with quickbook version less than 1.5.

### Version 1.6.4 - Boost 1.65

- Changes to all language versions:
  - `endsect` can now have an id, if it doesn't match the current section it's an error.
- 1.7 changes:
  - Can now write out conditional content if a macro isn't defined, using `[?!macro_name content]`.
- Support for strict parsing using the `--strict` paramters. This is still under development so new errors could be added.
- `--no-output` command line parameter to process the quickbook documents but not actually generate any files.

### Version 1.7.0 - Boost 1.66

- Last version to compile with C++03.
- Minor improvements to some warning and error messages.
- Stopped normalizing paths in dependency lists.
- Fix xmlbase when it's the same directory as the existing xinclude base.

### Version 1.7.1 - Boost 1.67

- Now uses C++11, no longer tested with C++03 compilers.
- Fix parsing escaped docbook with the new version of Spirit.
- Reformatted code with clang-format.

### Version 1.7.2 - Boost 1.68

- More use of C++11 features.

- Some basic direct generation of HTML (i.e. without using BoostBook). At the command line use `--output-format html` to generate chunked HTML, `--output-format onehtml` to generate a single HTML page.

  It's also useful to pass the path to the root of the boost distribution using the `--boost-root path` option. Or to use outside of boost, the `--css-path` and `--graphics-path` options.

  While this isn't ready for production, it might be useful to quickly preview changes to quickbook documentation, especially if you don't have boostbook set up.