TXR Language 183

TXR is a "data munging" language which combines a convenient text extraction notation that is equivalent in power to Parse Expression Grammars, with an innovative Lisp dialect which manages to integrate the differences between Lisp-1 and Lisp-2. It has many features: built-in lazy lists, strings and vectors that can be treated with list processing functions, currying operators, macros with destructuring lambda lists, macrolet, symbol macros, dynamically scoped variables, exception handling, object-oriented structures, delimited continuations, a foreign-function interface and much more. TXR is influenced by Common Lisp, Scheme, Awk, M4, POSIX Shell, Prolog, Ruby, Python, Arc, Clojure, S-Lang and others.

Tags interpreter development lisp text-processing utilities programming-language
License BSDL-2
State stable

Recent Releases

18320 Jul 2017 18:26 major feature: @(collect) and @(coll) now have a :lists argument. @(collect :lists (x y)) means that the variables x and y will be bound if the collect terminates. Independently, if there was no match for x or y, they get bound to the empty list. This doesn't impose any strict collection discipline like :vars. FFI: some increased flexibility in the area of carray and buffers. (symbol-function ...), (symbol-value ...) and (symbol-macro ...) forms are now assignable when the binding doesn't exist, and create it. format now has a way to pad floating-point values with leading zeros. New :text option type in getopts. New function relate, and accessor nth, the latter from ANSI Common Lisp. New special variable *filters*, exposes the hash where the named filters of the Extraction Language are stored. Minor bugfixes.
18210 Jul 2017 06:36 major feature: A few conveniences in FFI to streamline a some common scenarios. Structure init and postinit functions can now be accessed and redefined. Lambda expressions are now function names and can be used in the first position of a form, improving compatibility with other Lisp dialects. Bugs fixed in static-slot-ensure which is the basis for the method-defining defmeth macro. Minor issue in listener: handling of linefeeds when a multi-line previous result is pasted with Ctrl-X P. Documentation improvements.
18105 Jul 2017 22:24 major feature: New functions maprod and maprend: like mapcar and mappend, but map Cartesian products rather than parallel elements. FFI: enum types can be based from types other than int; API improvements to unions and cptr; deffi-sym macro for declaring foreign external symbols themselves (not the variables they denote) as Lisp variables. FFI bugs: incorrect behaviors in the zarray FFI type; broken struct/union return values on big endian architectures; more bugs fixed in struct bitfield layout.
18026 Jun 2017 04:45 major feature: FFI type system now has support for C unions. A bool type added: byte sized by default, available in other sizes and even floating-point. Also, new: longlong and ulonglong types. Fixed a TXR 170 regression in the horizontal flavor of @(trailer) directive. Fixed append redirection operator - in the awk macro not actually openin a file in append mode. Fixed awk not closing the stream opened with :output "filename" when done executing, leaving it to the garbage collector. Fixed bug in FFI's handling of the float type and an issue with cptr.
17919 Jun 2017 14:06 major feature: Improvements in Lisp listener: line breaks can be entered with just Enter, when the syntax is incomplete; Ctrl-X ? displays a three-page command "cheat sheet"; multi-line mode now default. Improvements in generic sequences. more functionality in carray type, including conversion of carray storage to and from integer. Hardened the internals in the area of bignum integer manipulation. Broken sign-extend function fixed. Bug fixed in bitfield layout logic in FFI structs.
17813 Jun 2017 14:22 major feature: Bugfixes and improvements in FFI, particularly in the carray type for foreign array handling. Bugfix in Awk macro's rng operator. New field conversion type in Awk macro. Other bugfixes.
17708 Jun 2017 05:07 major feature: Yet more FFI development. FFI now supports bitfields and enums. An operator in the type language lets the programmer control alignment, for packing fields, or conforming to stricter alignment. Endian types are provided for automatic little and big endian encoding of integer and floating-point types. New stream functions for I/O to and from buffers. Other features and important bugfixes, particularly in FFI. Big endian machines supported by FFI: testing done on PPC64.
17622 May 2017 13:21 major feature: The new FFI functionality introduced in 175 is much more complete, and better debugged. Some new library functions: dir-name, base-name. POSIX realpath is exposed. Awk macro has a new feature: the (again) operator, which is like (next) for going to the next record, but repeats processing over the current record.
17515 May 2017 15:04 major feature: This release adds a Foreign Function Interface (FFI). Also contains some half dozen feature enhancements and some fifteen important bugfixes.
17406 Apr 2017 14:50 minor bugfix: Bugfixes in: lexical scanner; non-interactive mode of listener; separate-directory build; apply and iapply function. opip macro now treats unbound slot ref syntax in a useful way. Directives of the pattern language are integrated into package system. Couple of new time-related functions. The existing -n flag now also forces listener into plain mode, allowing txr to be used as an inferior Lisp out of Emacs.
17325 Mar 2017 16:50 major feature: Semantics improvement in matching variables delimited by directives which follow. Tab completion in listener now sensitive to .slot or .(method context. Behavior of functions calling call-finalize is now specified, allowing for more complete "RAII" programming and related techniques. Static, code-expansion-time warnings are now issued when slots are accessed that do not belong to any type. This feature caught a typo in a termios method in the library, alerting to the lack of testing of that code. MS Windows: the 16x16 icon is improved. Bugfixes: fixed warnings not being generated against Lisp code loaded from a main .txr file. Fixed unbound variable warnings not being generated for argumens of ... syntax. Fixed wrong function name printed in trace messages. Fixed "start in" directory of Windows shortcuts to be user's profile directory.
17220 Mar 2017 02:49 major feature: New reflection over packages via mutable *package-alist* special variable. This allows sandboxing: safe evaluation of untrusted Lisp code. Improvements in trace macro: diagnosis on redefinition of traced functions and more. New feature in the OOP system: static-slot-home finds the base class where an inherited static slot originates. Windows improvements and fixes: newly redesigned icons, fix in edit-in-external-editor REPL feature, fixed HOME environment value that was confusing Vim.
17115 Mar 2017 17:45 major feature: This release removes the long-standing annoying misfeature of the mandatory - (hyphen) command line argument being required to indicate standard input. A new "unbound referencing dot" notation is introduced for conveniently currying object references, adding expressivity and succinctness to functional OOP. New functions in the sequences library: rmismatch, starts-with, ends-with. Sequence splitting and partitioning functions take negative indices now for indexing from end. Some significant bugfixes.
17001 Mar 2017 05:35 major bugfix: This release solves long-standing issues in the semantics of @(accept) control transfers, clarifying and improving the semantics. Horizontal @(block) and @(throw) now supported. A crash in the area of structure slot access is fixed. Enhancements in the arithmetic library in the area of of division and truncation/rounding.
16912 Feb 2017 17:39 minor feature: Change of representation of deferrable warnings and improvements in the area of warning diagnostics. New diagnostic in awk macro for detecting false scope references emanating from rng expressions which are transported out of scope by the macro. New rassq and rassoc functions. Fixed broken compile-warning function.
16806 Feb 2017 06:38 major bugfix: Fixed broken keepql function. Fixed problem in poll function. Fixed number of other minor bugs. Some minor new functionality. Mutation of lexical function bindings is now forbidden and diagnosed statically.
16703 Feb 2017 00:26 major bugfix: Fixed sort function not providing stable sort over lists as documented. Added missing autoload registrations for catch* and handle* macros. Fixed package-related symbol read-print consistency issue. Parameter list macros now recognized in catch clauses. Tightened syntax: certain juxtapositions of tokens with no intervening spaces are now rejected. Awk macro now supports a list of strings as an input source.
16626 Jan 2017 20:24 major bugfix: Large number of bugfixes. Deferred warnings introduced. Unbound function and variable warnings in Lisp code now enabled over TXR pattern language. New parameter list macro :key provides ANSI CL style keyword arguments. Enhancements in awk macro.
16511 Jan 2017 10:12 minor bugfix: New Lisp innovation: parameter list macros. PATH variable handling fix in Windows native version, thanks to fix for issue 15 in Cygnal. Minor enhancements.
16401 Jan 2017 18:11 minor bugfix: Awk macro now supports fixed-width record delimiting. Minor feature enhancements in Lisp library. Improved static checks over Lisp forms. Bugfixes in these areas: regex API, quasiquoting of range #R literals, rebinding of special variables, read-print consistency of quasiliterals, expansion of catch special form.
16321 Dec 2016 04:39 major feature: Smattering of new functions and macros. Awk macro gets endpoint-exclusive ranges. Implementation of special variables has undergone surgery, simplifying the internals and fixing subtle bugs. TXR can now take an async signal in the middle of garbage collection, cancel GC and run a Lisp function out of the handler: recovery from a stack overflow in the middle of GC is possible. Minor bugfixes.
16208 Dec 2016 01:24 major bugfix: Several major bugs are fixed in the awk macro. Several minor bugs fixed in the parser and object printer. Syntax of handle macro fixed to follow documentation. New features: some more functions are provided that bind regex operations as functions; awk local macro prn is now a function: can be passed as functional argument, and hence supports apply and so on.
16129 Nov 2016 15:49 minor bugfix: Fixes a regression from 160: awk macro spews spurious warnings about an undefined variable.
16028 Nov 2016 19:06 major bugfix: Fixed a number of bugs in the macro expander that will cause incorrect expansion in corner cases involving shadowing. Fixed the mac-param-bind special form not being macro-expanded at all. Fixed bugs in the op macro, circular notation (input side) and some library functions. Major feature introduced: warnings about unbound functions and variables prior to evaluation. Other minor features.
15922 Nov 2016 04:15 major bugfix: Improvement in design of package system; its shape is basically settled. Global macro bindings now have (macro sym) compound names, and can be traced, defined with defun and so on. The tagbody macro is provided, similar to Common Lisp's. A -b var=value option is introduced, which binds Lisp variables using Lisp syntax, at the command line. Fixed small bug in trace and an obscure bug in macro expansion.
15815 Nov 2016 16:42 major bugfix: Bugs fixed in the area of bignums: broken addition operation, and broken fixnum to bignum conversion affecting 64 bit targets. Fixed accidental incorrect mutation of applied argument list in some situations. New features: structures now have a built-in dirty flag for detecting changes in slots. The in-package macro was added, similar to Common Lisp's.
15715 Nov 2016 01:50 major bugfix: New #; syntax for commenting out expressions, #: syntax for uninterned symbols is now supported on input. Symbol system has been greatly extended and is now usable. Some new convenience functions for reading and writing files or command pipes in a single call. Half a dozen significant bugs fixed, including some show-stopping regressions.
15606 Nov 2016 17:33 major feature: Command-line parsing library; I/O redirection in awk macro; assignment through obj arg ... indexing syntax when obj is a struct; function tracing (trace, untrace, *trace-output*) added; new negated equality test functions. Bugfixes in circular printing; quasiquote across struct literals; tok-str function (affecting "ft" feature in awk macro) and others.
15522 Oct 2016 14:37 major feature: TXR Lisp now supports the circle notation and *print-circle* variable from ANSI Common Lisp. Struct print methods are now called with three arguments and for both readable and pretty printing. Fixed regression: mishandling of compound dot ref syntax a.b.c as an assignment place. Fixed regression: GC-time assert in an image in which static slot inheritance was used. Other less significant or minor bugfixes.
15308 Oct 2016 14:09 major bugfix: Fixes a GC-related regression in the struct code introduced in 152, causing instability. Some less critical bugs are also fixed.
15205 Oct 2016 02:41 major bugfix: Overhaul of the way slot inheritance is handled in the object system. Fixes issues with method redefinition and is all round great. New features in are of regex library. Arithmetic is now possible on range objects. Some new convenience clauses in the awk macro. Bugfix in interactive listener: arrow keys handled nicely after Ctrl-X. All individual file license headers changed back to BSD 2-Clause license. In release 151, TXR returns to unmodified BSD 2-Clause license. There are numerous improvements and bugfixes in the area of regular expressions and the awk macro. New string list input streams are introduced. A new macro called build for procedural list building. File loading has undergone changes. Variables specified with -D on command line now visible in Lisp files. Out-of-range negative indexing on lists now produces nil rather than first element.
15127 Sep 2016 15:38 major bugfix: In release 151, TXR returns to unmodified BSD 2-Clause license. There are numerous improvements and bugfixes in the area of regular expressions and the awk macro. New string list input streams are introduced. A new macro called build for procedural list building. File loading has undergone changes. Variables specified with -D on command line now visible in Lisp files. Out-of-range negative indexing on lists now produces nil rather than first element.
15019 Sep 2016 17:03 major bugfix: This release enhances the awk macro introduced in 149 with new functionality in the area of record and field splitting and new awk varibles are introduced: krs, ft and kfs. A fconv operator is introduced for flexibly and succinctly specify conversions on fields. A new place-mutating macro called upd is introduced. A few library functions are extended with new functionality. Major bugs are fixed: broken regex complement operator, incorrect behaviors in split-str and tok-str, broken functions remq, remql, remqual, remove_if and keep_if when used on strings, broken until* and while* loop macros. A new version of the Cygnal library packaged with TXR 150 fixes the issue of *stdin*, *stdout* and *stderr* being binary streams on Windows, not putting out carriage returns.
14913 Sep 2016 03:36 major feature: TXR introduces an Awk implementation in Lisp syntax, implemented as a TXR Lisp macro. A regression in the @(rep) directive is fixed. Some new library functions and macros. A few semantic changes in areas like place macros and :postinit processing at struct initialization time.
14806 Sep 2016 03:48 major bugfix: Fixed wrong semantics of defvarl and defparml macros. Fixed lack of Lisp macro expansion in @(if) directive and output-side @(repeat). Fixed runaway recursion issue in lazy struct instantiation. Fixed some degenerate behaviors in the parser uncovered by fuzzing with AFL(fast). Implemented optimization in the quasiquote expander. A few new time functions.
14621 Jul 2016 13:52 major feature: Improvements in Windows version thanks to development in the Cygnal library. Optimizations in NFA regex engine. POSIX uname function exposed. Quasi-string sand quasi-word-list-literals get a print syntax matching their read syntax.
14504 Jul 2016 03:27 major bugfix: Improvements in Windows version thanks to the new Cygnal library (fork of Cygwin DLL for native Windows app deployment: http://www.kylheku.com/cygnal). Fixed crash in getaddrinfo function.
14429 Jun 2016 15:32 major feature: Support for MinGW-based Windows port dropped; the native Win32 port is now based on the newly LGPL-ed Cygwin. Lisp style evaluation in effect now in most places in the pattern language. Collect directive has :counter parameter now. Improvements in the new object-as-sequence abstraction. Fixed out-of-bounds access in bit function. Fixed a number of memory leaks. Improvements in Valgrind integration in garbage collector. Other bugfixes.
14329 Jun 2016 14:54 major feature: Structures support custom printing via print method. Structures can now behave like sequences by implementing certain methods. Improvements in extraction language. The !, and - hacks for opening commands, directories and standard input are removed.
14230 May 2016 01:02 major bugfix: Contains fix for 100-release regression: semantics of argument passing to TXR pattern function. Other significant bugfixes. Support for delivering a program as an executable. Other minor features.
14121 May 2016 18:34 minor feature: Important bugfixes. Termios support. Enhancements in visual selection mechanism in interactive listener. Support for registration of exit-time functions.
13924 Apr 2016 04:11 major bugfix: Numerous bugfixes and enhancements to existing functionality. Some minor new features, like access to the POSIX fnmatch function.
13816 Apr 2016 17:51 minor bugfix: "soft-connected" datagram sockets; ftw function; symbol macros work in function call dot position; better tracking of form expansion origin; new fmt function providing useful shorthand; open-socket-pair function. Bugfixes: possible security flaw in conversion of strings to UTF-8 strings; Linux "abstract" addresses for AF_UNIX sockets work properly; defstruct diagnoses use of nonexistent struct type as supertype; symbol macros no longer wrongly expanded at bind site; glob function hardened and memory leak fixed in it; broken argument handling in umethod/umeth fixed; fixed broken error handling in datagram sock-accept; bug in data source opening language in TXR language.
13712 Apr 2016 21:57 major feature: Semantics change in @(if) operator. Some new library functions which complement existing ones with rightmost searching semantics. New lset operator for assigning element of list to multiple places. Bugfixes, doc improvements.
13620 Mar 2016 16:32 major feature: Improvements in open-file mode strings. Buffer size can be specified via mode string, as well as unbuffered or line-buffered mode. Sockets default to opening in binary mode. Datagram sockets use new buffer size as capture buffer size. Socket timeouts implemented in sock-accept, sock-connect and in reads and writes. In pattern language, @(output) now takes a stream object as a destintation. The :vars keyword in @(repeat) and @(rep) can now bind a variable over the repeat block.
13511 Mar 2016 22:31 major feature: New stream-socket-like programming paradigm for datagram sockets. Socket bugfixes, including several platform issues on Mac OS, Cygwin and Solaris. New umask function. Small improvement to setenv function. Fixes to several functions. GC-related fix in parser affecting stability.
13402 Mar 2016 07:28 major bugfix: Unwinding now takes place if TXR exits due to an unhandled exception. TXR can now be installed setuid, and supports setuid scripts even if your kernel doesn't. A setuid TXR drops privileges when not running a setuid script. Networking/IPC support has been added: Unix Domain sockets and IPv4/IPv6 networking. Bugfixes.
13321 Jan 2016 17:08 major bugfix: Bugfixes in some library functions. Show-stopper regression in string input streams fixed. Serious breakage in env-hash function fixed. Fixed bug in signal handling causing unintentional blocking of signals. Internal improvements in pseudo-random number generator. New features: Base 64 support via library functions and filters. New function split* related to split. New random-state-get-vec function to snapshot PRNG state as a vector of integers. vec-list takes strings and vectors as input.
13113 Jan 2016 06:45 minor bugfix: This release contains only bugfixes. A regression in lazy strings introduced in 118 is addressed, affecting certain cases in the @(freeform) directives. Fixed issues in the printed representation of regular expressions and string literals. Other minor things.
13006 Jan 2016 06:55 major feature: New stream adapter object for reading regex-delimited records from any stream if they were lines. New way to submit a line from recalled history such that the position advances to the next history line. Fixed recent missing symbols regression in Tab completion. Fixes and improvements in OOP in the area of static and lazy instance initialization. Recent changes in chr-isdigit and chr-isxdigit functions have been reverted and the new behavior provided under different names.
12930 Dec 2015 15:43 minor bugfix: New @(data) and @(name) directives; quasiliterals in pattern language, and @(output) variables have Lisp semantics now; :counter in @(repeat) can be given an initial value; @(repeat) sees Lisp global now; lazy string objects are printed in reasonable way; chr-isdigit and chr-isxdigit return integer digit value; new special variables for global control over floating point printing; new with-slots macro; improvements in error reporting; fixed regression in generation of Vim syntax files; fixed four-year-old bug in @(last)/@(until) clauses of @(collect)/@(coll); fixed exception in @(freeform) on EOF from interactive stream.
12819 Dec 2015 18:23 major feature: Feature highlights: post-initialization hook in object construction; tracing of expansion ancestry in syntactic places for better error diagnosis. Jump back to TOC in HTML man page by clicking section number. Bugs fixed: replace function, assignment to hash key places, dot notation not recording source location info, debugger annoyances.
12710 Dec 2015 16:29 major bugfix: Features: Large file support; defun can define methods; a macro and function of the same name can now be defined. Fixed: bug in inheritance of static slots; faulty less comparison over range objects; crash in get-line on closed file stream; anaphoric if macro not accepting conditions expressed as dwim bracket forms; ftruncate function not detected on Solaris. Doc: restructuring, corrections, collapsible TOC in HTML version.
12630 Nov 2015 03:56 major bugfix: Bugfixes in functions: super, split, partition, transpose, sethash. New window-map and window-mappend functions for sliding window mapping. New define-accessor macro for easily extending functions to be accessors (i.e support assignment). Trace of macro-expansion chain in unhandled exception diagnostic messages.
12521 Nov 2015 04:50 major feature: New OOP mechanisms: functional indirection on slots; equality subsitution for custom equality/hashing of objects; lazy object instantiation for infinite object graphs and mutually referencing objects created in one step; mechanism for having objects callable as functions (functors). Improvements in extraction language. Some new library functions. Fixed some spurious retention issues in various places in the run-time that prevented lazy lists from being processed in constant memory. Minor bugfixes.
12415 Nov 2015 04:06 major feature: New iread function for reading object from stream in an interactive-friendly way. Improvements in sorting function. Scope change for implicit block in for operator. Support for computed block names. New group-reduce function for flexible decimation of sequences to hash tables. (rcons x y) prints as x..y now. nreverse handles strings and vectors , reverses them in place; reverse more efficient on vectors and strings. revappend and nreconc added. *print-flo-precision* special variable for controlling precision applied when printing floats *print-base* special variable for controlling radix of printed integers.
12306 Nov 2015 20:35 major bugfix: Fixes regression in search-regex function introduced in TXR 115.
12206 Nov 2015 01:50 major feature: Range data type introduced. The x..y notation now produces ranges, rather than conses. TXR pattern variables are now seen as dynamic variables in Lisp forms evaluated out of the pattern language, rather than lexical variables. The scoping rule is now documented. New interface to delimited continuations: the suspend macro. The yield/yield-from macros can now receive data into the continuation context without yielding an item. Architecture support: PPC64.
12130 Oct 2015 19:11 major feature: TXR Lisp now features delimited closures. Some minor features and bugfixes.
12019 Oct 2015 01:31 major feature: Improvements in area of OOP structs: methods can be defined outside of defclass; static slots can be added to existing struct types, and are retroactively inherited by existing derived types; and finalizers are immediately invoked on objects whose constructors are abandoned. New advanced exception handling features: intercept exceptions before unwinding takes place and alter their course; dynamically inspect available exception handlers and transfer control to an arbitrary one. New b conversion specifier in format for binary. New typecase macro. Bugfixes.
11910 Oct 2015 18:27 major feature: Improvements in interactive listener, including a variant of Tab completion which completes on substrings rather than just prefixes. New features and improvements in OOP structs, including a macro for scoped destruction of objects, and a way for structs to change type while retaining their identity. New library functions in area of lazy lists and lazy list generation. New macro for defining exception subtype relationships. New macros for working with streams in a scoped discipline. A number of bugfixes.
11801 Oct 2015 20:02 major feature: Implementation of instance slots for structures. New syntax in defstruct macro for method definition, constructor code and finalization. Improvements in editing functionality of interactive listener. Optimization in regular expressions, and a fix for a certain degenerate behavior. Performance improvements in lazy strings. GC fix for runaway allocation behavior in code that rapidly cycles large objects. Various other bugfixes.
11726 Sep 2015 00:59 major feature: This feature enhances the interactive listener again. There is now visual selection, cut/copy/paste, undo (with independent undo for different lines of history), copy word or atom from previous line, and delete line (in multi-line mode). The visual parenthesis matching (jump to matching and back) now works in the forward direction, not only backward. Parenthesis matching is now available as an editor movement command. Bugs have been fixed in the area of lazy strings.
11617 Sep 2015 16:29 major feature: This feature enhances the interactive listener in numerous ways such as: multi-line editing, reverse search, parenthesis matching, edit-in-external-editor. A memory leak in the interactive listener is fixed. There are fixes for old bugs in the regex module: a memory leak and counter wraparound bug. Also, hard-coded limitations on regular expression size is removed.
11511 Sep 2015 20:24 major feature: This feature adds an interactive listener ("REPL") with editing, completion and history recall. The type system is clarified and extended, with new functions for subtype testing, yet further enhancing the ability to program in object-oriented styles. A number of important bugfixes are also included in this release, including more fixing for finalization hooks.
11403 Sep 2015 16:00 major feature: This release adds structures: user-defined objects with named slots. Structures support inheritance, and OOP via functions stored in slots. Dot syntax is supported for slot access, including a way to treat slots as either methods or indexable objects. Important bugs are fixed also: the incorrect implementation of the finalize function is repaired, and a bug is fixed in the treatment of assignable hash places indexed by a cons cell.
11320 Aug 2015 04:07 major bugfix: Important bugfixes.
11215 Aug 2015 02:36 minor bugfix: Fixed regression in the format function introduced in previous release, 111. Some new features. Some tweaks and diagnostic improvements in lexical analysis and parsing. New clamp function. New function display-width for calculating the screen width of a character or string (2 for Chinese characters, for instance). Indentation and field formatting now obey display width, rather than character count.
11109 Aug 2015 14:40 major feature: New features: multi-line, indented printing of objects; new directives in format function for centering fields and hanging indentation; indentation API over streams; global lexical variables; hash reverse lookup; support for inspecting and altering Unix uid and gid privileges; new filesystem query convenience functions: existence, type, permissions and ownership; fixed two instances of incorrect object init order under generational gc, and a few minor bugs.
11026 Jul 2015 16:26 major feature: Developments in the areas of syntactic places, quasiliterals, hashing, and invocation. Significant regression fix (TXR 97) in quasiliterals. Minor bugfixes.
10922 Jun 2015 04:36 major bugfix: This is mainly a bugfix release. A garbage collector crash introduced in TXR 108 is fixed. Fixed broken mkstring function. Improved equal hash function, and hardened cat-str function against overflow. The new features are some anaphoric macros.
10815 Jun 2015 21:50 major bugfix: Major feature and bugfix release. TXR Lisp can now be used standalone. Powerful new "syntactic places" framework that is user-extensible. Fixes for several critical stability issues. Plus numerous minor features and bugfixes.
10727 Apr 2015 23:05 minor feature: Change in representation of promise objects. The force function, - New mlet macro: a step beyond Scheme's letrec. - A trivial optimization in the keywordp function more than doubles, - Fixed regression in the garbage collector introduced in October 2014,.
10623 Apr 2015 06:25 minor feature: New function tprint; like pprint but prints lists of strings as, - New stream opening option letter "i" for marking streams interactive. - New command line option -n which makes standard input noninteractive, - New command line option -P which is like -p but based on pprint. - New command line option -t for printing Lisp value using tprint. - Stream argument in get-lines is optional, and defaults to *stdin*. - The Unix fork and wait functions are exposed for use. - New function open-fileno for opening a stream on a Unix file descriptor, - New functions dup (interface to Unix dup and dup2), chmod, exec, - New exit* function which calls _exit. - Added getenv, setenv and unsetenv functions for environment manipulation. - New operator zap for overwriting a place with nil, and returning its, - New whilet (while + let) macro for variable binding plus iteration. - New iflet and whenlet (if + let, when + let) macros for variable binding, - New while* and until* loops which unconditionally execute one, - New dotimes macro for simple iteration. - New lcons macro for writing expressive, concise code around lazy conses. - Brace variable notation can now contain quotes and quasiquotes. - Quasistrings can contain quasiquotes: `prefix @ (,x ,y) suffix`. - Fixed regression introduced in TXR 81, causing the argument parts of, - The backslash in regular expressions can now only be used for recognized, - Fixed stack array overrun in apply function. - The int-str function was recognizing the 0x C language convention in base, -36. - Eliminated nuisance error message issue from the Makefile about git not, - Streams opened on TTY devices are not automatically marked as interactive. - The X specifier in format was printing in lower case just like x, - Addressed spurious retention (garbage-collection-related issue) in, - Parser now diagnoses trailing junk in hex, octal and binary literals, - Fixed character escaping issues in open-process on Windows. - Fixed bug in error reporting, causin
10516 Mar 2015 21:45 minor feature: New function lexical-lisp1-binding for improved macro-time introspection of, - New functions pad and weave. - New regex functions search-regst, match-regst and match-regst-right, -regex, match-regex and match-regex right. - Improved error reporting, particularly for errors ocurring during, - Streams have persistent error state. New functions: get-error, -error-str and clear-error. - New ignerr macro for trapping exceptions of type error, and converting, - New function ensure-dir: creates a directory in the filesystem, - Bugfixes in append* function: lack of error handling and inappropriate, - Bugfix in match-regex-right: zero length matches must return zero rather, - Fixed memory leak in open-process and run on POSIX platforms. - Fixed memory corruption bug in run function on Windows platform.
10410 Feb 2015 01:45 minor feature: Symbol macros are now shadowed by lexically scoped functions, when, -1 semantics (a , - New function, abort. - TXR now doesn't terminate abnormally (abort) on unhandled exceptions, but, -based Windows target, where we get an annoying dialog box on, - New *uhandled-hook* variable can be used to register a user-defined, - New arithmetic function, trunc-rem. - When the numbered arguments of partial application under the op family of, -character-wide fields, - Improvements in Windows installer: reduced broadcast delay in registerting, - A txr-win.exe can be built now which avoids creating a console window. - Fixed bug in quasiliteral string evaluation in TXR Lisp, in conjunction, - Fixed a serious bug in the op macro and all related operators like do, - Fix in internal representation of exceptions: (throw 'x "foo") is now
10304 Feb 2015 12:25 minor feature: New functions lexical-var-p and lexical-fun-p allow macros to, -expander as, - get-string now closes the stream after obtaining a string. -C option can be used to request the old behavior. - New function, constantp. - New functions callf, mapf, dup and flip for more power and flexibility, -combining expressions. - New function width, for computing the bit width of signed and, - New function sign-extend, for converting an a two's complement, - Windows executable (MinGW and Cygwin) now has an icon and, -data like ProductVersion and FileVersion. - MinGW-based Windows build is now distributed via an executable installer, - Fixed regression introduced in 102, in the fix to the make-like, - Fixed small bug in macro argument list processing. The colon symbol, - Fixed a bug in the code expander's handling of macro parameter lists.
10215 Jan 2015 16:25 minor feature: merge function becomes generic: works over sequences rather, - New function glob is provided on platforms which have the Unix, - New functions plusp and minusp. zerop accepts character argument. - Fixed incorrectly implemented horizontal flavor of the, - Fixed a bug in the make-like function which has consequences for, - Fixed a serious bug affecting the OS X port. The llvm-gcc compiler, -byte alignment. The bug leads to a failure of the OS X port, -p and -e options, for instance: txr -p '(+ 2 2)'.
10103 Jan 2015 04:05 minor feature: Finalization support in the garbage collector. Use the finalize, - iff function can now be called with just one argument. - New function chand. - New macros opip and oand. - The min and max functions are more generic by using the less function, - The less and greater functions are variadic now. - Select accepts a function in place of the index list. - Arguments of where function reversed, with backward compatibility support. - New functions succ, ssucc, sssucc, pred, ppred, pppred for calculating, - New functions wrap and wrap* for clamping a number into a given range, - New function sort-group for sorting and partitioning a sequence in, - New function in for generic membership testing over any kind of sequence, - copy function extended to copy random state objects. - New function unique, which generalizes uniq. - New function aret: apply version of ret. - Build system improvements: debug and optimized TXR built at the same time, - Fixed incorrect registration of repeat function, lacking support, - Removed dependency on useless Flex library (libfl). - Overflow arithmetic fixes in some array resizing logic. - Incorrect argument defaulting in iff function, - Garbage printed in type mismatch diagnostic in sub, ref, - Behavior of splitr-str was undocumented for the case of the empty, - The set-diff function was not handling nil elements. - The toint function identified itself as tofloat in error messages. - The toint and tofloat conversions conveniently treat a character as a, - Added missing documentation that make-random-state can take an existing, - Also, make-random-state was incorrectly doing additional scrambling after, - Simple lazy streams now close a stream when it runs out of data. - Catenated streams close each stream that is popped from the list due, - Fixed bug in replace-str and replace-vec: when the argument was an, - The partition* function was found to be buggy. - Separate directory build issues fixed.
10024 Oct 2014 03:16 minor feature: New functions: chr-isblank and chr-isunisp, - New generic less and greater functions, which are also used as, -max, max-pos, and others. - New directives @(line) and @(chr) for binding or asserting the current line, - Lisp expressions allowed on left side of @(bind) and @(rebind) now. - New function lcm (lowest common multiple). - The gcd function now takes zero or more arguments instead of exactly two. - New @(include) for parse-time loading of code, useful for loading macros, - Beginning of library external to TXR executable: macros txr-if, txr-when, -bind for more convenient access back into the pattern, - New combinator function notf for negating a function. - Fixed December 2011 regression affecting @(freeform) directive. - Fixed GC-safety bug in abs-path-p function. - Fixed breakage in scanner and parser introduced in August. - Fixed inappropriate printed rendering of list objects produced by, --compat 99. - Bugfix in the gcd and lognot functions: neglecting to normalize some, - Bugfix in @(eof) directive: not matching the end of interactive, - Fixed abort due to assertion going off when GC is disabled and the array of, - Fixed parser stack overflow and inefficiencies when handling large TXR, - Bugfix in match_fun causing memory accesses to automatic storage, - Hash table reorganization is prevented during hash table traversal,
9906 Oct 2014 11:39 minor feature: Variables in the pattern language can be bound to regexes, in, - Representation for compiled regexes is streamlined. - Regex objects now print in regex notation. - Fixed August 11 regression affecting 96 through 98: broken matching of, - Fixed one more problem with andf function: (andf) not returning t.
9826 Sep 2014 23:39 cleanup: Cleaning up option handling code. New --compat option. Document -C option. Improved manpage.
9730 Aug 2014 14:58 minor bugfix: A few GC-related fixes bugfixes were applied after a code review. The @(load) operator was broken with changes in version 94, but fixes now. Same for the @ var mod syntax Lisp quasiliterals from TXR 96.
9614 Aug 2014 20:45 major feature: Bugfix in ret operator. Some hitherto internal functions are exposed, related to the trie data structure. A largely backward-compatible change in the variable match-and-bind semantics in certain situations in the pattern language fixes certain counter-intuitive behaviors.
9511 Aug 2014 21:55 major bugfix: Version 95 addresses a regression caused by the re-entrant parser work in version 94.
9406 Aug 2014 13:58 minor feature: TXR's parser is now re-entrant, allowing parse-time-expanded macros to use it. A (read) interrupted by a signal handler which itself calls (read) works too. New funcs: giterate, partition-by, uniq. Quasiquote splices can now occur in string quasiliterals. New POSIX things: getpid, getppid, kill. POSIX itimers are exposed: getitimer, setitimer. Bugs fixed: @(output) blocks not applying filters to Lisp evaluations; broken n-perm-k function; wrong exception messages for type errors in +, - and *; fixes in signal handling; fixed architecture-dependent results in PRNG-seeding code in make-random-state.
9327 Jul 2014 17:13 minor feature: New funcs: interpose, mapdo, juxt, log2, get-lines, put-lines, put-strings, lconsp. New case macros. log2 function added. New functionality in search-str. One-arg form of / function. Bindings created using -D command line option are now visible to code executed via -e or -p later in the command line. Fixed broken @(eol) directive. Obscure bug-fixes in @(do) and @(require). Alternative stack (sigaltstack) now automatically used for SIGBUS handlers, not only SIGSEGV.
9222 Jul 2014 02:24 minor feature: New operators ado and ido. New command line option --license. Long overdue flet and labels operators for lexical binding in the function space, added as macros. apf and ipf functions fixed. Uninitialized variable bug fix in select function and in the index list case of replace-list.