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
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
|
TXR 52
2011-01-07
Features
- @(rep) and @(repeat) now take an keyword argument, :counter.
This specifies the name of a variable which holds the repetition
count, thus making the count available within the repeated body.
- New @(mod) and @(modlast) clauses in repeat/rep, allowing special
behaviors to be coded based on whether the repetition count is
a particular value modulo some number.
- @(gather) directive now supports an @(until)/@(last) clause,
so the search range can be restricted.
- New directive @(fuzz) for doing an imprecise match over a range
of lines, similar to the context line fuzz logic in the patch utility.
- gensym function added to TXR Lisp, along with a *gensym-counter*
global variable.
Bugs
- Fixed a regression in repeat/rep triggered when multiple clauses of the
same type appear (like two occurences of @(last)).
- Built-in global variables in TXR Lisp now properly denote the
underlying C variable locations, rather than holding copies of the values
of those variables. If you assign to *stdout*, it will now really replace
the stdout stream stored in the corresponding C variable (std_output), so
it has the proper global effect. Previously, this action would just
replace *stdout* with a new value, without any effect on std_output.
TXR 51
2011-12-28
Features
- Better algorithm in the random function for generating evenly-distributed
pseudo-random numbers of arbitrary precision.
- PRNG startup behavior improved.
- New lazy-flatten function for flattening lists lazily. Used within
@(next :list ...) implementation, making it possible to scan through
Lisp-generated lazy lists.
Bugs
- Fixed showstopper bug introduced in a patch for the MPI library,
affecting 32 bit platforms.
- Fixed bug in Lisp expression interpolation in quasiliterals.
- Fixed fatal exception being thrown in verbose mode, by one of
the formatted print statements.
TXR 50
2011-12-23
Features
- Dropped silly leading 0 from version number. :)
- New vector functions: copy-vec, sub-vec, cat-vec.
- New API for pseudo-random-number generation, complete with
independent random state objects that can be seeded and copied.
- Vim syntax highlighting definition improvements.
- In the format function, left-adjustment is specified using <
rathr than the - character. (However a negative width specified
as an argument using * still means left adjust.) The leading
zero for zero padding as well as the sign character (space or +)
are specified in the precision field, not the width field.
- More complete documentation.
- Slight return value convention change in some and all functions.
- Added memql function.
Bugs
- Critical flaw in hashing fixed that could crash on some platforms.
- Exception handling fix: if a catch clause performs a
non-local exit, the finally clause is still executed.
- "make distclean" fixed.
- Fix for differences in syntax error diagnosis between Byacc and Bison.
- Fixed a memory leak in a division-by-zero case in the bignum mod
function.
- Fixed a terrible bug in one of the MPI patches affecting the correctness
of various operations on numbers having a 1 in the most significant
bit position of the most significant digit word.
- Fixes in format function. All objects obey field width and left/right
alignment. Numeric precision, zero padding and optional sign all works.
- Lisp code evaluated in @(repeat)/@(rep) clauses can now see all variables,
not just the ones subject to the repeat. (But whether or not a repeat
executes, or which clauses, is still independent of what variables
are accessed by the embedded Lisp, taking into account only the variables
directly embedded in the clause.)
TXR 049
2011-12-19
Features
- New functions for converting between characters and integers.
- Some arithmetic and relational operations are generic over characters in a
way that makes sense.
- dohash establishes anonymous block.
- Improvements in Vim syntax highlighting file.
- Lazy cons semantics cleaned up making lazy list programming easier.
- Some API renaming and restructuring in the area of vectors.
- Semicolon comments supported in Lisp code and @; comments in the pattern
matching language. @# becoming obsolescent.
- Not function, synonym for null.
- Some progress in TXR Lisp documentation.
- Hashing functions improved for fixnums, literals and characters.
- API for introspecting over interpreted functions added, in anticipation
of doing some compiler work.
- Quasiliteral strings supported in TXR Lisp.
Bugs
- Broken abs function fixed for bignums.
- mappend semantics clarified and fixed: behaves like append for
improper lists and atoms.
- Bugfix in code walker for let/let* forms, which resulted in quasiquotes
not being expanded.
- Fixed incorrect format arguments in some error messages, resulting
in aborts in some error cases, instead of the intended diagnostics.
TXR 048
2011-12-13
Features
- New functions: expt, exptmod, sqrt, numberp, evenp, oddp, abs, gcd
reduce-left, reduce-right.
- Replaced horribly slow square root in MPI with a less horribly slow one.
Bugs
- Fixed numerous instances, in the MPI library, of coding broken
for mpi_digit wider than 16 bits, leading to incorrect results and
crashes.
- Fixed mpi_int for 32 bit platforms so that obj_t stays 4 pointers wide.
(The sign becomes a 1 bit wide bitfield).
TXR 047
2011-12-12
Features
- Transparent bignum arithmetic: when operations on machine word (fixnum)
integers overflow, multi-precision (bignum) integers are produced.
- TXR Lisp:
- New operators: progn, flip.
- Vector functions added, and vecref is an assignment place.
- Character manipulation functions.
- Association list functions.
- Implicit anonymous block around forms for loop.
- Implicit named block around forms for loop.
- Nump renamed to fixnump.
- Push arguments reversed: (push obj list).
- Syntax highlighting definition update for all new operators.
Bugs
- Another bugfix to character literals, allowing non-alphanumeric
constants like #\$.
- Fix in rplacd to make lazy list programming feasible.
- Reversed assoc and assq arguments throughout codebase.
- Debugger: repeating last command by pressing Enter works again.
TXR 046
2011-12-06
Features
- Vector-related functions exposed in Lisp interpreter.
- Syntax added for specifying vector literals in code.
- Length function made generic over strings, lists and vectors.
Bugs
- Broken get_line function over string input streams fixed.
- Some kinds of character literals were not being recognized properly.
- bugfixes in configure script, affecting 64 bit Mac OS X. Thanks
to Andy Wildenberg for reporting issue and confirming root cause.
TXR 045
2011-12-05
Features
- New functions exposed in Lisp interpreter: strings, characters,
symbols and lazy lists.
Bugs
- Flaws in some string-splitting functions identified and fixed.
- Bugs in quasiquote.
- Handling of singleton clauses in cond operator.
TXR 044
2011-12-01
Features
- Lisp interpreter added.
- Relaxed rules for what constitutes symbol names.
Bugs
- Regression in source location tracking (line numbers
shown in debugger and trace output).
- Regression in vertical skip directive caused it to ignore
its arguments.
- Fixed :vars () in collect/coll not working as intended.
This should prevent any bindings from being collected, and
allows iteration with collect without accumulating memory.
- Two-year-old bug in weak hash tables.
TXR 043
2011-11-23
Bugs
- Buggy @(eol) directive fixed.
- Semantics change for text and regular expressions in "negative match":
- a variable is considered to be followed by a run of text which
consists of any mixture of regexes and literal text
- thus @foo bar behaves properly once again; it is not treated
as foo followed by the regex / +/, ignoring the text bar.
- Infinite looping bug in negative match with longest-match semantics.
- Bug in the overflow detection in the lib.c plus and minus function.
TXR 042
2011-11-20
Features
- Access to environment via @(next :env)
- New @(gather) directive for matching out-of-order material.
- Horizontal functions:
- TXR can now parse grammars.
- Variable syntax allows capture of text spanned by function calls:
e.g. @{var (func x y)}: text spanned by (func x y) goes into var.
- Horizontal modes for numerous directives such as @(bind), @(local), ...
- Lisp-style bindings output.
- Interactive breakpoint/step debugger added.
This is an experimental prototype, but already quite useful.
- Directives following a variable match have searching semantics now,
as do function calls. @a@(foo) will scan for a match for @(foo),
and the text skipped over is captured by a.
- New :resolve keyword in @(some) directive allowing conflicting
variable bindings to be set in separate clauses and resolved.
- deffilter is more powerful: arguments are evaluated so filters can
be computed by the query.
Bugs
- Horizontal @(some) directive hooked in.
- @(freeform) with no data fails to match instead of throwing strange error.
- Setting non-local variables from a function works now.
- Stability fix: several long-time uninitialized variable bugs found,
and some faulty object initialization orders.
- :vars in @(collect)/@(coll) does not fire an exception about missing
required variables if no variable bindings are produced at all,
allowing strict collects to have explicit matches for unwanted material
without triggering this nuisance error.
- @(repeat)/@(rep) allow empty body.
Internal
- New infrastructure for matching location info to source forms.
Location info (currently just the line number) is associated with
source forms via a weak hash table.
- Character literals are now Lispy (hash-backslash syntax), based on Scheme.
- Added quote, unquote and splicing syntax similar to Lisp. Not used
for anything yet.
- Improved Valgrind integration: more accurate, timely detection of
uninitialized fields in heap objects.
Misc.
- A TXR syntax highlighting file for the Vim editor exists
now. See the txr.vim file.
TXR 041
2011-10-30
Features
- New :append keyword in @(output) to append instead of overwriting.
- Variable contents can be treated as input sources using :string
and :list keywords in @(next). Variables can be treated as output
destinations using :into keyword in @(output).
- New @(set) directive for destructive assignment to a variable.
- New filters: :upcase and :downcase.
- @(bind) can now compare left and right objects through filters.
- Filters can now be chained into compound filters.
- Pattern matching functions can be used as filters.
- Shorthand notation in @(deffilter) when multiple strings map to the
same replacement string.
- @(cat) directive changes syntax.
- Error handling improvements in parser: no more reams and reams of
errors.
Bugs
- Runaway recursion in @(block) directive, introduced in 040.
- Fixed bug in matching list variable against text, at the same
time clarifying semantics to longest-match.
- Fixed potential excessive memory use caused by refactoring in 040.
|