* version.c (scm_libguile_config_stamp): Deleted. See
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
e1f20ec6
JB
11999-09-11 Jim Blandy <jimb@savonarola.red-bean.com>
2
b142c81d
JB
3 * strop.c (scm_substring_move_x): Signal an error if start1
4 doesn't come before end1. (Thanks to Karoly Lorentey).
5
6 * numbers.c (scm_istr2flo): Don't call SCM_INEXP without first
7 calling SCM_NIMP. (Thanks to Karoly Lorentey).
8
e1f20ec6
JB
9 * version.c (scm_libguile_config_stamp): Deleted. See
10 corresponding change to ../ice-9/boot-9.scm.
11 * version.h: Delete prototype.
12 * Makefile.in: Regenerated.
13
77242ff9
GH
141999-09-11 Gary Houston <ghouston@easynet.co.uk>
15
16 * filesys.c (scm_directory_p): new procedure "directory?" Returns
17 a boolean indicating whether its argument is a directory
18 port as returned by opendir (thanks to Dirk Herrmann for the
19 suggestion.)
20
08cc62c7
MD
211999-09-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
22
23 * backtrace.c (display_frame_expr): Don't print a newline.
24 (display_frame): Print the newline here instead.
f14d3ff8
MD
25 (display_backtrace_body): Don't print "Backtrace:".
26 (scm_backtrace): Print "Backtrace:" here instead.
08cc62c7 27
bc848f7f
MD
281999-09-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
29
d37e6569
MD
30 * procs.c (scm_setter): Signal WTA if handed an entity or operator
31 lacking a setter.
32
bc848f7f
MD
33 * feature.c, feature.h: (scm_hook_p, scm_hook_empty_p): New
34 primitives. (Thanks to Greg Badros);
35 (scm_hook_to_list): New primitive; Hooks are now smobs.
36
55a7fc62
GH
371999-09-08 Gary Houston <ghouston@easynet.co.uk>
38
39 * stime.c (bdtime2c): rewrite the ASSERTs. Accept a value
40 of #f for the 10th vector element to avoid an exception
41 seen by Bernard Urban.
42 (scm_mktime): unneeded ASSERT removed.
43
4f93d84c
MD
441999-09-07 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
45
46 * eval.c (scm_map, scm_for_each): Converted to dispatch on generic
47 if args don't match.
48
49 * __scm.h (SCM_WTA_DISPATCH_n, SCM_GASSERTn): New macros.
50
7e6e146e
MD
511999-09-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
52
6065fed8
MD
53 * numbers.c: Converted comparison operations to dispatch on
54 generic if args don't match.
55
7e6e146e
MD
56 * Makefile.am (ETAGS_ARGS): Added support for GPROC and GPROC1.
57
548c5135
JB
581999-09-06 James Blandy <jimb@mule.m17n.org>
59
60 * guile-snarf.c: Deleted. Snarfing should respect CPP
61 conditionals, so it needs to actually run CPP. Bleah.
62
2a94fc36
JB
631999-09-05 James Blandy <jimb@mule.m17n.org>
64
f9dbe074
JB
65 Handle errors properly in guile-snarf. (Thanks to Han-Wen Nienhuys.)
66 * guile-snarf.in: Be sure to exit with an error if CPP does.
67 * Makefile.am (.c.x): Delete the .x file and exit with an error
68 status if guile-snarf exits with an error status.
69 * Makefile.in: Regenerated.
70
9d743bfb
JB
71 * snarf.h (SCM_GLOBAL_KEYWORD): Call scm_c_make_keyword, not
72 scm_makekey, which doesn't exist any more. Guess nobody's using
73 this.
74
2a94fc36
JB
75 * guile-snarf.c: New implementation of guile-snarf, meant to be
76 more robust than the shell script. I think it's complete, but I
77 haven't tested it at all, and I haven't changed the build process
78 to actually use it. We should compare its output against that of
79 the existing shell script, for all source files.
80
9918cf63
JB
81 * guile-snarf.c (parse_args): Abort if we haven't handled some
82 character type.
83
afbbb69c
JB
841999-09-03 James Blandy <jimb@mule.m17n.org>
85
86 * load.c (scm_search_path): If the filename has any extension at
87 all, ignore the entire list of extensions. Also, don't check whether
88 the file is accessible. If the file exists, accessible or not, we
89 should return it. Inaccessible files should cause an error later.
90 (Thanks to Keisuke Nishida for the suggestions.)
91
655f19ab
MD
921999-09-02 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
93
94 * gc.c (cleanup, scm_init_storage): Use on_exit if present and
95 atexit not available. (sunos4.1.4 needs it.)
96
b074884f 971999-09-01 James Blandy <jimb@mule.m17n.org>
94b4c096 98
b074884f
JB
99 I take it all back --- bcopy does handle overlapping source and
100 destination areas correctly. At least on every system I could
101 find. But it is better to use AC_REPLACE_FUNCS than to introduce
102 new CPP conditionals.
103 * memmove.c: New file, implementing memmove in terms of bcopy.
104 * scmconfig.h.in: Regenerated.
a4ea22c3
JB
105
106 Allocators should use the `void *' type for generic pointers.
107 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Change
108 argument and return types.
109 * gc.h: Corresponding changes to prototypes.
110 (Thanks to Forcer.)
111
b074884f
JB
1121999-08-31 James Blandy <jimb@mule.m17n.org>
113
114 * numbers.c (scm_init_numbers): Claim to support the `complex'
115 feature, as expected by (ice-9 format). (Thanks to Ceri Storey.)
116
dd67f90b
JB
117 * Makefile.am (check-local): Set GUILE_LOAD_PATH so the tests can
118 find (ice-9 boot-9) when Guile was compiled in a separate
119 directory from the source. (Thanks to Rodney Brown.)
120 * Makefile.in: Regenerated.
121
94b4c096
JB
122 * procs.c (scm_make_subr_opt): Fix typo. Remember to multiply
123 table lengths by the size of a single element when growing the
dd67f90b 124 table. (Thanks to Bill Schottstaedt.)
94b4c096 125
fa941d9e
MD
1261999-08-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
127
128 * eval.c (SCM_CEVAL): Duplicated the method dispatch code at the
129 SCM_IM_DISPATCH form instead of calling scm_mcache_lookup_cmethod
130 since that cuts down the time for type dispatch by 50%.
131
ebc4e6cc
JB
1321999-08-30 James Blandy <jimb@mule.m17n.org>
133
134 * gh_data.c (gh_set_substr): Revert change of 1999-08-29; bcopy is
135 not a correct substitute for memmove, because it doesn't handle
136 overlapping source and destination areas on many platforms.
137 Overlaps are the primary reason to use memmove in the first place.
138 * ports.c (scm_ungetc): Same.
139 * strop.c (scm_substring_move_x): Same.
140
a7098335
MD
1411999-08-30 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
142
143 * gc.c (scm_init_storage): Skip registration of cleanup on systems
144 which lack atexit. (Is it important that cleanup is made
145 properly? Maybe we should replace all `exit' with `scm_exit' and
146 call cleanup there?)
147
148 * struct.c, struct.h (scm_struct_free_0, scm_struct_free_light,
149 scm_struct_free_standard, scm_struct_free_entity): Declared to
150 return scm_sizet instead of size_t.
151
152 * gdbint.c, strports.c: #include <unistd.h>. (SEEK_SET is defined
153 there on sunos4.1.4.)
154
9a26d6f9
MD
1551999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
156
157 * numbers.c (scm_lcm): Bugfix: BIGDIG --> SCM_BIGDIG;
158 Account for the case when second argument is unbound.
159
160 * strorder.c (scm_string_less_p, scm_string_ci_less_p): Bugfix.
161 (Thanks to Karoly Lorentey.)
162
163 * gh_data.c, ports.c, strop.c: Alternatively use bcopy if memmove
b074884f 164 isn't present. (Thanks to Suzuki Toshiya.)
9a26d6f9
MD
165
166 * ports.c: Use ANSI C prototypes in definitions. (Thanks to
167 Bernard Urban.)
168
747117b0
MD
169 * filesys.c (scm_stat2scm): Conditionally use S_ISLNK. (Thanks to
170 Bernard Urban.)
9a26d6f9
MD
171
172 * dynl-dl.c (RTLD_GLOBAL): Define if non-existent. (Thanks to
173 Bernard Urban and Ian Grant.)
174
175 * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version
176 again. (1.3.4 will be binary incompatible with 1.3.2 because of a
177 change in the representation of entities and operators.)
178
6e2e75db
GH
1791999-08-29 Gary Houston <ghouston@easynet.co.uk>
180
181 * ports.c (scm_ungetc): bugfix: if putback_buf is NULL
5c4fe34f 182 don't allocate zero bytes (thanks to Bill Schottstaedt).
6e2e75db 183
c5b738b5
MD
1841999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
185
a48a7629
MD
186 * procs.c (scm_setter): Converted to use generic dispatch.
187
188 * eval.c, eval.h: Bugfix: scm_sym_apply was not initialized
189 correctly.
190
191 * load.c (scm_search_path): Don't try extensions which already are
192 present at the end of the filename.
193 (scm_init_load): Check .scm first. (Thanks to Keisuke Nishida.)
194
195 * stacks.c (scm_sym_apply): Removed. (Thanks to Ken Raeburn.)
196
c5b738b5
MD
197 Cleanup and simplification of generic method dispatch.
198 Also, the quadruple representation of entity and operator
199 procedures has been replaced with single.
200
201 * tags.h (SCM_IM_HASH_DISPATCH): Removed.
202
203 * print.c (scm_isymnames): Removed #@hash-dispatch.
204
205 * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here
206 from eval.c; Support 0 arity methods.
207 (scm_set_object_procedure_x): Removed scm_sym_atdispatch;
208 (scm_apply_generic_env): Removed.
209 Replaced slots proc0-3 with procedure.
210
211 * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1,
212 SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by
213 SCM_OPERATOR_PROCEDURE.
214 (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2,
215 SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE.
216
217 * struct.c, struct.h: Replace 4 procedure slots with one.
218 (scm_struct_i_procedure): Replaces scm_struct_i_procedure.
219
220 * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of
221 4.
222
223 * eval.c (scm_sym_args): Removed.
224 (SCM_CEVAL): Simplified entity application.
225 Moved dispatch code to objects.c.
226
227 * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics.
228
375c11a3
MD
2291999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
230
231 * sort.c (closureless): Use scm_eval_body.
232
233 * eval.c (SCM_APPLY): Fixed serious evaluator bug: If a closure
234 with a symbol as last form was first called normally and then via
235 `map' or some other mechanism using primitive apply, an ILOC was
236 returned.
237
9de33deb
MD
2381999-08-26 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
239
240 This change extends the representation of primitive procedures
241 with more data fields, e.g. a place for documentation and true
242 procedure properties.
243
244 * procs.c, procs.h (scm_subr_entry): New type: Stores data
245 associated with subrs.
246 (SCM_SUBRNUM, SCM_SUBR_ENTRY, SCM_SUBR_GENERIC, SCM_SUBR_PROPS,
247 SCM_SUBR_DOC): New macros.
248 (scm_subr_table): New variable.
249 (scm_mark_subr_table): New function.
250
251 * init.c (scm_boot_guile_1): Call scm_init_subr_table.
252
253 * gc.c (scm_gc_mark): Don't mark subr names here.
254 (scm_igc): Call scm_mark_subr_table.
255
256
257 This change implements a scheme for letting a generic work as a
258 shadow for a primitive procedure. If the primitive procedure
259 can't dispatch on its arguments, control is left over to the
260 generic. Normal wrong type arg errors will be generated until the
261 user has hung the first method on the primitive.
262
263 * snarf.h (SCM_GPROC, SCM_GPROC1): New macros.
264
265 * procs.c, procs.h (scm_subr_p): New function (used internally).
266
267 * gsubr.c, gsubr.h (scm_make_gsubr_with_generic): New function.
268
269 * objects.c, objects.h (scm_primitive_generic): New class.
270
271 * objects.h (SCM_CMETHOD_CODE, SCM_CMETHOD_ENV): New macros.
272
273 * print.c (scm_iprin1): Print primitive-generics.
274
275 * __scm.h (SCM_WTA_DISPATCH_1, SCM_GASSERT1,
276 SCM_WTA_DISPATCH_2, SCM_GASSERT2): New macros.
277
278 * eval.c (SCM_CEVAL, SCM_APPLY): Replace scm_wta -->
279 SCM_WTA_DISPATCH_1 for scm_cxr's (unary floating point
280 primitives). NOTE: This means that it is now *required* to use
281 SCM_GPROC1 when creating float scm_cxr's (float scm_cxr's is an
282 obscured representation that will be removed in the future anyway,
283 so backward compatibility is no problem here).
284
285 * numbers.c: Converted most numeric primitives (all but bit
286 comparison operations and bit operations) to dispatch on generic
287 if args don't match.
288
289
290 Better support for applying generic functions.
291
292 * eval.c, eval.h (scm_eval_body): New function.
293
294 * objects.c (scm_call_generic_0, scm_call_generic_1,
295 scm_call_generic_2, scm_call_generic_3, scm_apply_generic): New
296 functions.
297
298
299 Optimization of the generic function dispatch mechanism.
300
301 * eval.c (SCM_CEVAL): Apply the cmethod directly after having
302 called scm_memoize_method instead of doing a second lookup.
303
304 * objects.h (scm_memoize_method): Now returns the memoized cmethod.
305
306
307 Bugfix
308
309 * procs.c (scm_make_subr_opt): Use scm_sysintern0 instead of
310 scm_sysintern so that the binding connected with the subr name
311 isn't cleared when we give set = 0.
312
313
07910014
MD
3141999-08-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
315
9de33deb
MD
316 More transparent handling of ports with print states.
317
07910014
MD
318 * print.h (SCM_PORT_WITH_PS_P, SCM_PORT_WITH_PS_PORT,
319 SCM_PORT_WITH_PS_PS): Represent ports with print states as a smob
320 instead of a pair of a port and a print state. We'll need to cons
321 once extra in scm_printer_apply but the type system will be
322 cleaner, it will mix better with GOOPS, and, it will be even more
323 transparent to the user.
324
325 * print.c (scm_get_print_state): New procedure: Given an output
326 port, return the print state associated to it in the current print
327 chain, if one exists;
328 (scm_port_with_print_state): New procedure: Associate a
329 print-state with a port.
330 (scm_valid_oport_value_p): Use SCM_PORT_WITH_PS_P;
331 (scm_printer_apply): Wrap port and pstate as a smob;
332 (print_state_printer): Removed.
333
334 * objects.c (scm_class_of): Treat scm_tc16_port_with_ps as ports.
335
336 * eval.c (scm_init_eval): Use scm_make_smob_type instead of
337 scm_newsmob.
338
339 * ports.c (scm_output_port_p): Bugfix: Coerce output port before
340 testing (otherwise the port-print-state trick won't be transparent
341 to the user; one example where this caused problems was in the
342 (ice-9 format) module).
343
e2e470cf
MD
3441999-08-23 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
345
346 * eval.c (SCM_CEVAL): Let the SCM_IM_SLOT_SET_X form return
347 SCM_UNSPECIFIED instead of the set value.
348
a343458d
JB
3491999-08-20 James Blandy <jimb@mule.m17n.org>
350
f8c9d497
JB
351 * load.c (scm_init_load_path): Remove support for SCHEME_LOAD_PATH.
352
a343458d
JB
353 * ports.h (enum scm_port_rw_active): New enum, containing
354 SCM_PORT_READ, SCM_PORT_WRITE, and SCM_PORT_NEITHER (instead of
355 zero). The debugger knows about enums, but doesn't know about
356 #defines.
357 (typedef scm_port): Declare rw_active member to be an enum
358 scm_port_rw_active.
359 * fports.c (fport_flush, fport_end_input): Use SCM_PORT_NEITHER
360 instead of zero.
361 * ports.c (scm_add_to_port_table): Same.
362 * strports.c (st_flush, st_end_input): Same.
363
364 * ioext.c (scm_do_read_line, scm_read_line): Use scm_must_malloc,
365 scm_must_realloc, and scm_done_malloc as appropriate.
366
dc4ddb33
MD
3671999-08-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
368
369 * sort.c (quicksort): Added condition to protect the algorithm
370 from crashing the interpreter if the less predicate is buggy.
371
d3639214
GH
3721999-08-19 Gary Houston <ghouston@easynet.co.uk>
373
374 * fports.c (fport_write): fix line-buffering mode again.
375 (scm_open_file): recognise 'l' for line-buffering.
376 (scm_setvbuf): recognise _IOLBF for line-buffering.
377
3817c7ce
MD
3781999-08-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
379
266bf340
MD
380 * Makefile.am (libguile_la_LDFLAGS): Increased the version number
381 of libguile to 5.0.
382
3817c7ce
MD
383 * eval.c (SCM_APPLY), sort.c (closureless): Expand body when
384 evaluating closures.
385
162d88ca
GH
3861999-08-18 Gary Houston <ghouston@easynet.co.uk>
387
388 * fports.c (fport_write): use memcpy instead of strncpy, in case
389 the data contains NUL.
390
cce0d8d0
MD
3911999-08-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
392
59c49e10
MD
393 * gh.h (gh_vector_to_list): Bugfix. (Thanks to Frank Cieslok.)
394
cce0d8d0
MD
395 * backtrace.c, debug.c, eval.c, eval.h, gsubr.c, procprop.h,
396 read.c, srcprop.c, srcprop.h (scm_i_filename, scm_i_line,
397 scm_i_column, scm_i_copy, scm_i_name, scm_i_lambda, scm_i_source,
398 scm_i_more, scm_i_procname, scm_i_dot, scm_i_arrow, scm_i_else,
399 scm_i_unquote, scm_i_uq_splicing, scm_i_apply, scm_i_enter_frame,
400 scm_i_apply_frame, scm_i_exit_frame, scm_i_trace, scm_i_quote,
401 scm_i_begin, scm_i_if, scm_i_and, scm_i_or, scm_i_case,
402 scm_i_cond, scm_i_letstar, scm_i_do, scm_i_quasiquote,
403 scm_i_define, scm_i_letrec, scm_i_let, scm_i_atapply,
404 scm_i_atcall_cc, scm_i_breakpoint): Renamed: Consequently use
405 scm_sym_ as prefix for symbols.
406
407 * debug.c (scm_i_proc, scm_i_args, scm_i_eval_args): Removed.
408
409 * eval.c, eval.h (scm_sym_begin, scm_sym_if, scm_sym_and,
410 scm_sym_case, scm_sym_cond, scm_sym_letstar, scm_sym_do,
411 scm_sym_define, scm_sym_letrec, scm_sym_atapply,
412 scm_sym_atcall_cc): Made global.
413
8b7840b9
MD
4141999-08-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
415
416 * eval.c (scm_sym_args): Made global.
417
418 * objects.c (scm_set_object_procedure_x): Disallow setting of
419 procedures for pure generic functions.
420
c94577b4
GH
4211999-08-12 Gary Houston <ghouston@easynet.co.uk>
422
423 * ports.c (scm_seek): one more: was scm_lseek. Also changed the
424 Scheme name from lseek to seek, but lseek was added recently so
425 it shouldn't be a big problem.
426 * ports.c, gdbint.c, ioext.c: changed callers.
427
affc96b5
GH
4281999-08-11 Gary Houston <ghouston@easynet.co.uk>
429
430 * fports.c (fport_input_waiting): if select is used, return 1
431 instead of whatever FD_ISSET expands to. maybe it will be useful
432 to interpret the value from the input_waiting ptob procedure as a
433 lower bound on the number of bytes available.
434
435 * Mikael asked for a few names to be changed...
436
437 * ports.c (scm_make_port_type): take the write procedure as the
438 second argument instead of the flush procedure.
439 * ports.h (scm_ptob_descriptor): rename the ptob procedures:
440 fflush -> flush, read_flush -> end_input, fclose -> close,
441 fill_buffer -> fill_input, ftruncate -> truncate,
442 input_waiting_p -> input_waiting.
443
444 * ports.c (end_input_void_port): was read_flush_void_port.
445 (scm_set_port_end_input): was scm_set_port_flush_input.
446 (scm_set_port_flush): was scm_set_port_write.
447 (scm_set_port_input_waiting): was scm_set_port_input_waiting_p
448 (scm_end_input): was scm_read_flush.
449 (scm_fill_input): was scm_fill_buffer.
450 (scm_flush): was scm_fflush.
451 * fports.c (fport_input_waiting): renamed from fport_input_waiting_p.
452 (fport_end_input): was local_read_flush.
453 (fport_flush): was local_fflush.
454 (fport_close): was local_fclose.
455 (fport_truncate): was local_ftruncate.
456 (fport_seek): was local_seek.
457 (fport_free): was local_free.
458 (fport_fill_input): was fport_fill_buffer.
459 * strports.c (st_end_input): was st_read_flush.
460 (st_truncate): was st_ftruncate.
461 * vports.c: (sf_flush): was sfflush.
462 (sf_close): was sfclose.
463 (sf_fill_input): was sf_fill_buffer.
464
465 * ports.c, fports.c, strports, vports.c, ioext.c, unif.c, filesys.c:
466 change callers.
467
df061ffc
MD
4681999-08-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
469
470 * eval.c (SCM_IM_DISPATCH): Rewrote dispatch protocol. Dispatch
471 forms now contain the expressions to be dispatched upon instead of
472 depending on a surrounding lambda or let; Generic function
473 dispatch has been optimized; `apply' on a generic function now
474 works a little bit strangely. It uses a trick so that the type
475 dispatch code in SCM_CEVAL can be reused.
476
477 * objects.h, objects.c (scm_apply_generic_env): Added (used by
478 apply).
479 (scm_operator_p): Added.
480 (scm_sym_atdispatch): Added.
481 (scm_set_object_procedure_x): Modified to handle the new style
482 generic functions.
483 (scm_object_procedures): New debugging procedure.
484
524da6b9
MD
4851999-08-05 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
486
df061ffc
MD
487 * eval.c, eval.h (scm_sym_args): Added.
488
489 * objects.h (SCM_CLASSF_PURE_GENERIC): Added.
490
eba96884
MD
491 * feature.c, feature.h (scm_c_run_hook): Added.
492
524da6b9
MD
493 * eval.c (SCM_CEVAL:SCM_IM_DISPATCH): Bugfix: Jump back to
494 cdrxnoap and loopnoap instead of begin and loop.
495
265e6a4d
GH
4961999-08-04 Gary Houston <ghouston@easynet.co.uk>
497
498 * ports.c (scm_putc, scm_puts),
499 * unif.c (scm_uniform_array_write): use scm_lfwrite.
500 * ports.c (scm_putc): change type of first argument from int to char.
501
82cc1b11
MD
5021999-08-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
503
504 * eval.c (SCM_CEVAL): Improvements to SCM_IM_DISPATCH and
505 SCM_IM_HASH_DISPATCH.
506
507 * objects.h (SCM_CLASSF_GOOPS_VALID): Added.
508 (scm_si_redfined, scm_si_hashsets): Moved.
509
510 * objects.c (scm_class_of): Use the new SCM_CLASSF_GOOPS_VALID
511 flag which combines type and status info so that the class
512 redefinition protocol has zero cost during normal execution.
513
31703ab8
GH
5141999-08-03 Gary Houston <ghouston@easynet.co.uk>
515
516 * ports.h (scm_ptob_descriptor): include a write procedure again.
517 it's more efficient for unbuffered fports (e.g., sockets.)
518
519 * ports.c (scm_puts): use ptob->write.
520 * vports.c (scm_make_sfptob): set write proc in ptob.
521 * strports.c (scm_make_stptob): set write proc in ptob.
522 * ports.c (write_void_port): new procedure.
523 * vports.c (sf_write): new procedure.
524 * ports.c (scm_lfwrite): use ptob->write.
525 * strports.c (st_write): new procedure.
526 * fports.c (fport_write): new procedure.
527 (scm_make_fptob): set write in ptob to fport_write.
528 * ports.h: prototype for scm_set_port_write.
529 * ports.c (scm_make_port_type): initialise ptob write procedure.
530 (scm_set_port_write): new proc.
531
769f054d
JB
5321999-08-01 Jim Blandy <jimb@savonarola.red-bean.com>
533
534 * ports.c (scm_char_ready_p): Don't try to find PORT's ptab entry
535 until we've verified that it is actually a port. (Thanks to
536 Lorentey Karoly.)
537
5678aae0
MD
5381999-07-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
539
9ffdde1c
MD
540 * gc.c (scm_must_malloc, scm_must_realloc): Removed unnecessary
541 code, particularly an unnecessary test (len != size, where len ==
542 size). (Was this leftovers from debugging code, or have I missed
543 something profound?)
544
5678aae0
MD
545 * hashtab.c: Bugfix: Don't declare s_hash_fold without storage
546 size. (Thanks to James Dean Palmer.)
547
548 * numbers.c (scm_makdbl): Bugfix: Initialize imaginary part.
549 (Thanks to Lorentey Karoly.)
550
6e1fd264
MD
5511999-07-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
552
553 * eval.c (scm_m_expand_body): Use scm_cons_source.
554
555 * struct.c (scm_print_struct): Use vtable name.
556
557 * print.c (scm_init_print): Set name of print state type.
558
559 * stacks.c (scm_init_stacks): Set name of stack type.
560
b09ef679
MD
5611999-07-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
562
cb4832ae
MD
563 * eval.c (SCM_CEVAL): Removed old implementation of internal
564 define.
565
566 * gsubr.c, procprop.h (scm_i_inner_name): Removed.
567
568 * debug.c, debug.h (scm_reverse_lookup): Added.
569 (scm_procedure_name): Use scm_reverse_lookup to lookup the name of
570 internal procedure definitions; Don't use scm_i_inner_name.
571
2a52b429
MD
572 * eval.c, tags.h, print.c (SCM_IM_SLOT_REF, SCM_IM_SLOT_SET_X):
573 New isym operations.
574
b09ef679
MD
575 * eval.h: Added prototypes for multi language support functions.
576
577 * eval.c (SCM_IM_DISPATCH, SCM_IM_HASH_DISPATCH): Don't use
578 improper lists in the low-level representation, since that will
579 cause a begin to be prepended at macro expansion.
580
2a52b429
MD
581 * eval.c (scm_cons_source): Version of cons which copies source
582 properties from an existing cell.
6e1fd264 583 (scm_copy_tree, SCM_CEVAL): Use scm_cons_source.
2a52b429
MD
584
585 * debug.c (scm_procedure_source): Cons SCM_IM_LAMBDA onto
586 procedure source before calling scm_unmemocopy instead of faking
587 an environment.
588
5891998-10-25 Marius Vollmer <mvo@zagadka.ping.de>
590
591 Ported `internal defines' fix from SCM. Original ChangeLog entry:
592
593 1998-07-09 Radey Shouman <radey@colorage.com>
594
595 * eval.c (ceval_1): Modifications to allow rewriting of interal
596 DEFINE to LETREC: If an ISYM is evaluated in non-tail position the
597 body of which it is the CAR is macro expanded by m_expand_body,
598 which rewrites internal DEFINE.
599
600 (m_expand_body): Added.
601
602 (m_macroexp1): Added argument to control error checking:
603 m_expand_body may speculatively expand forms in the wrong
604 environments. Made argument number checks conditional on
605 RECKLESS.
606
607 (m_body): Added, error checks bodies and inserts the ISYM tokens.
608
609 (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now
610 call m_body.
611
612 (m_cond): (m_case): (m_quote): Modified to avoid destructively
613 changing their argument forms. Since m_expand_body
614 speculatively macro expands forms the process must be
615 reversible.
616
617 (m_ident_eqp): Fixed to use proper environment.
618
619 (renamed_ident): Added DEFER_INTS_EGC.
620
621 Added prototypes for static functions.
622
623 * eval.c
624
625 (undef_cell): New.
626
627 (scm_lookupcar1, scm_lookupcar): Added CHECK argument. When CHECK
628 is false, do not produce an error for unbound variables, return a
629 pointer to cell_undef instead.
630
631 (EVALCELLCAR, XEVALCAR): Call scm_lookupcar with check=1.
632
633 (scm_m_body): New.
634
635 (scm_m_cond, scm_m_case, scm_m_quote): Modified to avoid
636 destructively changing their argument forms. Since m_expand_body
637 speculatively macro expands forms the process must be reversible.
638
639 (scm_m_lambda): Use scm_m_body instead of bodycheck. Account for
640 SCM_IM_LET introduced by named lets.
641
642 (scm_m_letstar): Use scm_m_body instead of bodycheck.
643
644 (scm_m_letrec1, scm_letrec): Split scm_letrec into scm_letrec1 and
645 scm_letrec. scm_letrec1 does not check for a null binding and
646 takes an additional argument to specify the ISYM of the body. Use
647 scm_m_body instead of bodycheck.
648
649 (scm_m_let): Use scm_m_body instead of bodycheck.
650
651 (scm_m_expand_body, scm_macroexp): New.
652
653 (unmemocopy): Account for ISYMs introduced by scm_m_body.
654
655 (ceval, deval): Call scm_m_expand_body. Call scm_lookupcar with
656 check=1. Throw error for internal defined that have not been
657 rewritten by scm_m_expand_body.
658
659 * eval.h: Added prototypes for scm_m_expand_body and scm_macroexp.
660 Removed prototype for SCM_APPLY.
661
662 * tags.h: Added extern declaration of scm_isymnames.
b09ef679 663
a6ba4ef8
MD
6641999-07-27 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
665
666 * Makefile.am (EXTRA_libguile_la_SOURCES): Added lang.c.
667
668 * lang.c: New file: Beginning of multi-language support.
669
670 * init.c (scm_boot_guile_1): Added call to scm_init_lang ().
671
672 * dynwind.c (scm_dowinds): Removed obsolete wind_key #f case.
673 (scm_dynamic_wind): Added argument checking for the after guard so
674 that we don't add garbage on the dynwind chain.
675 (scm_swap_bindings): Added.
676
677 * tags.h, print.c (SCM_IM_NIL_COND, SCM_IM_NIL_IFY, SCM_IM_T_IFY,
678 SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY), print.c
679 (scm_isymnames): New isyms for multi-language support.
680
681 * eval.c (scm_nil, scm_t): New symbols.
682 (nil-cond, nil-ify, t-ify, 0-cond, 0-ify, 1-ify): New special
683 forms for multi-language support.
684
259529f2
MD
6851999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
686
687 * random.c, random.h (scm_c_default_rstate, scm_c_uniform32):
688 Added.
689 Renamed functions in the random function library interface
690 from scm_i_XXX --> scm_c_XXX.
691
1b9c3dae
GH
6921999-07-25 Gary Houston <ghouston@easynet.co.uk>
693
694 * ports.c (scm_putc): fix line-buffering.
695
544e9093
MD
6961999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
697
698 * ports.c, ports.h, fports.c, strports.c, vports.c: Renamed
699 scm_set_ptob_XXX --> scm_set_port_XXX.
700
f15913d0
MD
7011999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
702
703 * ports.c, ports.h (scm_make_port_type): New interface for
704 creation of port types (replaces scm_newptob). Just as for the
705 smobs, we need to separate the internal representation of smob
706 types from the interface, so that we easily can add new fields and
707 rearrange things without caring about backward compatibility.
708 This change was forced by the need in GOOPS to create classes
709 representing port types.
710 (scm_set_ptob_mark, scm_set_ptob_free, scm_set_ptob_print,
711 scm_set_ptob_equalp, scm_set_ptob_flush_input, scm_set_ptob_close,
712 scm_set_ptob_seek, scm_set_ptob_truncate,
713 scm_set_ptob_input_waiting_p): New setters.
714 (scm_newptob): Rewritten to use scm_make_port_type. For backward
715 compatibility.
716 (scm_ptobs): Changed type scm_ptobfuns --> scm_ptob_descriptor.
717 (scm_prinport): Removed.
718 (scm_port_print): Added.
719 (scm_print_port_mode): Added.
720 (void_port_ptob, print_void_port, close_void_port, noop0):
721 Removed. Removed #include "genio.h" Added #include "objects.h",
722 #include "smobs.h"
723
724 * fports.c (prinfport): Moved code from ports.c.
725 (local_free): Added.
726 (scm_fptob): Removed. Instead use new interface.
727 (scm_make_fptob): Added. (Need to create basic ports in a
728 specific order in ports.c.)
729
730 * strports.c (scm_stptob, prinstpt, noop0): Removed
731 (scm_make_stptob): Added.
732
733 * vports.c (scm_sfport, prinsfpt, sf_read_flush, noop0): Removed.
734 (scm_make_sfport): Added.
735
736 * filesys.c (scm_dir_print): Don't use the port printing code.
737 Instead provide specific directory printer.
738
739 * gc.c (scm_gc_sweep): Use value returned from scm_ptobs[].free.
740
741 * ioext.c (scm_redirect_port): Replaced scm_ptobfuns -->
742 scm_ptob_descriptor.
743
744 * smob.c (scm_smob_print): Handle non-existing type name nicely.
745 Removed #include "genio.h"
746
747 * objects.c (scm_make_port_classes): New function ptr.
748
69bc9ff3
GH
7491999-07-24 Gary Houston <ghouston@easynet.co.uk>
750
751 * gdbint.c (gdb_print, gdb_read): call scm_truncate_file.
752
753 * ports.c (scm_truncate_file): renamed from scm_ftruncate.
754 allow the 1st argument to be a fdes or filename as well as a
755 port (as in the filesys.c version).
756
757 * filesys.c (scm_truncate_file): removed.
758
096d0b15
MD
7591999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
760
761 * readline.c, readline.h: Removed.
762
763 * objects.c, objects.h (scm_port_class): Added.
764 (scm_class_of): Look up port class in scm_port_class.
765 (SCM_IN_PCLASS_INDEX, SCM_OUT_PCLASS_INDEX,
766 SCM_INOUT_PCLASS_INDEX): Added.
767
f15913d0
MD
768
769 * Makefile.am: Removed genio.c, genio.x.
770
771 * genio.c: Removed.
772
aafe2718
MD
7731999-07-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
774
775 * init.c: Make sure that scm_post_boot_init_modules is called only
776 once. (Important when using a dumped image.; Thanks to Bernard
777 Urban.)
778
3144e1a9
JB
7791999-07-19 Jim Blandy <jimb@savonarola.red-bean.com>
780
8e1e60f1
JB
781 * guardians.c (scm_guardian_zombify): Separate scanning for
782 zombies from marking the pairs of the free list.
783
a825bb0e
JB
784 * guardians.c (scm_guardian_zombify): Don't set marks manually ---
785 use the macros. (Thanks to Michael Livshin.)
786
4d4c53ac
JB
787 * eval.c (scm_m_lambda): Let bodycheck check the body of the
788 lambda. Let your sins be purified by the blood of the lambda.
789 (Thanks to Eric Hanchrow.)
790
d9ad6919
JB
791 * net_db.c (h_errno): Don't declare this if it's #defined. Eew.
792 (Thanks to Valdis Kletnieks.)
793
3144e1a9 794