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