|
|
|
Release Notes
This page details what's new in the latest release.
Release policies
We generally release every 2-3 months. There has been a longer-than-usual gap since 1.19 in January 2004 due to restructuring within ReportLab, moves to a completely new version control system, and a growing number of projects, but we aim to return to this schedule henceforth.
We believe in Agile Development and our code base is almost always in a releasable state; test suites are run every night, and daily builds made available. The numbered releases are largely a convenience, and commercial customers can obtain stable interim builds at other times to suit project requirements.
The 1.XX releases aim for backward compatibility.
We are working on a 'version 2.0' which will break compatibility - various little-used features will be removed, and character handling will be strictly Unicode-based. No precise date is set but this is likely to be 3 months hence - whenever you read this :-)
We do concurrent releases of our open source (reportlab) and commercial (rlextra) packages with the same numbers. The commercial packages are documented on http://developer.reportlab.com/downloads.html,
with their release notes here:http://developer.reportlab.com/relnotes.html,
Serious users are advised to keep abreast of the commercial package documentation; it sits on top of
the Open Source one, and we are better at keeping the docs up to date, so new RML features will usually
imply new ones in the ReportLab Toolkit.
Release 1.20 - 27th November 2004 - download
What's new in 1.20
- Prior to 1.20, the distutils setup.py script was a contribution we did not support. We've
now done some work on this and it works (to the best of our knowledge). This was tested on FreeBSD
and Windows. We welcome feedback on the setup script.
- The accelerator and extension code has been broken out into a separate tree in our subversion
archive (see the subversion instructions). So, _rl_accel.c is no longer in reportlab.lib. The
setup script is smart enough to prompt you about how to get this, and to compile extensions if present.
- We made numerous changes so that the entire framework (and apps using it) can now be run out
of a Python 2.3 zip archive (the equivalent of Java JAR deployment). All file-opening operations
such as reading DTDs, PDFs, fonts and other resources can be loaded
out of zip archives. This makes it possible to deploy document-generating apps as atomic units.
- An invariant mode has been added to generate PDF files
without any timestamp information. This means that the same input
should produce the same output, which in turn facilitates regression
testing.
- Many new formatting features including
- Frames have a new attribute
overlapAttachedSpace (0 or 1) (see reportlab/platypus/frames.py). This will intelligently combine the spaceBefore and spaceAfter of adjacent elements and take the greater, if set. Thus, a paragraph with 6 points of space after and a heading with 24 points of space before will end up separated by 24 points of space rather than 30.
- tables have
spaceBefore and spaceAfter attributes, so you don't have to insert spacers around them.
- tables with spanned cells no longer get "slashed" by the grid drawing commands
- lines in tables now allow multiples through the 'count' and 'space' slots of the lineStyle list.
These are not required but can be supplied if desired. The inter-line spacing is equal to
line width if not given. The full possible set of attributes for lines is defined as a list like this:
operation, (startCol, startRow), (endCol,endRow), weight, color, cap, dash, join, count, space
- cycling through colours: you can specify alternating sequences of colours for table rows or columns (e.g. green-white-green-white). To do a cycle running vertically, you would use the drawing command
ROWBACKGROUNDS
and supply a list of colours instead of a colour. Example in test/test_platypus_tables.py.
- An HTML-style 'horizontal rule' flowable has been added. This has the usual attributes of
line objects (lineCap, thickness, align, color, spaceBefore, spaceAfter), and its width is
80% of that of the frame by default. See
reportlab/platypus/flowables.py line 560.
- An indent tag allows you to set a relative indent on left,
right or both sides across a span of the story. This makes
nested lists and indented subsections easy. (It was there before but we hadn't told people
noisily enough, and some are still asking!) See
reportlab/test/test_platypus_indents.py
- A "please turn over" flowable feature lets you specify content to be included at the end of a
frame or a beginning when an object is continued. This will typicallly be used with complex nested
tables which need special continuation headers and footers.
reportlab/test/test_platypus_pto.py
Future Release Plans
It's likely we will produce a 1.21 in fairly short order, in order to solidify our new release processes.
The bulk of our efforts are now going into a Version 2.0, which will allow us to break old code in minor ways. The prime goal of this will be to change to using Unicode characters throughout internally, and thus be able to use strict UTF8 in input (or Latin-1, if specified). Version 2.0 will also allow us to retire various old tags, features and APIs which are no longer needed, and to produce a documented API. The 2.0 cycle will involve alpha and beta releases. We hope (but do not promise) to get this out in Q1 2005.
Further ahead, we have clear plans for a radical Version 3.0 which would provide even more flexibility and speed and a new layout engine.
|
|
|