|Tags||interpreter development lisp text-processing utilities programming-language|
22511 Sep 2019 23:22 major bugfix: See RELNOTES: http://www.kylheku.com/cgit/txr/tree/RELNOTES?id=txr-225
22430 Aug 2019 18:47 major bugfix: See RELNOTES: http://www.kylheku.com/cgit/txr/tree/RELNOTES?id=txr-224
22314 Aug 2019 19:48 major bugfix: semantics improvement in collect/coll directives in pattern language in area of :vars. base-name function takes optional argument for suffix to strip. Bugfixes and improved code generation in immediately-called lambda. Improved code from pop macro. Faster history saving when quitting listener. Revived several macros missing due to nonexistent autoload registrations. Fixed regression causing line number locations not to be reported in unbound variable warnings.
22231 Jul 2019 07:10 major feature: FFI now supports self-referential structs/unions, and is capable of passing a linked list of structures to a foreign function, and receive an updated version. The FFI type system's syntax now supports the dot notation for selecting member types: e.g. if foo is a structure type with member a, which has a member b, then foo.a.b refers to the type of b. A null pointer handling bug is fixed in FFI and a minor diagnostic flaw in the parser.
22124 Jul 2019 00:43 major feature: FFI now supports variable length structs that have the flexible array member at the end. FFI functions that convert to and from buffer objects now correctly support variable length types. New hash table constructor hash-zip for creating a hash table out of separate sequence of keys and values. Improvements in relate function. Regression fixed: missing filename in error messages from pattern language.
22009 Jul 2019 07:43 major bugfix: Fixed bug in @(define ...) directive causing spurious unbound variable warnings. Fixed old regression in @ var1 var2 syntax. Fixed broken carray-replace function. Addressed semantics issue of overlapping replace operations, and eliminated overlapping memcpy (which is nonportable). Minor enhancements in area of SHA256, CRC32 and buffers.
21901 Jul 2019 19:14 major bugfix: New SHA-256 and CRC-32 functions. Base-64 functions work with buffers now, not only strings. Further improvements in sequence genericity in the library. Buffers and carrays are now considered sequences. defset macro now binds new-val argument to temporary variable, so users of defset don't have to eschew multiple insertions of it into the template. in function's testfun and keyfun arguments now work with hashes. Two regressions in lnew operator fixed. seq-begin works as documented now with non-list sequences. Variable binding mix-up in :key parameter macro fixed. Fixed wrong polarity of at-exit-do-not-call function's return value.
21820 Jun 2019 17:31 major bugfix: Three separate fixes affecting garbage collection stability. Fixes in carray and buffer indexing. Fixed crash in logcount on 64 bit platforms. Fixed command line regression: unsuffixed scripts treated as TXR Lisp rather than TXR. Several bugs fixed in defset macro. Bugs fixed in replace-list and select function. cat-str and split-str accept character object as separator. New hash-peek and seq-peek functions for added flexibility in traversal. New bitset function. New sub-buf accessor and replace-buf function. More efficient carray-sub accessor. Functions for sequence slicing and replacement migrated to newer internal interfaces for cleaner semantics, and turned into accessors. --lisp argument in hash bang line now specially treated by compile-file. Improvement in semantics of variable length zarray FFI type.
21710 Jun 2019 19:25 major feature: Bugfix in treatment of most negative integer, particularly affecting FFI; fixnum now includes one more negative value as a side effect of this fix. Library now exposes fcntl, and errno values. Bugfix in path-private-to-me-p and path-strictly-private-to-me-p functions. Windows installer now associates .tl, .txr and .tlo files with txr executable.
21621 May 2019 18:46 major feature: Debugger rewrite in progress. Backtraces. More nuanced exception hierarchy for system errors. Stream features: object depth/length limit, indent-force-off mode. OOP features: allocate-struct, derived hook, new* and lnew* macros. A number of bugfixes including a fairly long-lived regression in the apply function. compile-file resolves relative paths in the same way as load.
21531 Mar 2019 07:07 major feature: Security issue in listener fixed: temporary edit files and .txr_history are now readable only to the owner. Feature: user-defined arithmetic types: objects supporting certain methods can be used as arguments to the arithmetic functions.
21423 Mar 2019 06:06 major feature: Floating-point error handling implemented; expt function improved; new generic sequence iterators; struct objects are now considered subtyped from a struct abstract type; lazy cons API enhanced for more space-efficient lazy list generation. Fixed bug in parser: out of range floating-point tokens turning into nil instead of being diagnosed.
21310 Mar 2019 07:22 major bugfix: Listener character limit raised from 1023 to 4095. New defset macro. New load-for macro. Fixed buffer overflow when loading excessively long lines from history. Fixed lingering line wrap problems in listener's optimized character entry logic. Fixed broken :key parameters: -- separator symbol being in sys package. Fixed lnew operator wrongly being in sys instead of usr package. Fixed compiler bugs handling lambda expressions that are immediately called. Fixed compiled (fun (lambda ...)) expression producing interpreted function rather than compiled. Fixed bug in disassembler. Fixed lambda expressions being wrongly considered fboundp. Fixed environment handling bug in expander, when traversing tree-case operator.
21225 Feb 2019 15:23 major bugfix: Fixed hang in the listener. Four separate GC-related bugfixes, one of them critical. Improvement in symbol printing. New bracket function. Minor optimizations and enhancements.
21119 Feb 2019 15:41 major bugfix: New save-exe function for somewhat easier application delivery. Some new functions in area of buffers and regex. Fixed some more issues in the interactive listener. Fixed issue in GC of objects for which finalizers are invoked being retained until a full GC occurs. Fixed an issue in the OOP system.
21015 Feb 2019 04:53 major bugfix: Fixed incorrect behavior in hash-uni. Fixed second-order regression in the interactive listener introduced in 209 when trying to fix earlier regression. diff, isec and uni functions now work efficiently for non-list sequences, and support hashes. New funtion symdiff. New functions hash-symdiff and hash-from-alist. Hash table performance improvements.
20908 Feb 2019 22:44 major bugfix: Fixed incorrect compile semantics in defvar macro, leading to variables being lexical rather than dynamic. Fixed minor bugs in FFI. Fixed Pattern Language situation in which a user-defined pattern function fails to be invoked for the invalid reason that the input has been exhausted. Fixed screen refresh regression in listener. Fixed treatment of NUL input character in listener. Fixed an instance of inconsistent handling of control characters in listener. Fixed parser bug in string and regex literals: invalid UTF-8 not diagnosed, NUL character not converted properly. The build no longer builds the library twice: no .tlo2 files are generated any more. The sum and product library functions take a keyfun parameter. The file compiler now de-duplicates string literals and bignum integer constants.
20829 Jan 2019 06:12 major bugfix: Fixed show-stopper bug in copy-hash function also affecting hash-diff. Fixed issues revolving around :nothrow in @(next) directive Obscure improvement in command line interface.
20727 Jan 2019 01:26 minor bugfix: Fixed broken FFI types be-int64 and le-int64. Fixed "make install" issue when using separate build directory. Some innternal code structure and performance improvements.
20619 Jan 2019 08:41 major bugfix: Fixed major bug: flaw in bignum addition. Fixed flaw causing the pseudo-random number generator functions rand and random not to distribute numbers over the entire range of the specified modulus. Fixed bugs in the list-carray and vec-carray functions. Minor improvements.
20516 Jan 2019 06:43 major bugfix: Bugfixes in compiler/assembler and FFI. Build issue occurring on Musl C library fixed. Minor feature work.
20418 Dec 2018 15:05 major bugfix: Bugfix in UTF-8 decoder. Bugfix in defvar operator. New nzerop function. Other minor improvements.
20318 Dec 2018 15:02 major bugfix: Broken logxor function fixed. Bugs fixed in the caseq*, caseql* and casequal* macros. VM performance improvements. Couple of new library functions.
20222 Nov 2018 22:29 major bugfix: Some optimizations in the compiler, virtual machine and arithmetic library. New copy-fun function copies functions, duplicating a snapshot of their lexical environment. Bugfix: compile function now properly handles functions with an environment. The interpreted environment is converted to a compiled one.
20108 Nov 2018 05:27 major bugfix: Fixed issue in compile-file creating files that won't load when the source contains a defpackage followed by use of package symbols. Fixed load throwing exception on empty file. Also, load now skips the #! (hash bang) line in source and compiled files. Improvements in quality of type mismatch diagnosis in numerous library function. Additional internal improvements.
20005 Nov 2018 19:03 major bugfix: Fixed regression in interactive listener causing abort on window resize. New compiler optimizations in area of global bindings used in the syntax. Form expander is now a public, documented feature. Screen update optimizations in interactive listener for better external copy-paste performance, and better experience on slow/lagged connections.
19928 Oct 2018 22:22 minor feature: New compiler optimizations, particularly access to global lexical variables. File compiler now conveniently propagates hash bang line from source file to compiled file. Top-level forms treated more incrementally by evaluator and compiler. New functions in library: random-float, signum and others. Floating-point rounding control exposed, if available in host platform. Fixed bug in compiler's treatment of nil test in (for ...) loop.
19807 Jul 2018 18:53 major bugfix: Hash tables are support keyed hashing. Fixes: assertion in ftw function; nonworking (next) in Awk macro; nonworking equal comparison of two hash tables; problem with copy-hash creating object with uninitialized field; crash in interactive listener when yanking selection.
196727 May 2018 20:22 minor bugfix: New logcount function for counting bits in an integer. Fixed regression introduced in 196: interactive listener throwing fatal exception if .txr_history file doesn't exist. Fixed a bug in the compiler, and autoload issue affecting compiled awk macro code.
19619 May 2018 15:58 major feature: From the early beginning, TXR has operated on Unicode text and used wide characters internally. Now, at last, Unicode characters can be used in identifier names. Also, the interactive listener, a fork of the linenoise library, finally supports Unicode; it has been converted to use wide characters, like the rest of TXR.
19505 May 2018 04:41 major bugfix: Fixed regression from TXR 190 causing special variable function arguments not to work properly. Additional fixes were done in this area to tighten the semantics. TXR's fallback mechanism for discovering its own executable path was incorrect; it was used on Solaris, MacOS and also on any unsupported platform. This caused TXR to malfunction unless invoked via a full path. Those two platforms now have a platform-specific method for self-path discovery, and the fallback mechanism behaves more sanely also.
19401 May 2018 03:58 major bugfix: Fixed failure to handle most negative integer in FFI conversion, resulting in the Win32 basic window example not working in 32 bit mode. Also fixed some compiler/assembler issues related to instruction selection of immediate moves and encoding of their operands. The Win32 window example now compiles and runs.
19327 Apr 2018 03:39 major bugfix: Fixed: wrong multiple evaluation within the I/O redirection operators of the awk macro; compiler mistranslating (return x) forms; autoload issues of compiled library modules. Features: load-time operator for easily embedding statically computed data into code as if it were a literal; code generation improvements for destructuring and string quasiliterals; optimization away of block forms; big improvement in VM stack use.
19220 Apr 2018 00:40 major bugfix: Compiler bugfixes: now handles ((lambda ..) args ..) form and correctly compiles unwind-protect. Eliminated gratuitous consing in apply function. Little-endian build of TXR now loads .tlo files compiled on big-endian and vice versa. Case macros with integer or character keys in a dense range now compile to direct jump table.
19111 Apr 2018 06:37 major feature: TXR now has a compiler and virtual machine for faster loading of code which takes less space, executes faster, generates less garbage and is resistant to reverse-engineering. Some other minor enhancements are included in this release and a higher-than-usual number of bugfixes.
19019 Feb 2018 04:04 major feature: New features in the interactive listener. Limitation removed from Lisp load function: it can now process .txr files. Bugfixes in expansion related to op family of operators. Minor autoload-related bugfix.
18907 Feb 2018 07:05 major feature: Numerous improvements in abstract sequence model in OOP system; read and iread functions no longer record source location info, unless requested, a number of important bugfixes.
18820 Dec 2017 16:33 major feature: User-defined I/O streams are now possible. The hash function, and others which use it implicitly, default to equal-based hash tables now. New library functions grade, rlist and rlist*. A number of bufixes including unintentional destructive behavior in append* and mappend*.
18719 Nov 2017 18:12 major feature: Several new range operators in Awk macro; semantic and performance improvement in a number of sequence processing functions; new lop macro (left binding op); carray handles negative indexing; I/O convenience functions for writing and reading whole buf objects; Windows port based on Cygnal library rebased to Cygwin 2.9.0. Half a dozen bugfixes including totally broken copy-hash function.
18618 Sep 2017 13:40 major feature: New math/stats funtions: cum-inv-norm: inverse of cumulative normal distribution; poly, rpoly: polynomial evaluation. Optimizations in regex implementation and new function regex-prefix-match. Listener provides visual feedback when expecting more characters in incomplete line. Lisp syntax a.b .. c.d now has the intuitive precedence between the . and .. Fixed a bug causing the incorrect printing of some regular expressions.
18531 Aug 2017 01:54 major feature: Five-and-a-half year old string processing bug fixed, dating back to TXR 55; kludgy op and do macro implementation rewritten from C to Lisp.
18423 Aug 2017 20:33 major feature: Ported to 64 bit ARM8 (aarch64). New library functions: isec, uni, spl, tok, digpow, digits, sum, prod, divides. New alias len for length and diff for set-diff, the latter being deprecated. Functions logand, logior, logxor and bit accept character operands now. New looping macros doloop and doloop*. FFI I/O functions: write and read FFI types to and from streams. New stream types for I/O into buffers. New base64 stream-to-stream encode and decode functions. truncate-stream function's length argument optional, defaulting to stream position. @(bind x y) does two-way string tree match now even when x isn't a variable, just like when it's a variable. Bugfixes.
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 feature: 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 minor feature: Minor feature enhancements in the area of OOP structs, regular expressions, hash tables, networking, system time and the interactive listener. Improved support for abstract sequences. Stability bug fix related to argument passing in method calls. Listener bugfix.
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.
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.
14712 Aug 2016 02:30 hidden: Featuring a new 64 bit Windows/Cygwin port. Fixed native Windows TXR trying to use HOME environment variable when run from Cygwin.
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 feature: 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 major 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 continuations. 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: 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.
9406 Aug 2014 13:58 major bugfix: 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.
Submitted byKaz Kylheku
ManageYou can also help out here by:
← Update project
or flagging this entry for moderator attention.