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