* configure.in: check for hstrerror.
[bpt/guile.git] / libguile / ChangeLog
1 1999-11-18 Gary Houston <ghouston@freewire.co.uk>
2
3 * socket.c (scm_htons, scm_ntohs, scm_htonl, scm_ntohl): new
4 functions for network data conversion.
5
6 * numbers.c (scm_num2long, scm_num2longlong):
7 throw out-of-range instead of wrong-type-arg if appropriate.
8 (scm_iint2str): handle -2^31 correctly.
9 (scm_num2long): handle -2^31 bignum correctly.
10 (scm_num2long_long): rewrite the bigdig case: basically copied
11 from scm_num2long.
12 numbers.h: (SCM_BITSPERLONGLONG): deleted.
13
14 * unif.c (rapr1): use sprintf instead of intprint for unsigned
15 longs: intprint can't cope with large values.
16
17 * numbers.c (scm_num2ulong): check more consistently that the
18 input is not negative. if it is, throw out-of-range instead of
19 wrong-type-arg.
20
21 * ramap.c (scm_array_fill_int): don't limit fill to INUM for
22 uvect, ivect or llvect.
23 Check that fill doesn't overflow short uniform array.
24
25 * __scm.h: add another long to the definition of long_long and
26 ulong_long.
27
28 * unif.c (scm_raprin1): use 'l' instead of "long_long" in the
29 print representation of llvect. read can't handle more than
30 one character.
31 (scm_dimensions_to_uniform_array): make "fill" an optional argument
32 instead of a rest argument.
33
34 * tags.h (scm_tc7_llvect): wasn't defined anywhere, so use the free
35 tag 29 for now.
36
37 * __scm.h: don't mention LONGLONGS.
38
39 * unif.c, numbers.c, eq.c, gc.c, print.c, eval.c, ramap.c:
40 replace LONGLONGS with HAVE_LONG_LONGS as set by configure.
41
42 1999-11-17 Gary Houston <ghouston@freewire.co.uk>
43
44 * net_db.c (scm_inet_aton): throw errors using the misc-error key
45 instead of system-error. inet_aton doesn't set errno.
46 system-error isn't right in gethost either, since it's throwing
47 the value of h_errno instead of errno. so:
48 (scm_host_not_found_key, scm_try_again_key,
49 scm_no_recovery_key, scm_no_data_key): new error keys.
50 (scm_resolv_error): new procedure, use the new keys.
51 (scm_gethost): call scm_resolv_error not scm_syserror_msg.
52
53 1999-11-16 Gary Houston <ghouston@freewire.co.uk>
54
55 * error.c: (various): use scm_cons instead of scm_listify
56 to build short lists.
57
58 1999-11-03 Gary Houston <ghouston@freewire.co.uk>
59
60 * socket.c (scm_fill_sockaddr): zero the address structure before
61 use, in case it has a sin_len field and the OS doesn't like random
62 values (thanks to Bertrand Petit).
63
64 1999-10-26 Mark Galassi <rosalia@lanl.gov>
65
66 * gh.h, gh_data.c (gh_symbol2scm): changed gh_symbol2scm() to take
67 a const char * argument, upon suggestion from Lynn Winebarger.
68
69 1999-10-26 Gary Houston <ghouston@freewire.co.uk>
70
71 * strports.c (st_end_input): avoid dubious pointer arithmetic.
72
73 1999-10-24 Gary Houston <ghouston@freewire.co.uk>
74
75 * Move the responsibility for resetting port buffers from the
76 caller of the ptob seek procedure to the implementation. This
77 gives more control in general to the ptob seek: in particular the
78 change of 1999-10-20 can be made to work without breaking seek on
79 string ports. There's a comment in NEWS about upgrading port
80 types.
81
82 * ports.c (scm_seek): don't reset the port buffers here.
83
84 * fports.c (fport_seek): reset the buffers, except for the
85 0 SEEK_CUR case.
86
87 * strports.c (st_end_input): (bug fix): decrement pt->read_pos by
88 offset. check that it's not less than read_buf.
89 (st_seek): reset the buffers first, unless it's the 0 SEEK_CUR
90 case and currently reading.
91
92 1999-10-20 Gary Houston <ghouston@freewire.co.uk>
93
94 * ports.c (scm_seek): Add a special case for SEEK_CUR, offset 0,
95 so that unread chars are not needlessly discarded. (thanks to
96 Roland Orre).
97
98 1999-10-18 Gary Houston <ghouston@freewire.co.uk>
99
100 * fports.c (scm_fdes_to_port): always set rw_random if the fdes is
101 random access. rw_active needs to be maintained even for single
102 directional ports, otherwise scm_seek and probably other things are
103 broken. (thanks to Roland Orre).
104
105 * strports.c (scm_mkstrport): set rw_random to 1 unconditionally.
106
107 * ports.c (scm_add_to_port_table): initialise rw_random to 0.
108
109 * ports.h (scm_port): change the comments on rw_random and rw_active.
110
111 1999-10-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
112
113 * ioext.c: Added #include "feature.h".
114
115 These changes turns `delay' into a memoizing macro. This is
116 because it may be expanded before evaluation if it occurs at the
117 beginning of a body. (Thanks to Lauri Alanko.)
118
119 * eval.c, eval.h (scm_sym_delay): New global symbol.
120
121 * tags.h (SCM_IM_DELAY): New immediate symbol.
122
123 * print.c (scm_isymnames): Printed representation.
124
125 * eval.c (unmemocopy, SCM_CEVAL): Handle SCM_IM_DELAY.
126 (scm_m_delay): Turned into a memoizing macro.
127
128 * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version.
129
130 1999-10-11 Jim Blandy <jimb@savonarola.red-bean.com>
131
132 * gh_data.c (gh_ints2scm, gh_doubles2scm): Make sure elements are
133 protected from GC while building the vector. (Thanks to Bernard
134 Urban and Greg Harvey.)
135
136 1999-10-08 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
137
138 * throw.c (handler_message): Display backtrace if backtraces
139 enabled.
140
141 1999-10-05 Jim Blandy <jimb@savonarola.red-bean.com>
142
143 * Makefile.in, scmconfig.h.in: Deleted from CVS repository. Run
144 the autogen.sh script to create generated files like these.
145
146 * numbers.c (scm_string_to_number): Signal an error if radix is
147 less than two. (Thanks to Jorgen Schaefer.)
148
149 * print.c (scm_write, scm_display, scm_newline, scm_write_char):
150 Don't assume that the current output port is valid. Somebody
151 might close it. (Thanks to Bernard Urban.)
152
153 1999-10-02 Jim Blandy <jimb@zwingli.cygnus.com>
154
155 * scmconfig.h.in: Regenerated.
156
157 * Makefile.am (EXTRA_libguile_la_SOURCES): fix typo.
158
159 Mon Sep 27 17:15:14 1999 Greg J. Badros <gjb@cs.washington.edu>
160
161 * __scm.h: Fix a bunch of macros that were missing do-while(0)
162 sandwiches.
163
164 * debug.c, eval.c: Fix buggy uses of SCM_ALLOW_INTS (missing
165 semicolon) exposed by the above change.
166
167 1999-09-27 Greg J. Badros <gjb@cs.washington.edu>
168
169 * stacks.c: Avoid compiler warning re: unitialized var.
170
171 * scmconfig.h.in: Added DEBUG_FREELIST
172
173 * pairs.h: Fix macro that was not do-while(0) sandwiched.
174
175 * gc.h, gc.c: Added scm_gc_set_debug_check_freelist_x,
176 scm_map_free_list
177
178 1999-09-23 Gary Houston <ghouston@freewire.co.uk>
179
180 * ioext.c (scm_init_ioext): enable "i/o-extensions" feature here
181 instead of in scm_init_filesys.
182
183 * init.c (scm_boot_guile_1): don't call scm_init_posix or
184 scm_init_filesys unless HAVE_POSIX is defined.
185 don't call scm_init_netdb or scm_init_socket unless
186 HAVE_NETWORKING is defined.
187
188 * Makefile.am (EXTRA_libguile_la_SOURCES): filesys.c, posix.c,
189 net_db.c, socket.c: moved here from libguile_la_SOURCES.
190
191 1999-09-25 Jim Blandy <jimb@savonarola.red-bean.com>
192
193 * root.c (scm_make_root): Initialize all the fields of the new
194 root. GC could happen any time, you know. (Thanks to Greg
195 Harvey.)
196
197 * numbers.c (scm_number_to_string): Signal an error if radix is
198 less than two. (Thanks to Jorgen Schaefer.)
199
200 * Makefile.am (EXTRA_libguile_la_SOURCES): Add memmove.c here,
201 so automake will actually generate rules for it.
202 * Makefile.in: Regenerated.
203
204 1999-09-21 Jim Blandy <jimb@savonarola.red-bean.com>
205
206 * backtrace.c: #include "_scm.h" before testing whether
207 HAVE_UNISTD_H is #defined.
208
209 1999-09-20 Jim Blandy <jimb@savonarola.red-bean.com>
210
211 * read.c (scm_read): Don't assume that scm_cur_inp is always open.
212 * ports.c (scm_read_char): Same.
213 * ioext.c (scm_read_line): Same.
214 (Thanks to Bernard Urban.)
215
216 1999-09-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
217
218 * vectors.c (scm_vector_move_right_x): Bugfix: Remove side effect
219 in SCM_ASSERT macro.
220 numbers.c: Removed #ifndef SCM_RECKLESS at places where type
221 checking may invoke a generic. (Thanks to Michael Livshin.)
222
223 * __scm.h (SCM_WTA_DISPATCH_0, SCM_GASSERT0): New macros.
224
225 * numbers.c (scm_max, scm_min, scm_sum, scm_difference,
226 scm_product, scm_divide): Bugfix: Don't pass SCM_UNDEFINED to the
227 generic function if the asubr is called with only one arg.
228
229 1999-09-20 Gary Houston <ghouston@freewire.co.uk>
230
231 * scmsigs.c (scm_sigaction): add SA_RESTART to flags only if
232 HAVE_RESTARTABLE_SYSCALLS.
233 (scm_init_scmsigs): use siginterrupt if it's available. not
234 everyone who has restartable syscalls has SA_RESTART it seems.
235
236 (scm_sigaction): use scm_num2long/scm_long2num when converting
237 SIG_DFL/SIG_IGN, in case it doesn't fit in an INUM. use
238 scm_integer_p to test the type.
239
240 1999-09-18 Gary Houston <ghouston@freewire.co.uk>
241
242 * _scm.h, scmsigs.c: replace HAVE_RESTARTS with
243 HAVE_RESTARTABLE_SYSCALLS.
244
245 * strports.c (scm_strport_to_string): create the string from
246 pt->read_buf instead of an expression that evaluates to the
247 same thing.
248
249 * gdbint.c (gdb_print): don't just use SCM_CHARS to get a C string
250 from the port: the port's buffer may not be NUL terminated.
251
252 1999-09-16 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
253
254 * Makefile.am (.c.x): Added missing semicolon after `false'.
255
256 1999-09-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
257
258 * print.c (scm_iprin1): Turn `write' and `display' into
259 primitive generics and use their associated generic functions in
260 scm_iprin1 for GOOPS objects.
261
262 * backtrace.c: #include <unistd.h> if present.
263
264 1999-09-14 Jim Blandy <jimb@savonarola.red-bean.com>
265
266 * Makefile.am (.c.x): Don't create a subshell just to delete the
267 .x file and return false.
268 * Makefile.in: Regenerated.
269
270 1999-09-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
271
272 * feature.c (scm_create_hook): New function. Replaces
273 scm_make_named_hook which is now deprecated.
274 (scm_make_hook_with_name): New primitive.
275 (print_hook): Hooks now print in a fancy way.
276
277 1999-09-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
278
279 * __scm.h, backtrace.c, backtrace.h, debug.c, debug.h, dynl-dld.c,
280 dynwind.c, dynwind.h, eval.h, evalext.c, evalext.h, feature.c,
281 feature.h, hashtab.c, hashtab.h, objects.c, objects.h, print.c,
282 procs.c, procs.h, smob.c, smob.h, srcprop.c, strorder.c, struct.c,
283 struct.h: Updated copyright notices.
284
285 * srcprop.c (scm_source_property): Bugfix: Use SCM_NECONSP instead
286 of SCM_NCONSP. (Thanks to Greg Badros.)
287
288 * gsubr.c (scm_make_gsubr): Use scm_make_subr_opt for creation of
289 the self subr.
290
291 * eval.c, debug.h (SCM_BACKTRACE_WIDTH): New debug option: width.
292
293 * backtrace.c: Keep backtraces within specified width by
294 adaptively adjusting fancy printing parameters and cut output if
295 necessary.
296 (scm_display_application): Check args.
297
298 1999-09-11 Jim Blandy <jimb@savonarola.red-bean.com>
299
300 Change the name of the objects returned by OPENDIR from
301 "directory" to "directory stream". A predicate named "directory?"
302 would be confusing.
303 * filesys.c (scm_directory_stream_p): Renamed from scm_directory_p.
304 At the Scheme level, "directory?" -> "directory-stream?".
305 (scm_dir_print): Use the phrase "directory stream" in printed form.
306 * filesys.h (scm_directory_stream_p): Prototype renamed
307 accordingly.
308
309 * Makefile.am (CLEANFILES): Remove versiondat.h; that should only
310 be removed by `make distclean', since it's generated by configure.
311 * Makefile.in: Regenerated.
312 (Thanks to Robert Bihlmeyer.)
313
314 * strop.c (scm_substring_move_x): Signal an error if start1
315 doesn't come before end1. (Thanks to Karoly Lorentey).
316
317 * numbers.c (scm_istr2flo): Don't call SCM_INEXP without first
318 calling SCM_NIMP. (Thanks to Karoly Lorentey).
319
320 * version.c (scm_libguile_config_stamp): Deleted. See
321 corresponding change to ../ice-9/boot-9.scm.
322 * versiondat.h.in: Remove definition for GUILE_STAMP.
323 * version.h: Delete prototype.
324 * Makefile.in: Regenerated.
325
326 1999-09-11 Gary Houston <ghouston@easynet.co.uk>
327
328 * filesys.c (scm_directory_p): new procedure "directory?" Returns
329 a boolean indicating whether its argument is a directory
330 port as returned by opendir (thanks to Dirk Herrmann for the
331 suggestion.)
332
333 1999-09-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
334
335 * backtrace.c (display_frame_expr): Don't print a newline.
336 (display_frame): Print the newline here instead.
337 (display_backtrace_body): Don't print "Backtrace:".
338 (scm_backtrace): Print "Backtrace:" here instead.
339
340 1999-09-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
341
342 * procs.c (scm_setter): Signal WTA if handed an entity or operator
343 lacking a setter.
344
345 * feature.c, feature.h: (scm_hook_p, scm_hook_empty_p): New
346 primitives. (Thanks to Greg Badros);
347 (scm_hook_to_list): New primitive; Hooks are now smobs.
348
349 1999-09-08 Gary Houston <ghouston@easynet.co.uk>
350
351 * stime.c (bdtime2c): rewrite the ASSERTs. Accept a value
352 of #f for the 10th vector element to avoid an exception
353 seen by Bernard Urban.
354 (scm_mktime): unneeded ASSERT removed.
355
356 1999-09-07 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
357
358 * eval.c (scm_map, scm_for_each): Converted to dispatch on generic
359 if args don't match.
360
361 * __scm.h (SCM_WTA_DISPATCH_n, SCM_GASSERTn): New macros.
362
363 1999-09-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
364
365 * numbers.c: Converted comparison operations to dispatch on
366 generic if args don't match.
367
368 * Makefile.am (ETAGS_ARGS): Added support for GPROC and GPROC1.
369
370 1999-09-06 James Blandy <jimb@mule.m17n.org>
371
372 * guile-snarf.c: Deleted. Snarfing should respect CPP
373 conditionals, so it needs to actually run CPP. Bleah.
374
375 1999-09-05 James Blandy <jimb@mule.m17n.org>
376
377 Handle errors properly in guile-snarf. (Thanks to Han-Wen Nienhuys.)
378 * guile-snarf.in: Be sure to exit with an error if CPP does.
379 * Makefile.am (.c.x): Delete the .x file and exit with an error
380 status if guile-snarf exits with an error status.
381 * Makefile.in: Regenerated.
382
383 * snarf.h (SCM_GLOBAL_KEYWORD): Call scm_c_make_keyword, not
384 scm_makekey, which doesn't exist any more. Guess nobody's using
385 this.
386
387 * guile-snarf.c: New implementation of guile-snarf, meant to be
388 more robust than the shell script. I think it's complete, but I
389 haven't tested it at all, and I haven't changed the build process
390 to actually use it. We should compare its output against that of
391 the existing shell script, for all source files.
392
393 * guile-snarf.c (parse_args): Abort if we haven't handled some
394 character type.
395
396 1999-09-03 James Blandy <jimb@mule.m17n.org>
397
398 * load.c (scm_search_path): If the filename has any extension at
399 all, ignore the entire list of extensions. Also, don't check whether
400 the file is accessible. If the file exists, accessible or not, we
401 should return it. Inaccessible files should cause an error later.
402 (Thanks to Keisuke Nishida for the suggestions.)
403
404 1999-09-02 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
405
406 * gc.c (cleanup, scm_init_storage): Use on_exit if present and
407 atexit not available. (sunos4.1.4 needs it.)
408
409 1999-09-01 James Blandy <jimb@mule.m17n.org>
410
411 I take it all back --- bcopy does handle overlapping source and
412 destination areas correctly. At least on every system I could
413 find. But it is better to use AC_REPLACE_FUNCS than to introduce
414 new CPP conditionals.
415 * memmove.c: New file, implementing memmove in terms of bcopy.
416 * scmconfig.h.in: Regenerated.
417
418 Allocators should use the `void *' type for generic pointers.
419 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Change
420 argument and return types.
421 * gc.h: Corresponding changes to prototypes.
422 (Thanks to Forcer.)
423
424 1999-08-31 James Blandy <jimb@mule.m17n.org>
425
426 * numbers.c (scm_init_numbers): Claim to support the `complex'
427 feature, as expected by (ice-9 format). (Thanks to Ceri Storey.)
428
429 * Makefile.am (check-local): Set GUILE_LOAD_PATH so the tests can
430 find (ice-9 boot-9) when Guile was compiled in a separate
431 directory from the source. (Thanks to Rodney Brown.)
432 * Makefile.in: Regenerated.
433
434 * procs.c (scm_make_subr_opt): Fix typo. Remember to multiply
435 table lengths by the size of a single element when growing the
436 table. (Thanks to Bill Schottstaedt.)
437
438 1999-08-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
439
440 * eval.c (SCM_CEVAL): Duplicated the method dispatch code at the
441 SCM_IM_DISPATCH form instead of calling scm_mcache_lookup_cmethod
442 since that cuts down the time for type dispatch by 50%.
443
444 1999-08-30 James Blandy <jimb@mule.m17n.org>
445
446 * gh_data.c (gh_set_substr): Revert change of 1999-08-29; bcopy is
447 not a correct substitute for memmove, because it doesn't handle
448 overlapping source and destination areas on many platforms.
449 Overlaps are the primary reason to use memmove in the first place.
450 * ports.c (scm_ungetc): Same.
451 * strop.c (scm_substring_move_x): Same.
452
453 1999-08-30 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
454
455 * gc.c (scm_init_storage): Skip registration of cleanup on systems
456 which lack atexit. (Is it important that cleanup is made
457 properly? Maybe we should replace all `exit' with `scm_exit' and
458 call cleanup there?)
459
460 * struct.c, struct.h (scm_struct_free_0, scm_struct_free_light,
461 scm_struct_free_standard, scm_struct_free_entity): Declared to
462 return scm_sizet instead of size_t.
463
464 * gdbint.c, strports.c: #include <unistd.h>. (SEEK_SET is defined
465 there on sunos4.1.4.)
466
467 1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
468
469 * numbers.c (scm_lcm): Bugfix: BIGDIG --> SCM_BIGDIG;
470 Account for the case when second argument is unbound.
471
472 * strorder.c (scm_string_less_p, scm_string_ci_less_p): Bugfix.
473 (Thanks to Karoly Lorentey.)
474
475 * gh_data.c, ports.c, strop.c: Alternatively use bcopy if memmove
476 isn't present. (Thanks to Suzuki Toshiya.)
477
478 * ports.c: Use ANSI C prototypes in definitions. (Thanks to
479 Bernard Urban.)
480
481 * filesys.c (scm_stat2scm): Conditionally use S_ISLNK. (Thanks to
482 Bernard Urban.)
483
484 * dynl-dl.c (RTLD_GLOBAL): Define if non-existent. (Thanks to
485 Bernard Urban and Ian Grant.)
486
487 * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version
488 again. (1.3.4 will be binary incompatible with 1.3.2 because of a
489 change in the representation of entities and operators.)
490
491 1999-08-29 Gary Houston <ghouston@easynet.co.uk>
492
493 * ports.c (scm_ungetc): bugfix: if putback_buf is NULL
494 don't allocate zero bytes (thanks to Bill Schottstaedt).
495
496 1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
497
498 * procs.c (scm_setter): Converted to use generic dispatch.
499
500 * eval.c, eval.h: Bugfix: scm_sym_apply was not initialized
501 correctly.
502
503 * load.c (scm_search_path): Don't try extensions which already are
504 present at the end of the filename.
505 (scm_init_load): Check .scm first. (Thanks to Keisuke Nishida.)
506
507 * stacks.c (scm_sym_apply): Removed. (Thanks to Ken Raeburn.)
508
509 Cleanup and simplification of generic method dispatch.
510 Also, the quadruple representation of entity and operator
511 procedures has been replaced with single.
512
513 * tags.h (SCM_IM_HASH_DISPATCH): Removed.
514
515 * print.c (scm_isymnames): Removed #@hash-dispatch.
516
517 * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here
518 from eval.c; Support 0 arity methods.
519 (scm_set_object_procedure_x): Removed scm_sym_atdispatch;
520 (scm_apply_generic_env): Removed.
521 Replaced slots proc0-3 with procedure.
522
523 * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1,
524 SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by
525 SCM_OPERATOR_PROCEDURE.
526 (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2,
527 SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE.
528
529 * struct.c, struct.h: Replace 4 procedure slots with one.
530 (scm_struct_i_procedure): Replaces scm_struct_i_procedure.
531
532 * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of
533 4.
534
535 * eval.c (scm_sym_args): Removed.
536 (SCM_CEVAL): Simplified entity application.
537 Moved dispatch code to objects.c.
538
539 * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics.
540
541 1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
542
543 * sort.c (closureless): Use scm_eval_body.
544
545 * eval.c (SCM_APPLY): Fixed serious evaluator bug: If a closure
546 with a symbol as last form was first called normally and then via
547 `map' or some other mechanism using primitive apply, an ILOC was
548 returned.
549
550 1999-08-26 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
551
552 This change extends the representation of primitive procedures
553 with more data fields, e.g. a place for documentation and true
554 procedure properties.
555
556 * procs.c, procs.h (scm_subr_entry): New type: Stores data
557 associated with subrs.
558 (SCM_SUBRNUM, SCM_SUBR_ENTRY, SCM_SUBR_GENERIC, SCM_SUBR_PROPS,
559 SCM_SUBR_DOC): New macros.
560 (scm_subr_table): New variable.
561 (scm_mark_subr_table): New function.
562
563 * init.c (scm_boot_guile_1): Call scm_init_subr_table.
564
565 * gc.c (scm_gc_mark): Don't mark subr names here.
566 (scm_igc): Call scm_mark_subr_table.
567
568
569 This change implements a scheme for letting a generic work as a
570 shadow for a primitive procedure. If the primitive procedure
571 can't dispatch on its arguments, control is left over to the
572 generic. Normal wrong type arg errors will be generated until the
573 user has hung the first method on the primitive.
574
575 * snarf.h (SCM_GPROC, SCM_GPROC1): New macros.
576
577 * procs.c, procs.h (scm_subr_p): New function (used internally).
578
579 * gsubr.c, gsubr.h (scm_make_gsubr_with_generic): New function.
580
581 * objects.c, objects.h (scm_primitive_generic): New class.
582
583 * objects.h (SCM_CMETHOD_CODE, SCM_CMETHOD_ENV): New macros.
584
585 * print.c (scm_iprin1): Print primitive-generics.
586
587 * __scm.h (SCM_WTA_DISPATCH_1, SCM_GASSERT1,
588 SCM_WTA_DISPATCH_2, SCM_GASSERT2): New macros.
589
590 * eval.c (SCM_CEVAL, SCM_APPLY): Replace scm_wta -->
591 SCM_WTA_DISPATCH_1 for scm_cxr's (unary floating point
592 primitives). NOTE: This means that it is now *required* to use
593 SCM_GPROC1 when creating float scm_cxr's (float scm_cxr's is an
594 obscured representation that will be removed in the future anyway,
595 so backward compatibility is no problem here).
596
597 * numbers.c: Converted most numeric primitives (all but bit
598 comparison operations and bit operations) to dispatch on generic
599 if args don't match.
600
601
602 Better support for applying generic functions.
603
604 * eval.c, eval.h (scm_eval_body): New function.
605
606 * objects.c (scm_call_generic_0, scm_call_generic_1,
607 scm_call_generic_2, scm_call_generic_3, scm_apply_generic): New
608 functions.
609
610
611 Optimization of the generic function dispatch mechanism.
612
613 * eval.c (SCM_CEVAL): Apply the cmethod directly after having
614 called scm_memoize_method instead of doing a second lookup.
615
616 * objects.h (scm_memoize_method): Now returns the memoized cmethod.
617
618
619 Bugfix
620
621 * procs.c (scm_make_subr_opt): Use scm_sysintern0 instead of
622 scm_sysintern so that the binding connected with the subr name
623 isn't cleared when we give set = 0.
624
625
626 1999-08-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
627
628 More transparent handling of ports with print states.
629
630 * print.h (SCM_PORT_WITH_PS_P, SCM_PORT_WITH_PS_PORT,
631 SCM_PORT_WITH_PS_PS): Represent ports with print states as a smob
632 instead of a pair of a port and a print state. We'll need to cons
633 once extra in scm_printer_apply but the type system will be
634 cleaner, it will mix better with GOOPS, and, it will be even more
635 transparent to the user.
636
637 * print.c (scm_get_print_state): New procedure: Given an output
638 port, return the print state associated to it in the current print
639 chain, if one exists;
640 (scm_port_with_print_state): New procedure: Associate a
641 print-state with a port.
642 (scm_valid_oport_value_p): Use SCM_PORT_WITH_PS_P;
643 (scm_printer_apply): Wrap port and pstate as a smob;
644 (print_state_printer): Removed.
645
646 * objects.c (scm_class_of): Treat scm_tc16_port_with_ps as ports.
647
648 * eval.c (scm_init_eval): Use scm_make_smob_type instead of
649 scm_newsmob.
650
651 * ports.c (scm_output_port_p): Bugfix: Coerce output port before
652 testing (otherwise the port-print-state trick won't be transparent
653 to the user; one example where this caused problems was in the
654 (ice-9 format) module).
655
656 1999-08-23 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
657
658 * eval.c (SCM_CEVAL): Let the SCM_IM_SLOT_SET_X form return
659 SCM_UNSPECIFIED instead of the set value.
660
661 1999-08-20 James Blandy <jimb@mule.m17n.org>
662
663 * load.c (scm_init_load_path): Remove support for SCHEME_LOAD_PATH.
664
665 * ports.h (enum scm_port_rw_active): New enum, containing
666 SCM_PORT_READ, SCM_PORT_WRITE, and SCM_PORT_NEITHER (instead of
667 zero). The debugger knows about enums, but doesn't know about
668 #defines.
669 (typedef scm_port): Declare rw_active member to be an enum
670 scm_port_rw_active.
671 * fports.c (fport_flush, fport_end_input): Use SCM_PORT_NEITHER
672 instead of zero.
673 * ports.c (scm_add_to_port_table): Same.
674 * strports.c (st_flush, st_end_input): Same.
675
676 * ioext.c (scm_do_read_line, scm_read_line): Use scm_must_malloc,
677 scm_must_realloc, and scm_done_malloc as appropriate.
678
679 1999-08-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
680
681 * sort.c (quicksort): Added condition to protect the algorithm
682 from crashing the interpreter if the less predicate is buggy.
683
684 1999-08-19 Gary Houston <ghouston@easynet.co.uk>
685
686 * fports.c (fport_write): fix line-buffering mode again.
687 (scm_open_file): recognise 'l' for line-buffering.
688 (scm_setvbuf): recognise _IOLBF for line-buffering.
689
690 1999-08-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
691
692 * Makefile.am (libguile_la_LDFLAGS): Increased the version number
693 of libguile to 5.0.
694
695 * eval.c (SCM_APPLY), sort.c (closureless): Expand body when
696 evaluating closures.
697
698 1999-08-18 Gary Houston <ghouston@easynet.co.uk>
699
700 * fports.c (fport_write): use memcpy instead of strncpy, in case
701 the data contains NUL.
702
703 1999-08-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
704
705 * gh.h (gh_vector_to_list): Bugfix. (Thanks to Frank Cieslok.)
706
707 * backtrace.c, debug.c, eval.c, eval.h, gsubr.c, procprop.h,
708 read.c, srcprop.c, srcprop.h (scm_i_filename, scm_i_line,
709 scm_i_column, scm_i_copy, scm_i_name, scm_i_lambda, scm_i_source,
710 scm_i_more, scm_i_procname, scm_i_dot, scm_i_arrow, scm_i_else,
711 scm_i_unquote, scm_i_uq_splicing, scm_i_apply, scm_i_enter_frame,
712 scm_i_apply_frame, scm_i_exit_frame, scm_i_trace, scm_i_quote,
713 scm_i_begin, scm_i_if, scm_i_and, scm_i_or, scm_i_case,
714 scm_i_cond, scm_i_letstar, scm_i_do, scm_i_quasiquote,
715 scm_i_define, scm_i_letrec, scm_i_let, scm_i_atapply,
716 scm_i_atcall_cc, scm_i_breakpoint): Renamed: Consequently use
717 scm_sym_ as prefix for symbols.
718
719 * debug.c (scm_i_proc, scm_i_args, scm_i_eval_args): Removed.
720
721 * eval.c, eval.h (scm_sym_begin, scm_sym_if, scm_sym_and,
722 scm_sym_case, scm_sym_cond, scm_sym_letstar, scm_sym_do,
723 scm_sym_define, scm_sym_letrec, scm_sym_atapply,
724 scm_sym_atcall_cc): Made global.
725
726 1999-08-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
727
728 * eval.c (scm_sym_args): Made global.
729
730 * objects.c (scm_set_object_procedure_x): Disallow setting of
731 procedures for pure generic functions.
732
733 1999-08-12 Gary Houston <ghouston@easynet.co.uk>
734
735 * ports.c (scm_seek): one more: was scm_lseek. Also changed the
736 Scheme name from lseek to seek, but lseek was added recently so
737 it shouldn't be a big problem.
738 * ports.c, gdbint.c, ioext.c: changed callers.
739
740 1999-08-11 Gary Houston <ghouston@easynet.co.uk>
741
742 * fports.c (fport_input_waiting): if select is used, return 1
743 instead of whatever FD_ISSET expands to. maybe it will be useful
744 to interpret the value from the input_waiting ptob procedure as a
745 lower bound on the number of bytes available.
746
747 * Mikael asked for a few names to be changed...
748
749 * ports.c (scm_make_port_type): take the write procedure as the
750 second argument instead of the flush procedure.
751 * ports.h (scm_ptob_descriptor): rename the ptob procedures:
752 fflush -> flush, read_flush -> end_input, fclose -> close,
753 fill_buffer -> fill_input, ftruncate -> truncate,
754 input_waiting_p -> input_waiting.
755
756 * ports.c (end_input_void_port): was read_flush_void_port.
757 (scm_set_port_end_input): was scm_set_port_flush_input.
758 (scm_set_port_flush): was scm_set_port_write.
759 (scm_set_port_input_waiting): was scm_set_port_input_waiting_p
760 (scm_end_input): was scm_read_flush.
761 (scm_fill_input): was scm_fill_buffer.
762 (scm_flush): was scm_fflush.
763 * fports.c (fport_input_waiting): renamed from fport_input_waiting_p.
764 (fport_end_input): was local_read_flush.
765 (fport_flush): was local_fflush.
766 (fport_close): was local_fclose.
767 (fport_truncate): was local_ftruncate.
768 (fport_seek): was local_seek.
769 (fport_free): was local_free.
770 (fport_fill_input): was fport_fill_buffer.
771 * strports.c (st_end_input): was st_read_flush.
772 (st_truncate): was st_ftruncate.
773 * vports.c: (sf_flush): was sfflush.
774 (sf_close): was sfclose.
775 (sf_fill_input): was sf_fill_buffer.
776
777 * ports.c, fports.c, strports, vports.c, ioext.c, unif.c, filesys.c:
778 change callers.
779
780 1999-08-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
781
782 * eval.c (SCM_IM_DISPATCH): Rewrote dispatch protocol. Dispatch
783 forms now contain the expressions to be dispatched upon instead of
784 depending on a surrounding lambda or let; Generic function
785 dispatch has been optimized; `apply' on a generic function now
786 works a little bit strangely. It uses a trick so that the type
787 dispatch code in SCM_CEVAL can be reused.
788
789 * objects.h, objects.c (scm_apply_generic_env): Added (used by
790 apply).
791 (scm_operator_p): Added.
792 (scm_sym_atdispatch): Added.
793 (scm_set_object_procedure_x): Modified to handle the new style
794 generic functions.
795 (scm_object_procedures): New debugging procedure.
796
797 1999-08-05 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
798
799 * eval.c, eval.h (scm_sym_args): Added.
800
801 * objects.h (SCM_CLASSF_PURE_GENERIC): Added.
802
803 * feature.c, feature.h (scm_c_run_hook): Added.
804
805 * eval.c (SCM_CEVAL:SCM_IM_DISPATCH): Bugfix: Jump back to
806 cdrxnoap and loopnoap instead of begin and loop.
807
808 1999-08-04 Gary Houston <ghouston@easynet.co.uk>
809
810 * ports.c (scm_putc, scm_puts),
811 * unif.c (scm_uniform_array_write): use scm_lfwrite.
812 * ports.c (scm_putc): change type of first argument from int to char.
813
814 1999-08-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
815
816 * eval.c (SCM_CEVAL): Improvements to SCM_IM_DISPATCH and
817 SCM_IM_HASH_DISPATCH.
818
819 * objects.h (SCM_CLASSF_GOOPS_VALID): Added.
820 (scm_si_redfined, scm_si_hashsets): Moved.
821
822 * objects.c (scm_class_of): Use the new SCM_CLASSF_GOOPS_VALID
823 flag which combines type and status info so that the class
824 redefinition protocol has zero cost during normal execution.
825
826 1999-08-03 Gary Houston <ghouston@easynet.co.uk>
827
828 * ports.h (scm_ptob_descriptor): include a write procedure again.
829 it's more efficient for unbuffered fports (e.g., sockets.)
830
831 * ports.c (scm_puts): use ptob->write.
832 * vports.c (scm_make_sfptob): set write proc in ptob.
833 * strports.c (scm_make_stptob): set write proc in ptob.
834 * ports.c (write_void_port): new procedure.
835 * vports.c (sf_write): new procedure.
836 * ports.c (scm_lfwrite): use ptob->write.
837 * strports.c (st_write): new procedure.
838 * fports.c (fport_write): new procedure.
839 (scm_make_fptob): set write in ptob to fport_write.
840 * ports.h: prototype for scm_set_port_write.
841 * ports.c (scm_make_port_type): initialise ptob write procedure.
842 (scm_set_port_write): new proc.
843
844 1999-08-01 Jim Blandy <jimb@savonarola.red-bean.com>
845
846 * ports.c (scm_char_ready_p): Don't try to find PORT's ptab entry
847 until we've verified that it is actually a port. (Thanks to
848 Lorentey Karoly.)
849
850 1999-07-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
851
852 * gc.c (scm_must_malloc, scm_must_realloc): Removed unnecessary
853 code, particularly an unnecessary test (len != size, where len ==
854 size). (Was this leftovers from debugging code, or have I missed
855 something profound?)
856
857 * hashtab.c: Bugfix: Don't declare s_hash_fold without storage
858 size. (Thanks to James Dean Palmer.)
859
860 * numbers.c (scm_makdbl): Bugfix: Initialize imaginary part.
861 (Thanks to Lorentey Karoly.)
862
863 1999-07-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
864
865 * eval.c (scm_m_expand_body): Use scm_cons_source.
866
867 * struct.c (scm_print_struct): Use vtable name.
868
869 * print.c (scm_init_print): Set name of print state type.
870
871 * stacks.c (scm_init_stacks): Set name of stack type.
872
873 1999-07-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
874
875 * eval.c (SCM_CEVAL): Removed old implementation of internal
876 define.
877
878 * gsubr.c, procprop.h (scm_i_inner_name): Removed.
879
880 * debug.c, debug.h (scm_reverse_lookup): Added.
881 (scm_procedure_name): Use scm_reverse_lookup to lookup the name of
882 internal procedure definitions; Don't use scm_i_inner_name.
883
884 * eval.c, tags.h, print.c (SCM_IM_SLOT_REF, SCM_IM_SLOT_SET_X):
885 New isym operations.
886
887 * eval.h: Added prototypes for multi language support functions.
888
889 * eval.c (SCM_IM_DISPATCH, SCM_IM_HASH_DISPATCH): Don't use
890 improper lists in the low-level representation, since that will
891 cause a begin to be prepended at macro expansion.
892
893 * eval.c (scm_cons_source): Version of cons which copies source
894 properties from an existing cell.
895 (scm_copy_tree, SCM_CEVAL): Use scm_cons_source.
896
897 * debug.c (scm_procedure_source): Cons SCM_IM_LAMBDA onto
898 procedure source before calling scm_unmemocopy instead of faking
899 an environment.
900
901 1998-10-25 Marius Vollmer <mvo@zagadka.ping.de>
902
903 Ported `internal defines' fix from SCM. Original ChangeLog entry:
904
905 1998-07-09 Radey Shouman <radey@colorage.com>
906
907 * eval.c (ceval_1): Modifications to allow rewriting of interal
908 DEFINE to LETREC: If an ISYM is evaluated in non-tail position the
909 body of which it is the CAR is macro expanded by m_expand_body,
910 which rewrites internal DEFINE.
911
912 (m_expand_body): Added.
913
914 (m_macroexp1): Added argument to control error checking:
915 m_expand_body may speculatively expand forms in the wrong
916 environments. Made argument number checks conditional on
917 RECKLESS.
918
919 (m_body): Added, error checks bodies and inserts the ISYM tokens.
920
921 (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now
922 call m_body.
923
924 (m_cond): (m_case): (m_quote): Modified to avoid destructively
925 changing their argument forms. Since m_expand_body
926 speculatively macro expands forms the process must be
927 reversible.
928
929 (m_ident_eqp): Fixed to use proper environment.
930
931 (renamed_ident): Added DEFER_INTS_EGC.
932
933 Added prototypes for static functions.
934
935 * eval.c
936
937 (undef_cell): New.
938
939 (scm_lookupcar1, scm_lookupcar): Added CHECK argument. When CHECK
940 is false, do not produce an error for unbound variables, return a
941 pointer to cell_undef instead.
942
943 (EVALCELLCAR, XEVALCAR): Call scm_lookupcar with check=1.
944
945 (scm_m_body): New.
946
947 (scm_m_cond, scm_m_case, scm_m_quote): Modified to avoid
948 destructively changing their argument forms. Since m_expand_body
949 speculatively macro expands forms the process must be reversible.
950
951 (scm_m_lambda): Use scm_m_body instead of bodycheck. Account for
952 SCM_IM_LET introduced by named lets.
953
954 (scm_m_letstar): Use scm_m_body instead of bodycheck.
955
956 (scm_m_letrec1, scm_letrec): Split scm_letrec into scm_letrec1 and
957 scm_letrec. scm_letrec1 does not check for a null binding and
958 takes an additional argument to specify the ISYM of the body. Use
959 scm_m_body instead of bodycheck.
960
961 (scm_m_let): Use scm_m_body instead of bodycheck.
962
963 (scm_m_expand_body, scm_macroexp): New.
964
965 (unmemocopy): Account for ISYMs introduced by scm_m_body.
966
967 (ceval, deval): Call scm_m_expand_body. Call scm_lookupcar with
968 check=1. Throw error for internal defined that have not been
969 rewritten by scm_m_expand_body.
970
971 * eval.h: Added prototypes for scm_m_expand_body and scm_macroexp.
972 Removed prototype for SCM_APPLY.
973
974 * tags.h: Added extern declaration of scm_isymnames.
975
976 1999-07-27 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
977
978 * Makefile.am (EXTRA_libguile_la_SOURCES): Added lang.c.
979
980 * lang.c: New file: Beginning of multi-language support.
981
982 * init.c (scm_boot_guile_1): Added call to scm_init_lang ().
983
984 * dynwind.c (scm_dowinds): Removed obsolete wind_key #f case.
985 (scm_dynamic_wind): Added argument checking for the after guard so
986 that we don't add garbage on the dynwind chain.
987 (scm_swap_bindings): Added.
988
989 * tags.h, print.c (SCM_IM_NIL_COND, SCM_IM_NIL_IFY, SCM_IM_T_IFY,
990 SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY), print.c
991 (scm_isymnames): New isyms for multi-language support.
992
993 * eval.c (scm_nil, scm_t): New symbols.
994 (nil-cond, nil-ify, t-ify, 0-cond, 0-ify, 1-ify): New special
995 forms for multi-language support.
996
997 1999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
998
999 * random.c, random.h (scm_c_default_rstate, scm_c_uniform32):
1000 Added.
1001 Renamed functions in the random function library interface
1002 from scm_i_XXX --> scm_c_XXX.
1003
1004 1999-07-25 Gary Houston <ghouston@easynet.co.uk>
1005
1006 * ports.c (scm_putc): fix line-buffering.
1007
1008 1999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1009
1010 * ports.c, ports.h, fports.c, strports.c, vports.c: Renamed
1011 scm_set_ptob_XXX --> scm_set_port_XXX.
1012
1013 1999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1014
1015 * ports.c, ports.h (scm_make_port_type): New interface for
1016 creation of port types (replaces scm_newptob). Just as for the
1017 smobs, we need to separate the internal representation of smob
1018 types from the interface, so that we easily can add new fields and
1019 rearrange things without caring about backward compatibility.
1020 This change was forced by the need in GOOPS to create classes
1021 representing port types.
1022 (scm_set_ptob_mark, scm_set_ptob_free, scm_set_ptob_print,
1023 scm_set_ptob_equalp, scm_set_ptob_flush_input, scm_set_ptob_close,
1024 scm_set_ptob_seek, scm_set_ptob_truncate,
1025 scm_set_ptob_input_waiting_p): New setters.
1026 (scm_newptob): Rewritten to use scm_make_port_type. For backward
1027 compatibility.
1028 (scm_ptobs): Changed type scm_ptobfuns --> scm_ptob_descriptor.
1029 (scm_prinport): Removed.
1030 (scm_port_print): Added.
1031 (scm_print_port_mode): Added.
1032 (void_port_ptob, print_void_port, close_void_port, noop0):
1033 Removed. Removed #include "genio.h" Added #include "objects.h",
1034 #include "smobs.h"
1035
1036 * fports.c (prinfport): Moved code from ports.c.
1037 (local_free): Added.
1038 (scm_fptob): Removed. Instead use new interface.
1039 (scm_make_fptob): Added. (Need to create basic ports in a
1040 specific order in ports.c.)
1041
1042 * strports.c (scm_stptob, prinstpt, noop0): Removed
1043 (scm_make_stptob): Added.
1044
1045 * vports.c (scm_sfport, prinsfpt, sf_read_flush, noop0): Removed.
1046 (scm_make_sfport): Added.
1047
1048 * filesys.c (scm_dir_print): Don't use the port printing code.
1049 Instead provide specific directory printer.
1050
1051 * gc.c (scm_gc_sweep): Use value returned from scm_ptobs[].free.
1052
1053 * ioext.c (scm_redirect_port): Replaced scm_ptobfuns -->
1054 scm_ptob_descriptor.
1055
1056 * smob.c (scm_smob_print): Handle non-existing type name nicely.
1057 Removed #include "genio.h"
1058
1059 * objects.c (scm_make_port_classes): New function ptr.
1060
1061 1999-07-24 Gary Houston <ghouston@easynet.co.uk>
1062
1063 * gdbint.c (gdb_print, gdb_read): call scm_truncate_file.
1064
1065 * ports.c (scm_truncate_file): renamed from scm_ftruncate.
1066 allow the 1st argument to be a fdes or filename as well as a
1067 port (as in the filesys.c version).
1068
1069 * filesys.c (scm_truncate_file): removed.
1070
1071 1999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1072
1073 * readline.c, readline.h: Removed.
1074
1075 * objects.c, objects.h (scm_port_class): Added.
1076 (scm_class_of): Look up port class in scm_port_class.
1077 (SCM_IN_PCLASS_INDEX, SCM_OUT_PCLASS_INDEX,
1078 SCM_INOUT_PCLASS_INDEX): Added.
1079
1080
1081 * Makefile.am: Removed genio.c, genio.x.
1082
1083 * genio.c: Removed.
1084
1085 1999-07-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
1086
1087 * init.c: Make sure that scm_post_boot_init_modules is called only
1088 once. (Important when using a dumped image.; Thanks to Bernard
1089 Urban.)
1090
1091 1999-07-19 Jim Blandy <jimb@savonarola.red-bean.com>
1092
1093 * guardians.c (scm_guardian_zombify): Separate scanning for
1094 zombies from marking the pairs of the free list.
1095
1096 * guardians.c (scm_guardian_zombify): Don't set marks manually ---
1097 use the macros. (Thanks to Michael Livshin.)
1098
1099 * eval.c (scm_m_lambda): Let bodycheck check the body of the
1100 lambda. Let your sins be purified by the blood of the lambda.
1101 (Thanks to Eric Hanchrow.)
1102
1103 * net_db.c (h_errno): Don't declare this if it's #defined. Eew.
1104 (Thanks to Valdis Kletnieks.)
1105
1106 Fixes for EMX from Mikael Ståldal.
1107
1108 * filesys.c: #include <io.h>, if we have it.
1109 * scmconfig.h.in: Regenerated.
1110
1111 * stime.c (ftime): Delete declaration for this function --- let
1112 the system supply it.
1113
1114 Cleanups from John Bley.
1115
1116 * gdbint.c: Don't include <stdio.h> and "_scm.h" twice.
1117
1118 * gsubr.c: Don't include "gsubr.h" twice.
1119
1120 Cleanups for compilation on Irix 6, from David Kaelbling.
1121
1122 * regex-posix.c (scm_regexp_error_msg): Change `rx' argument to
1123 regex_t pointer. This is what the callers have, mostly.
1124 (scm_regexp_exec): Don't forget to pass the `rx' argument to
1125 scm_regexp_error_msg.
1126
1127 * scmsigs.c (scm_sigaction): Cast SIG_DFL and SIG_IGN to SCM, not
1128 int. That way, if we get a warning on this line, it's more likely
1129 that we're really missing bits we care about.
1130
1131 * snarf.h (SCM_CONST_LONG): Remove trailing semicolon from
1132 definition.
1133
1134 * tags.h (SCM_IMP, SCM_NCONSP, SCM_NCELLP, SCM_ITAG3, SCM_TYP3,
1135 SCM_TYP7, SCM_TYP7S, SCM_TYP16, SCM_TYP16S, SCM_GCTYP16,
1136 SCM_GCMARKP, SCM_GC8MARKP): Don't cast to int. Either SCM or no
1137 cast at all is more appropriate in every case. At the moment, we
1138 assume everywhere that SCM is an integral type anyway.
1139
1140 1999-07-14 Gary Houston <ghouston@easynet.co.uk>
1141
1142 * unif.c (scm_uniform_array_read_x), ports.c (scm_getc): increment
1143 read_pos after scm_fill_buffer.
1144
1145 * ioext.c (scm_do_read_line): simplify by ignoring the fill_buffer
1146 return char.
1147
1148 * vports.c (sf_fill_buffer), strports.c (stfill_buffer),
1149 fports.c (fport_fill_buffer): implement the interface change.
1150
1151 * ports.c (scm_fill_buffer): interface change: no longer increments
1152 read_pos past the character that's returned. it seems clearer to
1153 leave it to the caller to decide what to do (thanks Jim).
1154
1155 * vports.c (sf_fill_buffer): put the read char into the buffer
1156 as well as returning it.
1157
1158 * ports.c (scm_grow_port_cbuf): residue of this deleted procedure
1159 deleted.
1160
1161 1999-07-13 Gary Houston <ghouston@easynet.co.uk>
1162
1163 * strports.c (scm_strprint_obj): simplify. start with initial
1164 buffer size of 0.
1165 (st_seek): don't allow string to be extended if seeking past
1166 the end of a read-only port.
1167
1168 1999-07-12 Gary Houston <ghouston@easynet.co.uk>
1169
1170 * strports.c (st_seek): change the resize checks.
1171
1172 * ports.c (scm_ftruncate): throw error if offset works out negative.
1173
1174 * strports.c (st_flush): increase string size in blocks of
1175 SCM_WRITE_BLOCK instead of 1. set read_end to read_pos if
1176 it's greater and reset read_buf_size.
1177 (scm_mkstrport): set rw_randow if only writing, since read_buf needs
1178 to be maintained for output ports too (it holds the written
1179 part of the string, while write_buf may have unwritten buffer
1180 chars.)
1181 (st_truncate): rewritten.
1182 (top of file): added a few notes.
1183
1184 1999-07-10 Jim Blandy <jimb@savonarola.red-bean.com>
1185
1186 Patch from Greg Badros:
1187 * snarf.h (SCM_PROC, SCM_PROC1): Use __cplusplus or
1188 GUILE_CPLUSPLUS_SNARF macros to force adding a cast to the last
1189 (function pointer) argument to scm_make_gsubr and scm_make_subr
1190 calls. This avoids warnings in C++ programs using guile-snarf.
1191
1192 1999-07-06 Gary Houston <ghouston@easynet.co.uk>
1193
1194 * strports.c (st_grow_port): set pt->read_pos. set
1195 pt->read_buf_size one less than pt->write_buf_size if there's
1196 an unwritten char at the end of the string. similarly for
1197 pt->read_end.
1198 (st_resize_port): renamed from st_grow_port.
1199 (st_seek): simplify by assuming that pt->write_pos == pt->read_pos.
1200 seek from read_end instead of write_end for SEEK_END.
1201 (st_ftruncate): calculate current length using readbuf, not write
1202 buf.
1203 (scm_strport_to_string): use read_buf_size for length.
1204 (stfill_buffer): don't re-initialise the readbuf.
1205
1206 1999-07-05 Gary Houston <ghouston@easynet.co.uk>
1207
1208 * strports.c (scm_strport_to_string): new procedure.
1209 (scm_call_with_output_string, scm_strprint_obj): use
1210 scm_strport_to_string.
1211 used SCM_INUM0 instead of SCM_MAKINUM (0) in a few places.
1212
1213 1999-07-08 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
1214
1215 * symbols.c (scm_gensym): Bugfix. (Thanks to Johannes Hjorth.)
1216
1217 Fri Jun 25 22:14:32 1999 Greg Badros <gjb@cs.washington.edu>
1218
1219 * smob.c: added scm_make_smob_type_mfpe (), scm_set_smob_mfpe ();
1220 use scm_make_smob_type_mfpe to initialize "free", "flo", "bigpos",
1221 and "bigneg" smob types.
1222
1223 * smob.h: Add do ... while(0) idiom to SCM_NEWSMOB. Added
1224 SCM_RETURN_NEWSMOB macro. Added protos for new functions in
1225 smob.c.
1226
1227 * *.c: Use scm_make_smob_type_mfpe, instead of scm_newsmob, and
1228 use SCM_NEWSMOB or SCM_RETURN_NEWSMOB in constructors instead of
1229 SCM_NEWCELL and setting the CAR/CDR by hand.
1230
1231 1999-07-04 Gary Houston <ghouston@easynet.co.uk>
1232
1233 * ports.c (scm_putc): call scm_read_flush.
1234 (scm_puts): likewise.
1235 (scm_lfwrite): likewise.
1236 (scm_lseek): likewise.
1237 (scm_ftruncate): likewise.
1238 * unif.c (scm_uniform_array_write): likewise.
1239 * ioext.c (scm_redirect_port): likewise.
1240
1241 * ports.c (scm_fill_buffer): don't take pt argument. change callers.
1242 (read_flush_void_port): new proc, for void port ptob.
1243
1244 * vports.c (sf_read_flush): likewise.
1245 * strports.c (st_read_flush): take offset arg.
1246 * fports.c (local_read_flush): use offset, don't reset putback
1247 buffer here.
1248
1249 * ports.h (scm_ptobfuns): let read_flush take an offset argument,
1250 which is the number of chars from the putback buffer.
1251
1252 * ports.c (scm_read_flush): new procedure, resets the putback
1253 buffer before calling the ptob routine.
1254
1255 * strports.c (scm_strprint_obj): bug fix: get pt from the port,
1256 not from the parameter obj. (Thanks to Eric Moore.)
1257
1258 * ports.h: SCM_CRDY, SCM_CUC, SCM_CRDYP, SCM_SETRDY, SCM_CUNGET,
1259 SCM_CGETUN, SCM_CLRDY, SCM_TRY_CLRDY, SCM_N_READY_CHARS: deleted.
1260
1261 * strings.c (scm_make_string): throw error if 2nd arg isn't
1262 a char.
1263
1264 * unif.c (scm_uniform_array_read_x): fix reading from a port.
1265 allow non-fports.
1266 (scm_uniform_array_write): likewise.
1267
1268 1999-06-29 Gary Houston <ghouston@easynet.co.uk>
1269
1270 * ports.c (scm_drain_input): rewritten.
1271
1272 * fports.c (local_fclose): check putback_buf.
1273 (local_read_flush): likewise.
1274
1275 * ports.c (scm_remove_from_port_table): maybe free putback_buf.
1276
1277 * ports.h (scm_port): replace cbuf/cbufend/cp with putback_buf/
1278 putback_buf_size.
1279 (SCM_INITIAL_PUTBACK_BUF_SIZE): renamed from SCM_INITIAL_CBUF_SIZE.
1280
1281 * ports.c (scm_grow_port_cbuf): deleted.
1282 (scm_add_to_port_table): initialise putback_buf to 0. remove cbuf
1283 stuff.
1284 (scm_char_ready_p): check putback_buf
1285 (scm_fill_buffer): likewise.
1286 (scm_ungetc): rewritten.
1287
1288 1999-06-27 Gary Houston <ghouston@easynet.co.uk>
1289
1290 * fports.c (local_fclose): account for push-back buffer.
1291
1292 * ports.c (scm_char_ready_p): check the push-back buffer in
1293 a new way.
1294
1295 * ioext.c (scm_do_read_line): remove the extra code to handle
1296 the push-back buffer.
1297
1298 * ports.c (scm_getc): don't use SCM_CRDYP etc.
1299
1300 * ioext.c (scm_do_read_line): call scm_fill_buffer.
1301
1302 * ports.c (scm_ungetc): don't call SCM_CUNGET. reset the
1303 read buffer pointers.
1304 scm_fill_buffer: new procedure.
1305 (scm_getc): call scm_fill_buffer.
1306
1307 * ports.h (struct scm_port): saved_read_buf, saved_read_pos,
1308 saved_read_end: new fields.
1309
1310 1999-06-24 Mikael Djurfeldt <mdj@orjan.nada.kth.se>
1311
1312 * dynl-dl.c (sysdep_dynl_link): Added parenthesis around the
1313 trinary conditional in order for the flag computation to be
1314 correct.
1315
1316 1999-06-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
1317
1318 * struct.c, struct.h:
1319
1320 In order to support different kinds of deallocation, a destructor
1321 slot has been added to struct vtables. This allows for structs
1322 containing pointers to other memory blocks.
1323
1324 (scm_struct_i_free): New hidden struct slot. Holds destructor for
1325 instances to this vtable.
1326 (scm_struct_free_0): New destructor: Doesn't deallocate data.
1327 (scm_struct_free_light): New destructor: Deallocates a light
1328 struct (i.e. a struct without hidden slots).
1329 (scm_struct_free_standard): New destructor: Deallocates standard
1330 structs.
1331 (scm_struct_free_entity): New destructor: Deallocates entity
1332 structs.
1333 (SCM_SET_VTABLE_DESTRUCTOR): New macro.
1334
1335 Changes to hidden slots:
1336
1337 (scm_struct_i_size): scm_struct_i_flags now shares space with
1338 scm_struct_i_size which holds the size of light structs.
1339 (scm_struct_i_n_words): This slot has changed meaning. Previously
1340 it included hidden slots. Now it indicates visible slots.
1341 (scm_alloc_struct): Clear flags.
1342 (SCM_STRUCTF_MASK): 4 new flag positions added => 12 bits.
1343
1344 (struct_num, scm_struct_i_tag): Removed.
1345 (scm_struct_vtable_tag): Base tag on the pointer to mallocated
1346 memory.
1347 (scm_struct_ihashq): Base hash value on pointer to struct handle.
1348
1349 * tag.c (scm_tag): Base tag on vtable pointer.
1350
1351 * objects.c (scm_init_objects): Initialize destructor slot of the
1352 primordial entity class.
1353
1354 * objects.h (SCM_SET_CLASS_DESTRUCTOR,
1355 SCM_SET_CLASS_INSTANCE_SIZE): New macros.
1356
1357 * gc.c (scm_gc_sweep): Call struct free slot.
1358
1359 * keywords.c, keywords.h (scm_c_make_keyword): New function.
1360 (We should remove the use of the prefix '-'.)
1361
1362 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): New macros.
1363
1364 * libguile.h: #include "objects.h"
1365
1366 1999-06-22 Marius Vollmer <mvo@zagadka.ping.de>
1367
1368 * dynl.c (DYNL_GLOBAL): New.
1369 (sysdep_dynl_link): Added `flags' argument.
1370 (kw_global, sym_global): New.
1371 (scm_dynamic_link): Handle keyword arguments. Pass suitable flags
1372 to sysdep_dynl_link.
1373 * dynl-dl.c (sysdep_dynl_link): Handle new `flags' argument by
1374 conditrionally adding RTLD_GLOBAL to DLOPEN_MODES.
1375 * dynl-shl.c (sysdep_dynl_link): Add and ignore new flags
1376 argument.
1377 * dynl-dld.c (sysdep_dynl_link): Add and ignore new flags
1378 argument.
1379 * dynl.h (scm_dynamic_link): Added rest argument.
1380
1381 1999-06-21 Marius Vollmer <mvo@zagadka.ping.de>
1382
1383 * dynl.c (sysdep_dynl_unlink, sysdep_dynl_func): Use const
1384 qualifier for char* argument, to match prototypes. Thanks to Mark
1385 Elbrecht.
1386
1387 1999-06-21 Jim Blandy <jimb@savonarola.red-bean.com>
1388
1389 * dynl.c (no_dynl_error, sysdep_dynl_link, sysdep_dynl_unlink,
1390 sysdep_dynl_func): Use ANSI declarations, and const char *
1391 pointers. (Thanks to Mark Elbrecht.)
1392
1393 1999-06-19 Jim Blandy <jimb@savonarola.red-bean.com>
1394
1395 Patch from Greg Harvey:
1396 * eq.c, eval.c, list.c, ramap.c, vectors.c: Always write parens
1397 around the condition of an `if', `while', etc., even if the
1398 condition is a macro invocation that expands to something
1399 surrounded by parens. It's more readable.
1400
1401 * eval.c (scm_map, scm_for_each): Verify that all arguments are
1402 proper lists, and of the appropriate lengths.
1403 (check_map_args): New function. (Thanks to Greg Harvey for the
1404 bug report.)
1405
1406 1999-06-19 Michael Livshin <mike@olan.com>
1407
1408 * guardians.c (guardian_t): `next' - new field to be used for
1409 chaining the live guardians in a single-linked list during the GC
1410 mark phase.
1411 (GUARDIAN_NEXT): convenience macro to access the `next' field.
1412 (guardians, guardians_size, n_guardians): deleted.
1413 (first_live_guardian, current_link_field): new globals used to
1414 point to the head of the live guardian list and current `next'
1415 field, respectively.
1416 (g_mark): append the guardian to the live guardian list.
1417 (scm_guardian_gc_init): zero the live guardian list.
1418 (scm_guardian_zombify): iterate through the live guardian list.
1419
1420 (Applied by Jim Blandy.)
1421
1422 1999-06-16 Jim Blandy <jimb@savonarola.red-bean.com>
1423
1424 * gc.c (scm_mallocated): Just make this signed.
1425 (scm_igc): Check for underflow by seeing if this is negative.
1426 Much cleaner.
1427 * gc.h (scm_mallocated): Fix declaration.
1428 (Thanks to Greg Harvey.)
1429
1430 * ports.h: #include <sys/types.h>, to get a definition for `off_t'.
1431
1432 1999-06-15 Jim Blandy <jimb@savonarola.red-bean.com>
1433
1434 * stime.c (bdtime2c): Initialize lt->gmtoff and lt->tm_zone from
1435 sbd_time. (Thanks to Eric Hanchrow.)
1436
1437 Fix from Ken Raeburn <raeburn@raeburn.org>:
1438 * weaks.c (scm_make_weak_vector): Add another extra slot before
1439 vector contents, to be used only during garbage collection.
1440 * weaks.h (SCM_WVECT_GC_CHAIN): New macro to access it.
1441 * gc.c (scm_weak_vectors): Now a SCM instead of a SCM*, and now
1442 static.
1443 (scm_weak_size, scm_n_weak): Deleted.
1444 (scm_igc): Use SCM_WVECT_GC_CHAIN to build up a chain of weak
1445 vectors without allocating new storage during GC, using
1446 scm_weak_vectors as the head of the chain.
1447 (scm_mark_weak_vector_spines): Walk SCM_WVECT_GC_CHAIN chain
1448 instead of stepping through an array.
1449 (scm_gc_sweep): Update offset used to find start of weak vector to
1450 free it.
1451 (scm_init_storage): Set scm_weak_vectors to EOL.
1452
1453 Fix from Ken Raeburn <raeburn@raeburn.org>:
1454 * gc.c (already_in_gc): New variable.
1455 (scm_igc): Set and clear already_in_gc; abort if it's set at
1456 entry.
1457
1458 1999-06-14 Jim Blandy <jimb@savonarola.red-bean.com>
1459
1460 Fix from Gary Houston:
1461 * fports.c (local_seek): Signal an error if the seek fails.
1462 * ports.c (scm_lseek): Don't check return value of port's seek
1463 function; it's its job to signal an error if there's a problem.
1464
1465 1999-06-12 Jim Blandy <jimb@savonarola.red-bean.com>
1466
1467 * strports.c (scm_call_with_output_string): Don't include the
1468 extra character at the end of the string in the result.
1469
1470 * ioext.c (scm_read_line): Switch to reading properly.
1471
1472 * fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h,
1473 scmsigs.c, strports.c, vports.c: Install the sources which
1474 actually correspond to the changes described below. I got the
1475 ChangeLog entries and the patch from two different places...
1476
1477 1999-06-09 Jim Blandy <jimb@savonarola.red-bean.com>
1478
1479 * gc.c (scm_igc): Check for scm_mallocated underflow. Otherwise,
1480 it shows up as terrible performance, as we GC constantly.
1481
1482 * ioext.c (scm_do_read_line): Rewritten to use memchr to find the
1483 newline. A bit faster, and definitely hairier.
1484 (scm_read_line): Count newlines here instead.
1485
1486 * strings.c (scm_take_str): New function.
1487 (scm_take0str): Reimplement in terms of scm_take_str. * strings.h
1488 (scm_take_str): New declaration. * ioext.c (scm_read_line): Use
1489 scm_take_str, to avoid copying the string.
1490
1491 Add some simple-minded support for line buffered ports.
1492 * ports.h (SCM_BUFLINE): New flag for ports.
1493 * init.c (scm_init_standard_ports): Request line-buffering on
1494 the standard output port.
1495 * ports.c (scm_mode_bits): Recognize 'l' as a request for line
1496 buffering.
1497 (scm_putc, scm_puts, scm_lfwrite): If the port is line-buffered,
1498 and there's a newline to be written, flush the port.
1499
1500 Gary Houston's open-buffer port patches:
1501
1502 1999-04-26 Gary Houston <ghouston@easynet.co.uk>
1503
1504 * ports.c: (scm_lseek): clear buffers even if just reading current
1505 position.
1506
1507 * fports.c (local_fclose): call local_fflush unconditionally.
1508 (various): don't use the scm_must... memory procs.
1509
1510 1999-04-25 Gary Houston <ghouston@easynet.co.uk>
1511
1512 * ports.h (scm_port): make read_pos a pointer to const.
1513 strports.c: take care of rw_active and rw_randow.
1514 fports.c: scm_fport_drain_input: removed. do it all in ports.c.
1515 strports.c (scm_mkstrport): check that pos is reasonable.
1516 ioext.c (scm_ftell, scm_fseek): use lseek.
1517 (SCM_CLEAR_BUFFERS): macro deleted.
1518 ioext.c (redirect_port: use ptob fflush, read_flush.
1519 ports.h (scm_ptobfuns): add ftruncate.
1520 ports.c (scm_newptob): set ftruncate.
1521 adjust ptob tables.
1522 ports.c (scm_ftruncate): new procedure.
1523 fports.c (local_ftrunate), strports.c (str_ftruncate): new procs.
1524 strports.c (st_seek, st_grow_port): new procs.
1525 fports.h (scm_port): change size types from int to off_t.
1526 ports.c (scm_init_ports): initialise the seek symbols here
1527 instead of in ioext.c.
1528 strports.c (scm_call_with_output_string): start with an empty
1529 string, so seek and ftruncate can be used.
1530
1531 gdbint.c: adjust string port usage.
1532
1533 1999-04-24 Gary Houston <ghouston@easynet.co.uk>
1534
1535 * ports.h (scm_ptobfuns): add a read_flush procedure which is the
1536 equivalent to fflush for the read buffer.
1537 * ports.c (scm_newptob): set read_flush.
1538 ports.c (void_port_ptob): set read_flush.
1539 fports.c (local_read_flush): new proc. add to ptob.
1540 strport.c (st_read_flush): likewise.
1541 vport.c (sf_read_flush): likewise.
1542 fports.h (struct scm_fport): remove random member. there's nothing
1543 left but fdes. leaving it as a struct to allow for future changes.
1544 fports.c: replace usage of scm_fport::random with scm_port::rw_random.
1545 ports.c: (scm_putc, scm_puts, scm_lfwrite): call the read_flush
1546 ptob proc if the read buffer is filled.
1547
1548 1999-04-23 Gary Houston <ghouston@easynet.co.uk>
1549
1550 * ports.h (scm_port): add a rw_random member and replace
1551 reading and writing members with rw_active member.
1552 SCM_PORT_READ/SCM_PORT_WRITE: new values.
1553
1554 1999-04-22 Gary Houston <ghouston@easynet.co.uk>
1555
1556 * ports.h (struct scm_port_table): add writing and reading members
1557 to replace write_needs_seek: it isn't good enough for non-fports.
1558 ports.c, ioext.c, fports.c: corresponding changes.
1559 (struct scm_port_table): give it a typedef and rename to scm_port.
1560 ports.c, fports.c, strports.c, vports.c, ioext.c, ports.h:
1561 corresponding changes.
1562
1563 1999-04-20 Gary Houston <ghouston@easynet.co.uk>
1564
1565 * ports.c (scm_newptob): bugfix: set seek member.
1566 * (scm_lseek): new procedure, using code from ioext.c:scm_fseek
1567 and generalised to all port types.
1568
1569 1999-04-18 Gary Houston <ghouston@easynet.co.uk>
1570
1571 * scmsigs.c (scm_init_scmsigs): set the SA_RESTART flag for all
1572 signals (it was only being done for handlers installed from Scheme).
1573 Otherwise (for example) SIGSTOP followed by SIGCONT on an interpreter
1574 waiting for input caused an EINTR error from read.
1575
1576 1999-04-07 Gary Houston <ghouston@easynet.co.uk>
1577
1578 * ports.h (struct scm_port_table): make all the char members
1579 unsigned, so they convert to int without becoming negative if large.
1580
1581 1999-03-14 Gary Houston <ghouston@easynet.co.uk>
1582
1583 * fports.c (scm_fdes_wait_for_input): forgot to check compilation
1584 with threads enabled. rename this procedure to
1585 fport_wait_for_input and take a port instead of a fdes.
1586 use scm_fport_input_waiting_p instead of scm_fdes_waiting_p.
1587
1588 * readline.c (scm_readline): Applied a patch from Greg Harvey to
1589 get readline support working again: use fdopen to get FILE objects.
1590
1591 1999-02-26 Gary Houston <ghouston@easynet.co.uk>
1592
1593 * gc.c (scm_init_storage): install an atexit proc to flush the
1594 ports.
1595 (cleanup): the new proc. it sets a global variable which can be
1596 checked by the ptob flush procs to avoid trying to throw
1597 exceptions during exit. not very pleasant but it seems more reliable.
1598 * fports.c (local_fflush): check terminating variable and if set
1599 don't throw exception.
1600 * CHECKME: that the atexit proc is installed if unexec used.
1601
1602 * throw.c (scm_handle_by_message): don't flush all ports here.
1603 it still causes bus errors.
1604
1605 * fports.h (SCM_FPORT_CLEAR_BUFFERS): rename to SCM_CLEAR_BUFFERS
1606 and move to ioext.c.
1607
1608 * fports.c (scm_fdes_waiting_p): merged into fport_input_waiting_p.
1609
1610 * ports.c (scm_char_ready_p): check the port buffer and call the
1611 ptob entry if needed.
1612
1613 * ports.h (scm_ptobfuns): input_waiting_p added. change all the
1614 ptob initialisers. use it in char-ready
1615
1616 * ioext.c (scm_do_read_line): moved from ports.c. make it static.
1617
1618 * vports.c (sfflush): modified to write a char (since softports
1619 currently use shortbuf.)
1620
1621 * fports.c (scm_standard_stream_to_port): moved to init.c and
1622 made static.
1623
1624 * init.c (scm_init_standard_ports): make stdout and stderr
1625 unbuffered if connected to a terminal. with stdio they
1626 were line-buffered by default.
1627
1628 (scm_ptobfuns): fputc, fputs, fwrite, fgetc, fgets removed.
1629 update ptob tables.
1630
1631 * ports.h (scm_ptobfuns): change fflush return to void.
1632 change flush proc definitions.
1633
1634 * strports.c (scm_call_with_output_string): get size from
1635 buffer instead of port stream.
1636 (st_flush): new proc.
1637
1638 * ports.h (struct scm_port_table): added write_end member,
1639 as an optimisation. set it where write_buf_size is set.
1640
1641 * ports.h (struct scm_port_table): change stream from void *
1642 back to SCM. SCM presumably must be large enough to hold a
1643 pointer (and probably vice versa but who knows.)
1644 (SCM_SSTREAM): deleted. change users back to SCM_STREAM.
1645
1646 (scm_puts): rewritten
1647 * fports.c (local_ffwrite, local_fputs): removed.
1648 * strports.c (stputc, stputs, stwrite): dyked out (FIXME)
1649 * vports.c (sfputc, sfputs, sfwrite) likewise.
1650 * ports.c (write_void_port, puts_void_port): removed.
1651 (putc_void_port, getc_void_port, fgets_void_port): likewise.
1652
1653 * ports.c (scm_lfwrite): rewritten using fport.c version.
1654
1655 * fports.c (local_fputc): deleted.
1656
1657 * ports.c (scm_add_to_port_table): initialise write_needs_seek.
1658
1659 * ports.h (scm_ptobfuns): add seek function pointer.
1660 * fports.c: set it to local_seek, new procedure.
1661
1662
1663 * fports.h (SCM_MAYBE_DRAIN_INPUT): moved to ports.c.
1664 use ptob for seek. take ptob instead of fport arg.
1665
1666 * ports.h (struct scm_port_table): new member write_needs_seek,
1667 replaces reading member in fport struct.
1668
1669 * vports.c (sfgetc): store the getted char into the buffer.
1670 rename to sf_fill_buffer and install it for fill-buffer in ptob.
1671 the Scheme interface is still a procedure that gets a char.
1672 (scm_make_soft_port): set up the port buffer (shortbuf).
1673
1674 * fports.c (local_fgetc, local_fgets): deleted.
1675 * strports.c (stgetc): likewise.
1676 * ports.c: scm_generic_fgets: likewise.
1677
1678 * ports.h (scm_ptobfuns): add fill_buffer.
1679 * ports.c (scm_newptob): assign it.
1680 * strports.c (scm_mkstrport): set up the buffer.
1681 put just the string into the stream, not cons (pos stream).
1682 (stfill_buffer): new proc.
1683
1684 * ports.h: fport buffer moved into port table: to be
1685 used for all port types.
1686
1687 1998-12-20 Gary Houston <ghouston@easynet.co.uk>
1688
1689 * throw.c (scm_handle_by_message): flush ports at exit.
1690
1691 * socket.c (scm_sock_fd_to_port): use scm_fdes_to_port.
1692 (scm_getsockopt, scm_setsockopt, scm_shutdown, scm_connect,
1693 scm_bind, scm_listen, scm_accept, scm_getsockname,
1694 scm_getpeername, scm_recv, scm_send, scm_recvfrom,
1695 scm_sendto,
1696 use SCM_FPORT_FDES. use SCM_OPFPORTP not SCM_FPORTP.
1697
1698 * posix.c (scm_getgroups): use SCM_ALLOW/DEFER_INTS.
1699 (scm_ttyname): use SCM_FPORT_FDES.
1700 (scm_tcgetpgrp, scm_tcsetpgrp): likewise.
1701
1702 * filesys.c (scm_chown): use SCM_FPORT_FDES.
1703 (scm_chmod, scm_stat, scm_truncate_file: likewise.
1704
1705 * ioext.c (scm_isatty_p): use SCM_FPORT_FDES.
1706 (scm_fdes_to_ports): modified.
1707 (scm_fdopen): use scm_fdes_to_port.
1708
1709 * ports.c (scm_init_ports): don't try to flush ports using
1710 atexit(). it's too late, errors will cause SEGV.
1711
1712 * fports.c (scm_fport_buffer_add): new procedure.
1713
1714 * fports.h (SCM_FDES_RANDOM_P): new macro. use it in
1715 scm_fdes_to_port and scm_redirect_port.
1716
1717 * ioext.c (scm_redirect_port): use setvbuf to set buffers in the
1718 new port. reset fp->random.
1719
1720 * fports.c (scm_fdes_to_port), ports.c (scm_void_port),
1721 filesys.c (scm_opendir):
1722 restore defer interrupts while the port is constructed.
1723 (scm_setvbuf): if mode is _IOFBF and size is not supplied,
1724 derive buffer size from fdes or use a default.
1725 (scm_fdes_to_port): use setvbuf instead of creating the buffers
1726 directly.
1727
1728 vports.c (various places): use SCM_SSTREAM.
1729 strports.c: likewise.
1730 * gdbint.c: likewise.
1731 * ports.h (SCM_SSTREAM): new macro.
1732
1733 * fports.c (scm_input_waiting_p): use scm_return_first, since port
1734 may be removed from the stack by the tail call to scm_fdes_waiting_p.
1735
1736 * fports.h (SCM_CLEAR_BUFFERS): new macro.
1737
1738 * filesys.c (scm_fsync): use SCM_FDES.
1739
1740 * ports.c (scm_force_output): call scm_fflush.
1741
1742 * print.c (scm_newline): don't check errno for EPIPE (it wouldn't
1743 reach this point.) don't flush port (if scm_cur_outp).
1744
1745 * fports.h (SCM_FPORT_FDES): new macro.
1746
1747 * filesys.c (scm_fcntl): get fdes from fport.
1748 (set_element, get_element): likewise.
1749
1750 * vports.c (sfflush): don't need to set errno.
1751
1752 * ports.c: install scm_flush_all_ports to be run on exit.
1753
1754 * filesys.c (scm_open): adjust port_mode for O_APPEND and O_CREAT.
1755
1756 ports.c fports.c ioext.c posix.c socket.c net_db.c filesys.c:
1757 removed all uses of SCM_DEFER/ALLOW ints for now. they were mainly
1758 just protecting errno. some may need to be put back.
1759
1760 * scmsigs.c (take_signal): save and restore errno while this
1761 proc runs.
1762
1763 *fports.c (print_pipe_port, local_pclose, scm_pipob): deleted.
1764 open-pipe, close-pipe are emulated in (ice-9 popen)
1765 ports.c (scm_ports_prehistory): don't init scm_pipob.
1766 ports.h (scm_tc16_pipe): deleted.
1767 posix.c (scm_open_pipe, scm_close_pipe): deleted.
1768
1769 * ioext.c (scm_primitive_move_to_fdes): use fport.
1770 * fport.c (scm_fport_fill_buffer): flush write buffer if needed.
1771 change arg type from scm_fport to SCM port.
1772 fport.h (SCM_SETFDES): removed.
1773 (SCM_MAYBE_DRAIN_INPUT): new macro.
1774
1775 * fport.h (struct scm_fport): added 'random'.
1776 fport.c (scm_open_file): set random if lseek works.
1777
1778 * ioext.c (scm_dup_to_fdes): use SCM_FSTREAM.
1779 (scm_ftell): always use lseek and account for the buffer.
1780 (scm_fileno): use fport buffer.
1781 (scm_fseek): clear fport buffers. always use lseek.
1782
1783 * posix.c (scm_pipe): use fport buffer.
1784 * unif.c: include fports.h instead of genio.h.
1785 * fports.c (scm_fdes_wait_for_input, scm_fport_fill_buffer): new
1786 procedures.
1787 (local_fgetc): use them.
1788 (local_ffwrite): use buffer.
1789 (local_fgets): use buffer.
1790 (scm_setbuf0): deleted.
1791 (scm_setvbuf): set the buffer.
1792 (scm_setfileno): deleted.
1793 (scm_evict_ports): set fdes directly.
1794 (scm_freopen): deleted. doesn't seem useful in Guile.
1795 (scm_stdio_to_port): deleted.
1796 fports.h (struct scm_fport): add shortbuf member to avoid separate
1797 code for unbuffered ports.
1798 (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP): moved
1799 from ports.h.
1800
1801 * genio.c, genio.h: move contents into ports.c, ports.h. The
1802 division wasn't useful.
1803
1804 * fports.c, fports.h (scm_fport_drain_input): new procedure.
1805 * ports.c (scm_drain_input): call scm_fport_drain_input.
1806 * scm_fdes_waiting_p: new procedure.
1807 * fports.c (scm_fdes_to_port): allocate read and/or write buffers.
1808 (scm_input_waiting_p): check the buffer.
1809 (local_fgetc, local_fflush, local_fputc): likewise.
1810
1811 * fports.h (scm_fport): read/write_buf,_pos,_buf_end,,_buf_size:
1812 new members.
1813 * init.c (scm_init_standard_ports): pass fdes instead of FILE *.
1814
1815 * ports.c (scm_drain_input): new procedure.
1816 ports.h: prototype.
1817 * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
1818 pre_read, pre_write): removed.
1819 (local_fputc, local_fputs, local_ffwrite): use write, not stdio.
1820 (scm_standard_stream_to_port): change first arg from FILE * to
1821 int fdes.
1822 (local_fflush): flush fdes, not FILE *.
1823 * fports.h (SCM_NOFTELL): removed.
1824 * genio.c, ports.c: don't include filesys.h.
1825 * genio.c (scm_getc): don't use scm_internal_select if FPORT.
1826 do it in fports.c:local_fgetc.
1827 * genio.c: don't use SCM_SYSCALL when calling ptob procedures.
1828 do it where it's needed in the port smobs.
1829 * filesys.c (scm_input_waiting_p): moved to fports.c, stdio
1830 buffer support removed. take SCM arg, not FILE *.
1831 * filesys.h: prototype moved too.
1832 * fports.c (scm_fdes_to_port): new procedure.
1833 (local_fgetc): use read not fgetc.
1834 (local_fclose): use close, not fclose.
1835 (local_fgets): use read, not fgets
1836 * fports.h: prototype for scm_fdes_to_port.
1837 * fports.h (scm_fport): new struct.
1838 * fports.c (scm_open_file): use open, not fopen.
1839 #include fcntl.h
1840 * ports.h (struct scm_port_table): change stream from SCM to void *.
1841 * ports.c (scm_add_to_port_table): check for memory allocation error.
1842 (scm_prinport): remove MSDOS hair.
1843 (scm_void_port): set stream to 0 instead of SCM_BOOL_F.
1844 (scm_close_port): don't throw errors: do it in fports.c.
1845
1846 1999-06-04 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
1847
1848 * numbers.c: Added #include "feature.h".
1849
1850 1999-05-23 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1851
1852 * smob.c, smob.h (scm_make_smob_type): New interface to smob
1853 types (supersedes scm_newsmob).
1854 (scm_set_smob_mark, scm_set_smob_free, scm_set_smob_print,
1855 scm_set_smob_equalp): New functions. Sets smob functions.
1856 (SCM_NEWSMOB): New macro. Creates smob objects.
1857 (scm_make_smob): New function. Creates smob objects and
1858 mallocates memory.
1859 (scm_smob_free, scm_smob_print): Default free and print
1860 functions.
1861
1862 * Makefile.am: Removed markers.c, markers.x, markers.h.
1863
1864 * markers.c, markers.h: Removed. (Contents moved to smob.c,
1865 smob.h.)
1866
1867 * arbiters.c, async.c, regex-posix.c: Use new smob interface.
1868
1869 * eval.c, fports.c, libguile.h, ports.c: Removed #include
1870 "markers.h".
1871
1872 * fluids.c, guardians.c, srcprop.c, threads.c: Added #include
1873 "genio.h".
1874
1875 * regex-posix.c, regex-posix.h: Renamed scm_tc16_regex_t -->
1876 scm_tc16_regex.
1877
1878 1999-05-09 Jim Blandy <jimb@savonarola.red-bean.com>
1879
1880 * strop.c (scm_string_capitalize_x): Use the SCM object `s' in
1881 error messages, not the uninitialized string `str'. Love that
1882 typechecking.
1883
1884 * strop.c (scm_substring_move_x): New function, which can handle
1885 arbitrary overlapping substrings.
1886 (substring-move-left!, substring-move-right!): These are
1887 now just synonyms for substring-move!.
1888 * strop.h (scm_substring_move_x): New prototype.
1889 (scm_substring_move_left_x, scm_substring_move_right_x):
1890 #define these as synonyms for scm_substring_move_x.
1891
1892 Fixes, cleanups, and new functions from Greg Harvey.
1893
1894 1999-05-03 Greg Harvey <Greg.Harvey@thezone.net>
1895
1896 * strop.c (scm_string_capitalize_x, scm_string_capitalize): new
1897 functions; capitalize the first letter of each word in the
1898 argument string, and downcase the rest.
1899 (scm_string_ci_to_symbol): string->symbol, such that the same
1900 symbol is returned for any argument where the only difference
1901 between strings is in capitalization.
1902 (scm_string_upcase, scm_string_downcase): non-destructive
1903 versions.
1904
1905 1999-01-13 Greg Harvey <Greg.Harvey@thezone.net>
1906
1907 * strop.c (scm_substring_move_left_x, scm_substring_move_right_x):
1908 changed to use memmove.
1909 * strop.c (scm_i_index): removed the pos arguments (it's only
1910 called twice, and each time it's SCM_ARG1, SCM_ARG2, SCM_ARG3,
1911 SCM_ARG4).
1912
1913 1999-01-11 Greg Harvey <Greg.Harvey@thezone.net>
1914
1915 * strop.h: fixed prototypes.
1916
1917 * strop.c (scm_substring_move_left_x, scm_substring_move_right_x):
1918 changed to have 5 required args, rather than 2 required, and 3 required
1919 rest args. Also modified to allow str1 & str2 to overlap.
1920 (scm_substring_fill_x): changed to 4 args, rather than 2 args and
1921 2 required rest args.
1922
1923 1999-05-02 Jim Blandy <jimb@savonarola.red-bean.com>
1924
1925 * procs.h: Doc fix.
1926
1927 * Makefile.am (modinclude_HEADERS): Add kw.h, so the new version
1928 gets installed.
1929 * Makefile.in: Regenerated.
1930
1931 * numbers.c: If we're supporting floating-point, provide the
1932 feature "inexact".
1933
1934 * scmconfig.h.in: Regenerated; see today's change to
1935 ../configure.in.
1936
1937 1999-04-17 Jim Blandy <jimb@savonarola.red-bean.com>
1938
1939 * Makefile.in: Regenerated.
1940
1941 Remove readline support, to avoid copyright confusion.
1942 * Makefile.am: Remove readline files from lists.
1943 * init.c: Don't initialize readline.
1944 * scmconfig.h.in: Regenerated.
1945
1946 * numbers.c (s_bignum): Renamed to s_bignum, and made static.
1947 Libguile should not be exporting random little strings.
1948 * numbers.h (s_bignum): Extern declaration removed.
1949
1950 More const changes from Ken Raeburn.
1951 * numbers.c (scm_s_bignum, fx): Now const.
1952 (scm_logtab, scm_ilentab, s_adjbig): Now static and const.
1953 * numbers.h (scm_s_bignum): Update declaration.
1954 * eval.c (bodycheck): Argument WHAT now points to const.
1955 * snarf.h (SCM_SYNTAX): Name is const.
1956
1957 * eval.c (scm_i_let): Make this globally visible, to avoid dynamic
1958 linking crashes on NetBSD. (Thanks to Ken Raeburn.)
1959
1960 1999-03-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1961
1962 * numbers.c (isfinite): Define this macro if not defined: Return a
1963 non-zero value if X is finite. (From ISO C 9x standard.)
1964 (scm_inexact_to_exact): Bugfix: Don't pass NaNs to scm_dbl2big.
1965 (Thanks to Jon Trowbridge and Greg Harvey.)
1966
1967 1999-03-22 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1968
1969 * keywords.c (scm_tc16_kw): Added for backward compatibility.
1970 Will be removed in next release.
1971
1972 * Makefile.am (modinclude_HEADERS): Added kw.h;
1973
1974 * kw.h: New file.
1975
1976 * libguile.h: #include "libguile/kw.h"
1977
1978 1999-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1979
1980 * pairs.c (scm_set_car_x, scm_set_cdr_x): Return SCM_UNSPECIFIED.
1981
1982 1999-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1983
1984 * print.c (scm_isymnames): Added #@dispatch and #@hash-dispatch.
1985
1986 * hashtab.c, hashtab.h (scm_hash_fold, scm_internal_hash_fold):
1987 Place the table argument last.
1988
1989 1999-03-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
1990
1991 * modules.c: #include "procprop.h"
1992 (scm_system_module_env_p): Assume root environment is no lookup
1993 closure is found.
1994
1995 * debug.c, eval.c, evalext.c, gdbint.c stacks.c:
1996 #include "modules.h".
1997
1998 * modules.c, modules.h, eval.c, eval.h (scm_env_top_level,
1999 scm_top_level_env, scm_system_module_env_p): Moved to modules.c.
2000
2001 * eval.c, eval.h (scm_top_level_lookup_closure): Removed.
2002
2003 1999-03-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2004
2005 * error.c (scm_wta): Pass SCM_LIST1 (arg) instead of SCM_EOL to
2006 scm_misc_error when pos is a string. This allows for dispatching
2007 arbitrary error messages with one argument via SCM_ASSERT:
2008 SCM_ASSERT (<cond>, obj, "Undigestable object: %S", <subr>);
2009
2010 1999-03-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2011
2012 * list.c (scm_reverse): Report an error if given a circular list
2013 instead of filling memory.
2014 * list.c (scm_reverse_x): Check args.
2015
2016 1999-03-14 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2017
2018 Most of this batch of changes is about how to deal with extended
2019 types when an object system is loaded into Guile. A nice object
2020 system is capable of representing Guile's types as class objects.
2021
2022 For example, we want a regular expression to be of class <regex>.
2023 But regular expressions are smobs which aren't under direct
2024 control of the object system, so there has to be some mechanism
2025 which informs the object system that a new class should be created
2026 which can represent the smob type. I call this a "wrapper class".
2027
2028 * objects.c: #include "smob.h";
2029 (scm_class_keyword): Removed. (Class is automatically created by
2030 make_smob_classes.)
2031 (scm_smob_class): Array of smob classes indexed by smobnum.
2032 (scm_make_extended_class): "Plugin" function pointer for creation
2033 of wrapper classes for smob and struct types.
2034 (scm_class_of): Handle compiled closures. (Currently regarded as
2035 <procedure>.);
2036 Use scm_smob_class to handle smob types;
2037 Handle scm_tc16_bigpos, scm_tc16_bigneg, and, scm_tc16_keyword
2038 through scm_smob_class;
2039 Handle structs.
2040
2041 * smob.c (scm_newsmob): Also create a wrapper class if
2042 scm_smob_class has been initialized.
2043
2044 * smob.h (SCM_TC2SMOBNUM): New macro for conversion between tc16
2045 type code and smobnum.
2046
2047 * struct.c: #include "alist.h", "weaks.h", "hashtab.h";
2048 (scm_struct_table): Weak key table with auxilliary information for
2049 struct types. Currently used for names and wrapper classes.
2050 (scm_struct_ihashq): Hash function for structs.
2051 (scm_struct_create_handle): Get/create entry in scm_struct_table.
2052 (scm_struct_vtable_name, scm_set_struct_vtable_name_x): Procedures
2053 for accessing names of vtables. The record implementation in
2054 boot-9.scm currently uses the setter to record the name of record
2055 types. When the object system is initialized, it can use this
2056 information to create wrapper classes with suitable names.
2057 (scm_init_struct): Allocate scm_struct_table.
2058 (scm_alloc_struct): Don't initialize scm_struct_i_tag here.
2059 (struct tags are a finite resource and we might want to restrict
2060 the use of tags to vtables only. E.g., Goops only uses tags for
2061 classes.)
2062 (scm_make_struct): Use scm_struct_entity_n_extra_words instead of
2063 magic number 5.
2064 (scm_struct_vtable_tag): Use scm_struct_i_tag instead of magic
2065 number -1.
2066
2067 * struct.h (SCM_STRUCT_TABLE_NAME, SCM_SET_STRUCT_TABLE_NAME,
2068 SCM_STRUCT_TABLE_CLASS, SCM_SET_STRUCT_TABLE_CLASS): New macros.
2069 Used for access of struct table entries.
2070
2071 * hashtab.c, hashtab.h (scm_internal_hash_fold): New function.
2072 (scm_hash_fold): New procedure. Used to process all entries in a
2073 hash table (in no particular order).
2074
2075 Argh! For the umpteenth time I got compilation errors because of
2076 the "intuitive" name `kw'. This has to have an end:
2077
2078 * Makefile.am, init.c, libguile.h, objects.c, root.h: Replaced
2079 "kw" --> "keywords" everywhere.
2080 (I doubt that this will cause big compatibility problems since the
2081 application interface is unaffected.)
2082
2083 * keywords.c, keywords.h: Files renamed from kw.c, kw.h.
2084
2085 1999-03-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2086
2087 * srcprop.c (scm_set_source_property_x): Bugfix: Convert line and
2088 column inums to native form.
2089
2090 Improvement of backtraces: Introduces a new stack narrowing
2091 specifier, #t, for the inner cut. (See further in the comments in
2092 stacks.c:narrow_stack ().)
2093
2094 * procprop.c, procprop.h (scm_sym_system_procedure): New symbol.
2095 (Used to flag certain system procedures which shouldn't turn up in
2096 backtraces.)
2097
2098 * eval.c (scm_sym_system_module): New symbol. (Used to flag
2099 modules which aren't "user" modules and the code of which
2100 shouldn't turn up in backtraces.)
2101
2102 * eval.c, eval.h (scm_top_level_lookup_closure): New function:
2103 Extract the lookup closure from an environment.
2104 (scm_system_module_env_p): New function: Return non-#f if MODULE
2105 is a system module.
2106
2107 * stacks.c: #include "eval.h"; #include "procprop.h";
2108 (narrow_stack): Handle new narrowing specifier #t.
2109
2110 * debug.c (scm_procedure_name): Use name property in the default
2111 case.
2112
2113 * gc.c, gc.h (scm_object_address): Renamed from scm_object_addr ().
2114
2115 * objects.h (scm_si_redefined, scm_si_hashsets): Shifted.
2116
2117 * eval.c, procs.c, procs.h, procprop.c: Renamed getter ->
2118 procedure throughout.
2119
2120 * print.c (scm_iprin1): Removed extraneous space when printing
2121 procedure-with-setters.
2122
2123 Entity and operator setter slots were introduced as a complement
2124 to the <procedure-with-setter> type in order to support entities
2125 and operators with setters in a reasonable and efficient way.
2126 * procs.c (scm_procedure, scm_setter): Handle entity and operator
2127 setter slots.
2128
2129 * objects.h (SCM_OPERATOR_SETTER, SCM_ENTITY_SETTER): New macros.
2130 (struct scm_metaclass_operator): New setter slot.
2131
2132 * gc.c (scm_gc_mark): Mark struct setter slot.
2133
2134 * struct.c (scm_make_struct): Allocate one word more for
2135 entities and initialize the new slot.
2136
2137 * struct.h (scm_struct_i_setter): New constant.
2138
2139 1999-03-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2140
2141 * objects.h (SCM_OBJ_CLASS_REDEF): New macro: Find class slots
2142 directly through the instance.
2143
2144 * objects.c (scm_class_of): Use SCM_OBJ_CLASS_REDEF.
2145
2146 * gc.c (scm_gc_sweep): Bugfix: Look for SCM_STRUCT_F_LIGHT flag at
2147 scm_struct_i_flags instead of scm_vtable_index_layout!
2148
2149 * list.c (scm_list_star): New procedure.
2150
2151 1999-02-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2152
2153 * debug.c (scm_init_debug): Added scheme level constant
2154 SCM_IM_DISPATCH.
2155
2156 1999-02-12 Jim Blandy <jimb@savonarola.red-bean.com>
2157
2158 * __scm.h (SCM_FENCE): Fix `asm volatile' warnings for EGCS.
2159
2160 * gc.c (scm_gc_sweep): Properly properly record the size of a
2161 freed structure. (Thanks to Greg Harvey.)
2162
2163 1999-02-07 Jim Blandy <jimb@savonarola.red-bean.com>
2164
2165 * gc.c (scm_gc_sweep): Properly record the size of a freed
2166 structure. (Thanks to Michael Livshin.)
2167
2168 1999-02-06 Jim Blandy <jimb@savonarola.red-bean.com>
2169
2170 Readline paren matching from Greg Harvey, with modifications from
2171 Mikael Djurfeldt:
2172
2173 * readline.c (in_readline, reentry_barrier_mutex): Make these
2174 static.
2175
2176 * readline.c: #include <sys/time.h> and "iselect.h", so we can
2177 control how long we're paused, and threads will run while we're
2178 paused.
2179 (match_paren, find_matching_paren, init_bouncing_parens): New
2180 functions.
2181 (scm_init_readline): Call init_bouncing_parens.
2182 (scm_readline_opts): Add the bounce-parens option.
2183 * readline.h (SCM_READLINE_BOUNCE_PARENS): New readline option.
2184 (SCM_N_READLINE_OPTIONS): Adjust.
2185
2186 1999-02-06 Jim Blandy <jimb@zwingli.cygnus.com>
2187
2188 All the below are changes from Ken Raeburn, to get Guile to use
2189 const where it can.
2190
2191 * chars.c (scm_lowers, scm_uppers, scm_charnames, scm_charnums),
2192 eval.c (s_expression, s_test, s_body, s_bindings, s_variable,
2193 s_clauses, s_formals): Variables now const.
2194
2195 * eval.c (promsmob): Now const.
2196 * macros.c (macrosmob): Now const.
2197 * smob.c (scm_newsmob): Smobfuns argument now points to const.
2198 (freecell, flob, bigob): Now const.
2199
2200 * dynl.c (scm_make_argv_from_stringlist, scm_coerce_rostring),
2201 error.c (scm_error, scm_syserror, scm_syserror_msg,
2202 scm_num_overflow, scm_out_of_range, scm_wrong_type_arg,
2203 scm_memory_error, scm_misc_error, scm_wta), macros.c
2204 (scm_make_synt), feature.c (scm_add_feature), filesys.c
2205 (scm_input_waiting_p), gc.c (scm_gc_start, scm_igc,
2206 scm_must_malloc, scm_must_realloc), gsubr.c (scm_make_gsubr),
2207 numbers.c (scm_num2dbl, scm_two_doubles, scm_num2long,
2208 scm_num2long_long, scm_num2ulong),
2209 options.c (scm_options), posix.c (scm_convert_exec_args,
2210 environ_list_to_c), procs.c (scm_make_subr_opt, scm_make_subr),
2211 ramap.c (scm_ramapc), read.c (scm_flush_ws), socket.c
2212 (scm_sock_fd_to_port, scm_fill_sockaddr, scm_addr_vector), stime.c
2213 (setzone, restorezone, bdtime2c), strop.c (scm_i_index),
2214 strports.c (scm_mkstrport), symbols.c (scm_intern_obarray_soft,
2215 scm_intern_obarray, scm_intern, scm_intern0,
2216 scm_sysintern0_no_module_lookup, scm_sysintern, scm_sysintern0,
2217 scm_symbol_value0), unif.c (scm_aind, scm_shap2ra): Argument
2218 indicating calling subr, error message text, reason for error,
2219 symbol name or feature name are now pointer to const.
2220 * snarf.h (SCM_PROC, SCM_PROC1): String variables are now const.
2221
2222 * procs.c (scm_init_iprocs): iproc argument now points to const.
2223 * pairs.c (cxrs): Now const.
2224
2225 * chars.h, error.h, feature.h, filesys.h, gc.h, gsubr.h, macros.h,
2226 numbers.h, options.h, procs.h, ramap.h, read.h, smob.h,
2227 strports.h, symbols.h, unif.h: Update variable declarations and
2228 function prototypes for above changes.
2229
2230 * dynl.c, dynl-dld.c, dynl-dl.c, dynl-shl.c (sysdep_dynl_link,
2231 sysdep_dynl_unlink, sysdep_dynl_func): Arguments FNAME, SUBR, and
2232 SYMB now point to const.
2233
2234 1999-01-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2235
2236 * print.c (scm_iprin1): Use scm_procedure_name instead of
2237 scm_procedure_property for compiled closures.
2238
2239 * tags.h (scm_tc7_pws): New procedure type. Four representations
2240 for procedure-with-setters were considered before selecting this
2241 one:
2242
2243 1. A closure where the CODE and ENV slots are used to represent
2244 the getter and a new SETTER slot is used for the setter. The
2245 original getter is stored as a `getter' procedure property. For
2246 closure getters, the CODE and ENV slots contains a copy of the
2247 getter's CODE and ENV slots. For subr getters, the CODE contains
2248 a call to the subr.
2249
2250 2. A compiled closure with a call to the getter in the cclo
2251 procedure. The getter and setter are stored in slots 1 and 2.
2252
2253 3. An entity (i.e. a struct with an associated procedure) with a
2254 call to the getter in the entity procedure and the setter stored
2255 in slot 0. The original getter is stored in slot 1.
2256
2257 4. A new primitive procedure type supported in the evaluator. The
2258 getter and setter are stored in a GETTER and SETTER slot. A call
2259 to this procedure type results in a retrieval of the getter and a
2260 jump back to the correct eval dispatcher.
2261
2262 Representation 4 was selected because of efficiency and
2263 simplicity.
2264
2265 Rep 1 has the advantage that there is zero penalty for closure
2266 getters, but primitive getters will get considerable overhead
2267 because the procedure-with-getter will be a closure which calls
2268 the getter.
2269
2270 Rep 3 has the advantage that a GOOPS accessor can be a subclass of
2271 <procedure-with-setter>, but together with rep 2 it suffers from a
2272 three level dispatch for non-GOOPS getters:
2273
2274 cclo/struct --> dispatch proc --> getter
2275
2276 This is because the dispatch procedure must take an extra initial
2277 argument (cclo for rep 2, struct for rep 3).
2278
2279 Rep 4 has the single disadvantage that it uses up one tc7 type
2280 code, but the plan for uniform vectors will very likely free tc7
2281 codes, so this is probably no big problem. Also note that the
2282 GETTER and SETTER slots can live directly on the heap, using the
2283 new four-word cells.
2284
2285 * procs.c, procs.h (SCM_PROCEDURE_WITH_SETTER_P, SCM_GETTER,
2286 SCM_SETTER): New macros.
2287 (scm_procedure_with_setter_p, scm_make_procedure_with_setter,
2288 scm_getter, scm_setter): New procedures.
2289
2290 * eval.c, print.c (scm_iprin1): Added entries for scm_tc7_pws.
2291
2292 * gc.c (scm_gc_mark, scm_gc_sweep): Added case labels for
2293 scm_tc7_pws.
2294
2295 * objects.c, objects.h (scm_class_of,
2296 scm_class_procedure_with_setter): Added.
2297
2298 * procprop.c (scm_i_procedure_arity), procs.c (scm_thunk_p): Added
2299 entry for scm_tc7_pws.
2300
2301 * procs.c (scm_procedure_p): Added case label for scm_tc7_pws.
2302
2303 1999-01-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2304
2305 * evalext.c, evalext.h (scm_m_generalized_set_x): New memoizing
2306 macro.
2307 (scm_init_evalext): Call scm_make_gsubr for
2308 scm_m_generalized_set_x.
2309
2310 * eval.c, debug.c, tags.h (SCM_IM_SET_X): Renamed from SCM_IM_SET.
2311
2312 * eval.h: Declare scm_s_set_x, scm_sym_set_x;
2313
2314 * eval.c: Renamed "set" --> "set_x" in various names for
2315 consistency of name correspondence between Scheme and C;
2316 Renamed scm_i_set_x --> scm_sym_set_x and made global.
2317 Renamed s_set_x --> scm_s_set_x and made global.
2318
2319 1999-01-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2320
2321 * random.c (scm_i_random_bignum): Made independent of endianness.
2322
2323 1999-01-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2324
2325 * eval.c (SCM_CEVAL): Added ENTER_APPLY in code for SCM_IM_APPLY.
2326 (Thanks to Eric Hanchrow.)
2327
2328 1999-01-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2329
2330 * objects.c, objects.h (SCM_CLASS_REDEF): Renamed from CLASS_REDEF.
2331
2332 * random.c: Bugfix: Retrieve and store most significant 32 bits in
2333 different order if the machine is bigendian.
2334 (scm_init_random): Added safety check for bignum digit size.
2335
2336 1999-01-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2337
2338 * random.c, random.h (scm_i_make_rstate): New function: Makes
2339 scm_rstate from seed.
2340 (scm_copy_random_state, scm_seed_to_random_state): New functions.
2341 (scm_make_random_state): Removed.
2342
2343 * random.c (scm_make_random_state): Use scm_i_make_rstate().
2344
2345 1999-01-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2346
2347 * random.c: Bugfix: Retrieve and store most significant 32 bits in
2348 different order if the machine is bigendian.
2349 (scm_init_random): Added safety check for bignum digit size.
2350
2351 1999-01-11 Roland Orre <mdj@mdj.nada.kth.se>
2352
2353 * sort.c (scm_merge, scm_merge_list_x): Bugfix: Place elements
2354 from first arg before equal elements in second arg in result.
2355 (scm_merge_list_step): Bugfix: Don't presume that arguments in a C
2356 function call are executed in a well defined order.
2357
2358 1999-01-11 Jim Blandy <jimb@zwingli.cygnus.com>
2359
2360 * alloca.c (alloca): Cast value returned by malloc. (Thanks to
2361 Christian Lynbech.)
2362
2363 1999-01-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2364
2365 * random.c: Removed alloca includes.
2366
2367 1999-01-11 Jim Blandy <jimb@zwingli.cygnus.com>
2368
2369 * Makefile.in: This changed, for some reason I don't really
2370 understand, when I ran automake in the top level directory. This
2371 may be contamination by Cygnus internal releases. If you re-run
2372 automake and this change gets reverted, don't worry about it.
2373
2374 1999-01-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2375
2376 * sort.c, sort.h: New files: Implement slib's and scsh's sort
2377 interfaces. Author: Roland Orre.
2378
2379 * Makefile.am: Added sort.c, sort.h, sort.x.
2380
2381 * init.c: #include "sort.h";
2382 (scm_boot_guile_1): Call scm_init_sort ().
2383
2384 * numbers.h: Added #include "libguile/print.h".
2385
2386 * numbers.c: Formatted according to Guile conventions;
2387 Renamed s_bignum --> scm_s_bignum.
2388
2389 * random.c, random.h: New files: Random number support.
2390 Interface same as slib's.
2391
2392 * Makefile.am: Added random.c, random.h, random.x.
2393
2394 * init.c: #include "random.h";
2395 (scm_boot_guile_1): Call scm_init_random ().
2396
2397 1998-12-23 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2398
2399 * Makefile.am: New files: guardians.c, guardians.x, guardians.h
2400
2401 * guardians.c, guardians.h (scm_make_guardian,
2402 scm_guardian_gc_init, scm_guardian_zombify, scm_guard,
2403 scm_get_one_zombie, scm_init_guardian): This is an implementation
2404 of guardians as described in R. Kent Dybvig, Carl Bruggeman, and
2405 David Eby (1993) "Guardians in a Generation-Based Garbage
2406 Collector" ACM SIGPLAN Conference on Programming Language Design
2407 and Implementation, June 1993 ftp://ftp.cs.indiana.edu
2408 /pub/scheme-repository/doc/pubs/guardians.ps.gz
2409 Author: Michael N. Livshin.
2410
2411 * gc.h (SCM_MARKEDP, SCM_NMARKEDP): New macros.
2412
2413 * gc.c (scm_igc): Call scm_guardian_gc_init and
2414 scm_guardian_zombify.
2415
2416 * init.c (scm_boot_guile_1): Call scm_init_guardian.
2417
2418 1998-12-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2419
2420 * macros.c (scm_makacro, scm_makmacro, scm_makmmacro): Added
2421 argument checking.
2422
2423 1998-12-15 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2424
2425 Move the procedure slots of entities to invisible slots (so that
2426 we can have operator class objects which themselves are entities).
2427 * struct.h (scm_struct_i_proc, scm_struct_i_flags,
2428 SCM_STRUCTF_ENTITY): New constants.
2429
2430 * struct.c (scm_make_struct): Allocate "invisible" room for
2431 procedures if SCM_STRUCTF_ENTITY is set in vtable.
2432
2433 * gc.c (scm_gc_mark): Mark entity procedures.
2434
2435 * struct.c, struct.h (scm_alloc_struct): Renamed from alloc_struct
2436 and made global.
2437 (scm_struct_init): Renamed from init_struct and made global.
2438
2439 * objects.h (SCM_ENTITY, scm_entity): Removed.
2440 (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_0,
2441 SCM_ENTITY_PROC_3): Adjusted for new location of procedure slots.
2442
2443 Mon Dec 14 18:10:12 1998 Maciej Stachowiak <mstachow@mit.edu>
2444
2445 * snarf.h (SCM_SYNTAX): New macro to allow convenient declaration
2446 of syntactic forms, similar to SCM_PROC.
2447 * debug.c, eval.c, evalext.c: use SCM_SYNTAX to declare all special
2448 forms, and SCM_SYMBOL or SCM_GLOBAL_SYMBOL to delcare C variables
2449 for the name symbols when needed.
2450
2451 1998-12-14 Jim Blandy <jimb@zwingli.cygnus.com>
2452
2453 * Makefile.in: Regenerated.
2454
2455 1998-12-05 Jim Blandy <jimb@zwingli.cygnus.com>
2456
2457 * pairs.h (SCM_NEWCELL): When DEBUG_FREELIST is defined, don't
2458 take the address of _into; it might be a register. Just have
2459 scm_debug_newcell return the new cell.
2460 * gc.c (scm_debug_newcell): Just return the new cell, instead of
2461 taking the address of a place to store it as an argument.
2462 * gc.h (scm_debug_newcell): Change declaration.
2463 (Thanks to Greg Harvey.)
2464
2465 1998-12-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2466
2467 * ramap.c (array-copy-in-order!, array-map-in-order): New names.
2468 Replaces old names serial-array-copy! and serial-array-map!.
2469
2470 * evalext.c (map-in-order): New name. Replaces serial-map.
2471
2472 1998-12-05 Jim Blandy <jimb@totoro.red-bean.com>
2473
2474 * smob.c (freeprint): New function.
2475 (freecell): Use it to print freed objects, for slightly easier
2476 debugging.
2477
2478 1998-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2479
2480 * backtrace.c (display_frame): Made more robust. Doesn't throw an
2481 error if no source properties can be found for a frame. (Thanks
2482 to Christian Lynbech.)
2483
2484 1998-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2485
2486 * objects.h: Removed slots direct_supers and direct_slots from the
2487 definitions of the rudimentary classes described by objects.h.
2488
2489 * objects.c, objects.h (scm_entity_p): New procedure. Together
2490 with the predicates scm_procedure_p and scm_struct_p, this
2491 predicate makes it possible to differ between structs, entities
2492 and operators.
2493
2494 * modules.c, modules.h (scm_resolve_module): New function.
2495
2496 1998-11-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2497
2498 * objects.h (SCM_METACLASS_STANDARD_LAYOUT,
2499 SCM_METACLASS_OPERATOR_LAYOUT): Removed slots `direct_supers' and
2500 `direct_slots'.
2501
2502 * objects.c (scm_entity_p): New procedure.
2503
2504 * procprop.c (scm_i_procedure_arity): Bugfix: Return correct value
2505 for asubrs, rpsubrs, lsubrs and lsubr_2s.
2506
2507 1998-11-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2508
2509 * procprop.h (scm_i_procedure_arity): Added declaration.
2510
2511 * procprop.c (scm_i_procedure_arity): Made global; New code to
2512 handle operators and entities.
2513 (scm_procedure_property): No need to call scm_procedure_p since
2514 scm_i_procedure_arity now does all necessary type checking.
2515 Added #include "objects.h".
2516
2517 * feature.c (scm_remove_hook_x): Bugfix: Changed reference to
2518 s_add_hook_x --> s_remove_hook_x.
2519 (scm_add_hook_x, scm_remove_hook_x): Hooks now takes arguments.
2520 Added #include "procprop.h"
2521
2522 * feature.c, feature.h (scm_reset_hook_x): New procedure.
2523 (scm_make_hook): Optional argument defines number of arguments to
2524 the hook.
2525 (scm_make_named_hook): Take number of args as second arg.
2526 (scm_run_hook): Renamed from scm_run_hooks (old name defined in
2527 boot-9.scm for a while); First arg is the hook. The rest are
2528 arguments passed on to the hook procedures.
2529
2530 1998-11-23 Jim Blandy <jimb@zwingli.cygnus.com>
2531
2532 * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest,
2533 scm_logbit_p): Do the computation in ulongs. This is not as nice
2534 as doing it in bignums, but at least it's good enough for
2535 manipulating flags in 32-bit words. (Thanks to Jim Wilson.)
2536
2537 * regex-posix.c (scm_regexp_exec): Reliably mark unmatched
2538 subexpressions. (Thanks to Charbel Jacquin.)
2539
2540 1998-11-23 Mikael Djurfeldt <mdj@kenneth>
2541
2542 * feature.c, feature.h (scm_make_hook, scm_add_hook_x,
2543 scm_remove_hook_x, scm_run_hooks): Moved from ice-9/boot-9.scm.
2544 (scm_make_named_hook): New function.
2545
2546 * feature.c: Added #include "eval.h".
2547
2548 * modules.c (scm_make_module): Beautify the module.
2549
2550 1998-11-22 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2551
2552 * modules.c, modules.h: New files: C interface to modules. (This
2553 is necessary in order to interface the object system to Guile
2554 properly. The guts of these modules will be replaced by the new
2555 module system in the future.)
2556
2557 * init.c: Added #include "modules.h"
2558 (scm_boot_guile_1): Call scm_init_modules.
2559 (invoke_main_func): Call scm_post_boot_init_modules.
2560
2561 * Makefile.am: Added modules.c, modules.x, modules.h.
2562
2563 1998-11-22 Mikael Djurfeldt <mdj@kenneth>
2564
2565 * procs.c: #include "objects.h"
2566 (scm_procedure_p): Return #t also on structs which are operators.
2567
2568 * objects.c (scm_init_objects): Renamed <standard-metaclass>,
2569 <operator-metaclass> and <entity-class> to <standard-class>,
2570 <operator-class> and <entity> in order to conform with STKlos
2571 naming conventions.
2572
2573 * eval.c (SCM_CEVAL): Jump to badfun if trying to apply a struct
2574 which isn't an operator.
2575 (SCM_APPLY): Ditto, but jump to badproc.
2576
2577 1998-11-21 Mikael Djurfeldt <mdj@kenneth>
2578
2579 * eval.c (SCM_CEVAL): Allow structs implanted in code.
2580 Previously, structs implanted in code were interpreted as forms
2581 the operator of which was a gloc. We solve this by checking for
2582 the zero in the emulated vcell in the struct vtable. Since
2583 implanted structs always will look like forms with a gloc
2584 operator, execution will only be slowed down by maximally one
2585 extra test-and-branch per application.
2586
2587 * evalext.c (scm_definedp): Removed check for isyms; Added a
2588 second optional argument: It is now possible to supply an
2589 evaluation environment in which to look for the symbol.
2590
2591 1998-11-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2592
2593 * readline.c (scm_init_readline): Set
2594 rl_basic_word_break_characters. (Thanks to Ian Grant.)
2595
2596 * coop.c (coop_condition_variable_wait): Removed
2597 (coop_condition_variable_wait_mutex): Folded logic of
2598 coop_mutex_unlock into coop_condition_variable_wait_mutex to
2599 prevent condvar signal lossage. Previously, another thread could
2600 start to run after unlocking the mutex but before putting the
2601 current thread on the wait queue. If that thread then would
2602 signal the first, the signal would be lost. (Thanks to Christian
2603 Lynbech.)
2604
2605 1998-11-17 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2606
2607 * eval.c (SCM_CEVAL): Added missing case for cclo. (Thanks to
2608 Christian Lynbech.)
2609
2610 1998-11-14 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2611
2612 * objects.c (scm_i_make_class_object): Renamed from
2613 make_class_object; exported; error checking moved to
2614 scm_make_class_object and scm_make_subclass_object.
2615 (scm_make_class_object, scm_make_subclass_object): Use
2616 scm_i_make_class_object.
2617 (scm_make_subclass_object): Let the subclass have same metaclass
2618 as the superclass.
2619
2620 1998-11-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2621
2622 * debug.c (scm_debug_options): Bugfix: Set the value of
2623 scm_stack_checking_enabled_p after setting debug options;
2624 #include "stackchk.h". (Thanks to Richard Polton.)
2625
2626 1998-11-13 Radey Shouman <rshouman@metro2000.com>
2627
2628 * unif.c (scm_array_contents): removed unnecessary test for 0
2629 base.
2630
2631 1998-11-13 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2632
2633 * evalext.c, evalext.h (scm_m_sequence_to_list): Removed.
2634 Replaced by macro `collect' in boot-9.scm.
2635
2636 1998-11-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2637
2638 * eval.c (scm_copy_tree): Copy source properties if existent.
2639
2640 * debug.c (scm_start_stack): Copy source when evaluating. (If we
2641 don't, we may end up passing memoized source to a transformer.)
2642
2643 1998-11-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2644
2645 * stack.c (get_applybody): Help function which lookups the first
2646 body form of the apply closure.
2647 (read_frames): Prevent the source of the first form of the apply
2648 closure from being recorded. This would only be confusing.
2649
2650 * debug.h (SCM_SET_MACROEXP, SCM_CLEAR_MACROEXP, SCM_MACROEXPP):
2651 Replaces SCM_MACROFRAME, SCM_MACROFRAMEP.
2652
2653 * eval.c (SCM_CEVAL): Use SCM_SET/CLEAR_MACROEXP.
2654
2655 * stacks.c (read_frame): Bugfix: Removed lingering `else'
2656 statement.
2657 (read_frames): Use SCM_MACROEXPP.
2658
2659 1998-11-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2660
2661 * stacks.c (read_frames): Skip gsubr frames in backtraces. (They
2662 don't contain interesting information since all arguments are
2663 present in the frame which applies the compiled closure anyway.);
2664 Skip the transformer application frames.
2665
2666 * print.c (scm_iprin1): Print gsubrs as primitives.
2667
2668 1998-11-09 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2669
2670 * debug.h (SCM_MACROFRAME, SCM_MACROFRAMEP): New frame type.
2671
2672 * eval.c (SCM_CEVAL): Mark macro frames at `handle_a_macro' so
2673 that we can identify these in a backtrace. (This change doesn't
2674 introduce any significant speed penalty.)
2675
2676 * eval.c: Added note about `serial-map' using scm_map.
2677
2678 * read.c, read.h (scm_read_options, scm_read_opts): Removed
2679 readline options. They should reside in their own options array.
2680
2681 * readline.c, readline.h (scm_readline_options,
2682 scm_readline_opts): Moved readline options here.
2683
2684 1998-11-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2685
2686 * readline.c (scm_read_history, scm_write_history): Bugfix: Use
2687 SCM_ROCHARS instead of SCM_CHARS.
2688
2689 * ports.c (scm_unread_string): Bugfixes: Check for SCM_STRINGP,
2690 not SCM_ROSTRINGP; use SCM_ROUCHARS instead of SCM_UCHARS.
2691
2692 1998-11-06 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2693
2694 * ports.h (SCM_CUC): #define as ~SCM_CRDY instead of 0x001fffffL.
2695 This is quite important since the latter clears the
2696 FPORT_READ_SAFE and FPORT_WRITE_SAFE flags causing flushes at
2697 every single character read...
2698
2699 1998-11-03 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2700
2701 * print.c (scm_iprin1): Removed suspect looking (and indeed
2702 malevolent) semicolon after test for user supplied closure print
2703 procedure. (Thanks to Telford Tendys.)
2704
2705 * list.c (scm_sloppy_memq): Removed sloppy_mem_check.
2706 (scm_memq, scm_memv, scm_member): Do argument checking *before*
2707 starting to search the list. Removed call to sloppy_mem_check.
2708
2709 * list.c, list.h (scm_delq1_x, scm_delv1_x, scm_delete1_x): New
2710 procedures: Same as scm_delq_x et al, but delete maximally one
2711 element.
2712
2713 * options.c (scm_options, scm_init_options): GC-protect option
2714 values of type SCM. (Thanks to Telford Tendys.)
2715
2716 1998-11-01 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2717
2718 * eval.c: Don't #define scm_lookupcar to scm_lookupcar1. Instead
2719 make sure that there always is a "real" scm_lookupcar.
2720
2721 1998-11-01 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2722
2723 * read.c, read.h (scm_read_opts): New read options
2724 "history-length" and "history-file".
2725 (scm_read_options): Stifle history to history length.
2726
2727 * readline.c (scm_read_history, scm_write_history): New procedures.
2728
2729 1998-10-31 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2730
2731 * eval.h (scm_macro_eval_x): Removed declaration.
2732
2733 * eval.c (scm_s_expression, scm_s_test, scm_s_body,
2734 scm_s_bindings, scm_s_variable, scm_s_clauses, scm_s_formals):
2735 Renamed and made global.
2736
2737 * eval.c, eval.h (SCM_EVALIM): Renamed from EVALIM.
2738 (SCM_XEVAL, SCM_XEVALCAR): Renamed from XEVAL, XEVALCAR.
2739
2740 * evalext.c, evalext.h: New files. Contain non-R5RS things
2741 having to do with evaluation.
2742
2743 * evalext.c (scm_serial_map): New procedure: Version of `map'
2744 which guarantees that the procedure is applied to the lists in
2745 serial order.
2746 (scm_m_sequence_to_list): New syntax: Version of `begin' which
2747 returns a list of the results of the body forms instead of the
2748 result of the last body form.
2749 (scm_definedp, scm_m_undefine): Moved from eval.c
2750
2751 * evalext.h (scm_m_sequence_to_list): Added declaration.
2752
2753 * macros.c, macros.h: New files.
2754 (scm_procedure_to_syntax, scm_procedure_to_macro,
2755 scm_procedure_to_memoizing_macro, scm_macro_p, scm_macro_type,
2756 scm_macro_name, scm_macro_transformer): Moved from eval.c
2757 (scm_make_synt): Moved from eval.c
2758
2759 * procs.c, procs.h (scm_procedure_documentation): Moved from eval.c.
2760
2761 * init.c (scm_boot_guile_1): Added calls to scm_init_macros and
2762 scm_init_evalext.
2763
2764 * Makefile.am: Added evalext.c, evalext.h, macros.c, macros.h.
2765
2766 * debug.c, print.c: Added #include "macros.h".
2767
2768 1998-10-29 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2769
2770 This change adds the ability to use `unread-char' multiple times
2771 without interspersed reads and adds the new procedure
2772 `unread-string'. The change is optimized for the common case of
2773 unreading a single character. This is also the reason behind the
2774 choice to store characters in the port itself: in most cases no
2775 extra malloc is required.
2776
2777 The amount of code in some macros in ports.h has been increased to
2778 the extent that they would fit better as C functions, but, since
2779 this code belongs to the port representation, such functions
2780 should be placed in ports.c which would cause calls back and forth
2781 between ports.c and genio.c. That is not good for performance.
2782 Also, keeping them as macros allows the compiler to do some
2783 optimizations which are needed to make the current interface
2784 (SCM_CRDYP, SCM_CGETUN, SCM_TRY_CLRDY) efficient.
2785
2786 One benchmark (Guile startup time) indicates an increase of
2787 loading speed of 1%. Another (reading (using `read') boot-9.scm
2788 10 times) shows no change in performance.
2789
2790 (Caveat: Since Gary is redesigning I/O anyway, no big efforts were
2791 made to find a beautiful solution.)
2792
2793 * ports.h (SCM_CLRDY, SCM_CUNGET, SCM_CGETUN): Rewritten.
2794 (SCM_TRY_CLRDY): New macro: Only clear the first unread
2795 character. (SCM_CLRDY clears all.)
2796 (SCM_N_READY_CHARS): New macro: Returns number of unread
2797 characters in a port. Returns wrong answer if SCM_CRDYP is false.
2798 (struct scm_port_table): New fields: `entry' contains port table
2799 index, `cp' points to last unread char, `cbuf' is the buffer for
2800 unread chars, `cbufend' points after end of the character buffer.
2801
2802 * ports.h, ports.c (scm_unread_string): New procedure.
2803 (scm_grow_port_cbuf): New function.
2804
2805 * ports.c (scm_add_to_port_table, scm_remove_from_port_table):
2806 Handle new fields.
2807 (scm_generic_fgets), fports.c (local_fgets): Use a loop
2808 to read unread characters. Use SCM_TRY_CLRDY instead of
2809 SCM_CLRDY.
2810
2811 * ioext.c (scm_ftell): Use SCM_N_READY_CHARS to correct position.
2812
2813 * genio.c (scm_getc): Use SCM_TRY_CLRDY instead of SCM_CLRDY.
2814
2815 * genio.c, genio.h (scm_ungets): New function.
2816
2817 * genio.c (scm_puts): Removed mysterious TRANSCRIPT_SUPPORT code
2818 sections.
2819
2820 1998-10-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2821
2822 * threads.h (scm_thread_sleep, scm_thread_usleep): Fixed
2823 declarations. (Thanks to Russ McManus.)
2824
2825 1998-10-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2826
2827 * numbers.c (num2long): As a software archeologist, I'm proud of
2828 this finding! :) Preliminary dating suggests an almost 4 year old
2829 remnant from the SCM ancestor. The sample has been removed from
2830 the finding site and is now safely stored in the repository.
2831
2832 * numbers.h: Removed prototype for num2long.
2833
2834 * unif.c (scm_array_set_x): Use scm_num2long instead of num2long.
2835
2836 * gh_data.c (gh_scm2doubles): Make it possible to pass result
2837 array as second arg.
2838 (gh_chars2byvect, gh_shorts2svect, gh_floats2fvect, gh_scm2chars,
2839 gh_scm2shorts, gh_scm2longs, gh_scm2floats): New functions.
2840 * gh.h: Updated and added prototypes.
2841
2842 * gh_data.c (gh_ints2scm): Handle integers outside INUM limits.
2843
2844 1998-10-24 Jim Blandy <jimb@zwingli.cygnus.com>
2845
2846 * gc.h: Remove all uses of SCM_P. (Thanks to Richard Polton.)
2847
2848 * guile-snarf.in: Never generate an empty file. (Thanks to
2849 Richard Polton.)
2850
2851 * gh.h (gh_enter, gh_new_procedure0_0, gh_new_procedure0_1,
2852 gh_new_procedure0_2, gh_new_procedure1_0, gh_new_procedure1_1,
2853 gh_new_procedure1_2, gh_new_procedure2_0, gh_new_procedure2_1,
2854 gh_new_procedure2_2, gh_new_procedure3_0, gh_new_procedure4_0,
2855 gh_new_procedure5_0): Specify argument types, to appease C++
2856 compilers. (Thanks to Brad Bowman.)
2857
2858 Bug reports from Russ McManus:
2859 * guile-snarf.in: If the CPP environment variable is set, use that
2860 as the C preprocessor, instead of the preprocessor autoconf
2861 found.
2862 * snarf.h (SCM_PROC): Cast the function pointer passed to
2863 scm_make_gsubr, to satisfy C++.
2864
2865 * gh_eval.c (gh_eval_str_with_catch, gh_eval_file_with_catch):
2866 Use the handler passed, instead of ignoring it and using
2867 gh_standard_handler. (Thanks to Etienne Bernard.)
2868
2869 1998-10-20 Jim Blandy <jimb@zwingli.cygnus.com>
2870
2871 * ports.h: Put text after #endif in comment. (Thanks to Nicolas
2872 Neuss.)
2873
2874 1998-10-19 Jim Blandy <jimb@zwingli.cygnus.com>
2875
2876 * __scm.h, alist.c, async.c, async.h, backtrace.h, chars.c,
2877 continuations.c, debug.c, debug.h, dynl-dl.c, dynl.c, dynl.h,
2878 dynwind.c, dynwind.h, eq.c, error.c, error.h, eval.c, eval.h,
2879 feature.c, filesys.c, filesys.h, fports.c, fports.h, gc.c, gc.h,
2880 genio.c, genio.h, gh.h, gh_data.c, gsubr.c, gsubr.h, hash.c,
2881 hashtab.c, init.c, init.h, ioext.c, ioext.h, kw.c, libguile.h,
2882 list.c, list.h, load.c, load.h, mallocs.c, markers.c,
2883 mit-pthreads.c, net_db.c, numbers.c, numbers.h, options.c,
2884 ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c,
2885 procprop.h, procs.c, procs.h, ramap.c, ramap.h, regex-posix.c,
2886 regex-posix.h, root.c, root.h, scmsigs.c, scmsigs.h, script.c,
2887 script.h, simpos.c, simpos.h, smob.c, smob.h, snarf.h, socket.c,
2888 srcprop.c, stackchk.c, stackchk.h, stacks.c, stime.c, stime.h,
2889 strings.c, strings.h, strports.c, struct.c, struct.h, symbols.c,
2890 symbols.h, tags.h, threads.c, throw.h, unif.c, variable.c,
2891 vectors.c, vectors.h, version.h, vports.c, weaks.c: Update
2892 copyright years.
2893
2894 * script.c (scm_compile_shell_switches): Define
2895 use-emacs-interface in the root module, so the repl code can see
2896 it. See today's change to top-repl in ice-9/boot-9.scm.
2897
2898 * filesys.c (set_element, get_element): Make sure that `element'
2899 is a cell before applying SCM_FPORTP to it. (Thanks to Jost
2900 Boekemeier and Jorgen "forcer" Schaefer.)
2901
2902 1998-10-18 Jim Blandy <jimb@zwingli.cygnus.com>
2903
2904 * chars.c (scm_charnames): In ASCII character name table, make
2905 newlines print as #\newline by default, not #\nl.
2906
2907 * Makefile.am (libguile_la_SOURCES, BUILT_SOURCES): Put these in
2908 alphabetical order. Oh thrills. But it helps me know how far
2909 along in the compilation I am.
2910 * Makefile.in: Regenerated.
2911
2912 1998-10-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2913
2914 * unif.c (scm_raprin1): Changed print syntax for byte vectors from
2915 #bytes(...) to #y(...), and syntax for short vectors from
2916 #short(...) to #h(...). This may seem nutty, but, like the other
2917 uniform vectors, byte vectors and short vectors want to have the
2918 same print and read syntax (and, more basic, want to have read
2919 syntax!). Changing the read syntax to use multiple characters
2920 after the hash sign breaks with the conventions used in R5RS and
2921 the conventions used for the other uniform vectors. It also
2922 introduces complexity in the current reader, both on the C and
2923 Scheme levels. (The Right solution is probably to change the
2924 syntax and prototypes for uniform vectors entirely.)
2925
2926 1998-10-17 Jim Blandy <jimb@savonarola.red-bean.com>
2927
2928 Don't use local_fgets on sockets; ftell doesn't work on sockets.
2929 (Thanks to Jorgen "forcer" Schaefer.)
2930 * ports.h (SCM_NOFTELL): New flag.
2931 * fports.c (local_fgets): If it's set, use the generic fgets.
2932 * socket.c (scm_socket): Set SCM_NOFTELL on the ports we produce.
2933
2934 1998-10-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
2935
2936 * script.c (scm_compile_shell_switches): Add handling of -q switch
2937 (inhibit loading of user init file).
2938 (scm_shell_usage): Add usage text for -q switch.
2939 (scm_compile_shell_switches): Always load user init file first if
2940 it is loaded at all.
2941
2942 1998-10-16 Jim Blandy <jimb@zwingli.cygnus.com>
2943
2944 * stime.c: The CPP hair to determine a value for CLKTCK is weird,
2945 and is now broken under NetBSD. I can't fathom what it's trying
2946 to do, so I've replaced it with something that I do understand,
2947 which seems to work, and which isn't broken on NetBSD. "Progress?
2948 You Decide." (Thanks to Perry Metzger.)
2949
2950 * regex-posix.c (scm_regexp_exec): Add a cast to remove a
2951 signed/unsigned comparison.
2952
2953 1998-10-15 Jim Blandy <jimb@zwingli.cygnus.com>
2954
2955 Warning fixes from Greg Harvey:
2956 * unif.c (scm_array_set_x): initializer for pos
2957 * throw.c (scm_ithrow): added initializer for jmpbuf (SCM_UNDEFINED)
2958 * struct.c (scm_struct_ref, scm_struct_set_x): Added
2959 initializers for field_type, since EGCS so desparately wants to
2960 play dumb
2961 * debug.h (scm_make_gloc, scm_gloc_p, scm_make_iloc, scm_memcons,
2962 scm_mem_to_proc, scm_proc_to_mem, scm_debug_hang): Added prototypes
2963 when GUILE_DEBUG is defined.
2964 * dynwind.h (scm_wind_chain): Same.
2965 * ports.h (scm_pt_size, scm_pt_member): Same.
2966 * print.h (scm_current_pstate): Same.
2967 * procs.h (scm_make_cclo): Same.
2968
2969 1998-10-14 Jim Blandy <jimb@zwingli.cygnus.com>
2970
2971 Handle short and long long uniform arrays properly. (Thanks to
2972 Clark McGrew.)
2973 * ramap.c (scm_ra_matchp, scm_array_fill_int, scm_array_index_map_x,
2974 raeql_1): Add cases for scm_tc7_svect (short vectors) and
2975 scm_tc7_llvect (long long vectors).
2976
2977 Change the way libguile and boot-9.scm are timestamped, to try to
2978 get rid of these spurious mismatch warnings. Now both
2979 libguile/versiondat.h and ice-9/version.scm are generated directly
2980 by the configuration process, rather than having version.scm
2981 generated directly, and libguile/versiondat.h generated by the
2982 Makefile, which is generated by configure. It seems that
2983 sometimes the Makefile would change, but versiondat.h depends on
2984 Makefile.in, not Makefile, so it wouldn't get rebuilt.
2985 * Makefile.am (versiondat.h): Target removed; this is generated
2986 directly by the configure script now.
2987 (BUILT_SOURCES): Remove versiondat.h.
2988 * versiondat.h.in: New file, transformed by the configure script
2989 into versiondat.h.
2990 * Makefile.in: Regenerated.
2991
2992 * (__scm.h, alist.c, eval.c, feature.c, gsubr.c, numbers.c,
2993 options.c): Rename RECKLESS -> SCM_RECKLESS, CAUTIOUS ->
2994 SCM_CAUTIOUS; this way, 1) there's only one version of each flag
2995 to define (we used to have both RECKLESS and SCM_RECKLESS), and 2)
2996 if we want to use them in a header file some day, we can. (Thanks
2997 to Michael Livshin.)
2998
2999 * stime.c (scm_get_internal_real_time): Do the arithmetic using
3000 SCM numbers, so we won't have rollover problems; the range of a
3001 signed long in milliseconds is about 25 days. (Thanks to Karl
3002 Hegbloom.)
3003
3004 Don't redefine sleep and usleep; fix this problem now.
3005 * coop.c (sleep, usleep): Remove declarations; we don't use or
3006 redefine these any more.
3007 (scm_thread_usleep, scm_thread_sleep): New functions which do the
3008 job of usleep and sleep in a thread-friendly way. We can use
3009 these in the rest of Guile. Define versions for systems both with
3010 and without iselect.
3011 * threads.h (scm_thread_usleep, scm_thread_sleep): New declarations.
3012 * scmsigs.c (usleep): Clean up oddities declaring usleep; since
3013 we're just using it, not redefining it, we can use a K&R style
3014 declaration here.
3015 (sleep): Declare this, too, if the system hasn't.
3016 (scm_sleep, scm_usleep): Use scm_thread_sleep and
3017 scm_uthread_sleep if they're available; otherwise, just call the
3018 system functions.
3019 * scmconfig.h.in: Regenerated.
3020
3021 * coop.c (scm_thread_sleep): Make `slept' an unsigned long.
3022
3023 * coop.c (coop_sleephelp): Remove ANSI #ifdef hair.
3024
3025 1998-10-12 Jim Blandy <jimb@zwingli.cygnus.com>
3026
3027 * threads.c: Doc fix.
3028
3029 The argument type of usleep varies from system to system,
3030 as does the return type. We really shouldn't be redefining usleep
3031 at all, but I don't have time to clean that up before the 1.3.
3032 release. It's on the schedule for afterwards. (Thanks to Julian
3033 Satchell.)
3034 * coop.c (usleep): Use USLEEP_ARG_TYPE in prototype and
3035 definition.
3036 * scmsigs.c (usleep): Use USLEEP_ARG_TYPE in prototype.
3037 * scmconfig.h: Regenerated.
3038
3039 * simpos.c (scm_software_type): Procedure deleted. This isn't the
3040 right way to handle system variation. Autoconf's approach is the
3041 way and the light.
3042 * simpos.h (scm_software_type): Declaration deleted.
3043
3044 * script.c (scm_find_executable): Don't test if unix is #defined
3045 here; first, NetBSD doesn't #define it, and second, it's the wrong
3046 way to go about these things. (Thanks to Perry Metzger.)
3047 (dld_find_executable): Delete this MSDOS support code. This isn't
3048 the way we want to support this; it needs to be rethunk at a
3049 larger scale.
3050
3051 * genio.c (scm_do_read_line): Don't just politely check that the
3052 line was either non-empty or EOF. Abort if it's empty and not
3053 EOF.
3054
3055 1998-10-11 Jim Blandy <jimb@zwingli.cygnus.com>
3056
3057 * scmconfig.h.in: Regenerated.
3058
3059 * libguile.h: Don't omit the dynamic linking functions. (Thanks
3060 to Greg Badros.)
3061
3062 * genio.c (scm_do_read_line): Count lines correctly when the file
3063 doesn't end in a newline.
3064
3065 1998-10-10 Jim Blandy <jimb@zwingli.cygnus.com>
3066
3067 * genio.c (scm_do_read_line): Maintain the line count correctly.
3068 (Thanks to Harvey J. Stein and Greg Harvey.)
3069
3070 * gc.c (scm_return_first): Remove #ifdef __STDC__ garbage; Guile
3071 requires ANSI now.
3072
3073 * numbers.c (big2str): Protect t from garbage collection until
3074 we're done. (Thanks to Gary Houston.)
3075
3076 1998-10-09 Jim Blandy <jimb@zwingli.cygnus.com>
3077
3078 * Makefile.am (libguile_la_LDFLAGS): Increment shared library
3079 version number.
3080 * Makefile.in: Regenerated.
3081
3082 * fports.h (scm_setbuf0, scm_setvbuf, scm_setfileno,
3083 scm_evict_ports, scm_open_file, scm_stdio_to_port): Get rid of
3084 SCM_P macro.
3085
3086 Do magic to mix reads and writes on stdio FILE-based ports.
3087 (Thanks to Christian Lynbech.)
3088 * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY):
3089 New macros.
3090 (pre_read, pre_write): New functions.
3091 (local_fgetc, local_fgets, local_ffwrite, local_fputc,
3092 local_fputs): Call them.
3093 (local_fflush): Mark the port as ready for reading and writing.
3094 (scm_stdio_to_port): Set the FPORT_READ_SAFE, FPORT_WRITE_SAFE
3095 flags on new port objects. This might not be accurate --- who
3096 knows what state the FILE * is in when we get it --- but it won't
3097 do extraneous calls to fflush or fseek, so it's no worse than the
3098 behavior before this change.
3099 * ports.h: Add comment.
3100
3101 Centralize the creation of port objects based on stdio FILE * in
3102 fports.c; don't just throw them together anywhere.
3103 * fports.c (scm_stdio_to_port): Make NAME a SCM value, which is
3104 what the rest of Guile wants. Don't set the revealed count;
3105 that's only appropriate for stdin, stdout, stderr.
3106 (scm_standard_stream_to_port): This function does set the revealed
3107 count.
3108 * init.c (scm_init_standard_ports): Use scm_standard_stream_to_port,
3109 not scm_stdio_to_port.
3110 * filesys.c (scm_open): Call scm_stdio_to_port; don't write it out.
3111 * fports.c (scm_open_file): Same.
3112 * posix.c (scm_pipe): Same.
3113 * socket.c (scm_sock_fd_to_port): Same.
3114 * ioext.c (scm_fdopen): Same.
3115 (scm_freopen): Moved from here to...
3116 * fports.c (scm_freopen): ... here. This is really something that
3117 munges the internals of an fport, so it should go here.
3118 * fports.h (scm_stdio_to_port): Adjust prototype.
3119 (scm_standard_stream_to_port, scm_freopen): New protoypes.
3120 * ioext.h (scm_freopen): Prototype removed.
3121
3122 * filesys.c (set_element, get_element): This can work on both pipe
3123 and file ports, so use SCM_FPORTP to typecheck, instead of testing
3124 for scm_tc16_fport.
3125
3126 * scmconfig.h.in: Regenerated.
3127
3128 Change the definition of the functions in scm_ptobfuns so that
3129 they get passed the port object, not the port's stream.
3130 * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'.
3131 * gc.c (scm_gc_sweep): Pass the port itself to the free function.
3132 * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc):
3133 Pass the port itself to the scm_ptobs function.
3134 * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports,
3135 scm_generic_fgets): Same.
3136 (putc_void_port, puts_void_port, write_void_port, flush_void_port,
3137 getc_void_port, fgets_void_port, close_void_port): Just change the
3138 argument names; these functions don't really do anything.
3139 * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush,
3140 local_fputc, local_fputs, local_ffwrite, local_pclose): Take the
3141 port as an argument, and use SCM_STREAM to get the stdio FILE *.
3142 Also, use prototyped definitions, and get rid of the extra
3143 declarations.
3144 (scm_fptob, scm_pipob): We don't need casts here any more.
3145 * strports.c (prinstpt): Use prototype declarations.
3146 (stputc, stwrite, stputs, stgetc): Take the port as an argument,
3147 and use SCM_STREAM to get the string info. Also, use prototyped
3148 definitions, and get rid of the extra declarations.
3149 * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose,
3150 noop0): Same.
3151
3152 * ports.h (scm_ptobfuns): Replace uses of SCM_P with a straight
3153 prototype; it's okay (preferred, even!) to use ANSI C in Guile.
3154
3155 * fports.c (local_fgetc, local_fgets): Renamed from scm_fgetc and
3156 scm_fgets, for consistency.
3157 (scm_fptop, scm_pipob): References updated.
3158
3159 1998-10-08 Jim Blandy <jimb@zwingli.cygnus.com>
3160
3161 Include the source location in error messages for scripts.
3162 * init.c (scm_boot_guile_1): Use scm_internal_lazy_catch, so the
3163 stack is still there when we catch the error.
3164 * throw.c (handler_message): If we are handling an error with a
3165 message, then put together the proper arguments and call
3166 scm_display_error, instead of scm_display_error_message. That
3167 displays source location, if it can find it.
3168
3169 1998-10-07 Jim Blandy <jimb@zwingli.cygnus.com>
3170
3171 * gc.c (scm_unprotect_object): Change this so that calls to
3172 scm_protect_object and scm_unprotect_object nest properly.
3173 (scm_protect_object): Doc fixes.
3174
3175 * strings.c (scm_string_set_x): Require the argument to be a
3176 writable string, not a substring or a symbol.
3177 * strings.h (SCM_RWSTRINGP, SCM_NRWSTRINGP): New predicates.
3178 (Thanks to John Redford and Charbel Jacquin.)
3179
3180 * scmconfig.h.in: Regenerated; ../acconfig.h has changed.
3181
3182 1998-10-07 Jim Blandy <jimb@totoro.red-bean.com>
3183
3184 * eval.c (safe_setjmp): Remove this misunderstanding.
3185 (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Replace with references to
3186 ordinary setjmp.
3187
3188 1998-10-06 Jim Blandy <jimb@zwingli.cygnus.com>
3189
3190 * libguile.h: Mark these as C declarations, for compilation by C++
3191 compilers.
3192
3193 * snarf.h (SCM_PROC, SCM_PROC1): Remove very odd code in #ifdef
3194 __cplusplus clause. I seriously doubt this ever worked the way
3195 the author seems to have intended.
3196
3197 1998-10-05 Jim Blandy <jimb@zwingli.cygnus.com>
3198
3199 Utterly needless cleanups to hopelessly messy code.
3200 * ports.c: Doc fixes.
3201 (scm_fflush): Moved to ...
3202 * genio.c (scm_fflush): ... here, amongst all the other port
3203 method invocation functions.
3204 * genio.h, ports.h: The prototype moves too.
3205
3206 1998-10-04 Jim Blandy <jimb@zwingli.cygnus.com>
3207
3208 * backtrace.c (display_error_body): The current frame does not
3209 always have a parent frame; consider a function called directly
3210 from the MAIN_FUNC passed to scm_boot_guile. (Thanks to Maciej
3211 Stachowiak.)
3212
3213 * alloca.c (alloca): Undo yesterday's changes, and simply call
3214 malloc directly for storage, and abort if we don't get what we
3215 want. The situation is much simpler --- just call malloc. Emacs
3216 has bizarre/evil requirements (signal handlers might malloc unless
3217 you set this global flag, so you have to set the flag around all
3218 calls to malloc) which we are certainly not going to conform to,
3219 so we can do the simple and obvious thing.
3220
3221 * coop.c (coop_condition_variable_wait): Make this function
3222 static. It's only useful internally --- you should never just
3223 wait on a condition variable.
3224 * coop-defs.h (coop_condition_variable_wait): Delete prototype.
3225
3226 1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
3227
3228 * unif.c (scm_array_set_x): Accept any kind of number as an
3229 element for a uniform vector of doubles. This is more consistent
3230 with Scheme's view of numbers. (Thanks to Miroslav Silovic.)
3231
3232 * alloca.c: Use scm_must_malloc to obtain storage. Hopefully this
3233 works; I can't conveniently test it myself. (Thanks to Dvid
3234 Tillman for the bug report.)
3235
3236 * init.c: Doc fixes.
3237
3238 * init.c (invoke_main_func): Load the startup files (boot-9.scm)
3239 from here, not from scm_compile_shell_switches (which is a pretty
3240 dumb place to do it).
3241 (scm_load_startup_files): New function.
3242 (scm_ice_9_already_loaded): Variable moved to here from script.c.
3243 * script.c (scm_compile_shell_switches): Don't load the startup
3244 files here.
3245 (scm_ice_9_already_loaded): Variable moved.
3246 * init.c (scm_load_startup_files): Prototype for new function.
3247 * gh_init.c (gh_enter): Doc fix.
3248
3249 1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
3250
3251 Some anti-warning changes from Greg Harvey.
3252 * gh_data.c (gh_scm2doubles): Initialize m, to avoid compiler
3253 warnings when it doesn't understand our NORETURN declarations in
3254 error.h.
3255 * posix.c (scm_mknod): Similar.
3256
3257 1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
3258
3259 * posix.c (scm_getpwuid): If we can't find an entry, return our
3260 own message, instead of using scm_syserror --- the getpwMUMBLE
3261 functions don't set `errno' to anything interesting.
3262
3263 1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
3264
3265 Get rid of warnings from the cooperative threading system.
3266 * threads.h (scm_single_thread_p, scm_yield,
3267 scm_call_with_new_thread, scm_join_thread, scm_make_mutex,
3268 scm_lock_mutex, scm_unlock_mutex, scm_make_condition_variable,
3269 scm_wait_condition_variable, scm_signal_condition_variable): Add
3270 prototypes for these Scheme-visible functions.
3271 * coop-defs.h (coop_next_runnable_thread,
3272 coop_wait_for_runnable_thread_now, coop_wait_for_runnable_thread):
3273 Prototypes for these here, even though they're from iselect.c.
3274 (coop_condition_variable_wait, coop_join): Add prototypes.
3275 * coop-threads.c (scm_threads_free_thread, scm_threads_free_mutex,
3276 scm_threads_free_condvar): Make these smob functions static.
3277 * coop-threads.h (coop_init): Give this a real prototype.
3278 * coop.c: #include <unistd.h>, if we have it, for `usleep' and `sleep'.
3279 (coop_next_runnable_thread): No need to provide prototype; it's in
3280 coop-defs.h.
3281
3282 * scmconfig.h.in: .detarenegeR
3283
3284 * iselect.c, threads.c: Doc fixes.
3285
3286 1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
3287
3288 * Makefile.in: Regenerated with a patched automake, to get
3289 dependency generation right when using EGCS.
3290
3291 * inet_aton.c (inet_aton): Add prototype, to remove compiler
3292 warning. (Thanks to Robert Pluim.)
3293
3294 * inet_aton.c (inet_aton): Reassure the compiler that the
3295 arguments to the <ctype.h> macros are all unsigned characters, not
3296 signed characters.
3297
3298 1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com>
3299
3300 Getting rid of more warnings...
3301 * iselect.c: Test for MISSING_BZERO_DECL, not DECLARE_BZERO; see
3302 today's change to ../configure.in.
3303 * scmsigs.c: Test for MISSING_USLEEP_DECL, not DECLARE_USLEEP.
3304 * scmconfig.h.in: Regenertaded.de.,.__
3305 * stime.c (strptime): Declare this, #ifdef MISSING_STRPTIME_DECL.
3306 (scm_localtime, scm_mktime): Use a const char * to manipulate the
3307 time zone name.
3308
3309 * readline.c: Doc fix.
3310 (rl_cleanup_after_signal, rl_free_line_state): Make these static.
3311 * readline.h (scm_filename_completion_function): Add prototype.
3312 (scm_init_readline): Make this into a prototype.
3313
3314 * readline.c (scm_filename_completion_function): Use SCM_PROC to
3315 declare this, instead of calling scm_make_subr manually.
3316
3317 1998-10-02 Jim Blandy <jimb@savonarola.red-bean.com>
3318
3319 * readline.h (scm_init_readline): Add prototype for this.
3320 (scm_init_readline): Make this a real prototype.
3321
3322 1998-09-30 Jim Blandy <jimb@zwingli.cygnus.com>
3323
3324 Warning fixes from Maciej Stachowiak:
3325 * backtrace.h (scm_display_application, scm_backtrace): Add
3326 prototypes.
3327 * debug.c (scm_m_start_stack): Make this function static.
3328 * fluids.h (scm_fluid_p): Add prototype.
3329 * procprop.c (scm_i_procedure_arity): Make this function static.
3330 * regex-posix.c (scm_regexp_error_msg): Make this function static.
3331 * regex-posix.h (scm_init_regex_posix): Use prototype, not K&R decl.
3332 * root.h (scm_dynamic_root): Add external prototype.
3333 * scmsigs.h (scm_usleep): Add external prototype.
3334 * script.h (scm_init_script): Use prototype, not K&R decl.
3335 * stacks.h (scm_stack_id): Add external prototype.
3336 * symbols.h (scm_sysintern0_no_module_lookup): Add external prototype.
3337
3338 1998-09-30 Mark Galassi <rosalia@cygnus.com>
3339
3340 * gh.h: took out the definitions of vset and vref, since they are
3341 replaced by the proper vector routines that correspond to the R4RS
3342 procedures.
3343
3344 1998-09-29 Jim Blandy <jimb@totoro.red-bean.com>
3345
3346 * snarf.h (SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): New macros;
3347 these are analogous to SCM_VCELL and SCM_GLOBAL_VCELL but take a
3348 third argument, a C expression that should result in a SCM value,
3349 which is used to initialize the variable. Reimplemented
3350 SCM_CONST_LONG in terms of SCM_VCELL_INIT. (Thanks to Maciej
3351 Stachowiak.)
3352
3353 * version.h (scm_libguile_config_stamp): Add prototype.
3354 (From Maciej Stachowiak.)
3355
3356 1998-09-26 Jim Blandy <jimb@zwingli.cygnus.com>
3357
3358 * eval.c (scm_force): Assert that x is SCM_NIMP to fix segv when
3359 (force 9) is tried. (Thanks to Karl M. Hegbloom.)
3360
3361 1998-09-06 Jim Blandy <jimb@zwingli.cygnus.com>
3362
3363 * print.c (scm_iprin1): Rather than having one i, and using it in
3364 several places, declare a fresh i local to each block where it is
3365 used, and give it a signedness appropriate to its use in each case.
3366 (scm_iprlist): Same.
3367
3368 * print.c (scm_iprin1): Add cast to avoid unsigned/signed
3369 comparison warnings.
3370
3371 * print.c (ENTER_NESTED_DATA): Make i an unsigned long, to avoid
3372 signed/unsigned clashes.
3373
3374 * posix.h (scm_tmpnam): Added prototype.
3375
3376 * objects.h (scm_set_object_procedure_x, scm_make_class_object,
3377 scm_make_subclass_object): Add external prototypes.
3378
3379 * numbers.c (scm_mkbig): Add cast, and note that signed/unsigned
3380 comparison is okay here.
3381
3382 * numbers.c (scm_istr2int): Add cast; len is known to be positive.
3383
3384 * numbers.c (scm_bigcomp): Clarify logic, and avoid relying on the
3385 (true, but confusing) fact that -1 == ((unsigned) 0 - 1).
3386
3387 * numbers.c (scm_adjbig): Make nsiz an scm_sizet, to avoid mixing
3388 signed/unsigned.
3389
3390 * load.c (swap_port): Make this function static.
3391
3392 * load.c (scm_search_path): Make max_path_len and max_ext_len
3393 unsigned, since they're compared against string sizes.
3394
3395 * load.c (init_build_info): Make i unsigned.
3396
3397 * ioext.h (scm_read_line): Add prototype.
3398
3399 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
3400 scm_hash_fn_remove_x): Make hash bucket index local variable k
3401 unsigned. Use scm_ulong2num to pass it to SCM_ASSERT as
3402 accurately as possible.
3403
3404 * gh_data.c (gh_set_substr): Add casts to avoid signed/unsigned
3405 comparisons, and range checking to make sure those casts are
3406 harmless.
3407
3408 * stackchk.h (SCM_STACK_OVERFLOW_P): Change definition to avoid
3409 signed/unsigned comparisons.
3410
3411 * smob.c (scm_numsmob): Make this an int, not an scm_sizet, to
3412 avoid signed/unsigned comparisons.
3413 * smob.h (scm_numsmob): Change extern declaration to match.
3414
3415 * ports.c (scm_numptob): Make this an int, not an scm_sizet, to
3416 avoid signed/unsigned comparisons.
3417 * ports.h (scm_numptob): Change extern declaration to match.
3418 (scm_current_load_port, scm_set_port_line_x,
3419 scm_set_port_column_x): New prototypes.
3420
3421 * gsubr.c (GSUBR_TEST): Don't #define this. Nobody's using the
3422 test code, and it causes warnings.
3423
3424 * gh.h (gh_int2scmb, gh_uniform_vector_length,
3425 gh_uniform_vector_ref): Added prototypes.
3426
3427 * Makefile.am (libguile_la_SOURCES): Include Scheme-level
3428 debugging support unconditionally. That's backtrace.c, stack.c,
3429 debug.c, and srcprop.c.
3430 (EXTRA_libguile_la_SOURCES): Omit those from here.
3431 * Makefile.in: Regenerated.
3432
3433 1998-08-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3434
3435 * options.c (scm_options): Bugfix: Allow empty list of options!
3436
3437 * debug.c, debug.h (scm_single_step): Removed.
3438 (scm_with_traps): New procedure. This procedure could easily be
3439 written in Scheme but needs to be highly optimized.
3440
3441 * eval.h, eval.c: New evaluator trap flag: SCM_TRAPS_P.
3442
3443 * eval.c (SCM_CEVAL, SCM_APPLY): Removed resetting of trap flags.
3444 Check SCM_TRAPS_P before trapping.
3445
3446 1998-07-30 Jim Blandy <jimb@zwingli.cygnus.com>
3447
3448 Changes to avoid signed/unsigned comparison warnings.
3449 * gc.c (scm_mtrigger, scm_heap_size): Make these unsigned longs.
3450 (scm_gc_sweep): Make n and j local to the blocks they're used in,
3451 so they can have appropriate types for each application. Make i
3452 signed. Use initializers in some spots. I'll probably pay for
3453 all this tweaking.
3454 (scm_must_malloc, scm_must_realloc): Use scm_sizet for size args.
3455 (scm_must_realloc): Make nm unsigned.
3456 (init_heap_seg): Make new_seg_index and n_new_objects signed.
3457 (scm_init_storage): Use prototype-style definition, and make the
3458 argument unsigned.
3459 * gc.h (scm_heap_size, scm_mtrigger, scm_must_malloc,
3460 scm_must_realloc, scm_init_storage): Adjust prototype accordingly.
3461
3462 * filesys.c (scm_readlink): Make local vars rv and size ints, to
3463 avoid signed/unsigned comparison warnings, and because the return
3464 value of readlink may be -1. Don't bother casting the third
3465 argument to readlink.
3466
3467 * filesys.c (scm_dirname, scm_basename): Move these to their own
3468 page, at the end of the file.
3469 * filesys.h (scm_dirname, scm_basename): Add prototypes for these.
3470
3471 * eval.h (scm_eval_options_interface): Add external prototype for this.
3472 * eval.c (scm_eval_options_interface): Use prototype-style def'n.
3473
3474 * eval.c (scm_lookupcar1): Make this static.
3475
3476 * dynl.h (scm_registered_modules, scm_clear_registered_modules):
3477 Make these prototype declarations, not K&R-style.
3478
3479 * chars.c (scm_tables_prehistory): Add cast, to remove signed/
3480 unsigned comparison warning.
3481
3482 * appinit.c: File removed. It had a single function in it, empty,
3483 whose reason for existence is explained in no documentation or
3484 comment. I think it's there as a default for some Tcl-style
3485 initialization, but Tcl abandoned that approach a while ago.
3486 * Makefile.am (libguile_la_SOURCES): Remove appinit.c.
3487 (BUILT_SOURCES): Remove appinit.x.
3488 * Makefile.in: Regenerated.
3489
3490 1998-07-29 Jim Blandy <jimb@zwingli.cygnus.com>
3491
3492 * Makefile.in: Regenerated using the last public version of
3493 automake, not the hacked Cygnus version.
3494
3495 1998-07-28 Jim Blandy <jimb@zwingli.cygnus.com>
3496
3497 Remove Totoro kludge.
3498 * Makefile.in, scmconfig.h.in: Regenerated.
3499 * init.c, readline.c: Don't check if TOTORO is #defined.
3500
3501 1998-07-26 Jim Blandy <jimb@zwingli.cygnus.com>
3502
3503 * Makefile.am: Adjust for new thread configuration system.
3504 (INCLUDES): Include the value of THREAD_CPPFLAGS.
3505 (guile_LDADD, check_ldadd): THREAD_LIBS_LOCAL has been renamed from
3506 THREAD_LIBS.
3507 (THREAD_LIBS): Definition deleted; automake will generate such
3508 things automatically.
3509 * Makefile.in: Regenerated.
3510
3511 1998-07-23 Jim Blandy <jimb@zwingli.cygnus.com>
3512
3513 Simplify smob and port marking; set the mark bit in the generic
3514 marking code, and make marker routines only responsible for
3515 turning up outgoing pointers.
3516 * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here,
3517 before calling the marking function. Don't call the marking
3518 function if it's zero.
3519 * markers.c (scm_mark0): Just return #f. This function isn't
3520 necessary at all now, but it's harmless to call it. We'll leave
3521 it in so other folks' code doesn't croak at link time.
3522 (scm_markcdr): Don't call SCM_SETGC8MARK.
3523 * async.c (mark_async): Don't call SCM_SETGC8MARK.
3524 * dynl.c (mark_dynl_obj): Same.
3525 * root.c (mark_root): Same.
3526 * srcprop.c (marksrcprops): Same.
3527 * unif.c (markra): Same.
3528 * variable.c (scm_markvar): Same.
3529 * ports.c (scm_markstream): Same.
3530 (void_port_ptob): Specify zero for our marking function.
3531 * debug.c (debugobjsmob): Same.
3532 * dynwind.c (guardsmob): Same.
3533 * filesys.c (dir_smob): Same.
3534 * fluids.c (fluid_smob): Same.
3535 * fports.c (scm_fptob, scm_pipob): Same.
3536 * mallocs.c (mallocsmob): Same.
3537 * regex-posix.c (regex_t_smob): Same.
3538 * smob.c (freecell, flob, bigob): Same.
3539 * threads.c (thread_smob, mutex_smob, condvar_smob): Same.
3540 * throw.c (jbsmob, lazy_catch_funs): Same.
3541
3542 1998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
3543
3544 * eval.c (scm_copy_tree): Reverted last change: `eval' uses
3545 scm_copy_tree on code in order not to let memoized code to leak
3546 out. Thus, scm_copy_tree needs to copy vectors as well since
3547 quasiquote can introduce evaluated code also inside vector
3548 constants.
3549
3550 1998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
3551
3552 * eval.c (scm_copy_tree): Removed ability to copy vectors.
3553
3554 * gh_data.c, gh.h (gh_ints2scm, gh_longs2ivect,
3555 gh_ulongs2uvect): New procedures. (Complements gh_doubles2scm and
3556 gh_doubles2dvect.)
3557
3558 * unif.c: Say that ivect and uvect are of type signed and unsigned
3559 long instead of int in commentary so that it correctly describes
3560 the implementation.
3561
3562 1998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
3563
3564 * stime.c: Removed declaration of strptime. (It should be
3565 declared by the system headers. If it turns out that some systems
3566 don't, we'll handle that then.) (Thanks to Greg Troxel.)
3567
3568 * stime.h: Renamed TIMEH --> STIMEH
3569
3570 * backtrace.c (scm_display_error, scm_display_backtrace): In order
3571 to increase portability, don't use structure assignment.
3572 (Thanks to Nicolas Neuss.)
3573
3574 * iselect.c: Use LONG_MAX instead of ULONG_MAX for increased
3575 portability.
3576 (finalize_fd_sets): Added empty statement after last case label.
3577 (Thanks to Nicolas Neuss.)
3578
3579 * gc.c (scm_igc): Changed //-comment into /*-comment. (Thanks to
3580 Nicolas Neuss.)
3581
3582 Sat Jul 11 22:08:21 1998 Mikael Djurfeldt <mdj@totoro.red-bean.com>
3583
3584 * init.c, readline.c: OK, I won't have these readline.x bug
3585 reports anymore. We've had them since April. The current reason
3586 is a completely unintelligible failure of totoro.red-bean.com to
3587 do the test for rl_getc_function in libreadline correctly. This
3588 kludge overrides the test if we're on totoro so that the snapshot
3589 generation process can work.
3590
3591 * readline.c: Define a strdup replacement if not existent on system.
3592
3593 1998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
3594
3595 * vectors.c, vectors.h (scm_make_vector): Removed third argument.
3596 This change makes scm_make_vector R5RS compatible. We cannot keep
3597 the third argument since people want to be able to deduce the form
3598 of the C function call only by looking at R5RS. (At the same time
3599 we have removed some unnecessary complexity!)
3600
3601 * eval.c, filesys.c, fluids.c, gc.c, gh_data.c, init.c, kw.c,
3602 net_db.c, posix.c, print.c, regex-posix.c, scmsigs.c, socket.c,
3603 stime.c, symbols.c, unif.c, vectors.c, weaks.c: Removed third
3604 argument in call to scm_make_vector.
3605
3606 1998-07-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3607
3608 * numbers.h (SCM_NUM2DBL): New macro. Complements SCM_NUMBERP.
3609 This macro is useful in applications.
3610
3611 1998-06-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
3612
3613 * load.c (scm_internal_parse_path): Renamed from scm_parse_path.
3614 (scm_parse_path, scm_search_path): New Scheme level procedures.
3615
3616 * load.h (scm_internal_parse_path, scm_parse_path,
3617 scm_search_path): Declared.
3618
3619 1998-06-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3620
3621 * filesys.c (dirname, basename): New procedures.
3622
3623 * init.c (scm_boot_guile_1): Removed condition around
3624 scm_init_options.
3625
3626 * dynwind.c: #include "genio.h"; #include "smob.h"; Implemented a
3627 new data type (guards) for representation of C level guards and
3628 data on the wind chain.
3629 (scm_internal_dynamic_wind): New function.
3630
3631 * dynwind.h: Declare scm_internal_dynamic_wind.
3632
3633 * root.h (scm_root_state): Added scm_cur_loadp.
3634
3635 * root.c (mark_root): Added comment about cur_loadp.
3636
3637 * load.c: #include "dynwind.h";
3638 (scm_primitive_load): Use scm_inner_dynamic_wind to update
3639 scm_cur_loadp.
3640
3641 * init.c (scm_init_standard_ports): Initialize scm_def_loadp.
3642
3643 * ports.c (current-load-port): New procedure.
3644
3645 1998-06-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3646
3647 * ioext.c (scm_isatty_p): Accept any kind of data as argument. If
3648 not a tty, return #f.
3649
3650 * regex-posix.c (scm_regexp_exec): Free malloced memory. (Thanks
3651 to Julian Satchell and Roland Kaufmann.)
3652
3653 * gh.h (gh_memv, gh_member): Fixed typos in macro definitions.
3654 (gh_write): Added declaration. (Thanks to Eiichi Takamori.)
3655
3656 1998-06-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
3657
3658 * debug.h, debug.c (scm_start_stack): New function. Implements
3659 the guts of old scm_m_start_stack.
3660
3661 * debug.c (scm_m_start_stack): Use scm_start_stack.
3662
3663 * init.c (scm_start_stack, scm_restart_stack): Renamed to
3664 start_stack and restart_stack. (These have static scope.)
3665
3666 1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3667
3668 * readline.c (rl_cleanup_after_signals, rl_free_line_state): New
3669 readline functions to come in release 2.3. (Thanks to Chet
3670 Ramey.)
3671 (handle_errors): Use the above functions.
3672
3673 1998-05-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3674
3675 * readline.c: Improvements for readline support: Handle errors
3676 better; Implement before-read-hook.
3677
3678 1998-05-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3679
3680 * init.c (scm_boot_guile_1), readline.c: Test for
3681 HAVE_RL_GETC_FUNCTION instead of HAVE_LIBREADLINE. (Need to
3682 assure that we have version >= 2.1.)
3683
3684 1998-05-11 Mikael Djurfeldt <mdj@kenneth>
3685
3686 * readline.c (scm_readline): Defer interrupts while we're calling
3687 readline.
3688
3689 * readline.c (scm_add_history): Bugfix: Do strdup before giving
3690 away the string to add_history.
3691 (completion_function): Do completion for readline. (Thanks to
3692 Andrew Archibald.)
3693 (scm_filename_completion_function): New procedure: Filename
3694 completer.
3695 (current_input_getc): New function. Use this one instead of
3696 standard getc from readline.
3697
3698 * throw.c, throw.h (scm_handle_by_throw): New function: This
3699 handler throws errors to next handler on the dynwind chain.
3700
3701 1998-05-09 Mikael Djurfeldt <mdj@kenneth>
3702
3703 * scmsigs.c (scm_usleep): Bugfix: Don't define j if it isn't
3704 used.
3705
3706 1998-05-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3707
3708 * procprop.c (scm_i_procedure_arity): New function. Returns arity
3709 of procedure.
3710 (scm_procedure_properties): Modified to return arity together with
3711 other properties.
3712 (scm_procedure_property): Added the read-only property `arity'.
3713 (scm_set_procedure_property_x): It is an error to set the `arity'
3714 property.
3715
3716 * gsubr.h, gsubr.c: Moved macros from gsubr.c to gsubr.h and added
3717 prefix SCM_; Made f_gsubr_apply global and added prefix scm_.
3718
3719 * procprop.h (scm_sym_arity): New symbol.
3720
3721 * objects.c (scm_set_object_procedure_x): New procedure: Use this
3722 to set the dispatch procedure of an operator or entity object.
3723
3724 * objects.h (SCM_METACLASS_OPERATOR_LAYOUT, SCM_ENTITY_LAYOUT):
3725 Made procedure slots read-only.
3726
3727 * eval.c (SCM_CEVAL): Moved scm_tc7_contin case above
3728 scm_tcs_cons_gloc case in zero args switch; Fixed args
3729 construction for operators in scm_tcs_cons_gloc case in two args
3730 switch.
3731
3732 1998-05-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3733
3734 * fluids.c: Removed use of assert.h (in order to avoid
3735 __eprintf).
3736
3737 * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic.
3738
3739 * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0.
3740
3741 * eval.c (SCM_CEVAL): Do more thorough argument checking. This
3742 change makes the evaluator safer at the cost of evaluation speed.
3743 It handles the case when the user has added a non-immediate
3744 improper end of the application form, e.g., `(+ 0 . x)'.
3745 (Earlier only cases like `(+ 0 . 0)' were handled.) I've tried to
3746 minimize the extra cost as much as possible. The new code is
3747 enclosed in #ifdef CAUTIOUS regions. NOTE: This also fixes the
3748 problem with structs planted directly in the code (e.g. by a
3749 macro). This no longer causes segmentation fault. (Thanks to
3750 Eric Hanchrow.)
3751
3752 * eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra
3753 arg `proc' in order to be able to throw errors; New argument
3754 checking code.
3755
3756 * Removed extra #include "debug.h"
3757
3758 1998-04-25 Mikael Djurfeldt <mdj@kenneth>
3759
3760 * scmsigs.c: Declare usleep as returning void on some systems.
3761 (scm_usleep): Return SCM_INUM0 on those systems. (Thanks to Julian
3762 Satchell.)
3763
3764 * coop.c (usleep): Return void on some systems.
3765
3766 1998-04-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3767
3768 * Makefile.am (libguile_la_LDFLAGS): Removed redundant -rpath.
3769
3770 * coop.c: Changed return type of usleep to int.
3771
3772 * scmsigs.c (scm_usleep): New procedure; Declare usleep if it
3773 isn't found in the OS.
3774
3775 * iselect.h: #define scm_internal_select select if GUILE_ISELECT
3776 isn't enabled. (Thought that I had made this change ages ago...)
3777
3778 * iselect.c: Declare bzero if not defined by OS.
3779
3780 1998-04-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3781
3782 * dynl.c (scm_must_free_argv): Fixed memory leak due to negated
3783 condition. (Thanks to John Tobey.)
3784
3785 * continuations.c (scm_make_cont), debug.c (scm_make_memoized,
3786 scm_make_debugobj), eval.c (scm_makprom): SCM_DEFER/ALLOW_INTS -->
3787 A section.
3788
3789 * __scm.h: Start the long-term project of moving to POSIX threads.
3790 Phase 1: Classification of all critical sections.
3791 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): New macros: Delimiters
3792 for A sections. (See comments in __scm.h for details.)
3793
3794 * dynl.c: Only check that HAVE_DLOPEN is defined before loading
3795 dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD.
3796
3797 1998-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3798
3799 * Makefile.am (BUILT_SOURCES): Added cpp_err_symbols.c,
3800 cpp_sig_symbols.c, libpath.h and versiondat.h to BUILT_SOURCES
3801 (libpath.h, versiondat.h): Replaced dependency on Makefile with
3802 dependencies on $(srcdir)/Makefile.in
3803 $(top_builddir)/config.status in order to avoid circularity.
3804
3805 * script.c (scm_compile_shell_switches): Bugfix: Don't discount i
3806 from argc if argc was 0 initially.
3807
3808 * Makefile.am (Makefile.am): Replaced THREAD_LIBS --> GUILE_LIBS
3809 in generation of libpath.h.
3810
3811 1998-04-15 Mikael Djurfeldt <mdj@nada.kth.se>
3812
3813 * Makefile.am (libguile_la_LDFLAGS): Bumped version number of
3814 libguile from 2 to 3.
3815
3816 1998-04-14 Mikael Djurfeldt <mdj@nada.kth.se>
3817
3818 * Makefile.am: Added .x-dependencies to variable BUILT_SOURCES.
3819
3820 1998-04-13 Mikael Djurfeldt <mdj@kenneth>
3821
3822 * ports.c (scm_port_line, scm_set_port_line_x, scm_port_column,
3823 scm_set_port_column_x, scm_port_filename,
3824 scm_set_port_filename_x): Removed optional arguments. Added
3825 proper argument checking.
3826
3827 * eval.c, eval.h, coop.c (scm_eval_stack, SCM_EVAL_STACK): Measure
3828 stack size in machine words.
3829
3830 * unif.c (scm_uniform_vector_ref, scm_cvref, scm_array_set_x,
3831 rapr1): Use SCM_UCHARS instead of SCM_CHARS for strings. (Thanks
3832 to Ole Myren Röhne.)
3833
3834 1998-04-12 Mikael Djurfeldt <mdj@kenneth>
3835
3836 * socket.c: Check for HAVE_UNIX_DOMAIN_SOCKETS instead of
3837 UNIX_DOMAIN_SOCKETS. (Thanks to Lauri Alanko.)
3838
3839 * gc.c (scm_gc_sweep): Count cells correctly. (Thanks to Ben
3840 Caradoc-Davies.)
3841
3842 * eval.c (SCM_CEVAL, SCM_APPLY): In SCM_IM_APPLY and in the
3843 procedure apply: Copy argument lists before pushing them unto the
3844 environment so that the environment won't get mutated due to
3845 manipulation of procedure arguments. This should perhaps be
3846 regarded as a temporary solution until someone finds a more
3847 efficient one. (Thanks to Maciej Stachowiak.)
3848
3849 1998-04-10 Mikael Djurfeldt <mdj@kenneth>
3850
3851 * script.c (scm_compile_shell_switches): Use "guile" as default
3852 zero arg if argc is NULL.
3853
3854 1998-04-02 Mikael Djurfeldt <mdj@nada.kth.se>
3855
3856 * script.c (scm_compile_shell_switches): Allow NULL argv if argc
3857 is zero. (Thanks to Dirk Herrmann.)
3858
3859 1998-03-30 Mikael Djurfeldt <mdj@nada.kth.se>
3860
3861 * ports.c (scm_add_to_port_table): First line is now line 0
3862 (was 1). (Interface changed according to suggestion by Per
3863 Bothner.)
3864
3865 * backtrace.c (display_header): Add 1 to line and column numbers
3866 when presenting them to the user.
3867
3868 * eval.h, eval.c, debug.h, debug.c (scm_evaluator_traps): Moved
3869 from debug.c --> eval.c
3870
3871 * eval.h, eval.c (scm_eval_options_interface): New options
3872 interface.
3873 (SCM_EVAL_STACK): New option: Size of newly created stacks,
3874 i.e. stacks for new threads.
3875
3876 * coop.c (COOP_STKSIZE): Use SCM_EVAL_STACK.
3877
3878 * eval.c (unsafe_setjmp): Removed with #if 0.
3879
3880 * gsubr.c (scm_gsubr_apply): Added dummy return to avoid compiler
3881 warning.
3882
3883 * eval.c, numbers.c, unif.c, srcprop.c: Added a few curly braces
3884 to avoid compiler warnings.
3885
3886 * dynl-dl.c (sysdep_dynl_func): Only define usymb if needed.
3887
3888 1998-03-28 Mikael Djurfeldt <mdj@nada.kth.se>
3889
3890 * throw.c (handler_message): Print message on current error port
3891 instead of default error port. (Thanks to Maciej Stachowiak.)
3892
3893 Mon Mar 2 21:35:02 1998 Gary Houston <ghouston@actrix.gen.nz>
3894
3895 * ports.c (scm_add_to_port_table): allocate in units of
3896 struct scm_port_table *, not struct scm_port_table.
3897 * posix.c (scm_close_pipe): remove the port from the port table
3898 and mark as closed.
3899 Thanks to Rob Engle for both fixes.
3900
3901 1998-02-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3902
3903 * iselect.h, iselect.c, coop.c, coop-threads.c, coop-threads.h,
3904 coop-defs.h, throw.c, backtrace.c: Added new copyright year 1998.
3905
3906 1998-02-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3907
3908 * throw.h: Removed jmpbuf arg in scm_catch_body_t.
3909
3910 * backtrace.c (display_error_body, display_backtrace_body),
3911 coop-threads.c (scheme_body_bootstrip, c_body_bootstrip),
3912 gh_eval.c (eval_str_wrapper, eval_file_wrapper), init.c
3913 (invoke_main_func), root.c (cwdr_body), throw.c (cwss_body,
3914 scm_body_thunk, hbpca_body): Removed the second jmpbuf arg on body
3915 functions.
3916
3917 * throw.c (scm_internal_catch, scm_internal_lazy_catch): Bodies
3918 don't receive the jmpbuf arg anylonger.
3919 (scm_catch): Don't accept a #f tag.
3920 (scm_throw): Check that key is a symbol.
3921 (scm_ithrow): Don't take a jmpbuf as key. Don't check key arg.
3922
3923 Fri Jan 30 22:28:07 1998 Mikael Djurfeldt <mdj@kenneth>
3924
3925 * async.c (async_pending): Removed declaration.
3926
3927 1998-01-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3928
3929 * dynwind.c (scm_wind_chain): New debug function.
3930
3931 * coop-threads.c (scheme_launch_data, scheme_body_bootstrip,
3932 scheme_handler_bootstrip, scheme_launch_thread, c_launch_data,
3933 c_body_bootstrip, c_handler_bootstrip, c_launch_thread): Add an
3934 extra layer of functions around the body and handler of a thread.
3935 This extra layer makes sure that the handler is called in the
3936 dynamic context of the surround (= empty dynwind list), but under
3937 the *dynamic root* of the body. We can not use the dynamic root
3938 of the surround since that root belongs to another thread => stack
3939 is not handled correctly. It may seem ugly to use this extra
3940 layer, but the extra cost in terms of execution time is really
3941 negligible compared to the total amount of time required to create
3942 a thread, and it would reduce maintainability to duplicate the
3943 crucial and complicated steps performed by cwdr.
3944
3945 * __scm.h (SCM_ASYNC_TICK): Removed thread switching code.
3946 (SCM_ALLOW_INTS): Added thread switching code before interrupts
3947 get re-enabled. The important effect of this is that interrupts
3948 are blocked during thread switching so that thread data structures
3949 don't risk getting messed up by an unfortunate signal.
3950 (SCM_REDEFER_INTS, SCM_REALLOW_INTS): It turned out that gcc-2.8.0
3951 seems to do more aggressive optimization which actually move
3952 instructions around in these macros in a fatal way. Therefore:
3953 Introduce Anthony's SCM_FENCE macro! (And I who thought he was
3954 just superstitious...)
3955 (SCM_TICK): Maybe do a context switch and take care of asyncs.
3956 This macro should be used instead of SCM_ASYNC_TICK since the
3957 latter doesn't do context switches any more.
3958
3959 * eval.c (scm_eval, scm_deval), eq.c (scm_equal_p): Use SCM_TICK
3960 instead of SCM_ASYNC_TICK.
3961
3962 * coop.c, iselect.c: Since thread switches are now performed with
3963 interrupts masked, we can't use the old mechanism of delivering
3964 signals immediately when they arrive. Signals must instead be
3965 delivered when the asyncs run *after* the end of the critical
3966 section in scm_internal_select. But this also means after context
3967 switch so that the signal will be delivered to a different thread.
3968 To avoid this, I have changed the protocol of
3969 coop_wait_for_runnable_thread and friends so that they are allowed
3970 to return the original thread. So, if a signal arrives during
3971 scm_internal_select, we won't any longer be forced do a context
3972 switch, but can remain in the same thread and deliver the signal
3973 to it.
3974
3975 * async.c, async.h (asyncs_pending): Renamed asyncs_pending -->
3976 scm_asyncs_pending and made it global.
3977
3978 * iselect.c: Small fixes.
3979
3980 * coop.c (coop_mutex_init, coop_mutex_lock, coop_mutex_unlock,
3981 coop_condition_variable_init, coop_condition_variable_wait,
3982 coop_condition_variable_signal): Changed return type from `void'
3983 to `int'. This is to adhere closer to the pthreads interface.
3984 This, in turn, is part of an attempt to provide C versions of the
3985 mutex and condition variable primitives which can be part of a
3986 frontend to COOP or pthreads.
3987
3988 * coop.c (coop_mutex_destroy, coop_condition_variable_wait_mutex,
3989 coop_condition_variable_destroy): New functions.
3990
3991 * coop-threads.c (scm_wait_condition_variable): Use
3992 coop_condition_variable_wait_mutex.
3993
3994 * coop-threads.h, coop-defs.h (coop_q_t, coop_m, coop_c):
3995 Definitions moved to coop-defs.h.
3996
3997 * coop-defs.h (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock,
3998 scm_mutex_destroy, scm_cond_init, scm_cond_wait, scm_cond_signal,
3999 scm_cond_destroy): New C interface to mutecis and cond vars.
4000
4001 1998-01-24 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4002
4003 * error.c (scm_wta): Added support for SCM_ARG6 and SCM_ARG7.
4004
4005 * iselect.c: Now several threads can wait on the same file
4006 descriptor. The behaviour is compatible with OS select: All
4007 threads waiting for the fd return with the same status.
4008
4009 1998-01-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4010
4011 * coop-threads.c, threads.h (scm_spawn_thread): New function.
4012 Can spawn a thread from application C code.
4013
4014 1998-01-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4015
4016 * gh.h, gh_data.c (gh_doubles2scm, gh_doubles2dvect,
4017 gh_doubles2scm): New functions.
4018
4019 1998-01-15 Mark Galassi <rosalia@nis.lanl.gov>
4020
4021 * gh_eval.c (gh_eval_str): cleanup -- threw out the old
4022 commented-out version of gh_eval_str()
4023
4024 Sun Jan 4 02:23:36 1998 Gary Houston <ghouston@actrix.gen.nz>
4025
4026 * socket.c (scm_bind): free soka after use.
4027
4028 Sat Jan 3 20:55:07 1998 Gary Houston <ghouston@actrix.gen.nz>
4029
4030 * stime.c (tzvar): new variable.
4031 (setzone, restorezone, scm_localtime, scm_mktime, scm_strftime):
4032 avoid memory leaks when allocating.
4033
4034 1998-01-03 Jim Blandy <jimb@totoro.red-bean.com>
4035
4036 * iselect.h: Some systems require <sys/types.h> to get the FD_SET
4037 macro definitions.
4038
4039 * gc.c, tags.h: Doc fixes.
4040
4041 1998-01-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4042
4043 * eval.c (macro-eval!): Removed. This function was a design bug.
4044 It allowed memoized code to leak out to the scheme level. Most
4045 things that you could do with `macro-eval!' can be done with
4046 `local-eval'.
4047
4048 1997-12-20 Tim Pierce <twp@skepsis.com>
4049
4050 * fports.c (scm_pipob): Use scm_generic_fgets for line i/o, since
4051 scm_fgets now depends on ftell(3) to know how many bytes were
4052 read. Sigh.
4053
4054 1997-12-15 Tim Pierce <twp@skepsis.com>
4055
4056 * gh_data.c (gh_scm2newstr, gh_get_substr): Use RO macros for
4057 dealing with strings.
4058
4059 1997-12-13 Tim Pierce <twp@skepsis.com>
4060
4061 Make %read-line more suitable for implementing read-line efficiently.
4062 * ioext.c (scm_read_line): Strip the terminating newline from a
4063 string, and return a cons of the string and its terminator.
4064
4065 * fports.c, fports.h (scm_fgets): Add `len' argument. The length
4066 of the string that is read is stored in this memory location.
4067 * ports.c, ports.h (scm_generic_fgets, fgets_void_port): Same.
4068 * genio.c, genio.h (scm_do_read_line): Update caller.
4069 * ports.h (scm_ptobfuns): Update typedef.
4070 * fports.c (scm_fptob, scm_pipob): Update struct.
4071
4072 1997-12-08 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4073
4074 * filesys.c (set_element): Return file descriptor.
4075 (fill_select_type): Return the highest file descriptor.
4076 (scm_select): Tell select about the highest file descriptor. On
4077 some systems the SELECT_SET_SIZE can be as much as 128 bytes.
4078 Therefore the extra overhead for calculating the maximum fd seems
4079 to be more than compensated. Is this correct? In any case,
4080 scm_internal_select will be much faster with this info.
4081 (scm_select, fill_select_type, set_element): Don't accept any kind
4082 of object in the file descriptor list or vector.
4083
4084 1997-12-07 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4085
4086 * iselect.c (finalize_fd_sets): Bugfix.
4087
4088 1997-12-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4089
4090 * filesys.c (scm_select): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS
4091 when using scm_internal_select (since we might switch to another
4092 thread).
4093
4094 Sun Dec 7 01:43:56 1997 Gary Houston <ghouston@actrix.gen.nz>
4095
4096 * simpos.c (scm_system): always define: use sysmissing if not
4097 available. Check for HAVE_SYSTEM instead of _Windows (does
4098 Windows lack system or does it have an unusable one?).
4099 Check for error conditions -1 and 127. Use SCM_DEFER_INTS.
4100 Let the argument be optional: if not supplied, call system(NULL).
4101
4102 * ports.c (scm_close_port): relax the type check from OPPORTP to
4103 PORTP; closing a closed port is allowed.
4104
4105 1997-12-04 Tim Pierce <twp@ppp39.Nantucket.net>
4106
4107 * fports.c (scm_fgets): Return if the last char in a chunk is
4108 newline. When fgets returns a string whose length is `size-1', it
4109 is ambiguous whether a whole line was retrieved, so we must check
4110 explicitly whether a line terminator is present.
4111
4112 1997-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4113
4114 * print.h (SCM_COERCE_OUTPORT): Check that the object is a pair
4115 before taking the CDR. (Thanks to Harald Meland.)
4116
4117 * filesys.c (scm_stat): Slightly optimized.
4118
4119 Wed Dec 3 12:23:06 1997 Jim Blandy <jimb@totoro.red-bean.com>
4120
4121 * ports.c (scm_close_port): Make sure the port is open before
4122 trying to close it.
4123
4124 * guile-snarf.in: Pass args through to gcc in a way that preserves
4125 whitespace boundaries. (Thanks to Greg Badros.)
4126
4127 1997-12-02 Tim Pierce <twp@skepsis.com>
4128
4129 * stacks.c (scm_frame_procedure): Reverse the logic in the return
4130 statement. (Thanks to Doug Evans for pointing this out.)
4131
4132 1997-12-01 Tim Pierce <twp@skepsis.com>
4133
4134 * scmconfig.h.in: Regenerated for USCORE change in ../acconfig.h.
4135
4136 Sun Nov 30 11:29:18 1997 Mikael Djurfeldt <mdj@kenneth>
4137
4138 * coop-defs.h (struct coop_t): Renamed errno --> _errno to prevent
4139 errno macro expansion of this field name. (errno is a C
4140 preprocessor macro on some systems.)
4141
4142 1997-11-29 Tim Pierce <twp@skepsis.com>
4143
4144 * iselect.c: Doc fix.
4145
4146 Sat Nov 29 01:16:53 1997 Mikael Djurfeldt <mdj@kenneth>
4147
4148 * init.c (scm_start_stack): Removed initialization of
4149 scm_the_last_stack_var.
4150
4151 * backtrace.h: Declare scm_the_last_stack_var.
4152
4153 * backtrace.c: Define scm_the_last_stack_var.
4154
4155 * root.c (mark_root): Don't mark the_last_stack_var.
4156
4157 * root.h (scm_root_state): Removed the_last_stack_var.
4158
4159 * throw.c: Added #include "fluids.h"
4160 (ss_handler): `the-last-stack' is now a fluid.
4161
4162 * (backtrace.h, backtrace.c, throw.c): Renamed the_last_stack_var
4163 --> the_last_stack_fluid.
4164
4165 * backtrace.c: Added #include "fluids.h"
4166 (scm_init_backtrace): Initialize `the-last-stack' to a fluid.
4167 (scm_backtrace): `the-last-stack' is now a fluid.
4168
4169 * init.c (scm_boot_guile_1): Moved call to scm_init_backtrace
4170 after scm_init_fluids.
4171
4172 1997-11-28 Tim Pierce <twp@skepsis.com>
4173
4174 * iselect.c: #ifdef USE_THREADS around thread-related includes.
4175
4176 * dynl-dl.c (sysdep_dynl_func): Check both USCORE and
4177 DLSYM_ADDS_USCORE to decide whether to add an underscore.
4178
4179 1997-11-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4180
4181 * iselect.c (coop_next_runnable_thread,
4182 coop_wait_for_runnable_thread): Disable interrupts so that no
4183 async is executed before a potential error_revive.
4184 (scm_internal_select): Disable interrupts during the parts of the
4185 code which manipulate the sleep queue and the file descriptors.
4186
4187 1997-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4188
4189 * Makefile.am: Added iselect.c and iselect.h.
4190
4191 * coop.c (coop_qinit): Initialize fields used by
4192 scm_internal_select.
4193 (coop_qget, coop_qget, coop_tmp_queue): Made global.
4194 (coop_next_runnable_thread): If GUILE_ISELECT enabled, use
4195 replacement in iselect.c.
4196 (coop_mutex_lock, coop_condition_variable_wait, coop_abort,
4197 coop_join): If GUILE_ISELECT enabled, use
4198 coop_wait_for_runnable_thread instead of
4199 coop_next_runnable_thread.
4200 (usleep, sleep): New replacements for system functions if
4201 GUILE_ISELECT is enabled.
4202
4203 * coop-threads.h: Declare coop_wait_for_runnable_thread.
4204
4205 * coop-defs.h (coop_t): Added fields used by scm_internal_select.
4206
4207 * filesys.c: Added #include "iselect.h". Moved FD-macros to
4208 iselect.h. Implement Scheme level `select' using
4209 scm_internal_select. (See NEWS.)
4210
4211 * genio.c (scm_getc): Block with scm_internal_select. (See NEWS.)
4212
4213 * init.c: Call scm_init_iselect.
4214
4215 * iselect.h, iselect.c: New files. Implements
4216 scm_internal_select. (See NEWS.)
4217
4218 1997-11-27 Tim Pierce <twp@skepsis.com>
4219
4220 Fix a memory leak in scm_read_line and a type cast bug in the ptob.
4221 * fports.c (scm_fgets): Use malloc/free rather than scm_must_malloc
4222 and scm_must_free, since ultimately the string returned will be copied
4223 by scm_makfrom0str anyway. Also, read any characters that may have
4224 been pushed onto the port with scm_ungetc.
4225 * ports.c (scm_generic_fgets): Same as for scm_fgets.
4226 * ioext.c (scm_read_line): Free string after Guilifying it.
4227 * ports.h (scm_ptobfuns): fgets method returns a char *, not a char.
4228
4229 1997-11-26 Anthony Green <green@hoser.cygnus.com>
4230
4231 * gh_data.c (gh_set_substr): Strings can be longer than 256 bytes.
4232
4233 * gh.h: Safely wrap prototypes for c++ usage.
4234
4235 1997-11-25 Mark Galassi <rosalia@cygnus.com>
4236
4237 * gh_test_repl.c (main_prog): changed invocation of gh_repl() to
4238 gh_repl (argc, argv).
4239
4240 1997-11-24 Mark Galassi <rosalia@nis.lanl.gov>
4241
4242 * gh_init.c (gh_repl): modified gh_repl() to accept argc and argv
4243 and to invoke scm_shell().
4244 (gh_launch_pad): took out the loading of boot-9.scm from here,
4245 since it is probably best to let the user control that. In fact,
4246 gh_repl() now invokes scm_shell() which does that.
4247
4248 1997-11-23 Mark Galassi <rosalia@cygnus.com>
4249
4250 * gh_test_repl.c (main_prog): added argc and argv to the gh_repl()
4251 invocation.
4252
4253 1997-11-22 Tim Pierce <twp@twp.tezcat.com>
4254
4255 * dynl-dl.c (sysdep_dynl_func): Fix memory leak created by
4256 yesterday's underscore patch. (Thanks to Marius Vollmer for
4257 spotting this.)
4258
4259 1997-11-21 Tim Pierce <twp@twp.tezcat.com>
4260
4261 * dynl-dl.c (sysdep_dynl_func): Prepend symb with underscore if
4262 DLSYM_ADDS_USCORE is not defined.
4263
4264 1997-11-17 Mark Galassi <rosalia@nis.lanl.gov>
4265
4266 * gh_data.c (gh_uniform_vector_length):
4267 (gh_uniform_vector_ref): started implementing the uniform types in
4268 the gh_ interface.
4269
4270 1997-11-06 Mikael Djurfeldt <mdj@nada.kth.se>
4271
4272 * regex-posix.c (scm_free_regex_t): Return size of regex_t instead
4273 of 0; size_t --> scm_size_t. Thanks to Bernard Urban.
4274
4275 1997-10-26 Mikael Djurfeldt <mdj@nada.kth.se>
4276
4277 * scmconfig.h.in: Updated (HAVE_LIBTERMCAP was added when
4278 configure.in was changed).
4279
4280 Sun Oct 26 02:20:11 1997 Jim Blandy <jimb@totoro.red-bean.com>
4281
4282 * Makefile.am (modinclude_HEADERS): Include readline.h here.
4283 * Makefile.in: Regenerated.
4284
4285 1997-10-25 Marius Vollmer <mvo@zagadka.ping.de>
4286
4287 * print.h (SCM_COERCE_OPORT): Renamed to SCM_COERCE_OUTPORT. An
4288 OPORT is an `open' port, not an output port.
4289
4290 * filesys.c (scm_close, set_element, get_element, scm_chown,
4291 scm_chmod, scm_stat, scm_truncate_file, scm_fcntl, scm_fsync): Use
4292 SCM_COERCE_OUTPORT to cope with the printstate/port magic.
4293 * ports.c (scm_port_revealed, scm_set_port_revealed_x,
4294 scm_close_port, scm_port_line, scm_set_port_line_x,
4295 scm_port_column, scm_set_port_column_x, scm_port_filename,
4296 scm_set_port_filename_x, scm_port_mode,
4297 scm_close_all_ports_except, scm_set_current_output_port,
4298 scm_set_current_error_port): Likewise
4299 * ioext.c (scm_redirect_port, scm_dup_to_fdes, scm_freopen,
4300 scm_ftell, scm_fileno, scm_isatty_p, scm_primitive_move_to_fdes):
4301 Likewise
4302 * posix.c (scm_ttyname, scm_tcgetpgrp, scm_tcsetpgrp): Likewise
4303 * backtrace.c (display_backtrace_body): Likewise
4304 * fports (scm_setvbuf): Likewise
4305 * socket.c (scm_getsockopt, scm_setsockopt, scm_shutdown,
4306 scm_connect, scm_bind, scm_listen, scm_accept, scm_getsockname,
4307 scm_getpeername, scm_send, scm_sendto): Likewise
4308 * unif.c (scm_uniform_array_write): Likewise
4309
4310 Sat Oct 25 02:52:58 1997 Jim Blandy <jimb@totoro.red-bean.com>
4311
4312 Minor problems with substring-related tag changes.
4313 * symbols.h (SCM_SUBSTRP): Don't mask off the S bit; that's
4314 exactly what we want to leave in to detect substrings.
4315 (SCM_ROSTRINGP, ROUCHARS): Formatting tweaks.
4316 * tags.h: Fix diagrams and comments describing the S tag bit;
4317 remove vestigial remarks about the D tag bit.
4318 (SCM_TYP7, SCM_TYP7S): Rephrased for readability.
4319 * strings.c: Formatting tweaks.
4320
4321 * load.c (scm_init_load_path): Check GUILE_LOAD_PATH environment
4322 variable first; then SCHEME_LOAD_PATH, with a warning message.
4323 (scm_parse_path): New function.
4324 * script.c: Doc fixes.
4325
4326 Thu Oct 23 01:02:03 1997 Jim Blandy <jimb@totoro.red-bean.com>
4327
4328 Readline support, from Daniel Risacher.
4329 * readline.c, readline.h: New files.
4330 * init.c: #include "readline.h".
4331 (scm_boot_guile_1): Call scm_init_readline, if we have it.
4332 * Makefile.am (libguile_la_SOURCES): Include readline.c.
4333 * Makefile.in: Regenerated.
4334 * scmconfig.h.in: Regenerated, after change to ../configure.
4335
4336 1997-10-20 Mark Galassi <rosalia@nis.lanl.gov>
4337
4338 * gh.h: gh_vector_set -> gh_vector_set_x
4339
4340 1997-10-20 Mark Galassi <rosalia@nis.lanl.gov>
4341
4342 * gh_data.c (gh_vector_set_x): changed name to make it consistent
4343 with the ! -> _x mapping when going from Scheme to C.
4344
4345 1997-10-19 Mark Galassi <rosalia@cygnus.com>
4346
4347 * gh.h (gh_reverse):
4348 (gh_list_tail):
4349 (gh_list_ref):
4350 (gh_memq):
4351 (gh_memv):
4352 (gh_member):
4353 (gh_assq):
4354 (gh_assv):
4355 (gh_assoc): added these gh_ functions implemented as macros.
4356
4357 * gh_predicates.c (gh_null_p):
4358 (gh_string_equal_p): added these two missing predicates.
4359
4360 * gh_list.c (gh_append):
4361 (gh_append2):
4362 (gh_append3):
4363 (gh_append4):
4364 (gh_set_car_x):
4365 (gh_set_cdr_x): added these routines as I go through and try to
4366 complete the picture R4RS functions that should be mirrored in the
4367 gh_ interface.
4368
4369 Sat Oct 18 01:52:51 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4370
4371 * tags.h (scm_tc7_substring): Changed the comment and code to
4372 conform with the changes below. Folks! We have suddenly two new
4373 free tc7 codes!!! Jummy, jummy!
4374
4375 Tue Oct 14 22:03:06 1997 Tom Tromey <tromey@cygnus.com>
4376
4377 * Makefile.in: Rebuilt.
4378 * Makefile.am (libguile_la_SOURCES): Removed extchrs.c,
4379 mbstrings.c.
4380 (modinclude_HEADERS): Removed extchrs.h, mbstrings.h.
4381 * unif.c (scm_vector_set_length_x): Don't handle multibyte
4382 strings.
4383 * tag.c (scm_utag_mb_string, scm_utag_mb_substring): Removed.
4384 (scm_tag): Don't handle multibyte strings.
4385 * read.c: Don't include mbstrings.h.
4386 (scm_lreadr): Don't handle multibyte ports.
4387 * kw.c: Don't include mbstrings.h.
4388 * init.c: Don't include mbstrings.h.
4389 (scm_boot_guile_1): Don't init mbstrings module.
4390 * hash.c (scm_hasher): Don't handle mbstrings.
4391 * gscm.c (gscm_run_scm): Don't init mbstrings module.
4392 * gc.c (scm_gc_mark): Don't handle mbstrings.
4393 (scm_gc_sweep): Likewise.
4394 * eval.c (SCM_CEVAL): Don't handle mbstrings.
4395 * eq.c (scm_equal_p): Use SCM_TYP7S, not SCM_TYP7SD.
4396 * tags.h (SCM_TYP7SD): Removed.
4397 (SCM_TYP7D): Removed.
4398 (scm_tc7_mb_string): Removed.
4399 (scm_tc7_mb_substring): Removed.
4400 * print.c (scm_iprin1): Handle char printing directly. Don't
4401 handle mbstrings.
4402 Don't include "mbstrings.h".
4403 * symbols.c (scm_intern_obarray_soft, scm_string_to_symbol,
4404 scm_string_to_obarray_symbol, msymbolize): Don't set symbol's
4405 multi-byte flag.
4406 Don't include "mbstrings.h".
4407 * symbols.h (SCM_SYMBOL_MULTI_BYTE_STRINGP): Removed.
4408 (SCM_SYMBOL_SLOTS): Define as 4.
4409 (SCM_ROSTRINGP): Use SCM_TYP7S, not SCM_TYP7SD.
4410 * arbiters.c, backtrace.c, debug.c, dynl.c, eval.c, fluids.c,
4411 gc.c, gsubr.c, ioext.c, kw.c, mallocs.c, numbers.c, ports.c,
4412 print.c, read.c, regex-posix.c, root.c, srcprop.c, stackchk.c,
4413 struct.c, threads.c, throw.c, unif.c, variable.c: Use new
4414 ("gen"-less) I/O function names.
4415 * ports.c (scm_add_to_port_table): Don't set port's
4416 representation.
4417 * ports.h (scm_port_representation_type): Removed.
4418 (scm_string_representation_type): Removed.
4419 (struct scm_port_table ): Removed representation field.
4420 (SCM_PORT_REPRESENTATION): Removed.
4421 (SCM_SET_PORT_REPRESENTATION): Removed.
4422 * genio.h: Use new function names.
4423 * genio.c: Don't include "extchrs.h".
4424 (scm_gen_putc, scm_gen_puts, scm_gen_write, scm_get_getc):
4425 Removed.
4426 (scm_putc, scm_puts, scm_lfwrite): No longer static.
4427 (scm_getc): No longer static; handle line and column changes.
4428 (scm_ungetc): Renamed from scm_gen_ungetc.
4429 (scm_do_read_line): Renamed from scm_gen_read_line.
4430 * libguile.h: Don't include "extchrs.h" or "mbstrings.h"
4431 * extchrs.h, extchrs.c, mbstrings.h, mbstrings.c: Removed.
4432
4433 1997-10-12 Mark Galassi <rosalia@cygnus.com>
4434
4435 * gh_test_repl.c (c_vector_test): same as gh_test_c.c
4436
4437 * gh_test_c.c (c_vector_test): some improvements on the vector
4438 routines test.
4439
4440 * gh.h (gh_vector): this used to exist but do the wrong thing.
4441 Now it (almost) does the right thing, though it takes a list
4442 instead of the individual arguments. I need to see how it could
4443 be done right.
4444 (gh_list_to_vector): added this function as a macro. Corresponds
4445 to Scheme's (list->vector ...).
4446 (gh_vector_to_list): added this function as a macro. Corresponds
4447 to Scheme's (vector->list ...).
4448
4449 * gh_data.c (gh_vector_ref): renamed from gh_vref to
4450 gh_vector_ref, so that it resembles the Scheme routines more.
4451 (gh_vector_set): renamed from gh_vset to gh_vector_set, so that it
4452 resembles the Scheme routines more.
4453 (gh_make_vector): this used to be (stupidly) called gh_vector().
4454 This is the right name, since it does the same thing as the Scheme
4455 (make-vector ...) procedure.
4456
4457 Sun Oct 12 14:41:39 1997 Mikael Djurfeldt <mdj@kenneth>
4458
4459 * ports.h: #include "libguile/print.h"
4460
4461 * eval.c (SCM_CEVAL, scm_apply): Completed GOOPS support code;
4462 Some indentation fixes.
4463
4464 * objects.h (SCM_METACLASS_STANDARD_LAYOUT): Printer field is no
4465 longer a user field; New field: class_flags.
4466
4467 * objets.c, objects.h: New metaclass: scm_metaclass_operator.
4468
4469 Tue Oct 7 09:37:24 1997 Mark Galassi <rosalia@cygnus.com>
4470
4471 * gh_data.c (gh_bool2scm): new function which replaces
4472 gh_int2scmb(), which is now tagged as obsolete.
4473
4474 1997-10-03 Mikael Djurfeldt <mdj@nada.kth.se>
4475
4476 * print.h (SCM_PRINT_STATE_P): Removed SCM_NIMP test. (NIMP
4477 macros should by convention not test for NIMPness.)
4478 (SCM_COERCE_OPORT): Adjust indentation.
4479
4480 * print.c (scm_valid_oport_value_p): Adjusted indentation; Added
4481 SCM_NIMP test before SCM_PRINT_STATE_P.
4482
4483 * struct.c, struct.h, gc.c: Renamed:
4484 scm_struct_i_layout --> scm_vtable_index_layout
4485 scm_struct_i_vcell --> scm_vtable_index_vcell
4486 scm_struct_i_vtable --> scm_vtable_index_vtable
4487 scm_struct_i_printer --> scm_vtable_index_printer
4488 scm_struct_i_vtable_offset --> scm_vtable_offset_user
4489
4490 * struct.c (scm_print_struct): Use new printer slot; Default
4491 printing: Also output hex code of vtable so that type identity
4492 will be indicated as well.
4493 (scm_init_struct): Updated required_vtable_fields to "pruosrpw";
4494 Removed struct_printer_var; Removed struct-vtable-offset;
4495 (vtable-index-layout, vtable-index-vtable, vtable-index-printer,
4496 vtable-offset-user): New constants.
4497
4498 * struct.h (scm_struct_i_vtable_offset): Bumped from 3 to 4.
4499 (scm_struct_i_printer, SCM_STRUCT_PRINTER): New slot in vtables.
4500 If this slot contains a procedure, use that to print structures of
4501 the type represented by this vtable.
4502
4503 * print.c (scm_iprin1): Don't print arguments of macro
4504 transformers. (They are always: exp env.); Bugfix: Unmemoize
4505 transformer source with correct environment.
4506
4507 1997-10-02 Marius Vollmer <mvo@zagadka.ping.de>
4508
4509 Streamlining of call-with-dynamic-root:
4510
4511 * root.c (cwdr_inner_body, cwdr_body): Remove "inner" from name,
4512 there is now only one catch.
4513 (cwdr_outer_body): Removed.
4514 (cwdr_handler): New function.
4515 (scm_internal_cwdr): New function to perform the function of cwdr
4516 but take args that are more useful to C code. Also, the handler
4517 is now invoked *outside* of the new dynamic root, like the docs
4518 say. We no longer have to catch absolutely all errors, the caller
4519 is responsible for using a handler that does not throw, if he
4520 wants that.
4521 (cwdr): Reimplemented in terms of scm_internal_cwdr.
4522 * root.h (scm_internal_cwdr): New prototype.
4523
4524 Even more but risky streamlining:
4525
4526 * root.c (USE_STACKJMPBUF): New define to activate a stack-based
4527 allocation of the jumpbuf of a root continuation. The changes
4528 below are controlled by it. They are now deactivated.
4529 (scm_internal_cwdr): Allocate the scm_contregs on the stack. Set
4530 the JMPBUF of the scm_rootcont to NULL before returning.
4531
4532 * gc.c (scm_gc_sweep): Free the SCM_VELTS of a scm_tc7_contin only
4533 when they are non-NULL.
4534 (scm_gc_mark): Likewise, mark only when non-NULL.
4535
4536 Make dynamic linking work on Dec Unix. (Thanks to Clark McGrew)
4537 * dynl.c: Include "dynl-dl.c" also when HAVE_DLOPEN is defined.
4538
4539 * gc.c (scm_done_malloc): New function.
4540 gc.h (scm_done_malloc): New prototype.
4541
4542 * print.h (SCM_PRINT_STATE_P, SCM_COERCE_OPORT): New macros.
4543 (struct scm_print_state) [revealed]: New field.
4544 (scm_print_state_vtable): Make visible to the outside world for
4545 type checking purposes.
4546 (scm_valid_oport_value_p): New prototype.
4547
4548 * print.c (scm_valid_oport_value_p): New function to check whether
4549 a certain value is acceptable as a port argument.
4550 (scm_print_state_vtable): New variable.
4551 (scm_free_print_state): Set `revealed' field to false.
4552 (scm_iprin1): Call user supplied closure printer with
4553 scm_printer_apply. Print in the traditional way when there isn't
4554 one or when it returns #f.
4555 (scm_prin1, scm_display, scm_write, scm_newline, scm_write_char):
4556 Accept a port/print-state pair in addition to just a port.
4557 (scm_prin1): Don't return the print_state to the pool when it has
4558 been `revealed'.
4559 (scm_printer_apply): Set `revealed' field of print_state to true.
4560 (scm_init_print): Set scm_print_state_vtable.
4561 (print_state_fluid, print_state_fluid_num): Removed.
4562
4563 * throw.h (scm_handle_by_proc_catching_all): New prototype
4564 throw.c (scm_handle_by_proc_catching_all): New function
4565
4566 Mon Sep 29 23:54:09 1997 Jim Blandy <jimb@totoro.red-bean.com>
4567
4568 * Makefile.in: Regenerated with automake 1.2c.
4569
4570 Sun Sep 28 21:35:42 1997 Radey Shouman <shouman@zianet.com>
4571
4572 * ramap.c (scm_array_index_map_x): Fixed for zero-rank arguments,
4573 was looping endlessly.
4574
4575 Sun Sep 28 00:04:29 1997 Jim Blandy <jimb@totoro.red-bean.com>
4576
4577 * strports.c (scm_eval_string): Don't close the port.
4578
4579 * stime.c (bdtime2c): Use SCM_LENGTH, not scm_vector_length; the
4580 former returns a nice normal integer. (Thanks to Daniel
4581 Risacher.)
4582
4583 Sat Sep 27 20:19:34 1997 Jim Blandy <jimb@totoro.red-bean.com>
4584
4585 * Makefile.am (libpath.h): Include the value of the THREAD_LIBS
4586 makefile variable as a build parameter called LIBS. The
4587 build-guile program will use this, for the time being.
4588 * Makefile.in: Regenerated.
4589
4590 Thanks to Shiro Kawai:
4591 * gc.c (scm_gc_mark): Pass NULL to scm_wta as the subroutine name.
4592 * ports.h (scm_ptobfuns): The fgets method returns a char *, not
4593 an SCM.
4594
4595 * Makefile.in: Regenerated with automake 1.2a.
4596
4597 * script.c (scm_compile_shell_switches): If we hit the -c or --
4598 arguments, don't set the car of (command-line) to scm_usage_name,
4599 the prettified name of the guile executable; give it the full
4600 path, the way shells usually handle $0.
4601
4602 Wed Sep 24 22:09:52 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4603
4604 * ramap.c (scm_array_map): Renamed to scm_array_map_x. Removed
4605 Scheme-level name `array-map' and renamed `serial-array-map' to
4606 `serial-array-map!'.
4607
4608 * backtrace.c: Introduced exception handlers which now enclose
4609 `display-error' and `display-backtrace' so that error reporting
4610 won't get into infinite loops if an error occurs during displaying
4611 of the error. This can very easily happen with user supplied
4612 print call-back routines.
4613
4614 Tue Sep 23 12:43:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4615
4616 * ramap.c: Added alias `array-map!' for `array-map'. (Probably,
4617 the names `serial-array-map' and `array-map' should be removed.)
4618
4619 Mon Sep 22 01:21:54 1997 Mikael Djurfeldt <mdj@kenneth>
4620
4621 * init.c (scm_boot_guile_1): Added scm_init_objects ().
4622 Added #include "objects.h"
4623
4624 * eval.c (scm_makprom): Added SCM_DEFER_INTS and SCM_ALLOW_INTS.
4625 Add #include "feature.h".
4626
4627 * Makefile.am (libguile_la_SOURCES): Added objects.c.
4628 (modinclude_HEADERS): Added objects.h.
4629
4630 * ports.h (SCM_EOF_OBJECT_P): New macro predicate.
4631 This test is needed at many places in the code and should be
4632 abstracted. (Motivated by the need of this test in libguiletk.)
4633
4634 * ports.c (scm_eof_object_p), vports.c (sfgetc), strports.c
4635 (scm_eval_string), load.c (scm_primitive_load,
4636 scm_read_and_eval_x), gh_eval.c (gh_eval_str):
4637 Use SCM_EOF_OBJECT_P.
4638
4639 * eval.c (scm_init_eval): Add feature `delay'.
4640
4641 Tue Sep 16 02:12:02 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4642
4643 * scmhob.h: Removed.
4644
4645 Mon Sep 15 20:42:03 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4646
4647 * list.h (SCM_LISTn): New macros. Make list creation in C code
4648 prettier. The idea comes from STk.
4649
4650 * sequences.h, sequences.c, append.h, append.c: Removed. These
4651 files implemented non-R4RS operations which would encourage
4652 non-portable programming style and less easy-to-read code.
4653
4654 * Makefile.am (sequences.h, sequences.c, append.h, append.c):
4655 Removed.
4656
4657 * libguile.h, eval.c, init.c, stime.c, unif.c: Removed #include
4658 sequences.h, #include append.h.
4659
4660 * init.c (scm_boot_guile_1): Removed calls to scm_init_append and
4661 scm_init_sequences.
4662
4663 * gh.h, gh_list.c: Renamed gh_list_length --> gh_length.
4664
4665 * list.h, list.c: Renamed scm_list_length --> scm_length, scm
4666
4667 * stime.c (bdtime2c): Changed scm_obj_length --> scm_vector_length.
4668
4669 Sat Sep 13 00:21:41 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4670
4671 * eval.c: Added #include "objects.h"
4672
4673 * tags.h (scm_tc16_object, scm_tc16_entity): Smobtags for objects
4674 and entities.
4675
4676 * smob.c (scm_smob_prehistory): Create two objectsmobs with
4677 adjacent smob numbers.
4678
4679 Thu Sep 11 00:59:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4680
4681 * procprop.h: Added declaration of scm_i_inner_name.
4682
4683 * gsubr.c: New global symbol scm_i_inner_name.
4684
4685 * debug.c (scm_procedure_name): Try procedure property
4686 `inner-name' if `name' fails.
4687
4688 * print.c (scm_iprin1): Use scm_macro_name.
4689
4690 * eval.c (scm_m_define): Give names to macros as well; Only the
4691 first top-level definition gives a procedure/macro a name.
4692 Otherwise confusing names can turn up in backtraces.
4693 (SCM_CEVAL): SCM_IM_DEFINE: Set `inner-name' property instead of
4694 `name'; Give names to macros as well.
4695
4696 * procs.c (scm_closure_p), print.c (scm_iprin1), eval.c
4697 (scm_macro_transformer): Use SCM_CLOSUREP instead of
4698 scm_closure_p.
4699
4700 Wed Sep 10 20:52:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4701
4702 * eval.c (macro?, macro-type, macro-name, macro-transformer): New
4703 procedures;
4704 (prinmacro): Removed. The code has been moved/merged into print.c
4705 in order to decrease code redundancy. We want macros to print in
4706 a way equivalent to procedures, and it would be silly to duplicate
4707 the required code. (We don't want to maintain two places.)
4708 (macrosmob): Print field is now a NULL pointer.
4709
4710 * eval.h (scm_macro_p, scm_macro_type, scm_macro_name,
4711 scm_macro_transformer): New prototypes.
4712 (scm_tc16_macro): Declared.
4713
4714 * print.c (scm_iprin1): Added code for printing of macros. Macros
4715 are now printed in a way equivalent to procedures.
4716
4717 Sat Sep 6 12:20:42 1997 Mikael Djurfeldt <mdj@kenneth>
4718
4719 * procs.h (scm_closure_p): Added declaration.
4720
4721 Fri Sep 5 13:36:14 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4722
4723 * gc.c (scm_gc_mark): Fixed "rogue pointer in heap" message:
4724 Shouldn't pass "heap" as the subr name.
4725
4726 Tue Sep 2 18:14:30 1997 Jim Blandy <jimb@totoro.red-bean.com>
4727
4728 * gh_predicates.c (gh_boolean_p, gh_symbol_p, gh_char_p,
4729 gh_vector_p, gh_pair_p, gh_number_p, gh_string_p, gh_procedure_p,
4730 gh_list_p, gh_inexact_p, gh_exact_p, gh_eq_p, gh_eqv_p,
4731 gh_equal_p): Use SCM_NFALSEP, instead of testing against
4732 SCM_BOOL_T. Any non-false value is true.
4733
4734 Tue Sep 2 00:27:07 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4735
4736 * symbols.h (scm_builtin_bindings, scm_builtin_weak_bindings,
4737 scm_gensym): Added prototypes.
4738
4739 * symbols.c (scm_gensym): New function. This will speed up
4740 certain types of applications (such as macro systems) which
4741 generate lots of symbols.
4742
4743 Mon Sep 1 22:30:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4744
4745 * numbers.c (logand, logior, logxor): Handle 0 or 1 arguments.
4746
4747 Sat Aug 30 18:56:19 1997 Gary Houston <ghouston@actrix.gen.nz>
4748
4749 * unif.c (scm_shap2ra): tighten the checking of the array dimension
4750 specifier, since (2) or (2 . 3) would cause SEGV.
4751 (scm_transpose_array): more argument checking fixes.
4752
4753 Thu Aug 28 23:48:53 1997 Jim Blandy <jimb@totoro.red-bean.com>
4754
4755 * Makefile.in: Regenerated.
4756
4757 Wed Aug 27 17:44:44 1997 Jim Blandy <jimb@totoro.red-bean.com>
4758
4759 * Makefile.in: Regenerated, so it uses "tar", not "gtar".
4760
4761 Mon Aug 25 13:47:25 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4762
4763 * error.c, error.h (scm_error_callback): Removed (see NEWS).
4764
4765 Sun Aug 24 01:25:35 1997 Mikael Djurfeldt <mdj@kenneth>
4766
4767 * regex-posix.c: If <regex.h> can't be found, try <rxposix.h> or
4768 <rx/rxposix.h>. (This is in order to accomodate for the GNU Rx
4769 library.)
4770
4771 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp, ramap_1,
4772 ramap_2o, scm_array_index_map_x, raeql_1, scm_array_equal_p),
4773 unif.c (scm_vector_set_length_x, scm_uniform_vector_length,
4774 scm_array_p, scm_array_rank, scm_array_dimensions,
4775 scm_enclose_array, scm_array_in_bounds_p, scm_uniform_vector_ref,
4776 scm_cvref, scm_array_set_x, scm_array_contents, scm_array_to_list,
4777 scm_array_prototype): Added case scm_tc7_wvect.
4778
4779 Sat Aug 23 18:45:44 1997 Gary Houston <ghouston@actrix.gen.nz>
4780
4781 * errno.h: prototype for scm_strerror.
4782 * error.c (scm_strerror): new procedure.
4783
4784 Mon Aug 18 14:58:22 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4785
4786 * list.c (scm_list_append_x): Allow non-pair as last argument.
4787 This is consistent with the R4RS append and is probably the
4788 correct behaviour as specified by R2RS. (Thanks to Radey Shouman)
4789
4790 Sat Aug 16 18:42:15 1997 Gary Houston <ghouston@actrix.gen.nz>
4791
4792 * stime.h: prototype for scm_times.
4793 * stime.c (scm_times): new procedure.
4794 * ioext.c (scm_fseek): if the first argument is a file descriptor
4795 call lseek.
4796 (scm_ftell): if the first argument is a file descriptor call lseek
4797 (sic).
4798 * filesys.h: prototypes for scm_open_fdes, scm_fsync.
4799 * filesys.c (scm_chmod): if the first argument is a file descriptor,
4800 call fchmod.
4801 (scm_chown): if the first argument is a port or file descriptor,
4802 call fchown.
4803 (scm_truncate_file): new procedure.
4804 Add DEFER/ALLOW INTS to a few other procedures.
4805 (scm_fsync): new procedure.
4806 (scm_open_fdes): new procedure.
4807 (scm_open): use scm_open_fdes. If mode isn't specified, 666 will
4808 now be used.
4809 (scm_fcntl): the first argument can now be a file descriptor. The
4810 third argument is now optional.
4811
4812 * posix.c (scm_execl, scm_execlp): make the filename argument
4813 compulsory, since omitting it causes SEGV.
4814 (scm_sync): return unspecified instead of #f.
4815 (scm_execle): new procedure.
4816 (environ_list_to_c): new procedure.
4817 (scm_environ): use environ_list_to_c. disable interrupts.
4818 (scm_convert_exec_args): take pos and subr arguments and
4819 improve error checking.
4820
4821 1997-08-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4822
4823 * stacks.c (scm_make_stack), coop-threads.c, mit-pthreads.c
4824 (scm_call_with_new_thread): Bugfix: SCM_WNA should go as third
4825 argument to SCM_ASSERT. Furthermore, the name of the function
4826 should be passed as first argument when signalling
4827 SCM_WNA. (Thanks to Thomas Morgan)
4828
4829 * gsubr.c (scm_gsubr_apply): From Radey Shouman
4830 <shouman@zianet.com>: "The switch in scm_gsubr_apply that
4831 dispatches on the number of actual args has a default case
4832 reporting an internal error. This is a vestige from a version
4833 that mallocated a SCM vector to hold the arguments. In the
4834 current version this check is too late: if it ever happens we will
4835 have already overstepped the bounds of the array.
4836
4837 Also, the patch [...] adds a check for too many actual arguments."
4838
4839 mdj: Removed check for "internal programming error".
4840
4841 Wed Aug 13 15:38:44 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4842
4843 * gh_io.c (gh_write): New function.
4844
4845 * gh_eval.c (catch_with_saved_stack): Removed. Replaced by:
4846 throw.c (scm_internal_stack_catch): New sibling to the other catch
4847 functions. Code moved from gh_eval.c.
4848 throw.h: Added header.
4849 gh_eval.c (gh_eval_str_with_stack_saving_handler): Renamed call to
4850 scm_internal_stack_catch.
4851
4852 Tue Jul 29 01:03:08 1997 Gary Houston <ghouston@actrix.gen.nz>
4853
4854 * ioext.h: fix up prototypes.
4855 * ioext.c (scm_dup_to_fdes): renamed from scm_primitive_dup2.
4856 Scheme name is now dup->fdes.
4857 (scm_dup_to_fdes): make the second argument optional and
4858 fold in the functionality of scm_primitive_dup.
4859 (scm_primitive_dup): deleted.
4860
4861 Mon Jul 28 05:24:42 1997 Gary Houston <ghouston@actrix.gen.nz>
4862
4863 * fports.h (SCM_P): prototypes for scm_setvbuf, scm_setfileno.
4864 * fports.c (scm_setbuf0): don't disable the setbuf if MSDOS or
4865 ultrix are defined. Use setvbuf instead of setbuf.
4866 (scm_setvbuf): new procedure.
4867 (scm_init_fports): intern _IOFBF, _IOLBF, _IONBF.
4868 (scm_setfileno): moved from ioext.c.
4869 (scm_fgets): cast SCM_STREAM to (FILE *), remove unused lp variable.
4870 (top of file): Delete 25 lines of probably obsolete CPP hair for MSDOS.
4871
4872 Sun Jul 27 10:54:01 1997 Marius Vollmer <mvo@zagadka.ping.de>
4873
4874 * fluids.c (scm_fluid_p): New function.
4875 * fluids.h (scm_fluid_p): New prototype.
4876
4877 Sat Jul 26 21:33:37 1997 Marius Vollmer <mvo@zagadka.ping.de>
4878
4879 * print.c (scm_iprin1): Enter printed structures into the print
4880 state as nested data while they are printed.
4881 (print_state_fluid, print_state_fluid_num): New variables.
4882 (scm_init_print): Initialize them.
4883 (scm_iprin): If print_state_fluid carries a print_state, use that
4884 instead of creating a new one.
4885 (scm_printer_apply, apply_stub, struct apply_data): New
4886 definitions to help with calling printer functions written in
4887 Scheme.
4888 * print.h (scm_printer_apply): New prototype.
4889
4890 * struct.c (scm_print_struct): Use scm_printer_apply to call the
4891 user defined struct printer.
4892
4893 * dynwind.c (scm_dowinds): Handle fluids on the wind list.
4894 * fluids.h (scm_internal_with_fluids, scm_with_fluids,
4895 scm_swap_fluids, scm_swap_fluids_reverse): New prototypes.
4896 * fluids.c (scm_internal_with_fluids, scm_with_fluids,
4897 scm_swap_fluids, scm_swap_fluids_reverse): New functions.
4898
4899 Fri Jul 25 12:05:46 1997 Marius Vollmer <mvo@zagadka.ping.de>
4900
4901 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fixed use of
4902 SCM_ASSERT: arg comes before pos.
4903
4904 Fri Jul 25 17:00:38 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4905
4906 * eval.c (scm_apply): Handle the case when a tc7_sybr_2 is applied
4907 to a list of length zero correctly.
4908
4909 Wed Jul 23 16:17:46 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu>
4910
4911 Supply an `fgets' method for port objects to do fast line i/o.
4912 * ioext.c (scm_read_line): New function.
4913 * genio.c (scm_gen_read_line): New function.
4914 * fports.c (scm_fgets): New function.
4915 (scm_fptob, scm_pipob): Add scm_fgets method.
4916 * ports.c (fgets_void_port, scm_generic_fgets): New functions.
4917 (void_port_ptob): Add void fgets method.
4918 (scm_newptob): Initialize fgets method from ptob struct.
4919 * ports.h (scm_ptobfuns): Add fgets method.
4920 * vports.c (scm_sfptob): Supply generic fgets method.
4921 * strports.c (scm_stptob): Supply generic fgets method.
4922
4923 Mon Jul 21 04:03:42 1997 Gary Houston <ghouston@actrix.gen.nz>
4924
4925 * ioext.h: removed scm_duplicate_port prototype.
4926
4927 * ioext.c (scm_primitive_dup2): return the new file descriptor
4928 instead of SCM_UNSPECIFIED, since similarity to scm_primitive_dup
4929 is convenient.
4930 (scm_fdopen): bug fix: don't try to make port unbuffered until its
4931 stream has been set.
4932 (scm_duplicate_port): deleted, there's now an implementation in
4933 boot-9.scm.
4934 (scm_primitive_dup2): do nothing if newfd == oldfd.
4935
4936 Sun Jul 20 03:55:49 1997 Gary Houston <ghouston@actrix.gen.nz>
4937
4938 * filesys.c (scm_close): oops, don't call SCM_INUM twice on the
4939 argument.
4940
4941 * ioext.h: new prototypes.
4942 * ioext.c (scm_primitive_dup, scm_primitive_dup2): new procedures.
4943
4944 * fluids.c (next_fluid_num): don't do
4945 SCM_THREAD_CRITICAL_SECTION_START/END unless USE_THREADS is defined.
4946
4947 * ports.h: prototypes too.
4948 * ports.c (scm_mode_bits, scm_port_mode): moved from fports.c.
4949
4950 * fports.h: prototype too.
4951 * fports.c (scm_evict_ports): moved from ioext.c.
4952
4953 Sat Jul 19 04:56:52 1997 Gary Houston <ghouston@actrix.gen.nz>
4954
4955 * ports.c (scm_close_port): return a boolean instead of unspecified.
4956 throw an error if an error other than EBADF occurs.
4957
4958 * filesys.h: scm_close prototype.
4959 * filesys.c (scm_close): new procedure, can close file descriptors
4960 and ports (scsh compatible).
4961
4962 * ports.c (scm_flush_all_ports): SCM_PROC incorrectly allowed an
4963 optional argument.
4964
4965 Fri Jul 18 11:19:53 1997 Marius Vollmer <mvo@zagadka.ping.de>
4966
4967 * fluids.c, fluid.h: New files.
4968 * Makefile.am (libguile_la_SOURCES): Added "fluids.c".
4969 (modinclude_HEADERS): Added "fluids.h"
4970
4971 * init.c: Include "fluids.h". (scm_boot_guile_1): Added call to
4972 scm_init_fluids to initialize the fluid machine.
4973 (scm_start_stack): Initialize the fluids of the first root with
4974 scm_make_initial_fluids.
4975
4976 * root.h: Added "fluids" member to scm_root_state.
4977 * root.c: Include "fluids.h". (scm_mark_root): Mark "fluids".
4978 (scm_make_root): Call scm_copy_fluids to make fluid bindings
4979 unique for the new root when it has a parent.
4980
4981 * smob.h: Include "libguile/print.h" to make scm_print_state
4982 visible.
4983
4984 * dynl.c (free_dynl_obj): New function to free the dynamic object
4985 data. (dynl_smob): Use it.
4986 * dynl.c (scm_dynamic_link): Moved allocating of the memory for
4987 the dynamic object data below the linking of the object to avoid
4988 memory leak when the linking code throws an error. Now the code
4989 leaks a whole dynamically linked library when must_malloc throws,
4990 but that should be much less likely.
4991
4992 Fri Jul 11 00:19:47 1997 Jim Blandy <jimb@floss.red-bean.com>
4993
4994 Changes to compile under gnu-win32, from Marcus Daniels:
4995 * stime.c (tzset): If tzset isn't provided, make it a NOP.
4996 (scm_localtime): Change SCM_EOF to SCM_EOL.
4997 (scm_mktime): Likewise.
4998 * socket.c: Don't include sys/un.h unless autoconf tells
4999 us Unix domain sockets are available.
5000 (scm_fill_sockaddr): Ignore Unix domain code.
5001 (scm_addr_vector): Likewise.
5002 (scm_init_addr_buffer): Likewise.
5003 (scm_socketpair): Don't include unless socketpair was
5004 found during autoconf.
5005 * simpos.c (SYSTNAME): Treat cygwin like Unix.
5006 * scmsigs.c (scm_pause): Don't include unless pause was found
5007 during autoconf.
5008 * posix.c (scm_getgroups): Don't include unless support function
5009 was found during autoconf (in this case, getgroups).
5010 (scm_setpwent): For setpwent.
5011 (scm_setegid): For setegid.
5012 * net_db.c (scm_inet_netof): Don't include unless support
5013 function was found during autoconf (in this case, inet_netof).
5014 (scm_lnaof): For inet_lnaof.
5015 (scm_inet_makeaddr): For inet_makeaddr.
5016 (scm_getnet): For getnetent, getnetbyname, getnetbyaddr.
5017 (scm_getproto): For getprotoent.
5018 (scm_getserv): For getservent.
5019 (scm_sethost): For sethostent, endhostent.
5020 (scm_setnet): For setnetent, endnetent.
5021 (scm_setproto): For setprotoent, endprotoent.
5022 (scm_setserv): For setservent, endservent.
5023 * scmconfig.h.in: Regenerated.
5024
5025 Thu Jul 10 00:22:24 1997 Jim Blandy <jimb@floss.red-bean.com>
5026
5027 * stime.c (scm_localtime, scm_mktime): Pass SCM_EOL to
5028 scm_misc_error, not SCM_EOF.
5029
5030 * error.c (scm_wta): Pass SCM_EOL to scm_misc_error as the list of
5031 arguments for formatting the error message, not SCM_BOOL_F. I
5032 think this is left over from the (eq? '() #f) days.
5033
5034 * read.c (recsexpr): Give this a dummy definition if
5035 DEBUG_EXTENSIONS isn't #defined.
5036
5037 Fri Jul 4 23:42:17 1997 Marius Vollmer <mvo@zagadka.ping.de>
5038
5039 * coop-threads.c (scm_wait_condition_variable): Lock mutex again
5040 after waiting.
5041
5042 Thu Jul 3 16:31:24 1997 Marius Vollmer <mvo@zagadka.ping.de>
5043
5044 * root.c (cwdr_outer_body): Bugfix: Pass `c' instead of `&c' to
5045 scm_internal_catch.
5046
5047 Sat Jun 28 16:14:09 1997 Tim Pierce <twp@twp.tezcat.com>
5048
5049 * Makefile.am (libguile_la_LIBADD): Remove @ALLOCA@, since
5050 alloca.lo will be included in @LIBLOBJS@. Something better than
5051 this should be possible.
5052 * Makefile.in: Regenerated.
5053
5054 Sat Jun 28 03:40:15 1997 Gary Houston <ghouston@actrix.gen.nz>
5055
5056 * simpos.h: prototype for scm_primitive_exit.
5057 * simpos.c (scm_primitive_exit): new procedure, terminates the
5058 process without unwinding the stack.
5059
5060 Sat Jun 28 03:45:25 1997 Tim Pierce <twp@twp.tezcat.com>
5061
5062 * regex-posix.c (scm_make_regexp): Make `flags' a variable-length
5063 argument and logior its components together, so the user doesn't
5064 have to do this explicitly. Also, if regexp/basic is supplied, then
5065 turn off REG_EXTENDED.
5066 (scm_init_regex_posix): New regexp/basic symbol.
5067 (REG_BASIC): #define this if it is not already present.
5068
5069 Fri Jun 27 20:36:35 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu>
5070
5071 * Makefile.am (libguile_la_LIBADD): Include @ALLOCA@.
5072 (MOSTLYCLEANFILES): New target, changed from CLEANFILES.
5073 (CLEANFILES): New target, clean versiondat.h, libpath.h.
5074 (DISTCLEANFILES): New target, clean *.x.
5075 * Makefile.in: Regenerated.
5076
5077 Tue Jun 24 00:29:07 1997 Jim Blandy <jimb@floss.red-bean.com>
5078
5079 * script.c (scm_compile_shell_switches): Add 1997 to copyright
5080 years in usage message.
5081
5082 * Makefile.am (libguile_la_LDFLAGS): Bump library version.
5083 * Makefile.in: Regenerated.
5084
5085 * regex-posix.c (scm_init_regex_posix): Delete the regexp/nosub
5086 flag; I don't think we support it.
5087 (scm_make_regexp): Make sure the user doesn't pass the
5088 regexp/nosub flag.
5089
5090 * regex-posix.c (scm_make_regexp, scm_regexp_exec): Add optional
5091 FLAGS arguments.
5092 (scm_init_regex_posix): Define constants for the REG_mumble flags;
5093 name them according to the SCSH convention: regexp/mumble.
5094
5095 * regex-posix.h (scm_make_regexp, scm_regexp_exec): Update prototypes.
5096
5097 Mon Jun 23 18:44:49 1997 Jim Blandy <jimb@floss.red-bean.com>
5098
5099 * Makefile.am (libpath.h): Include the values of all the standard
5100 Makefile directory variables. Print a message, but don't print
5101 all the commands.
5102 (versiondat.h): Print a message, but don't print all the commands.
5103 * load.c: #include "alist.h".
5104 (init_build_info): New function.
5105 (scm_init_load): Call it.
5106 * Makefile.in: Regenerated.
5107
5108 Sun Jun 22 19:12:58 1997 Jim Blandy <jimb@floss.red-bean.com>
5109
5110 * root.c: Establish a reliable catch-all handler for the new root.
5111 After all the Scheme handler function might signal an error too,
5112 and we don't want to lose that.
5113 (cwdr_inner_body): Renamed from cwdr_body.
5114 (cwdr_outer_body): New function, to establish the user's handler,
5115 and pass control to cwdr_inner_body.
5116 (cwdr): Establish the reliable catch-all handler here, and pass
5117 control to cwdr_outer_body.
5118 (struct cwdr_body_data): New field, handler, to allow cwdr to pass
5119 the user's handler through to cwdr_outer_body.
5120 * throw.c (scm_handle_by_message): Move guts into....
5121 (handler_message): New static function.
5122 (scm_handle_by_message_noexit): New function.
5123 * throw.h (scm_handle_by_message_noexit): New prototype.
5124
5125 * __scm.h: (SCM_FENCE): New macro: optimizer will not move code
5126 across this. Only works on GCC. Otherwise, we hope for the best.
5127 (SCM_DEFER_INTS, SCM_ALLOW_INTS): Use FENCE appropriately. I have
5128 the feeling that real thread systems will not need this...
5129
5130 Sun Jun 22 15:46:35 1997 Jim Blandy <jimb@floss.red-bean.com>
5131
5132 Try to detect when people are using one version of libguile and a
5133 different version of ice-9. People have been skewing things and
5134 sending in bug reports.
5135 * Makefile.am (versiondat.h): New file to generate.
5136 * version.c: #include "versiondat.h", to get version info.
5137 (scm_libguile_config_stamp): New function.
5138 * script.c: #include "version.h".
5139 (scm_compile_switches): Call scm_version to get version number.
5140 * scmconfig.h.in, Makefile.in: Regenerated.
5141 * Makefile.in: Regenerated.
5142
5143 * Makefile.am (ETAGS_ARGS): Catch SCM_PROC, etc. so we can find
5144 primitive definitions under their Scheme names.
5145
5146 * Makefile.am (libguile_la_LDFLAGS): Update library version to
5147 1:2. Helps avoid confusion between installed and uninstalled libs.
5148
5149 * scmconfig.h.in: Regenerated. (Needed after June 3 change to
5150 ../configure.in.)
5151
5152 * gdb_interface.h (GDB_INTERFACE): Remove semicolon and trailing
5153 backslash from definition; this should be used like: GDB_INTERFACE;
5154
5155 Sun Jun 22 04:00:32 1997 Gary Houston <ghouston@actrix.gen.nz>
5156
5157 * ioext.c (scm_duplicate_port): bug fix: don't try to make the
5158 new port unbuffered until its stream has been set.
5159
5160 Sat Jun 21 18:44:03 1997 Gary Houston <ghouston@actrix.gen.nz>
5161
5162 * ports.h: new prototype.
5163 * ports.c (scm_flush_all_ports): new procedure, scsh compatible.
5164
5165 Sat Jun 21 00:25:03 1997 Jim Blandy <jimb@floss.red-bean.com>
5166
5167 Make things compile neatly under Sun's C compiler.
5168 * dynl.c (scm_dynamic_func): Cast return value from sysdep_dynl_func.
5169 * extchrs.c (xmbtowc): Make the second arg a normal char, not
5170 unsigned, because that's what the ANSI function takes.
5171 * extchrs.h (xmbtowc): Corresponding change to prototype.
5172 * genio.c (scm_gen_getc): Make buf plain chars. Nobody wants
5173 uchars here.
5174 * mbstrings.c (scm_mb_ilength): Use ANSI arg syntax. Make DATA
5175 argument plain char *.
5176 * strings.c (scm_string): Use SCM_ROCHARS, since c is a plain
5177 char.
5178 * tag.c (scm_tag): Remove unreachable statement.
5179 * unif.c (scm_array_to_list): If we want to shift a 1 bit to the
5180 top of the word, it should be unsigned.
5181
5182 * eval.c (scm_lookupcar1): Don't declare var2 unless USE_THREADS
5183 is defined, to avoid warnings; it's only used in the
5184 conflict-checking code. Which might go away anyway.
5185 (SCM_CEVAL): All goto's targeting the `dispatch' label are in
5186 conditionals; put the label definition in an #if too, to stifle
5187 warnings.
5188
5189 * Makefile.am (EXTRA_DIST): Include ChangeLog-gh and
5190 ChangeLog-threads in the distribution.
5191 * Makefile.in: Regenerated.
5192
5193 Fri Jun 20 10:03:41 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu>
5194
5195 * guile-snarf.in: Changed regexp to support CPPs that insert
5196 whitespace between lexical tokens (which munges the `%%%' snarf
5197 cookie).
5198
5199 Tue Jun 17 13:49:56 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu>
5200
5201 * load.c (scm_init_load_path): Append $(datadir)/guile to
5202 %load-path, so modules do not have to be installed in Guile's
5203 current version directory.
5204
5205 Mon Jun 16 17:20:55 1997 Marius Vollmer <mvo@zagadka.ping.de>
5206
5207 * dynl.c (scm_dynamic_call, scm_dynamic_args_call): Wrap dynamic
5208 function call in SCM_DEFER_INTS/SCM_ALLOW_INTS.
5209 (scm_dynamic_link, scm_dynamic_unlink, scm_dynamic_func): Always
5210 call the sysdep functions with deferred ints.
5211 * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c (sysdep_dynl_link,
5212 sysdep_dynl_unlink, sysdep_dynl_func): Expect to be called with
5213 deferred interrupts and insert SCM_ALLOW_INTS before throwing an
5214 error.
5215
5216 * dynl.c (scm_dynamic_unlink, scm_dynamic_call): Return
5217 SCM_UNSPECIFIED.
5218
5219 Sat Jun 14 19:00:58 1997 Gary Houston <ghouston@actrix.gen.nz>
5220
5221 * scmsigs.c (sys_deliver_signals): add a comment about a probable bug.
5222
5223 Wed Jun 11 00:33:00 1997 Jim Blandy <jimb@floss.red-bean.com>
5224
5225 * Makefile.in: Regenerated after xtra_PLUGIN_guile_libs change in
5226 ../configure.in.
5227
5228 Sun Jun 8 14:37:26 1997 Marius Vollmer <mvo@zagadka.ping.de>
5229
5230 * eval.c (scm_lookupcar1): New procedure to cope with a race
5231 condition during lookup (when using threads).
5232 (scm_lookupcar): Implement in terms of scm_lookupcar1.
5233 (SCM_CEVAL): Use scm_lookupcar1 instead of scm_lookupcar in one
5234 place.
5235
5236 Fri Jun 6 19:05:07 1997 Jim Blandy <jimb@totoro.cyclic.com>
5237
5238 * regex-posix.c (scm_regexp_exec): Use the `start' argument if
5239 supplied. (Change from Tim Pierce.)
5240
5241 Thu Jun 5 16:38:19 1997 Marius Vollmer <mvo@zagadka.ping.de>
5242
5243 * struct.c (init_struct): Forget to mention this in the "Wed Jun 4
5244 23:47:01 1997" changelog: Slots are now initialized with `#f' by
5245 default and not `()'. `#f' is the canonical non-value in Scheme,
5246 right?
5247
5248 Wed Jun 4 23:47:01 1997 Marius Vollmer <mvo@zagadka.ping.de>
5249
5250 * struct.c (struct_printer): New variable that holds a handle on
5251 the Scheme variable *struct-printer*. This variable can be set by
5252 Scheme code to override the printing of structures.
5253 (scm_print_struct): If struct_printer is set, call it. If it is
5254 not set, or returns #f, print the structure in the old fashion.
5255 Include "eval.h" for scm_apply.
5256
5257 Tue Jun 3 23:01:39 1997 Marius Vollmer <mvo@zagadka.ping.de>
5258
5259 * struct.c (scm_struct_ref, scm_struct_set_x): Use
5260 scm_struct_i_n_words to get the number of fields, not
5261 -scm_struct_n_extra_words.
5262
5263 On the route to fancier struct printing:
5264 * struct.c (scm_print_struct): New function to print a structure.
5265 Include "genio.h" to support it. This function doesn't do
5266 anything interesting right now, but I think it should be here
5267 anyway.
5268 * struct.h: Include "print.h" and add prototype for
5269 scm_print_struct.
5270 * print.c (scm_iprin1): Call scm_print_struct instead of trying to
5271 print structures ourself.
5272
5273 Sun Jun 1 07:58:41 1997 Gary Houston <ghouston@actrix.gen.nz>
5274
5275 * scmsigs.c (sys_deliver_signals): bug fix: reset got_signal[i]
5276 before applying the handler in case it doesn't return.
5277
5278 Sat May 31 18:57:51 1997 Gary Houston <ghouston@actrix.gen.nz>
5279
5280 * scmsigs.h, async.h: updated.
5281
5282 * _scm.h: if HAVE_RESTARTS is defined then don't use a SYSCALL
5283 loop.
5284
5285 * posix.c (scm_uname): interpret only negative values as an error.
5286 Solaris normally returns a positive value.
5287
5288 * script.c (scm_compile_shell_switches): if we are not going into
5289 an interactive repl, set scm_mask_ints to zero so that asyncs can
5290 run.
5291
5292 * simpos.c (scm_system): don't ignore/unignore signals around
5293 the "system" call.
5294
5295 * posix.c (scm_open_pipe): don't ignore/unignore signals around
5296 the "popen" call.
5297
5298 * init.c (scm_boot_guile_1): don't call scm_init_signals, it's
5299 done in boot-9.scm instead.
5300
5301 * scmsigs.c, async.c: Major rewriting of signal handling code.
5302 (scm_sigaction): new procedure.
5303 (scm_sleep): don't wrap sleep in SCM_SYSCALL, it would mess up the
5304 timing.
5305 (scm_raise): return unspecified, throw error on failure.
5306
5307 Thu May 29 02:47:36 1997 Jim Blandy <jimb@floss.cyclic.com>
5308
5309 * regex-posix.c (scm_init_regex_posix): Register the "regex"
5310 feature, to help boot-9.scm decide whether to import the regex
5311 module.
5312
5313 Thu May 29 02:19:40 1997 Jim Blandy <jimb@floss.cyclic.com>
5314
5315 * eval.c: Include scmconfig.h at the beginning of the file so that
5316 HAVE_ALLOCA_H may properly be defined. Thanks to Bill Janssen for
5317 pointing this out.
5318
5319 * regex-posix.c: #include "_scm.h" before conditionally #including
5320 <regex.h>; the former defines HAVE_REGCOMP.
5321
5322 * regex-posix.c: #include <regex.h> conditionally, so the file is
5323 CPP'able (for dependency scanning) even on systems that don't have
5324 a <regex.h> header.
5325
5326 Tue May 27 23:48:38 1997 Jim Blandy <jimb@floss.cyclic.com>
5327
5328 Add new R4RS-compliant syntax for keywords.
5329 * read.c (scm_lreadr): Recognize `#:' as a prefix for keywords,
5330 regardless of the setting of the `keywords' read option.
5331 * kw.c (prin_kw): Print keywords using the `#:' syntax, so they
5332 can be re-read no matter what the setting of the `keywords' read
5333 option.
5334
5335 Tue May 27 22:47:31 1997 Tim Pierce <twp@twp.tezcat.com>
5336
5337 Add support for POSIX regular expressions.
5338
5339 * regex-posix.c, regex-posix.h: New files. (Some code
5340 is taken liberally from rx/rgx.c in the old Guile dist.)
5341
5342 * init.c: Include regex-posix.h.
5343 (scm_boot_guile_1): Call scm_init_regex_posix.
5344
5345 * Makefile.am (EXTRA_libguile_la_SOURCES, modinclude_HEADERS):
5346 Add regex-posix.[ch] sources.
5347 * Makefile.in: Regenerated.
5348
5349 * scmconfig.h.in: Add HAVE_REGCOMP macro. (automake is supposed
5350 to do this automatically? It didn't for me, bleh.)
5351
5352 Mon May 26 18:51:29 1997 Jim Blandy <jimb@floss.cyclic.com>
5353
5354 * fports.c (print_pipe_port): New function.
5355 (scm_fptob): Use print_pipe_port instead of scm_prinport; the
5356 latter doesn't even take the right arguments.
5357
5358 * Makefile.am: Increment shared lib revision number. I think
5359 sometimes the uninstalled Guile finds the installed shared lib;
5360 Gord says doing this might help. As things turned out, I can't
5361 say whether it does.
5362 * Makefile.in: Regenerated.
5363
5364 * gh_init.c (gh_enter): Cast c_main_prog to a void * before
5365 passing it as the closure argument to scm_boot_guile. (Bill
5366 Janssen)
5367
5368 * ports.c (print_void_port, putc_void_port, puts_void_port,
5369 write_void_port, flush_void_port, getc_void_port, close_void_port,
5370 noop0): Use ANSI prototypes instead of K&R declarations, so the
5371 initialization of void_port_ptob gets aggressively type-checked.
5372 Fix arguments of print_void_port and write_void_port. (Bill
5373 Janssen)
5374
5375 * COPYING, __scm.h, _scm.h, alist.c, alist.h, append.c, append.h,
5376 appinit.c, arbiters.c, arbiters.h, async.c, async.h, backtrace.c,
5377 backtrace.h, boolean.c, boolean.h, chars.c, chars.h,
5378 continuations.c, continuations.h, coop-defs.h, coop-threads.c,
5379 coop-threads.c.cygnus, coop-threads.h, coop-threads.h.cygnus,
5380 coop.c, debug.c, debug.h, dynl-dl.c, dynl-dld.c, dynl-shl.c,
5381 dynl-vms.c, dynl.c, dynl.h, dynwind.c, dynwind.h, eq.c, eq.h,
5382 error.c, error.h, eval.c, eval.h, extchrs.h, feature.c, feature.h,
5383 filesys.c, filesys.h, fports.c, fports.h, fsu-pthreads.h, gc.c,
5384 gc.h, gdbint.c, gdbint.h, genio.c, genio.h, gh.h, gh_data.c,
5385 gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c, gh_list.c,
5386 gh_predicates.c, gh_test_c.c, gh_test_repl.c, gscm.c, gscm.h,
5387 gsubr.c, gsubr.h, guile.c, hash.c, hash.h, hashtab.c, hashtab.h,
5388 init.c, init.h, ioext.c, ioext.h, kw.c, kw.h, libguile.h, list.c,
5389 list.h, load.c, load.h, mallocs.c, mallocs.h, markers.c,
5390 markers.h, mbstrings.c, mbstrings.h, mit-pthreads.c,
5391 mit-pthreads.h, net_db.c, net_db.h, numbers.c, numbers.h,
5392 objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h,
5393 ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c,
5394 procprop.h, procs.c, procs.h, putenv.c, ramap.c, ramap.h, read.c,
5395 read.h, root.c, root.h, scmhob.h, scmsigs.c, scmsigs.h, script.c,
5396 script.h, sequences.c, sequences.h, simpos.c, simpos.h, smob.c,
5397 smob.h, snarf.h, socket.c, socket.h, srcprop.c, srcprop.h,
5398 stackchk.c, stackchk.h, stacks.c, stacks.h, stime.c, stime.h,
5399 strings.c, strings.h, strop.c, strop.h, strorder.c, strorder.h,
5400 strports.c, strports.h, struct.c, struct.h, symbols.c, symbols.h,
5401 tag.c, tag.h, tags.h, threads.c, threads.h, throw.c, throw.h,
5402 unif.c, unif.h, variable.c, variable.h, vectors.c, vectors.h,
5403 version.c, version.h, vports.c, vports.h, weaks.c, weaks.h: New
5404 address for FSF.
5405
5406 Mon May 26 12:37:30 1997 Jim Blandy <jimb@floss.cyclic.com>
5407
5408 * script.c (scm_find_executable): Use prototype-style definition
5409 here; apparently it's not quite right to have const in a prototype
5410 and then use a K&R declaration. I wonder if stuff like this will
5411 go away if we compile with -Wrequire-prototypes, or whatever that
5412 is... (Bernard URBAN)
5413
5414 * scmhob.h: New text from Bernard URBAN.
5415
5416 Sat May 17 17:14:36 1997 Jim Blandy <jimb@floss.cyclic.com>
5417
5418 * script.c: Don't #define const on hpux. Configure takes care of
5419 this. (Thanks to Larry Schwimmer.)
5420
5421 * script.c: Use the HAVE_UNISTD_H symbol provided by autoconf to
5422 decide whether to #include <unistd.h>, instead of listing a bunch
5423 of systems. Don't #include stdio twice. Removed dyked-out
5424 definition of scm_find_impl_file.
5425
5426 Fri May 16 03:06:08 1997 Jim Blandy <jimb@floss.cyclic.com>
5427
5428 * Makefile.am (libguile_la_LDFLAGS): Update libguile's shared
5429 library version info to 1:0.
5430 * Makefile.in: Regenerated.
5431
5432 * backtrace.c, backtrace.h, debug.c, debug.h, eq.c,
5433 gdb_interface.h, gdbint.c, gdbint.h, gh_data.c, gh_init.c,
5434 gh_io.c, gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c,
5435 init.c, net_db.c, options.c, options.h, ports.c, print.c, read.c,
5436 script.h, snarf.h, srcprop.c, srcprop.h, stacks.c, stacks.h,
5437 throw.c: Update copyright years; these files have been worked on
5438 significantly in 1997, but only had copyright years for 1996.
5439 Also, change name of copyright holder on some from Mikael
5440 Djurfeldt to Free Software Foundation; he has signed papers
5441 assigning the changes to the FSF.
5442
5443 * script.c (scm_shell_usage): Pass FATAL to exit. There's no
5444 reason not to give the user the option.
5445
5446 * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv):
5447 Return #f on end-of-file when scanning table (i.e. when called
5448 with no arguments). Try to catch errors, when we can.
5449 * posix.c (scm_getgrgid, scm_getpwuid): Same.
5450
5451 * script.h (scm_shell_usage, scm_compile_shell_switches): New
5452 external declarations. These are useful.
5453
5454 Thu May 15 05:21:36 1997 Gary Houston <ghouston@actrix.gen.nz>
5455
5456 * posix.c: don't include <sys/select.h> or define macros for
5457 select, since they were not used in this file.
5458
5459 * filesys.c (scm_select): make the fifth parameter microseconds,
5460 not milliseconds. let the fourth parameter be either a real value
5461 or an integer or #f. The first, second and third arguments can
5462 now be vectors: the type of the corresponding return set will be
5463 the same.
5464 (set_element, get_element): new static procedures.
5465
5466 Wed May 14 12:18:12 1997 Jim Blandy <jimb@floss.cyclic.com>
5467
5468 * strports.c (scm_eval_string): New function.
5469 (scm_eval_0str): Trivially re-implemented in terms of
5470 scm_eval_string.
5471 * strports.h (scm_eval_string): New extern decl.
5472
5473 * net_db.c (h_errno): Add extern decl for this.
5474
5475 * fports.c (local_pclose): New function.
5476 (scm_pipob): Use it in the initializer here.
5477
5478 From Tim Pierce:
5479 * net_db.c (scm_gethost, scm_getproto, scm_getnet, scm_getserv):
5480 Use a meaningful error message when signalling an error. For
5481 this, scm_gethost must check h_errno rather than errno.
5482
5483 Tue May 13 16:40:06 1997 Jim Blandy <jimb@floss.cyclic.com>
5484
5485 * Makefile.in: Regenerated, using automake-1.1p.
5486
5487 Tue May 13 04:34:52 1997 Gary Houston <ghouston@actrix.gen.nz>
5488
5489 * socket.c (scm_addr_vector): use SCM_UNDEFINED in scm_listify,
5490 not SCM_UNSPECIFIED.
5491
5492 * script.c (scm_compile_shell_switches): don't append (quit) if
5493 interactive.
5494 (scm_shell): call scm_exit_status and exit on the result of the
5495 evaluation.
5496
5497 Mon May 12 17:23:58 1997 Jim Blandy <jimb@floss.cyclic.com>
5498
5499 Ensure that shared substrings are handled properly when passed to
5500 a system call or other foreign function. Many thanks to Tim
5501 Pierce!
5502 * symbols.h (SCM_COERCE_SUBSTR): new macro.
5503 * filesys.c (scm_chmod, scm_rename, scm_delete_file, scm_mkdir,
5504 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
5505 scm_lstat), ports.c (scm_sys_make_void_port), posix.c (scm_utime,
5506 scm_putenv, scm_setlocale, scm_mknod), stime.c (setzone,
5507 scm_strftime), vports.c (scm_make_soft_port), backtrace.c
5508 (scm_display_error_message): use RO macros when strings may be RO.
5509 * error.c (scm_error_scm), filesys.c (scm_chown, scm_chmod,
5510 scm_rename, scm_delete_file, scm_mkdir, scm_rmdir, scm_opendir,
5511 scm_chdir, scm_symlink, scm_readlink, scm_lstat), ioext.c
5512 (scm_freopen, scm_duplicate_port, scm_fdopen), net_db.c
5513 (scm_gethost, scm_getnet, scm_getproto, scm_getserv), ports.c
5514 (scm_sys_make_void_port), posix.c (scm_getgrgid, scm_utime,
5515 scm_setlocale, scm_mknod), stime.c (setzone, scm_strptime,
5516 scm_strftime), vports.c (scm_make_soft_port): use
5517 SCM_COERCE_SUBSTR to make sure shared substrings are
5518 null-terminated.
5519
5520 Mon May 12 15:33:10 1997 Jim Blandy <jimb@totoro.cyclic.com>
5521
5522 * error.c (scm_error): Add newline to error message.
5523
5524 * init.c (scm_init_standard_ports): Doc fix.
5525
5526 Thu May 8 14:38:01 1997 Marius Vollmer <mvo@zagadka.ping.de>
5527
5528 * dynl-shl.c: Completely replaced with new code from Bernard
5529 URBAN.
5530
5531 * script.c (scm_ice_9_already_loaded): New variable.
5532 (scm_compile_shell_switches): Use it.
5533
5534 Mon May 5 20:35:08 1997 Gary Houston <ghouston@actrix.gen.nz>
5535
5536 * filesys.c (scm_input_waiting_p): add missing third argument to
5537 scm_misc_error.
5538
5539 * stime.c (scm_localtime): copy the result of localtime before
5540 calling gmtime in case they share a buffer.
5541 (scm_localtime, scm_mktime): throw an error if neither HAVE_TM_ZONE
5542 nor HAVE_TZNAME.
5543
5544 Fri May 2 19:07:11 1997 Gary Houston <ghouston@actrix.gen.nz>
5545
5546 * eq.c (scm_equal_p): use SCM_TYP7SD (y) not SCM_TYP7SD (x).
5547
5548 Thu May 1 17:01:45 1997 Jim Blandy <jimb@floss.cyclic.com>
5549
5550 * Makefile.am (check-local): New target, which causes 'make check'
5551 to run gh_test_c and gh_test_repl, with some trivial input.
5552 * Makefile.in: Rgnrtd.
5553
5554 Tue Apr 29 19:00:40 1997 Marius Vollmer <mvo@zagadka.ping.de>
5555
5556 * dynl.c (print_dynl_obj): Indicate whether the dynamic object has
5557 been unlinked.
5558
5559 Mon Apr 28 06:10:14 1997 Gary Houston <ghouston@actrix.gen.nz>
5560
5561 * async.c (scm_sys_tick_async_thunk): commented out. I'm not
5562 sure how this was supposed to work.
5563 (scm_async_click): don't send SCM_TICK_SIGNAL.
5564 (scm_init_async): don't initialize %tick-thunk.
5565
5566 * the following change doesn't affect the Scheme interface:
5567 gc-thunk is called at the end of garbage collection. however it's
5568 no longer implemented by pretending it's a signal.
5569
5570 * gc.c (scm_gc_end): don't call scm_take_signal. instead mark the
5571 system async corresponding to scm_gc_thunk.
5572 * async.h: declare scm_gc_async.
5573 * async.c (scm_sys_gc_async_thunk): apply the thunk named by
5574 gc-thunk directly, instead of going through a signal handler.
5575 (scm_gc_async): new variable, points to the GC system-async.
5576 (scm_init_async): save the GC async as scm_gc_async instead
5577 of using system_signal_asyncs.
5578 (scm_gc_vcell): new variable, stores the gc-thunk vcell.
5579
5580 Mon Apr 28 19:14:44 1997 Jim Blandy <jimb@floss.cyclic.com>
5581
5582 * Makefile.am (libpath.h, cpp_err_symbols.c, cpp_sig_symbols.c):
5583 Don't screw up if we're interrupted.
5584 * Makefile.in: Regeneradet.
5585
5586 Sun Apr 27 17:57:15 1997 Jim Blandy <jimb@floss.cyclic.com>
5587
5588 * aclocal.m4: Removed; unnecessary, given changes of Apr 24.
5589
5590 * Makefile.am (modincludedir): Use "ice-9" instead of "@module@";
5591 we're not using AM_INIT_GUILE_MODULE any more.
5592 * Makefile.in: Reneregated.
5593
5594 Thu Apr 24 00:41:08 1997 Jim Blandy <jimb@floss.cyclic.com>
5595
5596 Functions for finding variable bindings, grace à Tim Pierce.
5597 * gh_data.c (gh_lookup, gh_module_lookup): New functions.
5598 * gh.h (gh_lookup, gh_module_lookup): New prototypes.
5599
5600 Get 'make dist' to work again.
5601 * Makefile.am (EXTRA_DIST): Remove PLUGIN files.
5602 * Makefile.in: Regenerated, like a surry without a fringe on top.
5603
5604 Changes for reduced Guile distribution: one configure script,
5605 no plugins.
5606 * configure.in, configure: Removed.
5607 * acconfig.h, acinclude.m4: Moved to parent directory, where the
5608 real configure script lives.
5609 * Makefile.in, scmconfig.h.in: Regenerated.
5610
5611 * init.c: #include "script.h", to get prototype for script.c's
5612 init function.
5613
5614 Wed Apr 23 21:25:39 1997 Jim Blandy <jimb@floss.cyclic.com>
5615
5616 * gh_data.c (gh_scm2newstr, gh_symbol2newstr): Use
5617 scm_must_malloc, not raw malloc.
5618
5619 * script.c (scm_compile_shell_switches): Dyke out debugging output
5620 code.
5621
5622 Mon Apr 21 05:00:32 1997 Gary Houston <ghouston@actrix.gen.nz>
5623
5624 * eq.c (scm_equal_p): use "SCM_TYP7SD", not "SCM (TYP7SD".
5625
5626 * stime.c: include both <sys/times.h> and <sys/timeb.h> if the
5627 system has them. Hope this is safe. Previously
5628 sys/timeb.h was included if HAVE_FTIME was defined or if
5629 HAVE_SYS_TIMEB_H was defined but HAVE_SYS_TIMES_H was not,
5630 but IRIX iris 5.3 apparently has ftime but not sys/timeb.h.
5631
5632 * ioext.c (scm_setfileno): add missing third argument to
5633 scm_misc_error call.
5634
5635 Sun Apr 20 15:09:31 1997 Jim Blandy <jimb@totoro.cyclic.com>
5636
5637 * eq.c (scm_equal_p): Correctly compare strings of different
5638 varieties. (Thanks to Tim Pierce.)
5639
5640 Sat Apr 19 03:59:02 1997 Jim Blandy <jimb@floss.cyclic.com>
5641
5642 * read.c (skip_scsh_block_comment): SCSH says the !# that ends a
5643 #! block comment must occur on a line all by itself.
5644
5645 Move most of the guts of shell command processing into libguile,
5646 so guile.c can be very small (and eventuallly auto-generated. (I
5647 mean, generated mechanically, not self-generated. Hmm.))
5648 * guile.c, script.c, script.h: New source files.
5649 * init.c (scm_boot_guile_1): Call scm_init_script.
5650 * libguile.h: #include "script.h".
5651 * Makefile.am (bin_PROGRAMS, guile_SOURCES, guile_LDADD): New
5652 targets, for new executable.
5653 (libguile_la_SOURCES): Mention script.c.
5654 (modinclude_HEADERS): Add script.h.
5655 * configure.in: Always check for -lm, -lsocket, -lnsl, whether or
5656 not dynamic linking is enabled. This is because we're generating
5657 executables now. Move CY_AC_WITH_THREADS call after those, so the
5658 values of cy_cv_threads_libs captures the libs chosen above.
5659 * Makefile.in, configure, aclocal.m4: Regenerated.
5660
5661 * Makefile.am (EXTRA_DIST): Don't distribute gscm.c or gscm.h.
5662 We don't maintain this interface any more, and it just confuses
5663 people.
5664
5665 * alloca.c: #include <scmconfig.h>, not <config.h>.
5666 * Makefile.am (EXTRA_libguile_la_SOURCES): Mention alloca.c, so
5667 it'll get included in disties.
5668
5669 Thu Apr 17 17:45:10 1997 Jim Blandy <jimb@totoro.cyclic.com>
5670
5671 * gscm.c, gscm.h: These aren't supported any more, and shouldn't
5672 be distributed, because they confuse people.
5673 * Makefile.am (EXTRA_DIST): Remove gscm.c, gscm.h.
5674
5675 Sat Apr 19 11:56:18 1997 Tim Pierce <twp@twp.tezcat.com>
5676
5677 * configure.in: check for presence of gethostent (not present on
5678 OpenBSD by default).
5679 * net_db.c (scm_gethost): Check HAVE_GETHOSTENT.
5680 * configure, scmconfig.h.in: Regenerated.
5681
5682 Wed Apr 16 17:52:38 1997 Jim Blandy <jimb@floss.cyclic.com>
5683
5684 * backtrace.c (scm_backtrace): Split message string across
5685 newlines properly. GCC is more tolerant of this than other
5686 compilers.
5687
5688 Mon Apr 14 20:20:14 1997 Jim Blandy <jimb@floss.cyclic.com>
5689
5690 Merge threads directory into libguile.
5691 * coop-defs.h, coop-threads.c, coop-threads.h, coop.c, threads.c,
5692 threads.h: New source files.
5693 * Makefile.am (EXTRA_libguile_la_SOURCES): Add threads.c.
5694 (noinst_HEADERS): Add coop-threads.c, coop-threads.h, coop.c
5695 here; see comment.
5696 (modinclude_HEADERS): Add threads.h, coop-defs.h.
5697 (EXTRA_DIST): Add fsu-pthreads.h, mit-pthreads.c, mit-pthreads.h,
5698 coop-threads.c.cygnus, coop-threads.h.cygnus.
5699 * configure.in: If we're using threads, include threads.o in
5700 LIBOBJS.
5701 * _scm.h, libguile.h: threads.h lives in this directory now.
5702 * fsu-pthreads.h, mit-pthreads.c, mit-pthreads.h,
5703 coop-threads.c.cygnus, coop-threads.h.cygnus: New files, not
5704 currently used, but brought along for information's sake.
5705 * ChangeLog-threads: log from old 'threads' directory.
5706 * Makefile.in, configure: Rebuilt.
5707
5708 Mon Apr 14 20:15:29 1997 Jim Blandy <jimb@totoro.cyclic.com>
5709
5710 * stime.c (scm_mktime): #ifndef HAVE_TM_ZONE, Use lt.tm_zone, not
5711 lt->tm_zone.
5712
5713 Mon Apr 14 01:32:57 1997 Jim Blandy <jimb@floss.cyclic.com>
5714
5715 * gh_init.c (gh_standard_handler): Return SCM_BOOL_F, not garbage.
5716
5717 Merge GH interface library into libguile.
5718 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
5719 gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c: New files.
5720 * Makefile.am (libguile_la_SOURCES): Add gh_data.c, gh_eval.c,
5721 gh_funcs.c, gh_init.c, gh_io.c, gh_list.c, gh_predicates.c. Move
5722 _scm.h to ...
5723 (EXTRA_libguile_la_SOURCES): ... here.
5724 (pkginclude_HEADERS): Add variable, to get gh.h installed.
5725 (THREAD_LIBS, check_ldadd, check_PROGRAMS, gh_test_c_SOURCES,
5726 gh_test_c_LDADD, gh_test_repl_SOURCES, gh_test_repl_LDADD):
5727 New variables, describing how to build the gh test programs.
5728 * configure.in: Check for -lm, -lsocket, -lnsl; we need this to
5729 build the test programs, and we probably should have been linking
5730 libguile.la against them all along, to support AIX shared libs.
5731 Add cflags for threads to CFLAGS; add libs for threads to new
5732 variable THREAD_LIBS, used in Makefile.am.
5733 * ChangeLog-gh: log from old `gh' subdirectory.
5734 * Makefile.in, configure, scmconfig.h.in: Rebuilt.
5735
5736 Sun Apr 13 23:03:55 1997 Jim Blandy <jimb@floss.cyclic.com>
5737
5738 * acconfig.h: Undo change of Apr 9; including the definition of
5739 PACKAGE in the guile headers conflicts with applications' own
5740 definitions.
5741 * scmconfig.h.in: Regenerated.
5742
5743 Fri Apr 11 14:12:13 1997 Jim Blandy <jimb@floss.cyclic.com>
5744
5745 * filesys.c (scm_fcntl): New function from Roland McGrath.
5746 (scm_init_filesys): New symbols for use with fcntl.
5747 * filesys.h: Added prototype.
5748
5749 * eval.c (SCM_APPLY): Set debug apply frame argument list correctly
5750 when PROC is receiving no arguments.
5751
5752 Fri Apr 11 19:39:32 1997 Jim Blandy <jimb@totoro.cyclic.com>
5753
5754 * filesys.c (S_ISSOCK): Define this if it's missing, but we do
5755 have S_IFSOCK. This is the case under Ultrix.
5756
5757 * posix.c (scm_status_exit_val, scm_status_exit_val,
5758 scm_status_term_sig, scm_status_stop_sig): Modified to work with
5759 Ultrix versions of WIFSTOPPED, etc., which assume that their
5760 arguments are lvalues (hmm).
5761
5762 Thu Apr 10 15:10:07 1997 Jim Blandy <jimb@floss.cyclic.com>
5763
5764 * eval.c: Doc fixes.
5765
5766 * throw.c: Doc fixes; rearranged.
5767
5768 * putenv.c: #include "libguile/scmconfig.h", not <config.h>.
5769
5770 Wed Apr 9 18:01:20 1997 Jim Blandy <jimb@floss.cyclic.com>
5771
5772 * acconfig.h: Added entry for PACKAGE.
5773 * scmconfig.h.in: Regenerated.
5774
5775 Changes to work with automake-1.1n, which has better libtool support.
5776 * Makefile.am: Use lib_LTLIBRARIES instead of lib_PROGRAMS.
5777 Use libguile_la_LIBADD instead of libguile_la_LDADD. (What's the
5778 difference here?)
5779 (libguile_la_SOURCES, modinclude_HEADERS, EXTRA_DIST): Format for
5780 readability.
5781 * Makefile.in: Rebuild.
5782
5783 Wed Apr 9 09:08:54 1997 Gary Houston <ghouston@actrix.gen.nz>
5784
5785 * stime.c (scm_mktime): take an optional zone argument.
5786 (scm_localtime): check putenv return value.
5787 (scm_strftime, scm_strptime): moved from posix.c. move #include
5788 sequences.h too.
5789 stime.h, posix.h: update prototypes.
5790 (bdtime2c, setzone, restorezone): new static procedures.
5791 (scm_mktime, scm_strftime): use them.
5792 (scm_strftime): don't call mktime before strftime. Use
5793 filltime for return value.
5794 (filltime): convert NULL zname to #f.
5795 (scm_strptime): return a count of characters consumed, not
5796 the remaining string.
5797
5798 Sun Apr 6 05:44:11 1997 Gary Houston <ghouston@actrix.gen.nz>
5799
5800 * stime.c (scm_localtime): check HAVE_TM_ZONE and HAVE_TZNAME.
5801 (scm_mktime): likewise.
5802 Declare *tzname[].
5803 Uncomment localtime and mktime.
5804
5805 * configure.in: add AC_STRUCT_TIMEZONE.
5806
5807 Sat Apr 5 23:56:40 1997 Gary Houston <ghouston@actrix.gen.nz>
5808
5809 * stime.c (scm_init_stime): don't define ticks/sec.
5810 (scm_gettimeofday): renamed from scm_time_plus_ticks (avoids multiple
5811 return value problem and is still portable.)
5812
5813 Sat Apr 5 17:59:24 1997 Jim Blandy <jimb@floss.cyclic.com>
5814
5815 * cpp_err_symbols.in: Renamed from cpp_err_symbols, to avoid
5816 make's implicit cpp_err_symbols: cpp_err_symbols.c rule.
5817 * cpp_sig_symbols.in: Renamed from cpp_sig_symbols.
5818 * Makefile.am (check_errnos, check_signals, cpp_sig_symbols.c,
5819 cpp_err_symbols.c): Corresponding changes.
5820 * Makefile.in: Regenerated.
5821
5822 Sat Apr 5 02:39:02 1997 Gary Houston <ghouston@actrix.gen.nz>
5823
5824 * posix.c (scm_putenv): don't check HAVE_PUTENV.
5825 * Makefile.am (EXTRA_libguile_la_SOURCES): add putenv.c.
5826 * configure.in: move putenv from AC_CHECK_FUNCS to AC_REPLACE_FUNCS.
5827 * putenv.c: new file, from sh-utils 1.12.
5828
5829 * posix.c (scm_environ): use malloc in place of scm_must_malloc
5830 since allocation isn't for Scheme objects.
5831 (scm_putenv): copy strings before placing in the environment.
5832
5833 * stime.c (scm_current_time): throw an error if time returns -1,
5834 instead of returning #f.
5835 (scm_get_internal_real_time, scm_get_internal_real_time): use
5836 scm_long2num for return value instead of SCM_MAKINUM.
5837
5838 * stime.h: prototypes updated.
5839
5840 * stime.c (scm_time_in_msec): apparently unused, deleted.
5841
5842 Fri Apr 4 08:53:41 1997 Gary Houston <ghouston@actrix.gen.nz>
5843
5844 * configure.in: check for gettimeofday.
5845
5846 * stime.c (scm_time_plus_ticks): new procedure, an scsh interface
5847 which may be more usefully portable than a gettimeofday interface.
5848
5849 Wed Apr 2 17:11:39 1997 Jim Blandy <jimb@totoro.cyclic.com>
5850
5851 * Makefile.am (EXTRA_DIST): It's cpp_err_symbols, not
5852 cpp_err_signals.
5853 * Makefile.in: Regenerated.
5854
5855 Mon Mar 31 03:22:37 1997 Gary Houston <ghouston@actrix.gen.nz>
5856
5857 * stime.c (filltime): recovered static procedure.
5858 (scm_localtime, scm_gmtime, scm_mktime, scm_tzset): recovered from
5859 an earlier Guile.
5860
5861 * posix.h: add prototype for scm_close_pipe, remove prototypes for
5862 scm_open_input_pipe, scm_open_output_pipe, change scm_mknod prototype.
5863
5864 * posix.c (scm_mknod): split the mode argument into type and perms
5865 arguments, like the extra fields returned by stat.
5866
5867 * fports.c (scm_pipob): set the close, free and print procedures.
5868 (scm_close_pipe): new procedure.
5869
5870 * posix.c (scm_open_input_pipe, scm_open_output_pipe): deleted,
5871 define them in boot-9.scm
5872
5873 Wed Mar 26 04:10:32 1997 Gary Houston <ghouston@actrix.gen.nz>
5874
5875 * ioext.c (scm_setfileno): throw a runtime error if SET_FILE_FD_FIELD
5876 wan't defined. Don't include fd.h.
5877
5878 * Previously fd.h was regenerated whenever configure was run,
5879 forcing a couple of files to be recompiled.
5880
5881 * fd.h.in: deleted, SET_FILE_FD_FIELD moved to ioext.c.
5882 * configure.in: AC_DEFINE FD_SETTER instead of HAVE_FD_SETTER.
5883 Check for _fileno as well as _file.
5884 Don't output fd.h.
5885 * ioext.c: don't fd.h.
5886 * acconfig.h: remove duplicate HAVE_FD_SETTER and change the
5887 other to FD_SETTER.
5888
5889 * Change the stratigy for getting information about errno
5890 (and now signal number) values, e.g., ENOSYS, SIGKILL. Instead of
5891 generating lists of symbols during the build process, which will
5892 not always work, include comprehensive lists in the distribution.
5893 To help keep the lists up to date, the "check_signals" and
5894 "check_errnos" make targets can be used.
5895
5896 * configure.in: don't check for a command to extract errno codes.
5897 * Makefile.am: update file lists, remove errnos.list and errnos.c
5898 targets, add cpp_err_symbols.c, cpp_sig_symbols.c, check_signals,
5899 check_errnos targets.
5900 (CLEANFILES): remove errnos.c and errnos.list, add
5901 cpp_err_symbols_here cpp_err_symbols_diff cpp_err_symbols_new
5902 cpp_sig_symbols_here cpp_sig_symbols_diff cpp_sig_symbols_new
5903 * errnos.default: deleted.
5904 * cpp_signal.c: new file.
5905 * cpp_errno.c: renamed from errnos_get.c.
5906 * cpp_err_symbols, cpp_sig_symbols: new files.
5907 * cpp_cnvt.awk: renamed from errnos_cnvt_awk.
5908 * error.c (scm_init_error): #include cpp_err_symbols instead of
5909 errnos.c.
5910 * posix.c (scm_init_posix): don't intern signal symbols. #include
5911 cpp_sig_symbols.c.
5912
5913 Tue Mar 25 04:51:10 1997 Gary Houston <ghouston@actrix.gen.nz>
5914
5915 * strop.c (scm_i_index): allow the lower bound to be equal to the
5916 length of the string, so a null string doesn't always give an error.
5917
5918 * posix.h: new prototypes.
5919 * posix.c (scm_status_exit_val, scm_status_term_sig,
5920 scm_status_stop_sig): new functions, as in scsh. They break down
5921 process status values as returned by waitpid.
5922
5923 Sat Mar 22 18:16:29 1997 Gary Houston <ghouston@actrix.gen.nz>
5924
5925 * net_db.c (scm_gethost): don't check HAVE_GETHOSTENT, since
5926 configure doesn't know about it.
5927
5928 Fri Mar 21 23:49:28 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5929
5930 * snarf.h, backtrace.c: Name change SCM_GLOBAL --> SCM_VCELL.
5931
5932 * snarf.h: Added new macros SCM_GLOBAL_SYMBOL and SCM_GLOBAL_VCELL
5933 which defines C variables with global linkage.
5934
5935 Mon Mar 17 05:57:11 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5936
5937 * snarf.h (SCM_PROC1): Bugfix: Use (void) rather than (...) for
5938 zero arg subrs.
5939
5940 Sun Mar 16 11:43:49 1997 Mikael Djurfeldt <mdj@floss.cyclic.com>
5941
5942 * eval.c (safe_setjmp): Temporarily use old setjmp until someone
5943 has time to check why this doesn't work well with continuations.
5944
5945 Sun Mar 16 05:09:55 1997 Jim Blandy <jimb@totoro.cyclic.com>
5946
5947 * Fix shell syntax error; some shells won't tolerate
5948 multiple "fi" statements on a single line. (Thanks to Fred Fish.)
5949
5950 Sat Mar 15 01:11:40 1997 Gary Houston <ghouston@actrix.gen.nz>
5951
5952 * posix.c (scm_uname): throw an error if uname fails instead
5953 of returning errno.
5954
5955 * error.h (scm_errno, scm_perror): obsolete prototypes removed.
5956
5957 * error.c (err_head, scm_errno, scm_perror): obsolete procedures
5958 removed.
5959
5960 * async.c (scm_ints_disabled): definition moved from error.c.
5961
5962 Sat Mar 15 00:06:08 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5963
5964 * acconfig.h: Removed PACKAGE.
5965
5966 * scmconfig.h.in: Regenerated.
5967
5968 * snarf.h: g++ says it's non-portable not to specify the first
5969 argument in a varargs declaration. I introduced the first
5970 argument by using preprocessor conditionals.
5971
5972 Thu Mar 13 21:28:25 1997 Gary Houston <ghouston@actrix.gen.nz>
5973
5974 * ioext.c (scm_read_delimited_x): use RO string macros for delims.
5975 (scm_freopen): use RO string macros for filename and modes.
5976 (scm_duplicate_port, scm_fdopen): use RO string macros for modes.
5977
5978 * posix.c (scm_getgrgid): simplify conversion of name to C string.
5979 (scm_mknod): use RO string macros for path.
5980
5981 * socket.c (scm_fill_sockaddr, scm_send, scm_sendto):
5982 use SCM_ROSTRINGP, SCM_ROCHARS, SCM_ROLENGTH.
5983
5984 * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv):
5985 use SCM_ROSTRINGP and SCM_ROCHARS.
5986
5987 Thu Mar 13 18:31:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5988
5989 * unif.c (scm_array_set_x): Cast ICHR (obj) to char if storing in
5990 a scm_tc7_byvect.
5991
5992 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
5993 scm_array_index_map_x, raeql_1, scm_array_equal_p): Completed
5994 support for byte vectors.
5995
5996 * print.c (scm_iprin1): Limit number of vector elements printed
5997 according to pstate->length.
5998
5999 Thu Mar 13 00:12:35 1997 Gary Houston <ghouston@actrix.gen.nz>
6000
6001 * backtrace.c (scm_display_error_message): don't segv if message
6002 is an immediate.
6003
6004 * error.h: prototype for scm_error_scm.
6005
6006 * error.c (scm_error_scm): new procedure, reimplements scm-error
6007 in C and uses scm_error.
6008
6009 Tue Mar 11 03:51:00 1997 Gary Houston <ghouston@actrix.gen.nz>
6010
6011 * read.c (scm_read_hash_extend): make scm_read_hash_procedures a
6012 pointer to the Scheme variable read-hash-procedures and intern it
6013 in scm_init_read. Modify scm_read_hash_extend and
6014 scm_get_hash_procedure to use the pointer.
6015
6016 Mon Mar 10 06:28:54 1997 Gary Houston <ghouston@actrix.gen.nz>
6017
6018 * read.h (SCM_N_READ_OPTIONS): increase SCM_N_READ_OPTIONS to 4.
6019 (SCM_KEYWORD_STYLE): defined.
6020
6021 * read.c (scm_read_opts): add a keywords option. This isn't a
6022 boolean option, in case someone wants to add support for DSSSL
6023 keywords too.
6024 Setup scm_keyword_prefix symbol.
6025 (scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is
6026 set to 'prefix.
6027 I've left keyword support disabled by default, since it doesn't
6028 seem to break the module system and it gives R4RS standard behaviour.
6029 It can be reactivated with (read-set! keywords 'prefix).
6030
6031 Sun Mar 9 14:14:39 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6032
6033 * arbiters.c (scm_make_arbiter): Bugfix: Must SCM_DEFER_INTS
6034 before constructing arbiter.
6035
6036 * eval.c (scm_m_define): Bugfix: Check that the object is a
6037 closure before setting the procedure property!
6038
6039 * ports.h: Removed prototype for scm_ungetc_char_ready_p.
6040
6041 * ports.c: Removed `ungetc-char-ready?'.
6042
6043 Sat Mar 8 00:27:05 1997 Gary Houston <ghouston@actrix.gen.nz>
6044
6045 * read.c (scm_init_read): intitialise scm_read_hash_procedures
6046 (idea from Mikael: make it a pair so scm_permanent object only
6047 called once.)
6048 (scm_read_hash_extend): don't call scm_permanent_object.
6049 (ideas from Mikael): if chr is already in the list, replace its
6050 procedure instead of appending it again. If proc is #f, remove
6051 it from the list.
6052 (scm_get_hash_procedure): take CDR of scm_read_hash_procedures.
6053
6054 * strports.c (scm_read_0str, scm_eval_0str): update scm_read usage.
6055
6056 * gdbint.c (gdb_read): update scm_lreadr usage.
6057
6058 * load.h: update prototypes.
6059
6060 * load.c (scm_primitive_load, scm_read_and_eval_x,
6061 scm_primitive_load_path): remove case_insensitive_p, sharp arguments.
6062
6063 * read.h: add prototype for scm_read_hash_extend. Change args for
6064 other prototypes.
6065
6066 * read.c (scm_read_hash_procedures): new variable.
6067 (scm_read_hash_extend): new procedure.
6068 (scm_get_hash_procedure): new procedure.
6069 (scm_lreadr): use scm_get_hash_procedure instead of an argument
6070 for extended # processing.
6071 (scm_read, scm_lreadr, scm_lreadrecparen, scm_lreadparen,
6072 scm_read_token): remove case_i, sharp arguments. Change callers.
6073
6074 Fri Mar 7 08:58:21 1997 Gary Houston <ghouston@actrix.gen.nz>
6075
6076 * read.h (SCM_N_READ_OPTIONS): increase to 3.
6077 (SCM_CASE_INSENSITIVE_P): define.
6078
6079 * read.c: add case-insensitive option to scm_read_opts.
6080 (scm_read_token): use SCM_CASE_INSENSITIVE_P instead of an argument
6081 to determine whether to convert symbol case.
6082 (default_case_i): definition removed.
6083 * read.c (scm_read_token): if case_i, downcase ic before doing
6084 anything with it.
6085
6086 Sat Mar 8 03:49:03 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6087
6088 * configure.in: Added configuration option `guile-debug'.
6089 Configure with --enable-guile-debug if you want a bunch of extra
6090 functions used for debugging when developing Guile.
6091
6092 * acconfig.h: Added new preprocessor symbol GUILE_DEBUG.
6093
6094 * procs.c (make-cclo): New undocumented debugging procedure: Make
6095 compiled closure with internal procedure PROC and length LENGTH.
6096 Only compiled if GUILE_DEBUG is defined.
6097
6098 * debug.c: Only include `debug-hang' if GUILE_DEBUG is defined.
6099
6100 * print.c: Put #ifdef GUILE_DEBUG around `current-pstate'.
6101
6102 * ports.c: Changed preprocessor symbol DEBUG --> GUILE_DEBUG.
6103
6104 * eval.c (SCM_CEVAL): Added code sections for handling of rpsubrs
6105 with 3 or more args internally to the evaluator.
6106
6107 Fri Mar 7 19:38:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6108
6109 * eval.c (SCM_CEVAL): Added code sections for handling of asubrs
6110 with 3 or more args internally to the evaluator. This is mainly
6111 because we don't want to pass entry and exit points of the
6112 debug support twice, but it also seems to increase the speed of
6113 the evaluator for such calls (e. g. (+ 1 2 3)).
6114
6115 * backtrace.c (scm_display_application): New procedure:
6116 display-application; Set fancy printing parameters individually
6117 for different types of display (backtrace, error, application).
6118 (These should of course be customizable!)
6119
6120 * debug.h (SCM_RESET_DEBUG_MODE): Bugfix: The old code didn't
6121 clear the CHECK-flags.
6122
6123 Thu Mar 6 00:53:02 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6124
6125 * tags.h, eval.c (iqq): Fixes to comments about SCM_ECONSP.
6126
6127 Wed Mar 5 23:31:21 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6128
6129 * tags.h (SCM_ECONSP, SCM_NECONSP): Bugfix: Discriminate structs
6130 from pairs with a GLOC in the car.
6131
6132 * symbols.c (msymbolize): Bugfix: Also initialize SCM_SYMBOL_HASH,
6133 otherwise `symbol-hash' will behave badly.
6134 (scm_symbol_hash): Bugfix: Must msymbolize if tc7_ssymbol, othwise
6135 we get segmentation fault!
6136
6137 * symbols.c: Added #include "weaks.h". New functions:
6138 `builtin-bindings' and `builtin-weak-bindings'. (These will be
6139 moved to an extraneous library when we split libguile.)
6140
6141 Tue Mar 4 19:50:07 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6142
6143 * filesys.c (scm_stat): stat now takes fport arguments too as
6144 documented in the manual.
6145
6146 Mon Mar 3 07:11:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6147
6148 * debug.c (scm_single_step): Bugfix: Call continuation with
6149 scm_call_continuation instead of throwing to it.
6150
6151 Mon Mar 3 09:07:56 1997 Gary Houston <ghouston@actrix.gen.nz>
6152
6153 * ports.c (scm_char_ready_p): bug fix: in SCM_PROC char-ready's
6154 argument wasn't declared to be optional.
6155
6156 Sun Mar 2 16:34:40 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6157
6158 * stime.c (scm_init_stime): Add feature "current-time".
6159
6160 Sun Mar 2 06:37:31 1997 Gary Houston <ghouston@actrix.gen.nz>
6161
6162 * throw.h: prototype for scm_exit_status.
6163 * throw.c (scm_handle_by_message): if a 'quit is caught, use its
6164 args to derive an exit status. Allows (quit) to work from a
6165 script.
6166 (scm_exit_status): new function.
6167 #include "eq.h".
6168
6169 Sat Mar 1 00:09:15 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6170
6171 * eval.c (scm_deval): Removed some old code.
6172 (ENTER_APPLY): Bugfix: Reset apply-frame trap on trap as is done
6173 with the others.
6174 (ENTER_APPLY, scm_deval): Reset trace flag on apply-frame and
6175 exit-frame traps.
6176
6177 * symbols.c (msymbolize): Bugfix: Must initialize property list to
6178 SCM_EOL.
6179
6180 * procs.c: Introduce the existent C function scm_thunk_p at the
6181 Scheme level as well.
6182
6183 Wed Feb 26 12:53:58 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6184
6185 * symbols.c, symbols.h (scm_symbol_value0): New function. Can be
6186 used from C to easily lookup the value of a symbol in the current
6187 module.
6188
6189 Tue Feb 25 00:14:10 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6190
6191 * unif.c (scm_init_unif): Added #include "unif.x". (There are two
6192 scm_init_unif in this file. This will also fix a previous problem
6193 with guile-snarf.)
6194
6195 * configure.in: Added AM_MAINTAINER_MODE
6196
6197 Fri Feb 21 23:07:26 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6198
6199 * gdb_interface.h (GDB_INTERFACE): Added some (void *) casts to
6200 avoid warnings.
6201
6202 Fri Feb 21 18:00:38 1997 Marius Vollmer <mvo@zagadka.ping.de>
6203
6204 * Makefile.am (EXTRA_libguile_la_SOURCES): New variable to hold
6205 source files that are not always included in libguile but should
6206 have their dependencies calculated by automake. This variable is
6207 recognized by automake, no further magic is needed.
6208 (libguile_la_DEPENDENCIES): Changed to @LIBLOBJS@. Libtool wants
6209 to deal exclusively with *.lo files, as it seems. The *.o files
6210 are built automatically when the corresponding *.lo file gets
6211 built.
6212
6213 Wed Feb 19 14:04:23 1997 Jim Blandy <jimb@floss.cyclic.com>
6214
6215 * list.h (scm_list_cdr_ref): Delete prototype; function no longer
6216 exists.
6217
6218 Thu Feb 13 21:44:07 1997 Gary Houston <ghouston@actrix.gen.nz>
6219
6220 * unif.c (scm_array_set_x): minor change to argument error checking.
6221
6222 Tue Feb 11 18:19:47 1997 Jim Blandy <jimb@floss.cyclic.com>
6223
6224 * Makefile.am (libguile_la_SOURCES): Remove backtrace.c, debug.c,
6225 inet_aton.c, srcprop.c, stacks.c, and strerror.c from this list.
6226 They should only be included in the library at configure.in's
6227 discretion.
6228 (libguile_la_LDADD): Include the appropriate .lo files here.
6229 (libguile_la_DEPENDENCIES): List the corresponding .o files here,
6230 so we know when to build them (and their .lo bretheren).
6231 * configure.in (LIBLOBJS): New substituted variable. We let
6232 configure decide which .o files to include in LIBOBJS, and then
6233 put the corresponding list of .lo files in LIBLOBJS. The latter
6234 is what we pass to libtool.
6235 * Makefile.in, configure: regenerated.
6236
6237 Mon Feb 10 00:08:08 1997 Mikael Djurfeldt <mdj@kenneth>
6238
6239 * symbols.c (scm_sysintern0): New function. Contains the core of
6240 old scm_sysintern but doesn't take a second value argument.
6241 (scm_sysintern): Now uses scm_sysintern0.
6242 (scm_sysintern_no_module_lookup): Renamed to
6243 scm_sysintern0_no_module_lookup and doesn't take a second value
6244 argument any longer.
6245
6246 * symbols.h (scm_sysintern0: Added declaration.
6247
6248 * options.c (scm_init_opts): Use scm_sysintern0 instead of
6249 scm_sysintern when interning option keys. Otherwise we risk
6250 destroying the values of already interned variables.
6251
6252 * symbols.c (scm_sym2vcell): Bugfix: Treat definedp as
6253 scheme-level boolean (use SCM_NFALSEP).
6254
6255 * backtrace.c (scm_init_backtrace): Make Scheme-level variable
6256 `the-last-stack'.
6257 (scm_backtrace): New function. (C version of old function from
6258 boot-9.scm) Motivation: Make it possible to display backtraces
6259 without depending on boot-9.scm. (I'm uncertain if this
6260 motivation is good enough...)
6261
6262 * root.h (scm_root_state): Add member the_last_stack_var.
6263 (scm_the_stack_var): Defined to scm_root->the_last_stack_var.
6264
6265 * root.c (mark_root): Mark scm_the_last_stack_var.
6266
6267 * init.c (scm_start_stack): Initialize scm_the_last_stack_var to
6268 SCM_BOOL_F.
6269
6270 Sun Feb 9 18:04:41 1997 Mikael Djurfeldt <mdj@kenneth>
6271
6272 * throw.c (mark_lazy_catch, free_lazy_catch): Removed.
6273 1. mark_lazy_catch didn't mark the smob.
6274 2. Both functions above have standard variants:
6275 (lazy_catch_funs): Changed mark_lazy_catch --> scm_mark0,
6276 free_lazy_catch --> scm_free0.
6277
6278 Fri Feb 7 17:30:26 1997 Jim Blandy <jimb@floss.cyclic.com>
6279
6280 * throw.c (scm_internal_lazy_catch): New function.
6281 (scm_lazy_catch): Rewritten to use it.
6282 (scm_ithrow): Handle the new lazy catch representation.
6283 Use SCM_LAZY_CATCH_P, instead of assuming that any wind list entry
6284 that doesn't have a jmpbuf is a lazy catch clause.
6285 (tc16_lazy_catch, struct lazy_catch, mark_lazy_catch,
6286 free_lazy_catch, print_lazy_catch, lazy_catch_funs,
6287 make_lazy_catch, SCM_LAZY_CATCH_P): Support funs, including a new
6288 smob.
6289 (scm_init_throw): Register the new lazy-catch smob type.
6290 * throw.h (scm_internal_lazy_catch): decl for new function.
6291
6292 * throw.c (scm_internal_catch): Doc fixes.
6293
6294 * alloca.c: New file, needed to support the AC_FUNC_ALLOCA call in
6295 configure.in. Including this might cause problems if applications
6296 that link against libguile include their own copies of alloca, but
6297 if they're using autoconf, they should be adding libguile to LIBS
6298 before calling AC_FUNC_ALLOCA anyway, in which case they'll find
6299 the copy in libguile, and things will be okay. (I think.)
6300
6301 Thu Feb 6 03:10:32 1997 Gary Houston <ghouston@actrix.gen.nz>
6302
6303 * strop.c (scm_string_upcase_x, scm_string_downcase_x): moved from
6304 unif.c.
6305 strop.h: move prototypes too.
6306
6307 Wed Feb 5 08:33:00 1997 Gary Houston <ghouston@actrix.gen.nz>
6308
6309 * posix.c (scm_init_posix): don't intern EINTR since it's now done
6310 elsewhere.
6311
6312 * ioext.c (scm_init_ioext): don't intern stat macros, S_IRUSR
6313 etc. I deleted them from filesys.c long ago, but didn't
6314 notice they were here too (although ineffective since
6315 sys/stat.h wasn't included).
6316
6317 Tue Feb 4 18:17:50 1997 Tom Tromey <tromey@cygnus.com>
6318
6319 * eval.c: Don't define alloca in GCC case. gcc will automatically
6320 use __builtin_alloca if appropriate.
6321
6322 Tue Feb 4 16:57:40 1997 Jim Blandy <jimb@floss.cyclic.com>
6323
6324 * eval.c (safe_setjmp): New function: trivial wrapper for setjmp.
6325 (SCM_CEVAL, SCM_APPLY): Call it, instead of setjmp, to make sure
6326 that values of automatic variables are preserved. See comments
6327 for safe_setjmp for details.
6328
6329 Change from Thomas Morgan:
6330 * variable.c: Include eq.h.
6331 (var_equal): New function.
6332 (variable_smob): Use var_equal as the discriminator for variables.
6333
6334 * throw.c (s_throw): Remove extraneous declaration.
6335
6336 * configure.in: Call AC_FUNC_ALLOCA, to see if we have alloca.
6337 * eval.c: Add necessary CPP cruft to support that.
6338 * configure, Makefile.in, scmconfig.h.in: regenerated.
6339
6340 Change from Thomas Morgan:
6341 * procprop.c (scm_procedure_properties): Convert the Scheme
6342 boolean returned by scm_procedure_p into a C boolean before using
6343 it as a condition for SCM_ASSERT.
6344 (scm_procedure_property): Likewise.
6345
6346 * simpos.c (SYSTNAME): Accept both 'unix' and '__unix' as
6347 indications of Unixness.
6348 * stime.c: Same.
6349
6350 Tue Feb 4 05:07:35 1997 Gary Houston <ghouston@actrix.gen.nz>
6351
6352 * net_db.c (scm_lnaof): change scheme name from lnaof to inet-lnaof.
6353
6354 Mon Feb 3 06:12:37 1997 Gary Houston <ghouston@actrix.gen.nz>
6355
6356 * read.c (scm_lreadr): use scm_misc_error to improve one of the
6357 "unknown # object" error messages.
6358
6359 * strop.c (scm_i_index, scm_i_rindex): combine into one procedure
6360 (scm_i_index) and declare it static. Add a 'direction' argument
6361 to indicate what way the search should go.
6362 (scm_i_index): throw out-of-range error instead of wrong-type-arg
6363 if indices are bad.
6364 (scm_string_index, scm_string_rindex): adjust usage of scm_i_index.
6365 strop.h: remove scm_i_index, scm_i_rindex prototypes.
6366
6367 Fri Jan 31 04:33:11 1997 Gary Houston <ghouston@actrix.gen.nz>
6368
6369 * ioext.c, ioext.h: remove obsolete _sys_ from 9 procedure names.
6370
6371 * posix.c (scm_fork): Scheme name changed from fork to primitive-fork,
6372 to avoid clash with various scsh forks.
6373
6374 Thu Jan 30 20:14:09 1997 Mikael Djurfeldt <mdj@syk-0606.pdc.kth.se>
6375
6376 The following two changes (ramap.c, throw.c) are motivated by the
6377 apparent unportability of forward declarations of static arrays of
6378 the form `static foo bar[];'.
6379
6380 * ramap.c (scm_array_fill_x): Moved above scm_array_fill_int.
6381 (ra_rpsubrs, ra_asubrs): Moved to the top of array code.
6382
6383 * throw.c (scm_throw): Moved above scm_ithrow.
6384
6385 * options.h: Removed the extern declarations of scm_yes_sym and
6386 scm_no_sym since these are static.
6387
6388 Fri Jan 24 06:16:32 1997 Gary Houston <ghouston@actrix.gen.nz>
6389
6390 * ports.c: add SCM_PROC declarations for pt-size and pt-member.
6391
6392 * Makefile.am: remove AWK=@AWK@.
6393 Add a rule for generating errnos.list.
6394 (CLEANFILES): put errnos.list here instead of in DISTCLEANFILES.
6395
6396 * configure.in: add AC_SUBST(AWK) and AC_SUBST(ERRNO_EXTRACT).
6397 don't extract errnos, just set a variable (avoids the
6398 need to recompile error.c just because configure is run.)
6399
6400 * unif.h: update prototypes.
6401 * unif.c (scm_uniform_array_read,write): change the offset and
6402 length arguments to start and end, for consistency.
6403
6404 * __scm.h: uncomment SCM_ARG6 and SCM_ARG7, I needed SCM_ARG6.
6405
6406 * ioext.h: update prototypes.
6407 * ioext.c (scm_read_delimited_x): replaces scm_read_line and
6408 scm_read_line_x, it's a more general procedure using an
6409 interface from scsh. read-line and read-line! are now defined
6410 in boot-9.scm.
6411 Note that the new read-line trims the terminator
6412 by default, previously it was appended to the returned string. An
6413 optional argument specifies how to process the terminator (scsh
6414 compatible). For the old behaviour: (read-line port 'concat).
6415 scm_read_line, scm_read_line_x: deleted. (read-line port 'split)
6416 returns a pair, but is converted to multiple values if the scsh
6417 module is loaded.
6418
6419 socket.h: update prototypes.
6420 * socket.c (scm_recvfrom): for consistency with other procedures,
6421 take start and end as separate optional arguments.
6422 (scm_recv, scm_recvfrom): don't allow the second argument
6423 to be a size, only a buffer. Change the scheme names to
6424 recv! and recvfrom!. Don't return the buffer.
6425
6426 * ioext.h, posix.h: move prototypes too.
6427 * ioext.c, posix.c (scm_read_line, scm_read_line_x, scm_write_line:
6428 moved back from posix.c to ioext.c. Also move #includes of "genio.h"
6429 "read.h" and "unif.h".
6430 * ioext.c: include "chars.h"
6431
6432 Mon Jan 20 19:54:49 1997 Marius Vollmer <mvo@zagadka.ping.de>
6433
6434 * dynl.c: The dynamic linking and module registration functions
6435 are now defined even when dynamic linking is not available for the
6436 host system. Some of their functionality can be done without
6437 dynamic linking; when it's really needed, they throw errors.
6438
6439 Thu Jan 16 16:39:29 1997 Marius Vollmer <mvo@zagadka.ping.de>
6440
6441 * configure.in: Only define DYNAMIC_LINKING when one of the system
6442 dependent functions is detected.
6443 * dynl.c (scm_dynamic_func): New function to get the address of a
6444 function in a dynamic object.
6445 (scm_dynamic_call, scm_dynamic_args_call): Accept the values
6446 produced by scm_dynamic_func as the thing to call.
6447
6448 Sun Jan 12 21:09:42 1997 Marius Vollmer <mvo@zagadka.ping.de>
6449
6450 * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c: Restructured.
6451 (scm_register_module_xxx, scm_registered_modules,
6452 scm_clear_registered_modules): New functions.
6453
6454 Sat Jan 11 21:37:15 1997 Marius Vollmer <mvo@zagadka.ping.de>
6455
6456 * symbols.c (scm_sysintern): Renamed to
6457 scm_sysintern_no_module_lookup.
6458 (scm_sysintern): New function to take the place of the old
6459 scm_sysintern. It uses the current toplevel lookup closure to give
6460 the symbol its value. This is a temporary hack to put packages
6461 like gtcltk into their own module.
6462 (scm_can_use_top_level_lookup_closure_var): New variable to tell
6463 us whether `scm_top_level_lookup_closure_var' has been initialized
6464 and is usable.
6465 * eval.c (scm_init_eval): Set it.
6466
6467 Sat Jan 18 00:03:31 1997 Gary Houston <ghouston@actrix.gen.nz>
6468
6469 * fports.c (scm_open_file): pass errno to scm_syserror_msg.
6470 * filesys.h: update prototypes. Remove macros: SCM_FD_P, SCM_FD_FLAGS,
6471 SCM_FD.
6472 * filesys.c (scm_sys_stat, scm_sys_lstat): pass errno to
6473 scm_syserror_msg.
6474 (scm_sys_read_fd, scm_sys_write_fd, scm_sys_close, scm_sys_lseek,
6475 scm_sys_dup): deleted: FD capability will be added to other
6476 procedures.
6477 Remove support for the FD object type: scm_tc16_fd, scm_fd_print,
6478 scm_fd_free, fd_smob, scm_intern_fd.
6479 (scm_open): renamed from scm_sys_open. Return a port instead of
6480 an FD object. Make the mode argument optional.
6481 (scm_sys_create): deleted, it's just a special case of open.
6482 (scm_init_filesys): move interning of constants O_CREAT etc.,
6483 here (were previously using SCM_CONST_LONG macro).
6484 Add missing constants: O_RDONLY, O_WRONLY, O_RDWR, O_CREAT.
6485 don't newsmob fd.
6486 (numerous _sys_ procedures): remove gratuitous _sys_ from names.
6487 include "fports.h" and <stdio.h>
6488 (scm_stat, scm_select): don't support FD objects.
6489
6490 * error.h: adjust scm_syserror_msg prototype.
6491 * error.c (scm_syserror_msg): take an extra argument for errno.
6492 Using the global value didn't always work, since it could be
6493 reset by procedure calls in the message or args arguments.
6494
6495 * fports.c (scm_setbuf0): call setbuf even if FIONREAD is not defined.
6496 I don't understand why the check was there (and what about the
6497 ultrix check?)
6498
6499 * strop.c (scm_string_copy): allow shared substrings to be copied.
6500
6501 * unif.h: corresponding change to prototypes.
6502 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write_x):
6503 recognize two new optional arguments: offset and length. Allow
6504 the port argument to be an integer (file descriptor, for scsh).
6505 Include <unistd.h> for "read" prototype.
6506
6507 Tue Jan 14 02:42:02 1997 Gary Houston <ghouston@actrix.gen.nz>
6508
6509 * socket.c: don't include filesys.h.
6510
6511 Mon Jan 13 03:47:04 1997 Gary Houston <ghouston@actrix.gen.nz>
6512
6513 * Makefile.am: add AWK=@AWK@ (?)
6514
6515 * Makefile.am (EXTRA_DIST): add errnos_cnvt.awk, errnos.default,
6516 errnos_get.c.
6517 Add a rule to generate errnos.c from errnos.
6518 * error.c (scm_init_error): include errnos.c.
6519 * errnos_cnvt.awk: new file, converts the list of errno codes to
6520 C expressions.
6521 * errnos_get.c: new file.
6522 * errnos.default: new file, contains errnos to try if they can't
6523 be extracted from errno.h.
6524 * configure.in: if using GCC, try and extract errno codes from
6525 errno.h.
6526 Added AC_PROG_AWK.
6527
6528 Sat Jan 11 14:47:00 1997 Marius Vollmer <mvo@zagadka.ping.de>
6529
6530 * configure.in: Replaced AC_PROG_RANLIB with AM_PROG_LIBTOOL.
6531 * Makefile.am: Made libguile into a libtool library.
6532 * PLUGIN/guile.config: Removed "-L ../libguile" from xtra_cflags.
6533 Set libtool_libs to indicate that libguile is a libtool library.
6534 See guile/ChangeLog for details.
6535 * .cvsignore: ignore "*.lo", the libtool library objects.
6536
6537 Wed Jan 8 06:54:54 1997 Gary Houston <ghouston@actrix.gen.nz>
6538
6539 * net_db.c (scm_getserv): add missing SCM_ALLOW_INTS.
6540 use htons in getservbyport argument.
6541
6542 Tue Jan 7 18:11:24 1997 Jim Blandy <jimb@floss.cyclic.com>
6543
6544 * ports.h (SCM_PTOBNUM): Removed extraneous semicolon.
6545 * smob.h: (SCM_PTOBNUM): Removed entirely; this definition is a
6546 duplicate.
6547
6548 * objprop.c (scm_object_property): No need to take the CDR of the
6549 value returned by scm_object_properties, since Aug 20 change.
6550
6551 * configure.in: When checking for struct linger, #include
6552 <sys/types.h> as well as <sys/socket.h>. I've never known
6553 <sys/types.h> to cause any portability problems, and Solaris's
6554 <sys/socket.h> needs it.
6555 * configure: Rebuilt.
6556
6557 I think the Sun compiler has chosen a perverse way to interpret
6558 ANSI declarations combined with K&R definitions. We'll
6559 appease it a little bit. But when it invades France, we fight.
6560 * print.c (scm_iprlist): Change 'tlr' argument to an int.
6561 * print.h (scm_iprlist): Here too.
6562 * numbers.c (scm_divbigdig): Change definition to match
6563 declaration in numbers.h.
6564 * unif.c (scm_makflo): Change definition to match declaration in
6565 unif.h.
6566
6567 * init.c (scm_boot_guile): Don't return the value of
6568 scm_boot_guile_1. This function doesn't return a value;
6569 scm_boot_guile_1 doesn't return a value (or return at all).
6570
6571 * eval.c (unmemocopy): Add a semicolon to appease the Sun
6572 compiler.
6573
6574 * simpos.c (SYSTNAME): Add case for AIX; otherwise it won't
6575 compile. I have a feeling this function is a bad idea anyway ---
6576 one should always test for features, not systems.
6577
6578 * smob.h (SCM_SMOBNUM, SCM_PTOBNUM): Remove extraneous
6579 semicolons. Only pure luck kept this from being noticed earlier.
6580
6581 Tue Jan 7 15:04:06 1997 Mikael Djurfeldt <mdj@kenneth>
6582
6583 * socket.c (scm_recvfrom): Added missing semicolon.
6584
6585 Mon Jan 6 20:39:08 1997 Gary Houston <ghouston@actrix.gen.nz>
6586
6587 * socket.c (scm_recvfrom): allow buff_or_size to be a list containing
6588 the buffer and start and end positions for scsh networking
6589 implementation.
6590
6591 Sun Jan 5 13:53:53 1997 Jim Blandy <jimb@floss.cyclic.com>
6592
6593 * configure.in: Revert previous change to this file; the problem
6594 is due to transient automake weirdness.
6595 * configure: Rebuilt.
6596
6597 * Makefile.am (EXTRA_DIST): Distribute PLUGIN/guile.libs.in, not
6598 PLUGIN/guile.libs. configure generates the latter from the former.
6599 * Makefile.in: Rebuilt.
6600
6601 * configure.in: Call AM_PROG_INSTALL; the automake manual says we
6602 need this if we install scripts, like guile-snarf.
6603 * configure: Rebuilt.
6604
6605 Thu Jan 2 01:56:38 1997 Marius Vollmer <mvo@zagadka.ping.de>
6606
6607 * Makefile.am (EXTRA_DIST): Added DYNAMIC-LINKING
6608
6609 Sat Dec 28 19:14:01 1996 Gary Houston <ghouston@actrix.gen.nz>
6610
6611 * socket.c (scm_addr_vector): fix faulty scm_listify.
6612
6613 Sat Dec 28 13:55:58 1996 Marius Vollmer <mvo@zagadka.ping.de>
6614
6615 * read.c (scm_lreadr): Encountering EOF after skipping a SCSH
6616 style block comment is no longer considered an error.
6617
6618 Fri Dec 27 13:44:23 1996 Marius Vollmer <mvo@zagadka.ping.de>
6619
6620 * PLUGIN/guile.libs.in: New file.
6621 * PLUGIN/guile.libs: Removed from repository.
6622 * configure.in: Create PLUGIN/guile.libs from
6623 PLUGIN/guile.libs.in. This is for including additonal libraries
6624 needed for dynamic linking.
6625 * Makefile.am (EXTRA_DIST): Distribute PLUGIN/guile.libs.in
6626 instead of PLUGIN/guile.libs.
6627
6628 * Makefile.am: Added explicit dependency "dynl.o: dynl.x".
6629
6630 Sun Dec 22 23:06:14 1996 Jim Blandy <jimb@floss.cyclic.com>
6631
6632 * list.c (scm_delq_x, scm_delv_x, scm_delete_x): Delete all
6633 occurrences of the given element from the list, not just the
6634 first. This is how the Emacs Lisp functions behave, how the
6635 analogous Common Lisp functions behave, and (I believe) how the
6636 older Maclisp functions worked. I realize that this change may
6637 break code, but it seemed better to break it before the Guile
6638 release than after.
6639
6640 * gc.c (scm_protect_object, scm_unprotect_object): New functions.
6641 Their prototypes were already present in gc.h, but they weren't
6642 implemented.
6643 (scm_init_storage): Initialize scm_protects.
6644 * root.c (scm_protects): New element of scm_sys_protects.
6645
6646 * net_db.h (scm_init_net_db): Fix spelling from scm_init_netdb.
6647
6648 Sat Dec 21 15:38:32 1996 Jim Blandy <jimb@floss.cyclic.com>
6649
6650 * libguile.h: Added #include "libguile/net_db.h".
6651
6652 * libguile.h: Don't #include "libguile/libpath.h", contrary to Oct
6653 30 change. That file is only meant for communication between the
6654 configuration process and load.c. If code linked against libguile
6655 wants to get at the paths mentioned in libpath.h, it can call
6656 functions declared in load.h.
6657
6658 Sat Dec 21 14:50:42 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6659
6660 * libguile.h: Removed #include "libguile/fdsocket.h"
6661
6662 * net_db.c: Added #include <sys/socket.h>.
6663
6664 Sat Dec 21 00:33:03 1996 Gary Houston <ghouston@actrix.gen.nz>
6665
6666 * filesys.c (scm_input_waiting_p): use select in preference to
6667 FIONREAD, since the latter doesn't detect EOF.
6668 Throw error if neither select nor FIONREAD available.
6669
6670 * socket.c (scm_connect): take a port, not a fd object.
6671 (scm_fill_sockaddr): throw an error if fam is not recognised.
6672 (scm_bind): use scm_fill_sockaddr.
6673 (scm_listen): take a port, not a fd object.
6674 (scm_accept): take and return a port. return #f in the car if
6675 address can't be got
6676 (scm_sock_fd_to_port): new procedure.
6677 (scm_socket): use scm_sock_fd_to_port.
6678 (scm_addr_vector): throw error if unrecognised address type.
6679 take an extra argument with the calling procedure name.
6680 (scm_getsockname): take a port. return #f if address can't be got.
6681 (scm_getpeername): take a port. return #f if address can't be got.
6682 (scm_recvfrom): take a port. return #f for address component if can't
6683 be got.
6684 (scm_sendto, scm_socketpair, scm_getsockopt scm_shutdown,
6685 scm_setsockopt, scm_recv, scm_send): take a port not a fd object.
6686
6687 Fri Dec 20 23:06:53 1996 Jim Blandy <jimb@floss.cyclic.com>
6688
6689 * throw.c (scm_internal_catch): Make body funcs and handler funcs
6690 use separate data pointers, to allow them to be designed
6691 independently and reused.
6692 (scm_body_thunk, scm_handle_by_proc, scm_handle_by_message):
6693 Renamed from catch_body, catch_handler, and uncaught_throw; made
6694 generically useful.
6695 (struct scm_catch_body_data): Renamed from catch_body_data; moved
6696 to throw.h.
6697 (scm_catch): Use the above.
6698 (scm_throw): Don't bother printing a message for an uncaught
6699 throw; we establish a default handler in init.
6700 * throw.h (scm_internal_catch): Prototype updated.
6701 (scm_body_thunk, scm_handle_by_proc, scm_handle_by_message): New
6702 decls.
6703 (struct scm_body_thunk_data): New structure, used as data
6704 argument to scm_body_thunk.
6705 * init.c (struct main_func_closure): New structure, packaging up
6706 the data to pass to the user's main function.
6707 (scm_boot_guile): Create one. Pass it to scm_boot_guile_1.
6708 (scm_boot_guile_1): Pass it through to invoke_main_func. Use
6709 scm_internal_catch to establish a catch-all handler, using
6710 scm_handle_by_message. This replaces the special-case code in
6711 scm_throw.
6712 (invoke_main_func): Body function for scm_internal_catch; invoke
6713 the user's main function, using the main_func_closure pointer to
6714 decide what to pass it.
6715 * root.c (struct cwdr_body_data): Remove handler_proc member.
6716 (cwdr): Use scm_handle_by_proc instead of cwdr_handler.
6717 (cwdr_handler): Removed.
6718
6719 Thu Dec 19 00:00:26 1996 Gary Houston <ghouston@actrix.gen.nz>
6720
6721 * socket.h (SCM_P): update bind prototype.
6722 * socket.c (scm_init_socket): intern PF_UNSPEC, PF_UNIX, PF_INET.
6723 include "feature.h".
6724 (scm_socket): return a port, not a file descriptor object.
6725 include "fports.h" and <unistd.h>
6726 (scm_bind): take a port, not a file descriptor object.
6727 take an extra argument for address args.
6728
6729 * net_db.c (scm_init_net_db): intern INADDR_ANY, INADDR_BROADCAST,
6730 INADDR_NONE, INADDR_LOOPBACK.
6731
6732 Tue Dec 17 22:58:26 1996 Gary Houston <ghouston@actrix.gen.nz>
6733
6734 * init.c: include net_db.h and not fdsocket.h.
6735 (scm_boot_guile_1): call scm_init_net_db and not scm_init_fdsocket.
6736
6737 * Makefile.am: corresponding changes.
6738 * socket.h: renamed from fdsocket.h, fix names.
6739 * net_db.h: renamed from socket.h, fix names.
6740 * socket.c: renamed from fdsocket.c.
6741 remove _sys from procedure names.
6742 (scm_init_socket): rename from scm_init_fdsocket. include socket.x.
6743 add "socket" to features list.
6744 * net_db.c: renamed from socket.c.
6745 remove _sys from procedure names.
6746 (scm_init_net_db): rename from scm_init_socket. include net_db.x.
6747 add "net-db" to features list.
6748 include "net_db.h". don't include <sys/socket.h> or
6749 <sys/un.h>.
6750
6751 Thu Dec 19 14:03:24 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6752
6753 * tags.h (scm_tags): Removed comma at end of last enumerator.
6754
6755 Thu Dec 19 02:54:59 1996 Jim Blandy <jimb@floss.cyclic.com>
6756
6757 Don't use GCC extensions to allocate space for debugging frames.
6758 (Here he goes again! Why do we put up with this?!)
6759 * debug.h (scm_debug_frame): Make the 'vect' member a pointer to
6760 an scm_debug_info structure, not an in-line array of them. Add
6761 'info' member, to say how many vect elements we've used, for eval
6762 frames.
6763 * eval.c (SCM_CEVAL): Use alloca to allocate space for vect. Use
6764 a new variable debug_info_end to mark the end of vect, instead of
6765 the address of the 'info' pointer itself.
6766 [DEVAL] (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Remove casts of
6767 &debug to scm_debug_frame *; debug is a real scm_debug_frame now.
6768 (SCM_APPLY): Explicitly allocate space for debug.vect.
6769 * debug.c (scm_m_start_stack): Same, for vframe.vect.
6770 * stacks.c: Adjusted for new debug frame structure.
6771 (RELOC_INFO, RELOC_FRAME): New macros.
6772 (stack_depth, read_frames): Use them, and new scm_debug_frame
6773 element 'info', instead of magically knowing that eval frames have
6774 an info pointer sitting after vect.
6775 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Use
6776 RELOC_FRAME.
6777 (scm_init_stacks): Formatting tweaks.
6778
6779 Wed Dec 18 14:57:57 1996 Jim Blandy <jimb@floss.cyclic.com>
6780
6781 Give GCC more control flow information, so it can be sure that
6782 variables aren't used uninitialized.
6783 * error.h (scm_error, scm_syserror, scm_syserror_msg,
6784 scm_sysmissing, scm_num_overflow, scm_out_of_range,
6785 scm_wrong_num_args, scm_wrong_type_arg, scm_memory_error,
6786 scm_misc_error): Tell GCC that these functions never return.
6787 * struct.c (scm_struct_ref, scm_struct_set_x): If we can't figure
6788 out the field type, call abort if SCM_ASSERT returns, to placate
6789 the optimizer.
6790 * stacks.c (scm_make_stack, scm_last_stack_frame): abort if
6791 scm_wta ever returns. We can't handle this case anyway, and this
6792 gives the optimizer more information.
6793 * unif.c (scm_uniform_vector_ref, scm_array_set_x): Abort if
6794 scm_wta ever returns.
6795
6796 In some cases, the code is fine, but GCC isn't smart enough to
6797 figure that out; this usually happens when one variable is only
6798 initialized and used when a particular condition holds true, and
6799 we know that condition will never change within a given invocation
6800 of the function. In this case, we simply initialize the variables
6801 to placate the compiler, hopefully to a value which will cause a
6802 crash if it is ever actually used.
6803 * print.c (scm_iprin1): Initialize mw_pos.
6804 * read.c (scm_lreadrecparen): Initialize tl2, ans2.
6805 * throw.c (scm_ithrow): Initialize dynpair.
6806 * unif.c (scm_uniform_vector_ref): Initialize cra.
6807 * struct.c (init_struct): Initialize prot.
6808 * mbstrings.c (scm_print_mb_symbol): Initialize mw_pos and inc.
6809
6810 * strports.c (scm_eval_0str): Don't return uninitialized garbage
6811 if EXPR contains no expressions.
6812
6813 Wed Dec 18 11:43:22 1996 Jim Blandy <jimb@totoro.cyclic.com>
6814
6815 * eval.c, debug.h: Revert changes of Dec 16 and Nov 21. They
6816 cause an infinite loop (???). So much for the algebraic
6817 equivalency of variable-sized arrays and alloca...
6818
6819 Tue Dec 17 20:29:03 1996 Marius Vollmer <mvo@zagadka.ping.de>
6820
6821 * backtrace.c (scm_display_error): Bugfix: scm_procedure_p returns
6822 a SCM boolean, not a C boolean.
6823
6824 Sat Dec 14 23:21:45 1996 Marius Vollmer <mvo@zagadka.ping.de>
6825
6826 * gc.c (SCM_MTRIGGER_HYSTERESIS): New memory management parameter.
6827 (scm_must_malloc, scm_must_realloc): Added a hysteresis to the
6828 rules for raising scm_mtrigger. Previously, unfortunate but not
6829 unlikely circumstances could result in almost constant invokation
6830 of the gc. Now, this situations should be less likely, but they
6831 are not prevented completely.
6832
6833 Tue Dec 17 16:19:07 1996 Jim Blandy <jimb@totoro.cyclic.com>
6834
6835 * numbers.c (scm_fuck): Procedure removed; looks like old test
6836 code.
6837 * numbers.h: Prototype removed.
6838
6839 Mon Dec 16 18:20:32 1996 Jim Blandy <jimb@totoro.cyclic.com>
6840
6841 * debug.h (scm_debug_frame): Change `vect' member from an in-line
6842 array to a pointer, to match my Nov 21 change in eval.c.
6843
6844 Fri Dec 13 16:12:14 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
6845
6846 * libguile.h: Added #include "libguile/backtrace.h", #include
6847 "libguile/stacks.h".
6848
6849 * strings.c (scm_string scm_make_string scm_string_ref
6850 scm_string_set_x scm_string_equal_p scm_string_append):
6851 Bugfix according to scm patch from Aubrey Jaffer:
6852 Corrected long-standing
6853 (not (eqv? (integer->char 128)
6854 (string-ref (make-string 1 (integer->char 128)) 0)))
6855 bug found by John Kozak <jk@noontide.demon.co.uk>.
6856
6857 * strports.c, strports.h: Make scm_eval_0str return the value of
6858 the last expression evaluated (previously, it returned void).
6859
6860 * strports.c, strports.h: New function: scm_read_0str. Does what
6861 it sounds like.
6862
6863 Tue Dec 10 23:38:43 1996 Gary Houston <ghouston@actrix.gen.nz>
6864
6865 * simpos.c (scm_getenv): return #f if string can't be found in the
6866 environment instead of throwing an exception, for compatibility
6867 with numerous other systems.
6868
6869 Mon Dec 9 23:23:35 1996 Tom Tromey <tromey@cygnus.com>
6870
6871 * Makefile.am (.c.x): Use guile-snarf.
6872 * configure.in (AC_OUTPUT): Generate guile-snarf; make it
6873 executable.
6874 * guile-snarf.in: New file, resurrected from old guile-snarf.sh.
6875
6876 Mon Dec 9 18:36:50 1996 Jim Blandy <jimb@duality.gnu.ai.mit.edu>
6877
6878 * backtrace.c (scm_display_error_message): Made non-static, and
6879 renamed from display_error_message.
6880 * backtrace.h (scm_display_error_message): Added extern decl.
6881 * throw.c (uncaught_throw): Use it to display the error message.
6882
6883 Mon Dec 9 10:10:38 1996 Tom Tromey <tromey@cygnus.com>
6884
6885 * inet_aton.c: Use #if 0, not #ifdef 0.
6886
6887 Mon Dec 9 06:36:48 1996 Gary Houston <ghouston@actrix.gen.nz>
6888
6889 * ioext.c (scm_sys_ftell): use scm_long2num instead of SCM_MAKINUM
6890 to convert the returned value.
6891 (scm_sys_fseek): use scm_num2long instead of SCM_INUM to convert
6892 the offset argument.
6893
6894 Sun Dec 8 21:06:38 1996 Jim Blandy <jimb@duality.gnu.ai.mit.edu>
6895
6896 Add new interface to catch/throw, usable from C as well as
6897 Scheme.
6898 * throw.h (scm_catch_body_t, scm_catch_handler_t): New types.
6899 (scm_internal_catch): New function, replaces...
6900 (scm_catch_apply): Deleted.
6901 * throw.c (scm_catch_apply): Deleted; replaced with a more general
6902 mechanism which is a bit more code, but can be used nicely from C
6903 and implement the Scheme semantics as well.
6904 (scm_internal_catch): This is the replacement; it's named after
6905 the analogous function in Emacs.
6906 (scm_catch): Reimplemented in terms of the above.
6907 (struct catch_body_data, catch_body, catch_handler): New
6908 functions, used by scm_catch.
6909 * root.c (cwdr): Reimplemented in terms of scm_internal_catch.
6910 (struct cwdr_body_data, cwdr_body, cwdr_handler): New functions;
6911 support for new cwdr.
6912
6913 * Makefile.am (libpath.h): Re-incorporate Mikael's changes of Wed
6914 Oct 30.
6915
6916 Sun Dec 8 17:55:34 1996 Marius Vollmer <mvo@zagadka.ping.de>
6917
6918 * acconfig.h: Added DYNAMIC_LINKING symbol.
6919 * configure.in: Add option and checks for dynamic linking.
6920 * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c,
6921 dynl.h: New files for dynamic linking support.
6922 * Makefile.am (libguile_a_SOURCES):
6923 Added "dynl.c".
6924 (modinclude_HEADERS): Added "dynl.h".
6925 (EXTRA_DIST): Added "dynl-dl.c", "dynl-dld.c", "dynl-shl.c" and
6926 "dynl-vms.c".
6927 * init.c (scm_boot_guile_1): Call
6928 scm_init_dynamic_linking to initialize dynamic linking support.
6929
6930 Thu Dec 5 22:47:53 1996 Marius Vollmer <mvo@zagadka.ping.de>
6931
6932 * init.c (scm_boot_guile_1): Moved `live' variable to the toplevel
6933 (as we Schemers say). It needs to be global, so that I can tweak
6934 it for the proper operation of unexec.
6935 (scm_boot_guile_1_live): New variable, see above.
6936
6937 Sun Dec 1 00:00:49 1996 Tom Tromey <tromey@cygnus.com>
6938
6939 * guile-snarf.sh: Removed.
6940 * PLUGIN/guile.libs: Added dependency for -lm.
6941 * acinclude.m4: Renamed from aclocal.m4.
6942 * PLUGIN/greet: Removed.
6943 * Makefile.am, aclocal.m4: New files.
6944 * configure.in: Updated for Automake.
6945
6946 Thu Nov 28 00:23:55 1996 Marius Vollmer <mvo@zagadka.ping.de>
6947
6948 * eval.c (scm_definedp): Use top_level_lookup_closure_var
6949 and not top_level_lookup_thunk_var.
6950
6951 Wed Nov 27 22:04:19 1996 Jim Blandy <jimb@baalperazim.frob.com>
6952
6953 * Makefile.in (ancillary): List ChangeLog-scm, not ChangeLog.scm.
6954
6955 Wed Nov 27 14:14:56 1996 Marius Vollmer <mvo@zagadka.ping.de>
6956
6957 * eval.c (scm_definedp): Incompatibly changed to be a builtin
6958 Scheme function, instead of syntax. Single argument is now a
6959 symbol.
6960
6961 Thu Nov 21 20:26:36 1996 Jim Blandy <jimb@totoro.cyclic.com>
6962
6963 * ramap.c (scm_ra_sum, scm_ra_difference, scm_ra_product,
6964 scm_ra_divide): Properly terminate statements passed as arguments
6965 to IVDEP macros. (Thanks to Bernard Urban.)
6966
6967 * eval.c (SCM_CEVAL): Use alloca, not GCC's extensions for arrays
6968 with non-constant sizes. (Thanks to Bernard Urban.)
6969
6970 Thu Nov 21 11:17:42 1996 Jim Blandy <jimb@floss.cyclic.com>
6971
6972 It's an "eval closure", not an "eval thunk." A thunk is a
6973 function of no arguments.
6974 * root.h (struct scm_root_state): Renamed
6975 top_level_lookup_closure_var from top_level_lookup_thunk_var.
6976 (scm_top_level_lookup_closure_var): Renamed from
6977 scm_top_level_lookup_thunk_var.
6978 * root.c (mark_root): Uses changed.
6979 * gdbint.c (gdb_eval, gdb_binding): Uses changed.
6980 * init.c (scm_start_stack): Uses changed.
6981 * eval.c (scm_eval, scm_eval_x, scm_init_eval): Rename uses.
6982 Change scheme-visible name to *top-level-lookup-closure* from
6983 *top-level-lookup-thunk*.
6984
6985 Tue Nov 19 22:43:31 1996 Jim Blandy <jimb@totoro.cyclic.com>
6986
6987 * gc.c (scm_igc, scm_gc_mark): Round up the size of the stack we
6988 pass to scm_mark_locations. (Thanks to Aubrey Jaffer.)
6989
6990 Sun Nov 10 13:35:05 1996 Jim Blandy <jimb@floss.cyclic.com>
6991
6992 * gc.c (struct scm_heap_seg_data): Doc fixes.
6993
6994 * gc.c (scm_gc_sweep): Empty all segments' freelists before
6995 sweeping. Then, prepend each segment's free cells to its
6996 freelist, rather than wiping out the old value. (Thanks to Marius
6997 Vollmer.)
6998
6999 * gc.c (which_seg, scm_map_free_list, scm_newcell_count,
7000 scm_check_freelist, scm_debug_newcell): New functions and
7001 variables, for debugging freelist problems.
7002 * pairs.h (SCM_NEWCELL): New debugging version added.
7003 * gc.h (scm_debug_newcell): Added extern declaration, used by
7004 debugging version of SCM_NEWCELL.
7005
7006 Sat Nov 9 19:02:46 1996 Jim Blandy <jimb@floss.cyclic.com>
7007
7008 On some systems <libc.h> conflicts with <unistd.h>, and should not
7009 be #included at all.
7010 * aclocal.m4 (GUILE_HEADER_LIBC_WITH_UNISTD): New autoconf macro.
7011 * acconfig.h (LIBC_H_WITH_UNISTD_H): New CPP symbol.
7012 * configure.in: Call it.
7013 * posix.c, filesys.c: Use its results to decide whether or not to
7014 #include <libc.h>.
7015 * configure, scmconfig.h.in: Rebuilt with autoconf and
7016 autoheader.
7017
7018 Wed Nov 6 16:19:50 1996 Jim Blandy <jimb@totoro.cyclic.com>
7019
7020 * fports.c (scm_stdio_to_port, scm_open_file): Set the port's
7021 pointer to the stdio stream before calling scm_setbuf0, so the
7022 latter will be able to retrieve it. I'm surprised this didn't
7023 segfault earlier. (Thanks to Christopher Lee.)
7024
7025 Wed Nov 6 16:01:20 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
7026
7027 * throw.c (scm_lazy_catch, scm_ithrow): Completed implementation
7028 of `lazy-catch'.
7029
7030 Sat Nov 2 21:01:48 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
7031
7032 * stacks.c, stacks.h (scm_make_stack): Now takes arbitrary
7033 number of stack narrowing specifier pairs. The first specifier in
7034 a pair controls inner border, the second the outer border. A
7035 number means cut that number of frames, a procedure object means
7036 cut until that object is found in operator position in a frame.
7037
7038 * root.c (cwdr): Bugfix.
7039
7040 * read.c: Recording of positions disabled by default.
7041
7042 * procs.c (scm_closure_p): New function.
7043
7044 * posix.c (scm_tmpnam): New function.
7045
7046 * load.c: Added #include "throw.h".
7047 (scm_sys_search_load_path): Bugfix: Don't add an extra '/' if path
7048 ends with '/'.
7049
7050 * load.c, load.h (scm_read_and_eval_x): New function.
7051
7052 * eval.c: Renamed debug option "deval" to "debug".
7053
7054 (scm_eval_x): `eval!' is no longer accessible from the scheme
7055 level. Motivation: We can't allow operations which introduce
7056 glocs into the scheme level. Guile's type system can't handle
7057 these as data. Use `eval' or `read-and-eval!' as replacement.
7058
7059 * debug.c (scm_m_start_stack): Bugfix: Use SCM_ECONSP instead of
7060 SCM_CONSP since this is a macro!; Set vframe.prev to
7061 scm_last_debug_frame instead of 0. In this way we can look
7062 "above" the virtual start stack frame if we wish.
7063 (scm_debug_hang): New function: Useful for debugging Guile in
7064 certain tricky situations. Will probably be removed later...
7065
7066 * debug.h: Changed semantics of debug option "backtrace". This
7067 option now only indicates whether we want automatic backtrace at
7068 an error.
7069
7070 Wed Oct 30 00:31:55 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
7071
7072 * ports.c: #include "filesys.h"
7073 (scm_char_ready_p): input_waiting renamed and moved to filesys.c.
7074
7075 * filesys.c, filesys.h (scm_input_waiting_p): Moved from ports.c.
7076 Motivation: This is system specific code which is related to file
7077 I/O. It also may use select. Added code by Gary Houston to
7078 detect presence of character in stdio buffers.
7079
7080 * libguile.h: #include "libguile/libpath.h"
7081
7082 * Makefile.in (libpath.h): Renamed definition of: LIBRARY_PATH -->
7083 SCM_LIBRARY_DIR; Added definitions of: SCM_PKGDATA_DIR,
7084 SCM_SITE_DIR; Install libpath.h among the other include files.
7085
7086 * load.c, load.h (scm_sys_package_data_dir): New function.
7087
7088 Mon Oct 28 11:43:41 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
7089
7090 * stacks.h: Bugfix: Don't use tail-array length field as stack
7091 length field! This screwed GC.
7092
7093 Tue Oct 22 01:01:00 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
7094
7095 * _scm.h: Added #ifndef around definition of macros min and max.
7096
7097 * __scm.h: Added hooks for threads to plugin to in ints protection
7098 macros: SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER,
7099 SCM_THREAD_ALLOW_1, SCM_THREAD_ALLOW_2. Motivation: We don't want
7100 the main code in these macros duplicated and spread over multiple
7101 files. Renamed SCM_THREADS_SWITCHING_CODE ->
7102 SCM_THREAD_SWITCHING_CODE.
7103
7104 Tue Oct 29 14:55:40 1996 Marius Vollmer <mvo@zagadka.ping.de>
7105
7106 * snarf.h: New file.
7107 * guile-snarf.sh: New file.
7108 * Makefile.in (inner_h_files): Added snarf.h
7109 (ancillary, install, uninstall, distclean): Added actions for
7110 guile-snarf.
7111 (.c.x): Use guile-snarf.
7112 (guile-snarf): New rule, to produce guile-snarf from guile-snarf.sh.
7113 (gen_c_files): Note that these depend on guile-snarf.
7114 * _scm.h: Removed the snarfing macros (SCM_PROC, etc). They are
7115 now in "snarf.h". Added #include "snarf.h" to get them.
7116 * libguile.h: Added #include "snarf.h".
7117 (Patches applied and tweaked by Jim Blandy.)
7118
7119 Tue Oct 29 13:21:13 1996 Jim Blandy <jimb@totoro.cyclic.com>
7120
7121 * socket.c: Use K&R style declaration for 'close'; the GNU coding
7122 standards suggest against providing prototypes for system
7123 functions. Thanks to Greg Troxel.
7124
7125 Mon Oct 28 16:48:32 1996 Jim Blandy <jimb@floss.cyclic.com>
7126
7127 * strports.c (scm_eval_0str): New function.
7128 #include "read.h", to get prototype for scm_read.
7129 * Makefile.in (strports.o): Update dependencies.
7130 * strports.h: New prototype.
7131
7132 * numbers.c (scm_integer_p): Renamed from scm_int_p; change its
7133 scheme name from "int?" to "integer?". It seems to do the job.
7134 * numbers.h: Rename prototype too.
7135 * scmhob.h (intp): Change definition to refer to scm_integer_p. I
7136 hope this is right.
7137
7138 * numbers.c (scm_less_p, scm_gr_p, scm_leq_p, scm_geq_p,
7139 scm_num_eq_p): Rename these according to R4RS conventions: call
7140 them <, <=, =, >, and >=, not <?, <=?, =?, >?, and >=?. En route
7141 to making libguile R4RS compliant without ice-9...
7142
7143 * load.c (scm_sys_search_load_path): Search for files under all
7144 extensions listed in the %load-extensions variable. If FILENAME
7145 is absolute, return it unchanged, without searching the load path.
7146 (scm_loc_load_extensions): New variable, pointing to
7147 %load-extensions' value cell.
7148 (scm_init_load): Initialize it, and the value it points to.
7149 (scm_primitive_load_path): Improve error reporting.
7150
7151 * load.c (scm_loc_load_hook): New variable, pointing to value cell
7152 of new Scheme variable %load-hook.
7153 (scm_primitive_load): Apply %load-hook to filename.
7154
7155 Mon Oct 28 06:28:28 1996 Gary Houston <ghouston@actrix.gen.nz>
7156
7157 * configure.in: add tests for figuring out whether buffered data
7158 is available in a FILE structure, which is needed by char-ready.
7159
7160 * acconfig.h: define FILE_CNT_FIELD, FILE_CNT_GPTR and
7161 FILE_CNT_READPTR.
7162
7163 * simpos.c (scm_getenv): renamed from scm_sys_getenv. Throw
7164 exceptions using misc_error instead of syserror. It seems a bit
7165 odd to throw an exception if a string can't be found in the
7166 environment, but it's consistent with open-file, stat etc.
7167 (simpos.h): remove sys_ from getenv.
7168
7169 * posix.c (scm_putenv): renamed from scm_sys_putenv. If an error
7170 occurs, throw an error instead of returning errno. Return value
7171 is now unspecified.
7172 (numerous in posix.c and posix.h): removed superfluous sys_ from names.
7173
7174 Sun Oct 27 01:22:04 1996 Gary Houston <ghouston@actrix.gen.nz>
7175
7176 * filesys.c (scm_stat2scm): derive file type and permissions from
7177 the stat mode and append them to the returned vector.
7178 There isn't much overhead in doing this and it avoids the need to
7179 work with S_IRUSR et al. in Scheme.
7180 Define symbols scm_sym_regular etc.
7181 (scm_init_filesys): don't intern S_IRUSR etc.
7182
7183 * load.c: change s_try_load and s_try_load_path to s_primitive_load
7184 and s_primitive_load_path.
7185
7186 * eval.c, load.c, error.c (scm_wta): use scm_misc_error.
7187
7188 * error.h: don't declare error symbols. prototype for scm_misc_error.
7189
7190 * stackchk.c (scm_stack_overflow_key): defined here instead of in
7191 error.c.
7192
7193 * error.c: use SCM_SYMBOL to set up error keys.
7194 scm_misc_error: new procedure.
7195
7196 Fri Oct 25 01:56:30 1996 Jim Blandy <jimb@floss.cyclic.com>
7197
7198 * read.c (scm_lreadr): Recognize SCSH-style block comments; text
7199 between `#!' and `!#' is ignored.
7200 (skip_scsh_block_comment): New function.
7201
7202 * feature.c (scm_set_program_arguments): New argument, FIRST.
7203 * feature.h: Update prototype.
7204 * init.c (scm_boot_guile_1): Pass new argument to
7205 scm_set_program_arguments.
7206
7207 Tue Oct 22 20:54:42 1996 Jim Blandy <jimb@floss.cyclic.com>
7208
7209 * init.c (scm_start_stack): Don't initialize scm_progargs here.
7210 (scm_boot_guile): Call scm_set_program_arguments here, later than
7211 the old initialization.
7212
7213 * init.c: (scm_boot_guile, scm_boot_guile_1): New, simplified
7214 initialization procedure.
7215 - Delete in, out, err arguments; there are other perfectly good
7216 ways to override these when desired.
7217 - Delete result argument; this function shouldn't ever return.
7218 - Rename init_func argument to main_func, for less confusion.
7219 - Delete boot_cmd argument; main_func is more general.
7220 -Add 'closure' argument, to help people pass data to main_func
7221 without resorting to global variables.
7222 - Abort if reentered; don't bother returning an error code.
7223 - Call scm_init_standard_ports to set up the default/current
7224 standard ports; no need to pass them to scm_start_stack.
7225 - Remove code to evaluate the boot_cmd, and start the repl; let
7226 the user do something like that in main_func if they want.
7227 - Remove code to package up a return value; main_func can do any
7228 of that as needed.
7229 - Call exit (0), instead of returning.
7230 (scm_start_stack): Don't initialize the I/O ports here; that's
7231 weird. Delete in, out, err arguments. Move guts to
7232 scm_init_standard_ports, scm_stdio_to_port.
7233 (scm_init_standard_ports): New function, to set up current and
7234 default standard ports.
7235 (scm_start_stack, scm_restart_stack): Make these static.
7236 * init.h (scm_boot_guile): Adjust declaration.
7237 (scm_start_stack, scm_restart_stack): Remove externally
7238 visible declarations for these.
7239 (enum scm_boot_status): Removed; now scm_boot_guile never returns.
7240
7241 * fports.c (scm_stdio_to_port): New function. Its guts used to be
7242 written out several times in scm_start_stack.
7243 * fports.h: New declaration for the above.
7244
7245 * feature.c (scm_set_program_arguments): New function.
7246 * feature.h: New declaration for the above.
7247
7248 * ports.c: Formatting tweak.
7249
7250 Sun Oct 20 03:29:32 1996 Mikael Djurfeldt <mdj@kenneth>
7251
7252 * pairs.h, eval.c, eval.h, feature.c, gc.c, list.c, load.c,
7253 ramap.c, symbols.c: Added new selectors SCM_CARLOC and SCM_CDRLOC
7254 for obtaining the address of a car or cdr field. Motivation:
7255 &SCM_CXR make assumptions about the internal structure of the
7256 SCM_CXR selectors.
7257
7258 * eval.h, eval.c: Added new selector SCM_GLOC_VAL_LOC.
7259 Motivation: see SCM_CXRLOC.
7260
7261 * pairs.h, eval.c, gc.c, init.c, ioext.c, ports.c, ports.h,
7262 srcprop.h, tags.h, throw.c, unif.c: Added new selectors
7263 SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR and SCM_SETOR_CDR.
7264 Motivation: Safer use. Some other macros are defined in terms of
7265 these operations. If these are defined using the SCM_SETCXR
7266 (<e1>, SCM_CXR (<e1>) <op> <e2>) pattern a complex <e1> will lead
7267 to inefficiency and an <e1> with side-effects could potentially
7268 break. Also, these particular operations are heavily utilized in
7269 the garbage collector. In unoptimized code there will be a
7270 measurable speedup.
7271
7272 * alist.c, arbiters.c, continuations.c, debug.c, debug.h, eval.c,
7273 eval.h, feature.c, filesys.c, fports.c, gc.c, gsubr.c, init.c,
7274 ioext.c, kw.c, list.c, load.c, mallocs.c, numbers.c, numbers.h,
7275 pairs.c, pairs.h, ports.c, ports.h, posix.c, procprop.c, procs.c,
7276 procs.h, ramap.c, read.c, root.c, srcprop.c, srcprop.h,
7277 strports.c, symbols.c, tags.h, throw.c, unif.c, variable.c,
7278 vports.c: Cleaned up use of pairs: Don't make any special
7279 assumptions about the internal structure of selectors and
7280 mutators: SCM_CXR (<e1>) = <e2> --> SCM_SETCXR (<e1>, <e2>),
7281 SCM_CXR (<e1>) &= <e2> --> SCM_SETAND_CXR (<e1>, <e2>) etc.
7282 (Among other things, this change makes it easier to build Guile
7283 with certain compilers which have problems with casted lvalues.)
7284
7285 Fri Oct 18 01:11:56 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
7286
7287 * stacks.c: Improve selection of relevant stack frames when making
7288 a stack object. Introduce one level of indirection in the stack
7289 object to make it possible to "narrow" to a certain region of the
7290 stack. This facilitates making use of more clever algorithms (not
7291 implemented) for selecting relevant frames and gives a cleaner
7292 design since selection of frames can be done independently of
7293 extraction of frames from the real stack.
7294 (scm_stack_id): Also take #t as argument which means look at
7295 current stack.
7296
7297 * stacks.h: In struct scm_stack: Turn field frames into a pointer.
7298 Turn n_tail into an integer directly representing current number
7299 of frames in stack. Add field tail.
7300
7301 * ports.c (scm_port_line_x, scm_port_column_x): New mutators.
7302
7303 * debug.c (scm_make_memoized): Made it available at scheme level.
7304 (scm_unmemoize, scm_memoized_environment): Bugfix: Check for
7305 SCM_NIMP before applying heavier predicates in argument checking.
7306 (scm_local_eval): Also take memoized object as argument.
7307
7308 * backtrace.c (scm_display_error): Just a safety measure: Stacks
7309 aren't created with zero length, but should such a strange
7310 creature suddenly turn up...
7311
7312 Wed Oct 16 11:08:41 1996 Marius Vollmer <mvo@zagadka.ping.de>
7313
7314 * hashtab.h (scm_hashx_remove_x): Renamed `delete' parameter to
7315 `del', for the sake of C++ compilers. (Patch applied by JimB.)
7316
7317 Tue Oct 15 17:06:13 1996 Jim Blandy <jimb@floss.cyclic.com>
7318
7319 * variable.c (scm_make_variable): Make the name hint optional, as
7320 documented.
7321 (anonymous_variable_sym): Renamed from variable_sym. All uses
7322 changed.
7323
7324 * load.c (scm_primitive_load, scm_primitive_load_path): Renamed
7325 from scm_sys_try_load and scm_sys_try_load_path. The Scheme name
7326 of scm_primitive_load_path was also changed to
7327 "primitive-load-path", from "%try-load-path". Callers changed.
7328 We'd like to respect the convention that a function named
7329 "try-mumble" should behave just like the function called "mumble",
7330 but return #f instead of signalling some error.
7331 * load.h: Rename prototypes.
7332
7333 Tue Oct 15 05:34:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7334
7335 * print.c (make_print_state, grow_print_state), print.h: Modified
7336 the print state representation: Don't use a tail array for
7337 recording of circular references. Resizing of the print state
7338 structure invalidates the print state pointer. To avoid passing
7339 around an indirect print state reference to all printing
7340 functions, we instead let the print state reference a resizable
7341 vector.
7342
7343 Mon Oct 14 19:25:00 1996 Jim Blandy <jimb@totoro.cyclic.com>
7344
7345 * alist.c (scm_sloppy_assq, scm_sloppy_assv, scm_sloppy_assoc):
7346 Don't crash when passed an improper list terminated by a
7347 non-immediate value.
7348
7349 Mon Oct 14 19:08:33 1996 Jim Blandy <jimb@floss.cyclic.com>
7350
7351 Allocate data for structures on an eight-byte boundary, as
7352 required by the tagging system.
7353 * struct.c (alloc_struct): New function.
7354 (scm_make_struct, scm_make_vtable_vtable): Call it.
7355 * struct.h (scm_struct_n_extra_words): Bump to 3.
7356 (scm_struct_i_ptr): New "field".
7357 * gc.c (scm_gc_sweep): When we need to free the data, use the
7358 information stored by alloc_struct to find the beginning of the
7359 block allocated to the structure, so we can free it.
7360
7361 Mon Oct 14 17:07:55 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7362
7363 * init.c (scm_boot_guile_1): Moved scm_init_struct in front of
7364 scm_init_stacks.
7365
7366 * debug.h (SCM_VOIDFRAME, SCM_VOIDFRAMEP): New macros.
7367 (scm_debug_info): New member: id.
7368
7369 * stacks.c: Stacks are now represented as structs; Stacks have an
7370 id given to them by `start-stack'.
7371 (scm_last_stack_frame): Added predicates `stack?' and `frame?'.
7372
7373 * stacks.h: Added declarations of scm_stack_p and scm_frame_p;
7374 Changed stack representation.
7375
7376 * debug.c (scm_procedure_name): Try procedure property `name' for
7377 compiled closures aswell.
7378
7379 * gc.c (scm_init_storage): Initialize scm_stand_in_procs to SCM_EOL.
7380
7381 * eval.c: scm_i_name moved to gsubr.c
7382 (scm_m_define): Record names of all kinds of procedure
7383 objects. (Earlier, only closures were recorded.)
7384
7385 * procprop.h: Added declaration of scm_i_name.
7386
7387 * gsubr.c: Added global scm_i_name. Added #include "procprop.h".
7388 (scm_make_gsubr): Record names of compiled closures.
7389
7390 Mon Oct 14 04:21:51 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7391
7392 * debug.c, debug.h: Removed obsolete code.
7393
7394 * continuations.c, continuations.h, debug.c, gc.c, init.c, root.c,
7395 stacks.c: Renamed regs --> scm_contregs.
7396
7397 * print.c (scm_free_print_state): Cleanup print state before
7398 returning it to pool. It is better to do it here than in
7399 scm_prin1 since scm_prin1 is called often.
7400
7401 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
7402 s_set_source_property_x): Check that first argument is a pair or a
7403 memoized object.
7404
7405 * srcprop.c, srcprop.h: Made scm_i_filename, scm_i_copy,
7406 scm_i_line, scm_i_column and scm_i_breakpoint global.
7407
7408 * init.c: Added #include "backtrace.h" and #include "stacks.h".
7409 (scm_boot_guile_1): Added calls to scm_init_backtrace and
7410 scm_init_stacks.
7411
7412 * debug.h: Added debug object smob declaration and macro
7413 definitions.
7414
7415 * configure.in: Build with backtrace.o and stacks.o if debug
7416 support enabled.
7417
7418 * Makefile.in: Added entries for new files: backtrace.c,
7419 backtrace.h, stacks.c and stacks.h.
7420
7421 * symbols.c (scm_sym2ovcell): Fixed documentation.
7422
7423 * _scm.h (min, max): Added.
7424
7425 * async.c: Moved `min' macro to _scm.h.
7426
7427 * debug.h: New debug options SCM_BACKTRACE_MAXDEPTH and
7428 SCM_BACKTRACE_INDENT.
7429
7430 * eval.c: Added new debug options `maxdepth' and `indent'.
7431
7432 * print.c (make_print_state): Bugfix: Initialize pstate->ceiling.
7433
7434 * print.h: Added selector SCM_PRINT_STATE.
7435
7436 * print.c: New functions: scm_make_print_state,
7437 scm_free_print_state.
7438
7439 * print.h: Added declarations for scm_make_print_state,
7440 scm_free_print_state.
7441
7442 * debug.c (scm_m_start_stack): New acro.
7443
7444 * debug.h: Small cleanup.
7445
7446 * init.c (scm_boot_guile_1): Moved scm_init_debug below
7447 scm_init_eval.
7448
7449 Sun Oct 13 20:14:53 1996 Jim Blandy <jimb@totoro.cyclic.com>
7450
7451 * __scm.h, alist.c, alist.h, append.c, append.h, appinit.c,
7452 arbiters.c, arbiters.h, async.c, async.h, boolean.c, boolean.h,
7453 chars.c, chars.h, continuations.c, continuations.h, debug.c,
7454 debug.h, dynwind.c, dynwind.h, eq.c, eq.h, error.c, eval.c,
7455 eval.h, extchrs.c, extchrs.h, fdsocket.c, fdsocket.h, filesys.c,
7456 filesys.h, fports.c, fports.h, gc.c, gdb_interface.h, gdbint.c,
7457 gdbint.h, genio.c, genio.h, gscm.c, gscm.h, gsubr.c, gsubr.h,
7458 hash.c, hash.h, hashtab.c, hashtab.h, init.c, ioext.c, ioext.h,
7459 kw.c, kw.h, libguile.h, mallocs.c, mallocs.h, markers.c,
7460 markers.h, mbstrings.c, mbstrings.h, numbers.c, numbers.h,
7461 objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h,
7462 ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c,
7463 procprop.h, procs.c, procs.h, ramap.c, ramap.h, read.c, read.h,
7464 root.c, scmsigs.c, scmsigs.h, sequences.c, sequences.h, simpos.c,
7465 simpos.h, smob.c, socket.c, socket.h, srcprop.c, srcprop.h,
7466 stackchk.c, stackchk.h, stime.c, stime.h, strings.c, strings.h,
7467 strop.c, strop.h, strorder.c, strorder.h, strports.c, strports.h,
7468 struct.c, struct.h, symbols.c, symbols.h, tag.c, tag.h, unif.c,
7469 unif.h, variable.c, variable.h, vectors.c, vectors.h, version.c,
7470 version.h, vports.c, vports.h, weaks.c, weaks.h: Use SCM_P to
7471 declare functions with prototypes. (Patch thanks to Marius
7472 Vollmer.)
7473
7474 More prototype-related changes from Marius Vollmer:
7475 * gdb_interface.h: Wrapped header file in #ifdef/#endif
7476 * gscm.h (gscm_run_scm): Added prototype for `initfn' paramter.
7477 * ports.h (ptobfuns): Added prototypes. This means some casting in
7478 fports.c.
7479 * fports.c: Added casts for initializations, since the functions
7480 are defined to take FILE * as their stream argument, not SCM.
7481 * fdsocket.c, fdsocket.h: Made `init_addr_buffer' static.
7482 * genio.c (scm_gen_puts): Changed `unsigned char *str_data' parameter
7483 to `char *str_data' to conform to prototype.
7484
7485 Sat Oct 12 21:49:29 1996 Gary Houston <ghouston@actrix.gen.nz>
7486
7487 * error.c, eval.c, load.c, stackchk.c: use scm_error not lgh_error.
7488
7489 * __scm.h (lgh_error): removed, lgh shouldn't be in libguile.
7490
7491 * stime.c, stime.h: use SCM_P method.
7492
7493 Sat Oct 12 16:16:25 1996 Jim Blandy <jimb@floss.cyclic.com>
7494
7495 * eval.c (scm_nconc2last): Don't accept an empty list; apply must
7496 be given at least two arguments. Insist that lst's last element
7497 be a list, but don't make any requirements of its predecessors.
7498
7499 Fri Oct 11 03:58:25 1996 Jim Blandy <jimb@floss.cyclic.com>
7500
7501 * eval.c (scm_nconc2last): Revert last change; there seems to be
7502 other stuff going on here.
7503
7504 Fri Oct 11 02:43:59 1996 Jim Blandy <jimb@totoro.cyclic.com>
7505
7506 * eval.c (scm_nconc2last): Make sure that each element of lst
7507 (which is a list of argument lists, except for the tail) is a
7508 proper list, i.e., finite and terminated by '().
7509
7510 Thu Oct 10 21:09:13 1996 Jim Blandy <jimb@totoro.cyclic.com>
7511
7512 * unif.c (scm_ra_set_contp): Localize `inc' declaration.
7513 Clarifies flow.
7514
7515 * struct.c (scm_make_struct, scm_make_vtable_vtable): Use the
7516 symbolic name for the tag, scm_tc3_cons_gloc, instead of just
7517 saying "1".
7518
7519 * vectors.c (scm_make_vector): Fill vectors with the undefined
7520 value, to help make Guile Scheme code more portable to other
7521 Schemes.
7522
7523 * symbols.c (scm_intern_obarray_soft, scm_sysintern): Doc fixes.
7524 * symbols.h, tags.h: Doc fixes.
7525
7526 Wed Oct 9 19:39:29 1996 Jim Blandy <jimb@floss.cyclic.com>
7527
7528 * async.c (scm_take_signal): Doc fixes.
7529
7530 Mon Oct 7 22:30:34 1996 Jim Blandy <jimb@totoro.cyclic.com>
7531
7532 * numbers.c (scm_divbigint): When the remainder is zero, we don't
7533 want to subtract it from the modulus; we just want to leave it
7534 alone.
7535
7536 Mon Oct 7 00:14:17 1996 Mikael Djurfeldt <mdj@kenneth>
7537
7538 * init.c (scm_boot_guile_1): Bugfix: i --> base in argument to
7539 `scm_init_threads'.
7540
7541 * throw.h (scm_catch_apply): Removed the `lazyp' argument.
7542
7543 * throw.c (scm_catch_apply): Finished implementation of
7544 `lazy-catch'.
7545
7546 Sun Oct 6 05:26:05 1996 Gary Houston <ghouston@actrix.gen.nz>
7547
7548 * filesys.c (scm_sys_select): move SCM_ALLOW_INTS past the sreturn
7549 check.
7550 (scm_init_filesys): set "i/o-extensions" feature.
7551 include feature.h.
7552
7553 Sat Oct 5 12:22:00 1996 Jim Blandy <jimb@floss.cyclic.com>
7554
7555 * Makefile.in (root.o): Correct dependencies.
7556
7557 Sat Oct 5 18:40:42 1996 Mikael Djurfeldt <mdj@kenneth>
7558
7559 * Makefile.in: Added dependency entry for root.o.
7560
7561 * continuations.c, debug.[ch], eval.c, gscm.c init.c, root.c,
7562 throw.c: Renamed last_debug_info_frame -> scm_last_debug_frame.
7563
7564 * init.c (scm_start_stack): Set initial root continuation number
7565 to 0.
7566
7567 * procs.c: New function: scm_thunk_p.
7568
7569 * procs.h: Added declarations of scm_thunk_p.
7570
7571 * root.c: Renamed `call-with-new-root' -->
7572 `call-with-dynamic-root'.
7573 (cwdr): Removed allocation of new root state. This should be done
7574 separately by use of scm_make_root.
7575 (scm_apply_with_dynamic_root): New function: Does what it
7576 sounds like. Needed when spawning threads.
7577
7578 * root.h: Added member last_debug_frame to root state.
7579 Added #include "libguile/debug.h"
7580
7581 * throw.c: Renamed scm_catch --> scm_catch_apply and added more
7582 arguments. The motivation is that code in root.c needs catch
7583 functionality, and we want to avoid code duplication.
7584 New functions: scm_catch, scm_lazy_catch. These are wrappers for
7585 scm_catch_apply. scm_lazy_catch is intended to introduce catch
7586 handlers that run without popping the stack into the dynwind
7587 chain.
7588
7589 * throw.h: Added prototypes for scm_catch_apply and
7590 scm_lazy_catch.
7591
7592 Thu Oct 3 11:12:33 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7593
7594 * root.h (scm_root, scm_set_root): Decouple thread support details
7595 by introducing the selector SCM_THREAD_LOCAL_DATA and the mutator
7596 SCM_SET_THREAD_LOCAL_DATA.
7597
7598 * print.c (scm_iprlist): Bugfix: Added SCM_ECONSP tests in hare
7599 and tortoise scanning loop.
7600
7601 Thu Oct 3 00:04:53 1996 Jim Blandy <jimb@totoro.cyclic.com>
7602
7603 * Makefile.in: Rebuild dependencies.
7604
7605 * libguile.h: #include "libguile/print.h" before "smob.h", since
7606 the latter uses the print_state structure.
7607
7608 * throw.c (scm_ithrow): Use the correct variable when checking to
7609 see if a given element of scm_dynwinds is a valid catch.
7610
7611 * throw.c (scm_ithrow): If scm_dynwinds has invalid list
7612 structure, abort; don't just silently ignore the garbage.
7613
7614 * _scm.h: #include "print.h" here, since it seems to be used just
7615 about everywhere.
7616 * eval.c, gdbint.c, genio.h, numbers.h, smob.h, srcprop.c,
7617 strports.c, unif.h: Don't #include "print.h".
7618
7619 Tue Oct 1 05:15:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7620
7621 * feature.h (scm_loc_features): Removed external declaration.
7622 (Bug fix suggested by Petr Adamek <adamek@mit.edu>.)
7623
7624 Tue Oct 1 00:00:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7625
7626 * feature.c (scm_init_feature): Added threads feature (needs to be
7627 initialized here, since features doesn't exist when
7628 scm_init_threads is called).
7629
7630 * libguile.h: Added #include "libguile/../threads/threads.h".
7631 (This is a kludge to get thread support working. This should be
7632 fixed.)
7633
7634 * configure.in, acconfig.h: Added flags for thread support.
7635
7636 * scmsigs.c: Define `signal' to be `pthread_signal' if using
7637 mit-pthreads.
7638
7639 * gc.c (scm_igc): Added SCM_THREAD_CRITICAL_SECTION_START and
7640 SCM_THREAD_CRITICAL_SECTION_END. Moved marking of root data to
7641 root.c:mark_root.
7642
7643 * _scm.h: Added conditional #include "threads.h"
7644
7645 * __scm.h (SCM_ASYNC_TICK): Added call to macro
7646 SCM_THREADS_SWITCHING_CODE.
7647
7648 * init.c (scm_start_stack): Call `scm_make_root' to dynamically
7649 allocate the basic dynamic root object.
7650 (scm_boot_guile): Added call to scm_init_root.
7651
7652 * root.c, root.h: Added root smob.
7653 (cwdr, scm_call_with_new_root, scm_dynamic_root, scm_app_wdr): New
7654 functions: Implements dynamic roots mostly according to spec in
7655 SCM manual. Main difference is that the second argument is a
7656 throw handler rather than an error "thunk".
7657
7658 * root.h: Added declaration of scm_init_root.
7659
7660 * root.c: Added #include "genio.h", #include "smob.h", #include
7661 "pairs.h", #include "throw.h", #include "dynwind.h", #include
7662 "eval.h"
7663 (scm_init_root): Added #include "root.x".
7664
7665 * throw.c: Added #include "stackchk.h"
7666 (scm_catch): Changed SCM_DEFER_INTS --> SCM_REDEFER_INTS and
7667 SCM_ALLOW_INTS --> SCM_REALLOW_INTS. This is so that scm_catch
7668 can be used in scm_call_with_new_root; Added reenabling of stack
7669 checking when catching a throw.
7670
7671 Mon Sep 30 21:48:11 1996 Jim Blandy <jimb@totoro.cyclic.com>
7672
7673 * list.c, list.h: Use SCM_P instead of CPP hair. Doc fixes.
7674
7675 * list.c (scm_member, scm_memv, scm_memq): Return #f if a matching
7676 element is not found, as per R4RS.
7677
7678 Sat Sep 28 18:13:01 1996 Jim Blandy <jimb@totoro.cyclic.com>
7679
7680 * list.c: Doc fixes throughout.
7681
7682 Sat Sep 28 02:07:43 1996 Gary Houston <ghouston@actrix.gen.nz>
7683
7684 * strings.c, strings.h: (scm_makfrom0str, scm_makefrom0str_opt:
7685 declare the char * to be const. Avoids a warning in rgx.c.
7686
7687 * ports.h: spelling fix.
7688
7689 * filesys.c (scm_sys_stat, scm_sys,lstat): include file name in
7690 error messages.
7691
7692 * load.c (scm_sys_try_load_path): throw an error if file not found
7693 (like it says it in NEWS).
7694
7695 Fri Sep 27 18:27:01 1996 Jim Blandy <jimb@totoro.cyclic.com>
7696
7697 * symbols.c (scm_intern_obarray_soft): Initialize the new symbol's
7698 PROPS slot to '(), not #f; it's an empty alist.
7699
7700 * throw.h, throw.c: Use SCM_P instead of #if hair.
7701
7702 Remove special support for uncaught throws; see throw.c for
7703 rationale.
7704 * throw.c (uncaught_throw): New function.
7705 (scm_ithrow): Call uncaught_throw if we don't find a throw
7706 target; don't mess with scm_bad_throw_vcell.
7707 (scm_bad_throw_vcell): Variable deleted.
7708 (scm_init_throw): Don't initialize it.
7709
7710 * throw.c (scm_ithrow): Don't let outer key matches shadow inner
7711 #t catches.
7712
7713 Wed Sep 25 04:35:50 1996 Jim Blandy <jimb@totoro.cyclic.com>
7714
7715 * numbers.c (scm_istr2int): If the number is short (as most
7716 numbers are), just call scm_small_istr2int to deal with it.
7717 (scm_small_istr2int): New function, created by un-#ifdefing the
7718 non-bignum version of scm_istr2int and renaming it.
7719
7720 Tue Sep 24 06:48:38 1996 Gary Houston <ghouston@actrix.gen.nz>
7721
7722 * load.c (scm_sys_try_load): don't check whether value returned
7723 by scm_open_file is #f, it won't be. Always return SCM_UNSPECIFIED.
7724 Change the Scheme name from %try-load to primitive-load.
7725
7726 * error.c (scm_error): convert a NULL message to SCM_BOOL_F.
7727 Can avoid passing a message, allowing it to be derived in the
7728 error handler (e.g., if we want to throw to the key both from
7729 Scheme and C).
7730
7731 Mon Sep 23 00:42:15 1996 Mikael Djurfeldt <mdj@kenneth>
7732
7733 * print.c (scm_iprin1, scm_prin1, scm_iprlist): Circular
7734 references now have a new appearance which is more compact and
7735 also gives a clue about what the target of the reference is.
7736 By setting parameters in the print state, more fancy printing can
7737 be achieved. This is used by the (not yet commited) backtrace
7738 code.
7739
7740 Sun Sep 22 17:10:06 1996 Mikael Djurfeldt <mdj@kenneth>
7741
7742 * eval.c, numbers.h, unif.h, smob.h, srcprop.c: Added #include
7743 "print.h"
7744
7745 * print.c: Added #include "struct.h". Removed function
7746 scm_prlist.
7747
7748 * print.h: Modified prototypes for scm_iprlist, scm_prin1 and
7749 scm_iprin1. Removed prototype for scm_prlist.
7750
7751 * arbiters.c (prinarb),
7752 async.c (print_async),
7753 debug.c (prindebugobj, prinmemoized),
7754 eval.c (prinprom, prinmacro),
7755 filesys.c (scm_fd_print, scm_dir_print),
7756 kw.c (print_kw),
7757 mallocs.c (prinmalloc),
7758 numbers.c, numbers.h (scm_floprint, scm_bigprint),
7759 smob.h (scm_smobfuns),
7760 srcprop.c (prinsrcprops),
7761 throw.c (prinjb),
7762 unif.c, unif.h (scm_raprin1, rapr1),
7763 variable.c (prin_var): Changed argument `int writing' to
7764 `scm_print_state *pstate'.
7765
7766 * init.c (scm_boot_guile): Moved scm_init_struct upwards so
7767 that it will be called before scm_init_print.
7768
7769 * print.c (scm_prin1): Print states are now allocated when calling
7770 scm_prin1 and then passed around to all printing functions as an
7771 argument. A cache `print_state_pool' enables reuse of print
7772 states.
7773 (scm_make_print_state): New function.
7774 (scm_iprin1): Adaption to print states.
7775 (scm_iprlist): An initial "hare and tortoise" scan brings down
7776 time complexity to O (depth * N). (Better time complexity will be
7777 achieved when the printing code is completely rewritten.)
7778
7779 Fri Sep 20 22:01:36 1996 Jim Blandy <jimb@totoro.cyclic.com>
7780
7781 * aclocal.m4 (GUILE_STRUCT_UTIMBUF): Use AC_CACHE_CHECK instead of
7782 AC_CACHE_VAL; #define UTIMBUF_NEEDS_POSIX outside AC_CACHE_VAL, so
7783 it gets done whether or not the cache variable has a value.
7784
7785 Thu Sep 19 17:06:39 1996 Jim Blandy <jimb@totoro.cyclic.com>
7786
7787 Distinguish #f and ().
7788 * __scm.h: #undef SICP.
7789 * pairs.h (SCM_EOL): Delete this definition, equating it with
7790 SCM_BOOL_F.
7791 * tags.h (SCM_EOL): Give it a new definition here; I think I found
7792 the value it used to have. Doc fixes, too.
7793
7794 Thu Sep 19 15:33:51 1996 Mikael Djurfeldt <mdj@kenneth>
7795
7796 * struct.c (scm_make_struct_layout, init_struct, scm_struct_ref,
7797 scm_struct_set_x), struct.h, gc.c (scm_gc_mark): Completed Tom
7798 Lord's implementation of structs, allowing for tail arrays as
7799 described in the manual. Also fixed some bugs. (Both the interface
7800 and the implementation should be improved.)
7801
7802 * read.c (scm_init_read): Removed #ifdef READER_EXTENSIONS
7803
7804 * print.c, print.h: Closures now print like #<procedure foo (x)>.
7805 People who whish to see the source can do `(print-enable 'source)'.
7806 Removed #ifdef DEBUG_EXTENSIONS.
7807
7808 Thu Sep 19 00:00:29 1996 Gary Houston <ghouston@actrix.gen.nz>
7809
7810 * filesys.c (scsm_sys_stat): don't SIGSEGV if argument is an
7811 integer (assuming for now accepting an integer is a good thing).
7812
7813 * error.c, fports.c: replace use of %S in lgh_error args with %s.
7814 %S will be used instead for write'ing arguments.
7815
7816 * unif.c (scm_transpose_array): change arguments in the SCM_WNA
7817 asserts. fix a few other asserts.
7818 (scm_aind, scm_enclose_array, scm_array_in_bounds_p,
7819 scm_uniform_vector_ref, scm_array_set_x,
7820 scm_dimensions_to_unform_array): change args in
7821 SCM_WNA SCM_ASSERTS and change scm_wta's to scm_wrong_num_args.
7822 strop.c (scm_substring_move_left_x, scm_substring_move_right_x,
7823 scm_substring_fill_x): likewise.
7824 gsubr.c (scm_gsubr_apply): likewise.
7825 eval.c (SCM_APPLY): likewise.
7826
7827 * eval.c (4 places): replace scm_everr with lgh_error or
7828 scm_wrong_num_args.
7829
7830 * error.c, error.h (scm_wrong_num_args, scm_wrong_type_arg,
7831 scm_memory_error): new procedures.
7832 scm_everr: deleted. can use scm_wta, dropping first two args.
7833 scm_error: convert NULL subr to SCM_BOOL_F.
7834
7835 * __scm.h: don't define SCM_STACK_OVFLOW, SCM_EXIT, SCM_ARG6, SCM_ARG7,
7836 SCM_ARGERR.
7837
7838 * stackchk.c (scm_report_stack_overflow): use lgh_error instead
7839 of scm_wta.
7840
7841 * error.c, error.h: new error keys: scm_arg_type_key,
7842 scm_args_number_key, scm_memory_alloc_key, scm_stack_overflow_key,
7843 scm_misc_error_key.
7844 scm_wta: reimplement using lgh_error instead of scm_everr.
7845
7846 Wed Sep 18 17:13:35 1996 Mikael Djurfeldt <mdj@kenneth>
7847
7848 * gdbint.c: scm_lread now has one more argument.
7849
7850 * ports.c, ports.h: Name change: scm_\(line\|column\)_number -->
7851 scm_port_\1; Added mutator scm_set_port_filename_x (used when
7852 loading source from non-file ports, which, e. g., happens when
7853 using the Emacs interface).
7854
7855 * fports.c (scm_open_file): Don't call scm_makfrom0str on a scheme
7856 object.
7857
7858 * read.c: Added code for recording of positions of source code
7859 expressions; New functions: recsexpr, scm_lreadrecparen;
7860 _scm_make_srcprops --> scm_make_srcprops
7861 (scm_flush_ws): Removed updating of positions counters. This work
7862 is already done by scm_gen_getc
7863
7864 * read.h: Added prototype for scm_lreadrecparen
7865
7866 * print.c: Added #include "alist.h"
7867
7868 * eval.c: Added #include "hash.h"
7869
7870 * eq.c: Added #include "ramap.h"
7871
7872 * options.c: Documentation fixes.
7873
7874 * srcprop.c (scm_finish_srcprop): Bugfix: update ptr.
7875 (scm_init_srcprop): Adjusted size of initial source-whash. Name
7876 changes: tc16_srcprops --> scm_tc16_srcprops, _scm_make_srcprops
7877 --> scm_make_srcprops
7878
7879 * srcprop.h: Name changes: tc16_srcprops --> scm_tc16_srcprops,
7880 _scm_make_srcprops --> scm_make_srcprops; Remove one layer of
7881 function calls in the definition of the whash access macros.
7882
7883 Tue Sep 17 11:33:16 1996 Lee Iverson <leei@Canada.AI.SRI.COM>
7884
7885 * init.c (scm_boot_guile): Add level of indirection to
7886 scm_boot_guile_1() to ensure that stack base pointer is properly
7887 initialized. There was no guarantee that variable i was the
7888 highest/lowest variable on stack (i.e. the call frame of
7889 scm_boot_guile was not completely protected from gc).
7890
7891 Tue Sep 17 01:40:56 1996 Gary Houston <ghouston@actrix.gen.nz>
7892
7893 * ports.h (scm_port_table): put back file_name, it will be used to
7894 support debugging. Undo related changes in fports.c, ioext.c,
7895 ports.c, gc.c.
7896
7897 Sun Sep 15 03:58:29 1996 Gary Houston <ghouston@actrix.gen.nz>
7898
7899 * ports.h (scm_port_table): remove file_name member for now, it seems
7900 undesirable.
7901 * fports.c (scm_open_file): don't set file_name in PTAB.
7902 (prinfport): don't use file_name in PTAB.
7903 * ioext.c (scm_sys_duplicate_port): don't set file_name in PTAB.
7904 * ports.c (scm_add_to_port_table): don't intialize file_name.
7905 (scm_port_file_name): remove for now.
7906 * gc.c (scm_gc_mark): don't mark PTAB file_name.
7907
7908 * fports.h (scm_mkfile): prototype deleted.
7909 * fports.c (scm_mkfile): merged into scm_open_file to simplify.
7910
7911 * debug.c, unif.c: use scm_out_of_range instead of
7912 wta for range errors (ASSERT still needs work).
7913
7914 * error.c, error.h (scm_out_of_range): new procedure.
7915
7916 * error.c, error.h (scm_out_of_range_key): new key.
7917
7918 * posix.c (scm_sync): #else was missing.
7919
7920 * error.c, error.h: append _key to names scm_num_overflow and
7921 scm_system_error.
7922
7923 * __scm.h (SCM_SYSMISSING, SCM_NUM_OVERFLOW): use SCM_BOOL_F instead
7924 of consing an empty list.
7925 (SCM_SYSERROR etc.): move into error.c, make them procedures instead
7926 of macros, saves code and string space.
7927 error.c, fports.c, numbers.c, posix.c, ioext.c, filesys.c, socket.c,
7928 fdsocket.c, simpos.c: change names of SCM_SYSERROR etc., to
7929 lower case. Rename scm_syserror_m to scm_syserror_msg.
7930 error.h: prototypes for new procedures.
7931
7932 Sat Sep 14 03:35:41 1996 Gary Houston <ghouston@actrix.gen.nz>
7933
7934 * numbers.c: use SCM_NUM_OVERFLOW instead of scm_wta or ASSERT.
7935
7936 * error.c, error.h: setup scm_num_overflow key.
7937
7938 * __scm.h: SCM_NUM_OVERFLOW: macro for reporting numerical overflow.
7939 Remove definition of SCM_OVSCM_FLOW.
7940
7941 * fports.c (scm_open_file): use SCM_SYSERROR_M.
7942
7943 * __scm.h: SCM_SYSERROR_M: new macro for system errors with an
7944 explicit message and args.
7945
7946 * error.c, error.h, __scm.h: change system_error_sym to
7947 scm_system_error.
7948
7949 * error.c (system_error_sym): remove leading %% from the Scheme name
7950 "%%system-error".
7951
7952 * __scm.h (SCM_SYSMISSING): Redefine using lgh_error.
7953
7954 Fri Sep 13 12:58:08 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7955
7956 * __scm.h, chars.c, debug.c, eval.c, eval.h, extchrs.c, extchrs.h,
7957 fdsocket.c, feature.c, mbstrings.c, mbstrings.h, numbers.c,
7958 numbers.h, print.c, scmhob.h, simpos.h, symbols.c, symbols.h,
7959 tags.h, throw.c, variable.h: Name cleanup. Lots of xxxSCM_yyy
7960 renamed. (These were introduced by unsupervised name
7961 substitution.)
7962
7963 Fri Sep 13 01:19:08 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7964
7965 * print.c: Added code for detection of circular references during
7966 printing. (init_ref_stack, grow_ref_stack): New functions. Added
7967 a hook for printing of closures (accessible via print options).
7968 This leads to a split of calls to scm_iprin1 into two classes:
7969 elementary print operations (e. g. the code which prints a smob)
7970 still use scm_iprin1 while top level calls (like scm_display) use
7971 scm_prin1. scm_prin1 begins by clearing the data structure used
7972 to record reference information.
7973
7974 * print.h: Added declarations of scm_prin1 and scm_prlist.
7975
7976 * strports.c (scm_strprint_obj): scm_iprin1 --> scm_prin1
7977
7978 * gscm.c (gscm_portprint_obj): scm_iprin1 --> scm_prin1
7979
7980 * gscm.h (gscm_print_obj): scm_iprin1 --> scm_prin1
7981
7982 * error.c (err_head): scm_iprin1 --> scm_prin1
7983
7984 * debug.c: Adjusted header comment.
7985
7986 * tags.h: Typo.
7987
7988 Wed Sep 11 17:55:59 1996 Jim Blandy <jimb@totoro.cyclic.com>
7989
7990 * strerror.c: Doc fix.
7991
7992 Thu Sep 12 00:00:32 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
7993
7994 * gdbint.c (gdb_read): Now possible to run during GC.
7995 (unmark_port, remark_port): New functions.
7996
7997 * symbols.h (SCM_SETLENGTH): Use SCM_SETCAR.
7998
7999 * read.c (scm_grow_tok_buf): Use scm_vector_set_length_x instead
8000 of allocating a new string object. Also, increase size by
8001 the factor 2 instead of 1.5.
8002
8003 Wed Sep 11 15:10:38 1996 Petr Adamek <jimb@floss.cyclic.com>
8004
8005 * __scm.h (SCM_P): Corrected to run under traditional C.
8006
8007 * _scm.h (SCM_PROC): Extraneous semicolon (outside functions)
8008 removed.
8009
8010 * async.c: Calls to scm_sysintern corrected.
8011
8012 * async.h (scm_async_clock): Redundant declaration removed.
8013
8014 * continuations.c (scm_dynthrow): Redundant declaration removed.
8015
8016 * debug.c (scm_single_step, scm_memoized, scm_lookup_soft):
8017 Definition typos corrected.
8018
8019 * debug.h: Missing declarations of functions in debug.c added
8020 (lots).
8021
8022 * eval.h (scm_eval_args, scm_deval_args, scm_m_undefine):
8023 Missing declarations to functions in eval.c added.
8024
8025 * filesys.c: Possibly uninitialized variable rv.
8026
8027 * gc.h (scm_object_addr, scm_unhash_name): Missing
8028 declarations of functions defined in gc.c added.
8029
8030 * genio.c: Possible typos str_data -> wstr_data. ???
8031
8032 * genio.c: Possibly unintended shadowing of local variable
8033 `int c' (gotos out of scope of inner `c'). ???
8034
8035 * init.c: Uninitialized `SCM last' may be used.
8036
8037 * ioext.h: (scm_sys_isatty_p): Typo.
8038
8039 * list.h (scm_list_head): Missing prototype for function in
8040 list.c added.
8041
8042 * numbers.c (scm_two_doubles): Changed from extern to static
8043 (is used only within numbers.c).
8044
8045 * numbers.h: Repeated declarations removed.
8046
8047 * ports.h (scm_close_all_ports_except): Declaration for the
8048 function defined in ports.c added.
8049
8050 * posix.h: Missing declarations added.
8051
8052 * procs.h (scm_make_subr_opt): Missing declaration added.
8053
8054 * socket.h (scm_sys_gethost): Missing declaration added.
8055
8056 * socket.h: Redundant declarations removed (they are in fdsocket.h).
8057
8058 * srcprop.h (scm_set_source_property_x, scm_finish_srcprop):
8059 Missing declarations added.
8060
8061 * stime.h (scm_get_internal_real_time): Repeated declarations removed.
8062
8063 * struct.c: Uninitialized variable `SCM answer' may be used.
8064
8065 * unif.c (l2ra): Declaration prototype.
8066
8067 * unif.c (scm_array_equal_p): Dummy definition removed (it is
8068 defined in ramap.c).
8069
8070 * unif.h (scm_raprin1, scm_istr2bve, scm_array_equal_p):
8071 Redundant declarations removed (they are in ramap.h).
8072
8073 * variable.h (scm_make_udvariable,
8074 scm_make_undefined_variable): Declaration corrected to
8075 correspond variable.c.
8076
8077 * vectors.h (scm_vector_move_left_x, scm_vector_move_right_x):
8078 Missing declarations added.
8079
8080 Wed Sep 11 14:38:50 1996 Jim Blandy <jimb@floss.cyclic.com>
8081
8082 * Makefile.in (distclean): Don't forget to delete fd.h.
8083
8084 Tue Sep 10 14:01:46 1996 Jim Blandy <jimb@floss.cyclic.com>
8085
8086 * fd.h.in, tags.h: Trivial cleanups.
8087
8088 * marksweep.c, marksweep.h: Deleted; marksweep.c was empty, and
8089 marksweep.h just declared functions from gc.c.
8090 * gc.h, libguile.h: Don't #include "marksweep.h".
8091 * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit
8092 marksweep.o, marksweep.h, marksweep.c, and marksweep.x. Other
8093 dependencies updated.
8094
8095 * libguile.h: Don't #include "files.h"; it's been deleted.
8096
8097 * files.c (scm_sys_delete_file): Moved to filesys.c.
8098 File is now empty; deleted.
8099 * files.h: Deleted.
8100 * filesys.c: scm_sys_delete_file is now here. Remove
8101 #if's; they seem to rely on remnants of an old portability
8102 regimen. If the problems come up again, solve them properly,
8103 using autoconf. Specifically: Don't test M_SYSV, and #define
8104 remove to be unlink if it's #defined; don't use remove just
8105 because HAVE_STDC_HEADERS is #defined.
8106 * filesys.h: Add declarations for scm_sys_delete_file.
8107 * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit
8108 files.o, files.h, files.c, and files.x.
8109 * init.c: Don't #include "files.h", and don't call scm_init_files.
8110
8111 Use SCM_P instead of PROTO; the latter intrudes on the user's
8112 namespace.
8113 * params.h: Deleted; definition of SCM_P moved to...
8114 * __scm.h: ... here, where it replaces PROTO macro.
8115 * libguile.h, smob.h: Don't #include "params.h".
8116 * continuations.c, error.h, feature.h, gc.c, gc.h, init.h, load.h,
8117 smob.h: Fix prototypes accordingly.
8118 * Makefile.in: Update dependencies.
8119 (inner_h_files): Remove params.h.
8120
8121 * gc.c: #include "gc.h"; every module should include its header,
8122 to let the compiler cross-check the declarations against the
8123 definitions.
8124
8125 * eq.h, files.h, hashtab.h, load.h, mallocs.h, scmsigs.h,
8126 simpos.h: #include "libguile/__scm.h".
8127
8128 Mon Sep 9 20:00:15 1996 Jim Blandy <jimb@floss.cyclic.com>
8129
8130 * init.c: Don't forget to #include smob.h and init.h.
8131 * Makefile.in: Dependencies updated.
8132
8133 * smob.h: Use PROTO instead of #if __STDC__.
8134
8135 * continuations.c (scm_dynthrow): Use PROTO, not SCM_P.
8136
8137 * __scm.h: Doc fixes.
8138
8139 * __scm.h, libguile.h: Use "quotes" in the #includes, not
8140 <angles>; this allows `make depends' to work properly.
8141
8142 * libguile.h: #include smob.h and pairs.h before the others; they
8143 define typedefs used by other headers.
8144
8145 C files should #include only the header files they need, not
8146 libguile.h (which #includes all the header files); the pointless
8147 recompilation was wasting my time.
8148 * Makefile.in (all .o dependency lists): Regenerated.
8149 * libguile.h: Don't try to get a definition for size_t here...
8150 * __scm.h: Do it here.
8151 * _scm.h: Since this is the internal libguile header, put things
8152 here that all (or a majority) of the libguile files will want.
8153 Don't #include <libguile.h> here; that generates dependencies on
8154 way too much. Instead, get "__scm.h", "error.h", "pairs.h",
8155 "list.h", "gc.h", "gsubr.h", "procs.h", "numbers.h", "symbols.h",
8156 "boolean.h", "strings.h", "vectors.h", "root.h", "ports.h", and
8157 "async.h".
8158 * alist.c: Get "eq.h", "list.h", "alist.h".
8159 * append.c: Get "append.h", "list.h".
8160 * arbiters.c: Get "arbiters.h", "smob.h".
8161 * async.c: Get "async.h", "smob.h", "throw.h", "eval.h".
8162 * boolean.c: Get "boolean.h".
8163 * chars.c: Get "chars.h".
8164 * continuations.c: Get "continuations.h", "dynwind.h", "debug.h",
8165 "stackchk.h".
8166 * debug.c: Get "debug.h", "feature.h", "read.h", "strports.h",
8167 "continuations.h", "alist.h", "srcprop.h", "procprop.h", "smob.h",
8168 "genio.h", "throw.h", "eval.h".
8169 * dynwind.c: Get "dynwind.h", "alist.h", "eval.h".
8170 * eq.c: Get "eq.h", "unif.h", "smob.h", "strorder.h",
8171 "stackchk.h".
8172 * error.c: Get "error.h", "throw.h", "genio.h", "pairs.h".
8173 * eval.c: Get "eval.h", "stackchk.h", "srcprop.h", "debug.h",
8174 "hashtab.h", "procprop.h", "markers.h", "smob.h", "throw.h",
8175 "continuations.h", "eq.h", "sequences.h", "alist.h", "append.h",
8176 "debug.h".
8177 * fdsocket.c: Get "fdsocket.h", "unif.h", "filesys.h".
8178 * feature.c: Get "feature.h".
8179 * files.c: Get "files.h".
8180 * filesys.c: Get "filesys.h", "smob.h", "genio.h".
8181 * fports.c: Get "fports.h", "markers.h".
8182 * gc.c: Get "async.h", "unif.h", "smob.h", "weaks.h",
8183 "genio.h", "struct.h", "stackchk.h", "stime.h".
8184 * gdbint.c: Get "gdbint.h", "chars.h", "eval.h", "print.h",
8185 "read.h", "strports.h", "tag.h".
8186 * genio.c: Get "genio.h", "chars.h".
8187 * gsubr.c: Get "gsubr.h", "genio.h".
8188 * hash.c: Get "hash.h", "chars.h".
8189 * hashtab.c: Get "hashtab.h", "eval.h", "hash.h", "alist.h".
8190 * init.c: Get everyone who has an scm_init_mumble function:
8191 "weaks.h", "vports.h", "version.h", "vectors.h", "variable.h",
8192 "unif.h", "throw.h", "tag.h", "symbols.h", "struct.h",
8193 "strports.h", "strorder.h", "strop.h", "strings.h", "stime.h",
8194 "stackchk.h", "srcprop.h", "socket.h", "simpos.h", "sequences.h",
8195 "scmsigs.h", "read.h", "ramap.h", "procs.h", "procprop.h",
8196 "print.h", "posix.h", "ports.h", "pairs.h", "options.h",
8197 "objprop.h", "numbers.h", "mbstrings.h", "mallocs.h", "load.h",
8198 "list.h", "kw.h", "ioext.h", "hashtab.h", "hash.h", "gsubr.h",
8199 "gdbint.h", "gc.h", "fports.h", "filesys.h", "files.h",
8200 "feature.h", "fdsocket.h", "eval.h", "error.h", "eq.h",
8201 "dynwind.h", "debug.h", "continuations.h", "chars.h", "boolean.h",
8202 "async.h", "arbiters.h", "append.h", "alist.h".
8203 * ioext.c: Get "ioext.h", "fports.h".
8204 * kw.c: Get "kw.h", "smob.h", "mbstrings.h", "genio.h".
8205 * list.c: Get "list.h", "eq.h".
8206 * load.c: Get "load.h", "eval.h", "read.h", "fports.h".
8207 * mallocs.c: Get "smob.h", "genio.h".
8208 * markers.c: Get "markers.h".
8209 * mbstrings.c: Get "mbstrings.h", "read.h", "genio.h", "unif.h",
8210 "chars.h".
8211 * numbers.c: Get "unif.h", "genio.h".
8212 * objprop.c: Get "objprop.h", "weaks.h", "alist.h", "hashtab.h".
8213 * options.c: Get "options.h".
8214 * ports.c: Get "ports.h", "vports.h", "strports.h", "fports.h",
8215 "markers.h", "chars.h", "genio.h".
8216 * posix.c: Get "posix.h", "sequences.h", "feature.h", "unif.h",
8217 "read.h", "scmsigs.h", "genio.h", "fports.h".
8218 * print.c: Get "print.h", "unif.h", "weaks.h", "read.h",
8219 "procprop.h", "eval.h", "smob.h", "mbstrings.h", "genio.h",
8220 "chars.h".
8221 * procprop.c: Get "procprop.h", "eval.h", "alist.h".
8222 * procs.c: Get "procs.h".
8223 * ramap.c: Get "ramap.h", "feature.h", "eval.h", "eq.h",
8224 "chars.h", "smob.h", "unif.h".
8225 * read.c: Get "alist.h", "kw.h", "mbstrings.h", "unif.h",
8226 "eval.h", "genio.h", "chars.h".
8227 * root.c: Get "root.h", "stackchk.h".
8228 * scmsigs.c: Get "scmsigs.h".
8229 * sequences.c: Get "sequences.h".
8230 * simpos.c: Get "simpos.h", "scmsigs.h".
8231 * smob.c: Get "smob.h".
8232 * socket.c: Get "socket.h", "feature.h".
8233 * srcprop.c: Get "srcprop.h", "weaks.h", "hashtab.h", "debug.h",
8234 "alist.h", "smob.h".
8235 * stackchk.c: Get "stackchk.h", "genio.h".
8236 * stime.c: Get "stime.h"."libguile/continuations.h".
8237 * strings.c: Get "strings.h", "chars.h".
8238 * strop.c: Get "strop.h", "chars.h".
8239 * strorder.c: Get "strorder.h", "chars.h".
8240 * strports.c: Get "strports.h", "print.h", "eval.h", "unif.h".
8241 * struct.c: Get "struct.h", "chars.h".
8242 * symbols.c: Get "symbols.h", "mbstrings.h", "alist.h",
8243 "variable.h", "eval.h", "chars.h".
8244 * tag.c: Get "tag.h", "struct.h", "chars.h".
8245 * throw.c: Get "throw.h", "continuations.h", "debug.h",
8246 "dynwind.h", "eval.h", "alist.h", "smob.h", "genio.h".
8247 * unif.c: Get "unif.h", "feature.h", "strop.h", "sequences.h",
8248 "smob.h", "genio.h", "eval.h", "chars.h".
8249 * variable.c: Get "variable.h", "smob.h", "genio.h".
8250 * vectors.c: Get "vectors.h", "eq.h".
8251 * version.c: Get "version.h".
8252 * vports.c: Get "vports.h", "fports.h", "chars.h", "eval.h".
8253 * weaks.c: Get "weaks.h".
8254
8255 * stackchk.h: #include "libguile/debug.h",
8256
8257 * print.h, read.h: #include "options.h", since everyone who uses
8258 either of these files will need that.
8259
8260 * smob.h: #include "ports.h", "genio.h", and "print.h", since
8261 anyone who uses this file will need them to define the smob
8262 printing functions. Also, get markers.h, since people will need
8263 to #define the mark functions.
8264
8265 * smob.h (scm_ptobfuns, SCM_PTOBNUM): Definitions moved...
8266 * ports.h: ... to here.
8267
8268 * ports.h (scm_port_table_size): Explicitly give type as 'int';
8269 don't rely on archaic C default type rules.
8270
8271 * fports.h: #include "libguile/ports.h", since you need that in
8272 order to parse this.
8273
8274 * genio.h: #include "libguile/print.h", because you need that to
8275 parse this; don't bother #including "ports.h", since print.h gets
8276 that.
8277
8278 * error.h: Don't #include "pairs.h"; _scm.h will do that now.
8279
8280 * eval.h (scm_top_level_lookup_thunk_var): Remove declaration for
8281 this; it's now a reference to an element of *scm_root.
8282
8283 * debug.h: Don't #include "options.h"; the compiler won't be able
8284 to find that once the headers are installed; instead, #include
8285 "libguile/options.h".
8286 * gc.h: Same, with marksweep.h.
8287 * mbstrings.h: Same, with symbols.h.
8288 * scmhob.h: Same, with _scm.h.
8289 * smob.h: Same, with params.h.
8290
8291 * Makefile.in (depends): Don't nuke scmconfig.h and the generated
8292 C files; there's no need for this, and it forces recompilations
8293 unnecessarily.
8294
8295 Sat Sep 7 06:57:23 1996 Gary Houston <ghouston@actrix.gen.nz>
8296
8297 * error.c (scm_error): declare scm_error_callback.
8298
8299 * error.h: prototype for scm_error_callback.
8300
8301 * __scm.h: define lgh_error.
8302 (SCM_SYSERROR): redefine using lgh_error.
8303
8304 Thu Sep 5 22:40:06 1996 Gary Houston <ghouston@actrix.gen.nz>
8305
8306 * error.c (scm_error): new procedure.
8307
8308 * error.h: prototype for scm_error.
8309
8310 * Makefile.in (install): install scmconfig.h from the current
8311 directory, not $(srcdir).
8312
8313 Thu Sep 5 11:38:07 1996 Jim Blandy <jimb@floss.cyclic.com>
8314
8315 * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h,
8316 continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h,
8317 feature.h, filesys.h, fports.h, gc.h, gdbint.h, genio.h, gsubr.h,
8318 hash.h, init.h, ioext.h, kw.h, list.h, markers.h, marksweep.h,
8319 mbstrings.h, numbers.h, objprop.h, options.h, pairs.h, ports.h,
8320 posix.h, print.h, procprop.h, procs.h, ramap.h, read.h, root.h,
8321 sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h,
8322 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
8323 tag.h, throw.h, unif.h, variable.h, vectors.h, version.h,
8324 vports.h, weaks.h: #include "libguile/__scm.h", not
8325 <libguile/__scm.h>. This allows 'gcc -MM' to determine which
8326 dependencies are within libguile properly.
8327
8328 Thu Sep 5 11:38:07 1996 Jim Blandy <jimb@floss.cyclic.com>
8329
8330 * Makefile.in (.c.x): Simplify; there's no need to run this rule
8331 when scmconfig.h doesn't exist.
8332
8333 * load.c (scm_sys_try_load): Correct spelling.
8334
8335 * feature.c (scm_loc_features): Make this static.
8336
8337 * Makefile.in (libpath.h): Omit trailing slash from path. We
8338 shouldn't require it of users, so why put it here?
8339
8340 Move code to initialize and search %load-path from ice-9 to C
8341 code, so we can use the load-path to find the ice-9 boot code;
8342 this makes it easier to run Guile without installing it. See
8343 corresponding changes in guile/Makefile.in.
8344 * feature.c: Move stuff concerned with the load path to load.c.
8345 (scm_compiled_library_path): Deleted.
8346 Don't #include libpath.h here.
8347 * feature.h: Don't mention scm_compiled_library_path.
8348 * load.c: #include "libpath.h" here, as well as <sys/types.h>,
8349 <sys/stat.h>, and <unistd.h> (if present).
8350 (R_OK): #define if the system hasn't deigned to.
8351 (scm_loc_load_path): New variable.
8352 (scm_init_load_path, scm_sys_search_load_path,
8353 scm_sys_try_load_path): New functions.
8354 (scm_init_load): Initialize scm_loc_load_path to point to the
8355 value cell of the Scheme %load-path variable.
8356 * load.h: Add declarations for scm_sys_search_load_path,
8357 scm_sys_try_load_path.
8358 * init.c: Call scm_init_load_path.
8359 * Makefile.in (feature.o, load.o): Dependencies updated.
8360
8361 * load.c, load.h: Rewrite using PROTO macro.
8362
8363 Thu Sep 5 01:54:33 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
8364
8365 * gc.c (scm_cellp): New function: C predicate to determine if an
8366 SCM value can be regarded as a pointer to a cell on the heap.
8367
8368 * gc.h: Added declaration of scm_cellp.
8369
8370 * gdb_interface.h: New file: The GDB interface header from the GDB
8371 distribution.
8372
8373 * gdbint.c: New file: GDB interface.
8374
8375 * gdbint.h: New file: GDB interface.
8376
8377 * libguile.h: Added #include <libguile/gdbint.h>.
8378
8379 * init.c (scm_boot_guile): Added scm_init_gdbint.
8380
8381 * Makefile.in: Added gdb_interface.h, gdbint.[hc].
8382 Added -I.. to INCLUDE_CFLAGS (otherwise the include files won't be
8383 found if object files and source are kept separate).
8384
8385 Wed Sep 4 14:35:02 1996 Jim Blandy <jimb@floss.cyclic.com>
8386
8387 * feature.h, feature.c: Use PROTO macro, instead of #if __STDC__.
8388
8389 Wed Sep 4 01:30:47 1996 Jim Blandy <jimb@totoro.cyclic.com>
8390
8391 * configure.in: Don't substitute the values of TCL_SRC_DIR and
8392 TK_SRC_DIR; they're not relevant any more.
8393
8394 * Makefile.in (CC): Don't list -Wall here; it's a GCC-specific flag.
8395 * configure.in: Instead, put it in CFLAGS here, iff we're using GCC.
8396
8397 Wed Sep 4 00:55:49 1996 Jim Blandy <jimb@floss.cyclic.com>
8398
8399 * PLUGIN/guile.config (xtra_cflags): Include .. in the header
8400 search path, so we can find the <libguile/MUMBLE.h> headers.
8401
8402 * Makefile.in (ancillary): List aclocal.m4, for 'make dist'.
8403
8404 * Makefile.in (ALL_CFLAGS): Don't mention CFLAGS here; it's
8405 implicit in the .c.o rule.
8406 (.c.x): Don't mention ALL_CFLAGS here; its value is included in
8407 $(CC) already.
8408
8409 Put the library path in a header file, instead of passing it on
8410 the command line in every compilation.
8411 * Makefile.in (libpath.h): New target.
8412 (feature.o): Depend on libpath.h.
8413 (clean): Delete libpath.h.
8414 (ALL_CFLAGS): Don't use -DLIBRARY_PATH here. Instead ...
8415 * feature.c: ... #include "libpath.h" here.
8416 * .cvsignore: Ignore libpath.h.
8417
8418 Don't install the unwashed masses of Guile header files in the
8419 main #include path; put most of them in a subdirectory called
8420 'libguile'. This avoids naming conflicts between Guile header
8421 files and system header files (of which there were a few).
8422 * Makefile.in (pkgincludedir): Deleted.
8423 (innerincludedir): New variable; this and $(includedir) are enough.
8424 (INCLUDE_CFLAGS): Search for headers in "-I$(srcdir)/..".
8425 (installed_h_files): Divide this up. Now this variable lists
8426 those header files which should go into $(includedir) (i.e. appear
8427 directly in the #include path), and ...
8428 (inner_h_files): ... this new variable says which files appear in
8429 a subdirectory, and are referred to as <libguile/mumble.h>.
8430 (h_files): List them both.
8431 (install): Create innerincludedir, not pkgincludedir. Put
8432 the installed_h_files and inner_h_files in their proper places.
8433 (uninstall): Corresponding changes.
8434 * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h,
8435 continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h,
8436 feature.h, fports.h, gc.h, genio.h, gsubr.h, hash.h, init.h,
8437 ioext.h, kw.h, libguile.h, list.h, markers.h, marksweep.h,
8438 mbstrings.h, numbers.h, options.h, pairs.h, ports.h, posix.h,
8439 print.h, procprop.h, procs.h, ramap.h, read.h, root.h,
8440 sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h,
8441 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
8442 tag.h, throw.h, unif.h, variable.h, vectors.h, version.h,
8443 vports.h, weaks.h: Find __scm.h in its new location.
8444 * __scm.h: Find scmconfig.h and tags.h in their new locations
8445 (they're both "inner" files).
8446
8447 Tue Sep 3 20:27:35 1996 Jim Blandy <jimb@floss.cyclic.com>
8448
8449 * Makefile.in (.c.x): Remove duplicate use of $(ALL_CFLAGS).
8450
8451 Tue Sep 3 19:53:00 1996 Jim Blandy <jimb@totoro.cyclic.com>
8452
8453 * posix.c: Doc fixes.
8454
8455 Mon Sep 2 15:22:40 1996 Jim Blandy <jimb@totoro.cyclic.com>
8456
8457 * socket.c: Don't include a prototype for inet_aton; just use a
8458 K&R style declaration, to avoid warnings but minimize the chance
8459 of conflicts with the system.
8460
8461 On NextStep, <utime.h> doesn't define struct utime, unless we
8462 #define _POSIX_SOURCE before #including it.
8463 * aclocal.m4 (GUILE_STRUCT_UTIMBUF): New test.
8464 * acconfig.h: New comment text for above CPP symbol.
8465 * configure.in: Call it.
8466 * posix.c: #define _POSIX_SOURCE if it seems necessary.
8467
8468 * configure.in (AC_CHECK_HEADERS): Include sys/utime.h and utime.h
8469 in the list.
8470 * posix.c: Check HAVE_SYS_UTIME_H and HAVE_UTIME_H, instead of
8471 testing for __EMX__.
8472
8473 * posix.c: #include <libc.h>, if it exists.
8474
8475 * posix.c: Cast the return result to GETGROUPS_T, not gid_t; we
8476 don't even know if the latter exists.
8477
8478 * posix.c (s_sys_setpgid, s_sys_setsid, s_sys_ctermid,
8479 s_sys_tcgetpgrp, s_sys_tcsetpgrp): Renamed from s_setpgid,
8480 s_setsid, s_ctermid, s_tcgetpgrp, s_tcsetpgrp, for consistency.
8481
8482 * posix.c (R_OK, W_OK, X_OK, F_OK): #define these if the system's
8483 header files don't.
8484 (scm_init_posix): Use them when initializing the Scheme constants
8485 of the same name.
8486
8487 Fri Aug 30 16:01:30 1996 Jim Blandy <jimb@floss.cyclic.com>
8488
8489 * Makefile.in (libdir, includedir, bindir): Use the
8490 autoconf-supplied values, instead of deriving them ourselves.
8491 (pkgincludedir, datadir, pkgdatadir): New variables.
8492 (install, uninstall): Put the header files in a special
8493 subdirectory, not in the main search path.
8494
8495 * Makefile.in (ALL_CFLAGS): Provide the proper value for
8496 LIBRARY_PATH --- use $(pkgdatadir) instead of $(libdir).
8497
8498 * Makefile.in (IMPLPATH): Deleted; never used.
8499
8500 * Makefile.in (TCL_SRC_DIR, TK_SRC_DIR): Deleted; we don't depend
8501 on the Tcl/Tk source any more.
8502 (INCLUDE_CFLAGS): Remove references to the above.
8503
8504 * Makefile.in (version.o): Corrected dependencies.
8505
8506 Thu Aug 29 23:06:19 1996 Thomas Morgan <tmorgan@gnu.ai.mit.edu>
8507
8508 * libguile.h: #include "version.h"
8509
8510 * init.c (scm_boot_guile): Call scm_init_version.
8511 * gscm.c (gscm_run_scm): Call scm_init_version.
8512
8513 * configure.in (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION,
8514 GUILE_VERSION): AC_DEFINE these.
8515 (acconfig.h): #undef the above symbols.
8516
8517 * Makefile.in (libobjs): Add version.o.
8518 (installed_h_files): Add version.h.
8519 (c_files): Add version.c.
8520 (gen_c_files): Add version.x.
8521 (version.o): New rule.
8522 (alist.o, append.o, appinit.o, arbiters.o, async.o, boolean.o,
8523 chars.o, continuations.o, dynwind.o, eq.o, error.o, eval.o,
8524 fdsocket.o, feature.o, files.o, filesys.o, fports.o, gc.o,
8525 genio.o, gsubr.o, hash.o, hashtab.o, init.o, kw.o, list.o, load.o,
8526 mallocs.o, markers.o, marksweep.o, mbstrings.o, numbers.o,
8527 objprop.o, pairs.o, ports.o, posix.o, print.o, procprop.o,
8528 procs.o, ramap.o, read.o, root.o, scmsigs.o, sequences.o,
8529 simpos.o, smob.o, socket.o, stackchk.o, stime.o, strings.o,
8530 strop.o, strorder.o, strports.o, struct.o, symbols.o, tag.o,
8531 throw.o, unif.o, variable.o, vectors.o, version.o, vports.o,
8532 weaks.o): Add version.h to dependency lists.
8533 (markers.o): Remove duplicate rule.
8534
8535 * version.h: New file.
8536
8537 * version.c: New file.
8538
8539 Thu Aug 29 15:21:39 1996 Jim Blandy <jimb@totoro.cyclic.com>
8540
8541 * symbols.c (scm_strhash): scm_downcase is now a function, not an
8542 array; use it appropriately. Since GCC is quite happy to
8543 subscript functions, it never warned us about this; we should use
8544 -Wpointer-arith in the future. I guess we never tested
8545 case-insensitivity.
8546
8547 Wed Aug 28 18:52:22 1996 Jim Blandy <jimb@totoro.cyclic.com>
8548
8549 * socket.c: Doc and copyright fixes.
8550
8551 Sat Aug 24 05:29:19 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
8552
8553 * debug.c: Fixed and improved gdb support.
8554
8555 Fri Aug 23 18:00:16 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
8556
8557 * socket.c: Added declaration of inet_aton to avoid compiler
8558 warning. (Hope this solution is correct.)
8559
8560 * stime.c: Added declaration of ftime. (This is missing in
8561 Solaris 2 headers.)
8562
8563 Fri Aug 23 02:03:32 1996 Gary Houston <ghouston@actrix.gen.nz>
8564
8565 * configure, scmconfig.h.in: Updated, using autoconf and autoheader.
8566
8567 * Makefile.in (c_files): add strerror.c.
8568
8569 * strerror.c: new file from Emacs' sysdep.c.
8570 maybe configure should also check for sys_errlist.
8571
8572 * configure.in (AC_REPLACE_FUNCS): add strerror.
8573
8574 Fri Aug 23 03:02:46 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
8575
8576 * debug.c (scm_init_debug): Added initialization for
8577 scm_evaluator_traps.
8578
8579 * debug.h, debug.c: Various name changes.
8580 (Mostly prefixing with SCM_.) Renamed "debug-options" -->
8581 "debug-options-interface". See commentary in options.c.
8582
8583 * options.h, options.c: Options now have documentation strings.
8584 Also added a long explanatory commentary.
8585
8586 * eval.c, print.h, print.c, read.h, read.c: Modifications to
8587 run-time options.
8588
8589 * gscm.c, init.c, root.c, throw.c: Bug fixes:
8590 last_debug_info_frame is now updated in all cases.
8591
8592 * __scm.h, stackchk.h, stackchk.c: Guile now performs stack
8593 checking.
8594
8595 Thu Aug 22 17:34:17 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se>
8596
8597 * __scm.h: SCM_STACK_LIMIT removed (now a run-time option).
8598 Added option STACK_CHECKING.
8599
8600 Tue Aug 20 18:48:40 1996 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8601
8602 * Makefile.in: Added {debug,options,srcprop}.{h,c}
8603
8604 * __scm.h: Removed symbols for debugging support.
8605
8606 * acconfig.h: Added symbols for debugging support.
8607
8608 * configure.in: Added user option for debugging support.
8609 --enable-debug will include the debugging code into libguile.a.
8610
8611 * continuations.c (scm_make_cont): Enlarged the #if 0 around
8612 scm_relocate_chunk_to_heap.
8613
8614 * debug.c: New file: low-level debugging support. It also
8615 includes support for debugging with gdb. (The extensions to gdb
8616 are written by Per Bothner at Cygnus.)
8617
8618 * debug.h: New file: low-level debugging support.
8619
8620 * eval.c: scm_m_set and SCM_IM_SET no longer supports multiple
8621 argument pairs. Extensive modifications to the debugging
8622 evaluator. Added "SECTION:" commentaries to clarify what happens
8623 when, during double compilation. Renamed EVALIMP --> EVALIM.
8624 Renamed EVAL --> XEVAL. Removed function evalcar. Defined
8625 evalcar to scm_eval_car. Added explanation of "EVAL" symbols to
8626 the beginning of the file. New procedure: scm_unmemocopy.
8627 Added some global state variables needed by the debugging
8628 evaluator: scm_ceval_ptr, last_debug_info_frame, debug_mode,
8629 check_entry, check_apply, check_exit, debug_options and
8630 evaluator_traps. New acro: undefine.
8631
8632 * eval.h: Renamed EVAL --> XEVAL.
8633
8634 * gc.c (scm_init_storage): Renamed scm_make_weak_hash_table
8635 --> scm_make_weak_key_hash_table.
8636
8637 * init.c (scm_restart_stack, scm_boot_guile): Added initialization
8638 of SCM_DFRAME. Added calls to scm_init_{debug,options,srcprop}.
8639
8640 * libguile.h: Conditionally include debug.h
8641
8642 * objprop.c (scm_object_properties, scm_set_object_properties_x):
8643 scm_object_properties shouldn't return handle. `handle' now gets
8644 initialized in scm_set_object_properties_x. scm_object_properties
8645 doesn't any longer create an entry in scm_object_whash.
8646
8647 * options.c: New file: handling of run time options.
8648
8649 * options.h: New file: handling of run time options.
8650
8651 * posix.c (scm_getpgrp): Cast pointer to getpgrp.
8652
8653 * print.c: New procedure: scm_print_options
8654
8655 * print.h: Defines for print options.
8656
8657 * read.c: New procedure: scm_read_options
8658
8659 * read.h: Defines for reader options.
8660
8661 * root.h: Added scm_source_whash among scm_sys_protects.
8662
8663 * srcprop.c: New file: source properties.
8664
8665 * srcprop.h: New file: source properties.
8666
8667 * throw.c (jbsmob): Jump buffers are now correctly allocated.
8668 (Bug found by A. Green.)
8669
8670 * weak.c: Renamed scm_weak_hash_table --> scm_weak_key_hash_table.
8671
8672 * weak.h: Renamed scm_weak_hash_table --> scm_weak_key_hash_table.
8673
8674 Thu Aug 15 02:05:14 1996 Jim Blandy <jimb@totoro.cyclic.com>
8675
8676 * libguile.h: #include "objprop.h"; I guess this was forgotten.
8677
8678 * init.c (scm_boot_guile): Don't call scm_init_rgx; it's a plugin,
8679 and should be called by the final client.
8680
8681 Wed Aug 14 21:41:37 1996 Jim Blandy <jimb@totoro.cyclic.com>
8682
8683 * gc.h: Use the PROTO macro when declaring functions.
8684 * gc.c: Use the PROTO macro when declaring static functions.
8685 Remove the CPP hair around function definitions.
8686
8687 * gc.c (scm_init_storage): Initialize scm_asyncs.
8688
8689 * libguile.h: #include "__scm.h" before testing the STDC_HEADERS
8690 preprocessor symbol; "__scm.h" is where it might get #defined.
8691 * __scm.h: Similar: #include <scmconfig.h> before testing
8692 HAVE_LIMITS_H.
8693
8694 * __scm.h: It's HAVE_LIMITS_H, not HAVE_LIMITSH.
8695
8696 Fri Aug 9 11:09:28 1996 Jim Blandy <jimb@totoro.cyclic.com>
8697
8698 * init.c (scm_boot_guile): Add init_func argument; call
8699 (*init_func) instead of calling scm_appinit; it's ucky to
8700 hard-code names for the user's procedures.
8701 * init.h (scm_boot_guile): Adjust declaration.
8702
8703 * __scm.h (PROTO): New macro, for declaring functions with
8704 prototypes.
8705
8706 * init.h (scm_start_stack, scm_restart_stack): Use PROTO;
8707 eliminate all the __STDC__ conditionals.
8708 (scm_boot_guile): Add declaration.
8709 * init.c (scm_start_stack, scm_restart_stack, scm_boot_guile):
8710 Remove __STDC__ conditionals around function definitions; the
8711 declarations in init.h will provide the same information, more
8712 usefully.
8713
8714 * __scm.h (SCM_SYSMISSING): When we don't have ENOSYS, don't
8715 complain about it in the error message; the error message is
8716 adequate without that note, and there's nothing the user can do
8717 about it.
8718
8719 Wed Aug 7 14:14:46 1996 Jim Blandy <jimb@totoro.cyclic.com>
8720
8721 * Makefile.in (ancillary): Drop def.sed.
8722
8723 * posix.c (scm_init_posix): Use numeric values, rather than
8724 CPP symbols, when defining the scheme values R_OK, W_OK, X_OK, and
8725 F_OK. The symbols aren't available on some systems, and I'm
8726 pretty sure their values are fixed by common widespread practice.
8727 * ioext.c (scm_init_ioext): Code here defined them too; remove it.
8728
8729 More functions unavailable on some systems.
8730 * configure.in (AC_CHECK_FUNCS): Add ctermid, setpgid, setsid,
8731 tcgetpgrp, tcsetpgrp, and waitpid to the list of functions to
8732 check for.
8733 * configure, scmconfig.h.in: Updated, using autoconf and autoheader.
8734 * posix.c (scm_sys_ctermid, scm_sys_setpgid, scm_sys_setsid,
8735 scm_sys_tcgetpgrp, scm_sys_tcsetpgrp, scm_sys_waitpid): Put the
8736 bodies of these functions in "#ifdef HAVE_MUMBLE" clauses, with a
8737 stub that signals an error as the #else.
8738
8739 * Makefile.in (ancillary): Drop acconfig-1.5.h; add acconfig.h.
8740
8741 Wed Aug 7 06:28:42 1996 Gary Houston <ghouston@actrix.gen.nz>
8742
8743 * Fixes motivated by Petr Adamek <adamek@mit.edu>:
8744
8745 * unif.c: include ramap.h.
8746
8747 * read.c (endif): case_insensative_p renamed case_insensitive_p.
8748
8749 * ramap.h: rename scm_array_copy prototypes to scm_array_copy_x.
8750
8751 * ports.c: include sys/ioctl.h.
8752
8753 * scmconfig.h.in: add HAVE_SYS_IOCTL_H.
8754
8755 * configure.in: check for sys/ioctl.h.
8756
8757 * ports.c: include <malloc.h> not "malloc.h".
8758
8759 * mallocs.c: include <malloc.h> not "malloc.h", likewise for unistd.h.
8760
8761 * fports.c: remove ttyname and tmpnam declarations.
8762
8763 * posix.c: fewer ttyname declarations.
8764
8765 * fports.c: include <string.h> not "string.h".
8766
8767 * init.c, ioext.c: include string.h and unistd.h.
8768
8769 * gc.c: include <malloc.h> not "malloc.h", likewise for unistd.h.
8770
8771 * async.c, strings.h, strports.c, struct.c, symbols.c, feature.c,
8772 genio.c, simpos.c, vports.c: include string.h.
8773
8774 * socket.c, fdsocket.c: include string.h only if HAVE_STRING_H.
8775
8776 * fdsocket.c (getsockopt, setsockopt): change type of optlen from
8777 scm_sizet to int.
8778 (scm_addr_buffer_size): change type from scm_sizet to int.
8779 (accept, getsockname, getpeername, recvfrom): change type of tmp_size
8780 from scm_sizet to int.
8781
8782 * error.c: include unistd.h.
8783
8784 * __scm.h: (SCM_SYSMISSING): another version in case ENOSYS isn't
8785 defined.
8786
8787 * Makefile.in: remove references to .hd, .cd suffix and __scm.hd.
8788
8789 * __scm.hd, def.sed: deleted.
8790
8791 Tue Aug 6 14:49:08 1996 Jim Blandy <jimb@totoro.cyclic.com>
8792
8793 Changes for NeXT, suggested by Robert Brown.
8794 * configure.in: Call AC_TYPE_MODE_T.
8795 (AC_CHECK_HEADERS): Add libc.h, to get more prototypes on the
8796 NeXT. Put header file list in alphabetical order.
8797 * configure, scmconfig.h.in: Regenerated.
8798 * filesys.c [HAVE_LIBC_H]: #include <libc.h>.
8799
8800 * filesys.c [HAVE_STRING_H]: #include <string.h>, to get prototype
8801 for strerror.
8802
8803 * acconfig.h: New file, providing documentation for the CPP
8804 symbols defined in configure.in
8805 * acconfig-1.5.h: Removed; superceded by the above.
8806
8807 Sat Aug 3 01:27:14 1996 Gary Houston <ghouston@actrix.gen.nz>
8808
8809 * ioext.c (scm_sys_fdopen): fix the port-table assignment.
8810
8811 * fports.c (scm_open_file): don't return #f, throw error.
8812
8813 * ioext.c (fileno): renamed from %fileno.
8814 (soft-fileno): deleted.
8815
8816 * ports.c (scm_port_revealed): don't need to check for -1 from
8817 scm_revealed_count.
8818 (scm_set_port_revealed_x): return unspecified, not #f.
8819
8820 * ioext.c (primitive-move->fdes): return #t or #f, not 1 or 0.
8821
8822 * fdsocket.c: getsockopt, setsockopt: use HAVE_STRUCT_LINGER.
8823
8824 * scmconfig.h.in: add HAVE_STRUCT_LINGER.
8825
8826 * configure.in: check for struct linger, set HAVE_STRUCT_LINGER.
8827
8828 Thu Aug 1 02:58:39 1996 Jim Blandy <jimb@totoro.cyclic.com>
8829
8830 * filesys.c, posix.c: #include <sys/types.h> before <sys/stat.h>.
8831 This is necessary on Ultrix, and doesn't hurt portability.
8832
8833 * Makefile.in (dist-dir): New target, implementing a new dist system.
8834 (installed_h_files): Put in alphabetical order.
8835 Remove duplicate entries for markers.h and unif.h.
8836 (c_files): Remove duplicate entries for markers.c.
8837 (ancillary): Renamed from anillery; all uses changed. Remove
8838 PLUGIN; it's a directory, and needs special treatment in dist-dir.
8839 Remove all the ../doc/* files; doc/Makefile.in handles that.
8840
8841 * Makefile.in (libobjs): Remove duplicate entry for markers.o.
8842
8843 * Makefile.in (.c.x): Compensate for Ultrix's broken Bourne shell:
8844 every if must have an else, or else the whole command has a
8845 non-zero exit code whenever the if's condition is false.
8846
8847 Thu Aug 1 08:22:24 1996 Gary Houston <ghouston@actrix.gen.nz>
8848
8849 * posix.c: include string.h.
8850
8851 Wed Jul 31 23:43:05 1996 Gary Houston <ghouston@actrix.gen.nz>
8852
8853 * numbers.c: rename %expt -> $expt, %atan2 -> $atan2, as it must
8854 have been once.
8855
8856 * posix.c, ioext.c, socket.c, fdsocket.c, files.c, filesys.c, simpos.c:
8857 Remove leading % from scheme names.
8858 Do not return error values, call SCM_SYSERROR or similar.
8859
8860 * __scm.h (SCM_SYSERROR, SCM_SYSMISSING): new macros.
8861
8862 Wed Jun 12 00:28:31 1996 Tom Lord <lord@beehive>
8863
8864 * struct.c (scm_init_struct): new file.
8865
8866 Fri Jun 7 14:02:00 1996 Tom Lord <lord@beehive>
8867
8868 * list.c (scm_list_tail): list-cdr-ref is the same as list-tail.
8869 (scm_list_head): added list-head for rapidly chopping argument
8870 lists off of longer lists (and similar).
8871
8872 Tue Jun 4 09:40:33 1996 Tom Lord <lord@beehive>
8873
8874 * objprop.c (scm_object_property): assq the cdr of the whash
8875 handle for obj, not the handle itself.
8876
8877 Mon Jun 3 17:19:30 1996 Tom Lord <lord@beehive>
8878
8879 * gc.c (scm_mark_weak_vector_spines): Mark the spines (alists) of
8880 weak hash tables last of all marking to avoid an obscure gc bug.
8881 WARNING: circular lists stored in a weak hash table will hose us.
8882
8883 Fri May 24 09:53:39 1996 Tom Lord <lord@beehive>
8884
8885 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
8886 new functions similar to scm_substring_move_left_x and
8887 scm_substring_move_right_x.
8888
8889 Wed May 22 20:07:01 1996 Tom Lord <lord@beehive>
8890
8891 * init.c (scm_boot_guile): prevent gc with scm_block_gc not
8892 scm_gc_heap_lock!
8893
8894 Wed May 15 16:13:29 1996 Tom Lord <lord@beehive>
8895
8896 * ports.c (scm_unread_char): scm_gen_ungetc as a scheme procedure.
8897
8898 Thu May 9 09:33:17 1996 Tom Lord <lord@beehive>
8899
8900 * strports.c (scm_strprint_obj): convenience function. C for
8901 (lambda (obj) (call-with-output-string (lambda (p) (write obj p))))
8902
8903 * guile-{tcl,tk}.[ch], events.[ch], keysyms.[ch], tcl-channels.[ch]
8904 removed to a separate library
8905
8906 * init.c (scm_boot_guile): copied from guile-tcl.c.
8907 Initialization specific to tcl interpreters removed.
8908
8909 Wed May 8 15:07:37 1996 Tom Lord <lord@beehive>
8910
8911 * ports.c (scm_ports_prehistory): size malloced here doesn't
8912 matter so long as it is non-0 (got rid of "* 4").
8913
8914 Tue May 7 11:43:37 1996 Tom Lord <lord@beehive>
8915
8916 * gscm.h: gscm_mkarray eliminated (presumably was not being used
8917 since its definition was bogus).
8918
8919 Mon May 6 13:02:56 1996 Tom Lord <lord@beehive>
8920
8921 * mallocs.[ch]: back again (for rx at least).
8922
8923 Wed Apr 17 08:54:20 1996 Tom Lord <lord@beehive>
8924
8925 * ports.c: removed functions relating to the mapping between ports
8926 and descriptors. (That stuff is unix-specific and should be collected
8927 in a separate library).
8928
8929 * ramap.c (scm_array_copy): return #<unspecified> not #<undefined>.
8930 (Tom Mckay@avanticorp.com)
8931
8932 Mon Apr 15 14:16:55 1996 Tom Lord <lord@beehive>
8933
8934 * gc.c (scm_gc_sweep): Immediates in weak vectors were not
8935 handled correctly (SCM_FREEP was applied to them) -- test for
8936 NIMP. Keys in weak hash tables were spuriously (though harmlessly)
8937 being overwritten with #f. (brown@grettir.bibliotech.com)
8938
8939 Tue Apr 2 22:25:00 1996 Tom Lord <lord@beehive>
8940
8941 * gc.c (scm_unhash_name): new procedure, unhash-name, flushes glocs
8942 for a specific symbol or for all symbols.
8943
8944 Mon Apr 1 10:34:55 1996 Tom Lord <lord@beehive>
8945
8946 * gc.c (scm_gc_mark): mark weak hash tables correctly (was getting weak
8947 keys and weak values confused).
8948
8949 Thu Mar 14 22:20:20 1996 Tom Lord <lord@beehive>
8950
8951 * list.c (scm_last_pair): map '()=>'()
8952
8953 Wed Mar 13 16:43:34 1996 Tom Lord <lord@beehive>
8954
8955 * pairs.c, hashtab.c, list.c, alist.c append.c, sequences.c:
8956 Generalized assoc and hash-table functions.
8957 Factored pairs.c into multiple files.
8958
8959 Fri Mar 8 14:44:39 1996 Tom Lord <lord@beehive>
8960
8961 * gscm.c (gscm_run_scm): got rid of objprop.
8962
8963 Fri Mar 1 10:39:52 1996 Tom Lord <lord@beehive>
8964
8965 * genio.c (scm_getc):
8966 NOTE: fgetc may not be interruptable.
8967
8968 * procprop.c (scm_stand_in_scm_proc):
8969 NOTE: don't use a alist here.
8970 (scm_set_procedure_properties_x): fix type checking throughout this file.
8971
8972 * gc.c (scm_gc_sweep): free heap segments with free, not must_free.
8973
8974 * ports.c (scm_remove_from_port_table): adjust scm_mallocated
8975 after freeing part of the port table.
8976
8977 Thu Feb 29 16:21:17 1996 Tom Lord <lord@beehive>
8978
8979 * strports.c (scm_mkstrport):
8980 * vports.c (scm_make_soft_port): allocate a port table entry
8981 (possibly triggering gc) before setting the tag of the corresponding
8982 ports handle.
8983
8984 * pairs.c (scm_delq_x): never throw an error.
8985
8986 * vectors.c (scm_make_vector): made the default vector fill argument
8987 into '() (much more useful than the previous value, "#unspecified")
8988
8989 Mon Feb 26 17:19:09 1996 Tom Lord <lord@beehive>
8990
8991 * ports.c (scm_add_to_port_table): Added fields
8992 to port table entries: file_name, line_num, col.
8993 Update these in open_file, gen_getc and gen_ungetc.
8994 Added procedures to access those fields.
8995
8996 Sun Feb 25 00:10:36 1996 Tom Lord <lord@beehive>
8997
8998 * procs.c (scm_make_subr_opt): new entry point for making
8999 anonymous subrs.
9000
9001 Sat Feb 24 17:11:31 1996 Tom Lord <lord@beehive>
9002
9003 * gc.h: SCM_STACK_GROWS_UP is now set by autoconf.
9004
9005 Fri Feb 23 10:26:29 1996 Tom Lord <lord@beehive>
9006
9007 * numbers.c (scm_exact_p): This function no longer
9008 implements "integer?".
9009
9010 Thu Feb 22 20:56:16 1996 Tom Lord <lord@beehive>
9011
9012 * gc.c (scm_gc_end): simulate a signal at the end of each GC.
9013 (scm_gc_stats): return an assoc of useful data. Replaces "room"
9014 and the stats reporting formerlly built into repl.
9015
9016 * repl.[ch]: removed.
9017 GC statistics keeping moved to gc.c.
9018 Other statistics keeping can be done from Scheme.
9019 REPLS are now written in Scheme.
9020
9021 Wed Feb 21 10:28:53 1996 Tom Lord <lord@beehive>
9022
9023 * cnsvobj.c (gscm_is_gscm_obj): new file for old functions (icky
9024 conservatively marked objects).
9025
9026 * throw.c (scm_ithrow): Unwind up to the right catch during a throw!
9027
9028 * error.c (scm_init_error): init system_error_sym here, not in repl.c.
9029
9030 * feature.c (scm_compiled_library_path): moved here from repl.c.
9031 This file is for stuff relating specifically to Scheme libraries
9032 like slib.
9033
9034 * eval.c (scm_m_define): don't give warning about redefinition, don't
9035 check verbosity.
9036
9037 NOTE: this should throw a resumable exception with parameters --
9038 the name, the top-level env, the variable, the definition, #t/#f: redefining builtin?
9039
9040 * repl.c (scm_gc_begin/end): don't print a message, don't check verbosity.
9041
9042 * error.c: scm_warn eliminated.
9043
9044 * read.c (scm_lreadr): extra right paren gets an error, not a warning.
9045
9046 * repl.c, marksweep.c, gc.c (various):
9047 lose exit_report, growth_mon.
9048
9049 * gscm.c: got rid of verbosity functions.
9050
9051 Tue Feb 20 00:19:10 1996 Tom Lord <lord@beehive>
9052
9053 * throw.c (scm_ithrow): guard against the bad-throw hook changing
9054 between the call to procedurep and use.
9055
9056 * error.c (scm_everr):
9057 * gc.c (fixconfig):
9058 * gsubr.c (scm_make_gsubr): use exit, not scm_quit. still wrong,
9059 but less so.
9060
9061 * strports.c: don't reveal the port's string to the caller
9062 because it changes size.
9063
9064 (stputc stwrite): check/change the strings length with interrupts
9065 blocked.
9066
9067 * objprop.c (scm_set_object_property_x &c): use the generic
9068 hashing functions and be threadsafe.
9069
9070 * eval.c (scm_unmemocar): do this operation in a thread-safe way.
9071 (per suggestion jaffer@gnu.ai.mit.edu).
9072
9073 * mbstrings.c (scm_multi_byte_string): guard against argument list
9074 changing length.
9075
9076 * strings.c (scm_make_string): loop cleanup
9077
9078 * unif.c (scm_vector_set_length_x): scm_vector_set_length_x no longer
9079 a scheme function.
9080
9081 * weaks.c (scm_weak_vector): guard against argument list
9082 changing length.
9083
9084 * variable.c (scm_builtin_variable): check for/make a built-in
9085 variable automicly.
9086
9087 * vectors.c (scm_vector): while filling the new array,
9088 guard against a list of fill elements that grows after
9089 the vector is allocated.
9090
9091 * hashtab.c -- new file: general hash table
9092 functions. hash, hashq, hashv, hashx.
9093
9094 * tags.h: made wvect an option bit of vector.
9095
9096 Mon Feb 19 09:38:05 1996 Tom Lord <lord@beehive>
9097
9098 * symbols.c: made the basic symbol table operations atomic.
9099
9100 * root.c &c.: collected stack-specific global state.
9101 linum/colnum etc *should* be port-specific state.
9102
9103 * struct.c (scm_init_struct): init the first struct type during
9104 initialization to fix a race condition.
9105
9106 * continuations.c (scm_dynthrow): pass throwval in the 'regs'
9107 object, not in a global.
9108 (suggested by green@cygnus, jaffer@gnu.ai.mit.edu)
9109
9110 * throw.c (_scm_throw): Pass throwval on the stack, not in a global
9111 (suggested by green@cygnus, jaffer@gnu.ai.mit.edu)
9112
9113 * *.[ch]: namespace cleanup. Changed all (nearly) exported CPP
9114 and C symbols to begin with SCM_ or scm_.
9115
9116 Sun Feb 18 15:55:38 1996 Tom Lord <lord@beehive>
9117
9118 * gsubr.c (scm_gsubr_apply): statically allocate the
9119 array of arguments (bothner@cygnus.com).
9120
9121 Sat Feb 17 20:20:40 1996 Tom Lord <lord@beehive>
9122
9123 * scmsigs.c: Simplified to use async rountines.
9124
9125 * async.c: New support for interrupt handlers.
9126
9127 Thu Feb 15 11:39:09 1996 Tom Lord <lord@beehive>
9128
9129 * symbols.c (scm_string_to_symbol et al.): number of tweaky changes to
9130 set the multi_byte flag correctly in symbols. This is wrong.
9131 intern_obbary_soft and msymbolize should take an extra parameter.
9132 Also, weird multibyte symbols don't print correctly.
9133 The weird symbol syntax is also a bit bogus (emacs doesn't quite
9134 cope).
9135
9136 Tue Feb 13 11:39:37 1996 Tom Lord <lord@beehive>
9137
9138 * symbols.c (scm_string_to_obarray_symbol): obarray == #f means
9139 use the system symhash. == #t means create an uninterned symbol.
9140
9141 Wed Feb 7 09:28:02 1996 Tom Lord <lord@beehive>
9142
9143 * strings.c (scm_make_shared_substring): build'em.
9144 It might better to keep a table of these and use one
9145 less cons-pair per shared-substring.
9146
9147 Tue Feb 6 17:45:21 1996 Tom Lord <lord@beehive>
9148
9149 * strings.c (scm_string_shared_substring): create shared
9150 substrings. (Doesn't handle mb strings yet).
9151
9152 * mbstrings.c (scm_print_mb_string): handle RO strings.
9153
9154 * print.c (scm_iprin1): print substrings as their non-substring
9155 counterparts (dubious).
9156
9157 * marksweep.c (scm_gc_mark scm_gc_sweep): handle RO and MB
9158 strings.
9159
9160 * hash.c (scm_hasher): hash RO and MB strings as bytestrings.
9161
9162 * eval.c (SCM_CEVAL): self-evaluate RO and MB strings.
9163
9164 * eq.c (scm_equal_p): handle RO and MB strings.
9165
9166 * symbols.c (scm_string_to_symbol):
9167 (scm_string_to_obarray_symbol):
9168 * strop.c (scm_i_index):
9169 (scm_i_rindex):
9170 (scm_string_null_p):
9171 (scm_string_to_list):
9172 * strings.c (scm_string_length):
9173 (scm_string_ref):
9174 (scm_substring):
9175 (scm_string_append):
9176 * simpos.c (scm_system):
9177 (scm_getenv):
9178 * fports.c (scm_open_file):
9179 * strorder.c (scm_string_equal_p):
9180 (scm_string_ci_equal_p):
9181 (scm_string_less_p):
9182 (scm_string_ci_less_p):
9183 * pairs.c (scm_obj_length):
9184 * mbstrings.c (scm_multi_byte_string_length):
9185
9186 Use RO string macros for RO strings.
9187
9188 Tue Jan 30 09:19:08 1996 Tom Lord <lord@beehive>
9189
9190 * Makefile.in (CFLAGS ALL_CFLAGS): be more standard.
9191
9192 * strop.c (scm_i_rindex, scm_i_index): Don't use the BSD functions
9193 index/rindex. Do handle embedded \000 characters.
9194
9195 Sun Jan 28 13:16:18 1996 Tom Lord <lord@beehive>
9196
9197 * error.c (def_err_response): (int)scm_err_pos => (long)scm_err_pos
9198 Eliminate a (presumed) warning on some systems.
9199
9200 * gscm.c (gscm_run_scm): SCM_INIT_PATH => GUILE_INIT_PATH
9201 (Mikael Djurfeldt <mdj@nada.kth.se>)
9202
9203 Sat Jan 27 12:36:55 1996 Tom Lord <lord@beehive>
9204
9205 * eval.c (scm_map): added argument type checking.
9206 (kawai@sail.t.u-tokyo.ac.jp)
9207
9208 * gscm.c (gscm_set_procedure_properties_x): parameter "new" => "new_val"
9209 for C++. (Seth Alves <alves@gryphon.com>)
9210
9211 (gscm_cstr): uses an uninitialized local variable causing
9212 segv. (kawai@sail.t.u-tokyo.ac.jp)
9213
9214
9215 * lvectors.c (scm_get_lvector_hook):
9216 In guile-ii, the lvector code was broken. It was fixed in guile-iii.
9217 It seems to me like if it is broken again in guile-iv...Here is a patch.
9218 "! || (LENGTH (keyvec) == 0))"
9219 (From: Mikael Djurfeldt <mdj@nada.kth.se>)
9220
9221
9222 * gscm.c (gscm_sys_default_verbosity):
9223 incorrectly declared for non-__STDC__
9224 (Tom_Mckay@avanticorp.com)
9225
9226 * ports.c (scm_setfileno): Tweak the macro a bit
9227 to make it easier to port to systems that use
9228 more than a single structure field to hold a descriptor.
9229
9230 * debug.c (change_mode): Avoid GNUCism "int foo[n];"
9231 Give a warning, not an error, for unrecognized modes.
9232
9233 * eval.c (SCM_CEVAL):
9234 static char scm_s_for_each[];
9235 static char scm_s_map[];
9236 not needed.
9237
9238 * strings.c (scm_string_p):
9239 static char s_string[];
9240 (see next entry)
9241
9242 * struct.c (scm_sys_struct_set_x):
9243 static char s_sys_make_struct[];
9244 static char s_sys_struct_ref[];
9245 static char s_sys_struct_set_x[];
9246 Rearrange code to eliminate those forward decls for the sake of
9247 broken compilers.
9248
9249 * variable.c (make_vcell_variable): static char s_make_variable[];
9250 isn't needed.
9251
9252 * fports.c (scm_port_mode):
9253 chars modes[3] = "";
9254 to
9255 chars modes[3];
9256 modes[0] = '\0';
9257 (Tom_Mckay@avanticorp.com)
9258
9259
9260 * pairs.c (scm_set_cdr_x): non-__STDC__ declaration of
9261 scm_cons2(), scm_acons(), and scm_set_cdr_x() missing semicolon
9262 (Tom_Mckay@avanticorp.com)
9263
9264 * numbers.c (scm_num_eq_p): Non-__STDC__ declaration of
9265 scm_num_eq_p() was scm_equal_p().
9266 (Tom_Mckay@avanticorp.com)
9267
9268 * symbols.c (msymbolize): "CHARS(X) = " => "SETCHARS..."
9269 (Tom_Mckay@avanticorp.com)
9270
9271 Fri Jan 26 14:03:01 1996 Tom Lord <lord@beehive>
9272
9273 * weaks.c (scm_make_weak_vector): "VELTS(X) =" => "SETVELTS..."
9274 (Tom_Mckay@avanticorp.com)
9275
9276 * strop.c (scm_substring_fill_x):
9277 Non-__STDC__ declaration of scm_substring_fill_x() missing semicolon
9278 (Tom_Mckay@avanticorp.com)
9279
9280 * eval.c (SCM_APPLY): variables "debug_info" -> dbg_info.
9281 Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com)
9282
9283 * _scm.h (CxR functions): #define CxR SCM_CxR => #define CxR(X) SCM_CxR(X)
9284 Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com)
9285
9286 * lvectors.c (scm_lvector_set_x): avoid VELTS (VELTS (...)[..]) which
9287 can turn into an obscure gc bug.
9288
9289 * chars.c (scm_char_p): fixed PROC call.
9290
9291 * gscm.h (gscm_vset): use scm_vector_set_x not (the missing)
9292 scm_vector_set.
9293
9294 Tue Jan 23 13:29:40 1996 Tom Lord <lord@beehive>
9295
9296 * elisp.c (new file): dynamic scoping and other bits for
9297 elisp. Don't use this yet unless you specificly want to
9298 hack on elisp emulation.
9299
9300 * dynwind.c (scm_dowinds): When entering or leaving a dynamic
9301 scope created by scm_with_dynamic_bindings_operation_x, swap
9302 the bindings of that scope with the corresponding globals.
9303
9304 * continuations.c (scm_make_cont): when a continuation is captured,
9305 relocate the continuation stack chunks registered on the wind chain
9306 to the heap.
9307
9308 Sun Jan 21 19:31:17 1996 Tom Lord <lord@beehive>
9309
9310 * eval.c (SCM_CEVAL): if the function position evaluates
9311 to a macro, process it accordingly. (Previously, macros were
9312 handled only if the function position was a symbol naming a
9313 variable bound to a macro).
9314
9315 Sat Jan 20 23:21:37 1996 Tom Lord <lord@beehive>
9316
9317 * eval.c (scm_m_set): allow multi-variable set! like
9318 (set! x 1 y 2 z 3).
9319
9320 Wed Dec 6 02:40:49 1995 Tom Lord <lord@beehive>
9321
9322 * ports.h fports.c vports.c marksweep.c gc.c strports.c: moved the
9323 STREAM of ports into the port table and replaced it with a
9324 port-table index.
9325
9326 * repl.c (iprin1): added tc7_mb_string -- same as tc7_string.
9327
9328 * marksweep.c (scm_gc_mark): added tc7_mb_string -- same as tc7_string.
9329
9330 * mbstrings.c (new file): functions on multi-byte strings.
9331
9332 * tags.h (scm_typ7_string, scm_typ7_mb_string): added a tag
9333 for multi-byte strings. Moved the string tag.
9334
9335 * chars.h chars.c repl.c (many functions): made scm_upcase and
9336 scm_downcase functions that are safe for extended character sets.
9337
9338 Changed the range of integer->char.
9339
9340 Changed the type of SCM_ICHR.
9341
9342 Tue May 16 17:49:58 1995 Mikael Djurfeldt <mdj@sanscalc.nada.kth.se>
9343
9344 * guile.c: Changed init file name from "SCM_INIT_PATH" to
9345 "GUILE_INIT_PATH"
9346
9347 Sun Aug 6 15:14:46 1995 Andrew McCallum <mccallum@vein.cs.rochester.edu>
9348
9349 * guile.c (gscm_is_gscm_type): New function. (Without this how will we
9350 know that it's safe to pass an object to gscm_get_type?)
9351 (gscm_get_type): Fix tyop in error message.
9352
9353 * variable.c (scm_variable_ref): fixed assertion test.
9354 (Robert STRANDH <strandh@labri.u-bordeaux.fr>)
9355
9356 * gscm.h: fixed several prototypes, notably gscm_vref.
9357 Add gscm_is_eq and temporarily commented out gscm_eq (see
9358 the note in gscm.h near gscm_eq if this change effects your
9359 code).
9360 (Reported by Mark Galassi <rosalia@sstcx1.lanl.gov>)
9361
9362 * pairs.c (scm_obj_length): see next entry.
9363
9364 * gscm.h (gscm_obj_length): A way to get an integer
9365 length for lists, strings, symbols (treated as strings),
9366 and vectors. Returns -1 on error.
9367
9368 * eq.c (scm_equal_p): fixed smob case.
9369 (William Gribble <grib@arlut.utexas.edu>)
9370
9371 * Makefile.in (X_CFLAGS): defined.
9372 (William Gribble <grib@arlut.utexas.edu>)
9373
9374 * gscm.h (gscm_2_double): provided now
9375 (reported by Mark Galassi <rosalia@sstcx1.lanl.gov>)
9376
9377 Tue Jun 13 01:04:09 1995 gnu
9378 * Vrooom!
9379
9380