summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--RELNOTES55
-rwxr-xr-xconfigure2
-rw-r--r--dep.mk4
-rw-r--r--txr.14
-rw-r--r--txr.c2
-rw-r--r--txr.vim177
7 files changed, 163 insertions, 93 deletions
diff --git a/ChangeLog b/ChangeLog
index 16e1ddd0..b84f5cbf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2014-02-17 Kaz Kylheku <kaz@kylheku.com>
+ Version 80
+
+ * txr.c (version): Bumped.
+
+ * txr.1: Bumped version and set date.
+
+ * configure (txr_ver): Bumped.
+
+ * RELNOTES, txr.vim, dep.mk: Updated.
+
+2014-02-17 Kaz Kylheku <kaz@kylheku.com>
+
* eval.c (bind_args, op_defvar, op_defun, op_defmacro, op_modplace):
Fix sybol misspelling.
diff --git a/RELNOTES b/RELNOTES
index 9d2f215d..1bf0c7dd 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,3 +1,58 @@
+ TXR 80
+ 2014-02-17
+
+
+ Features
+
+ - TXR now nicely handles null characters in text stream inputs.
+ They are internally encoded to the Unicode value U+DC00,
+ which will map back to a single null byte on output (that being
+ existing behavior).
+
+ - TXR now has Lisp macros: the defmacro operator is implemented,
+ with destructuring lambda lists and all.
+
+ - New operators tree-bind and tree-case for pattern binding similar
+ to Common Lisp's destructuring. This piggybacks off the defmacro
+ infrastructure which we now have.
+
+ - Big improvement in debuggability: the unhandled exception error message now
+ gives source code location information.
+
+ - New functions pos, pos-if, posq, posql and posqual for finding item
+ positions in sequences.
+
+ - Predicate function is now optional in the some, all and none functions.
+
+ - hash-uni and hash-isec functions take a join-func argument which
+ lets you specify how elements from two tables are merged.
+
+ - new hash table functions inhash and hash-update-1.
+
+ - two hashes can now be tested for deep equality using equal.
+
+ Bugs
+
+ - Removed bogus optimization from hash table implementation.
+
+ - Syntactic fix: input like 1.0a no longer parses as a floating-point number
+ followed by a symbol, but is diagnosed as an error. Syntax like 123a
+ continues to work as before: it denotes one symbol, not 123
+ followed by a.
+
+ - Bugfix in type check for "cobj" class objects that would crash if
+ given non-heaped values like fixnum integers.
+
+ - Corrected problems in the code walking and expansion of lambda and
+ defun forms.
+
+ - Fixed failure to propagate line number info through the abstract syntax
+ of string quasiliterals.
+
+ - Doc bugs: missing descriptions of gethash and gensym.
+
+
+
TXR 79
2014-02-11
diff --git a/configure b/configure
index d2f27a57..deb14345 100755
--- a/configure
+++ b/configure
@@ -387,7 +387,7 @@ fi
#
-txr_ver=79
+txr_ver=80
#
# The all important banner.
diff --git a/dep.mk b/dep.mk
index 7fe347af..2a52eeb5 100644
--- a/dep.mk
+++ b/dep.mk
@@ -5,7 +5,7 @@
./lib.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./gc.h $(top_srcdir)/./arith.h $(top_srcdir)/./rand.h $(top_srcdir)/./hash.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./stream.h $(top_srcdir)/./utf8.h $(top_srcdir)/./filter.h $(top_srcdir)/./eval.h $(top_srcdir)/./regex.h
./regex.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./parser.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./regex.h $(top_srcdir)/./txr.h $(top_srcdir)/./gc.h
./gc.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./stream.h $(top_srcdir)/./hash.h $(top_srcdir)/./txr.h $(top_srcdir)/./eval.h $(top_srcdir)/./gc.h $(top_srcdir)/./signal.h
-./unwind.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./gc.h $(top_srcdir)/./stream.h $(top_srcdir)/./txr.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h
+./unwind.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./gc.h $(top_srcdir)/./stream.h $(top_srcdir)/./txr.h $(top_srcdir)/./signal.h $(top_srcdir)/./eval.h $(top_srcdir)/./parser.h $(top_srcdir)/./unwind.h
./stream.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./gc.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./stream.h $(top_srcdir)/./utf8.h
./arith.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./gc.h $(top_srcdir)/./arith.h
./hash.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./gc.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./stream.h $(top_srcdir)/./hash.h
@@ -13,7 +13,7 @@
./filter.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./hash.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./match.h $(top_srcdir)/./filter.h $(top_srcdir)/./gc.h $(top_srcdir)/./stream.h
./eval.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./gc.h $(top_srcdir)/./arith.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./regex.h $(top_srcdir)/./stream.h $(top_srcdir)/./parser.h $(top_srcdir)/./hash.h $(top_srcdir)/./debug.h $(top_srcdir)/./match.h $(top_srcdir)/./rand.h $(top_srcdir)/./filter.h $(top_srcdir)/./txr.h $(top_srcdir)/./syslog.h $(top_srcdir)/./combi.h $(top_srcdir)/./eval.h
./rand.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./gc.h $(top_srcdir)/./arith.h $(top_srcdir)/./rand.h
-./combi.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./eval.h $(top_srcdir)/./combi.h
+./combi.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./eval.h $(top_srcdir)/./hash.h $(top_srcdir)/./combi.h
mpi-1.8.6/mpi.o: config.h $(top_srcdir)/mpi-1.8.6/mpi.h $(top_srcdir)/mpi-1.8.6/logtab.h
mpi-1.8.6/mplogic.o: config.h $(top_srcdir)/mpi-1.8.6/mplogic.h
./debug.o: config.h $(top_srcdir)/./lib.h $(top_srcdir)/./debug.h $(top_srcdir)/./gc.h $(top_srcdir)/./signal.h $(top_srcdir)/./unwind.h $(top_srcdir)/./stream.h $(top_srcdir)/./parser.h $(top_srcdir)/./txr.h
diff --git a/txr.1 b/txr.1
index fb40e7f1..2f897fd3 100644
--- a/txr.1
+++ b/txr.1
@@ -21,9 +21,9 @@
.\"IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
.\"WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-.TH "TXR" 1 2014-02-11 "Utility Commands" "Txr Text Processing Language" "Kaz Kylheku"
+.TH "TXR" 1 2014-02-17 "Utility Commands" "Txr Text Processing Language" "Kaz Kylheku"
.SH NAME
-txr \- text processing language (version 79)
+txr \- text processing language (version 80)
.SH SYNOPSIS
.B txr [ options ] query-file { data-file }*
.sp
diff --git a/txr.c b/txr.c
index 79a39065..8b746f00 100644
--- a/txr.c
+++ b/txr.c
@@ -47,7 +47,7 @@
#include "eval.h"
#include "txr.h"
-const wchli_t *version = wli("79");
+const wchli_t *version = wli("80");
const wchar_t *progname = L"txr";
val self_path;
diff --git a/txr.vim b/txr.vim
index cd49e35d..d95c8248 100644
--- a/txr.vim
+++ b/txr.vim
@@ -33,50 +33,51 @@ syn keyword txr_keyword contained set skip some text
syn keyword txr_keyword contained throw trailer try until
syn keyword txr_keyword contained var
-syn keyword txl_keyword contained * *keyword-package* *random-state* *self-path*
-syn keyword txl_keyword contained *stddebug* *stderr* *stdin* *stdlog*
-syn keyword txl_keyword contained *stdnull* *stdout* *system-package* *user-package*
-syn keyword txl_keyword contained + - / /=
-syn keyword txl_keyword contained < <= = >
-syn keyword txl_keyword contained >= abs acons acons-new
-syn keyword txl_keyword contained aconsql-new acos alist-nremove alist-remove
-syn keyword txl_keyword contained all and andf append
-syn keyword txl_keyword contained append* append-each append-each* apply
-syn keyword txl_keyword contained ash asin assoc assql
-syn keyword txl_keyword contained atan atan2 atom bignump
-syn keyword txl_keyword contained block boundp break-str call
-syn keyword txl_keyword contained car cat-str cat-vec catch
-syn keyword txl_keyword contained cdr ceil chain chr-isalnum
-syn keyword txl_keyword contained chr-isalpha chr-isascii chr-iscntrl chr-isdigit
-syn keyword txl_keyword contained chr-isgraph chr-islower chr-isprint chr-ispunct
-syn keyword txl_keyword contained chr-isspace chr-isupper chr-isxdigit chr-num
-syn keyword txl_keyword contained chr-str chr-str-set chr-tolower chr-toupper
-syn keyword txl_keyword contained chrp close-stream closelog collect-each
-syn keyword txl_keyword contained collect-each* comb compl-span-str cond
-syn keyword txl_keyword contained cons conses conses* consp
-syn keyword txl_keyword contained copy-alist copy-cons copy-hash copy-list
-syn keyword txl_keyword contained copy-str copy-vec cos count-if
-syn keyword txl_keyword contained countq countql countqual cum-norm-dist
-syn keyword txl_keyword contained daemon dec defun defvar
-syn keyword txl_keyword contained del delete-package do dohash
-syn keyword txl_keyword contained downcase-str dwim each each*
-syn keyword txl_keyword contained eq eql equal errno
-syn keyword txl_keyword contained error eval evenp exit
-syn keyword txl_keyword contained exp expand expt exptmod
-syn keyword txl_keyword contained fboundp fifth find find-if
-syn keyword txl_keyword contained find-package first fixnump flatten
-syn keyword txl_keyword contained flatten* flip flo-int flo-str
-syn keyword txl_keyword contained floatp floor flush-stream for
-syn keyword txl_keyword contained for* force format fourth
-syn keyword txl_keyword contained fun func-get-env func-get-form func-set-env
-syn keyword txl_keyword contained functionp gcd generate gensym
-syn keyword txl_keyword contained get-byte get-char get-hash-userdata get-line
-syn keyword txl_keyword contained get-list-from-stream get-sig-handler get-string-from-stream gethash
-syn keyword txl_keyword contained group-by hash hash-alist hash-construct
-syn keyword txl_keyword contained hash-count hash-diff hash-eql hash-equal
-syn keyword txl_keyword contained hash-isec hash-keys hash-pairs hash-uni
-syn keyword txl_keyword contained hash-update hash-values hashp identity
-syn keyword txl_keyword contained if iff iffi inc
+syn keyword txl_keyword contained * *gensym-counter* *keyword-package* *random-state*
+syn keyword txl_keyword contained *self-path* *stddebug* *stderr* *stdin*
+syn keyword txl_keyword contained *stdlog* *stdnull* *stdout* *system-package*
+syn keyword txl_keyword contained *user-package* + - /
+syn keyword txl_keyword contained /= < <= =
+syn keyword txl_keyword contained > >= abs acons
+syn keyword txl_keyword contained acons-new aconsql-new acos alist-nremove
+syn keyword txl_keyword contained alist-remove all and andf
+syn keyword txl_keyword contained append append* append-each append-each*
+syn keyword txl_keyword contained apply ash asin assoc
+syn keyword txl_keyword contained assql atan atan2 atom
+syn keyword txl_keyword contained bignump block boundp break-str
+syn keyword txl_keyword contained call car cat-str cat-vec
+syn keyword txl_keyword contained catch cdr ceil chain
+syn keyword txl_keyword contained chr-isalnum chr-isalpha chr-isascii chr-iscntrl
+syn keyword txl_keyword contained chr-isdigit chr-isgraph chr-islower chr-isprint
+syn keyword txl_keyword contained chr-ispunct chr-isspace chr-isupper chr-isxdigit
+syn keyword txl_keyword contained chr-num chr-str chr-str-set chr-tolower
+syn keyword txl_keyword contained chr-toupper chrp close-stream closelog
+syn keyword txl_keyword contained collect-each collect-each* comb compl-span-str
+syn keyword txl_keyword contained cond cons conses conses*
+syn keyword txl_keyword contained consp copy-alist copy-cons copy-hash
+syn keyword txl_keyword contained copy-list copy-str copy-vec cos
+syn keyword txl_keyword contained count-if countq countql countqual
+syn keyword txl_keyword contained cum-norm-dist daemon dec defmacro
+syn keyword txl_keyword contained defun defvar del delete-package
+syn keyword txl_keyword contained do dohash downcase-str dwim
+syn keyword txl_keyword contained each each* eq eql
+syn keyword txl_keyword contained equal errno error eval
+syn keyword txl_keyword contained evenp exit exp expand
+syn keyword txl_keyword contained expt exptmod fboundp fifth
+syn keyword txl_keyword contained find find-if find-package first
+syn keyword txl_keyword contained fixnump flatten flatten* flip
+syn keyword txl_keyword contained flo-int flo-str floatp floor
+syn keyword txl_keyword contained flush-stream for for* force
+syn keyword txl_keyword contained format fourth fun func-get-env
+syn keyword txl_keyword contained func-get-form func-set-env functionp gcd
+syn keyword txl_keyword contained generate gensym get-byte get-char
+syn keyword txl_keyword contained get-hash-userdata get-line get-list-from-stream get-sig-handler
+syn keyword txl_keyword contained get-string-from-stream gethash group-by hash
+syn keyword txl_keyword contained hash-alist hash-construct hash-count hash-diff
+syn keyword txl_keyword contained hash-eql hash-equal hash-isec hash-keys
+syn keyword txl_keyword contained hash-pairs hash-uni hash-update hash-update-1
+syn keyword txl_keyword contained hash-values hashp identity if
+syn keyword txl_keyword contained iff iffi inc inhash
syn keyword txl_keyword contained int-flo int-str integerp intern
syn keyword txl_keyword contained interp-fun-p isqrt keep-if keep-if*
syn keyword txl_keyword contained keywordp lambda lazy-str lazy-str-force
@@ -105,49 +106,51 @@ syn keyword txl_keyword contained nreverse null num-chr num-str
syn keyword txl_keyword contained numberp oddp op open-command
syn keyword txl_keyword contained open-directory open-file open-pipe open-process
syn keyword txl_keyword contained open-tail openlog or orf
-syn keyword txl_keyword contained packagep perm pop pprint
-syn keyword txl_keyword contained print prog1 progn prop
-syn keyword txl_keyword contained proper-listp push pushhash put-byte
-syn keyword txl_keyword contained put-char put-line put-string qquote
-syn keyword txl_keyword contained quasi quote rand random
-syn keyword txl_keyword contained random-fixnum random-state-p range range*
-syn keyword txl_keyword contained rcomb read real-time-stream-p reduce-left
-syn keyword txl_keyword contained reduce-right ref refset regex-compile
-syn keyword txl_keyword contained regex-parse regexp regsub rehome-sym
-syn keyword txl_keyword contained remhash remove-if remove-if* remove-path
-syn keyword txl_keyword contained remq remq* remql remql*
-syn keyword txl_keyword contained remqual remqual* rename-path repeat
-syn keyword txl_keyword contained replace replace-list replace-str replace-vec
-syn keyword txl_keyword contained rest return return-from reverse
-syn keyword txl_keyword contained rperm rplaca rplacd s-ifblk
-syn keyword txl_keyword contained s-ifchr s-ifdir s-ififo s-iflnk
-syn keyword txl_keyword contained s-ifmt s-ifreg s-irgrp s-iroth
-syn keyword txl_keyword contained s-irusr s-irwxg s-irwxo s-irwxu
-syn keyword txl_keyword contained s-isgid s-isuid s-isvtx s-iwgrp
-syn keyword txl_keyword contained s-iwoth s-iwusr s-ixgrp s-ixoth
-syn keyword txl_keyword contained s-ixusr search-regex search-str search-str-tree
-syn keyword txl_keyword contained second seek-stream set set-diff
-syn keyword txl_keyword contained set-hash-userdata set-sig-handler sethash setlogmask
-syn keyword txl_keyword contained sig-abrt sig-alrm sig-bus sig-check
-syn keyword txl_keyword contained sig-chld sig-cont sig-fpe sig-hup
-syn keyword txl_keyword contained sig-ill sig-int sig-io sig-iot
-syn keyword txl_keyword contained sig-kill sig-lost sig-pipe sig-poll
-syn keyword txl_keyword contained sig-prof sig-pwr sig-quit sig-segv
-syn keyword txl_keyword contained sig-stkflt sig-stop sig-sys sig-term
-syn keyword txl_keyword contained sig-trap sig-tstp sig-ttin sig-ttou
-syn keyword txl_keyword contained sig-urg sig-usr1 sig-usr2 sig-vtalrm
-syn keyword txl_keyword contained sig-winch sig-xcpu sig-xfsz sin
-syn keyword txl_keyword contained sixth size-vec some sort
-syn keyword txl_keyword contained source-loc source-loc-str span-str splice
-syn keyword txl_keyword contained split-str split-str-set sqrt stat
-syn keyword txl_keyword contained stream-get-prop stream-set-prop streamp string-cmp
-syn keyword txl_keyword contained string-extend string-lt stringp sub
-syn keyword txl_keyword contained sub-list sub-str sub-vec symbol-function
-syn keyword txl_keyword contained symbol-name symbol-package symbol-value symbolp
-syn keyword txl_keyword contained syslog tan third throw
-syn keyword txl_keyword contained throwf time time-fields-local time-fields-utc
-syn keyword txl_keyword contained time-string-local time-string-utc time-usec tok-str
-syn keyword txl_keyword contained tostring tostringp tree-find trim-str
+syn keyword txl_keyword contained packagep perm pop pos
+syn keyword txl_keyword contained pos-if posq posql posqual
+syn keyword txl_keyword contained pprint print prog1 progn
+syn keyword txl_keyword contained prop proper-listp push pushhash
+syn keyword txl_keyword contained put-byte put-char put-line put-string
+syn keyword txl_keyword contained qquote quasi quote rand
+syn keyword txl_keyword contained random random-fixnum random-state-p range
+syn keyword txl_keyword contained range* rcomb read real-time-stream-p
+syn keyword txl_keyword contained reduce-left reduce-right ref refset
+syn keyword txl_keyword contained regex-compile regex-parse regexp regsub
+syn keyword txl_keyword contained rehome-sym remhash remove-if remove-if*
+syn keyword txl_keyword contained remove-path remq remq* remql
+syn keyword txl_keyword contained remql* remqual remqual* rename-path
+syn keyword txl_keyword contained repeat replace replace-list replace-str
+syn keyword txl_keyword contained replace-vec rest return return-from
+syn keyword txl_keyword contained reverse rlcp rperm rplaca
+syn keyword txl_keyword contained rplacd s-ifblk s-ifchr s-ifdir
+syn keyword txl_keyword contained s-ififo s-iflnk s-ifmt s-ifreg
+syn keyword txl_keyword contained s-irgrp s-iroth s-irusr s-irwxg
+syn keyword txl_keyword contained s-irwxo s-irwxu s-isgid s-isuid
+syn keyword txl_keyword contained s-isvtx s-iwgrp s-iwoth s-iwusr
+syn keyword txl_keyword contained s-ixgrp s-ixoth s-ixusr search-regex
+syn keyword txl_keyword contained search-str search-str-tree second seek-stream
+syn keyword txl_keyword contained set set-diff set-hash-userdata set-sig-handler
+syn keyword txl_keyword contained sethash setlogmask sig-abrt sig-alrm
+syn keyword txl_keyword contained sig-bus sig-check sig-chld sig-cont
+syn keyword txl_keyword contained sig-fpe sig-hup sig-ill sig-int
+syn keyword txl_keyword contained sig-io sig-iot sig-kill sig-lost
+syn keyword txl_keyword contained sig-pipe sig-poll sig-prof sig-pwr
+syn keyword txl_keyword contained sig-quit sig-segv sig-stkflt sig-stop
+syn keyword txl_keyword contained sig-sys sig-term sig-trap sig-tstp
+syn keyword txl_keyword contained sig-ttin sig-ttou sig-urg sig-usr1
+syn keyword txl_keyword contained sig-usr2 sig-vtalrm sig-winch sig-xcpu
+syn keyword txl_keyword contained sig-xfsz sin sixth size-vec
+syn keyword txl_keyword contained some sort source-loc source-loc-str
+syn keyword txl_keyword contained span-str splice split-str split-str-set
+syn keyword txl_keyword contained sqrt stat stream-get-prop stream-set-prop
+syn keyword txl_keyword contained streamp string-cmp string-extend string-lt
+syn keyword txl_keyword contained stringp sub sub-list sub-str
+syn keyword txl_keyword contained sub-vec symbol-function symbol-name symbol-package
+syn keyword txl_keyword contained symbol-value symbolp syslog tan
+syn keyword txl_keyword contained third throw throwf time
+syn keyword txl_keyword contained time-fields-local time-fields-utc time-string-local time-string-utc
+syn keyword txl_keyword contained time-usec tok-str tostring tostringp
+syn keyword txl_keyword contained tree-bind tree-case tree-find trim-str
syn keyword txl_keyword contained trunc typeof unget-byte unget-char
syn keyword txl_keyword contained unquote upcase-str update url-decode
syn keyword txl_keyword contained url-encode usleep uw-protect vec