*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
67ad463a
MD
11998-12-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2
3 * ramap.c (array-copy-in-order!, array-map-in-order): New names.
4 Replaces old names serial-array-copy! and serial-array-map!.
5
6 * evalext.c (map-in-order): New name. Replaces serial-map.
7
67ea079d
JB
81998-12-05 Jim Blandy <jimb@totoro.red-bean.com>
9
10 * smob.c (freeprint): New function.
11 (freecell): Use it to print freed objects, for slightly easier
12 debugging.
13
6ab397f4
MD
141998-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
15
16 * backtrace.c (display_frame): Made more robust. Doesn't throw an
17 error if no source properties can be found for a frame. (Thanks
18 to Christian Lynbech.)
19
afae5cbd
MD
201998-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
21
22 * objects.h: Removed slots direct_supers and direct_slots from the
23 definitions of the rudimentary classes described by objects.h.
24
25 * objects.c, objects.h (scm_entity_p): New procedure. Together
26 with the predicates scm_procedure_p and scm_struct_p, this
27 predicate makes it possible to differ between structs, entities
28 and operators.
29
30 * modules.c, modules.h (scm_resolve_module): New function.
31
3763ac3c
MD
321998-11-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
33
afae5cbd
MD
34 * objects.h (SCM_METACLASS_STANDARD_LAYOUT,
35 SCM_METACLASS_OPERATOR_LAYOUT): Removed slots `direct_supers' and
36 `direct_slots'.
37
38 * objects.c (scm_entity_p): New procedure.
39
3763ac3c
MD
40 * procprop.c (scm_i_procedure_arity): Bugfix: Return correct value
41 for asubrs, rpsubrs, lsubrs and lsubr_2s.
42
0d2e4c1b
MD
431998-11-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
44
45 * procprop.h (scm_i_procedure_arity): Added declaration.
46
47 * procprop.c (scm_i_procedure_arity): Made global; New code to
48 handle operators and entities.
49 (scm_procedure_property): No need to call scm_procedure_p since
50 scm_i_procedure_arity now does all necessary type checking.
51 Added #include "objects.h".
52
53 * feature.c (scm_remove_hook_x): Bugfix: Changed reference to
54 s_add_hook_x --> s_remove_hook_x.
55 (scm_add_hook_x, scm_remove_hook_x): Hooks now takes arguments.
56 Added #include "procprop.h"
57
58 * feature.c, feature.h (scm_reset_hook_x): New procedure.
59 (scm_make_hook): Optional argument defines number of arguments to
60 the hook.
61 (scm_make_named_hook): Take number of args as second arg.
3763ac3c
MD
62 (scm_run_hook): Renamed from scm_run_hooks (old name defined in
63 boot-9.scm for a while); First arg is the hook. The rest are
64 arguments passed on to the hook procedures.
0d2e4c1b 65
69c6acbb
JB
661998-11-23 Jim Blandy <jimb@zwingli.cygnus.com>
67
68 * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest,
69 scm_logbit_p): Do the computation in ulongs. This is not as nice
70 as doing it in bignums, but at least it's good enough for
71 manipulating flags in 32-bit words. (Thanks to Jim Wilson.)
72
73 * regex-posix.c (scm_regexp_exec): Reliably mark unmatched
74 subexpressions. (Thanks to Charbel Jacquin.)
75
a56eeb46
MD
761998-11-23 Mikael Djurfeldt <mdj@kenneth>
77
78 * feature.c, feature.h (scm_make_hook, scm_add_hook_x,
79 scm_remove_hook_x, scm_run_hooks): Moved from ice-9/boot-9.scm.
80 (scm_make_named_hook): New function.
81
82 * feature.c: Added #include "eval.h".
83
84 * modules.c (scm_make_module): Beautify the module.
85
7e414627
MD
861998-11-22 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
87
88 * modules.c, modules.h: New files: C interface to modules. (This
89 is necessary in order to interface the object system to Guile
90 properly. The guts of these modules will be replaced by the new
91 module system in the future.)
92
93 * init.c: Added #include "modules.h"
94 (scm_boot_guile_1): Call scm_init_modules.
95 (invoke_main_func): Call scm_post_boot_init_modules.
96
97 * Makefile.am: Added modules.c, modules.x, modules.h.
98
17621f3e
MD
991998-11-22 Mikael Djurfeldt <mdj@kenneth>
100
101 * procs.c: #include "objects.h"
102 (scm_procedure_p): Return #t also on structs which are operators.
103
104 * objects.c (scm_init_objects): Renamed <standard-metaclass>,
105 <operator-metaclass> and <entity-class> to <standard-class>,
106 <operator-class> and <entity> in order to conform with STKlos
107 naming conventions.
108
109 * eval.c (SCM_CEVAL): Jump to badfun if trying to apply a struct
110 which isn't an operator.
111 (SCM_APPLY): Ditto, but jump to badproc.
112
aa00bd1e
MD
1131998-11-21 Mikael Djurfeldt <mdj@kenneth>
114
115 * eval.c (SCM_CEVAL): Allow structs implanted in code.
116 Previously, structs implanted in code were interpreted as forms
117 the operator of which was a gloc. We solve this by checking for
118 the zero in the emulated vcell in the struct vtable. Since
119 implanted structs always will look like forms with a gloc
120 operator, execution will only be slowed down by maximally one
121 extra test-and-branch per application.
122
123 * evalext.c (scm_definedp): Removed check for isyms; Added a
124 second optional argument: It is now possible to supply an
125 evaluation environment in which to look for the symbol.
126
b322f09a
MD
1271998-11-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
128
129 * readline.c (scm_init_readline): Set
130 rl_basic_word_break_characters. (Thanks to Ian Grant.)
131
132 * coop.c (coop_condition_variable_wait): Removed
133 (coop_condition_variable_wait_mutex): Folded logic of
134 coop_mutex_unlock into coop_condition_variable_wait_mutex to
135 prevent condvar signal lossage. Previously, another thread could
136 start to run after unlocking the mutex but before putting the
137 current thread on the wait queue. If that thread then would
138 signal the first, the signal would be lost. (Thanks to Christian
139 Lynbech.)
140
224822be
MD
1411998-11-17 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
142
143 * eval.c (SCM_CEVAL): Added missing case for cclo. (Thanks to
144 Christian Lynbech.)
145
036737fc
MD
1461998-11-14 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
147
148 * objects.c (scm_i_make_class_object): Renamed from
149 make_class_object; exported; error checking moved to
150 scm_make_class_object and scm_make_subclass_object.
151 (scm_make_class_object, scm_make_subclass_object): Use
152 scm_i_make_class_object.
153 (scm_make_subclass_object): Let the subclass have same metaclass
154 as the superclass.
155
a6e350dd
MD
1561998-11-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
157
158 * debug.c (scm_debug_options): Bugfix: Set the value of
159 scm_stack_checking_enabled_p after setting debug options;
160 #include "stackchk.h". (Thanks to Richard Polton.)
161
9879d0f1
RS
1621998-11-13 Radey Shouman <rshouman@metro2000.com>
163
164 * unif.c (scm_array_contents): removed unnecessary test for 0
165 base.
166
88be72ac
MD
1671998-11-13 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
168
169 * evalext.c, evalext.h (scm_m_sequence_to_list): Removed.
170 Replaced by macro `collect' in boot-9.scm.
171
ad3ff75b
MD
1721998-11-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
173
174 * eval.c (scm_copy_tree): Copy source properties if existent.
175
176 * debug.c (scm_start_stack): Copy source when evaluating. (If we
177 don't, we may end up passing memoized source to a transformer.)
178
29672a5c
MD
1791998-11-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
180
7a13c3ae
MD
181 * stack.c (get_applybody): Help function which lookups the first
182 body form of the apply closure.
183 (read_frames): Prevent the source of the first form of the apply
184 closure from being recorded. This would only be confusing.
e40a5fc8 185
29672a5c
MD
186 * debug.h (SCM_SET_MACROEXP, SCM_CLEAR_MACROEXP, SCM_MACROEXPP):
187 Replaces SCM_MACROFRAME, SCM_MACROFRAMEP.
188
189 * eval.c (SCM_CEVAL): Use SCM_SET/CLEAR_MACROEXP.
190
191 * stacks.c (read_frame): Bugfix: Removed lingering `else'
192 statement.
193 (read_frames): Use SCM_MACROEXPP.
194
56977059 1951998-11-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
7c939801
MD
196
197 * stacks.c (read_frames): Skip gsubr frames in backtraces. (They
198 don't contain interesting information since all arguments are
199 present in the frame which applies the compiled closure anyway.);
200 Skip the transformer application frames.
56977059
MD
201
202 * print.c (scm_iprin1): Print gsubrs as primitives.
203
fc4c5795
MD
2041998-11-09 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
205
206 * debug.h (SCM_MACROFRAME, SCM_MACROFRAMEP): New frame type.
207
208 * eval.c (SCM_CEVAL): Mark macro frames at `handle_a_macro' so
209 that we can identify these in a backtrace. (This change doesn't
210 introduce any significant speed penalty.)
211
212 * eval.c: Added note about `serial-map' using scm_map.
213
214 * read.c, read.h (scm_read_options, scm_read_opts): Removed
215 readline options. They should reside in their own options array.
216
217 * readline.c, readline.h (scm_readline_options,
218 scm_readline_opts): Moved readline options here.
219
68d15e3e
MD
2201998-11-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
221
222 * readline.c (scm_read_history, scm_write_history): Bugfix: Use
223 SCM_ROCHARS instead of SCM_CHARS.
224
225 * ports.c (scm_unread_string): Bugfixes: Check for SCM_STRINGP,
226 not SCM_ROSTRINGP; use SCM_ROUCHARS instead of SCM_UCHARS.
227
44e0a162
MD
2281998-11-06 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
229
230 * ports.h (SCM_CUC): #define as ~SCM_CRDY instead of 0x001fffffL.
231 This is quite important since the latter clears the
232 FPORT_READ_SAFE and FPORT_WRITE_SAFE flags causing flushes at
233 every single character read...
234
99317654
MD
2351998-11-03 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
236
237 * print.c (scm_iprin1): Removed suspect looking (and indeed
238 malevolent) semicolon after test for user supplied closure print
239 procedure. (Thanks to Telford Tendys.)
240
241 * list.c (scm_sloppy_memq): Removed sloppy_mem_check.
242 (scm_memq, scm_memv, scm_member): Do argument checking *before*
243 starting to search the list. Removed call to sloppy_mem_check.
244
245 * list.c, list.h (scm_delq1_x, scm_delv1_x, scm_delete1_x): New
246 procedures: Same as scm_delq_x et al, but delete maximally one
247 element.
248
249 * options.c (scm_options, scm_init_options): GC-protect option
250 values of type SCM. (Thanks to Telford Tendys.)
251
d0b7bad7
MD
2521998-11-01 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
253
254 * eval.c: Don't #define scm_lookupcar to scm_lookupcar1. Instead
255 make sure that there always is a "real" scm_lookupcar.
256
9cb84fbb
MD
2571998-11-01 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
258
69c6acbb
JB
259 * read.c, read.h (scm_read_opts): New read options
260 "history-length" and "history-file".
9cb84fbb
MD
261 (scm_read_options): Stifle history to history length.
262
69c6acbb 263 * readline.c (scm_read_history, scm_write_history): New procedures.
9cb84fbb 264
4ecb8428
MD
2651998-10-31 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
266
267 * eval.h (scm_macro_eval_x): Removed declaration.
268
269 * eval.c (scm_s_expression, scm_s_test, scm_s_body,
270 scm_s_bindings, scm_s_variable, scm_s_clauses, scm_s_formals):
271 Renamed and made global.
272
273 * eval.c, eval.h (SCM_EVALIM): Renamed from EVALIM.
274 (SCM_XEVAL, SCM_XEVALCAR): Renamed from XEVAL, XEVALCAR.
275
276 * evalext.c, evalext.h: New files. Contain non-R5RS things
277 having to do with evaluation.
278
fc4c5795
MD
279 * evalext.c (scm_serial_map): New procedure: Version of `map'
280 which guarantees that the procedure is applied to the lists in
281 serial order.
282 (scm_m_sequence_to_list): New syntax: Version of `begin' which
283 returns a list of the results of the body forms instead of the
284 result of the last body form.
4ecb8428
MD
285 (scm_definedp, scm_m_undefine): Moved from eval.c
286
287 * evalext.h (scm_m_sequence_to_list): Added declaration.
288
289 * macros.c, macros.h: New files.
fc4c5795
MD
290 (scm_procedure_to_syntax, scm_procedure_to_macro,
291 scm_procedure_to_memoizing_macro, scm_macro_p, scm_macro_type,
292 scm_macro_name, scm_macro_transformer): Moved from eval.c
4ecb8428
MD
293 (scm_make_synt): Moved from eval.c
294
69c6acbb 295 * procs.c, procs.h (scm_procedure_documentation): Moved from eval.c.
4ecb8428
MD
296
297 * init.c (scm_boot_guile_1): Added calls to scm_init_macros and
298 scm_init_evalext.
299
300 * Makefile.am: Added evalext.c, evalext.h, macros.c, macros.h.
301
35c96965
MD
302 * debug.c, print.c: Added #include "macros.h".
303
4d362308
MD
3041998-10-29 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
305
306 This change adds the ability to use `unread-char' multiple times
307 without interspersed reads and adds the new procedure
308 `unread-string'. The change is optimized for the common case of
309 unreading a single character. This is also the reason behind the
310 choice to store characters in the port itself: in most cases no
311 extra malloc is required.
312
313 The amount of code in some macros in ports.h has been increased to
314 the extent that they would fit better as C functions, but, since
315 this code belongs to the port representation, such functions
316 should be placed in ports.c which would cause calls back and forth
317 between ports.c and genio.c. That is not good for performance.
318 Also, keeping them as macros allows the compiler to do some
319 optimizations which are needed to make the current interface
320 (SCM_CRDYP, SCM_CGETUN, SCM_TRY_CLRDY) efficient.
321
322 One benchmark (Guile startup time) indicates an increase of
323 loading speed of 1%. Another (reading (using `read') boot-9.scm
324 10 times) shows no change in performance.
325
326 (Caveat: Since Gary is redesigning I/O anyway, no big efforts were
327 made to find a beautiful solution.)
328
329 * ports.h (SCM_CLRDY, SCM_CUNGET, SCM_CGETUN): Rewritten.
330 (SCM_TRY_CLRDY): New macro: Only clear the first unread
331 character. (SCM_CLRDY clears all.)
332 (SCM_N_READY_CHARS): New macro: Returns number of unread
333 characters in a port. Returns wrong answer if SCM_CRDYP is false.
334 (struct scm_port_table): New fields: `entry' contains port table
335 index, `cp' points to last unread char, `cbuf' is the buffer for
336 unread chars, `cbufend' points after end of the character buffer.
337
338 * ports.h, ports.c (scm_unread_string): New procedure.
339 (scm_grow_port_cbuf): New function.
340
341 * ports.c (scm_add_to_port_table, scm_remove_from_port_table):
342 Handle new fields.
343 (scm_generic_fgets), fports.c (local_fgets): Use a loop
344 to read unread characters. Use SCM_TRY_CLRDY instead of
345 SCM_CLRDY.
346
347 * ioext.c (scm_ftell): Use SCM_N_READY_CHARS to correct position.
348
349 * genio.c (scm_getc): Use SCM_TRY_CLRDY instead of SCM_CLRDY.
350
351 * genio.c, genio.h (scm_ungets): New function.
352
353 * genio.c (scm_puts): Removed mysterious TRANSCRIPT_SUPPORT code
354 sections.
355
22c88b3f
MD
3561998-10-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
357
358 * threads.h (scm_thread_sleep, scm_thread_usleep): Fixed
359 declarations. (Thanks to Russ McManus.)
360
3ffc7a36
MD
3611998-10-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
362
363 * numbers.c (num2long): As a software archeologist, I'm proud of
364 this finding! :) Preliminary dating suggests an almost 4 year old
365 remnant from the SCM ancestor. The sample has been removed from
366 the finding site and is now safely stored in the repository.
367
368 * numbers.h: Removed prototype for num2long.
369
370 * unif.c (scm_array_set_x): Use scm_num2long instead of num2long.
371
372 * gh_data.c (gh_scm2doubles): Make it possible to pass result
373 array as second arg.
374 (gh_chars2byvect, gh_shorts2svect, gh_floats2fvect, gh_scm2chars,
375 gh_scm2shorts, gh_scm2longs, gh_scm2floats): New functions.
376 * gh.h: Updated and added prototypes.
377
378 * gh_data.c (gh_ints2scm): Handle integers outside INUM limits.
379
cc720f64
JB
3801998-10-24 Jim Blandy <jimb@zwingli.cygnus.com>
381
382 * gc.h: Remove all uses of SCM_P. (Thanks to Richard Polton.)
383
384 * guile-snarf.in: Never generate an empty file. (Thanks to
385 Richard Polton.)
386
387 * gh.h (gh_enter, gh_new_procedure0_0, gh_new_procedure0_1,
388 gh_new_procedure0_2, gh_new_procedure1_0, gh_new_procedure1_1,
389 gh_new_procedure1_2, gh_new_procedure2_0, gh_new_procedure2_1,
390 gh_new_procedure2_2, gh_new_procedure3_0, gh_new_procedure4_0,
391 gh_new_procedure5_0): Specify argument types, to appease C++
392 compilers. (Thanks to Brad Bowman.)
393
394 Bug reports from Russ McManus:
395 * guile-snarf.in: If the CPP environment variable is set, use that
396 as the C preprocessor, instead of the preprocessor autoconf
397 found.
398 * snarf.h (SCM_PROC): Cast the function pointer passed to
399 scm_make_gsubr, to satisfy C++.
400
401 * gh_eval.c (gh_eval_str_with_catch, gh_eval_file_with_catch):
402 Use the handler passed, instead of ignoring it and using
403 gh_standard_handler. (Thanks to Etienne Bernard.)
404
5469b4a1
JB
4051998-10-20 Jim Blandy <jimb@zwingli.cygnus.com>
406
407 * ports.h: Put text after #endif in comment. (Thanks to Nicolas
408 Neuss.)
409
f4be1689
JB
4101998-10-19 Jim Blandy <jimb@zwingli.cygnus.com>
411
1f6fe22a
JB
412 * __scm.h, alist.c, async.c, async.h, backtrace.h, chars.c,
413 continuations.c, debug.c, debug.h, dynl-dl.c, dynl.c, dynl.h,
414 dynwind.c, dynwind.h, eq.c, error.c, error.h, eval.c, eval.h,
415 feature.c, filesys.c, filesys.h, fports.c, fports.h, gc.c, gc.h,
416 genio.c, genio.h, gh.h, gh_data.c, gsubr.c, gsubr.h, hash.c,
417 hashtab.c, init.c, init.h, ioext.c, ioext.h, kw.c, libguile.h,
418 list.c, list.h, load.c, load.h, mallocs.c, markers.c,
419 mit-pthreads.c, net_db.c, numbers.c, numbers.h, options.c,
420 ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c,
421 procprop.h, procs.c, procs.h, ramap.c, ramap.h, regex-posix.c,
422 regex-posix.h, root.c, root.h, scmsigs.c, scmsigs.h, script.c,
423 script.h, simpos.c, simpos.h, smob.c, smob.h, snarf.h, socket.c,
424 srcprop.c, stackchk.c, stackchk.h, stacks.c, stime.c, stime.h,
425 strings.c, strings.h, strports.c, struct.c, struct.h, symbols.c,
426 symbols.h, tags.h, threads.c, throw.h, unif.c, variable.c,
427 vectors.c, vectors.h, version.h, vports.c, weaks.c: Update
428 copyright years.
429
f4be1689
JB
430 * script.c (scm_compile_shell_switches): Define
431 use-emacs-interface in the root module, so the repl code can see
432 it. See today's change to top-repl in ice-9/boot-9.scm.
433
434 * filesys.c (set_element, get_element): Make sure that `element'
435 is a cell before applying SCM_FPORTP to it. (Thanks to Jost
436 Boekemeier and Jorgen "forcer" Schaefer.)
437
4381998-10-18 Jim Blandy <jimb@zwingli.cygnus.com>
439
440 * chars.c (scm_charnames): In ASCII character name table, make
441 newlines print as #\newline by default, not #\nl.
442
443 * Makefile.am (libguile_la_SOURCES, BUILT_SOURCES): Put these in
444 alphabetical order. Oh thrills. But it helps me know how far
445 along in the compilation I am.
446 * Makefile.in: Regenerated.
447
05c33d09
MD
4481998-10-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
449
450 * unif.c (scm_raprin1): Changed print syntax for byte vectors from
451 #bytes(...) to #y(...), and syntax for short vectors from
452 #short(...) to #h(...). This may seem nutty, but, like the other
453 uniform vectors, byte vectors and short vectors want to have the
454 same print and read syntax (and, more basic, want to have read
455 syntax!). Changing the read syntax to use multiple characters
456 after the hash sign breaks with the conventions used in R5RS and
457 the conventions used for the other uniform vectors. It also
458 introduces complexity in the current reader, both on the C and
459 Scheme levels. (The Right solution is probably to change the
460 syntax and prototypes for uniform vectors entirely.)
461
1aab20ac
JB
4621998-10-17 Jim Blandy <jimb@savonarola.red-bean.com>
463
464 Don't use local_fgets on sockets; ftell doesn't work on sockets.
465 (Thanks to Jorgen "forcer" Schaefer.)
466 * ports.h (SCM_NOFTELL): New flag.
467 * fports.c (local_fgets): If it's set, use the generic fgets.
468 * socket.c (scm_socket): Set SCM_NOFTELL on the ports we produce.
469
97c524bd
MD
4701998-10-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
471
472 * script.c (scm_compile_shell_switches): Add handling of -q switch
473 (inhibit loading of user init file).
474 (scm_shell_usage): Add usage text for -q switch.
475 (scm_compile_shell_switches): Always load user init file first if
476 it is loaded at all.
477
70445040
JB
4781998-10-16 Jim Blandy <jimb@zwingli.cygnus.com>
479
480 * stime.c: The CPP hair to determine a value for CLKTCK is weird,
481 and is now broken under NetBSD. I can't fathom what it's trying
482 to do, so I've replaced it with something that I do understand,
483 which seems to work, and which isn't broken on NetBSD. "Progress?
484 You Decide." (Thanks to Perry Metzger.)
485
486 * regex-posix.c (scm_regexp_exec): Add a cast to remove a
487 signed/unsigned comparison.
488
6e6e2bbc
JB
4891998-10-15 Jim Blandy <jimb@zwingli.cygnus.com>
490
491 Warning fixes from Greg Harvey:
492 * unif.c (scm_array_set_x): initializer for pos
493 * throw.c (scm_ithrow): added initializer for jmpbuf (SCM_UNDEFINED)
494 * struct.c (scm_struct_ref, scm_struct_set_x): Added
495 initializers for field_type, since EGCS so desparately wants to
496 play dumb
497 * debug.h (scm_make_gloc, scm_gloc_p, scm_make_iloc, scm_memcons,
498 scm_mem_to_proc, scm_proc_to_mem, scm_debug_hang): Added prototypes
499 when GUILE_DEBUG is defined.
500 * dynwind.h (scm_wind_chain): Same.
501 * ports.h (scm_pt_size, scm_pt_member): Same.
502 * print.h (scm_current_pstate): Same.
503 * procs.h (scm_make_cclo): Same.
504
eebc12c6
JB
5051998-10-14 Jim Blandy <jimb@zwingli.cygnus.com>
506
a437d8a2
JB
507 Handle short and long long uniform arrays properly. (Thanks to
508 Clark McGrew.)
509 * ramap.c (scm_ra_matchp, scm_array_fill_int, scm_array_index_map_x,
510 raeql_1): Add cases for scm_tc7_svect (short vectors) and
511 scm_tc7_llvect (long long vectors).
512
513 Change the way libguile and boot-9.scm are timestamped, to try to
514 get rid of these spurious mismatch warnings. Now both
515 libguile/versiondat.h and ice-9/version.scm are generated directly
516 by the configuration process, rather than having version.scm
517 generated directly, and libguile/versiondat.h generated by the
518 Makefile, which is generated by configure. It seems that
519 sometimes the Makefile would change, but versiondat.h depends on
520 Makefile.in, not Makefile, so it wouldn't get rebuilt.
521 * Makefile.am (versiondat.h): Target removed; this is generated
522 directly by the configure script now.
523 (BUILT_SOURCES): Remove versiondat.h.
524 * versiondat.h.in: New file, transformed by the configure script
525 into versiondat.h.
526 * Makefile.in: Regenerated.
527
731a0a68
JB
528 * (__scm.h, alist.c, eval.c, feature.c, gsubr.c, numbers.c,
529 options.c): Rename RECKLESS -> SCM_RECKLESS, CAUTIOUS ->
530 SCM_CAUTIOUS; this way, 1) there's only one version of each flag
531 to define (we used to have both RECKLESS and SCM_RECKLESS), and 2)
532 if we want to use them in a header file some day, we can. (Thanks
533 to Michael Livshin.)
534
ae6f9e24
JB
535 * stime.c (scm_get_internal_real_time): Do the arithmetic using
536 SCM numbers, so we won't have rollover problems; the range of a
537 signed long in milliseconds is about 25 days. (Thanks to Karl
538 Hegbloom.)
539
70445040 540 Don't redefine sleep and usleep; fix this problem now.
eebc12c6
JB
541 * coop.c (sleep, usleep): Remove declarations; we don't use or
542 redefine these any more.
543 (scm_thread_usleep, scm_thread_sleep): New functions which do the
544 job of usleep and sleep in a thread-friendly way. We can use
545 these in the rest of Guile. Define versions for systems both with
546 and without iselect.
547 * threads.h (scm_thread_usleep, scm_thread_sleep): New declarations.
548 * scmsigs.c (usleep): Clean up oddities declaring usleep; since
549 we're just using it, not redefining it, we can use a K&R style
550 declaration here.
551 (sleep): Declare this, too, if the system hasn't.
552 (scm_sleep, scm_usleep): Use scm_thread_sleep and
553 scm_uthread_sleep if they're available; otherwise, just call the
554 system functions.
555 * scmconfig.h.in: Regenerated.
556
557 * coop.c (scm_thread_sleep): Make `slept' an unsigned long.
558
559 * coop.c (coop_sleephelp): Remove ANSI #ifdef hair.
560
94e3e95e
JB
5611998-10-12 Jim Blandy <jimb@zwingli.cygnus.com>
562
cb9728ed
JB
563 * threads.c: Doc fix.
564
565 The argument type of usleep varies from system to system,
566 as does the return type. We really shouldn't be redefining usleep
567 at all, but I don't have time to clean that up before the 1.3.
568 release. It's on the schedule for afterwards. (Thanks to Julian
569 Satchell.)
570 * coop.c (usleep): Use USLEEP_ARG_TYPE in prototype and
571 definition.
572 * scmsigs.c (usleep): Use USLEEP_ARG_TYPE in prototype.
573 * scmconfig.h: Regenerated.
574
94e3e95e
JB
575 * simpos.c (scm_software_type): Procedure deleted. This isn't the
576 right way to handle system variation. Autoconf's approach is the
577 way and the light.
578 * simpos.h (scm_software_type): Declaration deleted.
579
580 * script.c (scm_find_executable): Don't test if unix is #defined
581 here; first, NetBSD doesn't #define it, and second, it's the wrong
b1d6e336 582 way to go about these things. (Thanks to Perry Metzger.)
94e3e95e
JB
583 (dld_find_executable): Delete this MSDOS support code. This isn't
584 the way we want to support this; it needs to be rethunk at a
585 larger scale.
586
587 * genio.c (scm_do_read_line): Don't just politely check that the
588 line was either non-empty or EOF. Abort if it's empty and not
589 EOF.
590
5f964025
JB
5911998-10-11 Jim Blandy <jimb@zwingli.cygnus.com>
592
81aef0ba
JB
593 * scmconfig.h.in: Regenerated.
594
335df0e8
JB
595 * libguile.h: Don't omit the dynamic linking functions. (Thanks
596 to Greg Badros.)
597
5f964025
JB
598 * genio.c (scm_do_read_line): Count lines correctly when the file
599 doesn't end in a newline.
600
17f8d40c
JB
6011998-10-10 Jim Blandy <jimb@zwingli.cygnus.com>
602
216d3a1e
JB
603 * genio.c (scm_do_read_line): Maintain the line count correctly.
604 (Thanks to Harvey J. Stein and Greg Harvey.)
605
17f8d40c
JB
606 * gc.c (scm_return_first): Remove #ifdef __STDC__ garbage; Guile
607 requires ANSI now.
608
609 * numbers.c (big2str): Protect t from garbage collection until
610 we're done. (Thanks to Gary Houston.)
611
31b9e767
JB
6121998-10-09 Jim Blandy <jimb@zwingli.cygnus.com>
613
c6ff295e
JB
614 * Makefile.am (libguile_la_LDFLAGS): Increment shared library
615 version number.
616 * Makefile.in: Regenerated.
617
31b9e767
JB
618 * fports.h (scm_setbuf0, scm_setvbuf, scm_setfileno,
619 scm_evict_ports, scm_open_file, scm_stdio_to_port): Get rid of
620 SCM_P macro.
621
622 Do magic to mix reads and writes on stdio FILE-based ports.
0445f9f2 623 (Thanks to Christian Lynbech.)
31b9e767
JB
624 * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY):
625 New macros.
626 (pre_read, pre_write): New functions.
627 (local_fgetc, local_fgets, local_ffwrite, local_fputc,
628 local_fputs): Call them.
629 (local_fflush): Mark the port as ready for reading and writing.
630 (scm_stdio_to_port): Set the FPORT_READ_SAFE, FPORT_WRITE_SAFE
631 flags on new port objects. This might not be accurate --- who
632 knows what state the FILE * is in when we get it --- but it won't
633 do extraneous calls to fflush or fseek, so it's no worse than the
634 behavior before this change.
635 * ports.h: Add comment.
636
637 Centralize the creation of port objects based on stdio FILE * in
638 fports.c; don't just throw them together anywhere.
639 * fports.c (scm_stdio_to_port): Make NAME a SCM value, which is
640 what the rest of Guile wants. Don't set the revealed count;
641 that's only appropriate for stdin, stdout, stderr.
642 (scm_standard_stream_to_port): This function does set the revealed
643 count.
644 * init.c (scm_init_standard_ports): Use scm_standard_stream_to_port,
645 not scm_stdio_to_port.
646 * filesys.c (scm_open): Call scm_stdio_to_port; don't write it out.
647 * fports.c (scm_open_file): Same.
648 * posix.c (scm_pipe): Same.
649 * socket.c (scm_sock_fd_to_port): Same.
650 * ioext.c (scm_fdopen): Same.
651 (scm_freopen): Moved from here to...
652 * fports.c (scm_freopen): ... here. This is really something that
653 munges the internals of an fport, so it should go here.
654 * fports.h (scm_stdio_to_port): Adjust prototype.
655 (scm_standard_stream_to_port, scm_freopen): New protoypes.
656 * ioext.h (scm_freopen): Prototype removed.
657
658 * filesys.c (set_element, get_element): This can work on both pipe
659 and file ports, so use SCM_FPORTP to typecheck, instead of testing
660 for scm_tc16_fport.
661
662 * scmconfig.h.in: Regenerated.
663
664 Change the definition of the functions in scm_ptobfuns so that
665 they get passed the port object, not the port's stream.
666 * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'.
667 * gc.c (scm_gc_sweep): Pass the port itself to the free function.
668 * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc):
669 Pass the port itself to the scm_ptobs function.
670 * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports,
671 scm_generic_fgets): Same.
672 (putc_void_port, puts_void_port, write_void_port, flush_void_port,
673 getc_void_port, fgets_void_port, close_void_port): Just change the
674 argument names; these functions don't really do anything.
675 * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush,
676 local_fputc, local_fputs, local_ffwrite, local_pclose): Take the
677 port as an argument, and use SCM_STREAM to get the stdio FILE *.
678 Also, use prototyped definitions, and get rid of the extra
679 declarations.
680 (scm_fptob, scm_pipob): We don't need casts here any more.
681 * strports.c (prinstpt): Use prototype declarations.
682 (stputc, stwrite, stputs, stgetc): Take the port as an argument,
683 and use SCM_STREAM to get the string info. Also, use prototyped
684 definitions, and get rid of the extra declarations.
685 * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose,
686 noop0): Same.
687
688 * ports.h (scm_ptobfuns): Replace uses of SCM_P with a straight
689 prototype; it's okay (preferred, even!) to use ANSI C in Guile.
690
691 * fports.c (local_fgetc, local_fgets): Renamed from scm_fgetc and
692 scm_fgets, for consistency.
693 (scm_fptop, scm_pipob): References updated.
694
6d921cd6
JB
6951998-10-08 Jim Blandy <jimb@zwingli.cygnus.com>
696
697 Include the source location in error messages for scripts.
698 * init.c (scm_boot_guile_1): Use scm_internal_lazy_catch, so the
699 stack is still there when we catch the error.
700 * throw.c (handler_message): If we are handling an error with a
701 message, then put together the proper arguments and call
702 scm_display_error, instead of scm_display_error_message. That
703 displays source location, if it can find it.
704
13af3048
JB
7051998-10-07 Jim Blandy <jimb@zwingli.cygnus.com>
706
a8e05009
JB
707 * gc.c (scm_unprotect_object): Change this so that calls to
708 scm_protect_object and scm_unprotect_object nest properly.
709 (scm_protect_object): Doc fixes.
710
3c0a54bd
JB
711 * strings.c (scm_string_set_x): Require the argument to be a
712 writable string, not a substring or a symbol.
713 * strings.h (SCM_RWSTRINGP, SCM_NRWSTRINGP): New predicates.
74f87516
JB
714 (Thanks to John Redford and Charbel Jacquin.)
715
13af3048
JB
716 * scmconfig.h.in: Regenerated; ../acconfig.h has changed.
717
6ea669d7
JB
7181998-10-07 Jim Blandy <jimb@totoro.red-bean.com>
719
720 * eval.c (safe_setjmp): Remove this misunderstanding.
721 (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Replace with references to
722 ordinary setjmp.
723
2d0937bc
JB
7241998-10-06 Jim Blandy <jimb@zwingli.cygnus.com>
725
726 * libguile.h: Mark these as C declarations, for compilation by C++
727 compilers.
728
729 * snarf.h (SCM_PROC, SCM_PROC1): Remove very odd code in #ifdef
730 __cplusplus clause. I seriously doubt this ever worked the way
731 the author seems to have intended.
732
7331998-10-05 Jim Blandy <jimb@zwingli.cygnus.com>
734
735 Utterly needless cleanups to hopelessly messy code.
736 * ports.c: Doc fixes.
737 (scm_fflush): Moved to ...
738 * genio.c (scm_fflush): ... here, amongst all the other port
739 method invocation functions.
740 * genio.h, ports.h: The prototype moves too.
741
53314947
JB
7421998-10-04 Jim Blandy <jimb@zwingli.cygnus.com>
743
8b49142f
JB
744 * backtrace.c (display_error_body): The current frame does not
745 always have a parent frame; consider a function called directly
746 from the MAIN_FUNC passed to scm_boot_guile. (Thanks to Maciej
747 Stachowiak.)
748
53314947
JB
749 * alloca.c (alloca): Undo yesterday's changes, and simply call
750 malloc directly for storage, and abort if we don't get what we
751 want. The situation is much simpler --- just call malloc. Emacs
752 has bizarre/evil requirements (signal handlers might malloc unless
753 you set this global flag, so you have to set the flag around all
754 calls to malloc) which we are certainly not going to conform to,
755 so we can do the simple and obvious thing.
756
757 * coop.c (coop_condition_variable_wait): Make this function
758 static. It's only useful internally --- you should never just
759 wait on a condition variable.
760 * coop-defs.h (coop_condition_variable_wait): Delete prototype.
761
026065b7
JB
7621998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
763
7265de70
JB
764 * unif.c (scm_array_set_x): Accept any kind of number as an
765 element for a uniform vector of doubles. This is more consistent
766 with Scheme's view of numbers. (Thanks to Miroslav Silovic.)
767
a9fe62cb
JB
768 * alloca.c: Use scm_must_malloc to obtain storage. Hopefully this
769 works; I can't conveniently test it myself. (Thanks to Dvid
770 Tillman for the bug report.)
771
026065b7
JB
772 * init.c: Doc fixes.
773
774 * init.c (invoke_main_func): Load the startup files (boot-9.scm)
775 from here, not from scm_compile_shell_switches (which is a pretty
776 dumb place to do it).
777 (scm_load_startup_files): New function.
778 (scm_ice_9_already_loaded): Variable moved to here from script.c.
779 * script.c (scm_compile_shell_switches): Don't load the startup
780 files here.
781 (scm_ice_9_already_loaded): Variable moved.
782 * init.c (scm_load_startup_files): Prototype for new function.
783 * gh_init.c (gh_enter): Doc fix.
784
1aab20ac 7851998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
541716d1
JB
786
787 Some anti-warning changes from Greg Harvey.
788 * gh_data.c (gh_scm2doubles): Initialize m, to avoid compiler
789 warnings when it doesn't understand our NORETURN declarations in
790 error.h.
791 * posix.c (scm_mknod): Similar.
792
f9d12ce8
JB
7931998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
794
795 * posix.c (scm_getpwuid): If we can't find an entry, return our
796 own message, instead of using scm_syserror --- the getpwMUMBLE
797 functions don't set `errno' to anything interesting.
798
1aab20ac 7991998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
0553d3a2
JB
800
801 Get rid of warnings from the cooperative threading system.
802 * threads.h (scm_single_thread_p, scm_yield,
803 scm_call_with_new_thread, scm_join_thread, scm_make_mutex,
804 scm_lock_mutex, scm_unlock_mutex, scm_make_condition_variable,
805 scm_wait_condition_variable, scm_signal_condition_variable): Add
806 prototypes for these Scheme-visible functions.
807 * coop-defs.h (coop_next_runnable_thread,
808 coop_wait_for_runnable_thread_now, coop_wait_for_runnable_thread):
809 Prototypes for these here, even though they're from iselect.c.
810 (coop_condition_variable_wait, coop_join): Add prototypes.
811 * coop-threads.c (scm_threads_free_thread, scm_threads_free_mutex,
812 scm_threads_free_condvar): Make these smob functions static.
813 * coop-threads.h (coop_init): Give this a real prototype.
814 * coop.c: #include <unistd.h>, if we have it, for `usleep' and `sleep'.
815 (coop_next_runnable_thread): No need to provide prototype; it's in
816 coop-defs.h.
817
818 * scmconfig.h.in: .detarenegeR
819
820 * iselect.c, threads.c: Doc fixes.
821
235bb3fe
JB
8221998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
823
824 * Makefile.in: Regenerated with a patched automake, to get
825 dependency generation right when using EGCS.
826
827 * inet_aton.c (inet_aton): Add prototype, to remove compiler
828 warning. (Thanks to Robert Pluim.)
829
830 * inet_aton.c (inet_aton): Reassure the compiler that the
831 arguments to the <ctype.h> macros are all unsigned characters, not
832 signed characters.
833
1aab20ac 8341998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
83d1c666
JB
835
836 Getting rid of more warnings...
837 * iselect.c: Test for MISSING_BZERO_DECL, not DECLARE_BZERO; see
838 today's change to ../configure.in.
839 * scmsigs.c: Test for MISSING_USLEEP_DECL, not DECLARE_USLEEP.
840 * scmconfig.h.in: Regenertaded.de.,.__
841 * stime.c (strptime): Declare this, #ifdef MISSING_STRPTIME_DECL.
842 (scm_localtime, scm_mktime): Use a const char * to manipulate the
843 time zone name.
844
845 * readline.c: Doc fix.
846 (rl_cleanup_after_signal, rl_free_line_state): Make these static.
847 * readline.h (scm_filename_completion_function): Add prototype.
848 (scm_init_readline): Make this into a prototype.
849
850 * readline.c (scm_filename_completion_function): Use SCM_PROC to
851 declare this, instead of calling scm_make_subr manually.
852
1aab20ac 8531998-10-02 Jim Blandy <jimb@savonarola.red-bean.com>
83d1c666
JB
854
855 * readline.h (scm_init_readline): Add prototype for this.
856 (scm_init_readline): Make this a real prototype.
857
94c0b3b8
JB
8581998-09-30 Jim Blandy <jimb@zwingli.cygnus.com>
859
860 Warning fixes from Maciej Stachowiak:
861 * backtrace.h (scm_display_application, scm_backtrace): Add
862 prototypes.
863 * debug.c (scm_m_start_stack): Make this function static.
864 * fluids.h (scm_fluid_p): Add prototype.
865 * procprop.c (scm_i_procedure_arity): Make this function static.
866 * regex-posix.c (scm_regexp_error_msg): Make this function static.
867 * regex-posix.h (scm_init_regex_posix): Use prototype, not K&R decl.
868 * root.h (scm_dynamic_root): Add external prototype.
869 * scmsigs.h (scm_usleep): Add external prototype.
870 * script.h (scm_init_script): Use prototype, not K&R decl.
871 * stacks.h (scm_stack_id): Add external prototype.
872 * symbols.h (scm_sysintern0_no_module_lookup): Add external prototype.
873
dc9f6d6a
MG
8741998-09-30 Mark Galassi <rosalia@cygnus.com>
875
876 * gh.h: took out the definitions of vset and vref, since they are
877 replaced by the proper vector routines that correspond to the R4RS
878 procedures.
879
61a9ba48
JB
8801998-09-29 Jim Blandy <jimb@totoro.red-bean.com>
881
94c0b3b8 882 * snarf.h (SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): New macros;
61a9ba48
JB
883 these are analogous to SCM_VCELL and SCM_GLOBAL_VCELL but take a
884 third argument, a C expression that should result in a SCM value,
885 which is used to initialize the variable. Reimplemented
886 SCM_CONST_LONG in terms of SCM_VCELL_INIT. (Thanks to Maciej
887 Stachowiak.)
888
889 * version.h (scm_libguile_config_stamp): Add prototype.
890 (From Maciej Stachowiak.)
891
9a3c1149
JB
8921998-09-26 Jim Blandy <jimb@zwingli.cygnus.com>
893
894 * eval.c (scm_force): Assert that x is SCM_NIMP to fix segv when
895 (force 9) is tried. (Thanks to Karl M. Hegbloom.)
896
52591c80
JB
8971998-09-06 Jim Blandy <jimb@zwingli.cygnus.com>
898
6925bc4e
JB
899 * print.c (scm_iprin1): Rather than having one i, and using it in
900 several places, declare a fresh i local to each block where it is
901 used, and give it a signedness appropriate to its use in each case.
902 (scm_iprlist): Same.
903
904 * print.c (scm_iprin1): Add cast to avoid unsigned/signed
905 comparison warnings.
906
907 * print.c (ENTER_NESTED_DATA): Make i an unsigned long, to avoid
908 signed/unsigned clashes.
909
910 * posix.h (scm_tmpnam): Added prototype.
911
52591c80
JB
912 * objects.h (scm_set_object_procedure_x, scm_make_class_object,
913 scm_make_subclass_object): Add external prototypes.
914
915 * numbers.c (scm_mkbig): Add cast, and note that signed/unsigned
916 comparison is okay here.
917
918 * numbers.c (scm_istr2int): Add cast; len is known to be positive.
919
920 * numbers.c (scm_bigcomp): Clarify logic, and avoid relying on the
921 (true, but confusing) fact that -1 == ((unsigned) 0 - 1).
922
923 * numbers.c (scm_adjbig): Make nsiz an scm_sizet, to avoid mixing
924 signed/unsigned.
925
926 * load.c (swap_port): Make this function static.
927
928 * load.c (scm_search_path): Make max_path_len and max_ext_len
929 unsigned, since they're compared against string sizes.
930
931 * load.c (init_build_info): Make i unsigned.
932
933 * ioext.h (scm_read_line): Add prototype.
934
935 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
936 scm_hash_fn_remove_x): Make hash bucket index local variable k
937 unsigned. Use scm_ulong2num to pass it to SCM_ASSERT as
938 accurately as possible.
939
940 * gh_data.c (gh_set_substr): Add casts to avoid signed/unsigned
941 comparisons, and range checking to make sure those casts are
942 harmless.
2d2c87e1
JB
943
944 * stackchk.h (SCM_STACK_OVERFLOW_P): Change definition to avoid
945 signed/unsigned comparisons.
946
947 * smob.c (scm_numsmob): Make this an int, not an scm_sizet, to
948 avoid signed/unsigned comparisons.
949 * smob.h (scm_numsmob): Change extern declaration to match.
950
951 * ports.c (scm_numptob): Make this an int, not an scm_sizet, to
952 avoid signed/unsigned comparisons.
953 * ports.h (scm_numptob): Change extern declaration to match.
954 (scm_current_load_port, scm_set_port_line_x,
955 scm_set_port_column_x): New prototypes.
956
957 * gsubr.c (GSUBR_TEST): Don't #define this. Nobody's using the
958 test code, and it causes warnings.
959
960 * gh.h (gh_int2scmb, gh_uniform_vector_length,
961 gh_uniform_vector_ref): Added prototypes.
962
963 * Makefile.am (libguile_la_SOURCES): Include Scheme-level
964 debugging support unconditionally. That's backtrace.c, stack.c,
965 debug.c, and srcprop.c.
966 (EXTRA_libguile_la_SOURCES): Omit those from here.
967 * Makefile.in: Regenerated.
968
a9b70caf
MD
9691998-08-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
970
971 * options.c (scm_options): Bugfix: Allow empty list of options!
972
973 * debug.c, debug.h (scm_single_step): Removed.
974 (scm_with_traps): New procedure. This procedure could easily be
975 written in Scheme but needs to be highly optimized.
976
977 * eval.h, eval.c: New evaluator trap flag: SCM_TRAPS_P.
978
979 * eval.c (SCM_CEVAL, SCM_APPLY): Removed resetting of trap flags.
980 Check SCM_TRAPS_P before trapping.
981
6dd78771
JB
9821998-07-30 Jim Blandy <jimb@zwingli.cygnus.com>
983
984 Changes to avoid signed/unsigned comparison warnings.
985 * gc.c (scm_mtrigger, scm_heap_size): Make these unsigned longs.
986 (scm_gc_sweep): Make n and j local to the blocks they're used in,
987 so they can have appropriate types for each application. Make i
988 signed. Use initializers in some spots. I'll probably pay for
989 all this tweaking.
990 (scm_must_malloc, scm_must_realloc): Use scm_sizet for size args.
991 (scm_must_realloc): Make nm unsigned.
992 (init_heap_seg): Make new_seg_index and n_new_objects signed.
993 (scm_init_storage): Use prototype-style definition, and make the
994 argument unsigned.
995 * gc.h (scm_heap_size, scm_mtrigger, scm_must_malloc,
996 scm_must_realloc, scm_init_storage): Adjust prototype accordingly.
997
998 * filesys.c (scm_readlink): Make local vars rv and size ints, to
999 avoid signed/unsigned comparison warnings, and because the return
1000 value of readlink may be -1. Don't bother casting the third
1001 argument to readlink.
1002
1003 * filesys.c (scm_dirname, scm_basename): Move these to their own
1004 page, at the end of the file.
1005 * filesys.h (scm_dirname, scm_basename): Add prototypes for these.
1006
1007 * eval.h (scm_eval_options_interface): Add external prototype for this.
1008 * eval.c (scm_eval_options_interface): Use prototype-style def'n.
1009
1010 * eval.c (scm_lookupcar1): Make this static.
1011
1012 * dynl.h (scm_registered_modules, scm_clear_registered_modules):
1013 Make these prototype declarations, not K&R-style.
1014
1015 * chars.c (scm_tables_prehistory): Add cast, to remove signed/
1016 unsigned comparison warning.
1017
1018 * appinit.c: File removed. It had a single function in it, empty,
1019 whose reason for existence is explained in no documentation or
1020 comment. I think it's there as a default for some Tcl-style
1021 initialization, but Tcl abandoned that approach a while ago.
1022 * Makefile.am (libguile_la_SOURCES): Remove appinit.c.
1023 (BUILT_SOURCES): Remove appinit.x.
1024 * Makefile.in: Regenerated.
1025
0dcbc17a
JB
10261998-07-29 Jim Blandy <jimb@zwingli.cygnus.com>
1027
1028 * Makefile.in: Regenerated using the last public version of
1029 automake, not the hacked Cygnus version.
1030
1f5ae2fd
JB
10311998-07-28 Jim Blandy <jimb@zwingli.cygnus.com>
1032
1033 Remove Totoro kludge.
1034 * Makefile.in, scmconfig.h.in: Regenerated.
1035 * init.c, readline.c: Don't check if TOTORO is #defined.
1036
e99cbcd6
JB
10371998-07-26 Jim Blandy <jimb@zwingli.cygnus.com>
1038
1039 * Makefile.am: Adjust for new thread configuration system.
1040 (INCLUDES): Include the value of THREAD_CPPFLAGS.
1041 (guile_LDADD, check_ldadd): THREAD_LIBS_LOCAL has been renamed from
1042 THREAD_LIBS.
1043 (THREAD_LIBS): Definition deleted; automake will generate such
1044 things automatically.
1045 * Makefile.in: Regenerated.
1046
87148d9e
JB
10471998-07-23 Jim Blandy <jimb@zwingli.cygnus.com>
1048
1049 Simplify smob and port marking; set the mark bit in the generic
1050 marking code, and make marker routines only responsible for
1051 turning up outgoing pointers.
1052 * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here,
1053 before calling the marking function. Don't call the marking
1054 function if it's zero.
1055 * markers.c (scm_mark0): Just return #f. This function isn't
1056 necessary at all now, but it's harmless to call it. We'll leave
1057 it in so other folks' code doesn't croak at link time.
1058 (scm_markcdr): Don't call SCM_SETGC8MARK.
1059 * async.c (mark_async): Don't call SCM_SETGC8MARK.
1060 * dynl.c (mark_dynl_obj): Same.
1061 * root.c (mark_root): Same.
1062 * srcprop.c (marksrcprops): Same.
1063 * unif.c (markra): Same.
1064 * variable.c (scm_markvar): Same.
1065 * ports.c (scm_markstream): Same.
1066 (void_port_ptob): Specify zero for our marking function.
1067 * debug.c (debugobjsmob): Same.
1068 * dynwind.c (guardsmob): Same.
1069 * filesys.c (dir_smob): Same.
1070 * fluids.c (fluid_smob): Same.
1071 * fports.c (scm_fptob, scm_pipob): Same.
1072 * mallocs.c (mallocsmob): Same.
1073 * regex-posix.c (regex_t_smob): Same.
1074 * smob.c (freecell, flob, bigob): Same.
1075 * threads.c (thread_smob, mutex_smob, condvar_smob): Same.
1076 * throw.c (jbsmob, lazy_catch_funs): Same.
1077
3910272e
MD
10781998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1079
1080 * eval.c (scm_copy_tree): Reverted last change: `eval' uses
1081 scm_copy_tree on code in order not to let memoized code to leak
1082 out. Thus, scm_copy_tree needs to copy vectors as well since
1083 quasiquote can introduce evaluated code also inside vector
1084 constants.
1085
240ed1e5
MD
10861998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1087
1088 * eval.c (scm_copy_tree): Removed ability to copy vectors.
1089
1090 * gh_data.c, gh.h (gh_ints2scm, gh_longs2ivect,
1091 gh_ulongs2uvect): New procedures. (Complements gh_doubles2scm and
1092 gh_doubles2dvect.)
1093
1094 * unif.c: Say that ivect and uvect are of type signed and unsigned
1095 long instead of int in commentary so that it correctly describes
1096 the implementation.
1097
5ef81022
MD
10981998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1099
1100 * stime.c: Removed declaration of strptime. (It should be
1101 declared by the system headers. If it turns out that some systems
1102 don't, we'll handle that then.) (Thanks to Greg Troxel.)
1103
1104 * stime.h: Renamed TIMEH --> STIMEH
1105
1106 * backtrace.c (scm_display_error, scm_display_backtrace): In order
1107 to increase portability, don't use structure assignment.
1108 (Thanks to Nicolas Neuss.)
1109
1110 * iselect.c: Use LONG_MAX instead of ULONG_MAX for increased
1111 portability.
1112 (finalize_fd_sets): Added empty statement after last case label.
1113 (Thanks to Nicolas Neuss.)
1114
1115 * gc.c (scm_igc): Changed //-comment into /*-comment. (Thanks to
1116 Nicolas Neuss.)
1117
212d45b8
MD
1118Sat Jul 11 22:08:21 1998 Mikael Djurfeldt <mdj@totoro.red-bean.com>
1119
1120 * init.c, readline.c: OK, I won't have these readline.x bug
1121 reports anymore. We've had them since April. The current reason
1122 is a completely unintelligible failure of totoro.red-bean.com to
1123 do the test for rl_getc_function in libreadline correctly. This
1124 kludge overrides the test if we're on totoro so that the snapshot
1125 generation process can work.
1126
1127 * readline.c: Define a strdup replacement if not existent on system.
1128
43eeb5a6
MD
11291998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1130
1131 * vectors.c, vectors.h (scm_make_vector): Removed third argument.
1132 This change makes scm_make_vector R5RS compatible. We cannot keep
1133 the third argument since people want to be able to deduce the form
1134 of the C function call only by looking at R5RS. (At the same time
1135 we have removed some unnecessary complexity!)
1136
1137 * eval.c, filesys.c, fluids.c, gc.c, gh_data.c, init.c, kw.c,
1138 net_db.c, posix.c, print.c, regex-posix.c, scmsigs.c, socket.c,
1139 stime.c, symbols.c, unif.c, vectors.c, weaks.c: Removed third
1140 argument in call to scm_make_vector.
1141
9d0b279f
MD
11421998-07-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1143
1144 * numbers.h (SCM_NUM2DBL): New macro. Complements SCM_NUMBERP.
1145 This macro is useful in applications.
1146
dbb25e7f
MD
11471998-06-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1148
1149 * load.c (scm_internal_parse_path): Renamed from scm_parse_path.
1150 (scm_parse_path, scm_search_path): New Scheme level procedures.
1151
1152 * load.h (scm_internal_parse_path, scm_parse_path,
1153 scm_search_path): Declared.
1154
74d6650d
MD
11551998-06-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1156
1157 * filesys.c (dirname, basename): New procedures.
1158
1159 * init.c (scm_boot_guile_1): Removed condition around
1160 scm_init_options.
1161
1162 * dynwind.c: #include "genio.h"; #include "smob.h"; Implemented a
1163 new data type (guards) for representation of C level guards and
1164 data on the wind chain.
1165 (scm_internal_dynamic_wind): New function.
1166
1167 * dynwind.h: Declare scm_internal_dynamic_wind.
1168
1169 * root.h (scm_root_state): Added scm_cur_loadp.
1170
1171 * root.c (mark_root): Added comment about cur_loadp.
1172
1173 * load.c: #include "dynwind.h";
1174 (scm_primitive_load): Use scm_inner_dynamic_wind to update
1175 scm_cur_loadp.
1176
1177 * init.c (scm_init_standard_ports): Initialize scm_def_loadp.
1178
1179 * ports.c (current-load-port): New procedure.
1180
391aebfc
MD
11811998-06-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1182
10ccfad7
MD
1183 * ioext.c (scm_isatty_p): Accept any kind of data as argument. If
1184 not a tty, return #f.
1185
391aebfc
MD
1186 * regex-posix.c (scm_regexp_exec): Free malloced memory. (Thanks
1187 to Julian Satchell and Roland Kaufmann.)
1188
1189 * gh.h (gh_memv, gh_member): Fixed typos in macro definitions.
1190 (gh_write): Added declaration. (Thanks to Eiichi Takamori.)
1191
6dabf6a9
MD
11921998-06-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1193
1194 * debug.h, debug.c (scm_start_stack): New function. Implements
1195 the guts of old scm_m_start_stack.
1196
1197 * debug.c (scm_m_start_stack): Use scm_start_stack.
1198
1199 * init.c (scm_start_stack, scm_restart_stack): Renamed to
1200 start_stack and restart_stack. (These have static scope.)
1201
daca2816
MD
12021998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1203
1204 * readline.c (rl_cleanup_after_signals, rl_free_line_state): New
1205 readline functions to come in release 2.3. (Thanks to Chet
1206 Ramey.)
1207 (handle_errors): Use the above functions.
1208
be0ea988
MD
12091998-05-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1210
1211 * readline.c: Improvements for readline support: Handle errors
1212 better; Implement before-read-hook.
1213
12141998-05-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1215
1216 * init.c (scm_boot_guile_1), readline.c: Test for
1217 HAVE_RL_GETC_FUNCTION instead of HAVE_LIBREADLINE. (Need to
1218 assure that we have version >= 2.1.)
1219
e158e4f4
MD
12201998-05-11 Mikael Djurfeldt <mdj@kenneth>
1221
83d1c666
JB
1222 * readline.c (scm_readline): Defer interrupts while we're calling
1223 readline.
1224
e158e4f4
MD
1225 * readline.c (scm_add_history): Bugfix: Do strdup before giving
1226 away the string to add_history.
56600c45
MD
1227 (completion_function): Do completion for readline. (Thanks to
1228 Andrew Archibald.)
e158e4f4
MD
1229 (scm_filename_completion_function): New procedure: Filename
1230 completer.
1231 (current_input_getc): New function. Use this one instead of
1232 standard getc from readline.
1233
1234 * throw.c, throw.h (scm_handle_by_throw): New function: This
1235 handler throws errors to next handler on the dynwind chain.
1236
12371998-05-09 Mikael Djurfeldt <mdj@kenneth>
1238
1239 * scmsigs.c (scm_usleep): Bugfix: Don't define j if it isn't
1240 used.
1241
8bb51def
MD
12421998-05-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1243
1244 * procprop.c (scm_i_procedure_arity): New function. Returns arity
1245 of procedure.
1246 (scm_procedure_properties): Modified to return arity together with
1247 other properties.
1248 (scm_procedure_property): Added the read-only property `arity'.
1249 (scm_set_procedure_property_x): It is an error to set the `arity'
1250 property.
1251
1252 * gsubr.h, gsubr.c: Moved macros from gsubr.c to gsubr.h and added
1253 prefix SCM_; Made f_gsubr_apply global and added prefix scm_.
1254
1255 * procprop.h (scm_sym_arity): New symbol.
1256
1257 * objects.c (scm_set_object_procedure_x): New procedure: Use this
1258 to set the dispatch procedure of an operator or entity object.
1259
1260 * objects.h (SCM_METACLASS_OPERATOR_LAYOUT, SCM_ENTITY_LAYOUT):
1261 Made procedure slots read-only.
1262
1263 * eval.c (SCM_CEVAL): Moved scm_tc7_contin case above
1264 scm_tcs_cons_gloc case in zero args switch; Fixed args
1265 construction for operators in scm_tcs_cons_gloc case in two args
1266 switch.
1267
680ed4a8
MD
12681998-05-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1269
104d4533
MD
1270 * fluids.c: Removed use of assert.h (in order to avoid
1271 __eprintf).
1272
1273 * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic.
1274
1275 * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0.
1276
680ed4a8
MD
1277 * eval.c (SCM_CEVAL): Do more thorough argument checking. This
1278 change makes the evaluator safer at the cost of evaluation speed.
1279 It handles the case when the user has added a non-immediate
1280 improper end of the application form, e.g., `(+ 0 . x)'.
1281 (Earlier only cases like `(+ 0 . 0)' were handled.) I've tried to
1282 minimize the extra cost as much as possible. The new code is
1283 enclosed in #ifdef CAUTIOUS regions. NOTE: This also fixes the
1284 problem with structs planted directly in the code (e.g. by a
1285 macro). This no longer causes segmentation fault. (Thanks to
1286 Eric Hanchrow.)
1287
1288 * eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra
1289 arg `proc' in order to be able to throw errors; New argument
1290 checking code.
1291
1292 * Removed extra #include "debug.h"
1293
0935d604
MD
12941998-04-25 Mikael Djurfeldt <mdj@kenneth>
1295
1296 * scmsigs.c: Declare usleep as returning void on some systems.
2c36126d
MD
1297 (scm_usleep): Return SCM_INUM0 on those systems. (Thanks to Julian
1298 Satchell.)
0935d604
MD
1299
1300 * coop.c (usleep): Return void on some systems.
1301
f1a5fa3c
MD
13021998-04-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1303
1304 * Makefile.am (libguile_la_LDFLAGS): Removed redundant -rpath.
1305
1306 * coop.c: Changed return type of usleep to int.
1307
1308 * scmsigs.c (scm_usleep): New procedure; Declare usleep if it
1309 isn't found in the OS.
1310
1311 * iselect.h: #define scm_internal_select select if GUILE_ISELECT
1312 isn't enabled. (Thought that I had made this change ages ago...)
1313
1314 * iselect.c: Declare bzero if not defined by OS.
1315
26c41b99
MD
13161998-04-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1317
c3e09ef9
MD
1318 * dynl.c (scm_must_free_argv): Fixed memory leak due to negated
1319 condition. (Thanks to John Tobey.)
1320
1321 * continuations.c (scm_make_cont), debug.c (scm_make_memoized,
1322 scm_make_debugobj), eval.c (scm_makprom): SCM_DEFER/ALLOW_INTS -->
1323 A section.
1324
1325 * __scm.h: Start the long-term project of moving to POSIX threads.
1326 Phase 1: Classification of all critical sections.
1327 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): New macros: Delimiters
1328 for A sections. (See comments in __scm.h for details.)
1329
26c41b99
MD
1330 * dynl.c: Only check that HAVE_DLOPEN is defined before loading
1331 dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD.
1332
28795b1f
MD
13331998-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1334
1335 * Makefile.am (BUILT_SOURCES): Added cpp_err_symbols.c,
1336 cpp_sig_symbols.c, libpath.h and versiondat.h to BUILT_SOURCES
1337 (libpath.h, versiondat.h): Replaced dependency on Makefile with
1338 dependencies on $(srcdir)/Makefile.in
1339 $(top_builddir)/config.status in order to avoid circularity.
1340
1341 * script.c (scm_compile_shell_switches): Bugfix: Don't discount i
1342 from argc if argc was 0 initially.
1343
1344 * Makefile.am (Makefile.am): Replaced THREAD_LIBS --> GUILE_LIBS
1345 in generation of libpath.h.
1346
f2e5c92c
MD
13471998-04-15 Mikael Djurfeldt <mdj@nada.kth.se>
1348
1349 * Makefile.am (libguile_la_LDFLAGS): Bumped version number of
1350 libguile from 2 to 3.
1351
a3365d47
MD
13521998-04-14 Mikael Djurfeldt <mdj@nada.kth.se>
1353
1354 * Makefile.am: Added .x-dependencies to variable BUILT_SOURCES.
1355
fc1d67c4
MD
13561998-04-13 Mikael Djurfeldt <mdj@kenneth>
1357
1358 * ports.c (scm_port_line, scm_set_port_line_x, scm_port_column,
1359 scm_set_port_column_x, scm_port_filename,
1360 scm_set_port_filename_x): Removed optional arguments. Added
1361 proper argument checking.
1362
1363 * eval.c, eval.h, coop.c (scm_eval_stack, SCM_EVAL_STACK): Measure
1364 stack size in machine words.
1365
1366 * unif.c (scm_uniform_vector_ref, scm_cvref, scm_array_set_x,
1367 rapr1): Use SCM_UCHARS instead of SCM_CHARS for strings. (Thanks
1368