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