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