*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
dc4d930b
JB
11999-10-02 Jim Blandy <jimb@zwingli.cygnus.com>
2
3 * scmconfig.h.in: Regenerated.
4
5 * Makefile.am (EXTRA_libguile_la_SOURCES): fix typo.
6
0b307a34
GB
7Mon Sep 27 17:15:14 1999 Greg J. Badros <gjb@cs.washington.edu>
8
9 * __scm.h: Fix a bunch of macros that were missing do-while(0)
10 sandwiches.
11
12 * debug.c, eval.c: Fix buggy uses of SCM_ALLOW_INTS (missing
13 semicolon) exposed by the above change.
14
15526538
GB
151999-09-27 Greg J. Badros <gjb@cs.washington.edu>
16
17 * stacks.c: Avoid compiler warning re: unitialized var.
18
19 * scmconfig.h.in: Added DEBUG_FREELIST
20
21 * pairs.h: Fix macro that was not do-while(0) sandwiched.
22
23 * gc.h, gc.c: Added scm_gc_set_debug_check_freelist_x,
24 scm_map_free_list
25
52cfc69b
GH
261999-09-23 Gary Houston <ghouston@freewire.co.uk>
27
28 * ioext.c (scm_init_ioext): enable "i/o-extensions" feature here
29 instead of in scm_init_filesys.
30
31 * init.c (scm_boot_guile_1): don't call scm_init_posix or
32 scm_init_filesys unless HAVE_POSIX is defined.
33 don't call scm_init_netdb or scm_init_socket unless
34 HAVE_NETWORKING is defined.
35
36 * Makefile.am (EXTRA_libguile_la_SOURCES): filesys.c, posix.c,
37 net_db.c, socket.c: moved here from libguile_la_SOURCES.
38
bab4e1cc
JB
391999-09-25 Jim Blandy <jimb@savonarola.red-bean.com>
40
e59373d6
JB
41 * root.c (scm_make_root): Initialize all the fields of the new
42 root. GC could happen any time, you know. (Thanks to Greg
43 Harvey.)
44
8854e654
JB
45 * numbers.c (scm_number_to_string): Signal an error if radix is
46 less than two. (Thanks to Jorgen Schaefer.)
47
bab4e1cc
JB
48 * Makefile.am (EXTRA_libguile_la_SOURCES): Add memmove.c here,
49 so automake will actually generate rules for it.
50 * Makefile.in: Regenerated.
51
0dcad30f
JB
521999-09-21 Jim Blandy <jimb@savonarola.red-bean.com>
53
54 * backtrace.c: #include "_scm.h" before testing whether
55 HAVE_UNISTD_H is #defined.
56
24e720c8
JB
571999-09-20 Jim Blandy <jimb@savonarola.red-bean.com>
58
59 * read.c (scm_read): Don't assume that scm_cur_inp is always open.
60 * ports.c (scm_read_char): Same.
61 * ioext.c (scm_read_line): Same.
62 (Thanks to Bernard Urban.)
63
73ef98d6
MD
641999-09-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
65
920ffdaa
MD
66 * vectors.c (scm_vector_move_right_x): Bugfix: Remove side effect
67 in SCM_ASSERT macro.
68 numbers.c: Removed #ifndef SCM_RECKLESS at places where type
69 checking may invoke a generic. (Thanks to Michael Livshin.)
70
73ef98d6 71 * __scm.h (SCM_WTA_DISPATCH_0, SCM_GASSERT0): New macros.
afe93bdb
MD
72
73 * numbers.c (scm_max, scm_min, scm_sum, scm_difference,
74 scm_product, scm_divide): Bugfix: Don't pass SCM_UNDEFINED to the
75 generic function if the asubr is called with only one arg.
76
7ee92fce
GH
771999-09-20 Gary Houston <ghouston@freewire.co.uk>
78
79 * scmsigs.c (scm_sigaction): add SA_RESTART to flags only if
80 HAVE_RESTARTABLE_SYSCALLS.
81 (scm_init_scmsigs): use siginterrupt if it's available. not
82 everyone who has restartable syscalls has SA_RESTART it seems.
83
84 (scm_sigaction): use scm_num2long/scm_long2num when converting
85 SIG_DFL/SIG_IGN, in case it doesn't fit in an INUM. use
86 scm_integer_p to test the type.
87
e684c60f
GH
881999-09-18 Gary Houston <ghouston@freewire.co.uk>
89
08b8c694
GH
90 * _scm.h, scmsigs.c: replace HAVE_RESTARTS with
91 HAVE_RESTARTABLE_SYSCALLS.
92
e684c60f
GH
93 * strports.c (scm_strport_to_string): create the string from
94 pt->read_buf instead of an expression that evaluates to the
95 same thing.
96
97 * gdbint.c (gdb_print): don't just use SCM_CHARS to get a C string
98 from the port: the port's buffer may not be NUL terminated.
99
8cc9503d
MD
1001999-09-16 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
101
102 * Makefile.am (.c.x): Added missing semicolon after `false'.
103
5eb548fc
MD
1041999-09-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
105
4b3324a3
MD
106 * print.c (scm_iprin1): Turn `write' and `display' into
107 primitive generics and use their associated generic functions in
108 scm_iprin1 for GOOPS objects.
109
5eb548fc
MD
110 * backtrace.c: #include <unistd.h> if present.
111
77e3c5be
JB
1121999-09-14 Jim Blandy <jimb@savonarola.red-bean.com>
113
114 * Makefile.am (.c.x): Don't create a subshell just to delete the
115 .x file and return false.
116 * Makefile.in: Regenerated.
117
ece41168
MD
1181999-09-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
119
120 * feature.c (scm_create_hook): New function. Replaces
121 scm_make_named_hook which is now deprecated.
122 (scm_make_hook_with_name): New primitive.
123 (print_hook): Hooks now print in a fancy way.
124
69fafe46
MD
1251999-09-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
126
2868a51c
MD
127 * __scm.h, backtrace.c, backtrace.h, debug.c, debug.h, dynl-dld.c,
128 dynwind.c, dynwind.h, eval.h, evalext.c, evalext.h, feature.c,
129 feature.h, hashtab.c, hashtab.h, objects.c, objects.h, print.c,
130 procs.c, procs.h, smob.c, smob.h, srcprop.c, strorder.c, struct.c,
30772a34 131 struct.h: Updated copyright notices.
2868a51c 132
69fafe46
MD
133 * srcprop.c (scm_source_property): Bugfix: Use SCM_NECONSP instead
134 of SCM_NCONSP. (Thanks to Greg Badros.)
135
136 * gsubr.c (scm_make_gsubr): Use scm_make_subr_opt for creation of
137 the self subr.
138
139 * eval.c, debug.h (SCM_BACKTRACE_WIDTH): New debug option: width.
140
141 * backtrace.c: Keep backtraces within specified width by
142 adaptively adjusting fancy printing parameters and cut output if
143 necessary.
144 (scm_display_application): Check args.
145
e1f20ec6
JB
1461999-09-11 Jim Blandy <jimb@savonarola.red-bean.com>
147
340a8770
JB
148 Change the name of the objects returned by OPENDIR from
149 "directory" to "directory stream". A predicate named "directory?"
150 would be confusing.
151 * filesys.c (scm_directory_stream_p): Renamed from scm_directory_p.
152 At the Scheme level, "directory?" -> "directory-stream?".
153 (scm_dir_print): Use the phrase "directory stream" in printed form.
154 * filesys.h (scm_directory_stream_p): Prototype renamed
155 accordingly.
156
91859184
JB
157 * Makefile.am (CLEANFILES): Remove versiondat.h; that should only
158 be removed by `make distclean', since it's generated by configure.
159 * Makefile.in: Regenerated.
160 (Thanks to Robert Bihlmeyer.)
161
b142c81d
JB
162 * strop.c (scm_substring_move_x): Signal an error if start1
163 doesn't come before end1. (Thanks to Karoly Lorentey).
164
165 * numbers.c (scm_istr2flo): Don't call SCM_INEXP without first
166 calling SCM_NIMP. (Thanks to Karoly Lorentey).
167
e1f20ec6
JB
168 * version.c (scm_libguile_config_stamp): Deleted. See
169 corresponding change to ../ice-9/boot-9.scm.
91859184 170 * versiondat.h.in: Remove definition for GUILE_STAMP.
e1f20ec6
JB
171 * version.h: Delete prototype.
172 * Makefile.in: Regenerated.
173
77242ff9
GH
1741999-09-11 Gary Houston <ghouston@easynet.co.uk>
175
176 * filesys.c (scm_directory_p): new procedure "directory?" Returns
177 a boolean indicating whether its argument is a directory
178 port as returned by opendir (thanks to Dirk Herrmann for the
179 suggestion.)
180
08cc62c7
MD
1811999-09-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
182
183 * backtrace.c (display_frame_expr): Don't print a newline.
184 (display_frame): Print the newline here instead.
f14d3ff8
MD
185 (display_backtrace_body): Don't print "Backtrace:".
186 (scm_backtrace): Print "Backtrace:" here instead.
08cc62c7 187
bc848f7f
MD
1881999-09-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
189
d37e6569
MD
190 * procs.c (scm_setter): Signal WTA if handed an entity or operator
191 lacking a setter.
192
bc848f7f
MD
193 * feature.c, feature.h: (scm_hook_p, scm_hook_empty_p): New
194 primitives. (Thanks to Greg Badros);
195 (scm_hook_to_list): New primitive; Hooks are now smobs.
196
55a7fc62
GH
1971999-09-08 Gary Houston <ghouston@easynet.co.uk>
198
199 * stime.c (bdtime2c): rewrite the ASSERTs. Accept a value
200 of #f for the 10th vector element to avoid an exception
201 seen by Bernard Urban.
202 (scm_mktime): unneeded ASSERT removed.
203
4f93d84c
MD
2041999-09-07 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
205
206 * eval.c (scm_map, scm_for_each): Converted to dispatch on generic
207 if args don't match.
208
209 * __scm.h (SCM_WTA_DISPATCH_n, SCM_GASSERTn): New macros.
210
7e6e146e
MD
2111999-09-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
212
6065fed8
MD
213 * numbers.c: Converted comparison operations to dispatch on
214 generic if args don't match.
215
7e6e146e
MD
216 * Makefile.am (ETAGS_ARGS): Added support for GPROC and GPROC1.
217
548c5135
JB
2181999-09-06 James Blandy <jimb@mule.m17n.org>
219
220 * guile-snarf.c: Deleted. Snarfing should respect CPP
221 conditionals, so it needs to actually run CPP. Bleah.
222
2a94fc36
JB
2231999-09-05 James Blandy <jimb@mule.m17n.org>
224
f9dbe074
JB
225 Handle errors properly in guile-snarf. (Thanks to Han-Wen Nienhuys.)
226 * guile-snarf.in: Be sure to exit with an error if CPP does.
227 * Makefile.am (.c.x): Delete the .x file and exit with an error
228 status if guile-snarf exits with an error status.
229 * Makefile.in: Regenerated.
230
9d743bfb
JB
231 * snarf.h (SCM_GLOBAL_KEYWORD): Call scm_c_make_keyword, not
232 scm_makekey, which doesn't exist any more. Guess nobody's using
233 this.
234
2a94fc36
JB
235 * guile-snarf.c: New implementation of guile-snarf, meant to be
236 more robust than the shell script. I think it's complete, but I
237 haven't tested it at all, and I haven't changed the build process
238 to actually use it. We should compare its output against that of
239 the existing shell script, for all source files.
240
9918cf63
JB
241 * guile-snarf.c (parse_args): Abort if we haven't handled some
242 character type.
243
afbbb69c
JB
2441999-09-03 James Blandy <jimb@mule.m17n.org>
245
246 * load.c (scm_search_path): If the filename has any extension at
247 all, ignore the entire list of extensions. Also, don't check whether
248 the file is accessible. If the file exists, accessible or not, we
249 should return it. Inaccessible files should cause an error later.
250 (Thanks to Keisuke Nishida for the suggestions.)
251
655f19ab
MD
2521999-09-02 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
253
254 * gc.c (cleanup, scm_init_storage): Use on_exit if present and
255 atexit not available. (sunos4.1.4 needs it.)
256
b074884f 2571999-09-01 James Blandy <jimb@mule.m17n.org>
94b4c096 258
b074884f
JB
259 I take it all back --- bcopy does handle overlapping source and
260 destination areas correctly. At least on every system I could
261 find. But it is better to use AC_REPLACE_FUNCS than to introduce
262 new CPP conditionals.
263 * memmove.c: New file, implementing memmove in terms of bcopy.
264 * scmconfig.h.in: Regenerated.
a4ea22c3
JB
265
266 Allocators should use the `void *' type for generic pointers.
267 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Change
268 argument and return types.
269 * gc.h: Corresponding changes to prototypes.
270 (Thanks to Forcer.)
271
b074884f
JB
2721999-08-31 James Blandy <jimb@mule.m17n.org>
273
274 * numbers.c (scm_init_numbers): Claim to support the `complex'
275 feature, as expected by (ice-9 format). (Thanks to Ceri Storey.)
276
dd67f90b
JB
277 * Makefile.am (check-local): Set GUILE_LOAD_PATH so the tests can
278 find (ice-9 boot-9) when Guile was compiled in a separate
279 directory from the source. (Thanks to Rodney Brown.)
280 * Makefile.in: Regenerated.
281
94b4c096
JB
282 * procs.c (scm_make_subr_opt): Fix typo. Remember to multiply
283 table lengths by the size of a single element when growing the
dd67f90b 284 table. (Thanks to Bill Schottstaedt.)
94b4c096 285
fa941d9e
MD
2861999-08-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
287
288 * eval.c (SCM_CEVAL): Duplicated the method dispatch code at the
289 SCM_IM_DISPATCH form instead of calling scm_mcache_lookup_cmethod
290 since that cuts down the time for type dispatch by 50%.
291
ebc4e6cc
JB
2921999-08-30 James Blandy <jimb@mule.m17n.org>
293
294 * gh_data.c (gh_set_substr): Revert change of 1999-08-29; bcopy is
295 not a correct substitute for memmove, because it doesn't handle
296 overlapping source and destination areas on many platforms.
297 Overlaps are the primary reason to use memmove in the first place.
298 * ports.c (scm_ungetc): Same.
299 * strop.c (scm_substring_move_x): Same.
300
a7098335
MD
3011999-08-30 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
302
303 * gc.c (scm_init_storage): Skip registration of cleanup on systems
304 which lack atexit. (Is it important that cleanup is made
305 properly? Maybe we should replace all `exit' with `scm_exit' and
306 call cleanup there?)
307
308 * struct.c, struct.h (scm_struct_free_0, scm_struct_free_light,
309 scm_struct_free_standard, scm_struct_free_entity): Declared to
310 return scm_sizet instead of size_t.
311
312 * gdbint.c, strports.c: #include <unistd.h>. (SEEK_SET is defined
313 there on sunos4.1.4.)
314
9a26d6f9
MD
3151999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
316
317 * numbers.c (scm_lcm): Bugfix: BIGDIG --> SCM_BIGDIG;
318 Account for the case when second argument is unbound.
319
320 * strorder.c (scm_string_less_p, scm_string_ci_less_p): Bugfix.
321 (Thanks to Karoly Lorentey.)
322
323 * gh_data.c, ports.c, strop.c: Alternatively use bcopy if memmove
b074884f 324 isn't present. (Thanks to Suzuki Toshiya.)
9a26d6f9
MD
325
326 * ports.c: Use ANSI C prototypes in definitions. (Thanks to
327 Bernard Urban.)
328
747117b0
MD
329 * filesys.c (scm_stat2scm): Conditionally use S_ISLNK. (Thanks to
330 Bernard Urban.)
9a26d6f9
MD
331
332 * dynl-dl.c (RTLD_GLOBAL): Define if non-existent. (Thanks to
333 Bernard Urban and Ian Grant.)
334
335 * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version
336 again. (1.3.4 will be binary incompatible with 1.3.2 because of a
337 change in the representation of entities and operators.)
338
6e2e75db
GH
3391999-08-29 Gary Houston <ghouston@easynet.co.uk>
340
341 * ports.c (scm_ungetc): bugfix: if putback_buf is NULL
5c4fe34f 342 don't allocate zero bytes (thanks to Bill Schottstaedt).
6e2e75db 343
c5b738b5
MD
3441999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
345
a48a7629
MD
346 * procs.c (scm_setter): Converted to use generic dispatch.
347
348 * eval.c, eval.h: Bugfix: scm_sym_apply was not initialized
349 correctly.
350
351 * load.c (scm_search_path): Don't try extensions which already are
352 present at the end of the filename.
353 (scm_init_load): Check .scm first. (Thanks to Keisuke Nishida.)
354
355 * stacks.c (scm_sym_apply): Removed. (Thanks to Ken Raeburn.)
356
c5b738b5
MD
357 Cleanup and simplification of generic method dispatch.
358 Also, the quadruple representation of entity and operator
359 procedures has been replaced with single.
360
361 * tags.h (SCM_IM_HASH_DISPATCH): Removed.
362
363 * print.c (scm_isymnames): Removed #@hash-dispatch.
364
365 * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here
366 from eval.c; Support 0 arity methods.
367 (scm_set_object_procedure_x): Removed scm_sym_atdispatch;
368 (scm_apply_generic_env): Removed.
369 Replaced slots proc0-3 with procedure.
370
371 * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1,
372 SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by
373 SCM_OPERATOR_PROCEDURE.
374 (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2,
375 SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE.
376
377 * struct.c, struct.h: Replace 4 procedure slots with one.
378 (scm_struct_i_procedure): Replaces scm_struct_i_procedure.
379
380 * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of
381 4.
382
383 * eval.c (scm_sym_args): Removed.
384 (SCM_CEVAL): Simplified entity application.
385 Moved dispatch code to objects.c.
386
387 * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics.
388
375c11a3
MD
3891999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
390
391 * sort.c (closureless): Use scm_eval_body.
392
393 * eval.c (SCM_APPLY): Fixed serious evaluator bug: If a closure
394 with a symbol as last form was first called normally and then via
395 `map' or some other mechanism using primitive apply, an ILOC was
396 returned.
397
9de33deb
MD
3981999-08-26 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
399
400 This change extends the representation of primitive procedures
401 with more data fields, e.g. a place for documentation and true
402 procedure properties.
403
404 * procs.c, procs.h (scm_subr_entry): New type: Stores data
405 associated with subrs.
406 (SCM_SUBRNUM, SCM_SUBR_ENTRY, SCM_SUBR_GENERIC, SCM_SUBR_PROPS,
407 SCM_SUBR_DOC): New macros.
408 (scm_subr_table): New variable.
409 (scm_mark_subr_table): New function.
410
411 * init.c (scm_boot_guile_1): Call scm_init_subr_table.
412
413 * gc.c (scm_gc_mark): Don't mark subr names here.
414 (scm_igc): Call scm_mark_subr_table.
415
416
417 This change implements a scheme for letting a generic work as a
418 shadow for a primitive procedure. If the primitive procedure
419 can't dispatch on its arguments, control is left over to the
420 generic. Normal wrong type arg errors will be generated until the
421 user has hung the first method on the primitive.
422
423 * snarf.h (SCM_GPROC, SCM_GPROC1): New macros.
424
425 * procs.c, procs.h (scm_subr_p): New function (used internally).
426
427 * gsubr.c, gsubr.h (scm_make_gsubr_with_generic): New function.
428
429 * objects.c, objects.h (scm_primitive_generic): New class.
430
431 * objects.h (SCM_CMETHOD_CODE, SCM_CMETHOD_ENV): New macros.
432
433 * print.c (scm_iprin1): Print primitive-generics.
434
435 * __scm.h (SCM_WTA_DISPATCH_1, SCM_GASSERT1,
436 SCM_WTA_DISPATCH_2, SCM_GASSERT2): New macros.
437
438 * eval.c (SCM_CEVAL, SCM_APPLY): Replace scm_wta -->
439 SCM_WTA_DISPATCH_1 for scm_cxr's (unary floating point
440 primitives). NOTE: This means that it is now *required* to use
441 SCM_GPROC1 when creating float scm_cxr's (float scm_cxr's is an
442 obscured representation that will be removed in the future anyway,
443 so backward compatibility is no problem here).
444
445 * numbers.c: Converted most numeric primitives (all but bit
446 comparison operations and bit operations) to dispatch on generic
447 if args don't match.
448
449
450 Better support for applying generic functions.
451
452 * eval.c, eval.h (scm_eval_body): New function.
453
454 * objects.c (scm_call_generic_0, scm_call_generic_1,
455 scm_call_generic_2, scm_call_generic_3, scm_apply_generic): New
456 functions.
457
458
459 Optimization of the generic function dispatch mechanism.
460
461 * eval.c (SCM_CEVAL): Apply the cmethod directly after having
462 called scm_memoize_method instead of doing a second lookup.
463
464 * objects.h (scm_memoize_method): Now returns the memoized cmethod.
465
466
467 Bugfix
468
469 * procs.c (scm_make_subr_opt): Use scm_sysintern0 instead of
470 scm_sysintern so that the binding connected with the subr name
471 isn't cleared when we give set = 0.
472
473
07910014
MD
4741999-08-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
475
9de33deb
MD
476 More transparent handling of ports with print states.
477
07910014
MD
478 * print.h (SCM_PORT_WITH_PS_P, SCM_PORT_WITH_PS_PORT,
479 SCM_PORT_WITH_PS_PS): Represent ports with print states as a smob
480 instead of a pair of a port and a print state. We'll need to cons
481 once extra in scm_printer_apply but the type system will be
482 cleaner, it will mix better with GOOPS, and, it will be even more
483 transparent to the user.
484
485 * print.c (scm_get_print_state): New procedure: Given an output
486 port, return the print state associated to it in the current print
487 chain, if one exists;
488 (scm_port_with_print_state): New procedure: Associate a
489 print-state with a port.
490 (scm_valid_oport_value_p): Use SCM_PORT_WITH_PS_P;
491 (scm_printer_apply): Wrap port and pstate as a smob;
492 (print_state_printer): Removed.
493
494 * objects.c (scm_class_of): Treat scm_tc16_port_with_ps as ports.
495
496 * eval.c (scm_init_eval): Use scm_make_smob_type instead of
497 scm_newsmob.
498
499 * ports.c (scm_output_port_p): Bugfix: Coerce output port before
500 testing (otherwise the port-print-state trick won't be transparent
501 to the user; one example where this caused problems was in the
502 (ice-9 format) module).
503
e2e470cf
MD
5041999-08-23 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
505
506 * eval.c (SCM_CEVAL): Let the SCM_IM_SLOT_SET_X form return
507 SCM_UNSPECIFIED instead of the set value.
508
a343458d
JB
5091999-08-20 James Blandy <jimb@mule.m17n.org>
510
f8c9d497
JB
511 * load.c (scm_init_load_path): Remove support for SCHEME_LOAD_PATH.
512
a343458d
JB
513 * ports.h (enum scm_port_rw_active): New enum, containing
514 SCM_PORT_READ, SCM_PORT_WRITE, and SCM_PORT_NEITHER (instead of
515 zero). The debugger knows about enums, but doesn't know about
516 #defines.
517 (typedef scm_port): Declare rw_active member to be an enum
518 scm_port_rw_active.
519 * fports.c (fport_flush, fport_end_input): Use SCM_PORT_NEITHER
520 instead of zero.
521 * ports.c (scm_add_to_port_table): Same.
522 * strports.c (st_flush, st_end_input): Same.
523
524 * ioext.c (scm_do_read_line, scm_read_line): Use scm_must_malloc,
525 scm_must_realloc, and scm_done_malloc as appropriate.
526
dc4ddb33
MD
5271999-08-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
528
529 * sort.c (quicksort): Added condition to protect the algorithm
530 from crashing the interpreter if the less predicate is buggy.
531
d3639214
GH
5321999-08-19 Gary Houston <ghouston@easynet.co.uk>
533
534 * fports.c (fport_write): fix line-buffering mode again.
535 (scm_open_file): recognise 'l' for line-buffering.
536 (scm_setvbuf): recognise _IOLBF for line-buffering.
537
3817c7ce
MD
5381999-08-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
539
266bf340
MD
540 * Makefile.am (libguile_la_LDFLAGS): Increased the version number
541 of libguile to 5.0.
542
3817c7ce
MD
543 * eval.c (SCM_APPLY), sort.c (closureless): Expand body when
544 evaluating closures.
545
162d88ca
GH
5461999-08-18 Gary Houston <ghouston@easynet.co.uk>
547
548 * fports.c (fport_write): use memcpy instead of strncpy, in case
549 the data contains NUL.
550
cce0d8d0
MD
5511999-08-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
552
59c49e10
MD
553 * gh.h (gh_vector_to_list): Bugfix. (Thanks to Frank Cieslok.)
554
cce0d8d0
MD
555 * backtrace.c, debug.c, eval.c, eval.h, gsubr.c, procprop.h,
556 read.c, srcprop.c, srcprop.h (scm_i_filename, scm_i_line,
557 scm_i_column, scm_i_copy, scm_i_name, scm_i_lambda, scm_i_source,
558 scm_i_more, scm_i_procname, scm_i_dot, scm_i_arrow, scm_i_else,
559 scm_i_unquote, scm_i_uq_splicing, scm_i_apply, scm_i_enter_frame,
560 scm_i_apply_frame, scm_i_exit_frame, scm_i_trace, scm_i_quote,
561 scm_i_begin, scm_i_if, scm_i_and, scm_i_or, scm_i_case,
562 scm_i_cond, scm_i_letstar, scm_i_do, scm_i_quasiquote,
563 scm_i_define, scm_i_letrec, scm_i_let, scm_i_atapply,
564 scm_i_atcall_cc, scm_i_breakpoint): Renamed: Consequently use
565 scm_sym_ as prefix for symbols.
566
567 * debug.c (scm_i_proc, scm_i_args, scm_i_eval_args): Removed.
568
569 * eval.c, eval.h (scm_sym_begin, scm_sym_if, scm_sym_and,
570 scm_sym_case, scm_sym_cond, scm_sym_letstar, scm_sym_do,
571 scm_sym_define, scm_sym_letrec, scm_sym_atapply,
572 scm_sym_atcall_cc): Made global.
573
8b7840b9
MD
5741999-08-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
575
576 * eval.c (scm_sym_args): Made global.
577
578 * objects.c (scm_set_object_procedure_x): Disallow setting of
579 procedures for pure generic functions.
580
c94577b4
GH
5811999-08-12 Gary Houston <ghouston@easynet.co.uk>
582
583 * ports.c (scm_seek): one more: was scm_lseek. Also changed the
584 Scheme name from lseek to seek, but lseek was added recently so
585 it shouldn't be a big problem.
586 * ports.c, gdbint.c, ioext.c: changed callers.
587
affc96b5
GH
5881999-08-11 Gary Houston <ghouston@easynet.co.uk>
589
590 * fports.c (fport_input_waiting): if select is used, return 1
591 instead of whatever FD_ISSET expands to. maybe it will be useful
592 to interpret the value from the input_waiting ptob procedure as a
593 lower bound on the number of bytes available.
594
595 * Mikael asked for a few names to be changed...
596
597 * ports.c (scm_make_port_type): take the write procedure as the
598 second argument instead of the flush procedure.
599 * ports.h (scm_ptob_descriptor): rename the ptob procedures:
600 fflush -> flush, read_flush -> end_input, fclose -> close,
601 fill_buffer -> fill_input, ftruncate -> truncate,
602 input_waiting_p -> input_waiting.
603
604 * ports.c (end_input_void_port): was read_flush_void_port.
605 (scm_set_port_end_input): was scm_set_port_flush_input.
606 (scm_set_port_flush): was scm_set_port_write.
607 (scm_set_port_input_waiting): was scm_set_port_input_waiting_p
608 (scm_end_input): was scm_read_flush.
609 (scm_fill_input): was scm_fill_buffer.
610 (scm_flush): was scm_fflush.
611 * fports.c (fport_input_waiting): renamed from fport_input_waiting_p.
612 (fport_end_input): was local_read_flush.
613 (fport_flush): was local_fflush.
614 (fport_close): was local_fclose.
615 (fport_truncate): was local_ftruncate.
616 (fport_seek): was local_seek.
617 (fport_free): was local_free.
618 (fport_fill_input): was fport_fill_buffer.
619 * strports.c (st_end_input): was st_read_flush.
620 (st_truncate): was st_ftruncate.
621 * vports.c: (sf_flush): was sfflush.
622 (sf_close): was sfclose.
623 (sf_fill_input): was sf_fill_buffer.
624
625 * ports.c, fports.c, strports, vports.c, ioext.c, unif.c, filesys.c:
626 change callers.
627
df061ffc
MD
6281999-08-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
629
630 * eval.c (SCM_IM_DISPATCH): Rewrote dispatch protocol. Dispatch
631 forms now contain the expressions to be dispatched upon instead of
632 depending on a surrounding lambda or let; Generic function
633 dispatch has been optimized; `apply' on a generic function now
634 works a little bit strangely. It uses a trick so that the type
635 dispatch code in SCM_CEVAL can be reused.
636
637 * objects.h, objects.c (scm_apply_generic_env): Added (used by
638 apply).
639 (scm_operator_p): Added.
640 (scm_sym_atdispatch): Added.
641 (scm_set_object_procedure_x): Modified to handle the new style
642 generic functions.
643 (scm_object_procedures): New debugging procedure.
644
524da6b9
MD
6451999-08-05 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
646
df061ffc
MD
647 * eval.c, eval.h (scm_sym_args): Added.
648
649 * objects.h (SCM_CLASSF_PURE_GENERIC): Added.
650
eba96884
MD
651 * feature.c, feature.h (scm_c_run_hook): Added.
652
524da6b9
MD
653 * eval.c (SCM_CEVAL:SCM_IM_DISPATCH): Bugfix: Jump back to
654 cdrxnoap and loopnoap instead of begin and loop.
655
265e6a4d
GH
6561999-08-04 Gary Houston <ghouston@easynet.co.uk>
657
658 * ports.c (scm_putc, scm_puts),
659 * unif.c (scm_uniform_array_write): use scm_lfwrite.
660 * ports.c (scm_putc): change type of first argument from int to char.
661
82cc1b11
MD
6621999-08-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
663
664 * eval.c (SCM_CEVAL): Improvements to SCM_IM_DISPATCH and
665 SCM_IM_HASH_DISPATCH.
666
667 * objects.h (SCM_CLASSF_GOOPS_VALID): Added.
668 (scm_si_redfined, scm_si_hashsets): Moved.
669
670 * objects.c (scm_class_of): Use the new SCM_CLASSF_GOOPS_VALID
671 flag which combines type and status info so that the class
672 redefinition protocol has zero cost during normal execution.
673
31703ab8
GH
6741999-08-03 Gary Houston <ghouston@easynet.co.uk>
675
676 * ports.h (scm_ptob_descriptor): include a write procedure again.
677 it's more efficient for unbuffered fports (e.g., sockets.)
678
679 * ports.c (scm_puts): use ptob->write.
680 * vports.c (scm_make_sfptob): set write proc in ptob.
681 * strports.c (scm_make_stptob): set write proc in ptob.
682 * ports.c (write_void_port): new procedure.
683 * vports.c (sf_write): new procedure.
684 * ports.c (scm_lfwrite): use ptob->write.
685 * strports.c (st_write): new procedure.
686 * fports.c (fport_write): new procedure.
687 (scm_make_fptob): set write in ptob to fport_write.
688 * ports.h: prototype for scm_set_port_write.
689 * ports.c (scm_make_port_type): initialise ptob write procedure.
690 (scm_set_port_write): new proc.
691
769f054d
JB
6921999-08-01 Jim Blandy <jimb@savonarola.red-bean.com>
693
694 * ports.c (scm_char_ready_p): Don't try to find PORT's ptab entry
695 until we've verified that it is actually a port. (Thanks to
696 Lorentey Karoly.)
697
5678aae0
MD
6981999-07-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
699
9ffdde1c
MD
700 * gc.c (scm_must_malloc, scm_must_realloc): Removed unnecessary
701 code, particularly an unnecessary test (len != size, where len ==
702 size). (Was this leftovers from debugging code, or have I missed
703 something profound?)
704
5678aae0
MD
705 * hashtab.c: Bugfix: Don't declare s_hash_fold without storage
706 size. (Thanks to James Dean Palmer.)
707
708 * numbers.c (scm_makdbl): Bugfix: Initialize imaginary part.
709 (Thanks to Lorentey Karoly.)
710
6e1fd264
MD
7111999-07-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
712
713 * eval.c (scm_m_expand_body): Use scm_cons_source.
714
715 * struct.c (scm_print_struct): Use vtable name.
716
717 * print.c (scm_init_print): Set name of print state type.
718
719 * stacks.c (scm_init_stacks): Set name of stack type.
720
b09ef679
MD
7211999-07-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
722
cb4832ae
MD
723 * eval.c (SCM_CEVAL): Removed old implementation of internal
724 define.
725
726 * gsubr.c, procprop.h (scm_i_inner_name): Removed.
727
728 * debug.c, debug.h (scm_reverse_lookup): Added.
729 (scm_procedure_name): Use scm_reverse_lookup to lookup the name of
730 internal procedure definitions; Don't use scm_i_inner_name.
731
2a52b429
MD
732 * eval.c, tags.h, print.c (SCM_IM_SLOT_REF, SCM_IM_SLOT_SET_X):
733 New isym operations.
734
b09ef679
MD
735 * eval.h: Added prototypes for multi language support functions.
736
737 * eval.c (SCM_IM_DISPATCH, SCM_IM_HASH_DISPATCH): Don't use
738 improper lists in the low-level representation, since that will
739 cause a begin to be prepended at macro expansion.
740
2a52b429
MD
741 * eval.c (scm_cons_source): Version of cons which copies source
742 properties from an existing cell.
6e1fd264 743 (scm_copy_tree, SCM_CEVAL): Use scm_cons_source.
2a52b429
MD
744
745 * debug.c (scm_procedure_source): Cons SCM_IM_LAMBDA onto
746 procedure source before calling scm_unmemocopy instead of faking
747 an environment.
748
7491998-10-25 Marius Vollmer <mvo@zagadka.ping.de>
750
751 Ported `internal defines' fix from SCM. Original ChangeLog entry:
752
753 1998-07-09 Radey Shouman <radey@colorage.com>
754
755 * eval.c (ceval_1): Modifications to allow rewriting of interal
756 DEFINE to LETREC: If an ISYM is evaluated in non-tail position the
757 body of which it is the CAR is macro expanded by m_expand_body,
758 which rewrites internal DEFINE.
759
760 (m_expand_body): Added.
761
762 (m_macroexp1): Added argument to control error checking:
763 m_expand_body may speculatively expand forms in the wrong
764 environments. Made argument number checks conditional on
765 RECKLESS.
766
767 (m_body): Added, error checks bodies and inserts the ISYM tokens.
768
769 (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now
770 call m_body.
771
772 (m_cond): (m_case): (m_quote): Modified to avoid destructively
773 changing their argument forms. Since m_expand_body
774 speculatively macro expands forms the process must be
775 reversible.
776
777 (m_ident_eqp): Fixed to use proper environment.
778
779 (renamed_ident): Added DEFER_INTS_EGC.
780
781 Added prototypes for static functions.
782
783 * eval.c
784
785 (undef_cell): New.
786
787 (scm_lookupcar1, scm_lookupcar): Added CHECK argument. When CHECK
788 is false, do not produce an error for unbound variables, return a
789 pointer to cell_undef instead.
790
791 (EVALCELLCAR, XEVALCAR): Call scm_lookupcar with check=1.
792
793 (scm_m_body): New.
794
795 (scm_m_cond, scm_m_case, scm_m_quote): Modified to avoid
796 destructively changing their argument forms. Since m_expand_body
797 speculatively macro expands forms the process must be reversible.
798
799 (scm_m_lambda): Use scm_m_body instead of bodycheck. Account for
800 SCM_IM_LET introduced by named lets.
801
802 (scm_m_letstar): Use scm_m_body instead of bodycheck.
803
804 (scm_m_letrec1, scm_letrec): Split scm_letrec into scm_letrec1 and
805 scm_letrec. scm_letrec1 does not check for a null binding and
806 takes an additional argument to specify the ISYM of the body. Use
807 scm_m_body instead of bodycheck.
808
809 (scm_m_let): Use scm_m_body instead of bodycheck.
810
811 (scm_m_expand_body, scm_macroexp): New.
812
813 (unmemocopy): Account for ISYMs introduced by scm_m_body.
814
815 (ceval, deval): Call scm_m_expand_body. Call scm_lookupcar with
816 check=1. Throw error for internal defined that have not been
817 rewritten by scm_m_expand_body.
818
819 * eval.h: Added prototypes for scm_m_expand_body and scm_macroexp.
820 Removed prototype for SCM_APPLY.
821
822 * tags.h: Added extern declaration of scm_isymnames.
b09ef679 823
a6ba4ef8
MD
8241999-07-27 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
825
826 * Makefile.am (EXTRA_libguile_la_SOURCES): Added lang.c.
827
828 * lang.c: New file: Beginning of multi-language support.
829
830 * init.c (scm_boot_guile_1): Added call to scm_init_lang ().
831
832 * dynwind.c (scm_dowinds): Removed obsolete wind_key #f case.
833 (scm_dynamic_wind): Added argument checking for the after guard so
834 that we don't add garbage on the dynwind chain.
835 (scm_swap_bindings): Added.
836
837 * tags.h, print.c (SCM_IM_NIL_COND, SCM_IM_NIL_IFY, SCM_IM_T_IFY,
838 SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY), print.c
839 (scm_isymnames): New isyms for multi-language support.
840
841 * eval.c (scm_nil, scm_t): New symbols.
842 (nil-cond, nil-ify, t-ify, 0-cond, 0-ify, 1-ify): New special
843 forms for multi-language support.
844
259529f2
MD
8451999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
846
847 * random.c, random.h (scm_c_default_rstate, scm_c_uniform32):
848 Added.
849 Renamed functions in the random function library interface
850 from scm_i_XXX --> scm_c_XXX.
851
1b9c3dae
GH
8521999-07-25 Gary Houston <ghouston@easynet.co.uk>
853
854 * ports.c (scm_putc): fix line-buffering.
855
544e9093
MD
8561999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
857
858 * ports.c, ports.h, fports.c, strports.c, vports.c: Renamed
859 scm_set_ptob_XXX --> scm_set_port_XXX.
860
f15913d0
MD
8611999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
862
863 * ports.c, ports.h (scm_make_port_type): New interface for
864 creation of port types (replaces scm_newptob). Just as for the
865 smobs, we need to separate the internal representation of smob
866 types from the interface, so that we easily can add new fields and
867 rearrange things without caring about backward compatibility.
868 This change was forced by the need in GOOPS to create classes
869 representing port types.
870 (scm_set_ptob_mark, scm_set_ptob_free, scm_set_ptob_print,
871 scm_set_ptob_equalp, scm_set_ptob_flush_input, scm_set_ptob_close,
872 scm_set_ptob_seek, scm_set_ptob_truncate,
873 scm_set_ptob_input_waiting_p): New setters.
874 (scm_newptob): Rewritten to use scm_make_port_type. For backward
875 compatibility.
876 (scm_ptobs): Changed type scm_ptobfuns --> scm_ptob_descriptor.
877 (scm_prinport): Removed.
878 (scm_port_print): Added.
879 (scm_print_port_mode): Added.
880 (void_port_ptob, print_void_port, close_void_port, noop0):
881 Removed. Removed #include "genio.h" Added #include "objects.h",
882 #include "smobs.h"
883
884 * fports.c (prinfport): Moved code from ports.c.
885 (local_free): Added.
886 (scm_fptob): Removed. Instead use new interface.
887 (scm_make_fptob): Added. (Need to create basic ports in a
888 specific order in ports.c.)
889
890 * strports.c (scm_stptob, prinstpt, noop0): Removed
891 (scm_make_stptob): Added.
892
893 * vports.c (scm_sfport, prinsfpt, sf_read_flush, noop0): Removed.
894 (scm_make_sfport): Added.
895
896 * filesys.c (scm_dir_print): Don't use the port printing code.
897 Instead provide specific directory printer.
898
899 * gc.c (scm_gc_sweep): Use value returned from scm_ptobs[].free.
900
901 * ioext.c (scm_redirect_port): Replaced scm_ptobfuns -->
902 scm_ptob_descriptor.
903
904 * smob.c (scm_smob_print): Handle non-existing type name nicely.
905 Removed #include "genio.h"
906
907 * objects.c (scm_make_port_classes): New function ptr.
908
69bc9ff3
GH
9091999-07-24 Gary Houston <ghouston@easynet.co.uk>
910
911 * gdbint.c (gdb_print, gdb_read): call scm_truncate_file.
912
913 * ports.c (scm_truncate_file): renamed from scm_ftruncate.
914 allow the 1st argument to be a fdes or filename as well as a
915 port (as in the filesys.c version).
916
917 * filesys.c (scm_truncate_file): removed.
918
096d0b15
MD
9191999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
920
921 * readline.c, readline.h: Removed.
922
923 * objects.c, objects.h (scm_port_class): Added.
924 (scm_class_of): Look up port class in scm_port_class.
925 (SCM_IN_PCLASS_INDEX, SCM_OUT_PCLASS_INDEX,
926 SCM_INOUT_PCLASS_INDEX): Added.
927
f15913d0
MD
928
929 * Makefile.am: Removed genio.c, genio.x.
930
931 * genio.c: Removed.
932
aafe2718
MD
9331999-07-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
934
935 * init.c: Make sure that scm_post_boot_init_modules is called only
936 once. (Important when using a dumped image.; Thanks to Bernard
937 Urban.)
938
3144e1a9
JB
9391999-07-19 Jim Blandy <jimb@savonarola.red-bean.com>
940
8e1e60f1
JB
941 * guardians.c (scm_guardian_zombify): Separate scanning for
942 zombies from marking the pairs of the free list.
943
a825bb0e
JB
944 * guardians.c (scm_guardian_zombify): Don't set marks manually ---
945 use the macros. (Thanks to Michael Livshin.)
946
4d4c53ac
JB
947 * eval.c (scm_m_lambda): Let bodycheck check the body of the
948 lambda. Let your sins be purified by the blood of the lambda.
949 (Thanks to Eric Hanchrow.)
950
d9ad6919
JB
951 * net_db.c (h_errno): Don't declare this if it's #defined. Eew.
952 (Thanks to Valdis Kletnieks.)
953
3144e1a9 954