(scm_m_begin): Allow `(begin)`, with no subforms.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
08112c95
MD
12001-11-02 Mikael Djurfeldt <mdj@linnaeus>
2
7663c008
MD
3 * print.c (scm_iprin1): Mark print state as revealed when
4 dispatching to generic write or display.
5
08112c95
MD
6 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
7
f712d833
MV
82001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9
10 Support for native Win32. Thanks to Stefan Jahn!
11
12 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
13 and win32-dirent.h to extra source and header files. These
14 include the uname() and the POSIX dirent interface implementation
15 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
16 linkers which do not allow unresolved symbols inside shared
17 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
18 dependency.
19
20 * __scm.h: Defined SCM_API. This macro gets prepended to all
21 function and data definitions which should be exported or imported
22 in the resulting dynamic link library in the Win32 port.
23
24 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
25 chars.h, continuations.h, coop-defs.h, coop-threads.h,
26 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
27 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
28 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
29 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
30 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
31 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
32 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
33 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
34 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
35 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
36 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
37 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
38 vports.h, weaks.h:
39 Prefixed each each exported symbol with SCM_API.
40
41 * continuations.c: Added comment about the use of the extern
42 declarations of {get,set}context() functions used in the ia64 port.
43
44 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
45 is meant to be a `unsigned long *'.
46
47 * filesys.c: Include `direct.h' if possible. Use local
48 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
49 macros for M$-Windows. Implementation of `fstat_Win32()' which is
50 able to differentiate between sockets and other file descriptors.
51 Use this function as wrapper in `scm_fstat()'. Fixed typo in
52 `scm_dirname()'.
53
54 * fports.c: Include `io.h' is possible. Put `*fp' into referring
55 statement block in `scm_fport_buffer_add()'.
56 Some corrections in `getflags()'.
57
58 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
59
60 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
61 build on Win32. Disable preloaded symbols on Win2 platforms.
62
63 * ioext.c, ports.c: Include `io.h' is possible.
64
65 * mkstemp.c: Include `process.h' is possible.
66
67 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
68 too.
69 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
70
71 * posix.c: Remove unnecessary dirent includes and defines. Include
72 local `win32-uname.h' for MinGW. Extern declaration of
73 `mkstemp()' for systems where it does not exists. Make
74 `getlogin()' available on M$-Windows.
75
76 * scmsigs.c: Made `usleep()' avalable on MinGW.
77
78 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
79
80 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
81
82 * win32-uname.c: Include "win32-uname.h", not "uname.h".
83
d245ce23
MD
842001-10-28 Mikael Djurfeldt <mdj@linnaeus>
85
86 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
87 Don't apply scm_uniform_vector_length on arrays.
88
8ea46249
DH
892001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
90
91 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
92 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
93 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
94 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
95 scm_list_<n> over scm_cons[2]?.
96
97 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
98 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
99 SCM_C[AD][AD]R instead of explicit form.
100
101 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
102 comparison parameters.
103
104 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
105 !SCM_NULLP instead of SCM_NIMP.
106
107 (scm_m_case): Don't copy the form. Renamed proc to clause and
108 minimized its scope. Renamed x to clauses. Removed side
109 effecting operation from macro call.
110
111 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
112 minimized its scope. Renamed x to clauses. Minimized the scope
113 of variable 'len'. Make sure the else clause is treated specially
114 even in case of '=>' occurences. Don't change the else to #t in
115 order to be able to distinguish this case in the evaluator. Leave
116 type checking of the recipient to the evaluator.
117
118 (scm_c_improper_memq): Made the comment somewhat clearer.
119
120 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
121 test for SCM_IM_LET at the place of the formal parameters.
122 Simplified the formal parameter checking.
123
124 (scm_m_letstar): Added Comment. Renamed proc to bindings.
125 Renamed arg1 to binding and minimized its scope. Eliminated
126 unnecessary consing.
127
128 (scm_m_do): Renamed proc to bindings. Minimized the scope of
129 variable 'len'.
130
131 (build_binding_list): New static function.
132
133 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
134 Further, split up the 'letrec' unmemoizing code to the
135 corresponding parts for 'do', 'let' and 'letrec', adding comments
136 to each form. Cleanup the handling of the do form (This removes
137 some *real* code :-).
138
139 (SCM_CEVAL): Removed side effecting operation from macro call.
140 Handle the 'else clause of the 'cond form specially - the symbol
141 'else is not replaced with #t any more.
142
8186c4f5
GH
1432001-10-14 Gary Houston <ghouston@arglist.com>
144
145 * version.c (scm_version): use sprintf instead of snprintf,
146 for portability. thanks to Bill Schottstaedt.
147
89759084
MD
1482001-10-14 Mikael Djurfeldt <mdj@linnaeus>
149
150 * read.c (scm_lreadr): When user-defined hash procedure returns
151 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
152 an exception. (This prevents parsing of uniform vectors from
153 interfering with parsing of numbers.)
154
9c7ce563
MV
1552001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
156
157 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
158 PTRDIFF_MIN. Thanks to Ken Raeburn.
159
1602001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
161
162 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
163
164 * eval.c (scm_m_atbind): First try to find the variable without
165 defining it locally; when it has not been found, define it
166 locally.
167
168 * modules.c (module_variable): Pass over variables that exist but
169 are unbound.
170
1712001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
172
173 * backtrace.c (display_backtrace_file_and_line): Only use
174 scm_basename when POSIX support is compiled in. Thanks to Chris
175 Cramer.
176
1fe5e088
DH
1772001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
178
179 * numbers.c (mem2uinteger): Return number read so far when coming
180 across a hexdigit after having read a # or if not reading a hex
181 value. This will enable the calling code to correctly handle
182 forms like 1e2. (The background is, that the exponent markers d,
183 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
184 providing this patch.
185
186 (mem2complex): Fix erroneous double-negation. Now, numbers like
187 1-i will be read correctly.
188
68665a97
MD
1892001-10-12 Mikael Djurfeldt <mdj@linnaeus>
190
191 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
192
193 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
194
d5cf5324
DH
1952001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
196
197 * print.c (scm_print_state_vtable, print_state_pool):
198 Initialize. These variables are now registered as gc roots.
199
200 (scm_current_pstate): Update documentation.
201
202 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
203 scm_prin1, scm_init_print): print_state_pool is registered as a
204 gc root and thus does not need to be protected by a surrounding
205 pair any more.
206
207 (make_print_state): The car of print_state_pool no longer holds
208 the scm_print_state_vtable.
209
210 (scm_current_pstate, scm_make_print_state, print_circref,
211 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
212 SCM_N<foo>.
213
214 (scm_prin1): When building lists, prefer scm_list_<n> over
215 scm_cons[2]?.
216
217 (scm_iprlist): Removed a redundant SCM_IMP test.
218
219 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
220
37c56aec
DH
2212001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
222
223 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
224
225 (scm_memcons, scm_mem_to_proc): When building lists, prefer
226 scm_list_<n> over scm_cons[2]?.
227
228 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
229
230 (scm_procedure_name): Use SCM_CADR instead of explicit form.
231
232 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
233 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
234 for some reason his patch didn't make it into the cvs.
235
79d34f68
DH
2362001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
237
238 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
239 little bit - should even be somewhat more accurate now.
240
5e137c65
RB
2412001-10-08 Rob Browning <rlb@defaultvalue.org>
242
243 * gc.c: support ia64 register backing store.
244 (SCM_MARK_BACKING_STORE): new macro.
245
246 * continuations.h: support ia64 register backing store.
247 (struct scm_t_contregs): add ia64 register backing store.
248
249 * continuations.c: support ia64 register backing store.
250 (continuation_mark): mark ia64 register backing store.
251 (continuation_free): free ia64 register backing store.
252 (scm_make_continuation): capture ia64 register backing store.
253 (copy_stack_and_call): copy ia64 register backing store.
254
ee083ac2
DH
2552001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
256
257 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
258 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
259 instead of SCM_NIMP to test for that case.
260
261 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
262 scm_t_bits instead of long.
263
71dcdbf9
MV
2642001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
265
266 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
267 SCM_T_SIGNED_BITS_MIN): New.
268 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
269 Use them to make these macros computable by the preprocessor.
270
271 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
272 whether the integral type fits in a fixnum, not the compiler.
273 This removes a spurious compiler warning. Also, honor the
274 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
275 needed for `long long's.
276
277 * numbers.c: Define NO_PREPRO_MAGOC when including
278 num2integral.c.i for `long long' and `signed long long'.
279
152812c0
MD
2802001-10-06 Mikael Djurfeldt <mdj@linnaeus>
281
282 These changes fixes a race condition in the Guile coop - pthread
283 compatibility code.
284
285 * coop.c (mother_awake_p): New variable.
286 (coop_create): Set mother_awake_p before creating or signalling
287 mother; wait until mother is going to sleep before returning.
288 (mother): Reset mother_awake_p before going to sleep.
289
11d49f54
DH
2902001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
291
292 * options.c (protected_objects, scm_init_options): The content of
293 protected_objects is now protected from garbage collection using
294 scm_gc_register_root instead of scm_permanent_object.
295
296 (get_option_setting): New static function that computes an option
297 setting as it was formerly done in the function scm_options.
298
299 (get_documented_option_setting): New static function that
300 returns option documentation as it was formerly done in the
301 function scm_options. Note that documentation C strings are no
302 longer precomputed into SCM objects. Instead, they are converted
303 into SCM strings every time get_documented_option_setting is
304 called.
305
306 (change_option_setting): New static functions that modifies the
307 option setting as it was formerly done in the function
308 scm_options. The function is now exception safe, i. e. won't
309 cause a memory leak when interrupted. Further, only non-immediate
310 option values are added to the protection list.
311
312 (scm_options): This function now has only the purpose to dispatch
313 to to get_option_setting, get_documented_option_setting or
314 change_option_setting, depending on the arguments given to
315 scm_options.
316
317 (scm_init_opts): Don't convert documentation C strings into SCM
318 strings. Further, don't protect any object values: They _must_
319 be immediate values, otherwise there is no guarantee that they
320 have not been collected before anyway.
321
322 * options.[ch] (scm_t_option): Made type unsigned, name into a
323 constant char* and val into a scm_t_bits type.
324
325 (scm_options, scm_init_opts): The number of options is guaranteed
326 to be larger or equal to zero. Thus, the type is changed to
327 unsigned.
328
3dbacabc
DH
3292001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
330
331 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
332 testing an unsigned value for being >= 0.
333
14282d0f
DH
3342001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
335
336 * numbers.h: Removed old comment about using SCM_CAR to access
337 non-pair cells.
338
339 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
340 the return value is signed. Thanks to Brian Crowder for the bug
341 report.
342
343 (SCM_SRS): Avoid unnecessary casting and don't unpack input
344 values. With this patch, SCM_SRS can be safely used for other
345 types than scm_t_signed_bits. However, it should still better be
346 an internal macro and thus be renamed to SCM_I_SRS.
347
348 (SCM_MAKINUM, SCM_INUM): Use proper casting.
349
2dbec7b5
GH
3502001-10-03 Gary Houston <ghouston@arglist.com>
351
352 * continuations.h, unif.h: in the descriptions of the bit patterns
353 of the heap cells, make bit 0 the least significant.
354
cf4ee841
TTN
3552001-09-25 Thien-Thi Nguyen <ttn@glug.org>
356
357 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
358 Thanks to Golubev I. N.
359
4a151b3d
GH
3602001-09-25 Gary Houston <ghouston@arglist.com>
361
362 * ports.c (scm_drain_input): extended the docstring. thanks to
363 Alex Schroeder and Thien-Thi Nguyen.
364
581ded70
MD
3652001-09-23 Mikael Djurfeldt <mdj@linnaeus>
366
367 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
368 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
369 macros. (The NUM names might soon change.)
370
371 * numbers.h: Added missing declarations.
372
5437598b
MD
3732001-09-22 Mikael Djurfeldt <mdj@linnaeus>
374
375 * Makefile.am: Distribute num2float.i.c.
376
377 * num2float.i.c: New file, multiply included by numbers.c, used
378 to "templatize" the float <-> num conversion routines.
379
380 * numbers.c: New functions: scm_num2float, scm_float2num,
381 scm_num2double, scm_double2num.
382
0b073f0f
RB
3832001-09-21 Rob Browning <rlb@defaultvalue.org>
384
385 * .cvsignore: really add version.h
386
387 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
388 Otherwise it fails on the alpha. However, we might rather choose
389 this size conditionally.
390
391 * numbers.c (scm_gcd): change "k" to a long from an int.
392 Otherwise it fails on the alpha. However, we might rather choose
393 this size conditionally.
394
395 * error.c (scm_wta): coerce char* to intptr_t before int
396 assignment.
397
398 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
399 int.
400
401 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
402
2830fd91
MD
4032001-09-20 Mikael Djurfeldt <mdj@linnaeus>
404
405 * numbers.c (scm_integer_expt): Accept inexact integer in second
406 argument. (Thanks to Bill Schottstaedt.)
407
c13f0a90
RB
4082001-09-20 Rob Browning <rlb@defaultvalue.org>
409
410 * .cvsignore: add version.h
411
412 * versiondat.h.in: removed (obsolete).
413
414 * version.h.in: renamed from version.h.
415 (SCM_GUILE_MAJOR_VERSION): new public macro.
416 (SCM_GUILE_MINOR_VERSION): new public macro.
417 (SCM_GUILE_MICRO_VERSION): new public macro.
418
419 * version.h: renamed to version.h.in.
420
421 * version.c
422 (scm_major_version): support integer *_VERSION macros.
423 (scm_minor_version): support integer *_VERSION macros.
424 (scm_micro_version): support integer *_VERSION macros.
425 (scm_version): support integer *_VERSION macros.
426
147c18a0
MD
4272001-09-20 Mikael Djurfeldt <mdj@linnaeus>
428
429 * error.c, error.h: Made error keys globally accessible.
430 Applications might want to test for these or use them in a direct
431 call to scm_error.
432
433 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
434 routines are passed an inexact. This change in behavior is
435 motivated by concordance with R5RS: It is more common that a
436 primitive doesn't want to accept an inexact for an exact.
437
662c5539
DH
4382001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
439
440 The following patch partially undoes my patch from 2001-06-30,
441 where I added the function scm_gc_mark_cell_conservatively. The
442 function is buggy, since it breaks guile during conservative
443 marking if a pointer on the stack points directly into the list of
444 free cells on the heap: With conservative cell marking this will
445 cause the whole free list to be scanned and marked - boom!
446
447 * gc.c (allocated_mark, MARK, heap_segment,
448 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 449 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
450 scm_gc_mark_cell_conservatively and update the corresponding
451 comments and uses accordingly. Thanks to Christopher Cramer for
452 the patch. (Minor corrections by me.)
453
6c1b7628
GH
4542001-09-15 Gary Houston <ghouston@arglist.com>
455
456 * root.h (scm_root_state): removed the continuation_stack and
457 continuation_stack_ptr members, which have no apparent purpose.
458 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
459 removed.
662c5539 460
6c1b7628
GH
461 * root.c (root_mark), init.c (restart_stack, start_stack), gc
462 (scm_igc): remove all references to contination_stack and
463 continuation_stack_ptr, avoiding allocation of a vector and
464 useless processing during gc.
465
455c0ac8
DH
4662001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
467
468 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
469
470 (TCONC_IN): Make sure that the cell word 0 is initialized last.
471
472 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
473
474 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
475
476 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
477 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
478
22ba637b
DH
4792001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
480
481 * guardians.c (mark_dependencies_in_tconc,
482 whine_about_self_centered_zombies, scm_init_guardians): Register
483 the static global variable `self_centered_zombies' via
484 scm_gc_register_root, to make some cdr-ing unnecessary.
485
c3c4d801
DH
4862001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
487
488 * backtrace.c (display_backtrace_file,
489 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
490 values, use SCM_FALSEP when comparing SCM values against #f.
491 Thanks to Rob Browning for the bug report.
492
b00418df
DH
4932001-09-12 Martin Baulig <martin@home-of-linux.org>
494
495 * strings.[ch] (scm_str2string): New function.
496
a0d34a0b
MV
4972001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
498
499 * gc.c (scm_done_free): Always subtract size from scm_mallocated
500 when computing nm, even if it's negative.
501 (scm_must_malloc): Abort on overflow of scm_mtrigger.
502 (scm_must_realloc): Likewise.
503
b10586f0
ML
5042001-09-01 Michael Livshin <mlivshin@bigfoot.com>
505
506 * numbers.c (scm_sys_check_number_conversions): new function,
507 defined if Guile is compiled in debugging mode. currently checks
508 `scm_num2ulong', should check much much more.
509
510 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
511 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 512
8c494e99
DH
5132001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
514
515 * __scm.h: Added new section about compile time selectable
516 features.
517
518 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
519 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
520 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
521 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
522 Removed.
523
524 * deprecation.c (scm_include_deprecated_features): Simplified.
525
526 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
527