1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
|
releasenotes
last touched in Par 1.53.0
last meaningful change in Par 1.53.0
Copyright 1993, 1996, 2000, 2001, 2020 Adam M. Costello
Each entry below describes changes since the previous version.
Par 1.53.0 released 2020-Mar-14
Fixed the following bugs:
An unintended bad interaction between <quote> and <repeat>.
The specification was inconsistent. Although it said that
the lines inserted by the <quote> feature were vacant,
the <repeat> feature could interpret the quote character
of inserted lines as a repeat character, in which case
the lines were not vacant (according to the definition),
and more quote/repeat characters would be inserted to
extend the line to the full width, which no one would ever
want. The definition of "bodiless line" is revised so that
lines inserted by the <quote> feature are excluded from
consideration by the <repeat> feature.
A printf format string mismatch (ptrdiff_t vs. %d), reported by
Quentin Barnes (qbarnes at gmail.com).
protoMakefile's clean target removed par rather than par$E,
reported by George V. Reilly (george at reilly.org).
Added the following features:
Locale support for single-byte character sets.
The previous verson, 1.52, attempted to do this in one line
of code (setlocale()), but it's not that simple. Versions
before 1.52 gave no thought to character sets other than
US-ASCII and did not handle them entirely correctly.
Calling setlocale() in version 1.52 corrected some flaws but
not all, and created one new flaw. This version and the
previous two all have the same character handling in the
"C" locale and when processing US-ASCII text; differences
arise only when processing non-US-ASCII text in another
locale. In versions before 1.52 the implementation assumed
that "uppercase letter" means only the 26 characters A-Z
and that "lowercase letter" means only the 26 characters
a-z, and the specification assumed that every letter is
either upper case or lower case. These assumptions hold
for US-ASCII, but not for most other character sets;
therefore versions before 1.52 did not really support
non-US-ASCII text. Version 1.52, by calling setlocale(),
relaxed the three assumptions in the implementation but
not the assumption in the specification, and inadvertantly
caused the implementation to deviate from the specification
by converting all space characters to spaces rather than
converting only the specified white characters, which is not
necessarily what you want (for example, you probably don't
want no-break space converted to space, but some locales
on some platforms have been known to classify no-break
space as white-space, like FreeBSD did in 2004). This
version fixes the specification by introducing the concept
of "neither-case letter" and redefining "alphanumeric
character" to include it, and fixes the implementation to
convert only the white characters to spaces. It also makes
the white characters configurable so that the version 1.52
space-conversion behavior can be restored if desired (W=_S).
Note that Par still assumes constant display width per byte,
which is not true for UTF-8 nor ISO-2022-*, but is true for
most single-byte charsets and for EUC-* text without the
single-shift-in/out codes.
The W option, for configuring the set of white characters.
The Z option, for configuring the set of terminal characters.
The _@ escape sequence (neither-case letter) in charset syntax.
The _S escape sequence (any space) in charset syntax.
Added _@ and apostrophe to the set of body characters in PARINIT.
Add #includes for whatever interfaces are used rather than depending
on included files to #include other files.
In protoMakefile introduced CPPFLAGS and CFLAGS (default empty) into
the default definition of CC.
Added a test-par script and a test target in protoMakefile.
Fixed a misspelling (preceed => precede) in par.doc and par.1.
Changed the top-of-file comment convention so that every release
won't need to touch every file (this is the last time).
Updated the author contact information.
Clarified the license and added the MIT License as an alternative.
Adopted a modern version number format, with minor and patch numbers
as dot-separated integers rather than adjacent single digits.
Par 1.52 released 2001-Apr-29
Fixed a portability problem regarding unsigned char versus char.
(This was a potential problem only on platforms where char is a
non-two's-complement signed type, which is very few, if any.)
Added a call to setlocale(), for 8-bit character support, requested by
Alex Postnikov (apost at math.berkeley.edu) and Oliver Fromme (olli
at secnetix.de).
Added some unnecessary parentheses, braces, and initialization,
to quiet the more aggressive compiler warnings. (This
was suggested back in 1993 by Thomas E. Dickey (dickey at
software.org) but I refused. I guess my attitude has changed.)
Changed the EXAMPLES section of par.1 to use the constant-width font
rather than constant-spaced Roman, suggested by Carl Lowenstein (cdl
at mpl.ucsd.edu).
Reorganized releasenotes to put the most recent version first, and
rearranged the email addresses to confuse address harvesters.
Par 1.51 released 2000-Feb-24
Updated the author contact information.
Relaxed the copyright restrictions.
Added comma to the recommended set of body characters in PARINIT.
Par 1.50 released 1996-Feb-11
Added the following features:
The T option, suggested by Jules Junker (jjunker at eos.hitc.com).
The b option.
Loosened the terms of the Copyright.
Changed protoMakefile:
Added the E and O macros, suggested by Peter A. Getterman
(pgutterman at worldbank.org).
Added sensible default values for all macros.
Added question-mark to the recommended set of body characters.
Restored documentation of the number-without-a-letter shortcut
command-line option, which got lost between versions 1.00 and 1.10.
Its absence was noted by David W. Sanderson (dws at ssec.wisc.edu).
Added .exrc examples, suggested by Alex Matulich (matuli_a at
marlin.navsea.navy.mil), though I used my own .exrc.
Added the Apologies section to par.doc and par.1.
Made many other tweeks to the documentation.
Removed the useless synopsis from the runtime help message.
Par 1.41 released 1993-Oct-31
Moved the former Release Notes section of par.doc into its own file.
Fixed the following bugs:
A couple of inconsistencies of style in the code, pointed out by
Thomas E. Dickey (dickey at software.org).
If <quote> and <hang> were 1 and a one-line paragraph beginning with
quote characters was reformatted into a multi-line paragraph,
the new lines began with spaces instead of quote characters.
This was because the policy for copying prefixes used the
fallback prelen rather than the augmented version of it used for
computing the default value of <prefix>. Now both use the same
formula. Thanks go to Steven King (king at rtsg.mot.com) for
reporting the problem.
If the t option were given without a number, it was unset instead of
being set to 1.
Added the following feature:
The E option, suggested by Alex Matulich (alex at bilver.oau.org).
Altered the terminology:
Added the term "augmented fallback prelen".
Added to the Rights and Responsibilities section of par.doc a guideline
for handling version numbers in patched versions of Par.
Added a useful suggestion to protoMakefile.
Par 1.40 released 1993-Oct-10
Fixed the following bugs:
The phrase "containing at least two lines" was left out of the
definition of "vacant line" in par.doc and par.1, although
the code implemented the correct definition. (The phrase now
appears in the definition of "order <k> bodiless line".)
There was still a flaw in the design of the <quote> feature. If two
adjacent lines had quoteprefixes neither of which was a prefix
of the other, no line would be inserted between them, possibly
causing other inserted lines not to be vacant. Now it should
be true that every line inserted or truncated by the <quote>
feature will turn out to be vacant.
When <hang> began affecting the default value of <suffix> (as of Par
1.20), it should also have begun affecting the choice of source
of characters for the suffixes of lines in OPs.
Added the following features:
The i option, suggested by Alan Barrett (barrett at ee.und.ac.za).
The e option, inspired by a suggestion from Tim Pointing (tim at
ben.dciem.dnd.ca).
The r option.
The p, s, and w options are now accepted without numbers.
par no longer gives up so easily when choosing default values for
<prefix> and <suffix> for an IP with less than <hang>+2 lines,
nor when choosing the source of characters for the prefix and
suffix of the <i>th output line when <i> > <n> and <n> <=
<hang>. These are incompatible changes, but I cannot imagine
anyone preferring the old behavior.
Altered the terminology:
Added the terms "bodiless line" (a generalization of "vacant line"),
"fallback prelen", and "fallback suflen".
Made miscellaneous changes to the documentation, including the addition
of the Quick Start section.
Par 1.32 released 1993-Sep-13
Fixed the following bugs:
par could crash when the + or - operator was used with the B, P, and
Q options. Thanks go to Andrew Cashin (splat at deakin.oz.au)
for reporting this.
If <quote> were 1 and two adjacent lines had different
quoteprefixes, one of which was a prefix of the other, and only
the line with the shorter quoteprefix contained a non-quote
character, then nothing would be altered. According to par.doc
1.31, this was correct, but since neither line is vacant, I
consider this a bug in the design of the <quote> feature. Now
the longer quoteprefix will be truncated to match the shorter
one, and will therefore be vacant. Thanks go to Andrew Cashin
(splat at deakin.oz.au) for asking about this.
Made slight changes to the documentation.
Par 1.31 released 1993-Sep-07
The version number is 1.31 rather than 1.40 because all added features
are really just enhancements of existing features.
Fixed the following bug:
In par.doc, in the example of a paragraph produced by a greedy
algorithm, the word "establish" appeared twice in a row. Thanks
go to Daniel Kussendrager (daniel at astro.rug.nl) for first
pointing this out. (The example is now even better because the
paragraph looks even worse than before.)
Added the following features:
A usage message to accompany command line or environment variable
syntax errors, first suggested by Karl Stiefvater (qarl at
ecl.wustl.edu).
The help and c options.
The B, P, and Q options, which render PARBODY, PARPROTECT, and
PARQUOTE no longer necessary. They are retained, though, for
compatibility and convenience.
The _b, _q, and _Q escape sequences for charset syntax.
Added the term "charset syntax".
Isolated the character set code in charset.c and charset.h.
Par 1.30 released 1993-Aug-18
Since Par 1.20 was posted to comp.sources.misc, I have made only
backward-compatible changes in Par 1.30.
Fixed the following bugs:
One wrong word in par.c sometimes caused par to crash. Thanks go to
Contr Karl Vogel (vogelke at c-17igp.wpafb.af.mil) for sending
me an input file that caused a crash.
Too-long words were chopped up before the first word in a paragraph
was expanded to include initial spaces, allowing impossibility
#1 to occur. The order of the two operations has been reversed.
Thanks go to Andrew Cashin (splat at deakin.oz.au) for reporting
the error message.
Added the following features:
The g option, motivated by suggestions from several people.
The q option, inspired by a suggestion from Andrew Cashin (splat at
deakin.oz.au).
The R option (my attempt to squash a bad idea from Par 1.00).
The PARQUOTE environment variable (comes with the q option).
The PARPROTECT environment variable, inspired by a suggestion from
Dennis Flaherty (dennisf at se01.elk.miles.com).
Altered the terminology:
Several terms have been added, and the meaning of some terms has
been slightly modified. This is a change in the language used to
describe par's behavior, not a change in par's actual behavior.
Added a clean target to protoMakefile, suggested by Hal Jespersen (hlj
at posix.com).
Par 1.20 released 1993-Aug-10
Since Par 1.10 was distributed to no one, I've made some more
incompatible changes in Par 1.20.
Added the following features:
The d option.
Paragraphs are now separated by vacant lines, not just blank lines.
<hang> now affects not only <prefix> but also <suffix>.
Par 1.10 released 1993-Aug-02
Fixed the following bugs:
In reformat.c I used sprintf() but forgot to #include <stdio.h>.
I forgot to verify that <width> > <prefix> + <suffix>.
The first word of a paragraph was expanded to include initial white
characters, not just spaces, contrary to par.doc.
Some invalid options were not complained about.
NUL characters in the input were not handled.
A pointer foul-up in freelines() in par.c could cause a crash.
Added the following features:
The f, j, and t options.
The PARBODY environment variable.
Multiple options may be concatenated into a single argument.
Removed the m option:
Its function is better performed by the f and t options. Normally
I would avoid making incompatible changes, unless I were doing a
complete overhaul of the whole program, in which case I'd make the
version number 2.00 to alert users to possible incompatibilities.
However, in this particular instance I allowed an incompatibility in
a minor upgrade because version 1.00 was distributed to only four
people.
Changed the handling of white characters:
par now changes all of them (except newlines) to spaces as they are
read. This is another incompatible change, excused for the same
reason.
Made all error messages begin with "par error:".
Par 1.00 released 1993-Jul-25
The first release.
|