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