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