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