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