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