| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stdlib/arith-each.tl (sys-arith-each): Remove :form param.
* stdlib/awk.tl (awk-state :fini): Suppress unused warning
in dohash form by using an uninterned symbol for this
variable. This is a useful technique worth documenting.
(awk-expander): Remove unused varaible in a predicate
pattern.
(awk-code-move-check): Lose the unused awc and aws-sym.
(awk-mac-let): Don't pass the unused parameters to
awk-code-move-check.
* stdlib/conv.tl (conv-expand): Remove unused gensym.
* stdlib/debugger.tl (fcall-frame loc,
fcall-frame print-trace, expand-frame print-trace):
Mark unused parameters ignored.
* stdlib/defset.tl (defset-expander-simple): Remove
unused parameter.
(defset): Drop argument from defset-expander-simple
call, and also fix unused warning in tree-case form.
* stdlib/doc-lookup.tl (detached-run): Remove unused
variable from a pattern matching predicate.
It's not in the rightmost position so we have to
revers the comparison. I will enhance the pattern
matcher to support @nil in a predicate.
(toplevel): Ignore a parameter of the not-implemented
version of the open-url function.
* stdlib/doloop.tl (expand-dooloop): Replace unused
variable in a tree binding pattern with the t
symbol.
* stdlib/each-prod.tl (expand-each-prod*): Remove
unused let variable.
* stdlib/except.tl (expand-handle): Put else variable
in tree bind pattern to use.
* stdlib/getopts.tl (opt-desc (basic-type-p, cumul-type-p)):
Replace unused catch-all variable in tree bind pattern
with t symbol.
(opt-processor parse-opts): Remove unused args argument.
The object holds the args, prepared at construction time.
(getopts, option-base getopts): Don't pass args to parse-opts.
(define-option-struct): Replace unused treee pattern
variable with t.
* stdlib/ifa.tl (if-to-cond): Put catch-all else variable
to use.
* stdlib/keyparams.tl (param-expander): Mark unused parameter
ignored. Replace unused variables in tree-case with t.
* stdlib/match.tl (compile-struct-match, compile-predicate-match,
compile-require-match, compile-as-match, compile-with-match,
compile-or-match, compile-and-match, compile-not-match,
compile-hash-match, compile-scan-match, compile-exprs-match):
Address unused variables in mac-param-bind and tree-bind
patterns.
(match-case): Likewise, and also remove unused let variables.
(while-match-case, while-true-match-case): Remove unused
:env parameter.
(expand-lambda-match): Remove unused let variable.
(defun-match): Remove unused variable in tree-bind.
(define-param-expander): Mark menv parameter ignored.
Unused variables in tree-bind.
(defmatch): Replace lambda variable with a gensym.
(loosen, pat-len): Remove unused parameter.
(sme, end): Fix calls to loosen and pat-len.
(non-triv-pat-p): Mark parameter ignored in the
temporary version of this function.
(expand-quasi-match): Address unused variables in patterns,
and remove unused gensyms.
* stdlib/op.tl (op-rec-p): Unused variable in tree-case.
(op-alpha-rename): Remove f parameter.
(op-ignerr): Mark catch handler parameter ignored.
(op-expand): Remove argument from calls to op-alpha-rename.
* stdlib/path.test (if-windows, if-native-windows): The
compiler complains here about the unused variable
due to constant folding. We use the use function
to indicate that the variable is not ignored, but used.
* stdlib/pic.tl (expand-pic-num): Remove unused let variable.
(pic): Remove unused :env parameter.
* stdlib/place.tl (macroexpand-1-place): Ignore unused
env parameter.
(pset): Ignore some tree-bind variables. Not replacing
them with t because their names help code readability.
Lots of tricky code in place.tl.
(shift): Replace unused variable with t in tree-case.
(vecref, chr-str, ref, sub): Deal with unused expander
parameters.
(gethash): Deal with unused place parameter.
(dwim): Remove unused env parameter, and deal with
unused place parameters.
(get-fun-getter-setter): Unused variables in tree-bind.
(read-once, define-modify-macro): Remove unused gensyms.
(placelet-1): Mark ignored a parameter of an update
expander lambda.
* stdlib/pmac.tl (macroexpand-params): Fix unused
catch-all in tree-case.
* stdlib/struct.tl (prune-missing-inits): Mark
tree-bind unused variable ignored.
(defstruct): Unused tree-case variable.
(qref): Unused tree-case catch-all variables.
(rslot): Unused parameter removed.
(:delegate): Unused tree-case variables.
* stdlib/tagbody.tl (tagbody): Drop unused :env param.
Mark ignored the threaded-2 let variable, which cannot
be removed because its init-form performs a needed
side effect.
* stdlib/trace.tl (trace-leave): Remove unused param.
(trace): Don't pass argument to unused param of trace-leave.
(untrace): Use gensym in dohash to suppress unused
variable warning.
* stdlib/type.tl (typecase-expander): Unused variable
in tree-case.
* stdlib/with-resources.tl (with-resources): Likewise.
* stdlib/yield.tl (hlet-expand): Remove two unused locals.
* tests/012/lambda.tl: Fix test cases that break the
tests due to unused variable warnings.
* tests/016/arith.tl: Add test case for each-prod*.
At first I thought a bug was found in it but it turned
out that the init-forms variable that was removed
was really superfluous.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I haven't reproduced a crash with this and --gc-debug
doesn't do it, possibly due to the use of setcheck
in the loop. But make_ffi_type_struct is doing something
wrong: it's creating new compiled type objects in a loop
and sticking them into the memb array, which is not
visible to the garbage collector.
* ffi.c (make_ffi_type_struct): We move the initialization
of ffi->memb to above the loop, so that the object points
to the array. The loop is already setting ft->nelem to
the correct value i + 1 on each iteration of the loop,
thereby revealing each newly populated entry to the garbage
collector.
|
|
|
|
|
|
|
|
|
| |
This is reproducible using
./txr --gc-debug tests/017/ffi-misc.tl
* ffi.c (ffi_enum_type_mark): We must mark the tft->eltype
because enumerations use that member.
|
|
|
|
| |
* stdlib/compiler.tl (expand-dohash): Add missing rlcp.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stdlib/compiler.tl (expand-defun): Sprinkling of rlcp
to pass source location info to the generated lambda,
and to the sys:define-method call.
(expand-defmacro): bugfix here: in with-gensyms we
shadowed the form parameter, and then passed that as both
form arguments to expand-bind-mac-params. We rename
the gensym to mform, and then for the error-form,
we pass the original form, quoted as necessary and with
source location info. Thus, now source location info
flows from the original defmacro form to the generated
let* which binds the destructured parameters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stdlib/asm.tl (oc-base backpatch, (backpatch-low-16
backpatch, backpatch-high16 backpatch, op-label (asm, dis),
op-noop dis, op-frame dis, op-end dis, op-movrs dis,
op-movsr dis, op-movrr dis, op-jmp (backpatch,dis),
op-if (backpatch, dis), op-ifq backpatch, op-block backpatch,
op-retsr dis, op-retrs dis, op-retrr dis,
op-catch (backpatch, dis), op-handle dis, op-getv dis,
op-setv dis, op-close (backpatch, dis), op-getlx dis,
op-setlx dis): Suppress warnings about unused variables
using ignore and other approaches.
(assembler dis-listing): The unused stream parameter here
is a real bug: it was intended to be the output destination,
rather than standard output being hard-coded.
|
|
|
|
|
|
|
|
|
|
|
| |
* stdlib/compiler.tl (compiler (comp-atom, comp-dwim),
safe-const-reduce, igno-notfound): Use ignore
rather than use for marking unused variable.
* stdlib/copy-file.tl (copy-files, copy-path-rec,
remove-path-rec, chmod-rec, chown-rec): Likewise.
* stdlib/optimize.tl (basic-block print): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We want the ignore function to go away; but if variables
are mentioned, to suppress unused warnings on them.
* stdlib/compiler.tl (%functional-funs%): Remove nilf
from list since we are handling it specially.
(compiler comp-fun-form): Recognize (ignore ...)
and (nilf ...) forms, transforming
them into (progn .... nil). In the case of ignore,
walk the arguments: if any look like variables, mark
them used.
Also, add the use function to the pattern which handles
identity, since it is a synonym.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will be an official mechanism for indicating
deliberately unused variables.
* eval.c (eval_init): Register ignore intrinsic,
binding to the same function object as nilf.
* stdlib/compiler.tl (%const-foldable-funs%): Mention
ignore function, next to its nilf synonym.
* txr.1: Documented.
* stdlib/doc-syms.tl: Updated.
|
|
|
|
|
|
| |
* stdlib/copy-file.tl (copy-files, copy-path-rec,
remove-path-rec, chmod-rec, chown-rec): Fix instances
of unused parameters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ignerr intrinsic macro generates code that has
an unused variable. We fix it by turning it into
a gensym, since unused warnings aren't generated
for gensyms.
* eval.c (unused_arg_s): New static variable.
(me_ignerr): Use the value of unused_arg_s instead
of error_s, for the argument of the catch clause.
(eval_init): gc-protect unused_arg_s.
(eval_late_init): New function in which we initialized
unused_arg_s. The gensym function cannot be used
during eval_init.
* eval.h (eval_late_init): Declared.
* lib.c (init): Call eval_late_init after some other
late initializations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stdlib/optimizer.tl (basic-block print): Suppress
warning for pretty-p parameter using the use function.
(basic-blocks (local-liveness, calc-liveness,
thread-jumps-block, peephole-block, late-peephole,
fill-treg-compacting-map), (basic-block
apply-treg-compacting-map), dedup-labels): Fix
unused variables in pattern, mostly by replacing
them by @nil.
(basic-blocks check-bypass-empty): Method moved,
turned into (basic-block check-bypass-empty),
losing the unused basic-blocks parameter.
(basic-blocks elim-next-jump): Likewise moved
into basic-block class.
(basic-blocks elim-dead-code): Calls to check-bypass-empty
and elim-next-jump adjusted.
|
|
|
|
|
|
|
|
|
|
|
| |
This was uncovered by unused variable warnings.
* stdlib/optimize.tl (basic-blocks peephole-block):
The pattern trying to detect wasteful register moves
is incorrect; the reg1 term is intended to be the
@reg1 variable. It is matched literally and so will
not match because the symbol reg1 does not literally
occur in the VM code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that we have the t convention in macro parameters,
we can use it to suppress many cases of unused variables
in the compiler.
* stdlib/compiler.tl (compiler (comp-setq, comp-lisp1-setq,
comp-setqf, comp-cond, comp-ift, comp-switch,
comp-unwind-protect, comp-return, comp-handler-bind,
comp-catch, eliminate-frame, comp-lambda-impl,
comp-fun, comp-or, comp-prog1, comp-arith-form,
comp-arith-neg-form, comp-fun-form, comp-apply-call,
comp-for, comp-tree-bind, comp-mac-param-bind,
comp-mac-env-param-bind, comp-tree-case, comp-lisp1-value,
comp-dwim, comp-prof, comp-load-time-lit), expand-quasi-mods,
expand-dohash, expand-each, expand-defvar, expand-defun,
expand-defmacro, expand-defsymacro, lambda-apply-transform,
usr:compile): Fix unused variable warnings mostly by using
the t mechanism in tree-case or mac-param-bind. In
some cases, (use var) is used where it would be detrimental
to diagnostic quality to replace identifiers in the
pattern with t. A few unused "else" variables were renamed
and used.
(safe-const-reduce, ign-notfound): Fix unused exception
clause unused parameters using (use param).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A crash occurs in the make_time_impl function whereby the
mktime or timegm function invoked via the pmktime(&local)
call overwrites the TIME_ZONE field with a string literal.
We dynamically allocated that string and expect to free it
in the time_fields_cleanup function.
The solution is to wrap the struct tm structure with
a container which separately tracks that pointer and
frees that copy of it.
* time.c (struct tm_wrap): New struct type.
(time_fields_to_tm): Take a pointer to struct tm_wrap
instead of struct_tm, and stash the timezone string
in the wrapper.
(time_fields_cleanup): Take a a pointer to struct
tm_wrap and free the stashed pointer in the container,
which is immune to TM_ZONE being altered.
(time_struct_to_tm): Take pointer to tm_wrap because
this calls time_fields_to_tm.
(make_time_impl, time_string_meth, time_parse_meth):
Use struct tm_wrap instead of struct tm.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (expand_params_rec, bind_macro_params): Handle t
specially everywhere a parameter can occur. Expansion
allows the syntax through without extending the
environment with a t variable; binding walks over
the structure without binding a variable.
* stdlib/compiler.tl (expand-bind-mac-params): Likewise,
handle occurrences of t, suppressing the generation of
and assignment to variables, while ensuring that
initializing expressions are evaluated.
* tests/011/tree-bind.tl: New file.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We fix numerous unused variable situations uncovered
by the new diagnostic. Most of those occurring inside
tree-bind or mac-param-bind forms remain unfixed.
These are caused by the idiom of binding a dummy variable
as a placeholder in the structure. I am instead going to
introduce a mechanism into tree-bind/mac-param-bind
for indicating an ignored piece of structure.
* stdlib/compiler.tl (compiler (comp-if, eliminate-frame,
comp-lambda-impl, comp-typep, comp-fun-form, expand-and,
reduce-or, compiler-emit-warnings, usr:compile
with-compile-opts): Eliminate unused variables in structural
pattern matches in various ways: eliminating predicate
argument variables, replacing place holder variables by
@nil, or just using the variables when possible.
(compiler compile-in-toplevel): Remove unused saved-nlev variable.
(compiler comp-atom): Use (use oreg) form to suppress
unused parameter warning.
(compiler comp-return-form): Eliminate unused binfo variable.
The lookup-block method is called for the side effect of
marking the block used, so we keep that call.
(compiler comp-let): Unused variable specials is gone.
(compiler comp-or): Unused variable lastfrag is gone,
as is the assignment to it. There is a reason assignment
isn't use!
(compiler comp-inline-lambda): Get rid of the two variables
called dummy by folding the associated calculation into
an adjacent initform using progn and prog1.
(comp-tree-case): Remove unused ncases, lerrtest and lnext
variables.
(safe-const-eval): Remove unused reduced-form variable,
and simplify code, eliminating another local.
|
|
|
|
|
| |
* stdlib/compiler.tl (opt-controlled-diag): If a the compiler
option's value is t, treat it as :warn.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unused variables in tree-bind forms are not generating
diagnostics with source location info. We are missing
some rlcp calls.
* stdlib/compiler.tl (compiler comp-catch): The generated
lambda here ends up transformed to a let by the
lambda-apply-transfom function. We must propagate source
info to it, otherwise unused catch clause parameters
get diagnosed without it.
(compiler (comp-for, comp-mac-param-bind,
comp-mac-env-param-bind, comp-tree-case): Confer source
location info onto the err-form argument of
expand-bind-mac-params.
(expand-bind-mac-params): Pass source location info
from err-form onto the generated let* form.
Thus, diagnostics related to variables in that let*
get reported against that form's location.
(lambda-apply-transform): Pass source location info
from the lambda expression to the generated let.
* stdlib/except.tl (usr:catch): Pass source loc info
from each clause source code to the transformed
clause. The transformed clause will turn into a lambda
which will turn into a let in comp-catch, and then
into a let in lambda-apply-transform.
|
|
|
|
|
| |
* stdlib/constfun.tl (%const-foldable-funs%): use is a synonym
of identity, which is listed; now use is also listed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* autoload.c (compiler_set_entries): Register slot symbol
"unused".
* stdlib/compiler.tl (compile-opts): New slot, unused.
(%warning-syms%): List unused symbol.
(env lookup-var): Support optional mark-used parameter,
just like lookup-fun.
(env unused-check): New method.
(compiler comp-var): Pass t to mark-used parameter of
lookup-var to register the use.
(compiler (comp-let, comp-var)): Call unused-check
method after sub-compilations are done to dump
diagnostics about unused variables.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introducing a compiler options system, so we can
control diagnostics and such. We begin with
three options for diagnosing shadowing.
* autoload.c (compiler_set_entries): Register a
structure name compiler-opts, a with-compile-opts
function name, *compile-opts* variable name, and
slots shadow-fun, shadow-var and shadow-cross.
* stdlib/compiler.tl (compile-opts): New struct.
(%warning-syms%): New macro.
(*compile-opts*): New special variable.
(when-opt, with-compile-opts): New macros.
(opt-controlled-diag): New function.
(env extend-var): Call extend-var* method instead of
repeating code.
(env extend-var*): Implement shadow-var and shadow-cross
diagnostic options.
(env extend-fun): Implement shadow-fun and shadow-cross
diagnostic options.
|
|
|
|
|
| |
* configure: add a note that the ccname variable is not used
if the cc variable does not interpolate $(ccname).
|
|
|
|
|
|
| |
* ffi.c (make_ffi_type_struct, make_ffi_type_union,
ffi_type_compile): Use convert macro instead of C
cast notation.
|
|
|
|
|
|
|
|
|
| |
* match.c (do_match_line): Handle LCONS the same way as CONS.
When a variable occurs whose value is a list of strings,
that may be a lazy list. I ran into a problem using @(data x)
to capture a list of strings, and then matching that with @x;
the error being "unsupported object in spec", caused by the
list's LCONS type not handled in this switch.
|
|
|
|
|
|
| |
* stdlib/quips.tl (%quips%): New entry: what if we apply
the concept of channel separation to audiophiles who
hate each other's guts?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The glibc strftime function can refer to the character
string zone, and numeric zone via %Z and %z. So
let us populate these from the Lisp structure.
* time.c (time_fields_to_tm): Take gmtoff and zone
arguments. Store these values in the struct tm,
suitably converted, instead of zeros and nulls.
In the case of zone, we dynamically allocate a utf-8
string, which will have to be freed.
(time_fields_cleanup): New static function.
Called to clean up any allocations performed by
time_fields_to_tm.
(time_struct_to_tm): Drop the strict parameter.
This is useless because the underlying function
time_fields_to_tm checks for nils and substitutes
zeros. This silliness was introduced in a commit
made in 2016. Extract the gmtoff and zone, passing
these to time_fields_to_tm.
(make_time_impl): Pass nil for gmtoff and zone,
call time_fields_cleanup.
(time_string_meth, time_parse_meth): No need to pass
strict parameter to time_struct_to_tm. Need to call
time_fields_cleanup.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have the following problem. On some platforms, the broken-down
C time structure "struct tm" has a GMT offset field which
gives the time zone of the specified time. In the Lisp
structure, we call the corresponding slot gmtoff.
This value should be taken into account when converting
the broken-down time to a numeric time value.
The underlying platform functions like mktime don't do this;
they not only ignore the gmtoff, but in some cases clobber
the field.
The GNU C library version of the POSIX strptime function
supports "%z" and "%Z" specifiers which populate the GMT
offset. But then it gets wrongly ignored.
Old/wrong behavior:
1> (time-parse-utc "%H:%M:%z" "00:00:+0900")
0
New behavior (on platforms with the GMT offset):
1> (time-parse-utc "%H:%M:%z" "00:00:+0900")
32400
* time.c (time_meth): If the Lisp time structure we are given
specifies a non-nil gmtoff, then add its value
to the returned result.
(time_parse_local, time_parse_utc): If struct tm has a
GMT offset, then we add its value to the time_t returned
by mktime, timegm or timegm_hack.
* txr.1: Updated.
|
|
|
|
| |
* stdlib/quips.tl (%quips%): New entry.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* parser.c (lisp_parse_impl): Add a call to gc_hint,
to protect the parser object from garbage collection.
We allocate this object, and then use a raw pointer to
the parser, which leaves it exposed. This resulted in
a crash of the tests/010/json.tl test case (which runs
with the --gc-debug mode). The crash doesn't occur in
a regular build; it reproduced in build configured
with --no-gen-gc. Possibly, why it doesn't repro under
generational GC is that the hash table which associates
streams and parsers may be moving the objects into the
mature generation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes only the build. I'm getting a crash in
one test case, namely tests/010/json.tl.
* lib.h (mut): Remove stray semicolon from definition.
This semicolon compensates for the lack of a semicolon
in txr.c, which becomes a syntax errror under no-gen-gc,
when the other definition of mut is active.
(mkloc, setcheck): Let's add casts of the object argument
to void. This gets rid of a number of unused parameter
errors in various functions that take an object parameter
that is only used in the case of generational GC.
* txr.c (txr_main): Add missing semicolon after mut call.
* gc.c (gc_wrap): In the no CONFIG_GEN_GC case, cast
argument full to void, since it is unused.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* debug.h (debug_init): Define as ((void) 0) macro in the
no debug support case.
* unwind.h (uw_last_form_expanded): No-debug-support version
must yield a value, not void.
* unwind.c (ffcal_frame_type, eval_frame_type, expand_frame_type):
Define only if CONFIG_DEBUG_SUPPORT is enabled, to suppress
unused warnings.
* eval.c (do_eval): Conditionally define debug-related code.
The uw_push_eval function doesn't exist if CONFIG_DEBUG_SUPPORT
isn't enabled.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* txr.1: The functions -, + and * are documented together,
but the section heading only mentions + and -.
This was introduced when these functions were documented
for the first time in March 2012, in commit
6363875356bc050ef81d40553e573fc47aca2e28, and
then went unnoticed for almost eleven years in spite
of the heading undergoing relocation and reformatting.
* stdlib/doc-syms.tl: Updated.
|
|
|
|
|
|
| |
* txr.1: In the description of the condition-action clause
processing, mention the new res variable. Some additional
improvements in neighboring text.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* LICENSE, LICENSE-CYG, METALICENSE, Makefile, alloca.h,
args.c, args.h, arith.c, arith.h, autoload.c, autoload.h,
buf.c, buf.h, cadr.c, cadr.h, chksum.c, chksum.h,
chksums/crc32.c, chksums/crc32.h, combi.c, combi.h, configure,
debug.c, debug.h, eval.c, eval.h, ffi.c, ffi.h, filter.c,
filter.h, ftw.c, ftw.h, gc.c, gc.h, glob.c, glob.h, gzio.c,
gzio.h, hash.c, hash.h, itypes.c, itypes.h, jmp.S,
lex.yy.c.shipped, lib.c, lib.h, linenoise/linenoise.c,
linenoise/linenoise.h, match.c, match.h, parser.c, parser.h,
parser.l, parser.y, protsym.c, psquare.h, rand.c, rand.h,
regex.c, regex.h, signal.c, signal.h, socket.c, socket.h,
stdlib/arith-each.tl, stdlib/asm.tl, stdlib/awk.tl,
stdlib/build.tl, stdlib/cadr.tl, stdlib/compiler.tl,
stdlib/constfun.tl, stdlib/conv.tl, stdlib/copy-file.tl,
stdlib/debugger.tl, stdlib/defset.tl, stdlib/doloop.tl,
stdlib/each-prod.tl, stdlib/error.tl, stdlib/except.tl,
stdlib/ffi.tl, stdlib/getopts.tl, stdlib/getput.tl,
stdlib/hash.tl, stdlib/ifa.tl, stdlib/keyparams.tl,
stdlib/match.tl, stdlib/op.tl, stdlib/optimize.tl,
stdlib/package.tl, stdlib/param.tl, stdlib/path-test.tl,
stdlib/pic.tl, stdlib/place.tl, stdlib/pmac.tl,
stdlib/quips.tl, stdlib/save-exe.tl, stdlib/socket.tl,
stdlib/stream-wrap.tl, stdlib/struct.tl, stdlib/tagbody.tl,
stdlib/termios.tl, stdlib/trace.tl, stdlib/txr-case.tl,
stdlib/type.tl, stdlib/vm-param.tl, stdlib/with-resources.tl,
stdlib/with-stream.tl, stdlib/yield.tl, stream.c, stream.h,
struct.c, struct.h, strudel.c, strudel.h, sysif.c, sysif.h,
syslog.c, syslog.h, termios.c, termios.h, time.c, time.h,
tree.c, tree.h, txr.1, txr.c, txr.h, unwind.c, unwind.h,
utf8.c, utf8.h, vm.c, vm.h, vmop.h, win/cleansvg.txr,
y.tab.c.shipped: Copyright year bumped to 2023.
|
|
|
|
| |
* txr.1: Bump date to 2022-12-30.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure (txr_ver): Bumped version.
* stdlib/ver.tl (lib-version): Bumped.
* txr.1: Bumped version and date.
* txr.vim, tl.vim: Regenerated.
* protsym.c: Regenerated.
|
|
|
|
|
| |
* tests/018/crypt.tl: Exit with successful termination status
on Android or Cygwin.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sysif.c (crypt_wrap): Don't call free(cd) on platforms
where we don't have crypt_r and have not defined the
cd variable.
* test/018/crypt.tl: Move the (crypt "a" "b") test case
to be GNU/Linux-only. On Solaris, it yields a valid-looking
hash instead of failing. That hash will not validate the
password though; i.e. (crypt "a" (crypt "a" "b")) is not
equal to (crypt "a" "b").
|
|
|
|
| |
* txr.1: "in supports of" -> "in support of".
|
|
|
|
|
| |
* txr.1: Description of rng column in table is missing
the verb "shows".
|
|
|
|
|
| |
* txr.1: Though it's not wrong, let's describe the
string case as a fixed match without mentioning regex.
|
|
|
|
|
|
| |
* txr.1: When @(repeat) is first mentioned near the top
of the @(collect) documentation, say right away what
exactly it means.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The res variable captures the specific value of the
condition expression, making it available to the action.
* autoload.c (awk_set_entries): Intern the res symbol
* stdlib/awk.tl (awk): Instead of generating the condition-action
into a simple when, we use whenlet to also bind the res variable.
* tests/015/awk-res.tl: New file.
* txr.1: Documented.
* stdlib/doc-syms.tl: Updated.
|
|
|
|
|
| |
* txr.1: Fix instances of condition-pattern and condition-clauses
to condition-action.
|
|
|
|
|
|
|
| |
* txr.1: *define-struct-prelude* should of course be
define-struct-prelude.
* stdlib/doc-syms.tl: Updated.
|
|
|
|
|
| |
* txr.1: document return value better for span-str and
compl-span-str. Add examples for all three functions.
|
|
|
|
|
| |
* txr.1: In FFI-related example, a call to abc_function
should just refer to function.
|
|
|
|
| |
* stdlib/quips.tl (%quips%): New one about personality.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When an invalid call expression is constant folded, such
as (call 'abs 1 2), runaway recursion occurs. This is
because due to the wrong number of arguments being passed
to abs, the safe-const-reduce function returns the
expression unmodified. The comp-apply-call method then
passes it to compile, wrongly assuming a reduction had
taken place, and so everything repeats.
* stdlib/compiler.tl (comp-apply-call): Detect when
safe-const-reduce has hit a fixed point by returning
the input form. In that case, we don't call the compiler
top-level entry point, but the comp-fun-form method
directly; the wrong function call will be compiled without
constant folding and throw an error at run-time.
|