summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* * signal.c (set_sig_handler): Set up and tear down alternateKaz Kylheku2014-07-202-2/+11
| | | | | | | | stack for SIGBUS also, not only for SIGSEGV. On Linux, when stack growth collides with another memory mapping, it triggers a SIGBUS not SIGSEGV, which occurs when the process limit on stack size is exceeded. In either situation, we need an alternative stack.
* * eval.c (caseq_s, caseql_s, casequal_s, memq_s, memql_s, memqual_s,Kaz Kylheku2014-07-203-6/+130
| | | | | | | | | | | eq_s, eql_s, equal_s): New symbol variables. (me_case): New static function. (eval_init): Initialize new variables. Register caseq, caseql and casequal macros. Re-register memq, memql, memqual, eq, eql and equal using new symbol variables. * txr.1: Document case, caseql and casequal.
* * eval.c (eval_init): Register juxt as intrinsic.Kaz Kylheku2014-07-205-0/+58
| | | | | | | | | * lib.c (do_juxt): New static function. (juxtv): New function. * lib.h (juxtv): Declared. * txr.1: Documented juxt.
* * arith.c (divi): Support one-argument form.Kaz Kylheku2014-07-204-8/+26
| | | | | | | | | Use "/" name in error reporting, not "divi". * eval.c (eval_init): Change registration of / so only one argument is required out of two. * txr.1: Document one-argument division.
* * genvim.txr: Fixed highlighting issues in numbers followed by newline.Kaz Kylheku2014-07-203-94/+101
| | | | * txr.vim: Regenerated.
* * lib.c (search_str): Support negative starting index.Kaz Kylheku2014-07-193-6/+27
| | | | | | Hoist uselessly repeated c_str operation out of loop. * txr.1: Document negative starting index for search-str.
* * hash.c (hash_construct): Nullify the pairs argument so thatKaz Kylheku2014-07-193-0/+27
| | | | | | it works correctly with an empty vector. * txr.1: Write missing documentation for hash-construct.
* * eval.c (mapdov): New function.Kaz Kylheku2014-07-195-5/+81
| | | | | | | | | | | (eval_init): Register mapdo intrinsic. * lib.c (mapdo): New function. * lib.h (mapdo): Declared. * txr.1: Documented mapdo. Documented zero-argument case for mapcar, mapcar*, mappend and mappend*.
* * stream.c (put_strings, put_lines): New functions.Kaz Kylheku2014-07-194-5/+65
| | | | | | | | (stream_init): Registered new functions as intrinsics. * stream.h (put_strings, put_lines): Declared. * txr.1: Documented.
* * eval.c (eval_init): Register get-lines as a synonym for lazy-stream-cons.Kaz Kylheku2014-07-195-1/+72
| | | | | | | | | | | * stream.c (get_string): New function. * stream.h (get_string): Declared. (stream_init): get_string registered as get-string intrinsic. * txr.1: Documented get-string, and get-lines as a synonym for lazy-stream-cons. Documented the behavioral difference of lazy-stream-cons lazy lists for real-time and non-real-time streams.
* * txr.1: wording: arguments are omitted, not parameters.Kaz Kylheku2014-07-191-3/+3
|
* * Makefile (conftest, conftest2): Link mathKaz Kylheku2014-07-187-4/+76
| | | | | | | | | | | | | | | | | | | library so we can test for math functions. * arith.c (log2_init): New static function. (log2, logtwo): New functions. (l2): New static variable. (arith_init): Call log2_init. * configure (lang_flags): Switching _XOPEN_SOURCE from 500 to 600 to reveal log2. Adding test for log2. * eval.c (eval_init): Register log2 intrinsic. * lib.h (logtwo): Declared. * txr.1: Documented log2.
* * match.c (v_do, v_require): Set up and tear down environment frame,Kaz Kylheku2014-07-152-2/+19
| | | | | | | like other situations that evaluate TXR Lisp from the pattern language. Otherwise obscure things will go wrong. (h_do): Same as above, and additionally, add the forgotten call to install the bindings into the match context.
* * match.c (h_eol): Fix broken horizontal @(eol).Kaz Kylheku2014-07-152-1/+7
| | | | | It should be returning next_spec_k, rather than bindings, which indicate a complete match.
* * tests/001/query-1.txr: Remove bogus public domain header.Kaz Kylheku2014-07-156-20/+12
| | | | | | | | | | * tests/001/query-2.txr: Likewise. * tests/001/query-3.txr: Likewise. * tests/001/query-4.txr: Likewise. * tests/002/query-1.txr: Likewise.
* Fix old, known syntax highlighting problems between symbols,Kaz Kylheku2014-07-153-16/+36
| | | | | | | | | | | | | | | integers and floating literals. * genvin.txr (txr_num): The general solution is to over-match a number by one character: a non-token constituent, and then subtract that from the highlight region using me=e-1. This solves the prefix ambiguities between numbers and symbols. (txr_badnum): New match: matches floating literals with trailing junk, which are highlighted as errors. (txr_directive, txr_list, txr_bracket, txr_mlist, txr_mbracket): All of these contain a txr_badnum. * txr.vim: Regenerated.
* Fix broken regex highlighting.Kaz Kylheku2014-07-153-97/+109
| | | | | | | * genvim.txr (txl_regex): Missing syntactic region added. (txr_regex): Start pattern is just a slash; no optional # in front. * txr.vim: Regenerated.
* * txr.c (txr_main): Allow Lisp code executed via -e and -p options toKaz Kylheku2014-07-142-2/+7
| | | | see the bindings set up by prior -D options.
* * eval.c (eval_init): Register interpose and lconsp as intrinsics.Kaz Kylheku2014-07-145-0/+127
| | | | | | | | | * lib.c (lconsp, interpose): New functions. (lazy_interpose_func, lazy_interpose): New static functions. * lib.h (lconsp, interpose): Declared. * txr.1: Documented lconsp and interpose.
* * txr.1: Fix opening ( balanced by }.Kaz Kylheku2014-07-131-1/+1
|
* Version 92.txr-92Kaz Kylheku2014-07-105-4/+36
| | | | | | | | * RELNOTES: Updated. * configure, txr.1: Bumped version. * share/txr/stdlib/ver.txr: Likewise
* * tests/011/macros-2.txr: Added test for labels shadowing macro,Kaz Kylheku2014-07-104-138/+160
| | | | | | | | and let shadowing symacro. * tests/011/macros-2.expected: Regenerated * txr.vim: Regenerated.
* Implementing local function binding constructs.Kaz Kylheku2014-07-103-3/+185
| | | | | | | | | | | | | | | | * eval.c (fbind_s, lbind_s, flet_s, labels_s): New symbol globals. (env_fb_to_fb): New static function. (lookup_mac): Implement the same shadow check for function macros that is done for symbol macros, because we now have local functions that can shadow local macros. (fbindings_helper, op_fbind, make_fun_shadowing_env, expand_fbind_vars, me_flet_labels): New static functions. (expand): Add cases for fbind and lbind. (eval_init): Intern the four new symbols. Register sys:fbind and sys:lbind operators. Register flet and labels macros. * txr.1: Documented flet and labels.
* * eval.c: Comment spelling.Kaz Kylheku2014-07-101-1/+1
|
* * eval.c (bindings_helper): New parameter to indicate thatKaz Kylheku2014-07-082-6/+18
| | | | | | | | the caller needs the return value, so the function can avoid consing up a list that will be thrown away. (op_let): Pass nil argument to new parameter of bindings_helper. (op_each, op_for): Pass t to indicate that the return value is needed.
* * LICENSE: Adding copyright for MPI Library.Kaz Kylheku2014-07-083-1/+24
| | | | * METALICENSE: Adding notes about MPI.
* * Makefile: install the LICENSE and METALICENSE files into the dataKaz Kylheku2014-07-075-0/+60
| | | | | | | | | | | | directory. * txr.c (help): Help text updated to document --license option. (license): New function. (txr_main): Implement --license option. * unwind.h (uw_catch): Add cast to suppress warning about unused symbol. * txr.1: Document --license option.
* * lib.c (replace_list, sel): fix use of unused variable.Kaz Kylheku2014-07-072-2/+6
|
* * LICENSE: Small wording change. Add pointer to METALICENSE.Kaz Kylheku2014-07-073-2/+45
| | | | * METALICENSE: New file.
* * LICENSE: Switching to simplified two-clause BSD license,Kaz Kylheku2014-07-072-7/+18
| | | | | | | | | but with modifications. Adding back the no-liability part of the disclaimer, but with abbreviated text. Also, rewriting the initial paragraph to make it clear that the two conditions cover redistribution, and that use of the software is tantamount to agreeing with the disclaimer.
* * txr.1: Spell check.Kaz Kylheku2014-07-072-102/+106
|
* * txr.1: Corrections from Roman MishinKaz Kylheku2014-07-062-49/+56
|
* * eval.c (apf_s, ipf_s): New symbol variables.Kaz Kylheku2014-07-033-18/+47
| | | | | | | | | | | | (me_ap, me_ip): Generate a much simpler macro-expansion: a call to apf or ipf, rather than lambda syntax. (me_ado, me_ido): New static functions. (eval_init): Initialize apf_s and ipf_s variables. Use them in the registration calls for apf and ipf. Register ado and ido macros. * txr.1: Streamlined documentation for ap and ip, and added ado and ido.
* * eval.c (apf, ipf): Bugfix: do_apf and do_ipfKaz Kylheku2014-07-032-2/+7
| | | | should be registered as variadic functions.
* Typo.Kaz Kylheku2014-07-031-1/+1
|
* Version 91.txr-91Kaz Kylheku2014-07-025-122/+200
|
* * Makefile: use $(EXE) in install: recipe.Kaz Kylheku2014-07-023-2/+18
| | | | * configure: set up EXE variable in config.make, not exe.
* * txr.1: Documented usleep.Kaz Kylheku2014-07-022-0/+25
|
* Reconstruct missing ChangeLog entry from git log.Kaz Kylheku2014-07-021-0/+20
| | | | This entry shows when usleep was added to TXR.
* * eval.c (dwim_loc): Support indexing using a list of positions,Kaz Kylheku2014-07-024-90/+193
| | | | | | | | | | | | | | | such as obtained by the where function. * lib.c (replace_list, replace_str, replace_vec): Allow the from argument to be a list of index positions, possibly empty. * txr.1: Condensed syntactic descriptions under dwim operator. Range Indexing section no longer says that the value nil can be used as either endpoint of a range. This will not work any longer since a "from" value of nil looks like an empty list of indexes. Documented new behavior under replace, and shortened documentation for replace-list, replace-str and replace-vec.
* * lib.c (sel): Bugfix: not implemented correctly for sequencesKaz Kylheku2014-06-302-4/+7
| | | | which are lists.
* * arith.c (bit): New function.Kaz Kylheku2014-06-286-4/+110
| | | | | | | | | | * eval.c (eval_init): Register bit as intrinsic. * lib.h (bit): Declared. * mpi-patches/add-bitops (mp_bit): New function. * txr.1: Documented bit
* * mpi-patches/add-bitops (mp_and, mp_or, mp_xor, mp_shift): Plug memoryKaz Kylheku2014-06-282-38/+43
| | | | | | | leaks caused by wrongly initializing the temporary destination operand for mp2_comp with a size, which mp2_comp then clobbers by doing the same thing. Also plug memory leaks that happen in in out-of-memory return case.
* * lib.c (where, sel): Extend into hashes.Kaz Kylheku2014-06-273-20/+65
| | | | * txr.1: document hash support for select and where.
* Bugfix: apply_intrinsic and iapply must not destructivelyKaz Kylheku2014-06-274-22/+48
| | | | | | | | | | | | manipulate argument lists. * eval.c (apply_frob_args): Rewrite to non-destructive one-pass version. (iapply): Likewise. * lib.c (term): New function. * lib.h (term): Declared.
* * txr.1: Fixes in quasiquote description.Kaz Kylheku2014-06-261-16/+11
|
* * txr.1: Add some section headers, rearrange.Kaz Kylheku2014-06-261-92/+94
|
* Fixes to bignum bit operations affecting pretty much all bit operationsKaz Kylheku2014-06-263-8/+23
| | | | | | | | | | | | | | when bit field operands are negative, affecting logand, logor, logxor, lognot, logtrunc, logtest and ash. In addition, logtest was found to return the logical inverse of its correct value. * arith.c (logtest): Fix broken boolean polarity of return value. * mpi-patches/add-bitops (mp_2comp): Fix incorrect treatment of negative values. (mp_and): Fix incorrectly ordered statements, which cause failure when operands are negative.
* * eval.c (iapply_s): new global variable.Kaz Kylheku2014-06-263-8/+88
| | | | | | | | | | (iapply, me_ip): new static functions. (do_apf): Bugfix: use apply_intrinsic, not apply. (do_ipf, ipf): New static functions. (eval_init): initialize iapply_s. register me_ip macro expander, and the iapply and ipf functions. * txr.1: Documented iapply, ipf and ip.
* * lib.c (last): Bugfix: reversed null test.Kaz Kylheku2014-06-262-1/+5
|