* numbers.c (isfinite): Define this macro if not defined: Return a
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
e7367a17
MD
11999-03-22 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2
3 * keywords.c (scm_tc16_kw): Added for backward compatibility.
4 Will be removed in next release.
5
6 * Makefile.am (modinclude_HEADERS): Added kw.h;
7
8 * kw.h: New file.
9
10 * libguile.h: #include "libguile/kw.h"
11
46d83025
MD
121999-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
13
14 * pairs.c (scm_set_car_x, scm_set_cdr_x): Return SCM_UNSPECIFIED.
15
e059c0b7
MD
161999-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
17
437bc84d
MD
18 * print.c (scm_isymnames): Added #@dispatch and #@hash-dispatch.
19
e059c0b7
MD
20 * hashtab.c, hashtab.h (scm_hash_fold, scm_internal_hash_fold):
21 Place the table argument last.
22
7e68f448
MD
231999-03-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
24
25 * modules.c: #include "procprop.h"
26 (scm_system_module_env_p): Assume root environment is no lookup
27 closure is found.
28
4177648e
MD
29 * debug.c, eval.c, evalext.c, gdbint.c stacks.c:
30 #include "modules.h".
7e68f448
MD
31
32 * modules.c, modules.h, eval.c, eval.h (scm_env_top_level,
33 scm_top_level_env, scm_system_module_env_p): Moved to modules.c.
34
35 * eval.c, eval.h (scm_top_level_lookup_closure): Removed.
36
cd713a06
MD
371999-03-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
38
39 * error.c (scm_wta): Pass SCM_LIST1 (arg) instead of SCM_EOL to
40 scm_misc_error when pos is a string. This allows for dispatching
41 arbitrary error messages with one argument via SCM_ASSERT:
42 SCM_ASSERT (<cond>, obj, "Undigestable object: %S", <subr>);
43
64af44a3
MD
441999-03-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
45
46 * list.c (scm_reverse): Report an error if given a circular list
47 instead of filling memory.
48 * list.c (scm_reverse_x): Check args.
49
6ee350ad
MD
501999-03-14 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
51
52 Most of this batch of changes is about how to deal with extended
53 types when an object system is loaded into Guile. A nice object
54 system is capable of representing Guile's types as class objects.
55
56 For example, we want a regular expression to be of class <regex>.
57 But regular expressions are smobs which aren't under direct
58 control of the object system, so there has to be some mechanism
59 which informs the object system that a new class should be created
60 which can represent the smob type. I call this a "wrapper class".
61
62 * objects.c: #include "smob.h";
63 (scm_class_keyword): Removed. (Class is automatically created by
64 make_smob_classes.)
65 (scm_smob_class): Array of smob classes indexed by smobnum.
66 (scm_make_extended_class): "Plugin" function pointer for creation
67 of wrapper classes for smob and struct types.
68 (scm_class_of): Handle compiled closures. (Currently regarded as
69 <procedure>.);
70 Use scm_smob_class to handle smob types;
71 Handle scm_tc16_bigpos, scm_tc16_bigneg, and, scm_tc16_keyword
72 through scm_smob_class;
73 Handle structs.
74
75 * smob.c (scm_newsmob): Also create a wrapper class if
76 scm_smob_class has been initialized.
77
78 * smob.h (SCM_TC2SMOBNUM): New macro for conversion between tc16
79 type code and smobnum.
80
81 * struct.c: #include "alist.h", "weaks.h", "hashtab.h";
82 (scm_struct_table): Weak key table with auxilliary information for
83 struct types. Currently used for names and wrapper classes.
84 (scm_struct_ihashq): Hash function for structs.
85 (scm_struct_create_handle): Get/create entry in scm_struct_table.
86 (scm_struct_vtable_name, scm_set_struct_vtable_name_x): Procedures
87 for accessing names of vtables. The record implementation in
88 boot-9.scm currently uses the setter to record the name of record
89 types. When the object system is initialized, it can use this
90 information to create wrapper classes with suitable names.
91 (scm_init_struct): Allocate scm_struct_table.
92 (scm_alloc_struct): Don't initialize scm_struct_i_tag here.
93 (struct tags are a finite resource and we might want to restrict
94 the use of tags to vtables only. E.g., Goops only uses tags for
95 classes.)
96 (scm_make_struct): Use scm_struct_entity_n_extra_words instead of
97 magic number 5.
98 (scm_struct_vtable_tag): Use scm_struct_i_tag instead of magic
99 number -1.
100
101 * struct.h (SCM_STRUCT_TABLE_NAME, SCM_SET_STRUCT_TABLE_NAME,
102 SCM_STRUCT_TABLE_CLASS, SCM_SET_STRUCT_TABLE_CLASS): New macros.
103 Used for access of struct table entries.
104
105 * hashtab.c, hashtab.h (scm_internal_hash_fold): New function.
106 (scm_hash_fold): New procedure. Used to process all entries in a
107 hash table (in no particular order).
108
109 Argh! For the umpteenth time I got compilation errors because of
110 the "intuitive" name `kw'. This has to have an end:
111
112 * Makefile.am, init.c, libguile.h, objects.c, root.h: Replaced
113 "kw" --> "keywords" everywhere.
114 (I doubt that this will cause big compatibility problems since the
115 application interface is unaffected.)
116
117 * keywords.c, keywords.h: Files renamed from kw.c, kw.h.
118
71c7d7d6
MD
1191999-03-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
120
efdfceea
MD
121 * srcprop.c (scm_set_source_property_x): Bugfix: Convert line and
122 column inums to native form.
123
71c7d7d6
MD
124 Improvement of backtraces: Introduces a new stack narrowing
125 specifier, #t, for the inner cut. (See further in the comments in
126 stacks.c:narrow_stack ().)
127
128 * procprop.c, procprop.h (scm_sym_system_procedure): New symbol.
129 (Used to flag certain system procedures which shouldn't turn up in
130 backtraces.)
131
132 * eval.c (scm_sym_system_module): New symbol. (Used to flag
133 modules which aren't "user" modules and the code of which
134 shouldn't turn up in backtraces.)
135
136 * eval.c, eval.h (scm_top_level_lookup_closure): New function:
137 Extract the lookup closure from an environment.
138 (scm_system_module_env_p): New function: Return non-#f if MODULE
139 is a system module.
140
141 * stacks.c: #include "eval.h"; #include "procprop.h";
142 (narrow_stack): Handle new narrowing specifier #t.
143
144 * debug.c (scm_procedure_name): Use name property in the default
145 case.
fde61308
MD
146
147 * gc.c, gc.h (scm_object_address): Renamed from scm_object_addr ().
148
149 * objects.h (scm_si_redefined, scm_si_hashsets): Shifted.
150
151 * eval.c, procs.c, procs.h, procprop.c: Renamed getter ->
152 procedure throughout.
153
154 * print.c (scm_iprin1): Removed extraneous space when printing
155 procedure-with-setters.
156
157 Entity and operator setter slots were introduced as a complement
158 to the <procedure-with-setter> type in order to support entities
159 and operators with setters in a reasonable and efficient way.
160 * procs.c (scm_procedure, scm_setter): Handle entity and operator
161 setter slots.
162
163 * objects.h (SCM_OPERATOR_SETTER, SCM_ENTITY_SETTER): New macros.
164 (struct scm_metaclass_operator): New setter slot.
165
166 * gc.c (scm_gc_mark): Mark struct setter slot.
167
168 * struct.c (scm_make_struct): Allocate one word more for
169 entities and initialize the new slot.
170
171 * struct.h (scm_struct_i_setter): New constant.
172
963561f7
MD
1731999-03-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
174
fde61308
MD
175 * objects.h (SCM_OBJ_CLASS_REDEF): New macro: Find class slots
176 directly through the instance.
177
178 * objects.c (scm_class_of): Use SCM_OBJ_CLASS_REDEF.
179
180 * gc.c (scm_gc_sweep): Bugfix: Look for SCM_STRUCT_F_LIGHT flag at
181 scm_struct_i_flags instead of scm_vtable_index_layout!
182
183 * list.c (scm_list_star): New procedure.
184
963561f7
MD
1851999-02-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
186
fde61308
MD
187 * debug.c (scm_init_debug): Added scheme level constant
188 SCM_IM_DISPATCH.
189
963561f7
MD
1901999-02-12 Jim Blandy <jimb@savonarola.red-bean.com>
191
192 * __scm.h (SCM_FENCE): Fix `asm volatile' warnings for EGCS.
193
194 * gc.c (scm_gc_sweep): Properly properly record the size of a
195 freed structure. (Thanks to Greg Harvey.)
196
1971999-02-07 Jim Blandy <jimb@savonarola.red-bean.com>
198
199 * gc.c (scm_gc_sweep): Properly record the size of a freed
200 structure. (Thanks to Michael Livshin.)
201
2021999-02-06 Jim Blandy <jimb@savonarola.red-bean.com>
203
204 Readline paren matching from Greg Harvey, with modifications from
205 Mikael Djurfeldt:
206
207 * readline.c (in_readline, reentry_barrier_mutex): Make these
208 static.
209
210 * readline.c: #include <sys/time.h> and "iselect.h", so we can
211 control how long we're paused, and threads will run while we're
212 paused.
213 (match_paren, find_matching_paren, init_bouncing_parens): New
214 functions.
215 (scm_init_readline): Call init_bouncing_parens.
216 (scm_readline_opts): Add the bounce-parens option.
217 * readline.h (SCM_READLINE_BOUNCE_PARENS): New readline option.
218 (SCM_N_READLINE_OPTIONS): Adjust.
219
2201999-02-06 Jim Blandy <jimb@zwingli.cygnus.com>
221
222 All the below are changes from Ken Raeburn, to get Guile to use
223 const where it can.
224
225 * chars.c (scm_lowers, scm_uppers, scm_charnames, scm_charnums),
226 eval.c (s_expression, s_test, s_body, s_bindings, s_variable,
227 s_clauses, s_formals): Variables now const.
228
229 * eval.c (promsmob): Now const.
230 * macros.c (macrosmob): Now const.
231 * smob.c (scm_newsmob): Smobfuns argument now points to const.
232 (freecell, flob, bigob): Now const.
233
234 * dynl.c (scm_make_argv_from_stringlist, scm_coerce_rostring),
235 error.c (scm_error, scm_syserror, scm_syserror_msg,
236 scm_num_overflow, scm_out_of_range, scm_wrong_type_arg,
237 scm_memory_error, scm_misc_error, scm_wta), macros.c
238 (scm_make_synt), feature.c (scm_add_feature), filesys.c
239 (scm_input_waiting_p), gc.c (scm_gc_start, scm_igc,
240 scm_must_malloc, scm_must_realloc), gsubr.c (scm_make_gsubr),
241 numbers.c (scm_num2dbl, scm_two_doubles, scm_num2long,
242 scm_num2long_long, scm_num2ulong),
243 options.c (scm_options), posix.c (scm_convert_exec_args,
244 environ_list_to_c), procs.c (scm_make_subr_opt, scm_make_subr),
245 ramap.c (scm_ramapc), read.c (scm_flush_ws), socket.c
246 (scm_sock_fd_to_port, scm_fill_sockaddr, scm_addr_vector), stime.c
247 (setzone, restorezone, bdtime2c), strop.c (scm_i_index),
248 strports.c (scm_mkstrport), symbols.c (scm_intern_obarray_soft,
249 scm_intern_obarray, scm_intern, scm_intern0,
250 scm_sysintern0_no_module_lookup, scm_sysintern, scm_sysintern0,
251 scm_symbol_value0), unif.c (scm_aind, scm_shap2ra): Argument
252 indicating calling subr, error message text, reason for error,
253 symbol name or feature name are now pointer to const.
254 * snarf.h (SCM_PROC, SCM_PROC1): String variables are now const.
255
256 * procs.c (scm_init_iprocs): iproc argument now points to const.
257 * pairs.c (cxrs): Now const.
258
259 * chars.h, error.h, feature.h, filesys.h, gc.h, gsubr.h, macros.h,
260 numbers.h, options.h, procs.h, ramap.h, read.h, smob.h,
261 strports.h, symbols.h, unif.h: Update variable declarations and
262 function prototypes for above changes.
263
264 * dynl.c, dynl-dld.c, dynl-dl.c, dynl-shl.c (sysdep_dynl_link,
265 sysdep_dynl_unlink, sysdep_dynl_func): Arguments FNAME, SUBR, and
266 SYMB now point to const.
267
2681999-01-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
269
fde61308
MD
270 * print.c (scm_iprin1): Use scm_procedure_name instead of
271 scm_procedure_property for compiled closures.
272
273 * tags.h (scm_tc7_pws): New procedure type. Four representations
274 for procedure-with-setters were considered before selecting this
275 one:
276
277 1. A closure where the CODE and ENV slots are used to represent
278 the getter and a new SETTER slot is used for the setter. The
279 original getter is stored as a `getter' procedure property. For
280 closure getters, the CODE and ENV slots contains a copy of the
281 getter's CODE and ENV slots. For subr getters, the CODE contains
282 a call to the subr.
283
284 2. A compiled closure with a call to the getter in the cclo
285 procedure. The getter and setter are stored in slots 1 and 2.
286
287 3. An entity (i.e. a struct with an associated procedure) with a
288 call to the getter in the entity procedure and the setter stored
289 in slot 0. The original getter is stored in slot 1.
290
291 4. A new primitive procedure type supported in the evaluator. The
292 getter and setter are stored in a GETTER and SETTER slot. A call
293 to this procedure type results in a retrieval of the getter and a
294 jump back to the correct eval dispatcher.
295
296 Representation 4 was selected because of efficiency and
297 simplicity.
298
299 Rep 1 has the advantage that there is zero penalty for closure
300 getters, but primitive getters will get considerable overhead
301 because the procedure-with-getter will be a closure which calls
302 the getter.
303
304 Rep 3 has the advantage that a GOOPS accessor can be a subclass of
305 <procedure-with-setter>, but together with rep 2 it suffers from a
306 three level dispatch for non-GOOPS getters:
307
308 cclo/struct --> dispatch proc --> getter
309
310 This is because the dispatch procedure must take an extra initial
311 argument (cclo for rep 2, struct for rep 3).
312
313 Rep 4 has the single disadvantage that it uses up one tc7 type
314 code, but the plan for uniform vectors will very likely free tc7
315 codes, so this is probably no big problem. Also note that the
316 GETTER and SETTER slots can live directly on the heap, using the
317 new four-word cells.
318
319 * procs.c, procs.h (SCM_PROCEDURE_WITH_SETTER_P, SCM_GETTER,
320 SCM_SETTER): New macros.
321 (scm_procedure_with_setter_p, scm_make_procedure_with_setter,
322 scm_getter, scm_setter): New procedures.
323
324 * eval.c, print.c (scm_iprin1): Added entries for scm_tc7_pws.
325
326 * gc.c (scm_gc_mark, scm_gc_sweep): Added case labels for
327 scm_tc7_pws.
328
329 * objects.c, objects.h (scm_class_of,
330 scm_class_procedure_with_setter): Added.
331
332 * procprop.c (scm_i_procedure_arity), procs.c (scm_thunk_p): Added
333 entry for scm_tc7_pws.
334
335 * procs.c (scm_procedure_p): Added case label for scm_tc7_pws.
336
963561f7
MD
3371999-01-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
338
fde61308
MD
339 * evalext.c, evalext.h (scm_m_generalized_set_x): New memoizing
340 macro.
341 (scm_init_evalext): Call scm_make_gsubr for
342 scm_m_generalized_set_x.
343
344 * eval.c, debug.c, tags.h (SCM_IM_SET_X): Renamed from SCM_IM_SET.
345
346 * eval.h: Declare scm_s_set_x, scm_sym_set_x;
347
348 * eval.c: Renamed "set" --> "set_x" in various names for
349 consistency of name correspondence between Scheme and C;
350 Renamed scm_i_set_x --> scm_sym_set_x and made global.
351 Renamed s_set_x --> scm_s_set_x and made global.
352
963561f7
MD
3531999-01-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
354
fde61308
MD
355 * random.c (scm_i_random_bignum): Made independent of endianness.
356
963561f7
MD
3571999-01-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
358
fde61308
MD
359 * eval.c (SCM_CEVAL): Added ENTER_APPLY in code for SCM_IM_APPLY.
360 (Thanks to Eric Hanchrow.)
361
963561f7
MD
3621999-01-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
363
fde61308
MD
364 * objects.c, objects.h (SCM_CLASS_REDEF): Renamed from CLASS_REDEF.
365
366 * random.c: Bugfix: Retrieve and store most significant 32 bits in
367 different order if the machine is bigendian.
368 (scm_init_random): Added safety check for bignum digit size.
369
ec1bbf39
MD
3701999-01-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
371
372 * random.c, random.h (scm_i_make_rstate): New function: Makes
373 scm_rstate from seed.
374 (scm_copy_random_state, scm_seed_to_random_state): New functions.
375 (scm_make_random_state): Removed.
376
377 * random.c (scm_make_random_state): Use scm_i_make_rstate().
378
efe5e0ef
MD
3791999-01-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
380
381 * random.c: Bugfix: Retrieve and store most significant 32 bits in
382 different order if the machine is bigendian.
383 (scm_init_random): Added safety check for bignum digit size.
384
a40bd532
MD
3851999-01-11 Roland Orre <mdj@mdj.nada.kth.se>
386
387 * sort.c (scm_merge, scm_merge_list_x): Bugfix: Place elements
388 from first arg before equal elements in second arg in result.
389 (scm_merge_list_step): Bugfix: Don't presume that arguments in a C
390 function call are executed in a well defined order.
391
94baa3b2
JB
3921999-01-11 Jim Blandy <jimb@zwingli.cygnus.com>
393
394 * alloca.c (alloca): Cast value returned by malloc. (Thanks to
395 Christian Lynbech.)
396
922363f5
MD
3971999-01-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
398
399 * random.c: Removed alloca includes.
400
f7677ff2
JB
4011999-01-11 Jim Blandy <jimb@zwingli.cygnus.com>
402
403 * Makefile.in: This changed, for some reason I don't really
404 understand, when I ran automake in the top level directory. This
405 may be contamination by Cygnus internal releases. If you re-run
406 automake and this change gets reverted, don't worry about it.
407
7a5bee23
MD
4081999-01-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
409
410 * sort.c, sort.h: New files: Implement slib's and scsh's sort
f7677ff2 411 interfaces. Author: Roland Orre.
7a5bee23
MD
412
413 * Makefile.am: Added sort.c, sort.h, sort.x.
414
415 * init.c: #include "sort.h";
416 (scm_boot_guile_1): Call scm_init_sort ().
417
418 * numbers.h: Added #include "libguile/print.h".
419
420 * numbers.c: Formatted according to Guile conventions;
421 Renamed s_bignum --> scm_s_bignum.
422
423 * random.c, random.h: New files: Random number support.
424 Interface same as slib's.
425
426 * Makefile.am: Added random.c, random.h, random.x.
427
428 * init.c: #include "random.h";
429 (scm_boot_guile_1): Call scm_init_random ().
430
0c03eafd
MD
4311998-12-23 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
432
433 * Makefile.am: New files: guardians.c, guardians.x, guardians.h
434
435 * guardians.c, guardians.h (scm_make_guardian,
436 scm_guardian_gc_init, scm_guardian_zombify, scm_guard,
437 scm_get_one_zombie, scm_init_guardian): This is an implementation
438 of guardians as described in R. Kent Dybvig, Carl Bruggeman, and
439 David Eby (1993) "Guardians in a Generation-Based Garbage
440 Collector" ACM SIGPLAN Conference on Programming Language Design
441 and Implementation, June 1993 ftp://ftp.cs.indiana.edu
442 /pub/scheme-repository/doc/pubs/guardians.ps.gz
443 Author: Michael N. Livshin.
444
445 * gc.h (SCM_MARKEDP, SCM_NMARKEDP): New macros.
446
447 * gc.c (scm_igc): Call scm_guardian_gc_init and
448 scm_guardian_zombify.
449
450 * init.c (scm_boot_guile_1): Call scm_init_guardian.
451
d0c2c0c0
MD
4521998-12-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
453
454 * macros.c (scm_makacro, scm_makmacro, scm_makmmacro): Added
455 argument checking.
456
7f0a6a69
MD
4571998-12-15 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
458
459 Move the procedure slots of entities to invisible slots (so that
460 we can have operator class objects which themselves are entities).
461 * struct.h (scm_struct_i_proc, scm_struct_i_flags,
462 SCM_STRUCTF_ENTITY): New constants.
463
464 * struct.c (scm_make_struct): Allocate "invisible" room for
465 procedures if SCM_STRUCTF_ENTITY is set in vtable.
466
467 * gc.c (scm_gc_mark): Mark entity procedures.
468
469 * struct.c, struct.h (scm_alloc_struct): Renamed from alloc_struct
470 and made global.
471 (scm_struct_init): Renamed from init_struct and made global.
472
473 * objects.h (SCM_ENTITY, scm_entity): Removed.
474 (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_0,
475 SCM_ENTITY_PROC_3): Adjusted for new location of procedure slots.
476
b8229a3b
MS
477Mon Dec 14 18:10:12 1998 Maciej Stachowiak <mstachow@mit.edu>
478
479 * snarf.h (SCM_SYNTAX): New macro to allow convenient declaration
480 of syntactic forms, similar to SCM_PROC.
481 * debug.c, eval.c, evalext.c: use SCM_SYNTAX to declare all special
482 forms, and SCM_SYMBOL or SCM_GLOBAL_SYMBOL to delcare C variables
483 for the name symbols when needed.
484
333a4791
JB
4851998-12-14 Jim Blandy <jimb@zwingli.cygnus.com>
486
487 * Makefile.in: Regenerated.
488
715fad68
JB
4891998-12-05 Jim Blandy <jimb@zwingli.cygnus.com>
490
491 * pairs.h (SCM_NEWCELL): When DEBUG_FREELIST is defined, don't
492 take the address of _into; it might be a register. Just have
493 scm_debug_newcell return the new cell.
494 * gc.c (scm_debug_newcell): Just return the new cell, instead of
495 taking the address of a place to store it as an argument.
496 * gc.h (scm_debug_newcell): Change declaration.
497 (Thanks to Greg Harvey.)
498
67ad463a
MD
4991998-12-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
500
501 * ramap.c (array-copy-in-order!, array-map-in-order): New names.
502 Replaces old names serial-array-copy! and serial-array-map!.
503
504 * evalext.c (map-in-order): New name. Replaces serial-map.
505
67ea079d
JB
5061998-12-05 Jim Blandy <jimb@totoro.red-bean.com>
507
508 * smob.c (freeprint): New function.
509 (freecell): Use it to print freed objects, for slightly easier
510 debugging.
511
6ab397f4
MD
5121998-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
513
514 * backtrace.c (display_frame): Made more robust. Doesn't throw an
515 error if no source properties can be found for a frame. (Thanks
516 to Christian Lynbech.)
517
afae5cbd
MD
5181998-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
519
520 * objects.h: Removed slots direct_supers and direct_slots from the
521 definitions of the rudimentary classes described by objects.h.
522
523 * objects.c, objects.h (scm_entity_p): New procedure. Together
524 with the predicates scm_procedure_p and scm_struct_p, this
525 predicate makes it possible to differ between structs, entities
526 and operators.
527
528 * modules.c, modules.h (scm_resolve_module): New function.
529
3763ac3c
MD
5301998-11-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
531
afae5cbd
MD
532 * objects.h (SCM_METACLASS_STANDARD_LAYOUT,
533 SCM_METACLASS_OPERATOR_LAYOUT): Removed slots `direct_supers' and
534 `direct_slots'.
535
536 * objects.c (scm_entity_p): New procedure.
537
3763ac3c
MD
538 * procprop.c (scm_i_procedure_arity): Bugfix: Return correct value
539 for asubrs, rpsubrs, lsubrs and lsubr_2s.
540
0d2e4c1b
MD
5411998-11-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
542
543 * procprop.h (scm_i_procedure_arity): Added declaration.
544
545 * procprop.c (scm_i_procedure_arity): Made global; New code to
546 handle operators and entities.
547 (scm_procedure_property): No need to call scm_procedure_p since
548 scm_i_procedure_arity now does all necessary type checking.
549 Added #include "objects.h".
550
551 * feature.c (scm_remove_hook_x): Bugfix: Changed reference to
552 s_add_hook_x --> s_remove_hook_x.
553 (scm_add_hook_x, scm_remove_hook_x): Hooks now takes arguments.
554 Added #include "procprop.h"
555
556 * feature.c, feature.h (scm_reset_hook_x): New procedure.
557 (scm_make_hook): Optional argument defines number of arguments to
558 the hook.
559 (scm_make_named_hook): Take number of args as second arg.
3763ac3c
MD
560 (scm_run_hook): Renamed from scm_run_hooks (old name defined in
561 boot-9.scm for a while); First arg is the hook. The rest are
562 arguments passed on to the hook procedures.
0d2e4c1b 563
69c6acbb
JB
5641998-11-23 Jim Blandy <jimb@zwingli.cygnus.com>
565
566 * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest,
567 scm_logbit_p): Do the computation in ulongs. This is not as nice
568 as doing it in bignums, but at least it's good enough for
569 manipulating flags in 32-bit words. (Thanks to Jim Wilson.)
570
571 * regex-posix.c (scm_regexp_exec): Reliably mark unmatched
572 subexpressions. (Thanks to Charbel Jacquin.)
573
a56eeb46
MD
5741998-11-23 Mikael Djurfeldt <mdj@kenneth>
575
576 * feature.c, feature.h (scm_make_hook, scm_add_hook_x,
577 scm_remove_hook_x, scm_run_hooks): Moved from ice-9/boot-9.scm.
578 (scm_make_named_hook): New function.
579
580 * feature.c: Added #include "eval.h".
581
582 * modules.c (scm_make_module): Beautify the module.
583
7e414627
MD
5841998-11-22 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
585
586 * modules.c, modules.h: New files: C interface to modules. (This
587 is necessary in order to interface the object system to Guile
588 properly. The guts of these modules will be replaced by the new
589 module system in the future.)
590
591 * init.c: Added #include "modules.h"
592 (scm_boot_guile_1): Call scm_init_modules.
593 (invoke_main_func): Call scm_post_boot_init_modules.
594
595 * Makefile.am: Added modules.c, modules.x, modules.h.
596
17621f3e
MD
5971998-11-22 Mikael Djurfeldt <mdj@kenneth>
598
599 * procs.c: #include "objects.h"
600 (scm_procedure_p): Return #t also on structs which are operators.
601
602 * objects.c (scm_init_objects): Renamed <standard-metaclass>,
603 <operator-metaclass> and <entity-class> to <standard-class>,
604 <operator-class> and <entity> in order to conform with STKlos
605 naming conventions.
606
607 * eval.c (SCM_CEVAL): Jump to badfun if trying to apply a struct
608 which isn't an operator.
609 (SCM_APPLY): Ditto, but jump to badproc.
610
aa00bd1e
MD
6111998-11-21 Mikael Djurfeldt <mdj@kenneth>
612
613 * eval.c (SCM_CEVAL): Allow structs implanted in code.
614 Previously, structs implanted in code were interpreted as forms
615 the operator of which was a gloc. We solve this by checking for
616 the zero in the emulated vcell in the struct vtable. Since
617 implanted structs always will look like forms with a gloc
618 operator, execution will only be slowed down by maximally one
619 extra test-and-branch per application.
620
621 * evalext.c (scm_definedp): Removed check for isyms; Added a
622 second optional argument: It is now possible to supply an
623 evaluation environment in which to look for the symbol.
624
b322f09a
MD
6251998-11-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
626
627 * readline.c (scm_init_readline): Set
628 rl_basic_word_break_characters. (Thanks to Ian Grant.)
629
630 * coop.c (coop_condition_variable_wait): Removed
631 (coop_condition_variable_wait_mutex): Folded logic of
632 coop_mutex_unlock into coop_condition_variable_wait_mutex to
633 prevent condvar signal lossage. Previously, another thread could
634 start to run after unlocking the mutex but before putting the
635 current thread on the wait queue. If that thread then would
636 signal the first, the signal would be lost. (Thanks to Christian
637 Lynbech.)
638
224822be
MD
6391998-11-17 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
640
641 * eval.c (SCM_CEVAL): Added missing case for cclo. (Thanks to
642 Christian Lynbech.)
643
036737fc
MD
6441998-11-14 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
645
646 * objects.c (scm_i_make_class_object): Renamed from
647 make_class_object; exported; error checking moved to
648 scm_make_class_object and scm_make_subclass_object.
649 (scm_make_class_object, scm_make_subclass_object): Use
650 scm_i_make_class_object.
651 (scm_make_subclass_object): Let the subclass have same metaclass
652 as the superclass.
653
a6e350dd
MD
6541998-11-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
655
656 * debug.c (scm_debug_options): Bugfix: Set the value of
657 scm_stack_checking_enabled_p after setting debug options;
658 #include "stackchk.h". (Thanks to Richard Polton.)
659
9879d0f1
RS
6601998-11-13 Radey Shouman <rshouman@metro2000.com>
661
662 * unif.c (scm_array_contents): removed unnecessary test for 0
663 base.
664
88be72ac
MD
6651998-11-13 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
666
667 * evalext.c, evalext.h (scm_m_sequence_to_list): Removed.
668 Replaced by macro `collect' in boot-9.scm.
669
ad3ff75b
MD
6701998-11-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
671
672 * eval.c (scm_copy_tree): Copy source properties if existent.
673
674 * debug.c (scm_start_stack): Copy source when evaluating. (If we
675 don't, we may end up passing memoized source to a transformer.)
676
29672a5c
MD
6771998-11-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
678
7a13c3ae
MD
679 * stack.c (get_applybody): Help function which lookups the first
680 body form of the apply closure.
681 (read_frames): Prevent the source of the first form of the apply
682 closure from being recorded. This would only be confusing.
e40a5fc8 683
29672a5c
MD
684 * debug.h (SCM_SET_MACROEXP, SCM_CLEAR_MACROEXP, SCM_MACROEXPP):
685 Replaces SCM_MACROFRAME, SCM_MACROFRAMEP.
686
687 * eval.c (SCM_CEVAL): Use SCM_SET/CLEAR_MACROEXP.
688
689 * stacks.c (read_frame): Bugfix: Removed lingering `else'
690 statement.
691 (read_frames): Use SCM_MACROEXPP.
692
56977059 6931998-11-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
7c939801
MD
694
695 * stacks.c (read_frames): Skip gsubr frames in backtraces. (They
696 don't contain interesting information since all arguments are
697 present in the frame which applies the compiled closure anyway.);
698 Skip the transformer application frames.
56977059
MD
699
700 * print.c (scm_iprin1): Print gsubrs as primitives.
701
fc4c5795
MD
7021998-11-09 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
703
704 * debug.h (SCM_MACROFRAME, SCM_MACROFRAMEP): New frame type.
705
706 * eval.c (SCM_CEVAL): Mark macro frames at `handle_a_macro' so
707 that we can identify these in a backtrace. (This change doesn't
708 introduce any significant speed penalty.)
709
710 * eval.c: Added note about `serial-map' using scm_map.
711
712 * read.c, read.h (scm_read_options, scm_read_opts): Removed
713 readline options. They should reside in their own options array.
714
715 * readline.c, readline.h (scm_readline_options,
716 scm_readline_opts): Moved readline options here.
717
68d15e3e
MD
7181998-11-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
719
720 * readline.c (scm_read_history, scm_write_history): Bugfix: Use
721 SCM_ROCHARS instead of SCM_CHARS.
722
723 * ports.c (scm_unread_string): Bugfixes: Check for SCM_STRINGP,
724 not SCM_ROSTRINGP; use SCM_ROUCHARS instead of SCM_UCHARS.
725
44e0a162
MD
7261998-11-06 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
727
728 * ports.h (SCM_CUC): #define as ~SCM_CRDY instead of 0x001fffffL.
729 This is quite important since the latter clears the
730 FPORT_READ_SAFE and FPORT_WRITE_SAFE flags causing flushes at
731 every single character read...
732
99317654
MD
7331998-11-03 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
734
735 * print.c (scm_iprin1): Removed suspect looking (and indeed
736 malevolent) semicolon after test for user supplied closure print
737 procedure. (Thanks to Telford Tendys.)
738
739 * list.c (scm_sloppy_memq): Removed sloppy_mem_check.
740 (scm_memq, scm_memv, scm_member): Do argument checking *before*
741 starting to search the list. Removed call to sloppy_mem_check.
742
743 * list.c, list.h (scm_delq1_x, scm_delv1_x, scm_delete1_x): New
744 procedures: Same as scm_delq_x et al, but delete maximally one
745 element.
746
747 * options.c (scm_options, scm_init_options): GC-protect option
748 values of type SCM. (Thanks to Telford Tendys.)
749
d0b7bad7
MD
7501998-11-01 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
751
752 * eval.c: Don't #define scm_lookupcar to scm_lookupcar1. Instead
753 make sure that there always is a "real" scm_lookupcar.
754
9cb84fbb
MD
7551998-11-01 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
756
69c6acbb
JB
757 * read.c, read.h (scm_read_opts): New read options
758 "history-length" and "history-file".
9cb84fbb
MD
759 (scm_read_options): Stifle history to history length.
760
69c6acbb 761 * readline.c (scm_read_history, scm_write_history): New procedures.
9cb84fbb 762
4ecb8428
MD
7631998-10-31 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
764
765 * eval.h (scm_macro_eval_x): Removed declaration.
766
767 * eval.c (scm_s_expression, scm_s_test, scm_s_body,
768 scm_s_bindings, scm_s_variable, scm_s_clauses, scm_s_formals):
769 Renamed and made global.
770
771 * eval.c, eval.h (SCM_EVALIM): Renamed from EVALIM.
772 (SCM_XEVAL, SCM_XEVALCAR): Renamed from XEVAL, XEVALCAR.
773
774 * evalext.c, evalext.h: New files. Contain non-R5RS things
775 having to do with evaluation.
776
fc4c5795
MD
777 * evalext.c (scm_serial_map): New procedure: Version of `map'
778 which guarantees that the procedure is applied to the lists in
779 serial order.
780 (scm_m_sequence_to_list): New syntax: Version of `begin' which
781 returns a list of the results of the body forms instead of the
782 result of the last body form.
4ecb8428
MD
783 (scm_definedp, scm_m_undefine): Moved from eval.c
784
785 * evalext.h (scm_m_sequence_to_list): Added declaration.
786
787 * macros.c, macros.h: New files.
fc4c5795
MD
788 (scm_procedure_to_syntax, scm_procedure_to_macro,
789 scm_procedure_to_memoizing_macro, scm_macro_p, scm_macro_type,
790 scm_macro_name, scm_macro_transformer): Moved from eval.c
4ecb8428
MD
791 (scm_make_synt): Moved from eval.c
792
69c6acbb 793 * procs.c, procs.h (scm_procedure_documentation): Moved from eval.c.
4ecb8428
MD
794
795 * init.c (scm_boot_guile_1): Added calls to scm_init_macros and
796 scm_init_evalext.
797
798 * Makefile.am: Added evalext.c, evalext.h, macros.c, macros.h.
799
35c96965
MD
800 * debug.c, print.c: Added #include "macros.h".
801
4d362308
MD
8021998-10-29 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
803
804 This change adds the ability to use `unread-char' multiple times
805 without interspersed reads and adds the new procedure
806 `unread-string'. The change is optimized for the common case of
807 unreading a single character. This is also the reason behind the
808 choice to store characters in the port itself: in most cases no
809 extra malloc is required.
810
811 The amount of code in some macros in ports.h has been increased to
812 the extent that they would fit better as C functions, but, since
813 this code belongs to the port representation, such functions
814 should be placed in ports.c which would cause calls back and forth
815 between ports.c and genio.c. That is not good for performance.
816 Also, keeping them as macros allows the compiler to do some
817 optimizations which are needed to make the current interface
818 (SCM_CRDYP, SCM_CGETUN, SCM_TRY_CLRDY) efficient.
819
820 One benchmark (Guile startup time) indicates an increase of
821 loading speed of 1%. Another (reading (using `read') boot-9.scm
822 10 times) shows no change in performance.
823
824 (Caveat: Since Gary is redesigning I/O anyway, no big efforts were
825 made to find a beautiful solution.)
826
827 * ports.h (SCM_CLRDY, SCM_CUNGET, SCM_CGETUN): Rewritten.
828 (SCM_TRY_CLRDY): New macro: Only clear the first unread
829 character. (SCM_CLRDY clears all.)
830 (SCM_N_READY_CHARS): New macro: Returns number of unread
831 characters in a port. Returns wrong answer if SCM_CRDYP is false.
832 (struct scm_port_table): New fields: `entry' contains port table
833 index, `cp' points to last unread char, `cbuf' is the buffer for
834 unread chars, `cbufend' points after end of the character buffer.
835
836 * ports.h, ports.c (scm_unread_string): New procedure.
837 (scm_grow_port_cbuf): New function.
838
839 * ports.c (scm_add_to_port_table, scm_remove_from_port_table):
840 Handle new fields.
841 (scm_generic_fgets), fports.c (local_fgets): Use a loop
842 to read unread characters. Use SCM_TRY_CLRDY instead of
843 SCM_CLRDY.
844
845 * ioext.c (scm_ftell): Use SCM_N_READY_CHARS to correct position.
846
847 * genio.c (scm_getc): Use SCM_TRY_CLRDY instead of SCM_CLRDY.
848
849 * genio.c, genio.h (scm_ungets): New function.
850
851 * genio.c (scm_puts): Removed mysterious TRANSCRIPT_SUPPORT code
852 sections.
853
22c88b3f
MD
8541998-10-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
855
856 * threads.h (scm_thread_sleep, scm_thread_usleep): Fixed
857 declarations. (Thanks to Russ McManus.)
858
3ffc7a36
MD
8591998-10-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
860
861 * numbers.c (num2long): As a software archeologist, I'm proud of
862 this finding! :) Preliminary dating suggests an almost 4 year old
863 remnant from the SCM ancestor. The sample has been removed from
864 the finding site and is now safely stored in the repository.
865
866 * numbers.h: Removed prototype for num2long.
867
868 * unif.c (scm_array_set_x): Use scm_num2long instead of num2long.
869
870 * gh_data.c (gh_scm2doubles): Make it possible to pass result
871 array as second arg.
872 (gh_chars2byvect, gh_shorts2svect, gh_floats2fvect, gh_scm2chars,
873 gh_scm2shorts, gh_scm2longs, gh_scm2floats): New functions.
874 * gh.h: Updated and added prototypes.
875
876 * gh_data.c (gh_ints2scm): Handle integers outside INUM limits.
877
cc720f64
JB
8781998-10-24 Jim Blandy <jimb@zwingli.cygnus.com>
879
880 * gc.h: Remove all uses of SCM_P. (Thanks to Richard Polton.)
881
882 * guile-snarf.in: Never generate an empty file. (Thanks to
883 Richard Polton.)
884
885 * gh.h (gh_enter, gh_new_procedure0_0, gh_new_procedure0_1,
886 gh_new_procedure0_2, gh_new_procedure1_0, gh_new_procedure1_1,
887 gh_new_procedure1_2, gh_new_procedure2_0, gh_new_procedure2_1,
888 gh_new_procedure2_2, gh_new_procedure3_0, gh_new_procedure4_0,
889 gh_new_procedure5_0): Specify argument types, to appease C++
890 compilers. (Thanks to Brad Bowman.)
891
892 Bug reports from Russ McManus:
893 * guile-snarf.in: If the CPP environment variable is set, use that
894 as the C preprocessor, instead of the preprocessor autoconf
895 found.
896 * snarf.h (SCM_PROC): Cast the function pointer passed to
897 scm_make_gsubr, to satisfy C++.
898
899 * gh_eval.c (gh_eval_str_with_catch, gh_eval_file_with_catch):
900 Use the handler passed, instead of ignoring it and using
901 gh_standard_handler. (Thanks to Etienne Bernard.)
902
5469b4a1
JB
9031998-10-20 Jim Blandy <jimb@zwingli.cygnus.com>
904
905 * ports.h: Put text after #endif in comment. (Thanks to Nicolas
906 Neuss.)
907
f4be1689
JB
9081998-10-19 Jim Blandy <jimb@zwingli.cygnus.com>
909
1f6fe22a
JB
910 * __scm.h, alist.c, async.c, async.h, backtrace.h, chars.c,
911 continuations.c, debug.c, debug.h, dynl-dl.c, dynl.c, dynl.h,
912 dynwind.c, dynwind.h, eq.c, error.c, error.h, eval.c, eval.h,
913 feature.c, filesys.c, filesys.h, fports.c, fports.h, gc.c, gc.h,
914 genio.c, genio.h, gh.h, gh_data.c, gsubr.c, gsubr.h, hash.c,
915 hashtab.c, init.c, init.h, ioext.c, ioext.h, kw.c, libguile.h,
916 list.c, list.h, load.c, load.h, mallocs.c, markers.c,
917 mit-pthreads.c, net_db.c, numbers.c, numbers.h, options.c,
918 ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c,
919 procprop.h, procs.c, procs.h, ramap.c, ramap.h, regex-posix.c,
920 regex-posix.h, root.c, root.h, scmsigs.c, scmsigs.h, script.c,
921 script.h, simpos.c, simpos.h, smob.c, smob.h, snarf.h, socket.c,
922 srcprop.c, stackchk.c, stackchk.h, stacks.c, stime.c, stime.h,
923 strings.c, strings.h, strports.c, struct.c, struct.h, symbols.c,
924 symbols.h, tags.h, threads.c, throw.h, unif.c, variable.c,
925 vectors.c, vectors.h, version.h, vports.c, weaks.c: Update
926 copyright years.
927
f4be1689
JB
928 * script.c (scm_compile_shell_switches): Define
929 use-emacs-interface in the root module, so the repl code can see
930 it. See today's change to top-repl in ice-9/boot-9.scm.
931
932 * filesys.c (set_element, get_element): Make sure that `element'
933 is a cell before applying SCM_FPORTP to it. (Thanks to Jost
934 Boekemeier and Jorgen "forcer" Schaefer.)
935
9361998-10-18 Jim Blandy <jimb@zwingli.cygnus.com>
937
938 * chars.c (scm_charnames): In ASCII character name table, make
939 newlines print as #\newline by default, not #\nl.
940
941 * Makefile.am (libguile_la_SOURCES, BUILT_SOURCES): Put these in
942 alphabetical order. Oh thrills. But it helps me know how far
943 along in the compilation I am.
944 * Makefile.in: Regenerated.
945
05c33d09
MD
9461998-10-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
947
948 * unif.c (scm_raprin1): Changed print syntax for byte vectors from
949 #bytes(...) to #y(...), and syntax for short vectors from
950 #short(...) to #h(...). This may seem nutty, but, like the other
951 uniform vectors, byte vectors and short vectors want to have the
952 same print and read syntax (and, more basic, want to have read
953 syntax!). Changing the read syntax to use multiple characters
954 after the hash sign breaks with the conventions used in R5RS and
955 the conventions used for the other uniform vectors. It also
956 introduces complexity in the current reader, both on the C and
957 Scheme levels. (The Right solution is probably to change the
958 syntax and prototypes for uniform vectors entirely.)
959
1aab20ac
JB
9601998-10-17 Jim Blandy <jimb@savonarola.red-bean.com>
961
962 Don't use local_fgets on sockets; ftell doesn't work on sockets.
963 (Thanks to Jorgen "forcer" Schaefer.)
964 * ports.h (SCM_NOFTELL): New flag.
965 * fports.c (local_fgets): If it's set, use the generic fgets.
966 * socket.c (scm_socket): Set SCM_NOFTELL on the ports we produce.
967
97c524bd
MD
9681998-10-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
969
970 * script.c (scm_compile_shell_switches): Add handling of -q switch
971 (inhibit loading of user init file).
972 (scm_shell_usage): Add usage text for -q switch.
973 (scm_compile_shell_switches): Always load user init file first if
974 it is loaded at all.
975
70445040
JB
9761998-10-16 Jim Blandy <jimb@zwingli.cygnus.com>
977
978 * stime.c: The CPP hair to determine a value for CLKTCK is weird,
979 and is now broken under NetBSD. I can't fathom what it's trying
980 to do, so I've replaced it with something that I do understand,
981 which seems to work, and which isn't broken on NetBSD. "Progress?
982 You Decide." (Thanks to Perry Metzger.)
983
984 * regex-posix.c (scm_regexp_exec): Add a cast to remove a
985 signed/unsigned comparison.
986
6e6e2bbc
JB
9871998-10-15 Jim Blandy <jimb@zwingli.cygnus.com>
988
989 Warning fixes from Greg Harvey:
990 * unif.c (scm_array_set_x): initializer for pos
991 * throw.c (scm_ithrow): added initializer for jmpbuf (SCM_UNDEFINED)
992 * struct.c (scm_struct_ref, scm_struct_set_x): Added
993 initializers for field_type, since EGCS so desparately wants to
994 play dumb
995 * debug.h (scm_make_gloc, scm_gloc_p, scm_make_iloc, scm_memcons,
996 scm_mem_to_proc, scm_proc_to_mem, scm_debug_hang): Added prototypes
997 when GUILE_DEBUG is defined.
998 * dynwind.h (scm_wind_chain): Same.
999 * ports.h (scm_pt_size, scm_pt_member): Same.
1000 * print.h (scm_current_pstate): Same.
1001 * procs.h (scm_make_cclo): Same.
1002
eebc12c6
JB
10031998-10-14 Jim Blandy <jimb@zwingli.cygnus.com>
1004
a437d8a2
JB
1005 Handle short and long long uniform arrays properly. (Thanks to
1006 Clark McGrew.)
1007 * ramap.c (scm_ra_matchp, scm_array_fill_int, scm_array_index_map_x,
1008 raeql_1): Add cases for scm_tc7_svect (short vectors) and
1009 scm_tc7_llvect (long long vectors).
1010
1011 Change the way libguile and boot-9.scm are timestamped, to try to
1012 get rid of these spurious mismatch warnings. Now both
1013 libguile/versiondat.h and ice-9/version.scm are generated directly
1014 by the configuration process, rather than having version.scm
1015 generated directly, and libguile/versiondat.h generated by the
1016 Makefile, which is generated by configure. It seems that
1017 sometimes the Makefile would change, but versiondat.h depends on
1018 Makefile.in, not Makefile, so it wouldn't get rebuilt.
1019 * Makefile.am (versiondat.h): Target removed; this is generated
1020 directly by the configure script now.
1021 (BUILT_SOURCES): Remove versiondat.h.
1022 * versiondat.h.in: New file, transformed by the configure script
1023 into versiondat.h.
1024 * Makefile.in: Regenerated.
1025
731a0a68
JB
1026 * (__scm.h, alist.c, eval.c, feature.c, gsubr.c, numbers.c,
1027 options.c): Rename RECKLESS -> SCM_RECKLESS, CAUTIOUS ->
1028 SCM_CAUTIOUS; this way, 1) there's only one version of each flag
1029 to define (we used to have both RECKLESS and SCM_RECKLESS), and 2)
1030 if we want to use them in a header file some day, we can. (Thanks
1031 to Michael Livshin.)
1032
ae6f9e24
JB
1033 * stime.c (scm_get_internal_real_time): Do the arithmetic using
1034 SCM numbers, so we won't have rollover problems; the range of a
1035 signed long in milliseconds is about 25 days. (Thanks to Karl
1036 Hegbloom.)
1037
70445040 1038 Don't redefine sleep and usleep; fix this problem now.
eebc12c6
JB
1039 * coop.c (sleep, usleep): Remove declarations; we don't use or
1040 redefine these any more.
1041 (scm_thread_usleep, scm_thread_sleep): New functions which do the
1042 job of usleep and sleep in a thread-friendly way. We can use
1043 these in the rest of Guile. Define versions for systems both with
1044 and without iselect.
1045 * threads.h (scm_thread_usleep, scm_thread_sleep): New declarations.
1046 * scmsigs.c (usleep): Clean up oddities declaring usleep; since
1047 we're just using it, not redefining it, we can use a K&R style
1048 declaration here.
1049 (sleep): Declare this, too, if the system hasn't.
1050 (scm_sleep, scm_usleep): Use scm_thread_sleep and
1051 scm_uthread_sleep if they're available; otherwise, just call the
1052 system functions.
1053 * scmconfig.h.in: Regenerated.
1054
1055 * coop.c (scm_thread_sleep): Make `slept' an unsigned long.
1056
1057 * coop.c (coop_sleephelp): Remove ANSI #ifdef hair.
1058
94e3e95e
JB
10591998-10-12 Jim Blandy <jimb@zwingli.cygnus.com>
1060
cb9728ed
JB
1061 * threads.c: Doc fix.
1062
1063 The argument type of usleep varies from system to system,
1064 as does the return type. We really shouldn't be redefining usleep
1065 at all, but I don't have time to clean that up before the 1.3.
1066 release. It's on the schedule for afterwards. (Thanks to Julian
1067 Satchell.)
1068 * coop.c (usleep): Use USLEEP_ARG_TYPE in prototype and
1069 definition.
1070 * scmsigs.c (usleep): Use USLEEP_ARG_TYPE in prototype.
1071 * scmconfig.h: Regenerated.
1072
94e3e95e
JB
1073 * simpos.c (scm_software_type): Procedure deleted. This isn't the
1074 right way to handle system variation. Autoconf's approach is the
1075 way and the light.
1076 * simpos.h (scm_software_type): Declaration deleted.
1077
1078 * script.c (scm_find_executable): Don't test if unix is #defined
1079 here; first, NetBSD doesn't #define it, and second, it's the wrong
b1d6e336 1080 way to go about these things. (Thanks to Perry Metzger.)
94e3e95e
JB
1081 (dld_find_executable): Delete this MSDOS support code. This isn't
1082 the way we want to support this; it needs to be rethunk at a
1083 larger scale.
1084
1085 * genio.c (scm_do_read_line): Don't just politely check that the
1086 line was either non-empty or EOF. Abort if it's empty and not
1087 EOF.
1088
5f964025
JB
10891998-10-11 Jim Blandy <jimb@zwingli.cygnus.com>
1090
81aef0ba
JB
1091 * scmconfig.h.in: Regenerated.
1092
335df0e8
JB
1093 * libguile.h: Don't omit the dynamic linking functions. (Thanks
1094 to Greg Badros.)
1095
5f964025
JB
1096 * genio.c (scm_do_read_line): Count lines correctly when the file
1097 doesn't end in a newline.
1098
17f8d40c
JB
10991998-10-10 Jim Blandy <jimb@zwingli.cygnus.com>
1100
216d3a1e
JB
1101 * genio.c (scm_do_read_line): Maintain the line count correctly.
1102 (Thanks to Harvey J. Stein and Greg Harvey.)
1103
17f8d40c
JB
1104 * gc.c (scm_return_first): Remove #ifdef __STDC__ garbage; Guile
1105 requires ANSI now.
1106
1107 * numbers.c (big2str): Protect t from garbage collection until
1108 we're done. (Thanks to Gary Houston.)
1109
31b9e767
JB
11101998-10-09 Jim Blandy <jimb@zwingli.cygnus.com>
1111
c6ff295e
JB
1112 * Makefile.am (libguile_la_LDFLAGS): Increment shared library
1113 version number.
1114 * Makefile.in: Regenerated.
1115
31b9e767
JB
1116 * fports.h (scm_setbuf0, scm_setvbuf, scm_setfileno,
1117 scm_evict_ports, scm_open_file, scm_stdio_to_port): Get rid of
1118 SCM_P macro.
1119
1120 Do magic to mix reads and writes on stdio FILE-based ports.
0445f9f2 1121 (Thanks to Christian Lynbech.)
31b9e767
JB
1122 * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY):
1123 New macros.
1124 (pre_read, pre_write): New functions.
1125 (local_fgetc, local_fgets, local_ffwrite, local_fputc,
1126 local_fputs): Call them.
1127 (local_fflush): Mark the port as ready for reading and writing.
1128 (scm_stdio_to_port): Set the FPORT_READ_SAFE, FPORT_WRITE_SAFE
1129 flags on new port objects. This might not be accurate --- who
1130 knows what state the FILE * is in when we get it --- but it won't
1131 do extraneous calls to fflush or fseek, so it's no worse than the
1132 behavior before this change.
1133 * ports.h: Add comment.
1134
1135 Centralize the creation of port objects based on stdio FILE * in
1136 fports.c; don't just throw them together anywhere.
1137 * fports.c (scm_stdio_to_port): Make NAME a SCM value, which is
1138 what the rest of Guile wants. Don't set the revealed count;
1139 that's only appropriate for stdin, stdout, stderr.
1140 (scm_standard_stream_to_port): This function does set the revealed
1141 count.
1142 * init.c (scm_init_standard_ports): Use scm_standard_stream_to_port,
1143 not scm_stdio_to_port.
1144 * filesys.c (scm_open): Call scm_stdio_to_port; don't write it out.
1145 * fports.c (scm_open_file): Same.
1146 * posix.c (scm_pipe): Same.
1147 * socket.c (scm_sock_fd_to_port): Same.
1148 * ioext.c (scm_fdopen): Same.
1149 (scm_freopen): Moved from here to...
1150 * fports.c (scm_freopen): ... here. This is really something that
1151 munges the internals of an fport, so it should go here.
1152 * fports.h (scm_stdio_to_port): Adjust prototype.
1153 (scm_standard_stream_to_port, scm_freopen): New protoypes.
1154 * ioext.h (scm_freopen): Prototype removed.
1155
1156 * filesys.c (set_element, get_element): This can work on both pipe
1157 and file ports, so use SCM_FPORTP to typecheck, instead of testing
1158 for scm_tc16_fport.
1159
1160 * scmconfig.h.in: Regenerated.
1161
1162 Change the definition of the functions in scm_ptobfuns so that
1163 they get passed the port object, not the port's stream.
1164 * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'.
1165 * gc.c (scm_gc_sweep): Pass the port itself to the free function.
1166 * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc):
1167 Pass the port itself to the scm_ptobs function.
1168 * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports,
1169 scm_generic_fgets): Same.
1170 (putc_void_port, puts_void_port, write_void_port, flush_void_port,
1171 getc_void_port, fgets_void_port, close_void_port): Just change the
1172 argument names; these functions don't really do anything.
1173 * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush,
1174 local_fputc, local_fputs, local_ffwrite, local_pclose): Take the
1175 port as an argument, and use SCM_STREAM to get the stdio FILE *.
1176 Also, use prototyped definitions, and get rid of the extra
1177 declarations.
1178 (scm_fptob, scm_pipob): We don't need casts here any more.
1179 * strports.c (prinstpt): Use prototype declarations.
1180 (stputc, stwrite, stputs, stgetc): Take the port as an argument,
1181 and use SCM_STREAM to get the string info. Also, use prototyped
1182 definitions, and get rid of the extra declarations.
1183 * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose,
1184 noop0): Same.
1185
1186 * ports.h (scm_ptobfuns): Replace uses of SCM_P with a straight
1187 prototype; it's okay (preferred, even!) to use ANSI C in Guile.
1188
1189 * fports.c (local_fgetc, local_fgets): Renamed from scm_fgetc and
1190 scm_fgets, for consistency.
1191 (scm_fptop, scm_pipob): References updated.
1192
6d921cd6
JB
11931998-10-08 Jim Blandy <jimb@zwingli.cygnus.com>
1194
1195 Include the source location in error messages for scripts.
1196 * init.c (scm_boot_guile_1): Use scm_internal_lazy_catch, so the
1197 stack is still there when we catch the error.
1198 * throw.c (handler_message): If we are handling an error with a
1199 message, then put together the proper arguments and call
1200 scm_display_error, instead of scm_display_error_message. That
1201 displays source location, if it can find it.
1202
13af3048
JB
12031998-10-07 Jim Blandy <jimb@zwingli.cygnus.com>
1204
a8e05009
JB
1205 * gc.c (scm_unprotect_object): Change this so that calls to
1206 scm_protect_object and scm_unprotect_object nest properly.
1207 (scm_protect_object): Doc fixes.
1208
3c0a54bd
JB
1209 * strings.c (scm_string_set_x): Require the argument to be a
1210 writable string, not a substring or a symbol.
1211 * strings.h (SCM_RWSTRINGP, SCM_NRWSTRINGP): New predicates.
74f87516
JB
1212 (Thanks to John Redford and Charbel Jacquin.)
1213
13af3048
JB
1214 * scmconfig.h.in: Regenerated; ../acconfig.h has changed.
1215
6ea669d7
JB
12161998-10-07 Jim Blandy <jimb@totoro.red-bean.com>
1217
1218 * eval.c (safe_setjmp): Remove this misunderstanding.
1219 (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Replace with references to
1220 ordinary setjmp.
1221
2d0937bc
JB
12221998-10-06 Jim Blandy <jimb@zwingli.cygnus.com>
1223
1224 * libguile.h: Mark these as C declarations, for compilation by C++
1225 compilers.
1226
1227 * snarf.h (SCM_PROC, SCM_PROC1): Remove very odd code in #ifdef
1228 __cplusplus clause. I seriously doubt this ever worked the way
1229 the author seems to have intended.
1230
12311998-10-05 Jim Blandy <jimb@zwingli.cygnus.com>
1232
1233 Utterly needless cleanups to hopelessly messy code.
1234 * ports.c: Doc fixes.
1235 (scm_fflush): Moved to ...
1236 * genio.c (scm_fflush): ... here, amongst all the other port
1237 method invocation functions.
1238 * genio.h, ports.h: The prototype moves too.
1239
53314947
JB
12401998-10-04 Jim Blandy <jimb@zwingli.cygnus.com>
1241
8b49142f
JB
1242 * backtrace.c (display_error_body): The current frame does not
1243 always have a parent frame; consider a function called directly
1244 from the MAIN_FUNC passed to scm_boot_guile. (Thanks to Maciej
1245 Stachowiak.)
1246
53314947
JB
1247 * alloca.c (alloca): Undo yesterday's changes, and simply call
1248 malloc directly for storage, and abort if we don't get what we
1249 want. The situation is much simpler --- just call malloc. Emacs
1250 has bizarre/evil requirements (signal handlers might malloc unless
1251 you set this global flag, so you have to set the flag around all
1252 calls to malloc) which we are certainly not going to conform to,
1253 so we can do the simple and obvious thing.
1254
1255 * coop.c (coop_condition_variable_wait): Make this function
1256 static. It's only useful internally --- you should never just
1257 wait on a condition variable.
1258 * coop-defs.h (coop_condition_variable_wait): Delete prototype.
1259
026065b7
JB
12601998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
1261
7265de70
JB
1262 * unif.c (scm_array_set_x): Accept any kind of number as an
1263 element for a uniform vector of doubles. This is more consistent
1264 with Scheme's view of numbers. (Thanks to Miroslav Silovic.)
1265
a9fe62cb
JB
1266 * alloca.c: Use scm_must_malloc to obtain storage. Hopefully this
1267 works; I can't conveniently test it myself. (Thanks to Dvid
1268 Tillman for the bug report.)
1269
026065b7
JB
1270 * init.c: Doc fixes.
1271
1272 * init.c (invoke_main_func): Load the startup files (boot-9.scm)
1273 from here, not from scm_compile_shell_switches (which is a pretty
1274 dumb place to do it).
1275 (scm_load_startup_files): New function.
1276 (scm_ice_9_already_loaded): Variable moved to here from script.c.
1277 * script.c (scm_compile_shell_switches): Don't load the startup
1278 files here.
1279 (scm_ice_9_already_loaded): Variable moved.
1280 * init.c (scm_load_startup_files): Prototype for new function.
1281 * gh_init.c (gh_enter): Doc fix.
1282
1aab20ac 12831998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
541716d1
JB
1284
1285 Some anti-warning changes from Greg Harvey.
1286 * gh_data.c (gh_scm2doubles): Initialize m, to avoid compiler
1287 warnings when it doesn't understand our NORETURN declarations in
1288 error.h.
1289 * posix.c (scm_mknod): Similar.
1290
f9d12ce8
JB
12911998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
1292
1293 * posix.c (scm_getpwuid): If we can't find an entry, return our
1294 own message, instead of using scm_syserror --- the getpwMUMBLE
1295 functions don't set `errno' to anything interesting.
1296
1aab20ac 12971998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
0553d3a2
JB
1298
1299 Get rid of warnings from the cooperative threading system.
1300 * threads.h (scm_single_thread_p, scm_yield,
1301 scm_call_with_new_thread, scm_join_thread, scm_make_mutex,
1302 scm_lock_mutex, scm_unlock_mutex, scm_make_condition_variable,
1303 scm_wait_condition_variable, scm_signal_condition_variable): Add
1304 prototypes for these Scheme-visible functions.
1305 * coop-defs.h (coop_next_runnable_thread,
1306 coop_wait_for_runnable_thread_now, coop_wait_for_runnable_thread):
1307 Prototypes for these here, even though they're from iselect.c.
1308 (coop_condition_variable_wait, coop_join): Add prototypes.
1309 * coop-threads.c (scm_threads_free_thread, scm_threads_free_mutex,
1310 scm_threads_free_condvar): Make these smob functions static.
1311 * coop-threads.h (coop_init): Give this a real prototype.
1312 * coop.c: #include <unistd.h>, if we have it, for `usleep' and `sleep'.
1313 (coop_next_runnable_thread): No need to provide prototype; it's in
1314 coop-defs.h.
1315
1316 * scmconfig.h.in: .detarenegeR
1317
1318 * iselect.c, threads.c: Doc fixes.
1319
235bb3fe
JB
13201998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
1321
1322 * Makefile.in: Regenerated with a patched automake, to get
1323 dependency generation right when using EGCS.
1324
1325 * inet_aton.c (inet_aton): Add prototype, to remove compiler
1326 warning. (Thanks to Robert Pluim.)
1327
1328 * inet_aton.c (inet_aton): Reassure the compiler that the
1329 arguments to the <ctype.h> macros are all unsigned characters, not
1330 signed characters.
1331
1aab20ac 13321998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
83d1c666
JB
1333
1334 Getting rid of more warnings...
1335 * iselect.c: Test for MISSING_BZERO_DECL, not DECLARE_BZERO; see
1336 today's change to ../configure.in.
1337 * scmsigs.c: Test for MISSING_USLEEP_DECL, not DECLARE_USLEEP.
1338 * scmconfig.h.in: Regenertaded.de.,.__
1339 * stime.c (strptime): Declare this, #ifdef MISSING_STRPTIME_DECL.
1340 (scm_localtime, scm_mktime): Use a const char * to manipulate the
1341 time zone name.
1342
1343 * readline.c: Doc fix.
1344 (rl_cleanup_after_signal, rl_free_line_state): Make these static.
1345 * readline.h (scm_filename_completion_function): Add prototype.
1346 (scm_init_readline): Make this into a prototype.
1347
1348 * readline.c (scm_filename_completion_function): Use SCM_PROC to
1349 declare this, instead of calling scm_make_subr manually.
1350
1aab20ac 13511998-10-02 Jim Blandy <jimb@savonarola.red-bean.com>
83d1c666
JB
1352
1353 * readline.h (scm_init_readline): Add prototype for this.
1354 (scm_init_readline): Make this a real prototype.
1355
94c0b3b8
JB
13561998-09-30 Jim Blandy <jimb@zwingli.cygnus.com>
1357
1358 Warning fixes from Maciej Stachowiak:
1359 * backtrace.h (scm_display_application, scm_backtrace): Add
1360 prototypes.
1361 * debug.c (scm_m_start_stack): Make this function static.
1362 * fluids.h (scm_fluid_p): Add prototype.
1363 * procprop.c (scm_i_procedure_arity): Make this function static.
1364 * regex-posix.c (scm_regexp_error_msg): Make this function static.
1365 * regex-posix.h (scm_init_regex_posix): Use prototype, not K&R decl.
1366 * root.h (scm_dynamic_root): Add external prototype.
1367 * scmsigs.h (scm_usleep): Add external prototype.
1368 * script.h (scm_init_script): Use prototype, not K&R decl.
1369 * stacks.h (scm_stack_id): Add external prototype.
1370 * symbols.h (scm_sysintern0_no_module_lookup): Add external prototype.
1371
dc9f6d6a
MG
13721998-09-30 Mark Galassi <rosalia@cygnus.com>
1373
1374 * gh.h: took out the definitions of vset and vref, since they are
1375 replaced by the proper vector routines that correspond to the R4RS
1376 procedures.
1377
61a9ba48
JB
13781998-09-29 Jim Blandy <jimb@totoro.red-bean.com>
1379
94c0b3b8 1380 * snarf.h (SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): New macros;
61a9ba48
JB
1381 these are analogous to SCM_VCELL and SCM_GLOBAL_VCELL but take a
1382 third argument, a C expression that should result in a SCM value,
1383 which is used to initialize the variable. Reimplemented
1384 SCM_CONST_LONG in terms of SCM_VCELL_INIT. (Thanks to Maciej
1385 Stachowiak.)
1386
1387 * version.h (scm_libguile_config_stamp): Add prototype.
1388 (From Maciej Stachowiak.)
1389
9a3c1149
JB
13901998-09-26 Jim Blandy <jimb@zwingli.cygnus.com>
1391
1392 * eval.c (scm_force): Assert that x is SCM_NIMP to fix segv when
1393 (force 9) is tried. (Thanks to Karl M. Hegbloom.)
1394
52591c80
JB
13951998-09-06 Jim Blandy <jimb@zwingli.cygnus.com>
1396
6925bc4e
JB
1397 * print.c (scm_iprin1): Rather than having one i, and using it in
1398 several places, declare a fresh i local to each block where it is
1399 used, and give it a signedness appropriate to its use in each case.
1400 (scm_iprlist): Same.
1401
1402 * print.c (scm_iprin1): Add cast to avoid unsigned/signed
1403 comparison warnings.
1404
1405 * print.c (ENTER_NESTED_DATA): Make i an unsigned long, to avoid
1406 signed/unsigned clashes.
1407
1408 * posix.h (scm_tmpnam): Added prototype.
1409
52591c80
JB
1410 * objects.h (scm_set_object_procedure_x, scm_make_class_object,
1411 scm_make_subclass_object): Add external prototypes.
1412
1413 * numbers.c (scm_mkbig): Add cast, and note that signed/unsigned
1414 comparison is okay here.
1415
1416 * numbers.c (scm_istr2int): Add cast; len is known to be positive.
1417
1418 * numbers.c (scm_bigcomp): Clarify logic, and avoid relying on the
1419 (true, but confusing) fact that -1 == ((unsigned) 0 - 1).
1420
1421 * numbers.c (scm_adjbig): Make nsiz an scm_sizet, to avoid mixing
1422 signed/unsigned.
1423
1424 * load.c (swap_port): Make this function static.
1425
1426 * load.c (scm_search_path): Make max_path_len and max_ext_len
1427 unsigned, since they're compared against string sizes.
1428
1429 * load.c (init_build_info): Make i unsigned.
1430
1431 * ioext.h (scm_read_line): Add prototype.
1432
1433 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
1434 scm_hash_fn_remove_x): Make hash bucket index local variable k
1435 unsigned. Use scm_ulong2num to pass it to SCM_ASSERT as
1436 accurately as possible.
1437
1438 * gh_data.c (gh_set_substr): Add casts to avoid signed/unsigned
1439 comparisons, and range checking to make sure those casts are
1440 harmless.
2d2c87e1
JB
1441
1442 * stackchk.h (SCM_STACK_OVERFLOW_P): Change definition to avoid
1443 signed/unsigned comparisons.
1444
1445 * smob.c (scm_numsmob): Make this an int, not an scm_sizet, to
1446 avoid signed/unsigned comparisons.
1447 * smob.h (scm_numsmob): Change extern declaration to match.
1448
1449 * ports.c (scm_numptob): Make this an int, not an scm_sizet, to
1450 avoid signed/unsigned comparisons.
1451 * ports.h (scm_numptob): Change extern declaration to match.
1452 (scm_current_load_port, scm_set_port_line_x,
1453 scm_set_port_column_x): New prototypes.
1454
1455 * gsubr.c (GSUBR_TEST): Don't #define this. Nobody's using the
1456 test code, and it causes warnings.
1457
1458 * gh.h (gh_int2scmb, gh_uniform_vector_length,
1459 gh_uniform_vector_ref): Added prototypes.
1460
1461 * Makefile.am (libguile_la_SOURCES): Include Scheme-level
1462 debugging support unconditionally. That's backtrace.c, stack.c,
1463 debug.c, and srcprop.c.
1464 (EXTRA_libguile_la_SOURCES): Omit those from here.
1465 * Makefile.in: Regenerated.
1466
a9b70caf
MD
14671998-08-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1468
1469 * options.c (scm_options): Bugfix: Allow empty list of options!
1470
1471 * debug.c, debug.h (scm_single_step): Removed.
1472 (scm_with_traps): New procedure. This procedure could easily be
1473 written in Scheme but needs to be highly optimized.
1474
1475 * eval.h, eval.c: New evaluator trap flag: SCM_TRAPS_P.
1476
1477 * eval.c (SCM_CEVAL, SCM_APPLY): Removed resetting of trap flags.
1478 Check SCM_TRAPS_P before trapping.
1479
6dd78771
JB
14801998-07-30 Jim Blandy <jimb@zwingli.cygnus.com>
1481
1482 Changes to avoid signed/unsigned comparison warnings.
1483 * gc.c (scm_mtrigger, scm_heap_size): Make these unsigned longs.
1484 (scm_gc_sweep): Make n and j local to the blocks they're used in,
1485 so they can have appropriate types for each application. Make i
1486 signed. Use initializers in some spots. I'll probably pay for
1487 all this tweaking.
1488 (scm_must_malloc, scm_must_realloc): Use scm_sizet for size args.
1489 (scm_must_realloc): Make nm unsigned.
1490 (init_heap_seg): Make new_seg_index and n_new_objects signed.
1491 (scm_init_storage): Use prototype-style definition, and make the
1492 argument unsigned.
1493 * gc.h (scm_heap_size, scm_mtrigger, scm_must_malloc,
1494 scm_must_realloc, scm_init_storage): Adjust prototype accordingly.
1495
1496 * filesys.c (scm_readlink): Make local vars rv and size ints, to
1497 avoid signed/unsigned comparison warnings, and because the return
1498 value of readlink may be -1. Don't bother casting the third
1499 argument to readlink.
1500
1501 * filesys.c (scm_dirname, scm_basename): Move these to their own
1502 page, at the end of the file.
1503 * filesys.h (scm_dirname, scm_basename): Add prototypes for these.
1504
1505 * eval.h (scm_eval_options_interface): Add external prototype for this.
1506 * eval.c (scm_eval_options_interface): Use prototype-style def'n.
1507
1508 * eval.c (scm_lookupcar1): Make this static.
1509
1510 * dynl.h (scm_registered_modules, scm_clear_registered_modules):
1511 Make these prototype declarations, not K&R-style.
1512
1513 * chars.c (scm_tables_prehistory): Add cast, to remove signed/
1514 unsigned comparison warning.
1515
1516 * appinit.c: File removed. It had a single function in it, empty,
1517 whose reason for existence is explained in no documentation or
1518 comment. I think it's there as a default for some Tcl-style
1519 initialization, but Tcl abandoned that approach a while ago.
1520 * Makefile.am (libguile_la_SOURCES): Remove appinit.c.
1521 (BUILT_SOURCES): Remove appinit.x.
1522 * Makefile.in: Regenerated.
1523
0dcbc17a
JB
15241998-07-29 Jim Blandy <jimb@zwingli.cygnus.com>
1525
1526 * Makefile.in: Regenerated using the last public version of
1527 automake, not the hacked Cygnus version.
1528
1f5ae2fd
JB
15291998-07-28 Jim Blandy <jimb@zwingli.cygnus.com>
1530
1531 Remove Totoro kludge.
1532 * Makefile.in, scmconfig.h.in: Regenerated.
1533 * init.c, readline.c: Don't check if TOTORO is #defined.
1534
e99cbcd6
JB
15351998-07-26 Jim Blandy <jimb@zwingli.cygnus.com>
1536
1537 * Makefile.am: Adjust for new thread configuration system.
1538 (INCLUDES): Include the value of THREAD_CPPFLAGS.
1539 (guile_LDADD, check_ldadd): THREAD_LIBS_LOCAL has been renamed from
1540 THREAD_LIBS.
1541 (THREAD_LIBS): Definition deleted; automake will generate such
1542 things automatically.
1543 * Makefile.in: Regenerated.
1544
87148d9e
JB
15451998-07-23 Jim Blandy <jimb@zwingli.cygnus.com>
1546
1547 Simplify smob and port marking; set the mark bit in the generic
1548 marking code, and make marker routines only responsible for
1549 turning up outgoing pointers.
1550 * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here,
1551 before calling the marking function. Don't call the marking
1552 function if it's zero.
1553 * markers.c (scm_mark0): Just return #f. This function isn't
1554 necessary at all now, but it's harmless to call it. We'll leave
1555 it in so other folks' code doesn't croak at link time.
1556 (scm_markcdr): Don't call SCM_SETGC8MARK.
1557 * async.c (mark_async): Don't call SCM_SETGC8MARK.
1558 * dynl.c (mark_dynl_obj): Same.
1559 * root.c (mark_root): Same.
1560 * srcprop.c (marksrcprops): Same.
1561 * unif.c (markra): Same.
1562 * variable.c (scm_markvar): Same.
1563 * ports.c (scm_markstream): Same.
1564 (void_port_ptob): Specify zero for our marking function.
1565 * debug.c (debugobjsmob): Same.
1566 * dynwind.c (guardsmob): Same.
1567 * filesys.c (dir_smob): Same.
1568 * fluids.c (fluid_smob): Same.
1569 * fports.c (scm_fptob, scm_pipob): Same.
1570 * mallocs.c (mallocsmob): Same.
1571 * regex-posix.c (regex_t_smob): Same.
1572 * smob.c (freecell, flob, bigob): Same.
1573 * threads.c (thread_smob, mutex_smob, condvar_smob): Same.
1574 * throw.c (jbsmob, lazy_catch_funs): Same.
1575
3910272e
MD
15761998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1577
1578 * eval.c (scm_copy_tree): Reverted last change: `eval' uses
1579 scm_copy_tree on code in order not to let memoized code to leak
1580 out. Thus, scm_copy_tree needs to copy vectors as well since
1581 quasiquote can introduce evaluated code also inside vector
1582 constants.
1583
240ed1e5
MD
15841998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1585
1586 * eval.c (scm_copy_tree): Removed ability to copy vectors.
1587
1588 * gh_data.c, gh.h (gh_ints2scm, gh_longs2ivect,
1589 gh_ulongs2uvect): New procedures. (Complements gh_doubles2scm and
1590 gh_doubles2dvect.)
1591
1592 * unif.c: Say that ivect and uvect are of type signed and unsigned
1593 long instead of int in commentary so that it correctly describes
1594 the implementation.
1595
5ef81022
MD
15961998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1597
1598 * stime.c: Removed declaration of strptime. (It should be
1599 declared by the system headers. If it turns out that some systems
1600 don't, we'll handle that then.) (Thanks to Greg Troxel.)
1601
1602 * stime.h: Renamed TIMEH --> STIMEH
1603
1604 * backtrace.c (scm_display_error, scm_display_backtrace): In order
1605 to increase portability, don't use structure assignment.
1606 (Thanks to Nicolas Neuss.)
1607
1608 * iselect.c: Use LONG_MAX instead of ULONG_MAX for increased
1609 portability.
1610 (finalize_fd_sets): Added empty statement after last case label.
1611 (Thanks to Nicolas Neuss.)
1612
1613 * gc.c (scm_igc): Changed //-comment into /*-comment. (Thanks to
1614 Nicolas Neuss.)
1615
212d45b8
MD
1616Sat Jul 11 22:08:21 1998 Mikael Djurfeldt <mdj@totoro.red-bean.com>
1617
1618 * init.c, readline.c: OK, I won't have these readline.x bug
1619 reports anymore. We've had them since April. The current reason
1620 is a completely unintelligible failure of totoro.red-bean.com to
1621 do the test for rl_getc_function in libreadline correctly. This
1622 kludge overrides the test if we're on totoro so that the snapshot
1623 generation process can work.
1624
1625 * readline.c: Define a strdup replacement if not existent on system.
1626
43eeb5a6
MD
16271998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1628
1629 * vectors.c, vectors.h (scm_make_vector): Removed third argument.
1630 This change makes scm_make_vector R5RS compatible. We cannot keep
1631 the third argument since people want to be able to deduce the form
1632 of the C function call only by looking at R5RS. (At the same time
1633 we have removed some unnecessary complexity!)
1634
1635 * eval.c, filesys.c, fluids.c, gc.c, gh_data.c, init.c, kw.c,
1636 net_db.c, posix.c, print.c, regex-posix.c, scmsigs.c, socket.c,
1637 stime.c, symbols.c, unif.c, vectors.c, weaks.c: Removed third
1638 argument in call to scm_make_vector.
1639
9d0b279f
MD
16401998-07-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1641
1642 * numbers.h (SCM_NUM2DBL): New macro. Complements SCM_NUMBERP.
1643 This macro is useful in applications.
1644
dbb25e7f
MD
16451998-06-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1646
1647 * load.c (scm_internal_parse_path): Renamed from scm_parse_path.
1648 (scm_parse_path, scm_search_path): New Scheme level procedures.
1649
1650 * load.h (scm_internal_parse_path, scm_parse_path,
1651 scm_search_path): Declared.
1652
74d6650d
MD
16531998-06-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1654
1655 * filesys.c (dirname, basename): New procedures.
1656
1657 * init.c (scm_boot_guile_1): Removed condition around
1658 scm_init_options.
1659
1660 * dynwind.c: #include "genio.h"; #include "smob.h"; Implemented a
1661 new data type (guards) for representation of C level guards and
1662 data on the wind chain.
1663 (scm_internal_dynamic_wind): New function.
1664
1665 * dynwind.h: Declare scm_internal_dynamic_wind.
1666
1667 * root.h (scm_root_state): Added scm_cur_loadp.
1668
1669 * root.c (mark_root): Added comment about cur_loadp.
1670
1671 * load.c: #include "dynwind.h";
1672 (scm_primitive_load): Use scm_inner_dynamic_wind to update
1673 scm_cur_loadp.
1674
1675 * init.c (scm_init_standard_ports): Initialize scm_def_loadp.
1676
1677 * ports.c (current-load-port): New procedure.
1678
391aebfc
MD
16791998-06-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1680
10ccfad7
MD
1681 * ioext.c (scm_isatty_p): Accept any kind of data as argument. If
1682 not a tty, return #f.
1683
391aebfc
MD
1684 * regex-posix.c (scm_regexp_exec): Free malloced memory. (Thanks
1685 to Julian Satchell and Roland Kaufmann.)
1686
1687 * gh.h (gh_memv, gh_member): Fixed typos in macro definitions.
1688 (gh_write): Added declaration. (Thanks to Eiichi Takamori.)
1689
6dabf6a9
MD
16901998-06-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1691
1692 * debug.h, debug.c (scm_start_stack): New function. Implements
1693 the guts of old scm_m_start_stack.
1694
1695 * debug.c (scm_m_start_stack): Use scm_start_stack.
1696
1697 * init.c (scm_start_stack, scm_restart_stack): Renamed to
1698 start_stack and restart_stack. (These have static scope.)
1699
daca2816
MD
17001998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1701
1702 * readline.c (rl_cleanup_after_signals, rl_free_line_state): New
1703 readline functions to come in release 2.3. (Thanks to Chet
1704 Ramey.)
1705 (handle_errors): Use the above functions.
1706
be0ea988
MD
17071998-05-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1708
1709 * readline.c: Improvements for readline support: Handle errors
1710 better; Implement before-read-hook.
1711
17121998-05-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1713
1714 * init.c (scm_boot_guile_1), readline.c: Test for
1715 HAVE_RL_GETC_FUNCTION instead of HAVE_LIBREADLINE. (Need to
1716 assure that we have version >= 2.1.)
1717
e158e4f4
MD
17181998-05-11 Mikael Djurfeldt <mdj@kenneth>
1719
83d1c666
JB
1720 * readline.c (scm_readline): Defer interrupts while we're calling
1721 readline.
1722
e158e4f4
MD
1723 * readline.c (scm_add_history): Bugfix: Do strdup before giving
1724 away the string to add_history.
56600c45
MD
1725 (completion_function): Do completion for readline. (Thanks to
1726 Andrew Archibald.)
e158e4f4
MD
1727 (scm_filename_completion_function): New procedure: Filename
1728 completer.
1729 (current_input_getc): New function. Use this one instead of
1730 standard getc from readline.
1731
1732 * throw.c, throw.h (scm_handle_by_throw): New function: This
1733 handler throws errors to next handler on the dynwind chain.
1734
17351998-05-09 Mikael Djurfeldt <mdj@kenneth>
1736
1737 * scmsigs.c (scm_usleep): Bugfix: Don't define j if it isn't
1738 used.
1739
8bb51def
MD
17401998-05-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1741
1742 * procprop.c (scm_i_procedure_arity): New function. Returns arity
1743 of procedure.
1744 (scm_procedure_properties): Modified to return arity together with
1745 other properties.
1746 (scm_procedure_property): Added the read-only property `arity'.
1747 (scm_set_procedure_property_x): It is an error to set the `arity'
1748 property.
1749
1750 * gsubr.h, gsubr.c: Moved macros from gsubr.c to gsubr.h and added
1751 prefix SCM_; Made f_gsubr_apply global and added prefix scm_.
1752
1753 * procprop.h (scm_sym_arity): New symbol.
1754
1755 * objects.c (scm_set_object_procedure_x): New procedure: Use this
1756 to set the dispatch procedure of an operator or entity object.
1757
1758 * objects.h (SCM_METACLASS_OPERATOR_LAYOUT, SCM_ENTITY_LAYOUT):
1759 Made procedure slots read-only.
1760
1761 * eval.c (SCM_CEVAL): Moved scm_tc7_contin case above
1762 scm_tcs_cons_gloc case in zero args switch; Fixed args
1763 construction for operators in scm_tcs_cons_gloc case in two args
1764 switch.
1765
680ed4a8
MD
17661998-05-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1767
104d4533
MD
1768 * fluids.c: Removed use of assert.h (in order to avoid
1769 __eprintf).
1770
1771 * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic.
1772
1773 * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0.
1774
680ed4a8
MD
1775 * eval.c (SCM_CEVAL): Do more thorough argument checking. This
1776 change makes the evaluator safer at the cost of evaluation speed.
1777 It handles the case when the user has added a non-immediate
1778 improper end of the application form, e.g., `(+ 0 . x)'.
1779 (Earlier only cases like `(+ 0 . 0)' were handled.) I've tried to
1780 minimize the extra cost as much as possible. The new code is
1781 enclosed in #ifdef CAUTIOUS regions. NOTE: This also fixes the
1782 problem with structs planted directly in the code (e.g. by a
1783 macro). This no longer causes segmentation fault. (Thanks to
1784 Eric Hanchrow.)
1785
1786 * eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra
1787 arg `proc' in order to be able to throw errors; New argument
1788 checking code.
1789
1790 * Removed extra #include "debug.h"
1791
0935d604
MD
17921998-04-25 Mikael Djurfeldt <mdj@kenneth>
1793
1794 * scmsigs.c: Declare usleep as returning void on some systems.
2c36126d
MD
1795 (scm_usleep): Return SCM_INUM0 on those systems. (Thanks to Julian
1796 Satchell.)
0935d604
MD
1797
1798 * coop.c (usleep): Return void on some systems.
1799
f1a5fa3c
MD
18001998-04-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1801
1802 * Makefile.am (libguile_la_LDFLAGS): Removed redundant -rpath.
1803
1804 * coop.c: Changed return type of usleep to int.
1805
1806 * scmsigs.c (scm_usleep): New procedure; Declare usleep if it
1807 isn't found in the OS.
1808
1809 * iselect.h: #define scm_internal_select select if GUILE_ISELECT
1810 isn't enabled. (Thought that I had made this change ages ago...)
1811
1812 * iselect.c: Declare bzero if not defined by OS.
1813
26c41b99
MD
18141998-04-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1815
c3e09ef9
MD
1816 * dynl.c (scm_must_free_argv): Fixed memory leak due to negated
1817 condition. (Thanks to John Tobey.)
1818
1819 * continuations.c (scm_make_cont), debug.c (scm_make_memoized,
1820 scm_make_debugobj), eval.c (scm_makprom): SCM_DEFER/ALLOW_INTS -->
1821 A section.
1822
1823 * __scm.h: Start the long-term project of moving to POSIX threads.
1824 Phase 1: Classification of all critical sections.
1825 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): New macros: Delimiters
1826 for A sections. (See comments in __scm.h for details.)
1827
26c41b99
MD
1828 * dynl.c: Only check that HAVE_DLOPEN is defined before loading
1829 dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD.
1830
28795b1f
MD
18311998-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1832
1833 * Makefile.am (BUILT_SOURCES): Added cpp_err_symbols.c,
1834 cpp_sig_symbols.c, libpath.h and versiondat.h to BUILT_SOURCES
1835 (libpath.h, versiondat.h): Replaced dependency on Makefile with
1836 dependencies on $(srcdir)/Makefile.in
1837 $(top_builddir)/config.status in order to avoid circularity.
1838
1839 * script.c (scm_compile_shell_switches): Bugfix: Don't discount i
1840 from argc if argc was 0 initially.
1841
1842 * Makefile.am (Makefile.am): Replaced THREAD_LIBS --> GUILE_LIBS
1843 in generation of libpath.h.
1844
f2e5c92c
MD
18451998-04-15 Mikael Djurfeldt <mdj@nada.kth.se>
1846
1847 * Makefile.am (libguile_la_LDFLAGS): Bumped version number of
1848 libguile from 2 to 3.
1849
a3365d47
MD
18501998-04-14 Mikael Djurfeldt <mdj@nada.kth.se>
1851
1852 * Makefile.am: Added .x-dependencies to variable BUILT_SOURCES.
1853
fc1d67c4
MD
18541998-04-13 Mikael Djurfeldt <mdj@kenneth>
1855
1856 * ports.c (scm_port_line, scm_set_port_line_x, scm_port_column,
1857 scm_set_port_column_x, scm_port_filename,
1858 scm_set_port_filename_x): Removed optional arguments. Added
1859 proper argument checking.
1860
1861 * eval.c, eval.h, coop.c (scm_eval_stack, SCM_EVAL_STACK): Measure
1862 stack size in machine words.
1863
1864 * unif.c (scm_uniform_vector_ref, scm_cvref, scm_array_set_x,
1865 rapr1): Use SCM_UCHARS instead of SCM_CHARS for strings. (Thanks
1866