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