merge from 1.8 branch
[bpt/guile.git] / libguile / ChangeLog
1 2007-03-08 Kevin Ryde <user42@zip.com.au>
2
3 * struct.c, struct.h (scm_make_vtable): New function, providing
4 `make-vtable'.
5 * stacks.c (scm_init_stacks): Use it.
6
7 2007-03-06 Kevin Ryde <user42@zip.com.au>
8
9 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
10 allocating a tail array. If there's no such then those tail fields
11 are uninitialized and garbage SCMs there can cause a segv if printed
12 (after fetching with struct-ref).
13
14 2007-02-22 Kevin Ryde <user42@zip.com.au>
15
16 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
17 (scm_usleep): Update docstring per manual, cross reference sleep.
18
19 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
20 scm_struct_init is not within that section. scm_struct_init can
21 thrown an error, which within a critical section results in an
22 abort().
23
24 2007-02-19 Neil Jerram <neil@ossau.uklinux.net>
25
26 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
27 is included in the distribution.
28 (noinst_HEADERS): And the same for eval.i.c.
29
30 2007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
31
32 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
33 unconditionally. Include <langinfo.h> and <nl_types.h> when
34 available.
35 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
36 SCM_LIST_OR_INTEGER_P): New macros.
37 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
38 as powers of two instead of `(1 << LC_*)'.
39 (scm_i_locale_free): New function/macro.
40 (scm_global_locale): New global variable.
41 (smob_locale_free): Use `scm_i_locale_free ()'.
42 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
43 (get_current_locale_settings): Return `EINVAL' instead of `errno'
44 when `setlocale' fails.
45 (restore_locale_settings): Likewise.
46 (install_locale_categories): Likewise.
47 (install_locale): Likewise. Stop the locale stack traversal when
48 all categories have been handled.
49 (get_current_locale, category_to_category_mask,
50 category_list_to_category_mask): New function.
51 (scm_make_locale): Use them. Accept both lists of `LC_*' values
52 and single `LC_*' values as the first argument. Handle the case
53 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
54 duplicate C_BASE_LOCALE before using it.
55 (scm_nl_langinfo, define_langinfo_items): New functions.
56 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
57 `nl-langinfo' and invoke `define_langinfo_items ()'.
58 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
59 * posix.c: Include <xlocale.h> when available.
60 (scm_i_locale_mutex): Always define it. Statically initialized.
61 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
62 acquiring the locale mutex.
63 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
64
65 2007-01-27 Kevin Ryde <user42@zip.com.au>
66
67 * ports.c (scm_port_line, scm_set_port_line_x), read.c
68 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
69 port line number type, should be "long" not "int", as per line_number
70 field of scm_t_port. (Makes a difference only on 64-bit systems, and
71 only then for a linenum above 2Gig.)
72
73 2007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
74
75 * vector.c: remove comment as per kryde's request.
76
77 2007-01-25 Kevin Ryde <user42@zip.com.au>
78
79 * sort.c (scm_stable_sort): Return empty list for input empty list, as
80 done in guile 1.6 and as always done by plain `sort'. Was falling
81 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
82
83 2007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
84
85 * vectors.c (s_scm_vector_move_right_x): complain about naming.
86
87 * srcprop.c: regularize comments.
88
89 * eval.c: remove superfluous ifndef DEVAL.
90
91 * private-options.h: idem.
92
93 * eval.i.c: copyright nitpicking.
94
95 * eval.c: distangle. move duplicate code to eval.i.c and include
96 twice.
97
98 * eval.i.c: new file.
99
100 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
101 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
102 read.h, stacks.c, symbols.c, throw.c: use private-options.h
103
104 * private-options.h: new file: contain hardcoded option
105 definitions.
106
107 * private-gc.h: add FSF header.
108
109 2007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
110
111 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
112 memoize-symbol is set.
113
114 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
115
116 * eval.c (CEVAL): add memoize_symbol trap.
117
118 * options.c (scm_options_try): new function. This allows error
119 reporting before changing options in a critical section.
120
121 * srcprop.c: use double cell for storing source-properties. Put
122 filename in the plist, and share between srcprops if possible.
123 Remove specialized storage.
124
125 * srcprop.h: remove macros without SCM_ prefix from
126 interface. Remove specialized storage/type definitions.
127
128 * read.c: idem.
129
130 * print.c: idem.
131
132 * eval.c: terminate option lists with 0.
133
134 * options.c: remove n (for length) from scm_option_X
135 functions. Detect option list length by looking for NULL name.
136
137 2007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
138
139 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
140 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
141 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
142 added by `make-vtable-vtable'. Reported by Marco Maggi.
143
144 2007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
145
146 * throw.c (scm_ithrow): more refined error message: print symbols
147 too.
148
149 2007-01-16 Kevin Ryde <user42@zip.com.au>
150
151 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
152 implementing `set-program-arguments'.
153
154 * filesys.c (scm_init_filesys): Use scm_from_int rather than
155 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
156 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
157 O_LARGEFILE. These are all int not long, per arg to open().
158 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
159 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
160 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
161 an int arg to fcntl.
162
163 * posix.c (scm_putenv): Correction to "len" variable, was defined only
164 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
165 Move it to where it's used. Reported by Hugh Sasse.
166
167 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
168 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
169 meant #\nul in the input (detected by scm_to_locale_string) and a bad
170 flags arg (detected by scm_to_int) would throw from a critical
171 section, causing an abort().
172
173 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
174 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
175 REG_NOTEOL; they're all ints not longs (per args to regcomp and
176 regexec).
177
178 2007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
179
180 * throw.c (scm_ithrow): print out key symbol and string arguments
181 when error happens inside a critical section, and document why.
182
183 2007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
184
185 * read.c (s_scm_read_hash_extend): document #f argument to
186 read-hash-extend.
187
188 2007-01-04 Kevin Ryde <user42@zip.com.au>
189
190 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
191 scm_minor_version, scm_micro_version, scm_effective_version,
192 scm_version, scm_init_version): Use SCM_API instead of just extern,
193 for the benefit of mingw. Reported by Cesar Strauss.
194
195 2007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
196
197 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
198 too.
199 (gc_update_stats): update scm_gc_cells_allocated_acc too.
200
201 2006-12-27 Kevin Ryde <user42@zip.com.au>
202
203 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
204 the basic scm_get_stack_base. As advised by Nils Durner.
205
206 * threads.c (get_thread_stack_base): Add a version using
207 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
208 As advised by Heikki Lindholm.
209
210 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
211 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
212 Durner.
213
214 2006-12-24 Kevin Ryde <user42@zip.com.au>
215
216 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
217 error if pid is not our own process, instead of silently doing nothing.
218
219 * print.c (scm_write, scm_display, scm_write_char): Disable port close
220 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
221 check in configure.in unintentionally enabled it. Believe that
222 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
223 can leave errno in that state. popen.test "no duplicates" output test
224 provoked that.
225
226 2006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
227
228 * numbers.c (scm_i_fraction_reduce): move logic into
229 scm_i_make_ratio(), so fractions are only read.
230 scm_i_fraction_reduce() modifies a fraction when reading it. A
231 race condition might lead to fractions being corrupted by reading
232 them concurrently.
233
234 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
235 comparisons between reduced and unreduced fractions go wrong.
236
237 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
238 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
239 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
240 SCM_FRACTION_REDUCED.
241
242 2006-12-16 Kevin Ryde <user42@zip.com.au>
243
244 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
245 more direct for a procedure called raise.
246 (kill): Remove mingw fake fallback.
247
248 2006-12-15 Kevin Ryde <user42@zip.com.au>
249
250 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
251 _pipe on mingw.
252
253 2006-12-14 Kevin Ryde <user42@zip.com.au>
254
255 * threads.c (thread_print): Cope with the case where pthread_t is a
256 struct, as found on mingw. Can't just cast to size_t for printing.
257 Reported by Nils Durner.
258
259 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
260 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
261
262 2006-12-13 Kevin Ryde <user42@zip.com.au>
263
264 * eval.c (scm_m_define): Set 'name procedure property on any
265 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
266 procedures with setters as used in srfi-17.
267
268 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
269 linux man page says is a possibility.
270
271 2006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
272
273 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
274 instead of RES (reported by Szavai Gyula). This allows the use of
275 negative lower bounds.
276 (scm_i_read_array): Make sure LEN is non-negative (reported by
277 Szavai Gyula).
278
279 (scm_array_in_bounds_p): Iterate over S instead of always
280 comparing indices with the bounds of S[0]. This fixes
281 `array-in-bounds?' for arrays with a rank greater than one and
282 with different lower bounds for each dimension.
283
284 2006-12-05 Kevin Ryde <user42@zip.com.au>
285
286 * numbers.c (scm_product): For flonum*inum and complex*inum, return
287 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
288 and as per R5RS section "Exactness".
289
290 2006-12-03 Kevin Ryde <user42@zip.com.au>
291
292 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
293 allow $AWK from the environment to override. It had syntax gremlins,
294 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
295 Makefile stopped it having any effect. Use just $(AWK), which can be
296 overridden with "make AWK=xxx" in the usual way if desired.
297
298 2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
299
300 * libguile/vectors.c (scm_vector_to_list): Fixed list
301 construction: elements were not copied when INC is zero (see
302 "shared array" example in `vectors.test'). Reported by
303 Szavai Gyula.
304
305 2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
306
307 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
308 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
309 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
310 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
311 (DOT_X_FILES): Added `gettext.x'.
312 (DOT_DOC_FILES): Likewise.
313 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
314 (modinclude_HEADERS): Added `gettext.h'.
315 (EXTRA_DIST): Added `libgettext.h'.
316
317 * gettext.h: Renamed to...
318 * libgettext.h: New file.
319
320 * i18n.c: Renamed to...
321 * gettext.c: New file.
322
323 * i18n.h: Renamed to...
324 * gettext.h: New file.
325
326 * i18n.c, i18n.h, locale-categories.h: New files.
327
328 * init.c: Include "libguile/gettext.h" instead of
329 "libguile/i18n.h".
330 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
331 `scm_init_i18n ()'.
332
333 * posix.c: Include "libguile/gettext.h" instead of
334 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
335 (USE_GNU_LOCALE_API): New macro.
336 (scm_i_locale_mutex): New variable.
337 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
338
339 * posix.h: Include "libguile/threads.h".
340 (scm_i_locale_mutex): New declaration.
341
342 2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
343
344 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
345
346 2006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
347
348 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
349 "sweep_stats" arguments; use them instead of accessing the global
350 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
351
352 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
353 before each iteration of the loop.
354 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
355 (scm_i_get_new_heap_segment): Take an additional argument
356 SWEEP_STATS. Compute MIN_CELLS as a function of it.
357
358 * libguile/gc.c (scm_gc_cells_collected,
359 scm_gc_cells_collected_1): Removed.
360 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
361 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
362 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
363 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
364 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
365 `scm_gc_cells_(collected|swept)'.
366 (gc_update_stats): New.
367 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
368 `scm_i_gc_sweep_stats_1' instead of the former globals.
369 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
370 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
371 would keep allocating new segments instead of re-using collected
372 cells (because `scm_gc_cells_collected' would remain zero).
373
374 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
375 scm_gc_cell_yield_percentage): Removed.
376
377 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
378 (scm_i_adjust_min_yield): Updated.
379 (scm_i_get_new_heap_segment): Updated.
380
381 2006-11-02 Neil Jerram <neil@ossau.uklinux.net>
382
383 * modules.c: Correct comment saying that low-level environments
384 will be used "in the next release".
385
386 * init.c: Comment out #include of environments.h.
387 (scm_i_init_guile): Comment out scm_environments_prehistory() and
388 scm_init_environments() calls.
389
390 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
391 (DOT_X_FILES): Remove environments.x.
392 (DOT_DOC_FILES): Remove environments.doc.
393 (modinclude_HEADERS): Remove environments.h.
394
395 2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
396
397 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
398
399 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
400 scm_ia64_register_backing_store_base() instead of Linux-specific
401 implementations.
402
403 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
404 New declarations.
405
406 * gc.c (__libc_ia64_register_backing_store_base): Declaration
407 removed.
408 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
409 implementations for Linux and HP-UX.
410
411 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
412 and scm_ia64_register_backing_store_base() instead of
413 Linux-specific implementations.
414
415 * continuations.h (__libc_ia64_register_backing_store_base):
416 Declaration removed.
417 (scm_t_contregs): New "fresh" field.
418
419 * continuations.c (ia64_getcontext): Removed.
420 (scm_make_continuation): Use continuation fresh field instead of
421 interpreting getcontext return values (which isn't portable). Use
422 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
423 instead of Linux-specific implementations.
424 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
425 instead of Linux-specific implementation.
426
427 * _scm.h (__ia64__): Also detect __ia64.
428
429 2006-10-03 Kevin Ryde <user42@zip.com.au>
430
431 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
432 arguments or 3 or more arguments. Previously 0 called proc with
433 SCM_UNDEFINED, and 3 or more silently used just the first 2.
434
435 2006-09-28 Kevin Ryde <user42@zip.com.au>
436
437 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
438 for chsize fallback, instead of hard-coding mingw. Mingw in fact
439 supplies ftruncate itself these days.
440
441 * ports.c (fcntl.h): Can include this unconditionally, no need for
442 __MINGW32__.
443
444 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
445 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
446 "off_t" for parameters, per usual definition of this function, rather
447 than "char *" and "int". Use ftruncate instead of chsize. Check for
448 error on final close.
449
450 2006-09-27 Kevin Ryde <user42@zip.com.au>
451
452 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
453 in mingw.
454
455 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
456 const *" for mingw to suppress warnings from gcc (which are errors
457 under the configure default -Werror). Reported by Nils Durner.
458
459 2006-09-26 Kevin Ryde <user42@zip.com.au>
460
461 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
462 * fports.c (scm_open_file): Use open_or_open64.
463 (fport_seek_or_seek64): New function, adapting fport_seek.
464 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
465 functions.
466 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
467 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
468
469 * ports.c (scm_truncate_file): Update docstring per manual.
470
471 2006-09-23 Kevin Ryde <user42@zip.com.au>
472
473 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
474 functions.
475
476 2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
477
478 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
479 (make_predset, define_predset, make_strset, define_strset, false,
480 true): Removed.
481 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
482 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
483 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
484 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
485 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
486 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
487 (define_charset, scm_srfi_14_compute_char_sets): New functions.
488 (scm_init_srfi_14): Use `define_charset ()' instead of
489 `define_predset ()' and `define_strset ()'.
490
491 * srfi-14.h (scm_c_init_srfi_14): Removed.
492 (scm_srfi_14_compute_char_sets): New declaration.
493
494 * posix.h: Include "srfi-14.h".
495 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
496 successful `setlocale ()' call.
497
498 2006-09-08 Kevin Ryde <user42@zip.com.au>
499
500 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
501 (scm_recvfrom): Update docstring from manual.
502
503 2006-08-31 Rob Browning <rlb@defaultvalue.org>
504
505 * ports.c (scm_c_port_for_each): Add a
506 scm_remember_upto_here_1(ports) at the end of the function to fix
507 a GC bug.
508
509 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
510
511 * backtrace.c (scm_display_backtrace_with_highlights): Minor
512 improvements to docstring.
513 (scm_backtrace_with_highlights): Analogous improvements.
514
515 2006-08-12 Kevin Ryde <user42@zip.com.au>
516
517 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
518 New, set from configure.
519 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
520 to scmconfig.h.
521 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
522 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
523 Reported by Claes Wallin.
524
525 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
526
527 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
528 frame, not a stack).
529
530 2006-07-25 Kevin Ryde <user42@zip.com.au>
531
532 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
533 on pthreads version, since pthread_getattr_np not available on solaris
534 and macos. Reported by Claes Wallin.
535
536 2006-07-24 Kevin Ryde <user42@zip.com.au>
537
538 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
539 it's a macro on MacOS X. Reported by Claes Wallin.
540
541 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
542 for the benefit of Solaris 10. Reported by Claes Wallin.
543
544 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
545 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
546
547 2006-07-21 Kevin Ryde <user42@zip.com.au>
548
549 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
550 autoconf recommendation. Should fix Solaris 10 reported by Claes
551 Wallin.
552
553 * threads.c: Include <string.h>, needed for memset() which is used by
554 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
555
556 2006-07-18 Rob Browning <rlb@defaultvalue.org>
557
558 * continuations.c: Add __attribute__ ((returns_twice)) to the
559 ia64_getcontext prototype so that gcc will make the right
560 arrangements and avoid an illegal instruction during
561 call-with-current-continuation.
562
563 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
564
565 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
566 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
567
568 2006-07-08 Kevin Ryde <user42@zip.com.au>
569
570 * environments.c (core_environments_unobserve): Use if/else rather
571 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
572 about them not being rvalues. Reported by Mike Gran.
573
574 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
575 portable and in particular fails on OpenBSD and AIX (see autoconf
576 manual too). Reported by Mike Gran.
577
578 2006-06-25 Kevin Ryde <user42@zip.com.au>
579
580 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
581 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
582 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
583 HAVE_TM_ZONE.
584 (scm_strptime): Use tm_gmtoff from the strptime result when that field
585 exists, it's set by glibc strptime "%s".
586
587 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
588
589 * eq.c: Include "struct.h", "goops.h" and "objects.h".
590 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
591 are not GOOPS instances.
592 * struct.c: Include "eq.h".
593 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
594 hand-written code.
595 (scm_i_struct_equalp): New.
596 * struct.h (scm_i_struct_equalp): New declaration.
597
598 2006-06-06 Kevin Ryde <user42@zip.com.au>
599
600 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
601 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
602 reported by Mattias Holm.
603
604 2006-06-03 Kevin Ryde <user42@zip.com.au>
605
606 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
607 unused variable warning when elisp disabled. Reported by Ryan
608 VanderBijl.
609
610 * throw.c (scm_handle_by_message): Add dummy return value to avoid
611 compiler warning on cygwin. Reported by Ryan VanderBijl.
612
613 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
614 duplicate of EXTRA_DOT_DOC_FILES.
615 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
616 Add scmconfig.h to dependencies, since these all run cpp. Helps a
617 parallel "make -j2". Reported by Mattias Holm.
618
619 2006-05-30 Kevin Ryde <user42@zip.com.au>
620
621 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
622 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
623 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
624 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
625 port type descriptor, same as scm_make_port_type return value.
626
627 2006-05-30 Marius Vollmer <mvo@zagadka.de>
628
629 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
630 of the arguments is a array. This allows vectors to be equal to
631 one-dimensional arrays.
632
633 2006-05-29 Marius Vollmer <mvo@zagadka.de>
634
635 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
636 that we have a pair before accessing its cdr. Thanks to Bill
637 Schottstaedt!
638
639 2006-05-28 Kevin Ryde <user42@zip.com.au>
640
641 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
642 by "The Senator".
643
644 2006-05-27 Marius Vollmer <mvo@zagadka.de>
645
646 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
647 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
648
649 2006-05-26 Kevin Ryde <user42@zip.com.au>
650
651 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
652 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
653 Reported by "The Senator".
654 For select and ioctl, move fdes into those conditionals, to avoid
655 unused variable warning when neither of those used.
656
657 2006-05-23 Kevin Ryde <user42@zip.com.au>
658
659 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
660 It's unused and will be in stdio.h anyway (if it's anywhere).
661
662 2006-05-20 Kevin Ryde <user42@zip.com.au>
663
664 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
665 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
666
667 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
668 symlink). Probably can't create symlinks with mknod anyway though.
669
670 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
671 generation.
672
673 2006-05-15 Kevin Ryde <user42@zip.com.au>
674
675 * simpos.c, simpos.h (scm_primitive__exit): New function.
676 (scm_primitive_exit): Update docstring, no longer the best exit after
677 a fork.
678
679 2006-05-09 Kevin Ryde <user42@zip.com.au>
680
681 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
682 rather than converting to doubles, to avoid inf or nan when the inputs
683 are too big for a double but the quotient does fit. This affects
684 conversions exact->inexact of big fractions.
685
686 * filesys.c (scm_open_fdes): Use open64.
687 (scm_init_filesys): Add O_LARGEFILE.
688
689 * ports.c (scm_seek): Use lseek64.
690 (scm_truncate_file): Use ftruncate64.
691
692 2006-05-08 Marius Vollmer <mvo@zagadka.de>
693
694 * private-gc.h (CELL_P): Also check that the potential pointer is
695 correctly aligned for a cell. Thanks to Miroslav Lichvar!
696
697 2006-04-18 Rob Browning <rlb@defaultvalue.org>
698
699 * _scm.h: Add back error if the size of off_t is unknown. The bug
700 was actually in guile-readline's configuration.
701
702 2006-04-18 Kevin Ryde <user42@zip.com.au>
703
704 * posix.c (scm_mkstemp): Update docstring from the manual, in
705 particular file mode 0600 is not guaranteed.
706
707 2006-04-17 Kevin Ryde <user42@zip.com.au>
708
709 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
710 size, to help the guile-readline build where off_t is unused.
711
712 2006-04-16 Kevin Ryde <user42@zip.com.au>
713
714 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
715 (scm_readdir): Use readdir64.
716 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
717 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
718 and ftruncate take off_t not size_t.
719 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
720 available.
721
722 2006-04-06 Kevin Ryde <user42@zip.com.au>
723
724 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
725 instead of toggling it. Reported by Ludovic Courtès.
726
727 2006-03-26 Marius Vollmer <mvo@zagadka.de>
728
729 * threads.c (get_thread_stack_base): Use scm_get_stack_base
730 instead of accessing __libc_stack_end directly, and only do this
731 when pthread_attr_getstack is known not to work for the main
732 thread or when not using pthreads at all.
733
734 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
735 unknown instead of returning NULL.
736
737 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
738
739 * numbers.c (scm_i_mem2number): Renamed to
740 scm_c_locale_stringn_to_number.
741 * numbers.c, print.c, read.c: Updated callers.
742 * numbers.h: Update function declaration.
743
744 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
745
746 * unif.c (string_set): Don't return in a void function. (Reported
747 by Mike Gran.)
748
749 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
750 rather than void*, so we can do pointer arithmetic on it.
751 (Reported by Mike Gran.)
752 (s_scm_uniform_vector_write): Ditto.
753
754 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
755
756 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
757 oldra is not an array. (Reported by Steve Juranich.)
758
759 * threads.c (do_unlock): Renamed from "unlock", which is defined
760 in unistd.h on QNX. (Reported by Matt Kraai.)
761
762 2006-03-04 Kevin Ryde <user42@zip.com.au>
763
764 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
765 not SCM_CRITICAL_SECTION_START.
766
767 * eval.c, posix.c: Change comments from C++ to C style. Reported by
768 Mike Gran.
769
770 2006-02-28 Kevin Ryde <user42@zip.com.au>
771
772 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
773
774 2006-02-26 Kevin Ryde <user42@zip.com.au>
775
776 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
777 NAME_MAX is not available, which is so on Solaris 10. Report and help
778 by Bill Schottstaedt.
779
780 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
781 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
782 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
783 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
784 use "unsigned char", not signed char. This ensures comparisons are
785 the same as `char<?' etc, and is also the same as guile 1.6 did.
786 Reported by Sven Hartrumpf.
787
788 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
789
790 * random.c: Test for SCM_HAVE_T_UINT64 instead of
791 SCM_HAVE_T_INT64.
792 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
793 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
794 scm_t_int32.
795
796 2006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
797
798 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
799 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
800 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
801 Take into account SEG->SPAN when computing CELLS_SWEPT.
802 (scm_i_sweep_segment): Take one more argument, similarly.
803 (scm_i_sweep_all_segments): Likewise.
804 (scm_i_sweep_some_segments): Likewise.
805 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
806 refer to SCM_GC_CELLS_COLLECTED.
807
808 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
809 argument, an `scm_i_sweep_statistics' object.
810 Change the way DELTA is collected: don't take into account
811 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
812
813 * gc-malloc.c (scm_realloc): Pass an extra argument
814 to `scm_i_sweep_all_segments ()'.
815
816 * gc.c (gc_start_stats): Updated accordingly.
817 (gc_end_stats): Take an additional SWEEP_STATS argument.
818 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
819 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
820 Decrement SCM_CELLS_ALLOCATED.
821 (scm_i_gc): Likewise.
822
823 * private-gc.h (scm_i_sweep_*): Updated function
824 prototypes accordingly.
825 (scm_t_sweep_statistics): New type.
826 (scm_i_sweep_statistics_init): New macro.
827 (scm_i_sweep_statistics_sum): New macro
828
829 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
830
831 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
832 LEN. Without this, too much collectable memory gets unregistered,
833 which results in an underflow of SCM_MALLOCATED in
834 `decrease_mtrigger()'.
835
836 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
837 equal to SCM_MALLOCATED.
838
839 2006-02-13 Marius Vollmer <mvo@zagadka.de>
840
841 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
842 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
843 configured --without-threads.
844 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
845
846 2006-02-12 Marius Vollmer <mvo@zagadka.de>
847
848 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
849 filling when the fill parameter is omitted, as documented, but
850 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
851 can not store characters.
852
853 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
854
855 * socket.c (scm_c_make_socket_address): Pass address_size pointer
856 on to scm_fill_sockaddr call.
857
858 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
859
860 * throw.h (scm_c_catch, scm_c_with_throw_handler,
861 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
862
863 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
864 (struct pre_unwind_data): New, replaces struct lazy_catch.
865 (scm_c_catch): New, replaces scm_internal_catch as the primary
866 catch API for C code; adds pre-unwind handler support.
867 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
868 compatibility.
869 (tc16_pre_unwind_data, pre_unwind_data_print,
870 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
871 "lazy_catch" equivalents.
872 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
873 as the primary C API for a "lazy" catch.
874 (scm_internal_lazy_catch): Now just a wrapper for
875 scm_c_with_throw_handler, for back compatibility.
876 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
877 pre-unwind handler support.
878 (scm_catch): Now just a wrapper for
879 scm_catch_with_pre_unwind_handler, for back compatibility.
880 (scm_with_throw_handler): New.
881 (scm_lazy_catch): Update comment to say that the handler can
882 return, and what happens if it does.
883 (toggle_pre_unwind_running): New.
884 (scm_ithrow): When identifying the throw target, take running
885 flags into account. In general, change naming of things from
886 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
887 don't unwind the dynamic context first. Add dynwind framing to
888 manage the running flag of a throw handler. If a lazy catch or
889 throw handler returns, rethrow the same exception again. Add
890 pre-unwind support to the normal catch case (SCM_JMPBUFP).
891
892 * root.c (scm_internal_cwdr): Add NULL args to
893 scm_i_with_continuation_barrier call.
894
895 * dynwind.c: Change comment mentioning lazy-catch to mention
896 pre-unwind data and throw handler also.
897
898 * continuations.h (scm_i_with_continuation_barrier): Add
899 pre-unwind handler args.
900
901 * continuations.c (scm_i_with_continuation_barrier): Add
902 pre-unwind handler args, and pass on to scm_c_catch (changed from
903 scm_internal_catch).
904 (c_handler): Remove scm_handle_by_message_noexit call.
905 (scm_c_with_continuation_barrier): Call
906 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
907 as the pre-unwind handler.
908 (scm_handler): Remove scm_handle_by_message_noexit call.
909 (s_scm_with_continuation_barrier): Call
910 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
911 as the pre-unwind handler.
912
913 2006-02-04 Kevin Ryde <user42@zip.com.au>
914
915 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
916
917 2006-02-03 Kevin Ryde <user42@zip.com.au>
918
919 * list.c, list.h (scm_list): Restore this function for use from C.
920 It's a complete no-op but in theory might used by someone.
921
922 2006-01-30 Marius Vollmer <mvo@zagadka.de>
923
924 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
925 so that it gets unlocked in all cases.
926 (SCM_APPLY, CEVAL): Likewise.
927
928 2006-01-29 Marius Vollmer <mvo@zagadka.de>
929
930 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
931 scm_is_typed_array instead.
932
933 Renamed the "frames" that are related to dynamic-wind to "dynamic
934 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
935 Updated documentation.
936
937 Disabled "futures":
938
939 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
940 * eval.c, init.c: Comment out all 'future' related things.
941
942 2006-01-28 Marius Vollmer <mvo@zagadka.de>
943
944 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
945 to inline.h to make it inline.
946
947 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
948
949 * strings.c (scm_i_take_stringbufn): New.
950 (scm_i_c_take_symbol): New.
951 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
952
953 * strings.h (scm_i_c_take_symbol): New.
954 (scm_i_take_stringbufn): New.
955
956 * symbols.c (lookup_interned_symbol): New function.
957 (scm_i_c_mem2symbol): New function.
958 (scm_i_mem2symbol): Use `lookup_symbol ()'.
959 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
960 creating a new Scheme string.
961 (scm_from_locale_symboln): Likewise.
962 (scm_take_locale_symbol): New.
963 (scm_take_locale_symboln): New.
964
965 * symbols.h (scm_take_locale_symbol): New.
966 (scm_take_locale_symboln): New.
967
968 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
969
970 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
971 free_count.
972
973 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
974
975 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
976 upon error
977
978 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
979
980 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
981 the GC when allocated_fluids_len is zero.
982
983 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
984
985 * load.c (the_reader, the_reader_fluid_num): New.
986 (scm_primitive_load): Support custom reader.
987 (scm_init_load): Init the_reader and the_reader_fluid_num; export
988 the_reader as `current-reader'.
989
990 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
991 (rather than an uninitialized pointer on the stack).
992
993 2005-12-07 Marius Vollmer <mvo@zagadka.de>
994
995 Reported by Bruce Korb:
996
997 * init.c (invoke_main_func): Don't call exit here. Throws that
998 are only caught by scm_with_guile will bypass us and would cause
999 scm_boot_guile to return erroneously.
1000 (scm_boot_guile): Expect scm_with_guile to return and call exit
1001 here, passing it an appropriate exit code.
1002
1003 From Andy Wingo:
1004
1005 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1006 unsigned char cast to an int, or -1 for EOS.
1007
1008 2005-12-06 Marius Vollmer <mvo@zagadka.de>
1009
1010 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1011 non-const.
1012 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
1013
1014 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1015 scm_enter_guile): Removed from public API. See comment at
1016 scm_without_guile for the rationale.
1017
1018 * scmsigs.c (read_without_guile): New.
1019 (signal_delivery_thread): Use it instead of
1020 scm_leave_guile/read/scm_enter_guile.
1021
1022 From Stephen Compall:
1023
1024 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1025 (CEVAL): Evaluate SRFI 61 cond clauses.
1026
1027 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
1028
1029 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1030 This was typically hit when running `gc-live-object-stats' right
1031 after starting Guile.
1032
1033 2005-11-30 Kevin Ryde <user42@zip.com.au>
1034
1035 * srfi-13.c (scm_string_append_shared): No copying if just one
1036 non-empty string in args.
1037
1038 2005-11-26 Kevin Ryde <user42@zip.com.au>
1039
1040 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
1041 by Ludovic Courtès.
1042
1043 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1044 "register".
1045
1046 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1047 scm_malloc returning NULL, it never does that.
1048 * putenv.c (putenv): Likewise.
1049
1050 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1051 much too big to want to inline.
1052
1053 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
1054
1055 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1056 the value at its top. This fixes a reference leak.
1057 (PUSH_REF): Perform `pstate->top++' after calling
1058 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1059 effects.
1060
1061 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
1062
1063 * gc.c (scm_weak_vectors): Removed.
1064
1065 2005-11-12 Kevin Ryde <user42@zip.com.au>
1066
1067 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
1068 by Ludovic Courtès.
1069
1070 2005-11-07 Marius Vollmer <mvo@zagadka.de>
1071
1072 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1073 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1074 section might exit non-locally.
1075
1076 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1077
1078 * eval.c (sym_instead): New symbol.
1079 (ENTER_APPLY): Remove optional use of a continuation when making
1080 trap call.
1081 (scm_debug_opts): Change doc for 'cheap option to make clear that
1082 it is now obsolete.
1083 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1084 making trap calls, and implement substitution of eval expressions
1085 and return values using the values that the trap call handlers
1086 return.
1087
1088 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1089
1090 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
1091
1092 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1093 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1094 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1095 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1096 scm_c_make_socket_address): New functions.
1097 * socket.h: Add prototypes.
1098
1099 2005-10-24 Kevin Ryde <user42@zip.com.au>
1100
1101 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1102 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1103 POSIX spec examples, the latter are not available on for instance
1104 NetBSD.
1105
1106 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1107 posix.texi.
1108
1109 * stime.c (scm_strftime): Update docstring from posix.texi.
1110
1111 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1112
1113 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1114
1115 * null-threads.h, pthread-threads.h
1116 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1117 (scm_i_pthread_mutexattr_recursive): New.
1118
1119 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1120 (scm_i_critical_section_mutex): Do not initialize statically.
1121 (scm_threads_prehistory): Initialize
1122 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1123 here.
1124
1125 * eval.c (source_mutex): Do not initialiaze statically.
1126 (scm_init_eval): Do it here, using
1127 scm_i_pthread_mutexattr_recursive.
1128
1129 2005-09-05 Marius Vollmer <mvo@zagadka.de>
1130
1131 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1132 New.
1133 (sym_reader): New.
1134 (scm_print_opts): Added "quote-keywordish-symbols" option.
1135 (quote_keywordish_symbol): New, for evaluating the option.
1136 (scm_print_symbol_name): Use it.
1137 (scm_init_print): Initialize new option to sym_reader.
1138
1139 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1140
1141 * eval.c (eval_letrec_inits): New.
1142 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1143
1144 2005-08-12 Marius Vollmer <mvo@zagadka.de>
1145
1146 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1147 Peter Gavin!
1148
1149 2005-08-12 Kevin Ryde <user42@zip.com.au>
1150
1151 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1152
1153 2005-08-06 Kevin Ryde <user42@zip.com.au>
1154
1155 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1156 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1157 scm_string_index, scm_string_index_right, scm_string_skip,
1158 scm_string_skip_right, scm_string_count, scm_string_map,
1159 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1160 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1161 procedures called in loops.
1162
1163 2005-08-02 Kevin Ryde <user42@zip.com.au>
1164
1165 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1166 avoid lots of copying where previoulsy growing by only 80 bytes at a
1167 time.
1168
1169 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1170
1171 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1172 already have scm_lookup_closure_module, which does the same thing.
1173
1174 2005-08-01 Marius Vollmer <mvo@zagadka.de>
1175
1176 New marking algorithm for weak hashtables that fixes the problem
1177 that references from the non-weak value to the associated weak
1178 key (for example) would prevent the entry from ever being dropped.
1179
1180 Guardians have been changed back to their original semantics and
1181 are no longer greedy and no longer drop cycles.
1182
1183 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1184 hashtable and guardian machinery but call the relevant functions
1185 directly.
1186
1187 * guardians.h, guardians.c, deprecated.h,
1188 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1189 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1190 Deprecated and moved into deprecated.[ch].
1191
1192 * guardians.h, guardians.c: Mostly rewritten.
1193 (scm_i_init_guardians_for_gc,
1194 scm_i_identify_inaccessible_guardeds,
1195 scm_i_mark_inaccessible_guardeds): New.
1196 (scm_make_guardian): Removed greedy_p argument.
1197
1198 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1199 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1200 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1201 (scm_weaks_prehistory): Removed.
1202 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1203 scm_i_mark_weak_vectors_non_weaks,
1204 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1205 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1206 scm_scan_weak_vectors): Removed.
1207
1208 * hashtab.h (scm_i_scan_weak_hashtables): New.
1209 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1210 SCM_WVECTF_NOSCAN.
1211 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1212 t->n_items.
1213 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1214 to latter. Do not scan the alists themselves, this is done by the
1215 weak vector code now. Just update the element count.
1216
1217 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1218 to latter. The type is now only part of the cell word.
1219 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1220
1221 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1222
1223 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1224
1225 Some changes towards making it possible to run Guile on the EM64T
1226 platform.
1227
1228 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1229 mallocating for (unsigned long *bounds).
1230
1231 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1232 scm_t_bits before storing them in the type word.
1233
1234 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1235 scm_t_bits to int.
1236
1237 2005-07-12 Kevin Ryde <user42@zip.com.au>
1238
1239 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1240 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1241 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1242 than scm_makfrom0str.
1243 Reported by Ken Raeburn.
1244
1245 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1246 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1247 returning SCM_GC_CARD_BVEC.
1248
1249 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1250 rather than latin-1 acute accent, the latter may not print on all
1251 terminals.
1252
1253 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1254 trailing deletions, so as to return a substring if those are the only
1255 changes.
1256
1257 2005-07-10 Kevin Ryde <user42@zip.com.au>
1258
1259 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1260 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1261 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1262 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1263
1264 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1265
1266 * gc-card.c (scm_i_card_statistics): init tag.
1267
1268 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1269
1270 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1271
1272 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1273 string.
1274
1275 2005-06-25 Kevin Ryde <user42@zip.com.au>
1276
1277 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1278 last change, use plain copy-on-write substrings, the individual
1279 descriptions in the srfi don't mention shared storage (only the
1280 introduction does).
1281
1282 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1283 null-terminator, rather than mallocing a whole new block.
1284 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1285
1286 2005-06-12 Marius Vollmer <mvo@zagadka.de>
1287
1288 * ramap.c (scm_array_index_map_x): First test for real arrays,
1289 then check for generalized vectors. This ensures that the
1290 generalized vector case need only work with zero-origin ranges.
1291 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1292 to access the target array, making these functions work with all
1293 kinds of arrays, not just bit arrays.
1294
1295 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1296 gh_list.c, gh_predicates.c: Deprecated everything.
1297
1298 * environments.c (environment_default_folder,
1299 environment_default_observer): Do not use gh_call3, gh_call1.
1300
1301 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1302
1303 * modules.c (s_scm_eval_closure_module): new function. Return the
1304 module inside an eval-closure.
1305
1306 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1307 table. This means that procedure properties are GC'd if the
1308 procedure dies.
1309
1310 2005-06-11 Kevin Ryde <user42@zip.com.au>
1311
1312 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1313 charset cases, count chars kept and build a string in a second pass,
1314 rather than using a cons cell for every char kept. Use a shared
1315 substring when nothing removed (such sharing is allowed by the srfi).
1316
1317 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1318
1319 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1320 string, so live object stats can be sorted with string<?.
1321
1322 2005-06-06 Marius Vollmer <mvo@zagadka.de>
1323
1324 * print.c (iprin1): When writing a string, collect all characters
1325 that can be printed directly into one call to scm_lfwrite.
1326 Previously, every character was output with its own call to
1327 write(2) on unbuffered ports.
1328
1329 * eval.c (scm_eval_options_interface): Use
1330 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1331 and SCM_CRITICAL_SECTION_END.
1332
1333 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1334 check for generalized vectors. This ensures that the generalized
1335 vector case need only work with zero-origin ranges.
1336
1337 2005-06-06 Kevin Ryde <user42@zip.com.au>
1338
1339 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1340 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1341 matched.
1342
1343 2005-06-05 Marius Vollmer <mvo@zagadka.de>
1344
1345 * eval.c: Added comment on how to make case 1.1 of
1346 r5rs_pitfall.test succeed.
1347
1348 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1349
1350 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1351
1352 * socket.c: Remove obsolete comment about socklen_t.
1353 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1354
1355 * numbers.h (isnan)[__MINGW32__]: Remove.
1356
1357 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1358 DEFAULT_INCLUDES when cross compiling.
1359
1360 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1361
1362 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
1363 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1364 from Jan's patch.)
1365
1366 2005-05-22 Marius Vollmer <mvo@zagadka.de>
1367
1368 * unif.c (scm_make_shared_array): Add old base to new base since
1369 scm_array_handle_pos does not include the base.
1370 (scm_aind): Likewise.
1371
1372 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1373 output port.
1374
1375 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1376
1377 Mac OS X compile warning fixes, reported by Richard Todd.
1378
1379 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1380 that it is signed.
1381
1382 * strports.c (st_resize_port): Add unsigned char cast.
1383 (scm_mkstrport): Make read/write_buf cast unsigned.
1384
1385 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1386
1387 * rdelim.c (scm_read_line): Initialize slen.
1388
1389 * load.c (scm_search_path): Remove weird >=1, and add
1390 parentheses to clarify conditions.
1391
1392 * hash.c (scm_hasher): Add const unsigned char cast.
1393
1394 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1395
1396 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1397
1398 Fix C99isms reported by Ludovic Courtès:
1399
1400 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1401 code.
1402
1403 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1404 of code.
1405
1406 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1407 of code.
1408 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1409 and current.
1410
1411 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1412
1413 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1414 compile warning reported by Werner Scheinast.
1415
1416 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1417
1418 * list.h: remove scm_list()
1419
1420 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1421 SCM_DEBUG_CELL_ACCESSES
1422 (FLUID_NEXT_LOC): idem.
1423
1424 2005-04-30 Kevin Ryde <user42@zip.com.au>
1425
1426 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1427 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1428 zero when re==0 and im<0. Reported by Jean Crepeau.
1429
1430 2005-04-25 Kevin Ryde <user42@zip.com.au>
1431
1432 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
1433 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1434 few sensible uses (like filling with a random number generator say),
1435 but has been allowed in the past and so should be kept.
1436
1437 2005-04-23 Kevin Ryde <user42@zip.com.au>
1438
1439 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1440 scm_hash_fn_remove_x.
1441
1442 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1443 the caller when cons* is reached through apply.
1444
1445 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1446 list is called using apply, under the debugging evaluator.
1447 (scm_list): Remove.
1448
1449 * list.c, list.h (scm_make_list): New code, moving make-list from
1450 boot-9.scm.
1451
1452 2005-04-14 Kevin Ryde <user42@zip.com.au>
1453
1454 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1455 converted from scheme code in boot-9.scm.
1456
1457 2005-04-11 Kevin Ryde <user42@zip.com.au>
1458
1459 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1460 Validate list argument, scm_string_append and scm_string_append_shared
1461 don't do that to their rest argument (in a normal build).
1462
1463 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1464
1465 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
1466 closure can not be stored since it is no longer valid at GC time.
1467 (make_hash_table): Initialize 'hash_fn' field.
1468 (scm_i_rehash): Only store hash_fn in hash table when closre is
1469 NULL.
1470 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
1471 non-NULL. Always use a NULL closure.
1472 (scm_hash_fn_create_handle_x): Also rehash when table contains too
1473 few entries.
1474
1475 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1476
1477 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
1478 argument; always use scm_delq_x. The delete_fn function works on
1479 the handle, not the key, and it therefore makes no sense to make
1480 it configurable. Changed all callers.
1481 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
1482 (scm_hash_clear): Accept plain vectors as hashtables.
1483 (scm_delx_x): Removed.
1484
1485 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
1486
1487 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
1488 compatibility with gcc -std=c99.
1489
1490 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1491
1492 * async.h (scm_mask_ints): Removed left over reference to
1493 scm_root.
1494
1495 * threads.c: Removed fprintf debug statements.
1496
1497 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
1498
1499 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
1500
1501 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
1502
1503 * debug.c (scm_make_memoized): Remove unnecessary critical
1504 section, and simplify by using SCM_RETURN_NEWSMOB.
1505
1506 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1507
1508 * strings.h (SCM_STRING_UCHARS): Added missing argument.
1509
1510 2005-03-18 Kevin Ryde <user42@zip.com.au>
1511
1512 * arbiters.c (FETCH_STORE) [generic C]: Should be
1513 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
1514
1515 2005-03-13 Kevin Ryde <user42@zip.com.au>
1516
1517 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
1518 srfi-60.
1519
1520 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
1521 because OR-ing bits into a negative can reduce the value to an inum.
1522
1523 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
1524 casting inum to double since that can lose precision.
1525
1526 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1527
1528 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
1529 (guilify_self_1): Initialize it.
1530
1531 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
1532 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
1533 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
1534 field.
1535 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
1536 recursively.
1537 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
1538 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
1539 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
1540 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
1541 scm_after_gc_c_hook here.
1542 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
1543 scm_after_gc_c_hook when a full GC has in fact been performed.
1544 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
1545
1546 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
1547 scm_gc_heap_lock.
1548
1549 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
1550 scm_gc_running_p while the scm_i_sweep_mutex is locked.
1551
1552 * inline.h (scm_cell, scm_double_cell): Do not check
1553 scm_gc_running_p, allocation during sweeping is OK.
1554
1555 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
1556 not set scm_block_gc.
1557
1558 * init.c (scm_i_init_guile): Do not set scm_block_gc.
1559
1560 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
1561 instead of scm_malloc. The latter can not be used during GC.
1562
1563 2005-03-09 Marius Vollmer <mvo@zagadka.de>
1564
1565 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1566 years.
1567
1568 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1569
1570 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1571 scm_gc_running_p. Sweeping can happen in parallel with
1572 allocation.
1573
1574 * inline.h: Updated comments for current threading implementation.
1575
1576 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1577 (scm_i_thread): Removed unused signal_asyncs field.
1578 (threads_mark): Do not mark it.
1579 (guilify_self_1): Do not initialize it. Do initialize
1580 continuation_root field.
1581 (do_thread_exit): Do not remove thread from all_threads list.
1582 (on_thread_exit): Do it here, after leaving guile mode.
1583 (sleep_level): Removed.
1584 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1585 returning. Do not support recursive sleeps.
1586 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1587 entry. Do not support recursive sleeps.
1588
1589 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1590 resize_all_states): Collapsed ensure_state_size and
1591 ensure_all_state_sizes into one function named resize_all_states.
1592 Allocate new vectors outside of single threaded region. Do only
1593 simple things inside that region.
1594 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1595 while adding to the global lists.
1596
1597
1598 2005-03-08 Marius Vollmer <mvo@zagadka.de>
1599
1600 libltdl is no longer distributed. We expect it to be installed
1601 already.
1602
1603 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1604 (libguile_la_LIBADD): Removed @LIBLTDL@.
1605
1606 2005-03-07 Marius Vollmer <mvo@zagadka.de>
1607
1608 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1609 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1610 they also block/unblock execution of asyncs and call
1611 scm_async_click which is declared in async.h but threads.h can not
1612 include async.h since async.h already includes threads.h.
1613 (scm_i_critical_section_level): New, for checking mistakes in the
1614 use of the SCM_CRITICAL_SECTION_* macros.
1615 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1616 critical sections can be nested.
1617
1618 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1619 not zero.
1620
1621 * threads.h, threads.c (scm_frame_lock_mutex): New.
1622 (scm_frame_critical_section): Take mutex as argument.
1623 (framed_critical_section_mutex): New, used as default for above.
1624 (scm_init_threads): Initialize it.
1625 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1626 scm_i_critical_section_mutex; both are initialized statically.
1627
1628 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1629 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
1630 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1631 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
1632
1633 * debug.c (scm_debug_options): Replace
1634 SCM_CRITICAL_SECTION_START/END with a frame and
1635 scm_frame_critical_section.
1636
1637 * continuations.c (scm_make_continuation): No longer a critical
1638 section.
1639 (scm_dynthrow): Abort when scm_i_critical_section_level is
1640 not zero.
1641
1642 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1643
1644 * threads.c (scm_try_mutex): Renamed argument for consistency.
1645
1646 * root.c (scm_call_with_dynamic_root): New docstring.
1647
1648 * eval.c: Define _GNU_SOURCE.
1649
1650 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1651
1652 Big merge from the mvo-thread-cleanup branch. The main changes
1653 are:
1654
1655 - The dynamic roots functionality has been split into dynamic
1656 states and continuations barriers. Fluids have been
1657 reimplemented and can now be garbage collected.
1658
1659 - Initialization of Guile now works in a multi-thread friendly
1660 manner. Threads can freely enter and leave guile mode.
1661
1662 - Blocking on mutexes or condition variables or while selecting
1663 can now be reliably interrupted via system asyncs.
1664
1665 - The low-level threading interface has been removed.
1666
1667 - Signals are delivered via a pipe to a dedicated 'signal delivery
1668 thread'.
1669
1670 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1671
1672 * throw.c (scm_handle_by_message): Exit only the current thread,
1673 not the whole process.
1674 (scm_handle_by_message_noexit): Exit when catching 'quit.
1675
1676 * scmsigs.c (take_signal, signal_delivery_thread,
1677 start_signal_delivery_thread, ensure_signal_delivery_thread,
1678 install_handler): Reimplemented signal delivery as explained in
1679 the comments.
1680
1681 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1682 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1683 scm_i_sched_yield, scm_i_pthread_sigmask,
1684 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1685 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1686 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1687 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1688 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1689 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1690 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1691 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1692 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1693 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1694 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1695 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1696 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1697 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1698 when using pthreads.
1699 * null-threads.c, null-threads.h: Provide dummy definitions for
1700 the above symbols when not using pthreads.
1701
1702 * modules.h, modules.c (scm_frame_current_module): New.
1703
1704 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1705 instead of scm_internal_dynamic_wind.
1706
1707 * init.h, init.c (restart_stack, start_stack): Removed.
1708 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1709 (scm_boot_guile_1): Removed.
1710 (scm_i_init_mutex): New.
1711 (really_cleanup_for_exit, cleanup_for_exit): New.
1712 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1713 Moved around some init funcs. Call
1714 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1715 with atexit.
1716
1717 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1718 Use "!scm_is_eq" instead of "!=".
1719
1720 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1721 SCM_USE_COOP_THREADS): Removed.
1722
1723 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1724 maintained. Unlock scm_i_sweep_mutex before running
1725 scm_after_gc_c_hook.
1726 (scm_permanent_object): Allocate outside of critical section.
1727 (cleanup): Removed.
1728
1729 * fluids.h, fluids.c: Reimplemented completely.
1730 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1731 SCM_FAST_FLUID_SET): Reimplemented as functions.
1732 (scm_is_fluid): New.
1733 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1734 (scm_make_dynamic_state, scm_dynamic_state_p,
1735 scm_is_dynamic_state, scm_current_dynamic_state,
1736 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1737 scm_c_with_dynamic_state, scm_with_dynamic_state,
1738 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1739
1740 * feature.c (progargs_fluid): New.
1741 (scm_program_arguments, scm_set_program_arguments): Use it instead
1742 of scm_progargs.
1743 (scm_init_feature): Allocate it. Also, only add "threads" feature
1744 when SCM_USE_PTHREAD_THREADS is true.
1745
1746 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1747 scm_make_rec_mutex, with all the consequences.
1748 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1749 scm_internal_dynamic_wind. Handle dynamic states as second
1750 argument.
1751
1752 * threads.h, threads.c (scm_internal_select): Renamed to
1753 scm_std_select and discouraged old name.
1754 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1755 and scm_std_usleep.
1756 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1757 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1758 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1759 SCM_THREAD_DATA): Removed.
1760 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1761 (scm_i_thread): New.
1762 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1763 Use scm_assert_smob_type.
1764 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1765 scm_thread_self, scm_thread_yield, scm_mutex_init,
1766 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1767 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1768 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1769 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1770 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1771 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1772 scm_thread_select): Removed. Replaced with scm_i_pthread
1773 functions as appropriate.
1774 (scm_in_guile, scm_outside_guile): Removed.
1775 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1776 take a ticket.
1777 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1778 New.
1779 (scm_i_frame_single_threaded): New.
1780 (scm_init_threads_default_dynamic_state): New.
1781 (scm_i_create_thread): Removed.
1782 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1783 (scm_make_recursive_mutex): New.
1784 (scm_frame_critical_section): New.
1785 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1786 latter, changed all uses.
1787 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1788 scm_i_set_last_debug_frame): New, use them instead of scm_root
1789 stuff.
1790 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1791 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1792 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1793 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1794 (remqueue): Allow the removal of already removed cells. Indicate
1795 whether a real removal has happened.
1796 (scm_thread): Removed, replaced with scm_i_thread.
1797 (make_thread, init_thread_creatant): Removed.
1798 (cur_thread): Removed.
1799 (block_self, unblock_from_queue): New.
1800 (block, timed_block, unblock): Removed.
1801 (guilify_self_1, guilify_self_2, do_thread_exit,
1802 init_thread_key_once, init_thread_key,
1803 scm_i_init_thread_for_guile, get_thread_stack_base,
1804 scm_init_guile): New initialisation method.
1805 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1806 thread creation.
1807 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1808 "fair" to fat and implemented new semantics, including reliable
1809 interruption.
1810 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1811 (scm_threads_mark_stacks): Explicitly mark handle.
1812 (scm_std_select): Allow interruption by also selecting on the
1813 sleep_pipe.
1814 (scm_i_thread_put_to_sleep): Handle recursive requests for
1815 single-threadedness.
1816 (scm_threads_prehistory, scm_init_threads): Put current thread
1817 into guile mode via guileify_self_1 and guileify_self_2,
1818 respectively.
1819
1820 * fluid.h (SCM_FLUIDP): Deprecated.
1821
1822 * coop-threads.c: Removed.
1823
1824 * continuations.h, continuations.c (scm_with_continuation_barrier,
1825 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1826 New.
1827
1828 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1829 (async_mutex): New.
1830 (scm_async_click): Protected with async_mutex. Do not deal with
1831 signal_asyncs, which are gone. Set cdr of handled async cell to
1832 #f.
1833 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1834 current sleep.
1835 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1836 since that might not work during early initialization.
1837
1838 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1839 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1840 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1841 and SCM_CRITICAL_SECTION_END.
1842 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1843 SCM_CRITICAL_SECTION_START/END.
1844
1845 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1846 (libguile_la_SOURCES): Added null-threads.c
1847 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1848 threads-plugin.c.
1849 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1850
1851 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1852 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1853 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1854 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1855 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1856 scm_make_root): Removed or deprecated. Replaced with references
1857 to the current thread, dynamic state, continuation barrier, or
1858 some fluid, as appropriate.
1859 (root_mark, root_print): Removed.
1860 (scm_internal_cwdr): Reimplemented guts with
1861 scm_frame_current_dynamic_state and
1862 scm_i_with_continuation_barrier.
1863 (scm_dynamic_root): Return current continuation barrier.
1864
1865
1866 2005-02-28 Marius Vollmer <mvo@zagadka.de>
1867
1868 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1869 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1870 cleanliness.
1871 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1872 IP_DROP_MEMBERSHIP.
1873 Thanks to Greg Troxel!
1874
1875 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1876
1877 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1878 block.
1879
1880 2005-02-25 Marius Vollmer <mvo@zagadka.de>
1881
1882 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1883 so that no two weak alist vectors share a spine.
1884 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1885 during GC before inserting the new alist cell.
1886
1887 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1888
1889 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1890 the hashtable.
1891 (scm_hash_fn_create_handle_x): Likewise.
1892 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1893
1894 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1895
1896 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1897 the prototypical examples mentioned in the old reference manual.
1898 Instead keep the old semantics of dispatching on type. (Yes, this
1899 is extremely ugly, but the whole point of keeping the deprecated
1900 interface is not to break old code.)
1901
1902 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1903
1904 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1905 scm_i_array_dims.
1906
1907 2005-01-28 Kevin Ryde <user42@zip.com.au>
1908
1909 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1910 integer-expt and multiply/divide. Inexacts and fractions no longer
1911 supported (they happened to work before for left shifts, but not
1912 right). Don't really need inexacts and fractions, since ash is
1913 documented as a "bitwise operation", and all the rest of those only
1914 take exact integers.
1915
1916 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1917
1918 * gc-card.c (scm_i_card_statistics): map structs, closures and
1919 subrs to one tag.
1920
1921 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
1922 (tag_table_to_type_alist): ignore unknown types.
1923
1924 * gc-segment.c (scm_i_all_segments_statistics): new function.
1925 (scm_i_heap_segment_statistics): new function
1926
1927 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1928 statistics on the number of live objects of each type.
1929
1930 * gc-card.c (scm_i_tag_name): new function.
1931 (scm_i_card_statistics): new function.
1932
1933 2005-01-24 Kevin Ryde <user42@zip.com.au>
1934
1935 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1936 POSIX and C99 don't document errno being set. Reported by Bruno
1937 Haible.
1938 (scm_flock): Update docstring from manual.
1939
1940 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1941 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1942 a 64-bit system.
1943
1944 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1945 sa_handler, needs to be a long on 64-bit systems where int is only 32
1946 bits.
1947
1948 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1949
1950 * environments.c (obarray_enter, obarray_replace): Call
1951 SCM_HASHTABLE_INCREMENT when adding a new entry.
1952
1953 * objects.c: Include goops.h for the scm_class_of prototype.
1954
1955 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1956 sizes to be smaller than the maximum lengths of vectors.
1957
1958 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1959
1960 * ports.c, smob.c: Include "libguile/goops.h".
1961
1962 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1963 scm_class_char, scm_class_pair, scm_class_procedure,
1964 scm_class_string, scm_class_symbol,
1965 scm_class_procedure_with_setter, scm_class_primitive_generic,
1966 scm_class_vector, scm_class_null, scm_class_real,
1967 scm_class_complex, scm_class_integer, scm_class_fraction,
1968 scm_class_unknown, scm_port_class, scm_smob_class,
1969 scm_no_applicable_method, scm_class_of): Moved from objects to
1970 goops since they are only useable once goops has been loaded.
1971 (scm_classes_initialized): Removed.
1972 (scm_class_of): Do not check it.
1973 (create_standard_classes): Do not set it.
1974
1975 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1976
1977 * objects.h, objects.c (scm_classes_initialized): New.
1978 (scm_class_of): Signal error when scm_classes_initialized is zero.
1979 * goops.c (create_standard_classes): Set scm_classes_initialized
1980 to one.
1981
1982 * random.c (scm_random_solid_sphere_x): Use
1983 scm_c_generalized_vector_length instead of
1984 scm_uniform_vector_length.
1985
1986 2005-01-16 Marius Vollmer <mvo@zagadka.de>
1987
1988 * script.c (scm_compile_shell_switches): Removed debugging output.
1989
1990 2005-01-15 Kevin Ryde <user42@zip.com.au>
1991
1992 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1993 docstrings from manual.
1994 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1995
1996 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1997
1998 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1999 its value.
2000
2001 Implement u64 and s64 uniform numeric vectors with bignums when
2002 scm_t_uint64 and scm_t_int64 are not available.
2003
2004 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2005 scm_array_handle_u64_elements,
2006 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2007 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2008 is not available.
2009 (scm_take_s64vector, scm_array_handle_s64_elements,
2010 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2011 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2012 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2013 scm_t_int64/scm_t_uint64 are not available.
2014 (uvec_mark): New, to mark the bignums.
2015 (alloc_uvec): Initialize bignums.
2016 (uvec_fast_ref): Return bignums directly.
2017 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2018 assert_exact_integer): New.
2019 (uvec_fast_set): Use them to validate the bignums.
2020 (scm_init_srfi_4): Set mark function of smob when needed.
2021 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2022 scm_int64_max.
2023
2024 Recognize 1.4 -e syntax.
2025
2026 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2027 (scm_compile_shell_switches): Use them to recognize and convert
2028 1.4 "-e" syntax.
2029
2030 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2031
2032 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2033 deprecated features that once were macros but are now functions
2034 back into macros.
2035
2036 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2037
2038 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2039 * deprecation.c (scm_issue_deprecation_warning,
2040 scm_c_issue_deprecation_warning_fmt): Use it.
2041 (mode): Removed.
2042 (print_summary): New.
2043 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2044 mode.
2045
2046 Deprecated SCM_ARRAY* macros.
2047
2048 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2049 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2050 version. Changed all uses.
2051 (scm_tc16_array, scm_i_tc16_array,
2052 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2053 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2054 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2055 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2056 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2057 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2058 SCM_ARRAY_V, SCM_I_ARRAY_V,
2059 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2060 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2061 scm_t_array, scm_i_t_array): Likewise.
2062 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2063 Moved from unif.h to unif.c.
2064 (scm_c_array_rank): New.
2065 (scm_array_rank): Reimplement using it.
2066
2067 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2068 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2069 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2070
2071 2005-01-11 Marius Vollmer <mvo@zagadka.de>
2072
2073 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2074 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2075 scm_c_generalized_vector_ref and scm_cvref, and
2076 scm_c_generalized_vector_set_x, respectively.
2077 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2078 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2079
2080 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2081 former to latter and made public. Changed all uses.
2082 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2083 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2084 (scm_i_shap2ra): New internal version of scm_shap2ra.
2085 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2086 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2087 (scm_ra_set_contp): Deprecated, changed all uses to
2088 scm_i_ra_set_contp.
2089 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2090
2091 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2092
2093 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2094 Trotts!
2095
2096 * unif.c (scm_list_to_typed_array): Allow the specification of the
2097 upper bound as well. This is needed for empty arrays.
2098 (l2ra): Give needed number of elements in error message.
2099 (scm_i_print_array): Print length information for arrays that need
2100 it.
2101 (scm_i_read_array): Parse it.
2102
2103 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2104 scm_i_object_chars, scm_i_object_length): Brought back from the
2105 dead.
2106
2107 2005-01-10 Marius Vollmer <mvo@zagadka.de>
2108
2109 * ramap.c: Replaced single-index uses of scm_array_set_x with
2110 scm_c_generalized_vector_set_x.
2111
2112 * unif.c (scm_array_rank, scm_array_dimensions,
2113 scm_shared_array_offset, scm_shared_array_increments,
2114 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2115 to simplify code and make it more general.
2116 (scm_shared_array_root): Work with all kinds of arrays, including
2117 naked vectors.
2118 (indices_to_pos): New.
2119 (scm_make_shared_array): Use it instead of scm_aind; use handle
2120 for oldra.
2121
2122 2005-01-10 Kevin Ryde <user42@zip.com.au>
2123
2124 * posix.c (scm_mkstemp): Update docstring from manual.
2125
2126 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2127
2128 2005-01-09 Marius Vollmer <mvo@zagadka.de>
2129
2130 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2131 scm_i_uniform_vector_set_proc): New.
2132 (u8ref, u8set, s8ref, s8set, etc): New.
2133 (uvec_reffers, uvec_setters): New.
2134 (uvec_to_list): Use generic scm_array_handle_ref instead of
2135 uvec_fast_ref since scm_array_handle_ref should be faster now.
2136 (coerce_to_uvec, scm_c_uniform_vector_ref,
2137 scm_c_uniform_vector_set_x): Likewise.
2138
2139 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2140 New.
2141 (scm_t_array_handle): Added ref, set, elements and
2142 writable_elements for fast inline operation of
2143 scm_array_handle_ref and scm_array_handle_set.
2144 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2145 and replaced with inline code that simply calls the ref/set
2146 members of the handle.
2147 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2148 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2149 New.
2150 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2151 and memoize_set.
2152 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2153 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2154 scm_bit_invert_x): Correctly multiply index with increment in the
2155 general case.
2156
2157 * unif.c (scm_array_handle_set): Correctly execute only one
2158 alternative. D'Oh!
2159 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2160 the array; this covers all cases with much simpler code.
2161
2162 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2163 as well.
2164
2165 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2166
2167 * srfi-4.c (uvec_type): New.
2168 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2169 scm_c_uniform_vector_x): Use it to get concrete type.
2170
2171 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2172 fit the docs.
2173
2174 * unif.c (ra2l): Handle zero rank arrays.
2175 (scm_i_print_array): Print zero rank arrays specially.
2176 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2177 (scm_i_read_array): Allow zero rank arrays.
2178
2179 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2180
2181 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2182 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2183 and SCM_SET_HASHTAB_BUCKET.
2184
2185 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2186 Removed ref_stack field.
2187 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2188 of a print state. Use them everywhere instead of ref_stack.
2189
2190 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2191
2192 * srfi-4.c: Include deprecation.h.
2193
2194 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2195 deprecated.c, eq.c
2196 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2197 (scm_vector_elements, scm_vector_writable_elements,
2198 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2199 unif.[hc].
2200 (SCM_SIMPLE_VECTOR_LOC): Removed.
2201 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2202 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2203 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2204 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2205 latter. Changed use in eq.c.
2206
2207 2005-01-07 Marius Vollmer <mvo@zagadka.de>
2208
2209 Make the uniform vector routines also deal with one dimensional
2210 arrays.
2211
2212 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2213 SCM_SMOB_PREDICATE in this file.
2214 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2215 of the right type.
2216 (scm_is_uniform_vector): Likewise.
2217 (uvec_fast_ref): Made BASE param const.
2218 (uvec_writable_elements, uvec_elements): New.
2219 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2220 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2221 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2222 arrays.
2223 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2224 argument convention.
2225 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2226 checking.
2227 (scm_uniform_vector_length): Use uvec_length.
2228
2229 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2230
2231 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2232 scm_c_uniform_vector_size): Removed.
2233 (scm_array_handle_uniform_element_size): New.
2234
2235
2236 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2237 type of POS parameter to be signed, positions can be negative.
2238 (scm_array_handle_release): New, changed all uses of
2239 scm_t_array_handle to properly call it.
2240 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2241 Renamed former to latter, changed all uses.
2242
2243 2005-01-05 Marius Vollmer <mvo@zagadka.de>
2244
2245 Updated bitvector routines to also use scm_t_array_handles.
2246
2247 * unif.h (scm_bitvector_elements,
2248 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2249 deliver offset, length and increment to caller. Changed all uses.
2250 (scm_bitvector_release_elements,
2251 scm_frame_bitvector_release_elements,
2252 scm_bitvector_release_writable_elements,
2253 scm_frame_bitvector_release_writable_elements): Removed.
2254 (scm_array_handle_bit_elements,
2255 scm_array_handle_bit_writable_elements,
2256 scm_array_handle_bit_elements_offset): New.
2257 (scm_make_typed_array): The special value for non-initialized
2258 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2259 was a valid value to fill bitvectors with, so it can't really be
2260 specialed out.
2261
2262 2005-01-04 Kevin Ryde <user42@zip.com.au>
2263
2264 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2265 Reported by Bill Schottstaedt.
2266
2267 2005-01-02 Marius Vollmer <mvo@zagadka.de>
2268
2269 * sort.c (quicksort): Added INC parameter for non-contigous
2270 vectors.
2271 (quicksort1): New, for contigous vectors. Both functions are
2272 generated from the same code by including "quicksort.i.c".
2273 (scm_restricted_vector_sort_x): Call one of quicksort and
2274 quicksort1, depending on increment of vector.
2275 (scm_sort): Simply call scm_sort_x on a copy of the list or
2276 vector.
2277 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2278 size_t, added inc parameter.
2279 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2280 so that it doesn't leak.
2281 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2282 list or vector.
2283
2284 * ramap.c (scm_array_map_x): Do not try to convert fill value
2285 before filling, any necessary conversion is done while storing.
2286
2287 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2288 doing it inline.
2289
2290 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2291 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2292 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2293
2294 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2295 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2296 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2297 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2298 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2299 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2300 vector elements API or simple vector API, as appropriate. Removed
2301 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2302 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2303
2304 * srfi-4.h, srfi-4.c,
2305 srfi-4.i.c (scm_array_handle_uniform_elements,
2306 scm_array_handle_uniform_writable_elements,
2307 scm_uniform_vector_elements,
2308 scm_uniform_vector_writable_elements):
2309 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2310 scm_t_array_handle, deliver length and increment.
2311 (scm_array_handle_<foo>_elements,
2312 scm_array_handle_<foo>_writable_elements): New.
2313
2314 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2315 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2316
2317 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2318 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2319 scm_array_handle_set, scm_array_handle_elements
2320 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2321 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2322 scm_dimensions_to_uniform_array): Deprecated for real.
2323 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2324 snarfing wont allow a mismatch between C and Scheme arglists.
2325 (scm_make_shared_array, scm_enclose_array): Correctly use
2326 scm_c_generalized_vector_length instead of
2327 scm_uniform_vector_length.
2328
2329 * validate.h (SCM_VALIDATE_VECTOR,
2330 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2331 of SCM_VECTORP.
2332
2333 * weaks.h, weaks.c: Use new internal weak vector API from
2334 vectors.h.
2335
2336 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2337 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2338 'extra' to being regular sources.
2339 (noinst_HEADERS): Added quicksort.i.c.
2340 * quicksort.i.c: New file.
2341
2342 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2343 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2344 and reimplemented. Replaced all uses with scm_vector_elements,
2345 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2346 appropriate.
2347 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2348 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2349 SCM_SIMPLE_VECTOR_LOC): New.
2350 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2351 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2352 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2353 Removed.
2354 (scm_vector_copy): New.
2355 (scm_vector_elements, scm_vector_writable_elements): Use
2356 scm_t_array_handle, deliver length and increment. Moved to
2357 unif.h. Changed all uses.
2358 (scm_vector_release_elements,
2359 scm_vector_release_writable_elements,
2360 (scm_frame_vector_release_elements,
2361 scm_frame_vector_release_writable_elements): Removed.
2362 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2363 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2364 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2365 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2366 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2367 weak vectors.
2368
2369 2004-12-29 Marius Vollmer <mvo@zagadka.de>
2370
2371 No longer use creators to specify the type of an array. Creators
2372 expose the fact that arrays are wrapped around vectors, but that
2373 might change.
2374
2375 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2376 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2377 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2378 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2379 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2380 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2381 uvec_proc_vars): Removed.
2382 (scm_i_generalized_vector_creator): Removed.
2383 (scm_i_generalized_vector_type): New.
2384
2385 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2386 scm_make_typed_array, scm_array_type, scm_list_to_array,
2387 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2388 (scm_array_creator): Removed.
2389 (scm_array_p): Deprecated second PROT argument.
2390 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2391 Deprecated, reimplemented in terms of scm_make_typed_array and
2392 scm_list_to_typed_array.
2393 (scm_i_proc_make_vector, scm_i_proc_make_string,
2394 scm_i_proc_make_bitvector): Removed.
2395 (type_creator_table, init_type_creator_table, type_to_creator,
2396 make_typed_vector): New.
2397 (scm_i_convert_old_prototype): Removed.
2398 (prototype_to_type): New.
2399 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2400 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2401 minor added clarity.
2402 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2403 instead of scm_make_uve.
2404 (tag_creator_table, scm_i_tag_to_creator): Removed.
2405 (tag_to_type): New.
2406 (scm_i_read_array): Use scm_list_to_typed_array instead of
2407 scm_list_to_uniform_array.
2408
2409 2004-12-27 Marius Vollmer <mvo@zagadka.de>
2410
2411 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2412 (scm_bitvector_writable_elements): New.
2413 (scm_bitvector_release, scm_bitvector_release_elements):
2414 Renamed former to latter. Added explicit call to
2415 scm_remember_upto_here_1.
2416 (scm_frame_bitvector_release,
2417 scm_frame_bitvector_release_elements): Renamed former to latter.
2418 (scm_bitvector_release_writable_elements,
2419 scm_bitvector_release_writable_elements): New.
2420 Changed all uses as required by the changes above.
2421
2422 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2423 scm_u8vector_elements, etc): Made return value "const".
2424 (scm_uniform_vector_writable_elements,
2425 scm_u8vector_writable_elements, etc): New.
2426 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2427 Renamed former to latter. Added explicit call to
2428 scm_remember_upto_here_1.
2429 (scm_frame_uniform_vector_release,
2430 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2431 (scm_uniform_vector_release_writable_elements,
2432 scm_frame_uniform_vector_release_writable_elements): New. Takes
2433 crown of longest identifier yet.
2434 Changed all uses as required by the changes above.
2435
2436 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2437 void.
2438 (scm_is_vector, scm_vector_p, scm_vector_length,
2439 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2440 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2441 scm_vector_move_left_x, scm_vector_move_right_x,
2442 scm_vector_fill_x): handle one-dimensional arrays.
2443 (scm_vector_elements, scm_vector_release_elements,
2444 scm_vector_frame_release_elements, scm_vector_writable_elements,
2445 scm_vector_release_writable_elements,
2446 scm_vector_frame_release_writable_elements): New.
2447 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2448 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
2449
2450 * ramap.c (scm_ramapc, scm_raeql): Use
2451 scm_c_generalized_vector_length instead of
2452 scm_uniform_vector_length.
2453 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2454 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2455
2456 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2457
2458 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2459 member for relocating debug frames.
2460 (scm_make_continuation): Set it.
2461
2462 * stacks.c (read_frame, read_frames, scm_make_stack,
2463 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
2464 of continuations instead of calculating the offset ourselves.
2465 Relocate 'vect' member of scm_t_debug_frame.
2466
2467 2004-12-16 Kevin Ryde <user42@zip.com.au>
2468
2469 * ramap.c (scm_array_map_x): Check for at least one source argument.
2470
2471 2004-12-14 Kevin Ryde <user42@zip.com.au>
2472
2473 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
2474 the C code so for the final call to the predicate procedure is a tail
2475 call, per SRFI-13 spec.
2476
2477 2004-12-10 Kevin Ryde <user42@zip.com.au>
2478
2479 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
2480 recent revision to the reference manual.
2481
2482 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
2483 with "%", C99 says it's well-defined.
2484
2485 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
2486 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
2487 bother trying to fit scm_from_ulong, not really worth the trouble if
2488 addresses are more than 4 bytes usually.
2489
2490 2004-11-30 Kevin Ryde <user42@zip.com.au>
2491
2492 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
2493 arm32. Reported by Greg Troxel.
2494
2495 2004-11-14 mvo <mvo@zagadka.de>
2496
2497 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
2498
2499 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
2500
2501 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2502
2503 Enclosed arrays are now their own smob. This has been done to
2504 make the code more explicit about them and to prepare for the time
2505 when generalized vectors include arbitrary one-dimensional
2506 arrays. (Uptonow, enclosed arrays have been recognized by their
2507 use of an array as their storage 'vector'. When all generalized
2508 vectors are allowed as storage, including one-dimensional arrays,
2509 this will no longer work.)
2510
2511 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
2512 New.
2513 (exactly_one_third, singp): Removed.
2514 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
2515 scm_shared_array_offset, scm_shared_array_increments): Handle
2516 enclosed arrays explicitely.
2517 (scm_array_rank): Likewise. Also, do not return zero for
2518 non-arrays, signal an error instead since arrays with rank zero do
2519 exist.
2520 (scm_i_make_ra): New, for specifying the tag of the new array.
2521 (scm_make_enclosed_array): Use it.
2522 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
2523 (scm_make_shared_array): Use scm_c_generalized_vector_length
2524 instead of scm_uniform_vector_length.
2525 (scm_array_in_bounds_p): Rewritten to be much cleaner.
2526 (scm_i_cvref): New, doing the job of scm_cvref.
2527 (scm_cvref): Use scm_i_cvref.
2528 (scm_array_ref): Do not accept non-arrays when no indices are
2529 given. Use scm_i_cvref to do the actual access.
2530 ("uniform-array-set1"): Do not register.
2531 (scm_array_set_x, scm_uniform_array_read_x,
2532 scm_uniform_array_write): Handle enclosed arrays explicitly.
2533 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
2534 handle enclosed arrays.
2535 (scm_array_to_list): Handle enclosed arrays explicitly.
2536 (rapr1): Removed.
2537 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
2538 enclosed arrays.
2539 (scm_i_print_enclosed_array): New.
2540 (tag_proto_table, tag_creator_table): Renamed former to latter.
2541 Added "a" and "b" for strings and bitvectors, resp.
2542 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
2543 latter. Tag "a" is in the table now, no need to handle it as a
2544 legacy tag.
2545 (scm_raprin1): Just call scm_iprin1.
2546 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
2547 explicitly.
2548 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
2549 Use scm_i_print_array as printer for scm_tc16_array.
2550
2551 2004-11-10 Marius Vollmer <mvo@zagadka.de>
2552
2553 * ramap.c (cind): Changed second arg to be pointer to long instead
2554 of uniform vector.
2555 (scm_ramapc): Allocate index vector with scm_malloc and not as
2556 uniform vector. Wrap it in a frame so that it gets properly freed.
2557 (scm_array_index_map_x): Likewise.
2558
2559 * unif.c: Changed all uses of scm_array_prototype to
2560 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
2561 prototype is known.
2562 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2563 in terms of scm_uniform_vector_read_x and
2564 scm_uniform_vector_write, respectively. Strings and
2565 bitvector support has been dropped.
2566
2567 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2568 needed files directly. Include config.h, <unistd.h> and <io.h>
2569 when available.
2570 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2571
2572 2004-11-09 Marius Vollmer <mvo@zagadka.de>
2573
2574 * gh_data.c (gh_uniform_vector_length): Properly use
2575 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2576
2577 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2578
2579 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2580 New.
2581 (scm_i_uniform_vector_creator): Removed.
2582 (scm_i_generalized_vector_creator): New.
2583 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2584 handle generalized vectors, only uniform numeric vectors.
2585 (alloc_uvec): Do length check here...
2586 (make_uvec): ...but not here.
2587 (coerce_to_uvec): Use new generalized vector functions to handle
2588 all kinds of vectors in one go.
2589
2590 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2591 remaining scm_tc7_unused tags to get a neatly ordered list.
2592
2593 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2594 longer handle scm_tc7_bvect bitvectors.
2595
2596 * ramap.c: Use the new generalized vector functions to handle all
2597 vector like things.
2598
2599 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2600 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2601 scm_generalized_vector_length, scm_generalized_vector_ref,
2602 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2603 scm_is_generalized_vector, scm_c_generalized_vector_length,
2604 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2605 New.
2606
2607 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2608 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2609 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2610 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2611 scm_c_bitvector_length, scm_c_bitvector_ref,
2612 scm_c_bitvector_set_x, scm_bitvector_elements,
2613 scm_bitvector_release, scm_frame_bitvector_release,
2614 scm_tc16_bitvector, bitvector_free, bitvector_print,
2615 bitvector_equalp, count_ones, find_first_one): New.
2616 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2617 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2618 using the new C API for bitvectors and maybe count_ones or
2619 find_first_one, as appropriate.
2620 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2621 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2622 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2623 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2624 new functions from above.
2625 (scm_i_proc_make_vector, scm_i_proc_make_string,
2626 scm_i_proc_make_bitvector): Made non-static for use in
2627 scm_i_generalized_vector_creator.
2628 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2629 (scm_make_uve): Validate that the created object is a generalized
2630 vector.
2631 (scm_i_legacy_tag): Removed.
2632 (scm_i_print_array): Do it here.
2633 (scm_raprin1): Only print enclosed arrays.
2634
2635 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2636
2637 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2638
2639 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2640 added portability.
2641
2642 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2643 for "space". Thanks to Bruce Korb!
2644
2645 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2646 only after dest has been set. Thanks to Hyper Division!
2647
2648 * gh_data.c (gh_uniform_vector_length): Use
2649 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2650
2651 2004-11-03 Marius Vollmer <mvo@zagadka.de>
2652
2653 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2654 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2655 SCM_SET_UVECTOR_LENGTH): Removed.
2656
2657 2004-11-02 Marius Vollmer <mvo@zagadka.de>
2658
2659 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
2660 Thanks!
2661
2662 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2663 first and the second line of the SCM_DEFINE macro call, since old
2664 preprocessors cannot handle definitions that are split into two
2665 lines.
2666
2667 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2668 declarations.
2669
2670 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2671 scm_t_uint32 to fix the mismatch between the function declaration
2672 and definition.
2673
2674 * sort.c (quicksort): Don't use C99 variable declarations.
2675
2676 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2677 SCM_BOOL_F if no type matches.
2678
2679 * threads.c (thread_print): Cast a pointer to size_t when printing
2680 with scm_uintprint.
2681
2682 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2683 defined.
2684 (scm_array_prototype): Deprecated.
2685
2686 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2687
2688 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2689 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2690 more efficient access to the u32vector.
2691
2692 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2693 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2694 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2695
2696 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2697 instead of the old-style dvectors.
2698
2699 * gh_data.c: Use new-style uniform arrays in place of old-style
2700 ones.
2701
2702 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2703 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2704
2705 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2706 instead of old-sytle uvectors.
2707
2708 * convert.c, convert.i.c: Rewritten completely, using
2709 scm_any_to_u8vector, etc and other new-style uniform vector
2710 functions.
2711
2712 * random.c (scm_random_solid_sphere_x,
2713 scm_random_hollow_sphere_x): Do not validate vector argument, this
2714 is already done elsewhere.
2715
2716 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2717 scm_any_to_u8vector, etc): New.
2718 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2719 longer handle old-style uniform vectors.
2720
2721 * read.c (scm_lreadr): Bugfix: include the last bit in the
2722 bit vector.
2723
2724 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2725
2726 * unif.h, unif.c (scm_array_creator): New.
2727 (scm_i_get_old_prototype): New.
2728 (scm_array_prototype): use it to return old-style prototype, never
2729 return creators.
2730 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2731 arg of SCM_UNDEFINED. The latter is wrong.
2732
2733 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2734 (make_uve): Removed.
2735 (scm_i_proc_make_vector, scm_i_proc_make_string,
2736 scm_i_proc_make_u1vector): New.
2737 (scm_init_unif): Initialize them.
2738 (scm_i_convert_old_prototype): New.
2739 (scm_make_uve): Use it to get the creator procedure. Removed all
2740 old code that created old-style uniform vectors.
2741 (scm_array_p): Handle generic vectors.
2742 (scm_dimensions_to_uniform_array): Do not fill new array with
2743 prototype when that is a procedure.
2744 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2745 the NDIM argument.
2746 (scm_i_print_array): Print rank for shared or non-zero-origin
2747 vectors.
2748 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2749 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2750 which I do not understand yet.
2751 (scm_array_prototype): Explicitely handle generic vectors.
2752
2753 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2754 (iflo2str): Use icmplx2str for complex numbers.
2755
2756 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2757 scm_i_uniform_vector_prototype): Removed.
2758 (scm_i_uniform_vector_creator): New.
2759 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2760 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2761 Updated all tables and generic functions to support them.
2762 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2763 (scm_init_srfi_4): Initialize them.
2764
2765 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2766 sizeof(CTYPE) as explained in the comment.
2767
2768 * read.c (scm_lreadr): Call scm_i_read_array for all characters
2769 following '#' that can start an array. Explicitely disambiguate
2770 'i' and 'e' between introducing numbers and uniform vectors. Do
2771 not call scm_i_read_homogenous_vector, since that is also handled
2772 by scm_i_read_array now.
2773
2774 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2775
2776 First cut at integrating uniform vectors from srfi-4 with the rest
2777 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2778 vector. The plan is to gradually replace one type after the other
2779 until none is left and then to consider general cleanups and
2780 optimizations.
2781
2782 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2783
2784 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2785 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2786 scm_uniform_vector_to_list, scm_is_uniform_vector,
2787 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2788 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2789 scm_uniform_vector_release): New.
2790 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2791 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2792 from unif.h, unif.c and extended to handle both the old and new
2793 uniform vectors.
2794
2795 * tags.h (scm_tc7_byvect): Commented out.
2796
2797 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2798 the former to the latter.
2799 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2800 srfi-4.h, srfi-4.c.
2801 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2802 (scm_array_p, scm_array_rank, scm_array_dimensions,
2803 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2804 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2805 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2806 vectors. Removed code for scm_tc7_byvect.
2807 (scm_dimensions_to_uniform_array): Fill array with 0 when
2808 prototype is #\nul.
2809 (scm_i_print_array_dimension, scm_i_legacy_tag,
2810 scm_i_print_array): New.
2811 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2812 for scm_tc7_byvect.
2813
2814 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2815 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2816 uniform vectors. Removed code for scm_tc7_byvect
2817
2818 * print.c (iprin1): Removed code for scm_tc7_byvect.
2819 * objects.c (scm_class_of): Likewise.
2820 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2821 * gc-card.c (scm_i_sweep_card): Likewise.
2822 * evalext.c (scm_self_evaluating_p): Likewise.
2823 * eq.c (scm_equal_p): Likewise.
2824
2825 * gh_data.c (gh_chars2byvect): Reimplemented with
2826 scm_make_s8vector.
2827 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2828
2829 * srfi-4.c (take_uvec): New.
2830 (alloc_uvec): Use it.
2831 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2832
2833 * random.c (vector_scale, vector_scale_x): Renamed former to the
2834 latter, since it modifies its argument.
2835 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2836 Do not use scm_universal_vector_length for non-uniform vectors.
2837 Use scm_f64vector_elements to access innards of uniform vectors.
2838
2839 * convert.i.c: Convert srfi-4 style uniform vectors when
2840 requested.
2841 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2842 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2843
2844 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2845
2846 * numbers.h, numbers.c (scm_i_print_double): New.
2847
2848 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2849 ../srfi/ but heavily modified.
2850 * Makefile.am: Add them in all the right places.
2851 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2852 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2853 '#u', and '#s'.
2854
2855 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2856 and made non-static. Changed all uses.
2857
2858 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2859
2860 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2861 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2862 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2863 scm_uintprint to print unsigned integers, raw heap words, and
2864 adresses, using a cast to scm_t_bits to turn pointers into
2865 integers.
2866
2867 * unif.c: Include "libguile/print.h".
2868
2869 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2870 scm_t_intmax values.
2871 (scm_uint2str): New, for scm_t_uintmax.
2872 (scm_iint2str): Argument type changed to scm_t_intmax,
2873 reimplemented in terms of scm_uint2str.
2874
2875 * print.c, print.h (scm_uintprint): New, for printing
2876 scm_t_uintmax values.
2877 (scm_intprint): Argument type changed to scm_t_intmax.
2878
2879 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2880 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2881 strategic places so that the loops can be interrupted.
2882
2883 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2884 "-I$(top_srcdir)/libguile-ltdl".
2885 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2886 "../libguile-ltdl/libguile-ltdl.a".
2887
2888 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2889 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2890 instead of <libguile-ltdl.h>.
2891
2892 2004-10-20 Marius Vollmer <mvo@zagadka.de>
2893
2894 * sort.c (quicksort): Copy pivot out of the array while
2895 constructing the partitions; it could get overwritten otherwise.
2896 Because of the ultimate insertion sort, this bug did not cause
2897 quicksort to fail, it just put all the burdon on the insertion
2898 sort and was thus very slow. Thanks to Rolan Orre for reporting
2899 the slowness!
2900
2901 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2902
2903 * numbers.c (scm_i_range_error): New.
2904 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2905 scm_out_of_range.
2906
2907 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
2908 endpos. State inclusiveness/exclusiveness of bounds in docstring.
2909
2910 * unif.c (scm_array_p): When no prototype is given, explicitely
2911 test for allowable types, do not simply return true. Thanks to
2912 Roland Orre for reporting this!
2913
2914 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2915
2916 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2917 segment to scm_max_segment_size.
2918
2919 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2920
2921 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2922
2923 * inline.h (scm_double_cell): abort if GC running.
2924 (scm_cell): idem.
2925
2926 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2927
2928 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2929 pos == 0.
2930
2931 Keywords no longer store a 'dash symbol'. Instead, they store a
2932 symbol with their real name.
2933
2934 * keywords.h, keywords.c, deprecated.h, deprecated.c
2935 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2936 terms of scm_is_keyword and scm_keyword_dash_symbol.
2937
2938 * keywords.h, keywords.c, discouraged.h, discouraged.c
2939 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2940 scm_c_make_keyword): Discouraged.
2941
2942 * keywords.h, keywords.c (scm_symbol_to_keyword,
2943 scm_keyword_to_symbol): Implemented in C.
2944 (scm_is_keyword, scm_from_locale_keyword,
2945 scm_from_locale_keywordn): New.
2946
2947 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2948
2949 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2950 scm_from_locale_keyword instead of scm_c_make_keyword.
2951
2952 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2953 better error message.
2954
2955 * deprecated.c: Include discouraged.h and keywords.h.
2956
2957 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2958 reading '#:' or ':'. See NEWS for consequences.
2959
2960 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2961
2962 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2963 literals are now read-write again (until SCM_STRING_CHARS is
2964 removed).
2965
2966 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2967 strings with an error message that blames SCM_STRING_CHARS.
2968
2969 * options.c (change_option_setting): Use scm_car instead of
2970 explicit type check plus SCM_CAR.
2971
2972 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2973 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2974 (scm_iprin1): Use them instead of the previoulsy hardcoded
2975 strings.
2976 (scm_init_print): Initialize them.
2977
2978 * backtrace.c (display_frame_expr): Do not remove control
2979 characters from the final string. Print it directly using
2980 scm_display.
2981
2982 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2983 Thanks to Roland Orre!
2984
2985 2004-09-29 Kevin Ryde <user42@zip.com.au>
2986
2987 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2988 be whole original string in match struct, not offsetted substring.
2989
2990 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2991
2992 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2993
2994 2004-09-24 Marius Vollmer <mvo@zagadka.de>
2995
2996 * Makefile.am (EXTRA_DIST): Added gettext.h.
2997
2998 * smob.c, smob.h (scm_assert_smob_type): New.
2999
3000 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
3001 Include GUILE_CFLAGS.
3002 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3003 now.
3004 (libpath.h): Put GUILE_CFLAGS in the build-info.
3005
3006 2004-09-23 Marius Vollmer <mvo@zagadka.de>
3007
3008 * print.h (scm_print_state): Added highlight_objects.
3009 * print.c (make_print_state, scm_free_print_state): Initialize it
3010 to SCM_EOL.
3011 (scm_iprin1): Wrap output in '{...}' when object is contained in
3012 highlight_objects.
3013
3014 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3015 scm_backtrace_with_highlights): New. Set highlight_objects of
3016 printstate.
3017
3018 * error.c (scm_error_scm): Document new meaning of data/rest
3019 argument for out-of-range and wrong-type-arg errors.
3020 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3021 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3022 exception so that it gets highlighted in the backtrace.
3023 Don't talk about "argument" when not giving a position.
3024
3025 * throw.c (handler_message): The rest argument is the fourth
3026 argument, not everything after the third. Call
3027 scm_display_backtrace_with_highlights, passing the rest argument
3028 when appropriate.
3029
3030 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3031
3032 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3033 <bruno@clisp.org>:
3034
3035 * i18n.c: Handle --disable-nls (thanks Bruno).
3036
3037 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3038 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3039
3040 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3041 LC categories.
3042 * posix.c (scm_setlocale): Use it.
3043
3044 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3045 scm_bind_textdomain_codeset): Make wrappers similar to C function
3046 they wrap.
3047
3048 * i18n.h: New file.
3049 * i18n.c: New file.
3050 * gettext.h: New file, taken from GNU gettext.
3051 * init.c: Include libguile/i18n.h.
3052 (scm_init_guile_1): Add call to scm_init_i18n().
3053 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3054 (DOT_X_FILES): Add i18n.x.
3055 (DOT_DOC_FILES): Add i18n.doc.
3056 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3057 (modinclude_HEADERS): Add i18n.h.
3058
3059 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3060
3061 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3062
3063 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3064 discouraged.h. Replaced all uses with scm_is_pair.
3065 (SCM_I_CONSP): New name for SCM_CONSP.
3066
3067 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3068 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3069 scm_cadr, etc): New.
3070 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3071 uses with scm_is_null.
3072
3073 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3074 instead of explicit code.
3075
3076 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3077
3078 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3079 Reworded logic a bit so that #f is returned immediately when s1 is
3080 too short to contain s2.
3081
3082 * regex-posix.c (scm_regexp_exec): Convert string to
3083 zero-terminated locale string before matching against it.
3084
3085 * strings.h, strings.c (scm_substring_read_only,
3086 scm_c_substring_read_only, scm_i_substring_read_only): New.
3087 (RO_STRING_TAG, IS_RO_STRING): New.
3088 (scm_i_string_writable_chars): Bail on read-only strings.
3089
3090 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3091 literals, thus making them read-only as specified by R5RS.
3092
3093 2004-09-22 Marius Vollmer <mvo@zagadka.de>
3094
3095 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3096 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3097
3098 2004-09-21 Marius Vollmer <mvo@zagadka.de>
3099
3100 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3101 numbers.c.
3102 (scm_to_mpz, scm_from_mpz): New.
3103 Thanks to Andreas Vögele!
3104
3105 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3106 just on a line of its own.
3107
3108 * srfi-13.c (scm_string_any, scm_string_every,
3109 scm_string_tabulate, string_upcase_x, string_down_case_x,
3110 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3111 size_t instead of int for indices into strings. Make sure that no
3112 over- or underflow occurs. Thanks to Andreas Vögele!
3113 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3114 indices, which can also be negative.
3115
3116 2004-09-20 Marius Vollmer <mvo@zagadka.de>
3117
3118 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3119
3120 * threads.c (scm_threads_mark_stacks): Call
3121 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3122 only used once.
3123
3124 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3125
3126 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3127 Bugfix: when subtracting unsigned values, make sure that result
3128 does not wrap.
3129
3130 2004-09-09 Kevin Ryde <user42@zip.com.au>
3131
3132 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3133 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
3134 by Andreas Vögele.
3135
3136 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3137
3138 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3139
3140 * eq.c (real_eqv): Pretend that all NaNs are equal.
3141
3142 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3143
3144 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3145
3146 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3147 use size_t for some locals instead of int.
3148
3149 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3150 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3151 (skip_scsh_block_comment): Use scm_input_error instead of
3152 scm_misc_error in case of EOF.
3153
3154 2004-09-07 Kevin Ryde <user42@zip.com.au>
3155
3156 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
3157 Bug report by Bill Schottstaedt.
3158
3159 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3160 column.
3161 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3162
3163 * posix.c (scm_access): Update docstring per manual.
3164
3165 * posix.c (scm_nice): Correction to error detection. Reported by
3166 Matthias Koeppe.
3167
3168 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3169 throw error before unlocking mutex with SCM_ALLOW_INTS.
3170
3171 2004-09-06 Kevin Ryde <user42@zip.com.au>
3172
3173 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3174 available. This also gets around CLK_TCK being absent when
3175 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3176
3177 2004-09-03 Stefan Jahn <stefan@lkcc.org>
3178
3179 * threads.c (scm_threads_mark_stacks): Fixed local variable
3180 definitions.
3181
3182 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
3183 local variable definitions.
3184
3185 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3186 MinGW32 because it conflicts with its pthread headers.
3187 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3188 (scm_strftime): Using scm_from_locale_string() instead of
3189 scm_makfrom0str().
3190
3191 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
3192 part.
3193
3194 * numbers.c (scm_init_numbers): Removed check_sanity() call
3195 inside GUILE_DEBUG. The function has been removed somewhen...
3196
3197 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3198 MinGW32 because it conflicts with its pthread headers.
3199
3200 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3201
3202 * strings.c (SCM_STRINGP): Accept all strings.
3203 (SCM_STRING_CHARS): Reject shared substrings here.
3204
3205 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3206 the Copyright years.
3207
3208 2004-08-27 Kevin Ryde <user42@zip.com.au>
3209
3210 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3211 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3212 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3213
3214 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3215
3216 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3217 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3218 scm_i_symbol_is_interned, scm_i_mem2symbol,
3219 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3220
3221 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3222
3223 * srfi-13.c: First cut at thread-safeness and proper use of
3224 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3225 been inserted. Made sure that no internal string pointer is used
3226 across a SCM_TICK or a possible GC.
3227
3228 * script.c (scm_compile_shell_switches): Use
3229 scm_from_locale_string instead of scm_makfrom0str.
3230
3231 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3232 always been.
3233
3234 2004-08-25 Marius Vollmer <mvo@zagadka.de>
3235
3236 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3237 strop.c.
3238
3239 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3240 * strop.h, strop.c: Removed, they are now empty.
3241 * Makefile.am: Updated for new and removed files.
3242
3243 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3244 to scm_string_to_symbol.
3245
3246 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3247 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3248 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3249 charset instead of libc functions.
3250
3251 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3252 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3253 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3254 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3255 instead of explicit code.
3256
3257 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3258 "srfi-13.h" instead of "strop.h".
3259
3260 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3261 scm_init_srfi_14. Do not call scm_init_strop.
3262
3263 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3264
3265 * numbers.c (scm_inf_p): Synced docstring back from manual.
3266
3267 2004-08-22 Marius Vollmer <mvo@zagadka.de>
3268
3269 * strings.c (get_str_buf_start): New helper function.
3270 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3271 scm_i_string_char, scm_i_string_writable_chars): Use it.
3272 (scm_i_substring_copy): Make START argument optional for C
3273 callers, for upcoming SRFI-13 integration.
3274
3275 2004-08-21 Marius Vollmer <mvo@zagadka.de>
3276
3277 From Richard Todd, Thanks!
3278
3279 * script.c (scm_compile_shell_switches): added '-L' switch to add
3280 to the %load-path.
3281
3282 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3283
3284 * eval.c (unmemoize_exprs): When dropping internal body markers
3285 from the output during unmemoization, also drop those that are not
3286 immediately at the beginning of a body.
3287
3288 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3289
3290 * eval.c (scm_lookupcar1): Report "Variable used before given a
3291 value" insetad of an "Unbound" one for variables that are found
3292 but still contain SCM_UNDEFINED.
3293
3294 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3295 expects a null-terminated string in the locale encoding, but
3296 scm_i_string_writable_chars doesn't give that. Fixed by letting
3297 mkstemp modify a locale version of the tmpl argument and copying
3298 the result back into tmpl.
3299
3300 * strop.c (scm_substring_move_x): Store into str2, not str1.
3301
3302 2004-08-20 Kevin Ryde <user42@zip.com.au>
3303
3304 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3305 to modify the input string.
3306
3307 2004-08-19 Marius Vollmer <mvo@zagadka.de>
3308
3309 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3310 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3311 scm_c_symbol_length.
3312
3313 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3314
3315 New string implementation, with copy-on-write strings and
3316 mutation-sharing substrings, and a new internal string API.
3317 Symbols can now share memory with strings.
3318
3319 * tags.h (scm_tc7_stringbuf): New tag.
3320
3321 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3322 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3323 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3324 uses.
3325 (scm_i_make_string, scm_c_make_string): New, to replace
3326 scm_allocate_string. Updated all uses.
3327 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3328 SCM_STRING_LENGTH): Deprecated.
3329 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3330 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3331 Discouraged. Replaced all uses with scm_from_locale_string or
3332 similar, as appropriate.
3333 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3334 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3335 scm_substring_shared, scm_substring_copy): New.
3336
3337 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3338 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3339 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3340 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3341 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3342 Deprecated.
3343 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3344 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3345 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3346 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3347 Updated all uses.
3348 (scm_gensym): Generate only the number suffix in the buffer, just
3349 string-append the prefix.
3350
3351 * error.c (scm_memory_error): Do not try to throw, just abort.
3352 Throwing will not work anyway.
3353
3354 * gh.h, gh-data.c (gh_set_substr): Made src const.
3355
3356 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3357 (scm_mode_bits): Use it.
3358 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3359 a vector normally and fill that instead of consing a list with a
3360 blocked GC.
3361
3362 * read.c (scm_i_casei_streq): New, for counted strings.
3363
3364 * threads.c (gc_section_count): Removed, thread-sleeping can not
3365 be nested.
3366 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3367 admin mutex so that we can be put to sleep by other threads while
3368 blocking on that mutex. Lock all the heap mutex of all threads,
3369 including ourselves.
3370 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3371 call scm_i_enter_guile.
3372 (scm_thread_mark_stacks): Expect all threads to be suspended.
3373
3374 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3375 scm_gc_mallocated, for now.
3376 (scm_init_storage): Initialize it.
3377 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3378
3379 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3380 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3381 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3382 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3383
3384 * strop.c (scm_string_copy): Use scm_c_substring to get a
3385 copy-on-write string.
3386
3387 2004-08-18 Kevin Ryde <user42@zip.com.au>
3388
3389 * arbiters.c (FETCH_STORE): New macro.
3390 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3391 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3392 scm_try_arbiter and scm_release_arbiter.
3393 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3394 for speed on i386, otherwise using mutex.
3395
3396 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3397 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3398 exact and inexact is #f.)
3399
3400 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3401 to get thread safety of scm_ttyname.
3402
3403 * ports.c (ttyname): Remove prototype, unused.
3404
3405 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
3406 Reported by Michael Tuexen.
3407
3408 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3409
3410 * load.c (scm_init_load_path): Do not pass NULL to
3411 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3412 not set. Thanks to Bill Schottstaedt.
3413
3414 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3415
3416 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3417 locale strings instead of accessing their internals.
3418 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3419 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3420 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3421
3422 * simpos.c (scm_system): Convert SCM strings to locale strings
3423 instead of accessing their internals.
3424
3425 * script.c (scm_compile_shell_switches): Convert version to locale
3426 string before printing it.
3427
3428 * rdelim.c (scm_read_delimited_x): Avoid
3429 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3430 of scm_from_long for the returned number of read characters.
3431
3432 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3433 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3434
3435 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3436 Use them instead of SCM_SYSCALL when one or two strings need to be
3437 converted into locale strings.
3438 (my_rename): New, gathers platform dependent code for renaming.
3439 (scm_rename): Use it.
3440 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3441 strings instead of accessing their internals.
3442 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3443 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3444 SCM_STRING_LENGTH.
3445
3446 * extensions.c (load_extension): Convert lib and init to locale
3447 strings instead of accessing the internals directly.
3448 (scm_c_load_extension): Use scm_from_locale_string instead of
3449 scm_makfrom0str.
3450
3451 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3452 scm_fdes_to_port, but take mode bits directly instead of as a C
3453 string.
3454 (scm_i_fdes_to_port): Implement using above.
3455 (scm_open_file): Use scm_i_fdes_to_port together with
3456 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3457 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3458 with scm_i_mode_bits to avoid accessing internals of SCM string
3459 from C.
3460
3461 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3462 SCM string as argument.
3463
3464 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
3465 bits directly instead of C string.
3466 (scm_void_port): Implement using above.
3467 (scm_sys_make_void_port): Use scm_i_void_port together with
3468 scm_i_mode_bits to avoid accessing internals of SCM string.
3469
3470 * strings.h, strings.c (scm_i_get_substring_spec): New.
3471
3472 * socket.c, rw.c, deprecated.h, validate.h
3473 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
3474 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
3475 scm_to_locale_string, etc.
3476 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
3477 above, plus scm_i_get_substring_spec.
3478
3479 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
3480 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
3481 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
3482 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
3483 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
3484 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
3485 with more explicit scm_remember_upto_here_1, etc, or introduced
3486 them in the first place.
3487
3488 * posix.c (WITH_STRING): New helper macro. Use it where one
3489 locale string is needed for a short piece of code.
3490 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
3491 when one locale string is needed.
3492 (scm_mkstemp): Convert tmpl to a locale string.
3493 (scm_putenv): Rewritten to use only C strings.
3494 (scm_setlocale, scm_crpt): Convert argument strings to locale
3495 strings.
3496
3497 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3498
3499 * load.c (scm_primitive_load_path): Do not check for absolute
3500 filenames when scm_sys_search_load_path returns false, which will
3501 return absolute filenames unchanged.
3502
3503 2004-08-11 Marius Vollmer <mvo@zagadka.de>
3504
3505 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
3506 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
3507 of an alist. Thanks to Matthias Koeppe!
3508
3509 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3510
3511 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
3512 Moved from string.h to deprecated.h.
3513
3514 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
3515
3516 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
3517 SCM_I_MAKE_STRING_TAG, changed all uses.
3518 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
3519 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
3520 respectively. For a short time, the old names are still there as
3521 aliases. Not all uses have been changed yet, but the ones in
3522 strings.c have.
3523 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
3524 SCM_T_BITS_MAX.
3525 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
3526 scm_take_locale_string, scm_take_locale_stringn,
3527 scm_to_locale_string, scm_to_locale_stringn,
3528 scm_to_locale_stringbuf): New.
3529 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
3530 deprecated.[hc]. Implemented in terms of the new functions above.
3531 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
3532 scm_makfrom0str): Reimplemented in terms of the new functions from
3533 above. They will be discouraged shortly.
3534 (scm_substring): Do not use scm_mem2string.
3535 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
3536 to replace similar code from posix.c, simpos.c, and dynl.c.
3537 (scm_string_append): Use memcpy instead of explicit loop. Do not
3538 use register keyword. Use plain 'char' instead of 'unsigned
3539 char'.
3540
3541 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
3542 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
3543
3544 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
3545 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3546 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
3547 not as a pointer. Use scm_remember_upto_here_1 to protect it.
3548
3549 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
3550 string. This avoids a conversion round-trip.
3551
3552 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
3553 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
3554 SCM_I_STRING_LENGTH, respectively.
3555 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
3556
3557 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
3558 of a string, call scm_display on the string itself.
3559
3560 * dynwind.c, dynwind.h (scm_frame_free): New.
3561
3562 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3563 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3564 Replaced uses of SCM_STRING_CHARS with proper uses of
3565 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3566 Replaced scm_mem2string with scm_from_locale_string.
3567
3568 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3569 Removed, replaced all uses with scm_i_allocate_string_pointers.
3570
3571 * load.h, load.c (scm_internal_parse_path): Removed.
3572 (scm_parse_path): Use scm_string_split to do the work.
3573 (scm_init_load_path): Use scm_parse_path instead of
3574 scm_internal_parse_path.
3575 (scm_search_path): Rewritten string handling part of the code in
3576 terms of scm_to_locale_stringbuf and so that it is thread safe.
3577
3578 * error.c (scm_error_scm): Throw directly instead of calling
3579 scm_error, this avoids the back and forth conversion of SUBR and
3580 MESSAGE and also plugs a memory leak.
3581 (scm_error): Call scm_error_scm.
3582
3583 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3584 (display_header): Print FNAME when it is true, not
3585 merely when it is a string.
3586
3587 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3588 unceremoniously. They were unused by Guile itself, and external
3589 use should stop immediately.
3590
3591
3592 2004-08-10 Marius Vollmer <mvo@zagadka.de>
3593
3594 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3595 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3596 deprecated versions installed in deprecated.h and deprecated.c.
3597 Changed all uses.
3598
3599 2004-08-06 Rob Browning <rlb@defaultvalue.org>
3600
3601 * net_db.c (scm_resolv_error): don't cause an exception while
3602 trying to throw an exception -- call scm_misc_error with correct
3603 arguments. The previous arguments needed a format escape that
3604 wasn't in any of the format strings.
3605
3606 2004-08-06 Kevin Ryde <user42@zip.com.au>
3607
3608 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3609 so as not to depend on signedness of plain char. For byvect range
3610 check, throw out-of-range rather than wrong-type-arg.
3611
3612 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3613 signed byte range checks by using scm_to_schar and scm_from_schar,
3614 don't want to depend on signedness of C char.
3615
3616 2004-08-05 Kevin Ryde <user42@zip.com.au>
3617
3618 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3619 SCM_DEFER_INTS.
3620 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3621 guaranteed if multiple threads compete to unlock.
3622 Update docstrings per doc/ref/api-scheduling.texi.
3623
3624 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3625 stat on the filename, to be certain a file rename can't mean we get
3626 info on one filesystem object but open another. This fstat usage is
3627 similar to Emacs copy-file.
3628
3629 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3630
3631 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3632 SIGINT and SIGQUIT, since those values are ints.
3633
3634 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3635
3636 * num2integral.i.c, num2float.i.c: Removed.
3637 * Makefile.am (noinst_HEADERS): Updated.
3638
3639 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3640 scm_i_make_ratio and made static, replaced uses with scm_divide.
3641 (scm_complex_p): New, export as "complex?" to Scheme.
3642 (scm_number_p): Export as "number?" to Scheme.
3643 (scm_is_complex, scm_is_number): New.
3644 (scm_c_make_rectangular, scm_c_make_polar): New.
3645 (scm_make_rectangular, scm_make_polar): Use above.
3646 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3647 New.
3648 (scm_make_complex): Discouraged by moving to discouraged.h and
3649 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3650
3651 * discouraged.h, discouraged.c, numbers.c, numbers.h
3652 (scm_is_rational): New.
3653 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3654 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3655 Removed prototypes.
3656 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3657 Discouraged by moving to discouraged.h and discouraged.c.
3658 Replaced all uses with scm_from_double.
3659 (scm_num2float, scm_num2double): Discouraged by moving prototype
3660 to discouraged.h and rewriting in terms of scm_to_double.
3661 Replaced all uses with scm_to_double.
3662 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3663 explicit code.
3664 (scm_from_double): Do not implement in terms of scm_make_real, use
3665 explicit code.
3666
3667 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3668
3669 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3670
3671 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3672 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3673
3674 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3675 Renamed to SCM_I_* in order to avoid collisions with the versions
3676 defined in deprecated.h.
3677
3678 * discouraged.h, discouraged.c: New files.
3679
3680 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3681 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3682 deprecated to being discouraged by moving to discouraged.h.
3683
3684 * numbers.h, numbers.c, discouraged.h, discouraged.c
3685 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3686 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3687 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3688 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3689 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3690 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3691 discouraged.c and reimplementing in terms of scm_from_* and
3692 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3693 functions.
3694
3695 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3696 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3697 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3698 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3699 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3700 explicit code.
3701
3702 2004-08-02 Kevin Ryde <user42@zip.com.au>
3703
3704 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3705 and current usage and migration.
3706
3707 2004-07-31 Kevin Ryde <user42@zip.com.au>
3708
3709 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3710 it's not thread safe.
3711 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3712 advantage of this.
3713 * fports.c (scm_open_file): Use scm_strerror likewise.
3714 * filesys.c (scm_stat, scm_lstat): Ditto.
3715
3716 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3717 cannot be opened.
3718
3719 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3720 update, for thread safety.
3721 (gensym_counter): Move into scm_gensym which is its only user.
3722 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3723
3724 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3725
3726 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3727 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3728 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3729 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3730 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3731 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3732 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3733 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3734 defined in terms of scm_to_signed_integer, etc, but in terms of
3735 scm_to_int8, etc.
3736
3737 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3738
3739 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3740 no longer used.
3741
3742 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3743 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3744
3745 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3746 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3747 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3748 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3749 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3750 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3751 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3752
3753 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3754 the functions below.
3755
3756 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3757 conv-uinteger.i.c.
3758
3759 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3760 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3761 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3762 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3763 scm_from_uint64): Turned from macros into proper functions.
3764 (scm_to_signed_integer, scm_to_unsigned_integer,
3765 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3766 conv-integer.i.c and conv-uinteger.i.c, as well.
3767
3768 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3769 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3770 the limits. Those are always defined.
3771
3772 2004-07-29 Kevin Ryde <user42@zip.com.au>
3773
3774 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3775
3776 2004-07-28 Kevin Ryde <user42@zip.com.au>
3777
3778 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3779 safety.
3780
3781 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3782 consistency with other vector types and to get arg and func name into
3783 error message.
3784
3785 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3786
3787 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3788 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3789 scm_from_bool, respectively.
3790 (SCM_NINUMP): Added.
3791
3792 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3793 deprecated.h. Replaced all uses with scm_is_eq.
3794
3795 2004-07-24 Kevin Ryde <user42@zip.com.au>
3796
3797 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3798 * posix.c (scm_crypt): Use it to protect static data in crypt().
3799
3800 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3801
3802 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
3803 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
3804 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3805 versions to deprecated.h and deprecated.c. Changed all uses to
3806 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3807 scm_from_*, as appropriate.
3808
3809 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3810 the unexisting scm_cross_dynwind_binding_scope for inums on the
3811 windlist.
3812
3813 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3814
3815 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
3816 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
3817 byte-wise address to a SCM integer. Changed all uses.
3818 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3819 scm_to_ipv6 and added type and range checking, for converting from
3820 an IPv& byte-wise address to a SCM integer. Changed all uses.
3821 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3822 is now done by scm_to_ipv6.
3823
3824 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3825 not accept inexact integers.
3826
3827 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3828 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3829 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3830 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3831 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3832 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3833 fixnum/bignum distinction visible. Changed all uses to
3834 scm_to_size_t or similar.
3835
3836 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3837
3838 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3839
3840 2004-07-10 Kevin Ryde <user42@zip.com.au>
3841
3842 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3843 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3844 such a size causes divide-by-zeros in scm_hasher.
3845
3846 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3847 leak.
3848
3849 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3850
3851 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3852 Rewritten using the same logic as scm_to_signed_integer and
3853 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3854 use CHAR_BIT instead of hardcoding 8.
3855 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3856 SCM_I_LLONG_MIN etc. instead.
3857
3858 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3859 SCM_I_MAKINUM and changed all uses.
3860 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3861
3862 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3863 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
3864 them by assuming twos-complement.
3865
3866 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3867
3868 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3869 configure now produces.
3870 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3871 definitions, giving the limits of the integer types defined by
3872 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3873 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3874
3875 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3876 SHORT_MIN.
3877 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3878 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3879 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3880 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3881 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3882 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3883 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3884 scm_from_uintmax): New.
3885
3886 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3887
3888 * tags.h (scm_is_eq): New.
3889
3890 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3891 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3892 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3893 scm_from_bool, and scm_is_bool, respectively.
3894
3895 * boolean.h (scm_is_bool): Fix bug in prototype.
3896 (scm_from_bool): The argument is "x" not "f", stupid.
3897
3898 * boolean.c (scm_is_bool): Fix typo.
3899
3900 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3901 scm_is_unsigned_integer, scm_to_signed_integer,
3902 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3903 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3904 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3905 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3906 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3907 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3908 New.
3909
3910 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3911
3912 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3913 scm_to_bool): New.
3914
3915 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3916
3917 * backtrace.c (display_expression, display_frame): Call
3918 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3919 single memoized expression.
3920
3921 * debug.c (memoized_print): Don't try to unmemoize the memoized
3922 object, since we can't know whether it holds a single expression
3923 or a body.
3924
3925 (scm_mem_to_proc): Removed check for lambda expression, since it
3926 was moot anyway. Whoever uses these functions for debugging
3927 purposes should know what they do: Creating invalid memoized code
3928 will cause crashes, independent of whether this check is present
3929 or not.
3930
3931 (scm_proc_to_mem): Take the closure's code as it is and don't
3932 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3933 memoized code should not be modified.
3934
3935 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3936 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3937 available as a guile internal function instead. However,
3938 scm_i_unmemoize_expr will only work on memoized objects that hold
3939 a single memoized expression. It won't work with bodies.
3940
3941 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3942 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3943 i. e. a list of expressions.
3944
3945 * eval.c (unmemoize_exprs): Drop internal body markers from the
3946 output during unmemoization.
3947
3948 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3949 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3950 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3951 as guile internal functions instead. scm_i_unmemoize_expr will
3952 only work on a single memoized expression, while
3953 scm_i_unmemocopy_body will only work on bodies.
3954
3955 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3956
3957 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3958
3959 (scm_cons_source, scm_primitive_eval): Prefer higher level
3960 predicate SCM_FALSEP over SCM_IMP.
3961
3962 2004-06-15 Rob Browning <rlb@defaultvalue.org>
3963
3964 * script.c (scm_shell_usage): minor phrasing change.
3965
3966 * gc_os_dep.c: update ifdefery for macosx.
3967 (scm_get_stack_base): separate result initialization from
3968 declaration to slience warnings with macosx and hp-ux using gcc
3969 3.3. Thanks to Andreas Vögele.
3970
3971 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3972
3973 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3974
3975 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3976
3977 * list.[ch] (scm_i_finite_list_copy): New internal function to
3978 copy lists that are known to be finite (though not necessarily
3979 proper).
3980
3981 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3982 a closure's argument list like an expression of a body.
3983
3984 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3985 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3986 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3987 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3988 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3989 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3990 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3991 unmemoize_builtin_macro): New static functions and symbols.
3992
3993 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3994 now has a slightly different meaning: The memoized form that is
3995 receives as its argument is now interpreted as a sequence of
3996 expressions from a body.
3997
3998 (unmemocar, scm_unmemocar): Since the whole functionality of
3999 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4000 has its old content back and is deprecated, while unmemocar has
4001 been removed.
4002
4003 (SCM_BIT7): Removed.
4004
4005 (CEVAL): For unmemoizing a single expression, call
4006 unmemoize_expression instead of scm_unmemocopy, which now expects
4007 a sequence of body expressions. Eliminated unnecessary empty
4008 environment frame when executing let* forms. Eliminated
4009 unmemoization step from evaluator.
4010
4011 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4012
4013 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4014 macroexp and made static. Added new version of scm_macroexp that
4015 emits a deprecation warning and then calls macroexp.
4016 (scm_m_undefine): Issue deprecation warning.
4017
4018 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4019
4020 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4021 Modified to make set! work on symbols that represent syntactic
4022 keywords.
4023
4024 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4025
4026 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4027 compound expression as lvalue errors.
4028
4029 2004-05-24 Marius Vollmer <mvo@zagadka.de>
4030
4031 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4032 WINDER_DATA to a SCM.
4033
4034 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4035
4036 * goops.c (compute_getters_n_setters, create_standard_classes,
4037 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4038 lambda expression rather than creating them with scm_closure.
4039
4040 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4041
4042 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4043 misplaced syntactic keywords. This will not work unless guile's
4044 defmacro feature is deprecated.
4045
4046 (scm_m_case): Fixed a bug that caused the list of labels to grow
4047 with every case form.
4048
4049 2004-05-19 Kevin Ryde <user42@zip.com.au>
4050
4051 * numbers.c (scm_round_number): For inum and big, just return x. For
4052 real, use scm_round for 2^54-1 etc problems covered there.
4053
4054 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4055 doesn't provide trunc. This was for when `truncate' was done as a
4056 scm_tc7_dsubr, no longer required.
4057
4058 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4059 to stack marking call, two parameters and no cast on t->base.
4060
4061 2004-05-18 Marius Vollmer <mvo@zagadka.de>
4062
4063 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4064 processed hashtables back into the weak_hashtables list. Thanks
4065 to Bill Schottstaedt!
4066
4067 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4068
4069 * eval.c (unmemoize_quote): New static function.
4070
4071 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4072 representation of 'quote' and '@slot-ref' to an improper list.
4073 This reduces execution time, the number of cells used to hold the
4074 memoized code, and thus also reduces garbage collection time.
4075
4076 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4077
4078 (SCM_CEVAL): Changed macro handling to also work with macros that
4079 return improper lists. Added an assertion, that the code returned
4080 by a macro transformer will not lead to cycles in the memoized
4081 code.
4082
4083 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4084
4085 No functional change, just rearrangements of functions within the
4086 file.
4087
4088 * eval.c (scm_ilookup, scm_unbound_variable_key,
4089 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4090 the definitions used for execution, since that's where they will
4091 belong to later.
4092
4093 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4094
4095 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4096 throughout guile, has not been part of an official release yet,
4097 and the concept of sloppy predicates has never been a good idea.
4098
4099 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4100 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4101 Simplified.
4102
4103 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4104
4105 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4106 to make explicit what happens.
4107
4108 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4109
4110 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4111 explicit what happens.
4112
4113 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4114 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4115
4116 2004-05-11 Marius Vollmer <mvo@zagadka.de>
4117
4118 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4119 is indeed a procedure when it isn't a number.
4120
4121 2004-05-10 Marius Vollmer <mvo@zagadka.de>
4122
4123 Convert floating point numbers into strings with an arbitrary
4124 radix. Thanks to Richard Todd!
4125
4126 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4127 fit.
4128 (fx): Removed.
4129 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4130 number_chars): New, to support variable radices.
4131 (idbl2str): Use above instead of the old base-10 only tables.
4132 (iflo2str): Pass on new RADIX argument to idbl2str.
4133 (scm_number_to_string): Pass radix to iflo2str.
4134 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4135 iflo2str.
4136 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4137 possible radices.
4138
4139 2004-05-10 Kevin Ryde <user42@zip.com.au>
4140
4141 * numbers.c (scm_logbit_p): Correction to test above the end of an
4142 inum. Reported by Jan Konecny.
4143
4144 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4145
4146 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4147 scm_t_bits. Updated all users.
4148 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4149 duplicating the code.
4150 (SCM_CELL_OBJECT_LOC): New.
4151 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4152 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4153
4154 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4155 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4156 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4157 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4158 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4159 SCM_SMOB_OBJECT_3_LOC): New.
4160 * smob.c (scm_i_set_smob_flags): New function.
4161
4162 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4163 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4164 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4165 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4166 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4167 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4168
4169 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4170 taking the address of SCM_CELL_WORD_1, the latter being no longer
4171 an lvalue.
4172
4173 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4174 of casting SCM_CELL_WORD_LOC.
4175
4176 2004-05-02 Kevin Ryde <user42@zip.com.au>
4177
4178 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
4179 --disable-deprecated. Reported by Andreas Vögele.
4180
4181 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
4182 particular on HP-UX). Reported by Andreas Vögele.
4183
4184 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4185 code has support for. Fixes building with AIX cc, which is ansi but
4186 doesn't define __STDC__. Reported by Keith Crane.
4187 (var_start): Remove macro, this variation no longer required.
4188 (scm_list_n): Use va_start directly.
4189
4190 2004-05-01 Kevin Ryde <user42@zip.com.au>
4191
4192 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
4193 is now gone. Reported by Andreas Vögele.
4194
4195 2004-04-28 Kevin Ryde <user42@zip.com.au>
4196
4197 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4198 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4199 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
4200 subscript. Reported by Andreas Vögele.
4201 Also cast through unsigned char to avoid passing negatives to those
4202 macros if input contains 8-bit values.
4203
4204 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4205 corrections to range check for signed numbers. Remove
4206 scm_remember_upto_here_1(num) from these checks, since num is used
4207 subsequently anyway.
4208
4209 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4210 avoid warning from gcc 3.4. Reported by Hyperdivision.
4211
4212 * numbers.c (scm_bit_extract): Use min instead of MIN.
4213 (MIN): Remove, this conflicts with similar macro defined by limits.h
4214 on HP-UX. Reported by Andreas Vögele.
4215
4216 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
4217 particular on HP-UX). Reported by Andreas Vögele.
4218
4219 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
4220 Reported by Andreas Vögele.
4221
4222 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4223 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
4224 by Andreas Vögele.
4225
4226 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4227
4228 * eval.c (s_macro_keyword): New static identifier.
4229
4230 (scm_m_define): Change order to first create binding and
4231 evaluating the expression afterwards.
4232
4233 (scm_m_set_x): Memoize complete set! expression. Only leave
4234 symbols if no binding exists at memoization time. Throw error if
4235 assigning to a syntactic keyword.
4236
4237 (lazy_memoize_variable): New function.
4238
4239 (CEVAL): When execution set!, perform lazy memoization if
4240 unmemoized symbol is detected.
4241
4242 * modules.c (module_variable): Return variables with unbound
4243 value.
4244
4245 * tags.h: Fix comment.
4246
4247 2004-04-25 Kevin Ryde <user42@zip.com.au>
4248
4249 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4250 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4251 in 8-bit locales, and ensures consistency with char-upper-case? and
4252 char-lower-case? which already use ctype.h.
4253 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4254 Remove.
4255 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4256
4257 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4258 call. Reported by Hyperdivision.
4259
4260 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4261 Reported by Hyperdivision.
4262
4263 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4264 Hyperdivision.
4265
4266 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4267
4268 Hide the implementation of ilocs and isyms in eval.c.
4269
4270 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4271 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4272 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4273 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4274 eval.h to eval.c.
4275
4276 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4277 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4278 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4279 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4280 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4281 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4282 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4283 renamed to ISYMNUM.
4284
4285 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4286 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4287 Extracted printing of ilocs and isyms to guile internal functions
4288 scm_i_print_iloc, scm_i_print_isym of eval.c.
4289
4290 2004-04-22 Kevin Ryde <user42@zip.com.au>
4291
4292 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4293
4294 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4295 rounding in x+0.5 when x is a big value already an integer. In
4296 certain hardware rounding cases x+0.5 can give an adjacent integer,
4297 leading to that as the result, when we really just wanted x itself.
4298
4299 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4300
4301 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4302
4303 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4304 added const qualifiers, cast intentionally unused expressions to
4305 void for emphasis, improved comment.
4306
4307 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4308
4309 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4310 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4311 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4312 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4313 Defined the tc8-tag for flags to be 0x04, which will mean that
4314 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4315 to the reduced number of bits and the simpler bit pattern for
4316 SCM_BOOL_F, certain machines may be able to use more efficient
4317 processor instructions to deal with SCM_BOOL_F.
4318
4319 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4320 never been defined in a released version, thus no need to
4321 deprecate them.
4322
4323 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4324 instead of tc9 tags.
4325
4326 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4327 of tc9 tags.
4328
4329 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4330 could have used this definition.
4331
4332 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4333 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4334 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4335 as isyms, as special isyms don't exist any more.
4336
4337 2004-04-18 Kevin Ryde <user42@zip.com.au>
4338
4339 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4340 safety.
4341
4342 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4343 explicit swapping code.
4344
4345 2004-04-15 Kevin Ryde <user42@zip.com.au>
4346
4347 * cpp_sig_symbols.in: Add SIGSYS.
4348
4349 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4350 recursion.
4351
4352 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4353 frac/big and frac/frac, use scm_less_p for exact comparison.
4354
4355 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4356 with big/inum.
4357
4358 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4359
4360 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4361
4362 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4363
4364 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4365 scm_c_{up,down}case.
4366 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4367 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4368
4369 2004-04-06 Kevin Ryde <user42@zip.com.au>
4370
4371 * numbers.c (scm_ash): Remove stray "}" in docstring.
4372
4373 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4374 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4375 calling mpz_cmp_ui in most cases.
4376
4377 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4378 for big == abs(most-negative-fixnum) special case.
4379 (abs_most_negative_fixnum): Remove, no longer used.
4380
4381 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4382 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4383 calling (sigaction NSIG).
4384
4385 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4386 and fork error cases to do this.
4387
4388 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4389
4390 * eval.c (CEVAL): Don't distinguish between short and long
4391 instructions when dispatching - just always dispatch on the
4392 instruction code, which is common for short and long instructions.
4393 Further, removed unnecessary goto statements and added comment.
4394
4395 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4396
4397 * eval.c (scm_unmemocopy): Don't distinguish between short and
4398 long instructions when dispatching - just always dispatch on the
4399 instruction code, which is common for short and long instructions.
4400 Further, removed unnecessary goto statements, fixed indentation
4401 and replaced SCM_IMP predicates by SCM_NULLP.
4402
4403 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4404
4405 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4406 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4407 'checkmacro'.
4408
4409 2004-03-31 Kevin Ryde <user42@zip.com.au>
4410
4411 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4412
4413 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4414
4415 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4416 SCM_DEBUGGINGP:
4417
4418 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4419 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4420 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4421 single interface that also matches the naming conventions.
4422 Probably scm_debug_mode_p should be part of the private interface
4423 anyway.
4424
4425 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4426 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4427 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4428 to scm_debug_mode_p.
4429
4430
4431 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4432
4433 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4434 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4435 from debug.h to eval.h.
4436
4437 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4438 more, just leave it with setting scm_debug_mode_p, which is
4439 equivalent for practical purposes.
4440
4441 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4442 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4443
4444 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4445
4446 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4447 static and renamed it to ceval throughout. Provide a new exported
4448 but deprecated function scm_ceval as a wrapper for backwards
4449 compatibility. The same is done for the deval/scm_deval pair of
4450 functions.
4451
4452 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4453 throughout. Defined CEVAL to ceval or deval, based on compilation
4454 phase.
4455
4456 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4457 to ceval and deval instead of calling *scm_ceval_ptr.
4458
4459 * eval.c (dispatching_eval): New deprecated static function.
4460
4461 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4462 to emulate its old behaviour as closely as possible.
4463
4464
4465 Change the evaluator such that only expressions for which pair? is
4466 true are passed to CEVAL, and such that all other expressions are
4467 evaluated outside of CEVAL:
4468
4469 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
4470 expression that is assumed to be memoized already. All but
4471 expressions of the form '(<form> <form> ...)' are evaluated inline
4472 without calling an evaluator.
4473
4474 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
4475 expressions of the form '(<form> <form> ...)' inline without
4476 calling an evaluator.
4477
4478 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
4479 the special case of unmemoized symbols passed on the top level.
4480
4481 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
4482 is known that the expression passed to CEVAL is of the form
4483 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
4484 now it is known that the input expression of CEVAL is a pair.
4485
4486 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4487
4488 * eval.c (is_self_quoting_p): New static function.
4489
4490 (scm_m_quote): Use is_self_quoting_p.
4491
4492 (copy_tree): Corrected typo in comment.
4493
4494 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
4495
4496 * eval.c (s_scm_copy_tree): idem.
4497
4498 * list.c (s_scm_filter): remove "pointer" from doc string.
4499
4500 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
4501
4502 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
4503
4504 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
4505 (display_frame): idem.
4506 (display_backtrace_file_and_line): idem.
4507
4508 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
4509 arguments.
4510
4511 2004-03-26 Kevin Ryde <user42@zip.com.au>
4512
4513 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
4514
4515 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
4516 big==0 since that never occurs.
4517
4518 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
4519 scm_modular_expt, matching scheme level name `modulo-expt'.
4520
4521 * numbers.c (scm_modular_expt): Return a negative remainder for a
4522 negative divisor, the same as `modulo' does.
4523
4524 2004-03-26 Eric Hanchrow <offby1@blarg.net>
4525
4526 * numbers.c, numbers.h (scm_modular_expt): New function.
4527
4528 2004-03-25 Kevin Ryde <user42@zip.com.au>
4529
4530 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
4531 return inexact as required by r5rs.
4532
4533 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4534
4535 * eval.c: Separated some definitions relevant for execution from
4536 the memoization part of the file.
4537
4538 (copy_tree): New static function
4539
4540 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
4541 structures are detected now and will lead to an exception instead
4542 of forcing guile to run in an endless loop, using up all the
4543 system's memory. Second, arrays in the cdr of an improper list
4544 are now copied. See the new test cases in eval.test.
4545
4546 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4547
4548 * posix.c (scm_gethostname): Make sure len is initialised before
4549 it is used. Restructured to (hopefully) represent possible
4550 configurations more clearly in the code. Added unwind handler.
4551
4552 2004-03-23 Kevin Ryde <user42@zip.com.au>
4553
4554 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
4555 MAXHOSTNAMELEN when available.
4556
4557 2004-03-21 Marius Vollmer <mvo@zagadka.de>
4558
4559 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
4560 terminator. Rewritten the logic as a state machine, I must have
4561 been doing too much VHDL lately...
4562
4563 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4564 themselves. Thanks to Han-Wen Nienhuys!
4565
4566 * list.c: Changed docstrings so that they no longer talk about
4567 returning 'pointers' to something.
4568
4569 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4570
4571 * gc.c: remove set_debug_cell_accesses! when
4572 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4573 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4574 debugging conditionally.
4575
4576 2004-03-21 Kevin Ryde <user42@zip.com.au>
4577
4578 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4579
4580 2004-03-20 Kevin Ryde <user42@zip.com.au>
4581
4582 * posix.c (scm_gethostname): Preserve errno across free() call.
4583
4584 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4585
4586 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4587 free cells.
4588
4589 2004-03-14 Kevin Ryde <user42@zip.com.au>
4590
4591 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4592 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4593
4594 2004-03-07 Kevin Ryde <user42@zip.com.au>
4595
4596 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4597 than "GMT" always.
4598 (filltime): Make zname parameter "const".
4599
4600 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4601
4602 * threads.c, threads.h (scm_c_scm2thread): New function.
4603
4604 2004-02-29 Kevin Ryde <user42@zip.com.au>
4605
4606 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4607 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4608 particular don't assume "defined (__alpha__) && ! defined (linux)"
4609 means OSF. Remove "SCO" code, which was not really SCO specific and
4610 which John W. Eaton advises should be long past being needed.
4611
4612 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4613 error throw.
4614
4615 2004-02-24 Kevin Ryde <user42@zip.com.au>
4616
4617 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4618
4619 2004-02-22 Kevin Ryde <user42@zip.com.au>
4620
4621 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4622 complex, same as for two args. (Handle only inum, big, real, frac).
4623
4624 2004-02-21 Kevin Ryde <user42@zip.com.au>
4625
4626 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4627 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
4628 Reported by Andreas Voegele.
4629
4630 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4631
4632 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4633 validation.
4634
4635 * read.c (scm_lreadparen): Removed.
4636 (scm_lreadparen1): Renamed scm_i_lreadparen.
4637
4638 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4639
4640 * list.c (scm_list_n): validate non-immediate arguments;
4641 this will catch forgotten a SCM_UNDEFINED.
4642
4643 2004-02-18 Marius Vollmer <mvo@zagadka.de>
4644
4645 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4646 Thanks to Bill Schottstaedt!
4647
4648 * socket.h (scm_gethost): Removed prototype it is already in
4649 "net_db.h". Thanks to Bill Schottstaedt!
4650
4651 2004-02-18 Kevin Ryde <user42@zip.com.au>
4652
4653 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4654 order parameter to mpz_import, in fact with just one word there's no
4655 order to worry about at all.
4656
4657 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4658 and frac==complex, make an exact comparison rather than converting
4659 with fraction2double.
4660
4661 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4662 shared library, since environ is not directly available there.
4663
4664 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4665 standard.
4666
4667 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4668 errno EINVAL in case localtime and gmtime don't set it.
4669 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4670 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4671
4672 2004-02-16 Kevin Ryde <kevin@swox.se>
4673
4674 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4675 which were permitted in the past for these.
4676
4677 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4678 previous change to numbers.c.
4679
4680 * script.c (scm_shell_usage): Print bug-guile email address, as per
4681 GNU standard. Reported by Han-Wen Nienhuys.
4682
4683 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4684
4685 * unif.c (scm_make_uve): Removed local variable and simplified
4686 code in order to avoid compiler used uninitialized warnings.
4687
4688 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4689 scm_hash_map.
4690 (scm_hash_fold): Use scm_call_3 directly in the call to
4691 scm_internal_hash_fold instead of going via fold_proc (which is
4692 now removed).
4693 (scm_hash_for_each): Use a trampoline +
4694 scm_internal_hash_for_each_handle.
4695 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4696 functions.
4697
4698 2004-02-12 Kevin Ryde <user42@zip.com.au>
4699
4700 * ports.c (scm_port_line): In docstring, note first line is 0.
4701 (scm_set_port_line_x): In docstring, note first line is 0.
4702 (scm_port_column): In docstring, there's no default to current input
4703 port, and remove shared port-line @defun.
4704 (scm_set_port_column_x): In docstring, there's no default to current
4705 input port, note first column is 0, remove shared set-port-line!
4706 @defun.
4707
4708 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4709 convert args the same way that array-set! does.
4710
4711 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4712 for dvect.
4713 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4714 for "l" not "s", fix dvect to be false for singp(prot) since such a
4715 value is for fvect.
4716 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
4717 (exactly_one_third): New variable.
4718 (scm_init_unif): Initialize it.
4719
4720 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4721
4722 * read.c (scm_read_opts): Change `escaped-parens' to
4723 `elisp-strings'.
4724
4725 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4726
4727 * read.c (scm_read_opts): New opts `elisp-vectors' and
4728 `escaped-parens'.
4729 (s_vector): New.
4730 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4731 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4732 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4733 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4734 `escaped-parens' option set.
4735 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4736 in tokens.
4737 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4738 (scm_lreadparen1): New.
4739
4740 * read.h: Remove conditionally compiled last arg to
4741 scm_lreadparen.
4742 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4743
4744 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4745
4746 * eval.c (m_expand_body): remove stray variable new_body.
4747
4748 2004-01-22 Marius Vollmer <mvo@zagadka.de>
4749
4750 * eval.c (m_expand_body): Rewrite the expression in place (by
4751 overwriting FORMS) also when a letrec is constructed, not only
4752 when no definitions are found. Do not return rewritten expression
4753 to emphasize the in-place rewriting. Changed all users.
4754
4755 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4756
4757 * gc.c: add protected_object_count, a number that is dumped from
4758 gc_stats()
4759
4760 2004-01-11 Marius Vollmer <mvo@zagadka.de>
4761
4762 * dynwind.h, dynwind.c (scm_frame_unwind,
4763 scm_frame_unwind_handler): Renamed and changed all uses.
4764 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4765
4766 2004-01-11 Kevin Ryde <user42@zip.com.au>
4767
4768 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4769 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4770 changes made to scheme-compound.texi.
4771
4772 2004-01-10 Marius Vollmer <mvo@zagadka.de>
4773
4774 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4775 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4776
4777 * guile-snarf.in: Use mkdir to create a unique temporary directory
4778 that we can safely use. Thanks to Stefan Nordhausen!
4779
4780 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4781
4782 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4783 argument since it is always zero now. Changed all callers.
4784 Removed code for handling fluids.
4785
4786 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4787 the wind chain explicitely. Use scm_c_with_fluid for the common
4788 case of only one fluid.
4789 (scm_with_fluid): New.
4790 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4791
4792 * fluids.h, fluids.c (scm_frame_fluid): New.
4793 (scm_with_fluid): New.
4794 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
4795
4796 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4797 do the unwinding directly. It is simple enough.
4798
4799 * dynwind.h, dynwind.c: Did the following renamings:
4800 scm_begin_frame -> scm_frame_begin,
4801 scm_end_frame -> scm_frame_end,
4802 scm_on_unwind -> scm_frame_unwind,
4803 scm_on_rewind -> scm_frame_rewind,
4804 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4805 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4806 Changed all uses.
4807
4808 * aync.h, async.c: Did the follwing renamings:
4809 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4810 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4811 Changed all uses.
4812
4813 * ports.h, ports.c: Did the follwing renamings:
4814 scm_with_current_input_port -> scm_frame_current_input_port,
4815 scm_with_current_output_port -> scm_frame_current_output_port,
4816 scm_with_current_error_port -> scm_frame_current_error_port.
4817 Changed all uses.
4818
4819 2004-01-07 Kevin Ryde <user42@zip.com.au>
4820
4821 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4822 Reported by Richard Todd.
4823
4824 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4825 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4826
4827 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4828 traversing the args list, fixes segv if an improper list is given.
4829 Reported by Rouben Rostamian.
4830
4831 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4832
4833 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4834 swap_data on stack, use a 'malloc obj'.
4835
4836 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4837 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4838 scm_i_... since they are internal. Changed all uses.
4839
4840 * dynwind.c (frame_print): Removed, use the default printer.
4841 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4842 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4843 to protect SCM values.
4844
4845 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4846 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4847 Changed all uses.
4848 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4849
4850 2004-01-05 Marius Vollmer <mvo@zagadka.de>
4851
4852 * ports.h, ports.c (scm_with_current_input_port,
4853 scm_with_current_output_port, scm_with_current_error_port): New.
4854
4855 * async.h, async.c (scm_with_blocked_asyncs,
4856 scm_with_unblocked_asyncs): New.
4857
4858 2004-01-03 Marius Vollmer <mvo@zagadka.de>
4859
4860 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4861 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4862 New.
4863 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4864 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4865 function when the outermost wind point has been reached. The
4866 latter is used to copy a continuation stack at the right time.
4867 scm_dowinds remains available.
4868 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4869 tc16_guard, guards_print): Removed.
4870 (scm_internal_dynamic_wind): Reimplemented using frames.
4871
4872 * continuations.c (copy_stack): New, do only the stack copying
4873 part of copy_stack_and_call.
4874 (copy_stack_and_call): Copy the stack after unwinding and before
4875 rewinding.
4876 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4877 copy_stack_and_call.
4878
4879 2004-01-04 Kevin Ryde <user42@zip.com.au>
4880
4881 * numbers.c (scm_less_p): Don't convert frac to float for compares,
4882 can give bad results due to rounding.
4883
4884 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4885 setzone/restorezone protection for DOS.
4886
4887 2003-12-26 Marius Vollmer <mvo@zagadka.de>
4888
4889 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4890 and scm_t_uintmax to be defined in scmconfig.h
4891
4892 2003-12-03 Kevin Ryde <user42@zip.com.au>
4893
4894 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4895
4896 * numbers.c (scm_make_ratio): Check for numerator equal to
4897 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4898 giving integer -1.
4899
4900 * numbers.c (scm_real_part): Return fraction unchanged rather than
4901 converting to flonum.
4902
4903 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4904
4905 * modules.c (module_variable): Fixed (and thus simplified) the
4906 definition of SCM_BOUND_THING_P to reflect the fact that since
4907 after the 1.4 series of guile, obarrays only hold variable
4908 objects.
4909
4910 2003-11-30 Marius Vollmer <mvo@zagadka.de>
4911
4912 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4913
4914 From Paul Jarc:
4915
4916 * read.c (scm_lreadr): Signal an error for invalid escape
4917 sequences in strings. Code cleanups too.
4918
4919 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4920 writing control characters in strings.
4921
4922 2003-11-21 Marius Vollmer <mvo@zagadka.de>
4923
4924 * ports.c (scm_drain_input): Bug fix: only access the port after
4925 checking that it indeed is one.
4926
4927 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4928
4929 * eval.c (s_bad_define): New static identifier.
4930
4931 (m_body): Fixed comment.
4932
4933 (scm_m_define): Don't generate memoized code for definitions that
4934 are not on the top level. As a consequence, no memoized code at
4935 all is generated for definitions any more: Top level definitions
4936 are executed immediately during memoization and internal
4937 definitions are handled separately in m_expand_body.
4938
4939 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4940 definitions. Consequently, there is no unmemoizing code any more
4941 that might modify the environment. Thus, the old scm_unmemocopy
4942 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4943
4944 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4945 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4946 over SCM_NIMP in places, where the argument is known to be part of
4947 a proper list.
4948
4949 2003-11-21 Kevin Ryde <user42@zip.com.au>
4950
4951 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4952 for bignums.
4953
4954 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4955 to share some shifting.
4956
4957 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4958 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4959 since gc does this.
4960
4961 2003-11-19 Marius Vollmer <mvo@zagadka.de>
4962
4963 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4964 structure. Previously, not all cases with a negative denominator
4965 were covered.
4966
4967 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4968 scm_divide2real when forming the fractional part. This allows
4969 "#e1.2" to yield 6/5.
4970
4971 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4972 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4973 fractions were equal to each other regardless of value. Ooops.
4974
4975 * numbers.c (scm_rationalize): Return an inexact result when given
4976 inexact arguments.
4977
4978 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4979 non-numbers.
4980
4981 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4982
4983 Support for exact fractions from Bill Schottstaedt! Thanks!
4984
4985 * print.c (scm_iprin1): Handle fractions.
4986
4987 * objects.h (scm_class_fraction): New.
4988 * objects.c (scm_class_fraction): New.
4989 (scm_class_of): Handle fractions.
4990
4991 * hash.c (scm_hasher): Handle fractions.
4992
4993 * numbers.c: New code for handling fraction all over the place.
4994 (scm_odd_p, scm_even_p): Handle inexact integers.
4995 (scm_rational_p): New function, same as scm_real_p.
4996 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4997 New exact functions that replace the inexact 'dsubr'
4998 implementations.
4999 (scm_numerator, scm_denominator): New.
5000
5001 * numbers.h (SCM_NUMP): Recognize fractions.
5002 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5003 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5004 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5005 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5006 SCM_FRACTION_REDUCED): New.
5007 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5008 New prototypes.
5009 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5010 scm_rational_p): New prototypes.
5011 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5012 scm_i_print_fraction): New prototypes.
5013
5014 * goops.c (create_standard_classes): Create "<fraction>" class.
5015
5016 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5017
5018 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5019 case in the switch, but do nothing for now.
5020
5021 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5022 to doubles when calling 'dsubr' functions.
5023
5024 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5025
5026 2003-11-18 Rob Browning <rlb@defaultvalue.org>
5027
5028 * gen-scmconfig.c (main): remove public definition of
5029 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5030 direct typedef of long_long and ulong_long inside deprecated block
5031 when appropriate.
5032
5033 * deprecated.h: move long_long and ulong_long definitions to
5034 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5035 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5036
5037 2003-11-17 Marius Vollmer <mvo@zagadka.de>
5038
5039 * hash.c (scm_string_hash): New hashing algorithm that takes the
5040 complete string into account.
5041
5042 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5043 is a list. This allows (@ ...) to work with set!.
5044 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5045 SCM_ASSYNT.
5046
5047 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5048 the "-e" option instead of scm_str2symbol. This allows things
5049 like (@ ...) to be specified for the entry point.
5050
5051 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5052
5053 * eval.c (scm_m_letstar): Create memoized code in place to
5054 minimize consing.
5055
5056 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5057
5058 * eval.c (s_splicing): Commented and reformulated.
5059
5060 (lookup_global_symbol, lookup_symbol): New static functions.
5061
5062 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5063
5064 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5065 creating a temporary pair for scm_lookupcar.
5066
5067 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5068 created deprecated wrapper function scm_unmemocar.
5069
5070 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5071 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5072 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5073 undefineds, sym_three_question_marks): Moved around without
5074 modifications.
5075
5076 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5077
5078 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5079
5080 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5081 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5082 No further modifications.
5083
5084 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5085
5086 * eval.c (s_mixed_body_forms): New static identifier.
5087
5088 (canonicalize_define, scm_m_define): The check for a bad
5089 expression is performed in canonicalize_define now.
5090
5091 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5092 static helper functions for m_expand_body.
5093
5094 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5095 expand user defined macros. Fixed handling of the definition/
5096 expression boundary. Fixed handling of definitions grouped with
5097 'begin. Use canonicalize_define to expand definitions.
5098
5099 2003-11-13 Marius Vollmer <mvo@zagadka.de>
5100
5101 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5102 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5103
5104 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5105 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5106 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5107 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5108 New macros from Paul Jarc. Thanks!
5109
5110 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5111 return NULL when the machine type is unknown. Previously,
5112 gc_os_dep.c would refuse to compile.
5113
5114 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5115
5116 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5117 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5118 scm_m_body to m_body.
5119
5120 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5121
5122 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5123 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5124 scm_m_expand_body to m_expand_body and made it static. Added
5125 deprecated wrapper scm_m_expand_body.
5126
5127 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5128 of scm_m_expand_body.
5129
5130 2003-11-09 Kevin Ryde <user42@zip.com.au>
5131
5132 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5133 argument. Reported by Mike Gran.
5134
5135 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5136
5137 * eval.c (s_missing_body_expression): New static identifier.
5138
5139 (s_body): Removed.
5140
5141 (scm_m_expand_body): Fixed core dump when passing a body with
5142 defines, but without expressions (see additions to syntax.test).
5143 Use ASSERT_SYNTAX to signal syntax errors.
5144
5145 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5146
5147 * eval.c (canonicalize_define): New static helper function.
5148
5149 (memoize_define, canonicalize_define): Extract handling of
5150 function currying to canonicalize_define.
5151
5152 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5153
5154 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5155 Make sure that error checking in debug mode is not worse than in
5156 standard mode.
5157
5158 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5159
5160 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5161 handled in scm_m_body any more, but rather in scm_m_lambda.
5162
5163 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5164 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5165 calling functions of scm_m_body.
5166
5167 (scm_m_lambda): Avoid unnecessary consing when creating the
5168 memoized code.
5169
5170 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5171
5172 * eval.c (s_expression): Added comment.
5173
5174 (s_empty_combination, error_unbound_variable): New static
5175 identifiers.
5176
5177 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5178 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5179 signal syntax errors.
5180
5181 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5182 scheme objects.
5183
5184 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5185
5186 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5187 Grouped together with unmemocopy, without modifications.
5188
5189 (build_binding_list, unmemocopy): Renamed names of list arguments
5190 and variables to reflect the actual order of the list elements.
5191
5192 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5193
5194 * eval.c (s_defun): New static identifier.
5195
5196 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5197 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5198 when creating the memoized code.
5199
5200 2003-10-19 Kevin Ryde <user42@zip.com.au>
5201
5202 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5203
5204 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5205 in accordance with R5RS, which just mpz_get_d doesn't really give.
5206
5207 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5208
5209 * eval.c (s_bad_slot_number): New static identifier.
5210
5211 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5212 signal syntax errors. Avoid unnecessary consing when creating the
5213 memoized code.
5214
5215 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5216
5217 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5218 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5219 errors. Avoid unnecessary consing when creating the memoized
5220 code.
5221
5222 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5223 standard case. Make sure line and file information are copied to
5224 every created expression.
5225
5226 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5227
5228 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5229 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5230 when creating the memoized code.
5231
5232 (scm_m_atbind): Reversed the order, in which the init expressions
5233 are stored and executed. The order of execution is now equal to
5234 the order in which the initializers of the let-forms are executed.
5235 Use check_bindings and transform_bindings.
5236
5237 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5238 !SCM_NULLP. Added some comments.
5239
5240 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5241
5242 * eval.c: Sorted include files alphabetically.
5243
5244 (scm_m_begin): Added comment.
5245
5246 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5247 unnecessary consing when creating the memoized code.
5248
5249 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5250 syntax errors. Be more specific about the kind of error that was
5251 detected.
5252
5253 (scm_m_quote, unmemocopy): As an optimization, vector constants
5254 are now inserted unquoted into the memoized code. During
5255 unmemoization the quotes are added again to provide syntactically
5256 correct code.
5257
5258 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5259
5260 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5261 scm_m_expand_body, check_bindings): Extracted syntax checking of
5262 bindings to new static function check_bindings.
5263
5264 (scm_m_let, memoize_named_let): Extracted handling of named let to
5265 new static function memoize_named_let.
5266
5267 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5268 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5269 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5270 unnecessary consing when creating the memoized code.
5271
5272 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5273
5274 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5275 static identifiers.
5276
5277 (s_clauses, s_formals, s_duplicate_formals): Removed.
5278
5279 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5280 specific about the kind of error that was detected. Prepare for
5281 easier integration of changes for separated memoization.
5282
5283 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5284
5285 * eval.c (s_duplicate_binding): New static identifier.
5286
5287 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5288
5289 (scm_m_define): Added comment about how we check for duplicate
5290 formals.
5291
5292 (scm_m_do): Added check for duplicate bindings.
5293
5294 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5295 unnecessary consing when creating the memoized code.
5296
5297 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5298 scm_c_improper_memq to c_improper_memq, since it is not exported.
5299
5300 (transform_bindings): Call scm_c_memq rather than
5301 scm_c_improper_memq.
5302
5303 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5304
5305 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5306
5307 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5308 static identifiers.
5309
5310 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5311 specific about the kind of error that was detected. Avoid use of
5312 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5313 code, this way also making sure that file name, line number
5314 information etc. remain available.
5315
5316 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5317
5318 * eval.c (memoize_as_thunk_prototype): New static function.
5319
5320 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5321 Avoid unnecessary consing when creating the memoized code.
5322
5323 2003-10-12 Kevin Ryde <user42@zip.com.au>
5324
5325 * list.c (scm_append): Track argument number and use in error.
5326
5327 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5328
5329 * eval.c (s_missing_expression, s_bad_variable): New static
5330 identifiers.
5331
5332 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5333 R5RS terminology for the naming of variables. Be more specific
5334 about the kind of error that was detected. Make sure file name,
5335 line number etc. are added to all freshly created expressions.
5336 Avoid unnecessary consing when creating the memoized code.
5337
5338 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5339
5340 * eval.c (s_extra_expression, s_misplaced_else_clause,
5341 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5342
5343 (s_extra_case_clause): Removed.
5344
5345 (scm_m_case, scm_m_cond): If a clause appears after an else
5346 clause, report a misplaced else clause.
5347
5348 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5349 specific about the kind of error that was detected. Handle bound
5350 'else and '=>. Avoid unnecessary consing when creating the
5351 memoized code.
5352
5353 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5354 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5355 syntactic keyword '=>.
5356
5357 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5358
5359 * eval.c (scm_m_case): Allow empty lists of case labels.
5360
5361 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5362
5363 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5364
5365 * print.c (scm_isymnames): Add names for the new memoizer codes.
5366
5367 * eval.c (s_missing_clauses, s_bad_case_clause,
5368 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5369 literal_p): New static identifiers.
5370
5371 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5372 specific about the kind of error that was detected. Check for
5373 duplicate case labels. Handle bound 'else. Avoid unnecessary
5374 consing when creating the memoized code.
5375
5376 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5377 the syntactic keyword 'else.
5378
5379 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5380
5381 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5382 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5383
5384 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5385 unnecessary consing when creating the memoized code.
5386
5387 2003-10-09 Kevin Ryde <user42@zip.com.au>
5388
5389 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5390 cast gives for values bigger than a long, or for nan or inf.
5391
5392 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5393
5394 * smob.h (scm_make_smob_type): Made the declaration match the
5395 definition.
5396
5397 2003-10-07 Marius Vollmer <mvo@zagadka.de>
5398
5399 * goops.c, objects.h, smob.c, smob.h: Make type names char
5400 const * instead of char *. Thanks to Paul Jarc!
5401
5402 2003-10-02 Kevin Ryde <user42@zip.com.au>
5403
5404 * strports.c (scm_call_with_output_string): scm_get_output_string
5405 rather than scm_strport_to_string, so as to guard against the port
5406 having been closed by the called procedure. Reported by Nic Ferrier.
5407
5408 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5409
5410 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5411
5412 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5413 tags.h to deprecated.h.
5414
5415 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5416
5417 This set of patches introduces a new tc7 code scm_tc7_number for
5418 numbers. Bignums, reals and complex numbers are turned from smobs
5419 into subtypes of scm_tc7_number.
5420
5421 * tags.h (scm_tc7_number): New.
5422
5423 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5424 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5425 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5426 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5427 (scm_class_of), print.c (scm_iprin1), smob.c
5428 (scm_smob_prehistory): Don't handle bignums, reals and complex
5429 numbers as subtypes of scm_tc7_smob any more.
5430
5431 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5432 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5433
5434 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5435
5436 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5437 sizeof (scm_t_complex) to determine the memory size of the
5438 malloc'd area for complex numbers.
5439
5440 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5441
5442 * numbers.c (scm_bigequal): Fixed.
5443
5444 2003-09-16 Marius Vollmer <mvo@zagadka.de>
5445
5446 * stime.c (scm_current_time): 'time' does not set errno so don't
5447 use SCM_SYSERROR for reporting errors.
5448
5449 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5450
5451 This set of patches eliminates the dependency between the
5452 implementation of evaluator specific memoization codes and special
5453 constants like #f, '() etc. ('flags'), which are not evaluator
5454 specific. The goal is to remove definitions of evaluator
5455 memoization codes completely from the public interface. This will
5456 make it possible to experiment more freely with optimizations of
5457 guile's internal representation of memoized code.
5458
5459 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5460
5461 * print.c (iflagnames): New array, holding the printed names of
5462 guile's special constants ('flags').
5463
5464 (scm_isymnames): Now holds only the printed names of the
5465 memoization codes.
5466
5467 (scm_iprin1): Separate the handling of memoization codes and
5468 guile's special constants.
5469
5470 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
5471 SCM_IFLAGNUM): new
5472
5473 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
5474 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
5475 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
5476 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
5477 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
5478 values.
5479
5480 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
5481
5482 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
5483 tc9 macros and scm_tc9_flag.
5484
5485 2003-09-15 Marius Vollmer <mvo@zagadka.de>
5486
5487 * posix.c (scm_setgroups): Check that the gid list is not too
5488 long. Thanks to Paul Jarc!
5489
5490 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5491
5492 * tags.h: Reduced the number of short instructions from 14 to 13.
5493 The typecode of the former 14th short instruction is now used to
5494 represent long instructions. Changed some comments to reflect
5495 this fact.
5496
5497 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
5498 previously used by SCM_IM_DEFINE.
5499
5500 (SCM_IM_DEFINE): Turned into a long instruction.
5501
5502 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
5503 instruction.
5504
5505 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
5506 code that is separate from all instructions, one level of dispatch
5507 for long instructions can be eliminated.
5508
5509 * print.c (scm_isymnames): Removed some commented code.
5510
5511 2003-09-12 Marius Vollmer <mvo@zagadka.de>
5512
5513 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
5514 compiler on IA64.
5515
5516 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
5517
5518 * modules.c (scm_module_reverse_lookup): Check that the obarray
5519 really is a hashtable and do nothing if not.
5520
5521 * inline.h: Use "extern inline" only with GCC. Use "static
5522 inline" else.
5523
5524 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5525
5526 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
5527 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5528
5529 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
5530 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
5531 deprecated.h.
5532
5533 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5534
5535 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
5536 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5537
5538 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
5539 0.0==some_expression to some_expression==0.0. The latter is
5540 better readable. The former is preferred by some people, since it
5541 leads to a compiler error when confusing == with =. However, when
5542 using gcc, a warning will be issued if in an if-statement an
5543 assigment appears. Since many Guile developers are using gcc,
5544 such errors will not remain unnoticed anyway. We can therefore
5545 focus on better readability.
5546
5547 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5548
5549 * tags.h: Added description of Guile's type system. Removed some
5550 old and misleading comments.
5551
5552 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5553
5554 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
5555 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
5556
5557 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5558
5559 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
5560
5561 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
5562 respective SLOPPY macro.
5563
5564 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5565
5566 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5567 type string, not SCM_TYP7S.
5568
5569 2003-09-03 Kevin Ryde <user42@zip.com.au>
5570
5571 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5572 2s-complement.
5573
5574 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5575 current timezone requiring SCM_DEFER_INTS.
5576
5577 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5578
5579 * script.c (scm_compile_shell_switches): Make -s switch optional
5580 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5581 VanDevender for the patch!)
5582
5583 2003-08-30 Kevin Ryde <user42@zip.com.au>
5584
5585 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5586 and to have non-integer types rejected as per other logical funcs.
5587
5588 2003-08-28 Kevin Ryde <user42@zip.com.au>
5589
5590 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5591
5592 2003-08-23 Kevin Ryde <user42@zip.com.au>
5593
5594 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5595 thread safe, and could take a long time too.
5596
5597 2003-08-22 Kevin Ryde <user42@zip.com.au>
5598
5599 * numbers.c (scm_difference): Correction to bignum - negative inum.
5600
5601 2003-08-14 Kevin Ryde <user42@zip.com.au>
5602
5603 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5604 [__GNUC__]: Use volatile asm macros rather than a function call.
5605 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5606 macros while defining functions.
5607
5608 * simpos.c (getenv): Use <stdlib.h> for prototype.
5609 (scm_system): In docstring, refer to status:exit-val rather than
5610 "functions above".
5611
5612 2003-08-09 Kevin Ryde <user42@zip.com.au>
5613
5614 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5615 list set by source-properties! rather than an SRCPROPS object,
5616
5617 2003-07-29 Kevin Ryde <user42@zip.com.au>
5618
5619 * properties.c (scm_primitive_property_ref): In docstring, note
5620 parameters to not-found-proc, use hyphens rather than underscores for
5621 that parameter name.
5622 (scm_primitive_property_set_x): In docstring, VAL is the value
5623 parameter not CODE.
5624
5625 2003-07-27 Marius Vollmer <mvo@zagadka.de>
5626
5627 * print.c (scm_print_symbol_name): handle more weird characters by
5628 escaping the symbol name properly. Thanks to Paul Jarc!
5629
5630 * posix.h (scm_setgroups): New prototype.
5631 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5632 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5633 Don't use SCM_WRITABLE_VELTS.
5634
5635 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5636 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5637 Matthias Koeppe!
5638
5639 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5640 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5641 compiles when SCM_C_INLINE is undefined.
5642
5643 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5644
5645 * __scm.h: Reformulated the architecture and compiler properties
5646 in terms of properties of scm_t_bits and SCM variables rather than
5647 in terms of c standard types. This is since it is not known which
5648 of the standard types scm_t_bits and SCM variables will be defined
5649 to.
5650
5651 2003-07-24 Kevin Ryde <user42@zip.com.au>
5652
5653 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5654 and real.
5655
5656 2003-07-18 Kevin Ryde <user42@zip.com.au>
5657
5658 * numbers.c (scm_product): In complex * bignum, correction to
5659 REAL/IMAG fetch, x is the complex, not y.
5660
5661 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5662
5663 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5664 scm_inf_p test as Scheme values.
5665 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5666 and a positive inum.
5667 Use GNU indentation style.
5668
5669 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5670
5671 * values.c (scm_values): Build lists of length 1 by using
5672 scm_list_1 instead of using scm_cons.
5673
5674 2003-07-10 Kevin Ryde <user42@zip.com.au>
5675
5676 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5677 * list.c (scm_list_n): Ditto.
5678
5679 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5680
5681 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5682
5683 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5684 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5685 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5686 the other using intptr_t.
5687
5688 2003-07-08 Kevin Ryde <user42@zip.com.au>
5689
5690 * numbers.c (scm_make_polar): Use sincos, when available.
5691 (scm_magnitude): Use hypot.
5692
5693 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5694 @footnote since it doesn't go through to guile-procedures.txt.
5695
5696 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5697 outside @var to quieten makeinfo, and use @code.
5698
5699 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5700
5701 * gc-malloc.c (decrease_mtrigger): new function
5702 (increase_mtrigger): new function, separate debug registering and
5703 mtrigger administration.
5704 (scm_gc_realloc): bugfix: do mtrigger administration before the
5705 actual realloc, for the realloc might invalidate a GC-d segment of
5706 memory. Thanks to Sam Hocevar for pointing this out.
5707 (scm_gc_realloc): use scm_malloc_reregister instead of
5708 unregistering and registering in sequence.
5709
5710 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5711
5712 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5713
5714 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5715
5716 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5717 clauses.
5718
5719 2003-06-29 Marius Vollmer <mvo@zagadka.de>
5720
5721 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5722 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5723 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5724 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5725 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5726 the release_1_6 branch.
5727
5728 2003-06-25 Stefan Jahn <stefan@lkcc.org>
5729
5730 * continuations.c: Redeclaration of getcontext() via the
5731 __asm__ ("getcontext") directive.
5732
5733 * continuations.h: Include <ucontext.h> instead of
5734 <sys/ucontext.h>.
5735
5736 2003-06-21 Kevin Ryde <user42@zip.com.au>
5737
5738 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5739 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5740 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5741 available.
5742 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5743 (isfinite): Remove, conflicts with C99 isfinite().
5744
5745 2003-06-19 Marius Vollmer <mvo@zagadka.de>
5746
5747 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5748 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5749 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5750 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5751 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5752 the release_1_6 branch.
5753
5754 2003-06-14 Stefan Jahn <stefan@lkcc.org>
5755
5756 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5757 to be functions instead of macros.
5758
5759 * threads.c: Conditionalized inclusion of <sys/time.h> and
5760 <unistd.h>.
5761 (scm_getspecific, scm_setspecific): Made these two function
5762 real part of the API.
5763
5764 * posix.c (s_scm_putenv): Added some code to make a
5765 (putenv "FOO="), i.e. setting an empty string, work also on
5766 Win32 systems. Thanks to Kevin Ryde for the proposal.
5767
5768 2003-06-12 Kevin Ryde <user42@zip.com.au>
5769
5770 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5771 freebsd to comment about need to use unsetenv.
5772
5773 2003-06-02 Marius Vollmer <mvo@zagadka.de>
5774
5775 * ports.c (scm_peek_char): Safe the column of the port around the
5776 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5777
5778 2003-06-07 Kevin Ryde <user42@zip.com.au>
5779
5780 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5781 and friends required by scm_t_bits setups.
5782
5783 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5784
5785 * tags.h (scm_tc2_int): Added.
5786
5787 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5788 scm_tc2_int.
5789
5790 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5791 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5792
5793 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5794
5795 * eval.c: Partially undid my patch from 2003-05-31. This patch
5796 caused the segfault referenced in the previous changelog entry.
5797
5798 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5799
5800 * tags.h: Fixed comment about the immediate type code layout.
5801
5802 * eval.c: Fixed handling of non-special instructions. Without
5803 this patch, guile will segfault on (#\0) and similar instructions.
5804
5805 2003-06-05 Kevin Ryde <user42@zip.com.au>
5806
5807 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5808 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5809
5810 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5811 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5812
5813 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5814
5815 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5816 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5817 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5818 generalized it to apply not only to C level functions but also to
5819 scheme level functions.
5820
5821 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5822 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5823 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5824 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5825 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5826 respectively.
5827
5828 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5829 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5830 eval.h into eval.c and a copy is placed into deprecated.h.
5831
5832 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5833 into eval.c. This definition was not part of the API in any
5834 officially released version of guile and thus does not need to go
5835 through a phase of deprecation.
5836
5837 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5838
5839 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5840 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5841 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
5842 definitions are make static and renamed from scm_s_xxx to s_xxx.
5843 In deprecated.c the original definitions are copied.
5844
5845 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5846 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
5847 eval.h into eval.c and a copy (slightly modified to work in user
5848 code) is placed into deprecated.h.
5849
5850 * eval.c: Use the local static s_xxx definitions instead of the
5851 scm_s_xxx definitions throughout.
5852
5853 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5854
5855 This set of patches separates the representation of the cxr family
5856 of functions (car, cdr etc.) from the dsubr family of functions
5857 (i. e. functions that take a double precision floating point
5858 argument). Further, the algorithm for handling the cxr function
5859 is improved.
5860
5861 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5862 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5863 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5864 cosh, tanh), objects.c (scm_class_of), procprop.c
5865 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5866 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5867 typecode for the dsubr family of functions.
5868
5869 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5870 ramap_dsubr.
5871
5872 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5873 (scm_init_pairs): Make use of the (now usable) second cell element
5874 of a scm_tc7_cxr function to implement the cxr family of functions
5875 more efficiently.
5876
5877 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5878
5879 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5880 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5881 end of an if-else-if-sequence of checks.
5882
5883 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5884
5885 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5886 execution. Generalize apply_closure to apply_proc and use that
5887 for call-with-values.
5888
5889 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5890
5891 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5892 a non closure.
5893
5894 2003-05-30 Stefan Jahn <stefan@lkcc.org>
5895
5896 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5897 appropriately for mingw32 hosts.
5898
5899 * numbers.h: Defining copysign(), isnan() and finite() to
5900 be prefixed by a single '_' for mingw32 hosts.
5901
5902 2003-05-30 Kevin Ryde <user42@zip.com.au>
5903
5904 * numbers.c (z_negative_one): New variable.
5905 (scm_init_numbers): Initialize it.
5906 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5907
5908 2003-05-29 Stefan Jahn <stefan@lkcc.org>
5909
5910 * win32-dirent.c: Use malloc() instead of scm_malloc().
5911
5912 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5913 warning.
5914
5915 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5916 mingw32 build.
5917
5918 * modules.c (s_scm_module_import_interface): Renamed local
5919 variable interface to _interface. Seems like 'interface'
5920 is a special compiler directive for the mingw32 compiler.
5921
5922 * mkstemp.c: Provide prototype to avoid compiler warning.
5923
5924 * load.c (s_scm_search_path): Fixed absolute and relative
5925 path detections for native Windows platforms.
5926
5927 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5928 to build on mingw32).
5929
5930 * gc-freelist.c ("s_scm_map_free_list",
5931 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5932
5933 * fports.c (fport_fill_input): Disable use of
5934 fport_wait_for_input() on Win32 platforms.
5935
5936 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5937
5938 * Makefile.am: Modified some rules for cross compiling.
5939
5940 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5941
5942 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5943 proper function object and the correct number of arguments are now
5944 performed in the application part of SCM_CEVAL.
5945
5946 (scm_badformalsp): Removed.
5947
5948 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5949
5950 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5951
5952 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5953
5954 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5955 always being false by inserting preprocessor conditional. (Thanks
5956 to Bruce Korb.)
5957
5958 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5959 (void *) in order to avoid an aliasing warning; thanks to Bruce
5960 Korb.)
5961
5962 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5963
5964 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5965 SCM_STACK_PTR.
5966
5967 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5968 thread->base --> t->base.
5969
5970 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5971
5972 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5973
5974 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5975 scm_variable_set_name_hint, scm_builtin_variable,
5976 scm_internal_with_fluids, scm_make_gsubr,
5977 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5978 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5979 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
5980 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5981 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5982 scm_make_subr_with_generic, scm_make_subr_opt,
5983 scm_call_catching_errors, scm_make_smob_type_mfpe,
5984 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5985 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5986 branch. Some have been slightly rewritten.
5987 (scm_i_object_chars, scm_i_object_length): New, to support
5988 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5989
5990 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5991
5992 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5993 names and inits in the memoized code of do.
5994
5995 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5996
5997 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5998 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5999 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6000 a compilation error if error-on-warning is enabled).
6001
6002 2003-05-17 Marius Vollmer <mvo@zagadka.de>
6003
6004 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6005 removes preprocessor directives from the snarfage that might
6006 otherwise confuse us. These directives appear when compiling with
6007 "-g3", for example.
6008
6009 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6010
6011 * ChangeLog: add my surname
6012
6013 * srcprop.c (scm_finish_srcprop): use
6014 scm_gc_register_collectable_memory()
6015 (scm_make_srcprops): idem.
6016
6017 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6018
6019 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6020 wrap-around for scm_mtrigger
6021 (scm_gc_register_collectable_memory): abort on overflowing
6022 scm_mallocated().
6023
6024 2003-05-13 Kevin Ryde <user42@zip.com.au>
6025
6026 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6027 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6028
6029 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6030
6031 * backtrace.c (scm_display_error_message): Introduced fancy
6032 printing with max level 7 and length 10. (Purpose: avoid printing
6033 gigantic objects in error messages.)
6034
6035 * print.c, print.h (scm_i_port_with_print_state): New function.
6036
6037 * print.c (scm_iprin1, scm_printer_apply,
6038 scm_port_with_print_state): Use scm_i_port_with_print_state.
6039 (scm_simple_format): Modified not to destroy print states.
6040 (print_state_mutex): New mutex.
6041 (scm_make_print_state, scm_free_print_state, scm_prin1):
6042 Lock/unlock print_state_mutex.
6043
6044 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6045 Use current names in definitions.
6046
6047 2003-05-10 Kevin Ryde <user42@zip.com.au>
6048
6049 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6050
6051 * numbers.c (scm_integer_length): On negative bignums, adjust
6052 mpz_sizeinbase to account for it looking at absolute value where we
6053 want ones-complement.
6054
6055 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6056 since we're only using the ulong return value, and x might not fit.
6057
6058 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6059
6060 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6061 read. This will allow to make the definition in read.c static.
6062
6063 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6064
6065 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6066 from evalext to eval. This will allow to make some of the
6067 definitions in eval.c static.
6068
6069 2003-05-06 Kevin Ryde <user42@zip.com.au>
6070
6071 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6072 (scm_logcount): Use mpz_com, not mpz_neg.
6073
6074 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6075
6076 The purpose of this patch is to make guile's internal memoizers
6077 distinguishable from memoizing macros created on the scheme level
6078 or from user provided primitive memoizing macros. The reason is,
6079 that the internal memoizers are the only ones that are allowed to
6080 transform their scheme input into memoizer byte code, while all
6081 other memoizing macros may only transform scheme code into new
6082 scheme code.
6083
6084 To achieve this, a new macro type 'builtin-macro!' is introduced.
6085 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6086 this will change when the memoizer and executor are separated.
6087
6088 * macros.[ch] (scm_i_makbimacro): New.
6089
6090 * macros.h (SCM_BUILTIN_MACRO_P): New.
6091
6092 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6093
6094 * eval.c, goops.c: All of guile's primitive memoizing macros are
6095 primitive builtin-macros now.
6096
6097 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6098 builtin-macros are handled equally to memoizing macros.
6099
6100 2003-05-04 Marius Vollmer <mvo@zagadka.de>
6101
6102 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6103 work around a bug in GCC 2.95.2 but is now a bug in itself.
6104
6105 2003-05-02 Marius Vollmer <mvo@zagadka.de>
6106
6107 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6108 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6109 scm_tcs_symbols): New.
6110
6111 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6112
6113 * deprecated.h, deprecated.c (scm_protect_object,
6114 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6115 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6116 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6117 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6118 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6119 scm_ptob_descriptor, scm_port_rw_active,
6120 scm_close_all_ports_except): New.
6121
6122 * ports.c (scm_c_port_for_each): New function, mostly copied from
6123 scm_port_for_each.
6124 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6125 * ports.h (scm_c_port_for_each): New prototype.
6126
6127 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6128
6129 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6130 macro was introduced in anticipation of GOOPS method compilation
6131 code.)
6132
6133 * goops.c: Removed binding of @dispatch.
6134
6135 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6136
6137 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6138 instructions that bind the macros on the scheme level back to
6139 goops.c in order to make sure again that the bindings go into the
6140 (oop goops) module and are not visible from the outside.
6141
6142 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6143
6144 * eval.c: Non functional change: Separated R5RS and non-R5RS
6145 macros into different sections of the file and ordered the
6146 memoizers alphabetically.
6147
6148 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6149
6150 * eval.c (scm_ilookup): Rewritten to improve readability.
6151
6152 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6153
6154 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6155 Partially reverted patch from 2003-04-23 in oder to find a better
6156 compromise between readability and debuggability.
6157
6158 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6159
6160 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6161 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6162 definitions of the special goops memoizers from goops.[ch] to
6163 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6164 throughout guile.
6165
6166 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6167
6168 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6169
6170 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6171
6172 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6173
6174 * ioext.c (scm_fdes_to_ports): Ditto.
6175
6176 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6177 lock/unlock scm_i_port_table_mutex.
6178
6179 * strports.c (scm_mkstrport): Ditto.
6180
6181 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6182
6183 * fports.c (scm_fdes_to_port): Ditto.
6184
6185 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6186
6187 This set of patches contains no functional changes, only debatable
6188 minor stylistic ones. Still, in order to prepare a patch between
6189 my local copy and the CVS version, I decided to submit the changes
6190 below. Then, the patch will hopefully only contain relevant
6191 modifications :-)
6192
6193 * eval.c (iqq): Added const specifier.
6194
6195 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6196 Use NULL instead of 0 to indicate that a pointer is returned.
6197 Removed some misleading 'fall through' comments.
6198
6199 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6200 Split up long expressions into smaller ones to be more debugging
6201 friendly.
6202
6203 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6204
6205 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6206 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6207 rather than casting to SCM.
6208
6209 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6210
6211 * sort.c, pairs.h: Removed unnecessary includes.
6212
6213 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6214
6215 * sort.c: Replaced hand-made trampline code by the new official
6216 mechanism from eval.c. This fixes a segfault in the new test file
6217 sort.test.
6218
6219 (quicksort, compare_function, scm_restricted_vector_sort_x,
6220 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6221 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6222 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6223 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6224 eval.c.
6225
6226 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6227 cmp_fun_t): Removed.
6228
6229 (compare_function): Added.
6230
6231 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6232 arithmetics with index arithmetics. Changed quicksort to work on
6233 an array of SCM values instead of an array of characters. Avoid
6234 bytewise copying of SCM elements. Avoid allocating memory on the
6235 stack with alloca. Fixed some comments.
6236
6237 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6238
6239 * eval.c (EXTEND_ENV): Eliminated.
6240
6241 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6242 EXTEND_ENV.
6243
6244 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6245
6246 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6247
6248 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6249 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6250
6251 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6252 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6253 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6254 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6255 functions such that they check if the object is a non-immediate.
6256 Further, renamed identifiers to use the scm_dbg_ prefix and made
6257 their inclusion into the lib dependent of the
6258 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6259
6260 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6261
6262 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6263 debug option.
6264
6265 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6266
6267 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
6268 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6269 any calls to SCM_NCONSP any more.
6270
6271 * unif.c (l2ra): Eliminate redundant check.
6272
6273 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6274
6275 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6276 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6277 SCM_NNULLP. Now, guile itself does not include any calls to
6278 SCM_NNULLP any more.
6279
6280 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6281
6282 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6283 scm_copy_tree): Place assignment expressions which are part of
6284 other expressions into an expression of their own.
6285
6286 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6287
6288 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6289 compare SCM values with !=.
6290
6291 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6292
6293 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6294 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6295 and definition of the memoizer for the generalized set! macro from
6296 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6297 define the macro object.
6298
6299 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6300 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6301 eval.c, it is made static and renamed to s_set_x.
6302
6303 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6304 over SCM_N<foo>.
6305
6306 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6307
6308 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6309 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6310 to undefineds and registered the object as a permanent object.
6311
6312 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6313 static in eval.c, renamed it to f_apply and registered the object
6314 as a permanent object.
6315
6316 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6317
6318 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
6319 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6320
6321 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6322
6323 * numbers.c (scm_logtest): Fixed argument bug in the call to
6324 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6325
6326 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6327
6328 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6329 type errors that showed up when compiling with SCM_DEBUG defined.
6330
6331 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6332
6333 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6334 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6335 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6336 fix compile errors with --disable-deprecated.
6337
6338 2003-04-17 Rob Browning <rlb@defaultvalue.org>
6339
6340 * numbers.c (scm_integer_expt): fix case where we were declaring
6341 vars in the middle of a statement block. Thanks to Thamer
6342 Al-Harbash.
6343
6344 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6345
6346 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6347 change.
6348
6349 * eq.c (scm_eqv_p): Turned into a primitive generic.
6350
6351 2003-04-16 Rob Browning <rlb@defaultvalue.org>
6352
6353 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6354 Thanks to Boyd Gerber.
6355 Added check for __arm__ in addition to arm for LINUX and copied
6356 __s390__ defines from upstream libgc. Thanks to James Treacy for
6357 reporting the problems.
6358
6359 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6360
6361 * socket.c: use SCM_CHAR_BIT.
6362
6363 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6364
6365 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6366
6367 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6368
6369 * feature.c (scm_init_feature): Always add threads feature.
6370
6371 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6372
6373 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6374 scm_at_assert_bound_ref. (We don't want the unbound check. See
6375 oop/goops/active-slot.scm.)
6376
6377 2003-04-14 Rob Browning <rlb@defaultvalue.org>
6378
6379 * tags.h: scm_t_intptr should have been intptr_t.
6380
6381 2003-04-13 Rob Browning <rlb@defaultvalue.org>
6382
6383 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6384 test. Instead use
6385 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6386 as gc_os_dep.c suggests is appropriate.
6387
6388 * goops.c (prep_hashsets): make static to match prototype.
6389 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6390 Chin.
6391
6392 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6393 Albert Chin.
6394
6395 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6396 Klausner.
6397
6398 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6399
6400 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6401 indicated through extra fields in getters-n-setters.
6402 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6403 (Thanks to Andy Wingo.)
6404
6405 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6406
6407 * gc-segment.c: add comment
6408
6409 2003-04-07 Rob Browning <rlb@defaultvalue.org>
6410
6411 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6412 clash.
6413
6414 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6415 and add regression test to standalone/.
6416
6417 2003-04-06 Rob Browning <rlb@defaultvalue.org>
6418
6419 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6420 Thanks to Dale P. Smith.
6421
6422 * random.c: #include gmp.h.
6423 (scm_c_random_bignum): normalize result on return.
6424
6425 * init.c: #include gmp.h.
6426
6427 * numbers.h: remove the gmp.h #include (not needed now).
6428
6429 * posix.h: change occurences of "id" to something else so we don't
6430 cause trouble when included via objective-c (can't hurt, might
6431 help). Still have usage in debug.h, though.
6432
6433 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6434
6435 * random.c (scm_c_random_bignum): Don't generate a random number
6436 equal to m (the second argument of scm_c_random_bignum); only
6437 generate numbers in the range 0 <= r < m.
6438 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6439 scm_var_random_state.
6440
6441 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6442 clause.
6443
6444 2003-04-05 Rob Browning <rlb@defaultvalue.org>
6445
6446 * modules.c (scm_module_import_interface): move declaration of
6447 uses before any code.
6448
6449 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6450
6451 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6452 not top_srcdir.
6453
6454 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6455 processing it in order to avoid an infinite loop.
6456
6457 * print.c (scm_prin1): Remember old state of pstate->writingp.
6458
6459 2003-04-05 Marius Vollmer <mvo@zagadka.de>
6460
6461 * Changed license terms to the plain LGPL thru-out.
6462
6463 2003-04-04 Rob Browning <rlb@defaultvalue.org>
6464
6465 * socket.c (FLIPCPY_NET_HOST_128): new macro.
6466 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
6467 rewrite to handle GMP bignums.
6468
6469
6470 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
6471
6472 * ports.c (scm_getc): minor tweak.
6473
6474 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
6475 rewrite to handle GMP bignums.
6476
6477 * numbers.c: rewrite *many* functions to handle GMP bignums.
6478
6479 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
6480 handle GMP bignums.
6481
6482 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
6483
6484 * init.c (check_config): remove SCM_BIGDIG conditionals.
6485 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
6486
6487 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
6488
6489 * eval.c: remove SCM_BIGDIG conditionals.
6490
6491 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
6492
6493 2003-03-31 Rob Browning <rlb@defaultvalue.org>
6494
6495 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
6496 to Kevin Ryde.)
6497
6498 2003-03-27 Rob Browning <rlb@defaultvalue.org>
6499
6500 * threads.h: fix various preprocessor usages of new public
6501 symbols to expect 0 or 1 values rather than 1 or undefined.
6502 i.e. change #ifdef to #if, etc.
6503
6504 * threads.c: fix various preprocessor usages of new public
6505 symbols to expect 0 or 1 values rather than 1 or undefined.
6506 i.e. change #ifdef to #if, etc.
6507
6508 * tags.h: fix various preprocessor usages of new public
6509 symbols to expect 0 or 1 values rather than 1 or undefined.
6510 i.e. change #ifdef to #if, etc.
6511
6512 * stacks.c: fix various preprocessor usages of new public
6513 symbols to expect 0 or 1 values rather than 1 or undefined.
6514 i.e. change #ifdef to #if, etc.
6515
6516 * stackchk.h: fix various preprocessor usages of new public
6517 symbols to expect 0 or 1 values rather than 1 or undefined.
6518 i.e. change #ifdef to #if, etc.
6519
6520 * stackchk.c: fix various preprocessor usages of new public
6521 symbols to expect 0 or 1 values rather than 1 or undefined.
6522 i.e. change #ifdef to #if, etc.
6523
6524 * sort.c: fix various preprocessor usages of new public
6525 symbols to expect 0 or 1 values rather than 1 or undefined.
6526 i.e. change #ifdef to #if, etc.
6527
6528 * read.c: fix various preprocessor usages of new public
6529 symbols to expect 0 or 1 values rather than 1 or undefined.
6530 i.e. change #ifdef to #if, etc.
6531
6532 * random.c: fix various preprocessor usages of new public
6533 symbols to expect 0 or 1 values rather than 1 or undefined.
6534 i.e. change #ifdef to #if, etc.
6535
6536 * print.c: fix various preprocessor usages of new public
6537 symbols to expect 0 or 1 values rather than 1 or undefined.
6538 i.e. change #ifdef to #if, etc.
6539
6540 * objects.c: fix various preprocessor usages of new public
6541 symbols to expect 0 or 1 values rather than 1 or undefined.
6542 i.e. change #ifdef to #if, etc.
6543
6544 * numbers.h: fix various preprocessor usages of new public
6545 symbols to expect 0 or 1 values rather than 1 or undefined.
6546 i.e. change #ifdef to #if, etc.
6547
6548 * null-threads.c: fix various preprocessor usages of new public
6549 symbols to expect 0 or 1 values rather than 1 or undefined.
6550 i.e. change #ifdef to #if, etc.
6551
6552 * lang.c: fix various preprocessor usages of new public
6553 symbols to expect 0 or 1 values rather than 1 or undefined.
6554 i.e. change #ifdef to #if, etc.
6555
6556 * lang.h: fix various preprocessor usages of new public
6557 symbols to expect 0 or 1 values rather than 1 or undefined.
6558 i.e. change #ifdef to #if, etc.
6559
6560 * iselect.h: fix various preprocessor usages of new public
6561 symbols to expect 0 or 1 values rather than 1 or undefined.
6562 i.e. change #ifdef to #if, etc.
6563
6564 * init.c: fix various preprocessor usages of new public
6565 symbols to expect 0 or 1 values rather than 1 or undefined.
6566 i.e. change #ifdef to #if, etc.
6567
6568 * gh_data.c: fix various preprocessor usages of new public
6569 symbols to expect 0 or 1 values rather than 1 or undefined.
6570 i.e. change #ifdef to #if, etc.
6571
6572 * gh.h: fix various preprocessor usages of new public
6573 symbols to expect 0 or 1 values rather than 1 or undefined.
6574 i.e. change #ifdef to #if, etc.
6575
6576 * gen-scmconfig.c: change most new public symbols to be defined to
6577 0 or 1 rather than being either 1 or undefined.
6578
6579 * gc_os_dep.c: fix various preprocessor usages of new public
6580 symbols to expect 0 or 1 values rather than 1 or undefined.
6581 i.e. change #ifdef to #if, etc.
6582 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6583
6584 * gc.h: fix various preprocessor usages of new public
6585 symbols to expect 0 or 1 values rather than 1 or undefined.
6586 i.e. change #ifdef to #if, etc.
6587
6588 * gc-card.c: fix various preprocessor usages of new public
6589 symbols to expect 0 or 1 values rather than 1 or undefined.
6590 i.e. change #ifdef to #if, etc.
6591
6592 * gc-mark.c: fix various preprocessor usages of new public
6593 symbols to expect 0 or 1 values rather than 1 or undefined.
6594 i.e. change #ifdef to #if, etc.
6595
6596 * feature.c: fix various preprocessor usages of new public
6597 symbols to expect 0 or 1 values rather than 1 or undefined.
6598 i.e. change #ifdef to #if, etc.
6599
6600 * evalext.c: fix various preprocessor usages of new public
6601 symbols to expect 0 or 1 values rather than 1 or undefined.
6602 i.e. change #ifdef to #if, etc.
6603
6604 * eval.h: fix various preprocessor usages of new public
6605 symbols to expect 0 or 1 values rather than 1 or undefined.
6606 i.e. change #ifdef to #if, etc.
6607
6608 * eval.c: fix various preprocessor usages of new public
6609 symbols to expect 0 or 1 values rather than 1 or undefined.
6610 i.e. change #ifdef to #if, etc.
6611
6612 * eq.c: fix various preprocessor usages of new public
6613 symbols to expect 0 or 1 values rather than 1 or undefined.
6614 i.e. change #ifdef to #if, etc.
6615
6616 * coop.c: fix various preprocessor usages of new public
6617 symbols to expect 0 or 1 values rather than 1 or undefined.
6618 i.e. change #ifdef to #if, etc.
6619
6620 * coop-threads.c: fix various preprocessor usages of new public
6621 symbols to expect 0 or 1 values rather than 1 or undefined.
6622 i.e. change #ifdef to #if, etc.
6623
6624 * coop-pthreads.c: fix various preprocessor usages of new public
6625 symbols to expect 0 or 1 values rather than 1 or undefined.
6626 i.e. change #ifdef to #if, etc.
6627
6628 * coop-defs.h: fix various preprocessor usages of new public
6629 symbols to expect 0 or 1 values rather than 1 or undefined.
6630 i.e. change #ifdef to #if, etc.
6631
6632 * convert.i.c: fix various preprocessor usages of new public
6633 symbols to expect 0 or 1 values rather than 1 or undefined.
6634 i.e. change #ifdef to #if, etc.
6635
6636 * continuations.c: fix various preprocessor usages of new public
6637 symbols to expect 0 or 1 values rather than 1 or undefined.
6638 i.e. change #ifdef to #if, etc.
6639
6640 * _scm.h: fix various preprocessor usages of new public symbols to
6641 expect 0 or 1 values rather than 1 or undefined. i.e. change
6642 #ifdef to #if, etc.
6643
6644 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6645
6646 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6647
6648 * deprecated.c, deprecated.h: New files, to collect deprecated
6649 things in one place.
6650 * Makefile.am: Added them in all the right places.
6651
6652 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6653 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6654 builds work.
6655 (DOT_X_FILES): Removed "iselect.x".
6656 (DOT_DOC_FILES): Removed "iselect.doc".
6657
6658 2003-03-25 Rob Browning <rlb@defaultvalue.org>
6659
6660 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6661 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6662
6663 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6664
6665 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6666
6667 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6668 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6669
6670 * threads.h: replace usage of struct timespect with
6671 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6672 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6673 favor of scm_t_timespec from scmconfig.h.
6674
6675 * threads.c: move libguile/_scm.h include to the top so we pick up
6676 any critical defines like _GNU_SOURCE early. Replace usage of
6677 struct timespect with scm_t_timespec. Replace usage of
6678 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6679 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6680
6681 * threads-plugin.h: replace usage of struct timespect with
6682 scm_t_timespec.
6683
6684 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6685 usage of struct timespect with scm_t_timespec.
6686
6687 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6688 HAVE_INTTYPES_H handling to scmconfig.h. #include
6689 "libguile/__scm.h". Rework handling for scm_t_bits,
6690 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6691 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6692 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6693 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6694 SCM_HAVE_ARRAYS.
6695
6696 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6697
6698 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6699
6700 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6701
6702 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6703
6704 * stime.h: move handling of time related headers to scmconfig.h.
6705
6706 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6707
6708 * stacks.c: replace usage of STACK_GROWS_UP with
6709 SCM_STACK_GROWS_UP.
6710
6711 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6712 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6713
6714 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6715 of uint32 and HAVE_UINT_32 with scm_t_int32.
6716
6717 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6718
6719 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6720
6721 * script.c: #include <config.h> if HAVE_CONFIG_H.
6722
6723 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6724
6725 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6726
6727 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6728
6729 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6730
6731 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6732
6733 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6734
6735 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6736 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6737 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6738 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6739
6740 * ramap.c: replace usage of HAVE_LONG_LONGS with
6741 "SCM_SIZEOF_LONG_LONG != 0".
6742
6743 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6744 "libguile/scmconfig.h".
6745
6746 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6747
6748 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6749 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6750
6751 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6752
6753 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6754
6755 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6756
6757 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6758 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6759 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6760 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6761 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6762 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6763 "SCM_SIZEOF_LONG_LONG != 0".
6764
6765 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6766 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6767 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6768 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6769
6770 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6771
6772 * null-threads.h: replace usage of struct timespect with
6773 scm_t_timespec.
6774
6775 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6776
6777 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6778 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6779 scm_t_uint64 and rename usages.
6780
6781 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6782
6783 * load.c: #include <config.h> if HAVE_CONFIG_H.
6784
6785 * iselect.h: move handling of time related headers to scmconfig.h.
6786 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6787 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6788 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6789
6790 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6791 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6792 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6793
6794 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6795
6796 * inline.h: #include "libguile/__scm.h" at the top. Change code
6797 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6798 what to do instead of creating a new public #define. Rename usage
6799 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6800 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6801 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6802
6803 * inline.c: rearrange handling -- now we just #define
6804 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6805 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6806 appropriate, and we use that in inline.h along with the above
6807 define to determine how to respond.
6808
6809 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6810 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6811
6812 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6813
6814 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6815 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6816
6817 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6818
6819 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6820
6821 * gen-scmconfig.c: new file -- see comments in file for details.
6822
6823 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6824
6825 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6826 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6827
6828 * gc.h: replace usage of SIZEOF_LONG with
6829 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6830 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6831 since we handle that in scmconfig.h now.
6832
6833 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6834
6835 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6836 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6837 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6838
6839 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6840
6841 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6842 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6843
6844 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6845
6846 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6847
6848 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6849 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6850
6851 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6852
6853 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6854 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6855
6856 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6857 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6858 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6859 with "SCM_SIZEOF_LONG_LONG != 0".
6860
6861 * error.c: #include <config.h> if HAVE_CONFIG_H.
6862
6863 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6864 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6865 with "SCM_SIZEOF_LONG_LONG != 0".
6866
6867 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6868
6869 * coop.c: replace usage of struct timespect with scm_t_timespec.
6870 #include <config.h> if HAVE_CONFIG_H.
6871
6872 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6873 usage of struct timespect with scm_t_timespec. Replace usage of
6874 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6875
6876 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6877 usage of struct timespect with scm_t_timespec. Replace usage of
6878 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6879
6880 * coop-defs.h: move handling of time related headers to
6881 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6882 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6883 timespect with scm_t_timespec.
6884
6885 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6886
6887 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6888
6889 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6890 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6891
6892 * continuations.c: move libguile/_scm.h include to the top so we
6893 pick up any critical defines like _GNU_SOURCE early.
6894
6895 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6896
6897 * async.c: #include <config.h> if HAVE_CONFIG_H.
6898
6899 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6900
6901 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6902 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6903
6904 * __scm.h: move libguile/scmconfig.h include up to the top, so
6905 we're sure to pick up any critical defines like _GNU_SOURCE early.
6906 #include <limits.h> removed in favor of scmconfig.h inclusion when
6907 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6908 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6909 scmconfig.h inclusion when appropriate. Various Win32 related
6910 definitions removed in favor of scmconfig.h inclusion when
6911 appropriate.
6912 (HAVE_UINTPTR_T): definition removed (see NEWS).
6913 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6914 (HAVE_LONG_LONGS): definition removed (see NEWS).
6915 (HAVE_LONG_LONG): definition removed (see NEWS).
6916 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6917
6918 * Makefile.am: scmconfig.h is now generated by building and
6919 running gen-scmconfig.h and capturing its output. gen-scmconfig
6920 uses config.h and the configure.in generated gen-scmconfig.h to
6921 decide what to output. See gen-scmconfig.c for details.
6922 (noinst_PROGRAMS): add gen-scmconfig.
6923 (gen_scmconfig_SOURCES): new variable.
6924 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6925 cross-compiling right.
6926 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6927 (BUILT_SOURCES): add scmconfig.h.
6928
6929 2003-03-19 Marius Vollmer <mvo@zagadka.de>
6930
6931 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6932 Adrian Bunk. Thanks!
6933
6934 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6935
6936 * goops.c (make_class_from_template): New fourth arg:
6937 applicablep.
6938 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6939 cpls.
6940
6941 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6942
6943 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6944 second arg: applicablep.
6945 (scm_i_inherit_applicable): New function.
6946
6947 * goops.c, goops.h (scm_class_applicable,
6948 scm_class_extended_accessor): New classes.
6949
6950 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6951
6952 * procs.c (scm_procedure_documentation): Removed redundant
6953 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6954 predicates.
6955
6956 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6957
6958 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6959
6960 * modules.c (scm_module_import_interface): New function.
6961
6962 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6963 scm_class_accessor.
6964 (scm_class_accessor): New class.
6965
6966 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6967
6968 * goops.c (scm_primitive_generic_generic): Enable primitive
6969 generic if not enabled.
6970 (scm_sys_goops_loaded): Setup unextended primitive generics.
6971
6972 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6973
6974 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6975 snarf macros.
6976
6977 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6978 testing example. All uses of SCM_GPROC should be converted.)
6979
6980 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6981 scm_assoc.
6982
6983 * eq.c (scm_equal_p): Turned into a primitive generic.
6984
6985 2003-02-27 Rob Browning <rlb@defaultvalue.org>
6986
6987 * Makefile.am (scmconfig.h): new target -- generate file from
6988 ../config.h.
6989 (modinclude_HEADERS): remove version.h.
6990 (nodist_modinclude_HEADERS): add version.h.
6991
6992 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6993
6994 This fixes a serious GC bug, introduced during the latest
6995 reorganization of the GC, which disabled freeing of structs and
6996 GOOPS objects:
6997
6998 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6999 SCM_EOL.
7000 (scm_struct_prehistory): Move scm_free_structs to
7001 scm_before_mark_c_hook.
7002
7003 * gc-card.c (sweep_card): Check that we haven't swept structs on
7004 this card before. That can happen if scm_i_sweep_all_segments has
7005 been called from some other place than scm_igc.
7006
7007 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7008
7009 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7010 (since hash tables now adapt their size).
7011
7012 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7013 (current number of prehistory bindings; hashtable code will select
7014 a prime which is greater than this value).
7015
7016 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7017 (current number of initial symbols).
7018
7019 * properties.c (scm_init_properties): Don't specify size of
7020 scm_properties_whash.
7021
7022 * objprop.c (scm_init_objprop): Don't specify size of
7023 scm_object_whash.
7024
7025 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7026
7027 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7028
7029 The following changes introduce the use of resizable hash tables
7030 throughout Guile. It also renames the old *-hash-table* functions
7031 to *-alist-vector* and places them, together with the rest of the
7032 weak vector support, in the module (ice-9 weak-vector). We should
7033 probably introduce a new, better, API for weak references, for
7034 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7035 look like and are used like ordinary pairs.)
7036
7037 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7038 leaf_environment_fold, obarray_remove_all): Use hashtable
7039 accessors.
7040
7041 * gc.c (scm_init_storage): Moved hook initialization to
7042 scm_storage_prehistory.
7043 (scm_storage_prehistory): New function.
7044 (scm_igc): Added commentary about placement of
7045 scm_after_sweep_c_hook.
7046
7047 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7048 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7049 SCM_WVECT_WEAK_VALUE_P.
7050
7051 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7052 functions.
7053 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7054 Removed.
7055 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7056 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7057
7058 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7059 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7060
7061 * modules.c (module-reverse-lookup): Use hashtable accessors.
7062
7063 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7064
7065 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7066 scm_make_weak_value_alist_vector,
7067 scm_make_doubly_weak_alist_vector): New functions.
7068
7069 * weaks.c (scm_init_weaks_builtins): New function.
7070
7071 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7072 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7073 SCM_WVECT_NOSCAN_P): New macros.
7074
7075 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7076 and SCM_WVECT_WEAK_VALUE_P.
7077
7078 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7079 allocate_weak_vector and exported.
7080
7081 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7082
7083 * hashtab.c: Undid thread safety. (We decided that it's better to
7084 let the user explicitly protect the tables (or not) according what
7085 is suitable for the application.)
7086
7087 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7088
7089 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7090 thread safe and handle resizing tables.
7091 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7092 SCM_DEFER/ALLOW_INTS.
7093
7094 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7095
7096 * hashtab.c (scm_vector_to_hash_table,
7097 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7098 functions.
7099 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7100 safe and handle resizing tables.
7101
7102 * weaks.c (scm_make_weak_key_hash_table,
7103 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7104 Size argument made optional. Return resizable table if not
7105 specified.
7106
7107 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7108
7109 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7110 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7111
7112 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7113
7114 * debug.c (scm_procedure_source): Handle all objects for which
7115 procedure? is #t. (Thanks to Bill Schottstaedt.)
7116
7117 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7118
7119 * futures.c (mark_futures): Don't need to mark data of recycled
7120 futures.
7121 (scan_futures, cleanup_undead): Be smarter about marking
7122 futures---avoid unnecessary passes through future lists.
7123
7124 * futures.h, futures.c: New files; Introduced recycling of
7125 futures. For fine-grained threading this lifts performance to
7126 another level. We can now use parallelization in inner loops of
7127 Guile programs without impossible overhead.
7128
7129 * threads.h, threads.c: Moved futures to their own file.
7130
7131 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7132 (DOT_X_FILES): Added futures.x.
7133 (DOT_DOC_FILES): Added futures.doc.
7134 (modinclude_HEADERS): Added futures.h.
7135
7136 * threads.c, threads.h (scm_i_create_thread): Renamed from
7137 create_thread and made global.
7138
7139 * futures.c (scm_make_future): New procedure.
7140
7141 * eval.c: #include "libguile/futures.h".
7142
7143 * init.c: #include "futures.h"
7144 (scm_init_guile_1): Call scm_init_futures.
7145
7146 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7147
7148 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7149
7150 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7151 functions.
7152
7153 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7154
7155 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7156
7157 * threads.c (create_thread): Don't unwind dynwind chain of parent
7158 thread before creation. Just start the new thread with an empty
7159 dynwind chain.
7160
7161 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7162
7163 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7164
7165 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7166
7167 * threads.c (scm_timed_wait_condition_variable): Support timed
7168 waiting also for simple condition variables.
7169
7170 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7171 of calling the procedure change-object-class.
7172
7173 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7174
7175 * ramap.c (scm_ramapc): Typo in error message.
7176
7177 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7178
7179 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7180 slots with instance allocation.
7181
7182 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7183 class.
7184 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7185
7186 * goops.c (scm_generic_function_methods): Support extended
7187 generic functions.
7188
7189 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7190
7191 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
7192 Thanks to Neil for pointing this out!
7193
7194 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7195
7196 * lang.h: Remove declarations matching definitions removed from
7197 lang.c (just below).
7198
7199 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7200
7201 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7202 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7203 and already commented out.
7204
7205 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7206 scm_lreadparen): Support reading vectors with Elisp syntax if
7207 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7208 is not currently defined, and there isn't even a configure switch
7209 to enable it yet.)
7210
7211 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7212
7213 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7214 builds work.
7215 (EXTRA_DIST): Added version.h.in.
7216
7217 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7218
7219 This change makes it possible for one thread to do lazy sweeping
7220 while other threads are running. Now only the mark phase need to
7221 have all threads asleep. We should look further into this issue.
7222 Presently, I've put the locking of scm_i_sweep_mutex at
7223 "conservative" places due to my current lack of knowledge about
7224 the garbage collector. Please feel free to restrict these regions
7225 further to allow for maximal parallelism!
7226
7227 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7228
7229 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7230 scm_gc_register_collectable_memory): Substitute locking of
7231 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7232 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7233 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7234 the single-thread section (which now only contains the mark
7235 phase).
7236 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7237 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7238
7239 * threads.c (gc_section_mutex): Removed.
7240
7241 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7242
7243 * threads.c (create_thread): Clear parent field in root state in
7244 order not to unnecessarily remember dead threads.
7245
7246 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7247 (scm_trampoline_1, scm_trampoline_2): Use them.
7248
7249 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7250
7251 Partial introduction of real plugin interface.
7252
7253 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7254 (EXTRA_DIST): Added threads-plugin.c.
7255
7256 * threads-plugin.h, threads-plugin.c: New files.
7257
7258 * threads.h: #include "libguile/threads-plugin.h".
7259
7260 * threads.c: #include "libguile/threads-plugin.c".
7261
7262 * pthread-threads.c: Temporarily remove debugging functions.
7263
7264 * threads.c, threads.h (scm_yield): Added back.
7265
7266 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7267
7268 * threads.c (really_launch): Detach before unlocking
7269 thread_admin_mutex in order not to risk being joined.
7270 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7271 thread_admin_mutex locked during GC.
7272
7273 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7274 functions.
7275
7276 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7277
7278 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7279 support for debugging mutex operations.
7280
7281 * threads.c (scm_thread): Removed filed joining_threads.
7282 (thread_print): Print thread number as well as address of thread
7283 structure.
7284 (scm_join_thread): Bugfix.
7285 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7286 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7287 scm_broadcast_condition_variable): Use the low-level API.
7288 (scm_all_threads): Return copy of thread list (to prevent
7289 unintended destruction).
7290 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
7291
7292 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7293 pthread "native" recursive mutex support.
7294
7295 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7296
7297 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7298 Simply lock a thread C API recursive mutex.
7299 (SCM_NONREC_CRITICAL_SECTION_START,
7300 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7301 SCM_REC_CRITICAL_SECTION_END): Removed.
7302
7303 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7304 direct calls to scm_rec_mutex_lock / unlock around the three calls
7305 to scm_m_expand_body.
7306
7307 * eval.c, eval.h (promise_free): New function.
7308 (scm_force): Rewritten; Now thread-safe; Removed
7309 SCM_DEFER/ALLOW_INTS.
7310
7311 * pthread-threads.h: Added partially implemented plugin interface
7312 for recursive mutexes. These are, for now, only intended to be
7313 used internally within the Guile implementation.
7314
7315 * pthread-threads.c: New file.
7316
7317 * threads.c: Conditionally #include "pthread-threads.c".
7318
7319 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7320 thread-safe;
7321
7322 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7323 SCM_GLOBAL_REC_MUTEX): New macros.
7324
7325 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7326 macros---use mutexes instead.
7327
7328 * tags.h (SCM_IM_FUTURE): New tag.
7329
7330 * eval.c (scm_m_future): New primitive macro.
7331 (SCM_CEVAL): Support futures.
7332 (unmemocopy): Support unmemoization of futures.
7333
7334 * print.c (scm_isymnames): Name of future isym.
7335
7336 * version.c: Unmade some changes to my private copy that got
7337 committed by mistake.
7338
7339 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7340
7341 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7342 2002-12-10.
7343
7344 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7345
7346 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7347 logical place.
7348
7349 * threads.c (create_thread): Remember root object until the handle
7350 of the new thread is on all_threads list.
7351
7352 * root.c (scm_make_root): Moved copying of fluids until after
7353 creation of root handle so that the fluids are GC protected. Also
7354 removed the critical section.
7355
7356 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7357
7358 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7359
7360 * gc-malloc.c (malloc_mutex): New mutex.
7361 (scm_gc_malloc_prehistory): Initialize it.
7362 (scm_realloc): Serialize call to realloc
7363 (scm_calloc): Same for calloc.
7364 Thanks to Wolfgang Jaehrling!
7365 (Now we have to make sure all calls to malloc/realloc are made
7366 through scm_malloc.)
7367
7368 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7369
7370 * threads.c (really_launch): Release heap (to prevent deadlock).
7371 (create_thread): Release heap before locking thread admin mutex.
7372
7373 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7374
7375 * threads.c (scm_i_thread_invalidate_freelists): New
7376 function.
7377
7378 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7379
7380 * modules.c (scm_export): Inserted a return statement.
7381
7382 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7383
7384 * modules.c (scm_export): new function
7385
7386 * gc-card.c: add a note about malloc()/free() overhead.
7387
7388 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7389
7390 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7391 in srcdir.
7392
7393 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7394
7395 These changes remove scm_ints_disabled (which hasn't has any
7396 effect in Guile for quite some time).
7397
7398 * async.c, error.h (scm_ints_disabled): Removed.
7399
7400 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7401 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7402 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7403 (old_ints): Removed.
7404
7405 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7406 critical section.
7407 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7408 SCM_ALLOW_INTS.
7409
7410 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7411
7412 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7413 Removed accidental #if 0 around these functions.
7414
7415 These changes are the start of support for preemptive
7416 multithreading. Marius and I have agreed that I commit this code
7417 into the repository although it isn't thoroughly tested and surely
7418 introduces many bugs. The bugs should only be exposed when using
7419 threads, though. Signalling and error handling for threads is
7420 very likely broken. Work on making the implementation cleaner and
7421 more efficient is needed.
7422
7423 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7424 (SCM_NONREC_CRITICAL_SECTION_START,
7425 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7426 SCM_REC_CRITICAL_SECTION_END): New macros.
7427 (SCM_CRITICAL_SECTION_START/END): Defined here.
7428
7429 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7430 the three calls to scm_m_expand_body.
7431
7432 * gc.h: #include "libguile/pthread-threads.h";
7433 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7434
7435 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7436 scm_t_key;
7437
7438 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7439 access.
7440
7441 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7442
7443 * gc-freelist.c, threads.c (really_launch): Use
7444 SCM_FREELIST_CREATE.
7445
7446 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7447
7448 * gc.c (scm_i_expensive_validation_check, scm_gc,
7449 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7450 heap administration so that those pieces of code are executed
7451 single-threaded. We might consider rewriting these code sections
7452 in terms of a "call_gc_code_singly_threaded" construct instead of
7453 calling the pair of scm_i_thread_put_to_sleep () and
7454 scm_i_thread_wake_up (). Also, we would want to have as many of
7455 these sections eleminated.
7456
7457 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7458
7459 * inline.h: #include "libguile/threads.h"
7460
7461 * pthread-threads.h: Macros now conform more closely to the
7462 pthreads interface. Some of them now take a second argument.
7463
7464 * threads.c, threads.h: Many changes.
7465
7466 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7467
7468 * Makefile.am (version.h): Changed $^ --> $< in rule for
7469 version.h.
7470
7471 2002-12-08 Rob Browning <rlb@defaultvalue.org>
7472
7473 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
7474 (SCM_MINOR_VERSION): use @--@ substitution now.
7475 (SCM_MICRO_VERSION): use @--@ substitution now.
7476 (scm_effective_version): new function prototype.
7477
7478 * version.c (scm_effective_version): new function, also add
7479 effective-version.
7480
7481 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
7482 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
7483 SCM_LIBRARY_DIR.
7484 (version.h): generate this here rather than configure.in. This
7485 approach tracks source edits better (i.e. more immediately).
7486 Might be worth considering for other .in files too.
7487
7488 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
7489
7490 Reorganized thread package selection. A thread package now only
7491 implements a small set of pthread like functions and Guile
7492 implements the rest on top of that. Guile's implementation is
7493 what the "coop-pthreads" package has been previously. Support for
7494 "coop" threads has been removed until I get time to add it again.
7495
7496 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
7497 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
7498 null-threads.c, coop-pthreads.c.
7499 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
7500 pthread-threads.h.
7501
7502 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
7503
7504 * threads.h: Do not include "libguile/coop-defs.h". Include
7505 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
7506 (previously deprecated) C level thread API prototypes. They are
7507 now in the thread package specific headers, "null-threads.h" and
7508 "pthread-threads.h".
7509 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
7510 New.
7511 (scm_threads_init): Removed.
7512 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
7513 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
7514 SCM_I_THREAD_SWITCH_COUNT): Define here.
7515 (scm_single_thread_p): Removed.
7516 (scm_call_with_new_thread): Take two args directly instead of list
7517 of two args.
7518 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
7519 SCM_SET_THREAD_LOCAL_DATA): Define here.
7520
7521 * threads.c: Merged with "coop-pthreads.c".
7522
7523 * null-threads.h: Implement pthread-like API as a set of macros.
7524
7525 * pthread-threads.h: New, implement pthread-like API by deferring
7526 to pthread itself.
7527
7528 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
7529 has been lost in the reorganization.
7530
7531 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
7532
7533 The following change makes it possible to move procedure
7534 application dispatch outside inner loops. The motivation was
7535 clean implementation of efficient replacements of R5RS primitives
7536 in SRFI-1.
7537
7538 The semantics is clear: scm_trampoline_N returns an optimized
7539 version of scm_call_N (or NULL if the procedure isn't applicable
7540 on N args).
7541
7542 Applying the optimization to map and for-each increases efficiency
7543 noticeably. For example, (map abs ls) is 8 times faster than
7544 before.
7545
7546 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
7547
7548 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
7549
7550 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
7551 (map, for-each): Handle also application on two args as a special
7552 case; Use trampolines.
7553
7554 Other changes:
7555
7556 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
7557 (subr2oless): Removed.
7558 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
7559 vector GC protected.
7560
7561 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
7562 scm_out_of_range.
7563
7564 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7565
7566 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7567
7568 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7569
7570 * debug.c (scm_make_iloc): Added missing "return".
7571
7572 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7573
7574 * strports.c (scm_eval_string_in_module): Validate second arg to
7575 be a module. Thanks to Arno Peters!
7576
7577 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7578
7579 * .cvsignore: remove goops.c
7580
7581 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7582
7583 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7584 module_variable, scm_module_lookup_closure,
7585 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7586 scm_system_module_env_p): Don't compare SCM values with C
7587 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7588 over SCM_NFALSEP.
7589
7590 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7591
7592 * eval.h (SCM_MAKE_ILOC): New macro.
7593
7594 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7595 the iloc bitpattern here.
7596
7597 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7598
7599 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7600 part of the API, otherwise it's difficult to write Guile
7601 extensions using non-blocking I/O => moved #include
7602 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7603
7604 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7605 s_unlock_mutex.
7606
7607 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7608
7609 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7610 are defined in configure.in.
7611
7612 * threads.c: Removed SCM_API from function definitions. SCM_API
7613 is only for declarations.
7614
7615 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7616
7617 * coop-pthreads.h: Added support for thread specific data to the
7618 generic C API for the coop-pthreads case.
7619
7620 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7621 change.
7622 (scm_cond_broadcast): Added missing function.
7623
7624 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7625
7626 * coop.c (coop_next_runnable_thread): Removed, wich should have
7627 happened when GUILE_ISELECT was hard-wired.
7628
7629 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7630
7631 * Makefile.am (libguile_la_SOURCES): Added threads.c
7632 (DOT_DOC_FILES): Added threads.doc.
7633 (DOT_X_FILES): Added threads.x.
7634 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7635 (noinst_HEADERS): Added coop-pthreads.c.
7636 (modinclude_HEADERS): Added coop-pthreads.h.
7637
7638 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7639 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7640
7641 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7642 Thanks to Bill Schottstaedt!
7643
7644 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7645
7646 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7647 SCM_COPT_THREADS is defined.
7648 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7649 is defined.
7650
7651 * coop-pthreads.c: Some harmless renamings of internal stuff.
7652 (create_thread): New, generalized version of
7653 scm_call_with_new_thread.
7654 (scm_call_with_new_thread): Use it.
7655 (scm_spawn_thread): New, use create_thread.
7656
7657 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7658
7659 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7660 start testing it now.
7661
7662 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7663 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7664 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7665 is defined.
7666
7667 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7668
7669 * scmsigs.c (signal_cell_handlers, install_handler_data,
7670 scm_delq_spine_x, really_install_handler, install_handler): New
7671 scheme for triggering signal handlers, to simplify take_signal.
7672 (take_signal): Simplified, to avoid race conditions.
7673 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7674 hasn't exited yet.
7675
7676 * async.c (scm_async_click): Reset pending_asyncs, handle
7677 signal_asyncs. Don't set cdr of a non-signal async to #f.
7678 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7679 always. Set pending_asyncs.
7680 (scm_system_async_mark_for_thread): Check that thread has not
7681 exited.
7682 (scm_unmask_signals, decrease_block): Call scm_async_click after
7683 block_asyncs becomes zero.
7684
7685 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7686 active_asyncs.
7687
7688 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7689 fields.
7690 * root.c (root_mark): Mark them.
7691 (make_root): Initialize them.
7692
7693 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7694 USE_COOP_THREADS.
7695 (scm_internal_select): Define one version for USE_COOP_THREADS and
7696 one for USE_NULL_THREADS.
7697 (scm_init_iselect): Likewise.
7698
7699 * inline.h (scm_cell, scm_double_cell): Also allow
7700 USE_COPT_THREADS to not protect the slot initializers.
7701
7702 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7703 because threads need to be initialized before the stack, but
7704 gsubrs such as scm_timed_condition_variable_wait can only be
7705 created later.
7706
7707 * threads.h: Include "coop-pthreads.h" when requested.
7708 (scm_threads_make_mutex, scm_threads_lock_mutex,
7709 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7710 not implemented anyway.
7711 (scm_init_thread_procs, scm_try_mutex,
7712 scm_timed_condition_variable_wait,
7713 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7714 scm_thread_exited_p): New prototypes.
7715 (struct timespec): Define if not already defined.
7716 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7717 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7718 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7719 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7720 deprecated.
7721
7722 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7723 requested.
7724 (scm_thread_exited_p): New.
7725 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7726 registered procedures.
7727 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7728 Use the latter as the procedure for "wait-condition-variable",
7729 thus offering a optional timeout parameter to Scheme.
7730 (scm_wait_condition_variable): Implement in terms of
7731 scm_timed_wait_condition_variable.
7732 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7733 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7734 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7735 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7736 scm_make_mutex, etc, and deprecate.
7737 (scm_init_threads): Do not create smobs, leave this to
7738 scm_threads_init. Do not include "threads.x" file.
7739 (scm_init_thread_procs): New, include "threads.x" here.
7740
7741 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7742 scm_null_mutex_lock, scm_null_mutex_unlock,
7743 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7744 scm_null_condvar_wait, scm_null_condvar_signal,
7745 scm_null_condvar_destroy): Removed.
7746 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7747 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7748 scm_cond_destory): Do not define, they are now deprecated and
7749 handled by threads.{h,c}.
7750
7751 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7752 (scm_threads_init): Create smobs here, using the appropriate
7753 sizes.
7754 (block): Removed, now unused.
7755 (scm_c_thread_exited_p): New.
7756 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7757 scm_null_mutex_destroy, scm_null_condvar_init,
7758 scm_null_condvar_wait, scm_null_condvar_signal,
7759 scm_null_condvar_destroy): Removed and updated users to do their
7760 task directly.
7761 (scm_try_mutex, timeval_subtract,
7762 scm_timed_wait_condition_variable,
7763 scm_broadcast_condition_variable): New.
7764 (scm_wait_condition_variable): Removed.
7765
7766 * coop-defs.h (coop_m): Added 'level' field.
7767 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7768 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7769 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7770 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7771 define.
7772 (coop_condition_variable_broadcast): New.
7773
7774 * coop-threads.c (scm_threads_init): Create smobs here, using the
7775 appropriate sizes.
7776 (scm_c_thread_exited_p, scm_try_mutex,
7777 scm_timed_wait_condition_variable,
7778 scm_broadcast_condition_variable): New.
7779 (scm_wait_condition_variable): Removed.
7780
7781 * coop.c (coop_new_mutex_init): Initialize level.
7782 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7783 level.
7784 (coop_condition_variable_signal): Renamed to
7785 coop_condition_variable_broadcast and reimplemented in terms of
7786 that. Thus...
7787 (coop_condition_variable_broadcast): New.
7788
7789 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7790
7791 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7792
7793 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7794
7795 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7796 of system headers.
7797
7798 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7799 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
7800 give better error messages. Thanks to Bill Schottstaedt!
7801
7802 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7803
7804 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7805 scm_definedp to scm_defined_p and deprecated scm_definedp.
7806
7807 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7808
7809 * async.h, async.c (scm_system_async): Fixed deprecation to work
7810 correctly when deprecated features are excluded.
7811
7812 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7813
7814 * async.c (scm_system_async_mark_for_thread): Validate thread
7815 argument.
7816
7817 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7818
7819 * feature.c (scm_init_feature): Don't add 'threads' for
7820 USE_NULL_THREADS.
7821
7822 * inline.h (scm_cell, scm_double_cell): Also allow
7823 USE_NULL_THREADS to not protect the slot initializers.
7824
7825 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7826 "USE_THREAD".
7827
7828 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7829 (modinclude_HEADERS): Added null-threads.h.
7830
7831 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7832 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7833 (scm_init_threads): Use generic type names scm_t_mutex and
7834 scm_t_cond instead of coop_m and coop_c.
7835
7836 * null-threads.c, null-threads.h: New files.
7837
7838 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7839
7840 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7841 This is to support makes that know about "$<" only in pattern
7842 rules, like Sun's make.
7843
7844 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7845
7846 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7847 substitution. Thanks to David Allouche!
7848
7849 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7850
7851 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7852 !SCM_ENABLE_DEPRECATED.
7853
7854 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7855
7856 * async.c (scm_system_async_mark_for_thread): Only call
7857 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7858 otherwise.
7859
7860 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7861 USE_THREADS is defined. Use scm_root otherwise.
7862 (scm_sigaction_for_thread): Ignore THREAD argument when
7863 USE_THREADS is not defined. Also, move THREAD argument defaulting
7864 out of HAVE_SIGACTION section, which was a bug.
7865
7866 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7867
7868 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7869 signal_handlers, not the closure that is used as the async.
7870 The closure is stored in signal_handler_cells, as previously.
7871
7872 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7873
7874 * root.h (scm_root_state): Added 'block_async' slot.
7875 (scm_active_asyncs): Removed abbrev.
7876 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7877
7878 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7879 abbrev.
7880
7881 * async.h (scm_call_with_blocked_asyncs,
7882 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7883 scm_c_call_with_unblocked_asyncs): New prototypes.
7884 (scm_mask_signals, scm_unmask_signals): Deprecated.
7885 (scm_mask_ints): Turned into a macro.
7886 * async.c (scm_mask_ints): Removed.
7887 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7888 this should not be necessary.
7889 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7890 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7891 deprecation warning and check for errornous use. Set block_asyncs
7892 instead of scm_mask_ints.
7893 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7894 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7895 scm_c_call_with_unblocked_asyncs): New.
7896
7897 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7898 Asyncs are enabled by default.
7899
7900 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7901
7902 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7903 6th element: an input waiting thunk.
7904 (sf_input_waiting): New.
7905
7906 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7907
7908 * root.c (root_mark): Mark active_asyncs slot.
7909
7910 * async.c (scm_async_click): Set the cdr of a executed handler
7911 cell to SCM_BOOL_F, not SCM_EOL.
7912 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7913 and only if the handler procedure is not already present.
7914 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7915 with SCM_BOOL_F.
7916 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7917
7918 2002-10-04 Rob Browning <rlb@defaultvalue.org>
7919
7920 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7921
7922 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7923 scm_lt_dlopenext, and scm_lt_dlerror.
7924 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7925 and scm_lt_dlerror.
7926 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7927 and scm_lt_dlerror.
7928 (sysdep_dynl_init): switch to scm_lt_dlinit();
7929
7930 * Makefile.am (libguile_la_LIBADD): switch to use
7931 libguile-ltdl.la.
7932
7933 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
7934
7935 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7936
7937 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7938 * scmsigs.c (got_signal): Removed.
7939 (signal_handler_cells, signal_handler_threads): New.
7940 (take_signal): Queue the cell of the signal for the specified
7941 thread. Reset the signal handler on systems that don't have
7942 sigaction.
7943 (sys_deliver_signals): Removed.
7944 (close_1): New.
7945 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7946 extended to also set the thread of a signal and allocate a cell
7947 for it. Keep the Scheme name "sigaction". Check that signum is
7948 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7949 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7950 (scm_init_scmsigs): Allocate signal_handler_cells and
7951 signal_handler_threads vectors.
7952
7953 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7954 that system asnycs and user asyncs are separated. Reimplemented
7955 system asyncs to work per-thread.
7956
7957 * gc.c (scm_init_gc): Do not use scm_system_async.
7958
7959 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7960 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7961 Removed prototypes.
7962 (scm_i_queue_async_cell): New.
7963
7964 * __scm.h (scm_asyncs_pending_p): Removed.
7965 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7966 scm_asyncs_pending_p.
7967
7968 * async.h (scm_system_async_mark_for_thread): New prototype.
7969
7970 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7971
7972 * root.h (scm_root_state): Added new "active_asyncs" slot.
7973 * root.c (scm_make_root): Initialize it to SCM_EOL.
7974
7975 * coop-defs.h (coop_t): Added new "handle" slot.
7976 * coop-threads.c (all_threads, scm_current_thread,
7977 scm_all_threads, scm_i_thread_root): New.
7978 (scm_threads_init): Add main thread to all_threads.
7979 (scheme_launch_thread): Remove thread from all_threads when it
7980 terminates.
7981 (scm_call_with_new_thread): Initialize handle slot of coop_t
7982 structure and add new thread to all_threads.
7983 (scm_spawn_thread): Likewise.
7984
7985 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7986 * threads.c (scm_current_thread, scm_all_threads): Register as
7987 primitives.
7988
7989 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7990
7991 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7992
7993 * script.c (scm_compile_shell_switches): Fix bad spelling of
7994 `explicitly' in comment.
7995
7996 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7997
7998 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7999 Refer to provided? in doc string rather than deprecated feature?.
8000
8001 2002-09-24 Gary Houston <ghouston@arglist.com>
8002
8003 * inline.h (scm_double_cell): prevent reordering of statements
8004 with any following code (for GCC 3 strict-aliasing).
8005 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8006 the earlier version of the reordering prevention.
8007
8008 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8009
8010 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8011
8012 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8013
8014 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8015 protection.
8016
8017 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8018
8019 * inline.h: include stdio.h
8020
8021 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8022
8023 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8024
8025 * gc-segment.c (scm_i_make_initial_segment): check user settings
8026 for sanity.
8027
8028 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8029 sanity.
8030
8031 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8032
8033 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8034
8035 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
8036 these won't ever wrap around with high memory usage. Thanks to
8037 Sven Hartrumpf for finding this.
8038
8039 * gc-freelist.c: include <stdio.h>
8040
8041 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8042
8043 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8044
8045 * vectors.h (SCM_VECTOR_REF): New.
8046
8047 * snarf.h (SCM_DEFINE_PUBLIC): New.
8048
8049 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8050
8051 * socket.c (scm_addr_vector): Added size of address to arguments.
8052 Use it to avoid accessing a non-existent path in a sockaddr_un.
8053 Changed all callers.
8054
8055 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8056
8057 * gc.h: remove DOUBLECELL card flags.
8058
8059 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8060 scm_realloc().
8061
8062 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8063 init loop; handle this from scm_init_card_freelist()
8064
8065 * gc-card.c (scm_init_card_freelist): init bit vector here.
8066
8067 * numbers.c (scm_make_real): prevent reordering of statements
8068 num2float.i.c (FLOAT2NUM): idem
8069
8070 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8071
8072 * eval.h: prepend libguile/ to include path
8073
8074 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8075
8076 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
8077 years. Thanks to Martin Grabmüller!
8078
8079 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8080
8081 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8082 unsigned numbers for computing minimum heap increment. This
8083 prevents weird results when a a negative minimum increment is
8084 computed.
8085
8086 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8087
8088 * gc_os_dep.c: When we have __libc_stack_end, use that directly
8089 instead of the old tricks.
8090
8091 * guile-snarf.in: Do not expect the input file to be the first
8092 argument after the optional "-o" option, just pass everything to
8093 the pre-processor without extracting the input file name.
8094
8095 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8096
8097 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8098 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8099
8100 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8101
8102 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8103 Bill Schottstaedt for the bug report
8104
8105 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8106
8107 * print.c (scm_iprin1): Print primitives generics always as
8108 "primitive-generic" even when they have no primitive methods yet.
8109
8110 2002-08-17 Gary Houston <ghouston@arglist.com>
8111
8112 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8113 call.
8114
8115 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8116
8117 * ports.c (scm_add_to_port_table): small bugfix.
8118
8119 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8120 malloc.
8121
8122 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8123 only use SCM_MIN_HEAP_SEG_SIZE.
8124
8125 * ports.c (scm_add_to_port_table): add backwards compatibility
8126 function
8127
8128 * ports.h: use scm_i_ prefix for port table and port table size.
8129
8130 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8131
8132 * vports.c (scm_make_soft_port): Initialize pt variable.
8133
8134 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8135
8136 * strports.h (scm_c_eval_string_in_module,
8137 scm_eval_string_in_module): New prototypes.
8138 * strports.c (scm_eval_string_in_module): New, but use
8139 "eval-string" as the Scheme name and make second parameter
8140 optional.
8141 (scm_eval_string): Implement using scm_eval_string_in_module.
8142 (scm_c_eval_string_in_module): New.
8143 Thanks to Ralf Mattes for the suggestion!
8144
8145 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8146
8147 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8148 message and abort.
8149
8150 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8151
8152 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8153 stead of scm_t_port*. The function now takes a tag argument.
8154
8155 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8156
8157 * gc.h: add scm_debug_cells_gc_interval to public interface
8158
8159 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8160
8161 * gc.c (scm_i_expensive_validation_check): separate expensive
8162 validation checks from cheap ones.
8163
8164 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8165
8166 * read.c (scm_input_error): new function: give meaningful error
8167 messages, and throw read-error
8168
8169 * gc-malloc.c (scm_calloc): add scm_calloc.
8170
8171 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8172
8173 * tags.h: remove GC bits documentation from the tags table.
8174
8175 * read.c (INPUT_ERROR): Prepare for file:line:column error
8176 messages for errors in scm_lreadr() and friends.
8177
8178 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8179
8180 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8181 implementation).
8182 (scm_gc_calloc): new function
8183
8184 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8185
8186 * ports.c (scm_new_port_table_entry): init port entry to 0
8187 completely.
8188
8189 * ports.c (scm_new_port_table_entry): change function from
8190 scm_add_to_port_table. This prevents cells with null-pointers from
8191 being exposed to GC.
8192
8193 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
8194 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
8195
8196 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
8197 to gc-stats.
8198
8199 * numbers.c (big2str): return "0" for 0 iso. ""
8200
8201 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8202 private-gc.h: new file
8203
8204 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8205 sweeping. More documentation in workbook/newgc.text
8206
8207 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8208
8209 * random.c (rstate_free): Return zero.
8210
8211 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8212
8213 * environments.c (remove_key_from_alist): Removed.
8214
8215 (obarray_remove): Simplified.
8216
8217 2002-07-24 Stefan Jahn <stefan@lkcc.org>
8218
8219 * continuations.h: ia64: Include <signal.h> before
8220 <sys/ucontext.h>.
8221
8222 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8223
8224 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8225
8226 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8227
8228 * goops.c (scm_compute_applicable_methods): use
8229 scm_remember_upto_here_1 iso scm_remember_upto_here
8230
8231 * macros.c: include deprecation.h
8232
8233 * vectors.c (scm_vector_move_right_x): remove side effect in
8234 macro arg.
8235 (scm_vector_move_left_x): idem.
8236
8237 * net_db.c, posix.c, socket.c: variable naming: change ans to
8238 result.
8239
8240 * sort.c (scm_merge_vector_x): accept vector as argument
8241 iso. SCM*. This is needed for full GC correctness.
8242
8243 * gc.h: undo previous undocumented changes related to #ifdef
8244 GENGC.
8245
8246 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8247
8248 * *.c: add space after commas everywhere.
8249
8250 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8251 Document cases where SCM_WRITABLE_VELTS() is used.
8252
8253 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8254 SCM_VELTS() return a const pointer
8255 (SCM_VECTOR_SET): add macro.
8256
8257 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8258
8259 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8260 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8261 Deprecated the special kind of built-in dynamic syntax transformer
8262 that was inaccurately named "macro". Note: The built-in syntax
8263 transformers that are named "mmacro" or "memoizing-macro" still
8264 exist, and it is these which come much closer to what one would
8265 call a macro.
8266
8267 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8268
8269 * eval.c (unmemocopy): Fix for
8270 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8271 with internal definitions and local-eval).
8272
8273 2002-07-12 Gary Houston <ghouston@arglist.com>
8274
8275 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8276 defined. They don't do anything useful, especially since the
8277 only case where DYNAMIC_LINKING is undefined seems to be
8278 when --with-modules=no is given to configure, which is basically
8279 requesting that the "dynamic linking module" be omitted.
8280
8281 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8282 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8283
8284 * extensions.c (load_extension): check DYNAMIC_LINKING for
8285 scm_dynamic_call.
8286 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8287 scm_init_dynamic_linking.
8288
8289 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8290
8291 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8292 check for Cygwin when including <winsock2.h>, this is already
8293 check for by configure. Thus, revert change from 2002-07-07.
8294
8295 2002-07-10 Gary Houston <ghouston@arglist.com>
8296
8297 * eq.c: include <string.h>
8298 * dynl.c: docstring editing.
8299
8300 2002-07-09 Gary Houston <ghouston@arglist.com>
8301
8302 * dynl.c (scm_dynamic_call): docstring editing.
8303
8304 2002-07-08 Rob Browning <rlb@defaultvalue.org>
8305
8306 * gc_os_dep.c: HURD fixes.
8307
8308 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8309
8310 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8311
8312 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8313 this should be compiled for BUILD host.
8314 Override default rule for
8315 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8316 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8317 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8318
8319 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8320 <winsock2.h> on Cygwin even when we have it.
8321
8322 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8323
8324 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8325 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8326 the code. Full number of arguments checking of closures is
8327 mandatory now. However, the option to disable the checking has
8328 most probably not been used anyway.
8329
8330 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8331
8332 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8333 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8334 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8335 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8336 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8337 (scm_source_properties, scm_set_source_properties_x,
8338 scm_source_property): Removed compile time option SCM_RECKLESS to
8339 clean up the code. Full number of arguments checking of closures
8340 is mandatory now. However, the option to disable the checking has
8341 most probably not been used anyway.
8342
8343 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8344 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8345
8346 2002-06-30 Gary Houston <ghouston@arglist.com>
8347
8348 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8349 do anything useful. Added a comment about need for a mutex if
8350 pre-emptive threading is supported.
8351
8352 * posix.c (scm_convert_exec_args), dynl.c
8353 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8354 allocate_string_pointers. 2) simplified: don't reallocate the
8355 strings, just make an array of pointers 3) avoid memory leaks on
8356 error 4) let the procedure report errors in its own name.
8357 Consequences: 1) the procedures now assume that SCM strings are
8358 nul-terminated, which should always be the case. 2) Since strings
8359 are not reallocated, it's now possible for strings passed to
8360 dynamic-args-call to be mutated.
8361
8362 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8363
8364 * __scm.h, eval.c, eval.h: Removed compile time option
8365 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8366 variable positions during memoization is mandatory. However, the
8367 option to disable the caching has most probably not been used
8368 anyway.
8369
8370 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8371
8372 * print.c (scm_simple_format): Print missing part of format before
8373 ~% control. Thanks to Daniel Skarda!
8374
8375 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8376
8377 * mkstemp.c: Added exception notice to license statement.
8378
8379 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8380
8381 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8382 it is represented as a floating point value so that we can change
8383 its sign.
8384
8385 From John W. Eaton <jwe@bevo.che.wisc.edu>
8386
8387 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8388
8389 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8390
8391 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
8392 in addition to `i386'. Thanks to Dale P. Smith.
8393
8394 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8395
8396 * eq.c (real_eqv): New.
8397 (scm_eqv_p): Use it when comparing reals and complexes.
8398
8399 * numbers.c: Include <string.h>, for strncmp.
8400 (mem2complex): Do not create negative NaNs.
8401 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8402 NaN.
8403 (scm_inexact_to_exact): Signal error when converting a NaN.
8404
8405 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8406
8407 * posix.c (scm_putenv): Handle removing variables explicitely by
8408 calling unsetenv.
8409
8410 From John W. Eaton.
8411
8412 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8413 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8414 and scm_nan.
8415 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8416 [SCO && ! HAVE_ISINF] (isinf): New function.
8417 (xisinf, xisnan): New functions.
8418 (IS_INF): Delete.
8419 (isfinite): Define in terms of xisinf.
8420 (scm_inf_p, scm_nan_p): New functions.
8421 (guile_Inf, guile_NaN): New file-scope vars.
8422 (guile_ieee_init): New function.
8423 (scm_inf, scm_nan): New functions.
8424 (idbl2str): Handle Inf and NaN. Remove funny label and
8425 corresponding gotos.
8426 (ALLOW_DIVIDE_BY_ZERO): New macro.
8427 (scm_divide): Allow division by zero to occur if
8428 ALLOW_DIVIDE_BY_ZERO is defined.
8429 Handle bignums and ints as special cases.
8430
8431 Additional stuff by me:
8432
8433 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8434 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8435 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8436 NaN. They will provide their own sign.
8437 (scm_divide): Only allow divides by inexact zeros. Dividing by
8438 exact zeros still signals an errors.
8439
8440 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8441
8442 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
8443 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
8444 (scm_slot_exists_p): Rename from scm_slots_exists_p.
8445 Thanks to Andreas Rottmann.
8446
8447 2002-04-20 Gary Houston <ghouston@arglist.com>
8448
8449 * removal of unused fields in root state (thanks to Christopher
8450 Cramer for pointing out the disuse.)
8451 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
8452 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
8453
8454 * root.c (root_mark): don't mark them.
8455 (scm_make_root): don't set them to #f.
8456 * init.c (scm_init_standard_ports): don't initialise with the
8457 default ports.
8458
8459 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8460
8461 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8462 cpp_sig_symbols.c.
8463
8464 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
8465
8466 * guile-snarf.in: Do not clean input file. This would write to
8467 the $(srcdir) during a VPATH build, which is not allowed. It also
8468 isn't needed since it only works when an output filename has been
8469 specified and in that case we don't need to clean the input file
8470 because the output file will already exist.
8471
8472 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
8473
8474 * guile-snarf: Install the trap for removing $cleanfile only when
8475 the value of $cleanfile is actually known.
8476
8477 2002-04-10 Rob Browning <rlb@defaultvalue.org>
8478
8479 * .cvsignore: add versiondat.h and *.c.clean.c.
8480
8481 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8482
8483 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
8484 function, replaces macro SRCBRKP.
8485
8486 (SRCBRKP): Deprecated.
8487
8488 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
8489 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
8490 temporary variable.
8491
8492 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8493
8494 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
8495 CHECK_EXIT and removed all references to them.
8496
8497 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8498
8499 * debug.h (scm_ready_p, debug_print): Removed declarations.
8500
8501 * eval.c (EVALCELLCAR): Removed.
8502
8503 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
8504 operation from condition.
8505
8506 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
8507
8508 * guile-snarf.in: When the output filename is "-", write to
8509 stdout. When no "-o" option is given, use "-" as the output
8510 filename (i.e., stdout). Only 'clean' the inputfile or remove the
8511 output file on error when the output file name is not "-". Define
8512 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
8513
8514 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
8515
8516 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
8517
8518 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
8519 and the corresponding goto statements. Removed redundant code.
8520
8521 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8522
8523 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
8524 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
8525 Re-enabled handing of rpsubrs and asubrs.
8526
8527 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
8528
8529 * eval.c (SIDEVAL): Removed.
8530
8531 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
8532 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
8533 argument checking order for set! to locals, variables and symbols.
8534 Improvements to control structure. Removed some uses of arg1 and
8535 arg2 as temporary variables.
8536
8537 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
8538
8539 * guile-snarf.in: Remove "--compat=1.4" support.
8540 Add "-d" and "-D" support.
8541
8542 (deprecated_list): New var.
8543 (compat_mode_clean_xxx): Delete.
8544 (grep_deprecated): New func.
8545 ("main"): If "-d" or "-D", call `grep_deprecated'.
8546
8547 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
8548
8549 * hooks.h: Change scm_t_c_hookype_t everywhere to
8550 scm_t_c_hook_type.
8551
8552 Docstring fixes:
8553
8554 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
8555
8556 * ports.c (scm_sys_make_void_port): Use `@file'.
8557
8558 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
8559 than `else'.
8560
8561 * macros.c (scm_makmacro): Don't say that the form replaces its
8562 source, because it doesn't.
8563 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8564
8565 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8566 scm_select, scm_basename), goops.c (scm_method_generic_function),
8567 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8568 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8569 spelling mistakes.
8570
8571 * debug.c (scm_debug_options), eval.c
8572 (scm_eval_options_interface), read.c (scm_read_options): Change
8573 incorrect @var in docstring to @code.
8574
8575 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8576
8577 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8578
8579 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8580 guile-snarf can remove trailing non-init code.
8581
8582 * guile-snarf.in (modern_snarf): Remove everything following and
8583 including "^:^" from the output.
8584
8585 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8586
8587 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8588
8589 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8590
8591 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8592
8593 * guile-snarf.in: Update copyright.
8594 Rewrite to internalize error handling.
8595 Add "--compat=1.4" handling.
8596 Add commentary.
8597
8598 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8599 (snarfcppopts): New var.
8600 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8601 (.c.doc): Use $(snarfcppopts).
8602
8603 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8604 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8605 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8606 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8607 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8608 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8609 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8610 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8611 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8612 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8613 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8614 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8615 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8616 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8617
8618 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8619
8620 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8621 The next step will be to remove the union 't' and simplify the
8622 code of SCM_CEVAL that way.
8623
8624 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8625
8626 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8627 rreadfds, rwritefds, rexceptfds): Made static.
8628
8629 * gc.c (terminating), fports.c (terminating): Renamed
8630 scm_i_terminating.
8631
8632 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8633
8634 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8635 potential overflow problems. Thanks to John W Eaton!
8636
8637 * strop.c (string_capitalize_x): Treat characters as unsigned so
8638 that 8-bit chars work. Thanks to David Pirotte!
8639
8640 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8641
8642 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8643 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8644 proc as temporary variables. Introduced temporary variables with
8645 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8646 by a more explicit predicate in some places.
8647
8648 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
8649
8650 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8651 Added lots of comments regarding the implementation of #@dispatch.
8652 Changed intra-procedure communication to use t.arg1 instead of
8653 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8654 variables. Introduced temporary variables with hopefully
8655 descriptive names for clarification. Replaced SCM_N?IMP by a more
8656 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8657 of computing the expression explicitly. Eliminate now unused
8658 label nontoplevel_cdrxbegin.
8659
8660 * goops.h (SCM_INSTANCE_HASH): New macro.
8661
8662 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8663
8664 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8665
8666 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8667 "guile-snarf" moved back from `noinst_SCRIPTS'.
8668
8669 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8670
8671 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8672 exists when adding a source property other than those that are
8673 handled explicitly, add the new property to the SRCPROPS obj's
8674 plist.
8675
8676 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8677 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8678
8679 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8680 debug.status. It isn't needed, and it can overflow the bits
8681 reserved for it (which may lead to a segv or a GC abort).
8682
8683 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8684
8685 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8686 side-effecting operations from conditions and macro calls.
8687 Replaced SCM_N?IMP by a more explicit predicate in some places.
8688 Minimized the scope of some variables.
8689
8690 2002-03-02 Stefan Jahn <stefan@lkcc.org>
8691
8692 * convert.i.c: Fixed int <-> long conversions which would have
8693 failed if their sizes were different.
8694
8695 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8696
8697 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8698 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8699 as temporary variables. Removed side-effecting operations from
8700 conditions and macro calls. Introduced temporary variables with
8701 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8702 by a more explicit predicate in some places. Removed code that
8703 was conditionally compiled if SICP was defined - which it never
8704 is.
8705
8706 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8707
8708 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8709 Removed some uses of t.arg1 and proc as temporary variables.
8710 Removed side-effecting operations from conditions and macro calls.
8711 Introduced temporary variables with hopefully descriptive names
8712 for clarification. Replaced SCM_N?IMP by a more explicit
8713 predicate in some places.
8714
8715 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8716
8717 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8718 explicit predicate in some places.
8719
8720 (CHECK_EQVISH): Removed.
8721
8722 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8723 variables. Removed side-effecting operations from conditions and
8724 macro calls. Introduced temporary variables for clarification.
8725 Sorted if-else-if check for the type of the last form in a list by
8726 frequency. Avoided some unnecessary tail-recursion calls.
8727
8728 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8729
8730 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8731 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8732 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8733 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8734 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8735 naming scheme for types.
8736
8737 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8738 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8739 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8740 (scm_make_environment), eval.c (scm_closure), fports.c
8741 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8742 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8743 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8744 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8745 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8746 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8747 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8748 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8749 scm_alloc_cell to scm_cell.
8750
8751 * environments.c (core_environments_observe), gc.c
8752 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8753 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8754 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8755 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8756 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8757 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8758 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8759 scm_double_cell.
8760
8761 2002-02-27 Stefan Jahn <stefan@lkcc.org>
8762
8763 * convert.i.c, convert.c: Better range checking.
8764
8765 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8766
8767 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
8768 Windows (MinGW).
8769
8770 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8771
8772 * Makefile.am: Update path to pre-inst-guile automake frag.
8773
8774 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8775
8776 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8777 features are excluded.
8778
8779 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8780
8781 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8782
8783 2002-02-25 Gary Houston <ghouston@arglist.com>
8784
8785 * convert.c: include <string.h> for convert_i.c.
8786
8787 2002-02-24 Rob Browning <rlb@defaultvalue.org>
8788
8789 * .cvsignore: add stamp-h1.
8790
8791 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8792
8793 * unif.c (scm_array_to_list): Correct name, which had been
8794 accidentally changed to scm_t_arrayo_list!
8795
8796 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8797
8798 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8799 underflowing scm_mallocated.
8800
8801 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8802
8803 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8804 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8805 Reimplemented using the new scm_gc_malloc, etc., functions and
8806 deprecated.
8807
8808 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8809
8810 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8811 to `noinst_PROGRAMS'.
8812 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8813 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8814
8815 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8816
8817 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8818 non-zero is returned from a port or smob free function.
8819 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8820 scm_gc_register_collectable_memory,
8821 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8822 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8823
8824 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8825 debug-malloc.c, dynl.c, environments.c, environments.h,
8826 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8827 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8828 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8829 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8830 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8831 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8832 appropriate. Return zero from smob and port free functions.
8833
8834 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8835
8836 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8837 messages while the GC is running.
8838 (scm_c_issue_deprecation_warning_fmt): New.
8839
8840 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8841 it is pointing to the putback buffer.
8842
8843 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8844
8845 * gsubr.c (create_gsubr): On "too many args" error,
8846 also display arg count and name. Thanks to Bill Schottstaedt.
8847
8848 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8849
8850 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8851
8852 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8853 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8854 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8855
8856 * guile-snarf-docs-texi.in: Bye bye.
8857
8858 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8859
8860 * symbols.c (scm_make_symbol): Fix typo in docstring.
8861
8862 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8863 scm_make_symbol): New prototypes.
8864
8865 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8866
8867 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8868 (SCM_SYMBOL_INTERNED_P): New.
8869 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8870 SCM_MAKINUM since hash values can well be bignums.
8871 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8872 This signals a interned symbol.
8873 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8874 scm_make_symbol): New.
8875
8876 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8877
8878 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8879
8880 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8881 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
8882 Thanks to Dave Love.
8883
8884 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8885
8886 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
8887 This might help to make unintended clashes less likely.
8888 (scm_string_to_symbol): Protect the string until the symbols is
8889 created.
8890
8891 2002-01-31 Stefan Jahn <stefan@lkcc.org>
8892
8893 * convert.c, convert.h, convert.i.c: New files containing C
8894 array to Scheme conversion helpers meant to be replacement
8895 functions for the deprecated gh interface.
8896
8897 * Makefile.am: Setup rules for new `convert.*' files.
8898
8899 2002-01-28 Stefan Jahn <stefan@lkcc.org>
8900
8901 * symbols.c (scm_c_symbol2str): New function, replacement for
8902 `gh_scm2newsymbol()'.
8903
8904 * strings.c (scm_c_substring2str): New function. Proper
8905 replacement for `gh_get_substr()'.
8906
8907 * socket.c: Include `stdint.h' if available for the `uint32_t'
8908 declaration.
8909
8910 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
8911 compiler warning).
8912
8913 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8914
8915 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
8916
8917 Other changes unrelated to Elisp...
8918
8919 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8920 "if".
8921 (comments): Fix a few typos.
8922 (scm_for_each): Add parentheses around oddly unparenthesized
8923 if/while conditions.
8924
8925 * read.c (scm_read_opts): Add full stop at end of doc for
8926 `keywords' option.
8927
8928 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8929 instead of gh_symbol2scm.
8930
8931 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8932 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8933
8934 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8935 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8936
8937 First batch of changes for Elisp support...
8938
8939 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8940 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8941 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8942
8943 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8944 conditionalize compilation and initialization of Elisp support
8945 function.
8946
8947 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8948 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8949 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8950 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8951 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8952 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8953 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
8954 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8955 options.c (change_option_setting, scm_options), posix.c
8956 (environ_list_to_c), print.c (scm_iprlist), throw.c
8957 (scm_exit_status), vectors.c (scm_vector), weaks.c
8958 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
8959
8960 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8961 just SCM_FALSEP.
8962
8963 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8964 of just SCM_BOOLP.
8965
8966 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8967 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8968 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8969 (scm_m_atfop): Support function aliasing. Support both function
8970 args, which need transformation, and macro args, which do not.
8971 Add explanatory comments.
8972 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8973 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8974 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8975 SCM_NULLP || SCM_NILP instead of checks against (removed)
8976 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8977 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8978
8979 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8980 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8981 these, but I don't want to remove them yet, just in case.
8982 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8983 Elisp nil value.
8984
8985 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8986 against (removed) scm_lisp_nil.
8987 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8988 (SCM_NULL_OR_NIL_P): New.
8989
8990 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8991 SCM_VALIDATE_NULL.
8992
8993 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8994 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8995 value).
8996
8997 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8998 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8999 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9000 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9001
9002 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9003 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9004 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9005 Numbering shifted down accordingly.
9006 (SCM_ELISP_NIL): New IFLAG.
9007
9008 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
9009
9010 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9011
9012 * eval.c: Removed outdated references to "everr". Improved some
9013 comments.
9014
9015 (scm_deval_args, deval_args): Renamed scm_deval_args to
9016 deval_args, since it is not part of the interface.
9017
9018 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9019 use references to debug.vect[0] before it exists. Add parentheses
9020 to switch statement.
9021
9022 * goops.h: Added local emacs variables.
9023
9024 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9025
9026 * eval.[ch] (scm_deval_args): Made static.
9027
9028 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9029 test.
9030
9031 * strings.c (scm_c_string2str): Clarified comment. Replaced
9032 THINKME by FIXME for uniformness. Removed question about whether
9033 arguments need to be protected from garbage collection: Arguments
9034 must be protected as any other variable.
9035
9036 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9037
9038 * procs.h (SCM_CLOSURE_BODY): New Macro.
9039
9040 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9041 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9042 get_slot_value, set_slot_value), procs.c
9043 (scm_procedure_documentation), sort.c (closureless), stacks.c
9044 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9045 SCM_CLOSURE_BODY.
9046
9047 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9048
9049 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9050
9051 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9052 use "cp" instead.
9053
9054 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9055
9056 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9057 everywhere.
9058
9059 * continuations.c (scm_make_continuation): Do not retain the
9060 throw_value when the continuation is invoked.
9061
9062 2001-12-08 Stefan Jahn <stefan@lkcc.org>
9063
9064 * strings.c (scm_c_string2str): New function. Converts a
9065 given Scheme string into a C string. Also put in two
9066 THINKME's regarding the malloc policy for the missing converter
9067 routines.
9068
9069 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9070
9071 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9072 gh_symbol2scm.
9073
9074 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9075
9076 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9077 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9078
9079 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9080 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9081 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9082 macros.
9083
9084 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9085
9086 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9087 SCM_GC_CELL_* macros when accessing free cells.
9088
9089 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9090
9091 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
9092 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
9093 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9094 * strings.h (SCM_MAKE_STRING_TAG): New.
9095 * procs.h (SCM_MAKE_CCLO_TAG): New.
9096 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9097
9098 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9099 !SCM_ENABLE_DEPRECATED.
9100
9101 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9102 New.
9103
9104 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9105 signal handlers are allowed to divert the flow of control. Call
9106 scm_system_async_mark_from_signal_handler instead of
9107 scm_system_async_mark.
9108
9109
9110 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9111 scm_alloc_double_cell in their place.
9112
9113 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9114 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9115 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9116 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9117 scm_deprecated_newcell and scm_deprecated_newcell2.
9118
9119 gc.c (scm_tc16_allocated): Only define when including deprecated
9120 features.
9121 (scm_debug_newcell, scm_debug_newcell2): Removed.
9122 (scm_init_storage): Do not initialize scm_tc16_allocated.
9123 (scm_init_gc): Do it here.
9124 (allocated_mark): New, from old code.
9125 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9126
9127 * inline.c, inline.h: New files.
9128 * Makefile.am: Added them in all the right places.
9129
9130 * _scm.h: Include "libguile/inline.h".
9131
9132 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9133 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9134 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9135 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9136 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9137 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9138 scm_alloc_double_cell, respectively.
9139
9140 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9141
9142 * modules.c (scm_c_use_module): Adapt to changes to
9143 `process-use-modules'.
9144
9145 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9146
9147 * numbers.c (scm_divide): Fix more division by zero errors.
9148
9149 2001-11-21 Gary Houston <ghouston@arglist.com>
9150
9151 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9152 obsolete. autogen.sh says:
9153 invalid unused variable name: `OMIT_DEPENDENCIES'
9154
9155 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9156
9157 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9158 reporting the bug.
9159
9160 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9161
9162 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9163 Thanks to Eric Gillespie, Jr!
9164
9165 2001-11-21 Stefan Jahn <stefan@lkcc.org>
9166
9167 * win32-socket.c (getservent, setservent, endservent,
9168 getprotoent, setprotoent, endprotoent): New functions.
9169 Appropriate replacements for M$-Windows.
9170
9171 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9172 these definitions for GUILE_DEBUG.
9173
9174 * net_db.c: Include "win32-socket.h" if compiling with a native
9175 M$-Windows compiler. Include some pieces of code (protoent and
9176 servent interface) protected by HAVE_* macros when using a
9177 native M$-Windows compiler.
9178
9179 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9180
9181 * modules.c (scm_c_export): Do nothing when the first argument is
9182 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9183
9184 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9185
9186 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9187 also include `buildstamp'.
9188
9189 2001-11-18 Rob Browning <rlb@defaultvalue.org>
9190
9191 * version.c
9192 (s_scm_major_version): use SCM_MAJOR_VERSION.
9193 (s_scm_minor_version): use SCM_MINOR_VERSION.
9194 (s_scm_micro_version): use SCM_MICRO_VERSION.
9195 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9196 SCM_MICRO_VERSION.
9197
9198 * version.h.in
9199 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9200 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9201 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9202
9203 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9204
9205 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9206 Rewrite docstrings without reference to substring-move-left/right,
9207 since the latter no longer exist.
9208
9209 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9210
9211 * eval.c: Removed bogus comment about acros.
9212
9213 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9214 Minimize scope of local variable. Eliminate dependency on
9215 macro DEBUG_EXTENSIONS.
9216
9217 (s_splicing): New error message string.
9218
9219 (scm_m_body): Issue 'bad body' message rather than 'missing
9220 expression' message.
9221
9222 (scm_m_quote): Eliminate unnecessary copying.
9223
9224 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9225 checking of the body to scm_m_body.
9226
9227 (scm_m_do): Move comment to function header. Rename arg1 to
9228 binding. Made the code a bit easier to read.
9229
9230 (evalcar): Removed.
9231
9232 (iqq): Added a comment. Changed the depth parameter to
9233 unsigned. Use size_t for vector lengths. Make sure vector object
9234 is gc protected as long as its contents are read. Add some syntax
9235 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9236 control structure a bit.
9237
9238 (scm_m_delay): Added comment about the implementation of
9239 scm_m_delay.
9240
9241 (scm_m_define): Add comment about guile's currying define
9242 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9243 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9244
9245 (scm_m_letrec1): Removed. Part of the functionality is taken
9246 over by the new function 'transform_bindings'.
9247
9248 (transform_bindings): New function. Takes over some of the
9249 functionality of removed function 'scm_m_letrec1', namely to split
9250 a list of bindings into a reversed list of variables and a list of
9251 initializers.
9252
9253 (scm_m_letrec): Call 'transform_bindings'.
9254
9255 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9256 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9257 test. Use 'transform_bindings'. Fixed scoping error with named
9258 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9259 Jerram for suggesting the fix). Cleaned up the control structure
9260 a bit.
9261
9262 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9263 unnecessary consing. Eliminated unnecessary
9264 SCM_DEFER/ALLOW_INTS.
9265
9266 (SCM_CEVAL): Un-obfuscated some loops.
9267
9268 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9269
9270 * gc.h (scm_unhash_name): Old declaration removed.
9271
9272 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9273 @code{primitive-eval}.
9274
9275 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9276 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9277 Change @deffnx lines in docstrings to say {Scheme Procedure}
9278 rather than primitive or procedure.
9279
9280 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9281 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9282 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9283 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9284 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9285 (scm_string_split, scm_string_ci_to_symbol), strings.c
9286 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9287 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9288 Docstring fixes and improvements reflecting edits that have been
9289 made in the reference manual source.
9290
9291 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9292 scm_object_property, scm_set_object_property_x): Remove invalid
9293 @deffnx lines for corresponding procedure property primitives.
9294
9295 These changes add a @deffnx C function declaration and function
9296 index entries for each Guile primitive to the copy of the doc
9297 snarf output that is used for reference manual synchronization.
9298 Online help is unchanged.
9299
9300 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9301 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9302 name to SCM_SNARF_DOCS.
9303
9304 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9305 snarf-check-and-output-texi.
9306
9307 * Makefile.am (guile-procedures.texi): New rule.
9308 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9309 Changed so that the last stage of doc snarfing is now performed
9310 twice, once to produce guile-procedures.txt for online help, and
9311 once to produce guile.texi for reference manual synchronization.
9312
9313 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9314
9315 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9316 safely usable as a single statement followed by a ';', for example
9317 in an if statement.
9318
9319 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9320
9321 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9322
9323 * random.c (scm_random_solid_sphere_x,
9324 scm_random_hollow_sphere_x): Correct "shere" typos.
9325
9326 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9327
9328 * version.c (scm_version): Update docstring to include
9329 `micro-version'.
9330
9331 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9332
9333 * modules.c (scm_c_export): Call va_end after collecting the
9334 symbols.
9335
9336 * strop.h, strop.c (scm_substring_move_left_x,
9337 scm_substring_move_right_x): Removed.
9338
9339 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9340 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9341 configure does.
9342
9343 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9344
9345 * numbers.c: Document macros to define when including
9346 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9347 now rely on SIZEOF_ macros that have been figured out at
9348 configure time.
9349
9350 * num2integral.i.c: Adapt to new interface.
9351 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9352 target type by casting it and checking whether it is still the
9353 same. Do not try to handle bignums for integral types that are
9354 smaller than fixnums. When handling bignums, collect the
9355 magnituse first into a unsigned type, and correctly check for
9356 overflow.
9357 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9358 only -MIN_VALUE can still be negative of all negative numbers (in
9359 twos-complement).
9360
9361 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
9362
9363 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9364 HAVE_LONG_LONG depending on whether their size is non-zero.
9365
9366 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9367
9368 * strop.c (scm_string_null_p): Docfix; nfc.
9369 Thanks to Scott Lenser.
9370
9371 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9372
9373 * extensions.c (scm_load_extension): Canonicalize docstring
9374 whitespace.
9375
9376 * unif.c (scm_uniform_array_write), ports.c
9377 (scm_current_output_port, scm_force_output), dynwind.c
9378 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9379 filesys.c (scm_open, scm_lstat), struct.c
9380 (scm_make_struct_layout), random.c (scm_random,
9381 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9382 (scm_i_index): Remove superfluous whitespace from end of docstring
9383 lines.
9384
9385 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9386 strings.c (scm_make_string), variable.c (scm_make_variable,
9387 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9388 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9389 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9390 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9391 newline at end of docstrings.
9392
9393 * modules.c (scm_set_current_module): Add missing newline to
9394 docstring.
9395
9396 2001-11-07 Stefan Jahn <stefan@lkcc.org>
9397
9398 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9399 and makes them available through Guile. That is because the
9400 Winsock-API does not store its errors in `errno' and thus cannot
9401 return error messages via `strerror (errno)'.
9402
9403 * socket.c (scm_init_socket): Initialize `win32-socket' part
9404 here under M$-Windows.
9405
9406 * numbers.h: Added missing declaration of
9407 `scm_sys_check_number_conversions()'.
9408
9409 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9410 and use in `(strerror)' and `(system-error)'.
9411
9412 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
9413 `win32-socket.[ch]' to extra source and header files.
9414
9415 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9416
9417 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9418 a call to turn-on-debugging when --debug has been given instead of
9419 turning it on directly. Also, handle new `--no-debug' option,
9420 which might suppress the call to turn-on-debugging.
9421
9422 2001-11-05 Stefan Jahn <stefan@lkcc.org>
9423
9424 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9425
9426 2001-11-04 Stefan Jahn <stefan@lkcc.org>
9427
9428 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
9429 here (was at guile_LDADD) which describes the dependency
9430 correctly and allows a clean build on Win32.
9431
9432 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
9433 into FOO.
9434
9435 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9436 import macros for external libraries (libcrypt, libqthreads,
9437 libreadline and libregex).
9438
9439 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9440
9441 * posix.c (flock): Added support for flock() in M$-Windows.
9442
9443 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9444 of __SCM_IMPORT__.
9445
9446 * fports.c (getflags): Differentiate reading and writing pipes
9447 descriptors.
9448
9449 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9450 M$-Windows.
9451
9452 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9453 conditionalized error code if `ETIMEDOUT' is not available.
9454 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9455 timeout'.
9456
9457 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9458 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9459 each inclusion of `num2integral.i.c'.
9460 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9461
9462 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9463
9464 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
9465 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
9466
9467 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
9468
9469 * print.c (scm_iprin1): Mark print state as revealed when
9470 dispatching to generic write or display.
9471
9472 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
9473
9474 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
9475
9476 Support for native Win32. Thanks to Stefan Jahn!
9477
9478 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
9479 and win32-dirent.h to extra source and header files. These
9480 include the uname() and the POSIX dirent interface implementation
9481 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
9482 linkers which do not allow unresolved symbols inside shared
9483 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
9484 dependency.
9485
9486 * __scm.h: Defined SCM_API. This macro gets prepended to all
9487 function and data definitions which should be exported or imported
9488 in the resulting dynamic link library in the Win32 port.
9489
9490 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
9491 chars.h, continuations.h, coop-defs.h, coop-threads.h,
9492 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
9493 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
9494 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
9495 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
9496 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
9497 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
9498 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
9499 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
9500 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
9501 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
9502 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
9503 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
9504 vports.h, weaks.h:
9505 Prefixed each each exported symbol with SCM_API.
9506
9507 * continuations.c: Added comment about the use of the extern
9508 declarations of {get,set}context() functions used in the ia64 port.
9509
9510 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
9511 is meant to be a `unsigned long *'.
9512
9513 * filesys.c: Include `direct.h' if possible. Use local
9514 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
9515 macros for M$-Windows. Implementation of `fstat_Win32()' which is
9516 able to differentiate between sockets and other file descriptors.
9517 Use this function as wrapper in `scm_fstat()'. Fixed typo in
9518 `scm_dirname()'.
9519
9520 * fports.c: Include `io.h' is possible. Put `*fp' into referring
9521 statement block in `scm_fport_buffer_add()'.
9522 Some corrections in `getflags()'.
9523
9524 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
9525
9526 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
9527 build on Win32. Disable preloaded symbols on Win2 platforms.
9528
9529 * ioext.c, ports.c: Include `io.h' is possible.
9530
9531 * mkstemp.c: Include `process.h' is possible.
9532
9533 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
9534 too.
9535 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
9536
9537 * posix.c: Remove unnecessary dirent includes and defines. Include
9538 local `win32-uname.h' for MinGW. Extern declaration of
9539 `mkstemp()' for systems where it does not exists. Make
9540 `getlogin()' available on M$-Windows.
9541
9542 * scmsigs.c: Made `usleep()' avalable on MinGW.
9543
9544 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
9545
9546 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
9547
9548 * win32-uname.c: Include "win32-uname.h", not "uname.h".
9549
9550 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
9551
9552 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
9553 Don't apply scm_uniform_vector_length on arrays.
9554
9555 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9556
9557 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
9558 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
9559 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
9560 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
9561 scm_list_<n> over scm_cons[2]?.
9562
9563 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9564 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9565 SCM_C[AD][AD]R instead of explicit form.
9566
9567 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9568 comparison parameters.
9569
9570 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9571 !SCM_NULLP instead of SCM_NIMP.
9572
9573 (scm_m_case): Don't copy the form. Renamed proc to clause and
9574 minimized its scope. Renamed x to clauses. Removed side
9575 effecting operation from macro call.
9576
9577 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9578 minimized its scope. Renamed x to clauses. Minimized the scope
9579 of variable 'len'. Make sure the else clause is treated specially
9580 even in case of '=>' occurences. Don't change the else to #t in
9581 order to be able to distinguish this case in the evaluator. Leave
9582 type checking of the recipient to the evaluator.
9583
9584 (scm_c_improper_memq): Made the comment somewhat clearer.
9585
9586 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9587 test for SCM_IM_LET at the place of the formal parameters.
9588 Simplified the formal parameter checking.
9589
9590 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9591 Renamed arg1 to binding and minimized its scope. Eliminated
9592 unnecessary consing.
9593
9594 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9595 variable 'len'.
9596
9597 (build_binding_list): New static function.
9598
9599 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9600 Further, split up the 'letrec' unmemoizing code to the
9601 corresponding parts for 'do', 'let' and 'letrec', adding comments
9602 to each form. Cleanup the handling of the do form (This removes
9603 some *real* code :-).
9604
9605 (SCM_CEVAL): Removed side effecting operation from macro call.
9606 Handle the 'else clause of the 'cond form specially - the symbol
9607 'else is not replaced with #t any more.
9608
9609 2001-10-14 Gary Houston <ghouston@arglist.com>
9610
9611 * version.c (scm_version): use sprintf instead of snprintf,
9612 for portability. thanks to Bill Schottstaedt.
9613
9614 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9615
9616 * read.c (scm_lreadr): When user-defined hash procedure returns
9617 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9618 an exception. (This prevents parsing of uniform vectors from
9619 interfering with parsing of numbers.)
9620
9621 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9622
9623 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9624 PTRDIFF_MIN. Thanks to Ken Raeburn.
9625
9626 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9627
9628 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9629
9630 * eval.c (scm_m_atbind): First try to find the variable without
9631 defining it locally; when it has not been found, define it
9632 locally.
9633
9634 * modules.c (module_variable): Pass over variables that exist but
9635 are unbound.
9636
9637 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9638
9639 * backtrace.c (display_backtrace_file_and_line): Only use
9640 scm_basename when POSIX support is compiled in. Thanks to Chris
9641 Cramer.
9642
9643 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9644
9645 * numbers.c (mem2uinteger): Return number read so far when coming
9646 across a hexdigit after having read a # or if not reading a hex
9647 value. This will enable the calling code to correctly handle
9648 forms like 1e2. (The background is, that the exponent markers d,
9649 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9650 providing this patch.
9651
9652 (mem2complex): Fix erroneous double-negation. Now, numbers like
9653 1-i will be read correctly.
9654
9655 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9656
9657 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9658
9659 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9660
9661 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9662
9663 * print.c (scm_print_state_vtable, print_state_pool):
9664 Initialize. These variables are now registered as gc roots.
9665
9666 (scm_current_pstate): Update documentation.
9667
9668 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9669 scm_prin1, scm_init_print): print_state_pool is registered as a
9670 gc root and thus does not need to be protected by a surrounding
9671 pair any more.
9672
9673 (make_print_state): The car of print_state_pool no longer holds
9674 the scm_print_state_vtable.
9675
9676 (scm_current_pstate, scm_make_print_state, print_circref,
9677 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9678 SCM_N<foo>.
9679
9680 (scm_prin1): When building lists, prefer scm_list_<n> over
9681 scm_cons[2]?.
9682
9683 (scm_iprlist): Removed a redundant SCM_IMP test.
9684
9685 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9686
9687 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9688
9689 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9690
9691 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9692 scm_list_<n> over scm_cons[2]?.
9693
9694 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9695
9696 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9697
9698 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9699 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9700 for some reason his patch didn't make it into the cvs.
9701
9702 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9703
9704 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9705 little bit - should even be somewhat more accurate now.
9706
9707 2001-10-08 Rob Browning <rlb@defaultvalue.org>
9708
9709 * gc.c: support ia64 register backing store.
9710 (SCM_MARK_BACKING_STORE): new macro.
9711
9712 * continuations.h: support ia64 register backing store.
9713 (struct scm_t_contregs): add ia64 register backing store.
9714
9715 * continuations.c: support ia64 register backing store.
9716 (continuation_mark): mark ia64 register backing store.
9717 (continuation_free): free ia64 register backing store.
9718 (scm_make_continuation): capture ia64 register backing store.
9719 (copy_stack_and_call): copy ia64 register backing store.
9720
9721 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9722
9723 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9724 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9725 instead of SCM_NIMP to test for that case.
9726
9727 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9728 scm_t_bits instead of long.
9729
9730 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9731
9732 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9733 SCM_T_SIGNED_BITS_MIN): New.
9734 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9735 Use them to make these macros computable by the preprocessor.
9736
9737 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9738 whether the integral type fits in a fixnum, not the compiler.
9739 This removes a spurious compiler warning. Also, honor the
9740 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9741 needed for `long long's.
9742
9743 * numbers.c: Define NO_PREPRO_MAGOC when including
9744 num2integral.c.i for `long long' and `signed long long'.
9745
9746 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9747
9748 These changes fixes a race condition in the Guile coop - pthread
9749 compatibility code.
9750
9751 * coop.c (mother_awake_p): New variable.
9752 (coop_create): Set mother_awake_p before creating or signalling
9753 mother; wait until mother is going to sleep before returning.
9754 (mother): Reset mother_awake_p before going to sleep.
9755
9756 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9757
9758 * options.c (protected_objects, scm_init_options): The content of
9759 protected_objects is now protected from garbage collection using
9760 scm_gc_register_root instead of scm_permanent_object.
9761
9762 (get_option_setting): New static function that computes an option
9763 setting as it was formerly done in the function scm_options.
9764
9765 (get_documented_option_setting): New static function that
9766 returns option documentation as it was formerly done in the
9767 function scm_options. Note that documentation C strings are no
9768 longer precomputed into SCM objects. Instead, they are converted
9769 into SCM strings every time get_documented_option_setting is
9770 called.
9771
9772 (change_option_setting): New static functions that modifies the
9773 option setting as it was formerly done in the function
9774 scm_options. The function is now exception safe, i. e. won't
9775 cause a memory leak when interrupted. Further, only non-immediate
9776 option values are added to the protection list.
9777
9778 (scm_options): This function now has only the purpose to dispatch
9779 to to get_option_setting, get_documented_option_setting or
9780 change_option_setting, depending on the arguments given to
9781 scm_options.
9782
9783 (scm_init_opts): Don't convert documentation C strings into SCM
9784 strings. Further, don't protect any object values: They _must_
9785 be immediate values, otherwise there is no guarantee that they
9786 have not been collected before anyway.
9787
9788 * options.[ch] (scm_t_option): Made type unsigned, name into a
9789 constant char* and val into a scm_t_bits type.
9790
9791 (scm_options, scm_init_opts): The number of options is guaranteed
9792 to be larger or equal to zero. Thus, the type is changed to
9793 unsigned.
9794
9795 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9796
9797 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9798 testing an unsigned value for being >= 0.
9799
9800 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9801
9802 * numbers.h: Removed old comment about using SCM_CAR to access
9803 non-pair cells.
9804
9805 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9806 the return value is signed. Thanks to Brian Crowder for the bug
9807 report.
9808
9809 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9810 values. With this patch, SCM_SRS can be safely used for other
9811 types than scm_t_signed_bits. However, it should still better be
9812 an internal macro and thus be renamed to SCM_I_SRS.
9813
9814 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9815
9816 2001-10-03 Gary Houston <ghouston@arglist.com>
9817
9818 * continuations.h, unif.h: in the descriptions of the bit patterns
9819 of the heap cells, make bit 0 the least significant.
9820
9821 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9822
9823 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9824 Thanks to Golubev I. N.
9825
9826 2001-09-25 Gary Houston <ghouston@arglist.com>
9827
9828 * ports.c (scm_drain_input): extended the docstring. thanks to
9829 Alex Schroeder and Thien-Thi Nguyen.
9830
9831 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9832
9833 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9834 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9835 macros. (The NUM names might soon change.)
9836
9837 * numbers.h: Added missing declarations.
9838
9839 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9840
9841 * Makefile.am: Distribute num2float.i.c.
9842
9843 * num2float.i.c: New file, multiply included by numbers.c, used
9844 to "templatize" the float <-> num conversion routines.
9845
9846 * numbers.c: New functions: scm_num2float, scm_float2num,
9847 scm_num2double, scm_double2num.
9848
9849 2001-09-21 Rob Browning <rlb@defaultvalue.org>
9850
9851 * .cvsignore: really add version.h
9852
9853 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9854 Otherwise it fails on the alpha. However, we might rather choose
9855 this size conditionally.
9856
9857 * numbers.c (scm_gcd): change "k" to a long from an int.
9858 Otherwise it fails on the alpha. However, we might rather choose
9859 this size conditionally.
9860
9861 * error.c (scm_wta): coerce char* to intptr_t before int
9862 assignment.
9863
9864 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9865 int.
9866
9867 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9868
9869 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9870
9871 * numbers.c (scm_integer_expt): Accept inexact integer in second
9872 argument. (Thanks to Bill Schottstaedt.)
9873
9874 2001-09-20 Rob Browning <rlb@defaultvalue.org>
9875
9876 * .cvsignore: add version.h
9877
9878 * versiondat.h.in: removed (obsolete).
9879
9880 * version.h.in: renamed from version.h.
9881 (SCM_GUILE_MAJOR_VERSION): new public macro.
9882 (SCM_GUILE_MINOR_VERSION): new public macro.
9883 (SCM_GUILE_MICRO_VERSION): new public macro.
9884
9885 * version.h: renamed to version.h.in.
9886
9887 * version.c
9888 (scm_major_version): support integer *_VERSION macros.
9889 (scm_minor_version): support integer *_VERSION macros.
9890 (scm_micro_version): support integer *_VERSION macros.
9891 (scm_version): support integer *_VERSION macros.
9892
9893 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9894
9895 * error.c, error.h: Made error keys globally accessible.
9896 Applications might want to test for these or use them in a direct
9897 call to scm_error.
9898
9899 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9900 routines are passed an inexact. This change in behavior is
9901 motivated by concordance with R5RS: It is more common that a
9902 primitive doesn't want to accept an inexact for an exact.
9903
9904 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9905
9906 The following patch partially undoes my patch from 2001-06-30,
9907 where I added the function scm_gc_mark_cell_conservatively. The
9908 function is buggy, since it breaks guile during conservative
9909 marking if a pointer on the stack points directly into the list of
9910 free cells on the heap: With conservative cell marking this will
9911 cause the whole free list to be scanned and marked - boom!
9912
9913 * gc.c (allocated_mark, MARK, heap_segment,
9914 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
9915 (scm_gc_mark_cell_conservatively): Remove function
9916 scm_gc_mark_cell_conservatively and update the corresponding
9917 comments and uses accordingly. Thanks to Christopher Cramer for
9918 the patch. (Minor corrections by me.)
9919
9920 2001-09-15 Gary Houston <ghouston@arglist.com>
9921
9922 * root.h (scm_root_state): removed the continuation_stack and
9923 continuation_stack_ptr members, which have no apparent purpose.
9924 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9925 removed.
9926
9927 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9928 (scm_igc): remove all references to contination_stack and
9929 continuation_stack_ptr, avoiding allocation of a vector and
9930 useless processing during gc.
9931
9932 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9933
9934 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9935
9936 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9937
9938 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9939
9940 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9941
9942 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9943 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9944
9945 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9946
9947 * guardians.c (mark_dependencies_in_tconc,
9948 whine_about_self_centered_zombies, scm_init_guardians): Register
9949 the static global variable `self_centered_zombies' via
9950 scm_gc_register_root, to make some cdr-ing unnecessary.
9951
9952 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9953
9954 * backtrace.c (display_backtrace_file,
9955 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9956 values, use SCM_FALSEP when comparing SCM values against #f.
9957 Thanks to Rob Browning for the bug report.
9958
9959 2001-09-12 Martin Baulig <martin@home-of-linux.org>
9960
9961 * strings.[ch] (scm_str2string): New function.
9962
9963 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9964
9965 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9966 when computing nm, even if it's negative.
9967 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9968 (scm_must_realloc): Likewise.
9969
9970 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9971
9972 * numbers.c (scm_sys_check_number_conversions): new function,
9973 defined if Guile is compiled in debugging mode. currently checks
9974 `scm_num2ulong', should check much much more.
9975
9976 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9977 unsigned, ensure that it's positive. thanks to Martin Baulig!
9978
9979 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9980
9981 * __scm.h: Added new section about compile time selectable
9982 features.
9983
9984 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9985 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9986 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9987 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9988 Removed.
9989
9990 * deprecation.c (scm_include_deprecated_features): Simplified.
9991
9992 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9993 `SCM_IMP' instead of `!SCM_CELLP´.
9994
9995 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9996 Extract side-effecting operations from macros.
9997
9998 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9999 scm_top_level_lookup_closure_var and scm_system_transformer.
10000
10001 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10002
10003 (heap_segment): Use CELL_P instead of SCM_CELLP.
10004
10005 * init.c (start_stack): Don't initialize
10006 scm_top_level_lookup_closure_var and scm_system_transformer.
10007
10008 * modules.c (scm_set_current_module): Don't access
10009 scm_top_level_lookup_closure_var and scm_system_transformer.
10010
10011 (scm_sym2var): Don't call scm_variable_set_name_hint.
10012
10013 (scm_post_boot_init_modules): Removed deprecated initializations.
10014
10015 * print.c (scm_ipruk): Don't access cell contents of non cells.
10016
10017 * strings.c (scm_string_set_x): All strings are writable.
10018
10019 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10020 type. There is only one string type now.
10021
10022 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10023
10024 * tags.h: Remove comments about two different string types.
10025
10026 (SCM_CELLP, SCM_NCELLP): Deprecated.
10027
10028 * variable.c (make_variable): Remove code variant for vcells.
10029
10030 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10031 SCM_VARIABLE_LOC): Remove code variant for vcells.
10032
10033 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10034 SCM_ENABLE_DEPRECATED with the logic reversed.
10035
10036 * dynl.c (moddata, registered_mods), dynl.[ch]
10037 (scm_register_module_xxx, scm_registered_modules,
10038 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10039 (*top-level-lookup-closure*), eval.[ch]
10040 (scm_top_level_lookup_closure_var, scm_system_transformer,
10041 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10042 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10043 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10044 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10045 scm_unprotect_object), modules.c (root_module_lookup_closure,
10046 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10047 beautify_user_module_x_var, try_module_autoload_var,
10048 scm_module_full_name), modules.[ch] (scm_the_root_module,
10049 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10050 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
10051 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10052 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10053 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10054 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10055 scm_make_shared_substring), tags.h (scm_tc7_substring,
10056 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10057 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10058 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10059 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10060 Removed.
10061
10062 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10063 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10064 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10065 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10066 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10067 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10068 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10069 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10070 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10071 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10072 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10073 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10074 (setzone, scm_strftime, scm_strptime), vports.c
10075 (scm_make_soft_port): Remove calls to
10076 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10077 gone, all strings are 0-terminated anyway.
10078
10079 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10080 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10081 double inclusion of the same headers to the SCM_<filename>_H
10082 format.
10083
10084 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10085 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10086 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10087 any more.
10088
10089 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10090 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10091 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10092 !SCM_<foo> over SCM_N<foo>.
10093
10094 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10095
10096 * Makefile.am: Remove references to symbols-deprecated.c.
10097
10098 * symbols.c (scm_init_symbols): Don't initialize deprecated
10099 symbol functions.
10100
10101 * symbols-deprecated.c: Removed.
10102
10103 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10104 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10105 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10106 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10107 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10108 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10109 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10110 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10111 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10112 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10113 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10114 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10115 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10116 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10117 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10118 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10119 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10120 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10121 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10122 scm_intern0, scm_sysintern, scm_sysintern0,
10123 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10124 scm_string_to_obarray_symbol, scm_intern_symbol,
10125 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10126 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10127 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10128 vectors.[ch] (scm_vector_set_length_x): Removed.
10129
10130 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10131 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10132 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10133 Renamed the macros that are defined to inhibit double inclusion of
10134 the same headers to the SCM_<filename>_H format.
10135
10136 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10137 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10138 SCM_N<foo>.
10139
10140 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10141
10142 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10143 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10144 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10145 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10146 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10147 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10148 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10149 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10150 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10151 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10152 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10153 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10154
10155 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10156 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10157 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10158 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10159 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10160 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10161 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10162 double inclusion of the same headers to the SCM_<filename>_H
10163 format.
10164
10165 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10166 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10167 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10168 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10169 !SCM_<foo> over SCM_N<foo>.
10170
10171 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10172
10173 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10174 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10175 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10176 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10177 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10178 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10179 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10180 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10181 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10182 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10183 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10184 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10185 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10186 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10187 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10188 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10189 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10190 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10191 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10192 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10193 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10194 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10195 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10196 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10197 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10198 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10199 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10200 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10201 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10202 the macros that are defined to inhibit double inclusion of the
10203 same headers to the SCM_<filename>_H format.
10204
10205 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10206
10207 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10208 "scm_t_portable" with "scm_port_table" which was an artifact from
10209 the great "scm_*_t -> scm_t_" renaming.
10210
10211 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10212
10213 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10214 used; nfc. Thanks to Bill Schottstaedt.
10215
10216 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10217 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10218 Thanks to Chris Cramer.
10219
10220 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10221
10222 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10223
10224 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10225 dynamic scope.
10226 * dynwind.h (scm_swap_bindings): Declare.
10227 * dynwind.c (scm_swap_bindings): Make non-static.
10228
10229 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10230
10231 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10232 doing exactly nothing about them). thanks Neil!
10233
10234 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10235
10236 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
10237
10238 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10239
10240 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10241 (proto) in the case when either `GUILE_DEBUG' or
10242 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10243
10244 (map_free_list): Fix typo: Ref `f' correctly.
10245
10246 Thanks to Chris Cramer.
10247
10248 2001-08-15 Rob Browning <rlb@defaultvalue.org>
10249
10250 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10251 variables.
10252 (libpath.h): change libguileversion to libguileinterface.
10253
10254 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10255
10256 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10257 ChangeLog-2000. Thanks to Daniel Skarda!
10258
10259 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10260
10261 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10262 do it from the Makefile.
10263
10264 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10265 are of a reasonable size.
10266
10267 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10268
10269 * stacks.c (scm_make_stack): Improve docstring by explaining use
10270 of cutting args.
10271
10272 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10273
10274 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10275 scm_char_whitespace_p, scm_char_upper_case_p,
10276 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10277 characters to fulfill isascii in addition to the primary
10278 predicate.
10279
10280 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10281
10282 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10283 scm_istr2flo, scm_istring2number): Removed.
10284
10285 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10286 SCM_SLOPPY_<foo>.
10287
10288 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10289 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10290 Added.
10291
10292 (scm_string_to_number): Use new number parser.
10293
10294 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10295 handles complex numbers.
10296
10297 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10298 SCM_<foo>_H.
10299
10300 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10301 SCM_N<pred>.
10302
10303 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10304
10305 (scm_i_mem2number): Added.
10306
10307 (scm_exact_to_inexact): Changed signature.
10308
10309 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10310 here instead of within scm_i_mem2number. Call scm_i_mem2number
10311 instead of scm_istr2int and scm_istring2number.
10312
10313 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10314
10315 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10316 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10317 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10318 !SCM_<pred> over SCM_N<pred>.
10319
10320 (scm_eval_body): Remove side effecting code from macro call.
10321
10322 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10323 SCM_NIMP test.
10324
10325 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10326
10327 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10328
10329 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10330
10331 Removed vcell slot from structs.
10332
10333 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10334 subsequent indices.
10335
10336 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10337 zero. Use scm_vtable_index_layout instead of "0" when accessing
10338 said slot.
10339 (scm_init_struct): Remove vcell slot layout code from
10340 required_vtable_fields.
10341
10342 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10343
10344 * goops.c (build_class_class_slots): Removed vcell slot
10345 definition.
10346
10347 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10348 Removed vcell slot layout code.
10349 (scm_si_vcell): Removed.
10350
10351 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10352
10353 "Glocs" have been removed.
10354
10355 * tags.h: Update tag system docs.
10356 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10357 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10358 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10359 or SCM_NCONSP, respectively.
10360
10361 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10362 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10363 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10364
10365 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10366 tell glocs from structs.
10367
10368 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10369
10370 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10371 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10372 instead of with glocs.
10373 (EVALCAR): Do not test for glocs.
10374 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10375 condition.
10376 (scm_unmemocar): Do not handle glocs.
10377 (scm_m_atfop): Memoize as a variable, not as a gloc.
10378 (scm_eval_args, scm_deval_args): Do not handle glocs.
10379 (scm_ceval, scm_deval): Likewise.
10380
10381 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10382 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10383 Removed.
10384
10385 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10386
10387 * dynwind.c (scm_swap_bindings): Likewise.
10388 (scm_dowinds): Updated to recognize lists of variables instead of
10389 lists of glocs.
10390
10391 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10392
10393
10394 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10395 where it is needed.
10396
10397 2001-07-25 Gary Houston <ghouston@arglist.com>
10398
10399 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10400 docstrings to reflect the n-ary implementation.
10401
10402 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10403
10404 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10405 value of a variable, not the plain "return" statement.
10406
10407 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10408
10409 * eval.c: Allow variables in memoized code (in addition to glocs).
10410 (scm_lookupcar): Handle variables in lost races. Replace symbol
10411 with variable directly, do not make a gloc.
10412 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10413 like glocs.
10414 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10415 the main switch.
10416
10417 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10418
10419 * variable.c (scm_i_variable_print): Use "value" instead of
10420 "binding" since a binding is the mapping between symbols and
10421 variables, not between variables and their values.
10422
10423 * tags.h (scm_tc7_variable): New.
10424 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10425 * print.c (scm_iprin1): Likewise.
10426
10427 * variable.h (scm_tc16_variable): Removed.
10428 (SCM_VARIABLEP): Test for new tc7 code.
10429 (scm_i_variable_print): New.
10430 * variable.c (scm_tc16_variable): Removed.
10431 (variable_print): Renamed to scm_i_variable_print and made
10432 non-static.
10433 (variable_equal_p): Removed.
10434 (make_variable): Construct a tc7 object instead of a smob.
10435 (scm_init_variable): Do not register smob.
10436
10437 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10438
10439 * tags.h: Include inttypes.h when we have it.
10440
10441 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10442
10443 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10444 is taken by the new SCM_IM_CALL_WITH_VALUES.
10445 * print.c (scm_isymnames): Update table accordingly.
10446
10447 2001-07-22 Gary Houston <ghouston@arglist.com>
10448
10449 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10450 SCM_MAKINUM to convert regoff_t value to SCM.
10451
10452 2001-07-21 Gary Houston <ghouston@arglist.com>
10453
10454 * scmsigs.c: include sys/time.h for itimer stuff.
10455
10456 2001-07-19 Rob Browning <rlb@defaultvalue.org>
10457
10458 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10459
10460 * c-tokenize.lex: add option %nounput to quiet warning.
10461 Add prototype for yylex to quiet warning.
10462
10463 * scmconfig.h.in: add flags for setitimer and getitimer.
10464
10465 * scmsigs.h (scm_init_scmsigs): new prototype.
10466 (scm_init_scmsigs): new prototype.
10467
10468 * scmsigs.c (s_scm_setitimer): new function.
10469 (s_scm_setitimer): new function.
10470
10471 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10472
10473 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
10474 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
10475 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
10476 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
10477 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
10478 guile-func-name-check.in, guile-snarf-docs-texi.in,
10479 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
10480 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
10481 objprop.c, objprop.h, options.c, options.h, random.h,
10482 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
10483 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
10484 version.c, version.h: Updated copyright notice.
10485
10486 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10487
10488 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
10489 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
10490 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
10491 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
10492 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
10493 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
10494 sym_environment, scm_sym_change_class): New static variables to
10495 hold predefined symbols.
10496
10497 (build_class_class_slots): Build the list using scm_list_n
10498 instead of cons. Also, slots are already created as lists, thus
10499 making a call to maplist unnecessary.
10500
10501 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
10502 scm_class_direct_subclasses, scm_class_direct_methods,
10503 scm_class_precedence_list, scm_class_slots, scm_class_environment,
10504 scm_method_procedure, create_standard_classes, purgatory): Use
10505 predefined symbols.
10506
10507 (build_slots_list, compute_getters_n_setters,
10508 scm_sys_initialize_object, scm_sys_inherit_magic_x,
10509 get_slot_value_using_name, set_slot_value_using_name,
10510 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
10511 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
10512 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
10513
10514 (scm_sys_prep_layout_x): Minimize variable scopes.
10515
10516 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
10517 scm_sys_fast_slot_set_x): Fix signedness.
10518
10519 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
10520 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
10521 scm_memoize_method, scm_wrap_object): Use packing and unpacking
10522 when converting to and from SCM values.
10523
10524 (scm_enable_primitive_generic_x): Add rest argument checking.
10525
10526 (map, filter_cpl, maplist, scm_sys_initialize_object,
10527 scm_sys_prep_layout_x, slot_definition_using_name,
10528 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
10529 call_memoize_method, scm_make, scm_make_class): Prefer explicit
10530 predicates over SCM_N?IMP tests.
10531
10532 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
10533 checking.
10534
10535 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
10536 alias.
10537
10538 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
10539
10540 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
10541
10542 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
10543
10544 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
10545
10546 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
10547
10548 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
10549
10550 * strings.c (s_scm_string): fix arg position in assert.
10551
10552 2001-07-11 Gary Houston <ghouston@arglist.com>
10553
10554 * strports.c (st_write): use memcpy, not strncpy. thanks to
10555 Dale P. Smith.
10556
10557 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
10558
10559 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
10560 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
10561 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
10562 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10563 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10564 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10565 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10566 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10567 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10568 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10569 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10570 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10571 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10572 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10573 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10574 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10575 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10576 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10577 weaks.c, weaks.h: Remove "face-lift" comment.
10578
10579 2001-07-08 Rob Browning <rlb@defaultvalue.org>
10580
10581 * .cvsignore: add stamp-h.in.
10582
10583 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10584
10585 * hooks.c (scm_make_hook, scm_add_hook_x),
10586 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10587 value info to the docstrings.
10588
10589 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10590
10591 Some more compatibility patches for Windows.
10592
10593 * posix.c (getlogin): getlogin() implementation for Windows.
10594
10595 * backtrace.c, ioext.c: Include <stdio.h>.
10596
10597 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10598 exist.
10599
10600 * cpp_sig_symbols.in: Added SIGBREAK.
10601
10602 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10603
10604 * strports.c (scm_read_0str, scm_eval_0str): Call
10605 scm_c_read_string and scm_c_eval_string respectively, not
10606 themselves. Thanks to Dale P. Smith!
10607
10608 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10609
10610 * unif.c (scm_array_set_x): The variable args does not
10611 necessarily have to be a list. Further, got rid of a redundant
10612 SCM_NIMP test.
10613
10614 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10615
10616 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10617 last.
10618
10619 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
10620 init_heap_seg): Fixed signedness.
10621
10622 (init_heap_seg): Replaced strange for-loop with a while loop.
10623
10624 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10625
10626 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10627
10628 The following patch adds conservative marking for the elements of
10629 free or allocated cells.
10630
10631 * gc.c (allocated_mark, heap_segment): New static functions.
10632
10633 (which_seg): Deleted, since the functionality is now provided by
10634 function heap_segment.
10635
10636 (map_free_list): Use heap_segment instead of which_seg.
10637
10638 (MARK): If cell debugging is disabled, mark free cells
10639 conservatively.
10640
10641 (scm_mark_locations, scm_cellp): Extracted the search for the
10642 heap segment of a SCM value into function heap_segment.
10643
10644 (scm_init_storage): Allocated cells must be marked
10645 conservatively.
10646
10647 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10648
10649 The following patch changes the representation of weak vectors to
10650 double cells instead of using an extension of the vector's
10651 allocated memory.
10652
10653 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10654 the result of SCM_WVECT_GC_CHAIN.
10655
10656 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10657
10658 * weaks.c (allocate_weak_vector): New static function. It does
10659 not patch any previously created vector object during the
10660 construction of a weak vector, and thus doesn't need to switch
10661 off interrupts during vector creation.
10662
10663 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10664 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10665 Use allocate_weak_vector to provide the new weak vector object.
10666
10667 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10668 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10669 now stored in the double cell.
10670
10671 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10672 Use SCM_WVECT_TYPE.
10673
10674 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10675 using an entry of the double cell.
10676
10677 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10678
10679 * stamp-h.in: bye bye
10680
10681 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10682
10683 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10684 scm_eval_0str.
10685
10686 * load.c, load.h (scm_c_primitive_load,
10687 scm_c_primitive_load_path): New.
10688
10689 * strports.c, strports.h (scm_c_read_string): Renamed from
10690 scm_read_0str. Also, added "const" qualifier to argument.
10691 (scm_c_eval_string): Renamed from scm_eval_0str.
10692 (scm_read_0str, scm_eval_0str): Deprecated.
10693
10694 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10695
10696 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10697 SCM_LIST1.
10698
10699 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10700
10701 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10702 scm_list_n): New functions.
10703 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10704 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10705 (lots of files): Use the new functions.
10706
10707 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10708
10709 * strings.c: #include "libguile/deprecation.h".
10710
10711 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10712
10713 * read.c (scm_lreadr): When reading a hash token, check for a
10714 user-defined hash procedure first, so that overriding the builtin
10715 hash characters is possible (this was needed for implementing
10716 SRFI-4's read synax `f32(...)').
10717
10718 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10719 because the latter is unsigned now and breaks comparisons like
10720 (n < (scm_t_signed_bits)MIN_VALUE).
10721
10722 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10723
10724 * eval.h, eval.c (scm_call_4): New function.
10725
10726 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10727 directly rather than dispatching to them via scm_ithrow and a lazy
10728 catch.
10729
10730 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10731 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10732 for trap handler procedures.
10733
10734 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10735 procedures not being #f.
10736
10737 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10738
10739 * Makefile.am (c-tokenize.c): add rule to generate it.
10740 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10741
10742 filter-doc-snarfage.c: remove.
10743
10744 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10745
10746 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10747
10748 The following set of changes makes compiling Guile under various
10749 Windows compilers easier. Compilation under GNU systems should
10750 not be affected at all.
10751
10752 Thanks to Stefan Jahn for all necessary information, patches and
10753 testing.
10754
10755 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10756 getpgrp, ttyname, primitive-fork and some header inclusion for
10757 Windows.
10758
10759 * random.c: Define M_PI, if not predefined and use __int64 for
10760 LONG64 under Windows.
10761
10762 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10763 Windows and conditionalize some signal names.
10764
10765 * socket.c (scm_getsockopt): Added missing comma.
10766 Include socket library header under Windows.
10767
10768 * stime.c (CLKTCK): Add cast to int, to make it compile under
10769 Windows.
10770
10771 * ports.c (truncate): New function, compiled only under Windows.
10772
10773 * net_db.c: Do not declare errno under Windows.
10774
10775 * iselect.h, inet_aton.c: Include socket library headers under
10776 Windows.
10777
10778 * guile.c (inner_main): Under Windows, initialize socket library
10779 and initialize gdb_interface data structures.
10780
10781 * gdb_interface.h: Under Windows, gdb_interface cannot be
10782 initialized statically. Initialize at runtime instead.
10783
10784 * fports.c (write_all): ssize_t -> size_t.
10785 (fport_print): Conditionalize call to ttyname().
10786 (getflags): New function, compiled only under Windows.
10787
10788 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10789 primitives chown, link, fcntl.
10790 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10791 as path seperator.
10792
10793 * backtrace.c: Include <io.h> under Windows.
10794
10795 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10796
10797 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10798 declaration.
10799
10800 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10801
10802 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10803 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10804 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10805 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10806 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10807 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10808 (scm_dynamic_wind, scm_dowinds), environments.c
10809 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10810 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10811 goops.c (GETVAR, purgatory, make_class_from_template,
10812 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10813 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10814 (scm_primitive_load), modules.c (scm_resolve_module,
10815 scm_c_define_module, scm_c_use_module, scm_c_export,
10816 module_variable, scm_eval_closure_lookup, scm_sym2var,
10817 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10818 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10819 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10820 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10821 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10822 (scm_object_to_string, scm_call_with_output_string,
10823 scm_call_with_input_string), throw.c (scm_body_thunk,
10824 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10825 scm_make_shared_array), vports.c (sf_flush, sf_write,
10826 sf_fill_input, sf_close): Use one of the above functions.
10827 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10828
10829 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10830
10831 * filesys.c (scm_close), ports.c (scm_close_port,
10832 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10833 instead of SCM_NEGATE_BOOL.
10834
10835 * filesys.c (scm_stat): Clean up type dispatch.
10836
10837 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10838 scm_output_port_p): Get rid of redundant IM type check.
10839
10840 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10841 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10842 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10843 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10844 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10845 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10846 scm_addr_vector), stime.c (scm_strftime), strings.c
10847 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10848 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10849 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10850 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10851 instead of scm_makfromstr.
10852
10853 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10854 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10855 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10856 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10857 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10858 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10859 !SCM_<pred> over SCM_N<pred>.
10860
10861 * strings.[ch] (scm_makfromstr): Deprecated.
10862
10863 (scm_mem2string): New function, replaces scm_makfromstr.
10864
10865 * strings.c (scm_substring), strop.c (string_copy,
10866 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10867 (scm_symbol_to_string): Fix gc problem.
10868
10869 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10870 SCM_<foo>_H.
10871
10872 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10873 warning about comparing signed and unsigned values. This fix is
10874 not optimal, since it won't work reliably if sizeof (c_start) >
10875 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10876 solution is to define this macro as an inline function, thus
10877 allowing to specifiy the types of c_start and c_end.
10878
10879 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10880
10881 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10882 scm_t_debug_frame*.
10883
10884 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10885 Rename <foo>H to SCM_<foo>_H.
10886
10887 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10888 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10889
10890 (narrow_stack): Make i unsigned. Don't use side-effecting
10891 operations in conditions.
10892
10893 (narrow_stack, scm_make_stack, scm_stack_id,
10894 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10895
10896 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10897 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10898 more.
10899
10900 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10901 signedness.
10902
10903 (scm_last_stack_frame): Remove bogus `;'.
10904
10905 * stacks.h (SCM_FRAMEP): Fix type check.
10906
10907 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10908
10909 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10910 c-tokenize.c when doing maintainer-clean.
10911
10912 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10913
10914 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10915 simplify.
10916
10917 * eval.c: all hash signs are in column 0.
10918
10919 * Makefile.am (guile_filter_doc_snarfage): build using
10920 c-tokenize.c, not filter-doc-snarfage.c.
10921 rearrange snarfing dependencies a bit.
10922
10923 * c-tokenize.lex: new file.
10924
10925 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10926
10927 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10928 scm_t_srcpropso_plist. See the big type renaming.
10929 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10930 Thanks to Seth Alves!
10931
10932 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10933 they aren't defined already.
10934
10935 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10936
10937 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10938 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10939 problem.
10940
10941 * backtrace.c (display_expression, scm_set_print_params_x,
10942 display_application, display_frame, scm_backtrace), numbers.c
10943 (scm_istring2number), objects.c (scm_class_of,
10944 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10945 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10946
10947 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10948 always positive.
10949
10950 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10951 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10952
10953 * objects.c (scm_class_of): Type fix.
10954
10955 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10956 eliminated goto.
10957
10958 * pairs.h (scm_error_pair_access): The function can return if
10959 called recursively.
10960
10961 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10962
10963 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10964
10965 * gdbint.c, init.c: Removed inclusion of tag.h.
10966
10967 * tag.h, tag.c: Removed files.
10968
10969 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10970
10971 2001-06-20 Gary Houston <ghouston@arglist.com>
10972
10973 * deprecation.c, extensions.c, rw.c: include string.h.
10974
10975 2001-06-19 Gary Houston <ghouston@arglist.com>
10976
10977 * filter-doc-snarfage.c (process): added ungetc in
10978 MULTILINE_COOKIE case since otherwise it fails when there's no
10979 space between the '(' and the quote of the following string
10980 (gcc 3.0).
10981
10982 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10983
10984 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10985
10986 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10987
10988 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
10989 extension takes place.
10990 * strings.h (SCM_STRING_LENGTH): Likewise.
10991 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
10992
10993 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10994 it.
10995
10996 * tags.h: Include <stdint.h> when we have it.
10997 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10998 available. Else use "unsigned long".
10999 (scm_signed_bits_t): New.
11000
11001 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11002 (SCM_INUM): Cast result to scm_signed_bits_t.
11003
11004 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11005
11006 * mkstemp.c: Update path to #include file scmconfig.h.
11007 Thanks to Golubev I. N.
11008
11009 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11010
11011 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11012
11013 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
11014 the macro definition.
11015
11016 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11017 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11018 instead of SCM_INST_TYPE.
11019
11020 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11021 the object is a struct before accessing its struct flags.
11022
11023 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11024
11025 2001-06-10 Gary Houston <ghouston@arglist.com>
11026
11027 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11028 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11029 work reliably anymore. try it from boot-9.scm instead.
11030
11031 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11032
11033 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
11034 Thanks to Matthias Köppe!
11035
11036 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11037
11038 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11039 space-happy C preprocessors.
11040
11041 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
11042 inside cookies. thanks to Matthias Köppe!
11043
11044 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11045
11046 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11047 keywords. Fix gc protection.
11048
11049 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11050 operations in macro calls.
11051
11052 * pairs.c (scm_error_pair_access): Avoid recursion.
11053
11054 Thanks to Matthias Koeppe for reporting the bugs that correspond
11055 to the following set of patches.
11056
11057 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11058 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11059 bitvector base address using SCM_BITVECTOR_BASE.
11060
11061 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11062 unsigned long*.
11063
11064 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11065
11066 * goops.c (SCM_CLASS_REDEF): Removed.
11067
11068 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11069 SCM_<foo>_H.
11070
11071 Thanks to Matthias Koeppe for reporting the bugs that correspond
11072 to the following set of patches.
11073
11074 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11075 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11076 scm_sys_allocate_instance, clear_method_cache,
11077 scm_sys_invalidate_method_cache_x, scm_make,
11078 create_standard_classes, scm_make_port_classes, scm_make_class,
11079 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11080
11081 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11082
11083 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11084
11085 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11086 UNARY_ELTS_CODE): Remove bogus break statement.
11087
11088 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11089 Don't access bit vectors elements as SCM objects.
11090
11091 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11092 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11093 Don't assign to an unpacked value.
11094
11095 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11096
11097 * __scm.h (SCM_NORETURN): Moved here from error.h.
11098
11099 (SCM_UNUSED): New macro.
11100
11101 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11102
11103 * backtrace.c (display_error_handler), continuations.c
11104 (continuation_print), debug.c (debugobj_print), dynwind.c
11105 (guards_print), environments.c (observer_print,
11106 core_environments_finalize, leaf_environment_cell,
11107 leaf_environment_print, eval_environment_print,
11108 eval_environment_observer, import_environment_define,
11109 import_environment_undefine, import_environment_print,
11110 import_environment_observer, export_environment_define,
11111 export_environment_undefine, export_environment_print,
11112 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11113 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11114 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11115 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11116 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11117 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11118 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11119 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11120 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11121 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11122 set_slot_value, test_slot_existence, scm_change_object_class,
11123 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11124 default_setter), guardians.c (guardian_print, guardian_gc_init,
11125 guardian_zombify, whine_about_self_centered_zombies), guile.c
11126 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11127 mallocs.c (malloc_print), numbers.c (scm_print_real,
11128 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11129 end_input_default, scm_port_print, fill_input_void_port,
11130 write_void_port), root.c (root_print), smob.c (scm_mark0,
11131 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11132 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11133 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11134 (scm_struct_free_0, scm_struct_free_standard,
11135 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11136 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11137 scm_handle_by_throw, scm_ithrow), weaks.c
11138 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11139 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11140 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11141
11142 * error.h (SCM_NORETURN): Moved to __scm.h.
11143
11144 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11145 Renamed <foo>H to SCM_<foo>_H.
11146
11147 * gc.c (debug_cells_gc_interval): New static variable.
11148
11149 (scm_assert_cell_valid): If selected by the user, perform
11150 additional garbage collections.
11151
11152 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11153 if additional garbage collections are desired.
11154
11155 (mark_gc_async): If additional garbage collections are selected
11156 by the user, don't call the after-gc-hook. Instead require the
11157 user to run the hook manually.
11158
11159 * pairs.c (scm_error_pair_access): New function. Only compiled
11160 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11161
11162 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11163
11164 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11165 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11166 is a real pair object. (Glocs are also accepted, but that may
11167 change.) If not, abort with an error message.
11168
11169 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11170
11171 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11172
11173 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11174 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11175
11176 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11177
11178 * extensions.c (scm_c_register_extension): Allow NULL as library
11179 name.
11180 (load_extension): Ignore NULL library names when comparing.
11181
11182 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11183 non-pointers are being compared. Thanks to Alexander Klimov!
11184
11185 2001-06-04 Gary Houston <ghouston@arglist.com>
11186
11187 * rw.c (scm_write_string_partial): new procedure implementing
11188 write-string/partial in (ice-9 rw).
11189 * rw.h: declare scm_write_string_partial.
11190
11191 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11192
11193 * keywords.c (keyword_print): Substract 1 from length of symbol
11194 name, accounting for the silly dash.
11195
11196 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11197 Do not emit deprecation warning.
11198
11199 Added exception notice to all files.
11200
11201 * dynl.c: Include "deprecation.h".
11202
11203 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11204
11205 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11206 scm_clear_registered_modules): Deprecated.
11207
11208 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
11209
11210 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11211 guile-snarf-docs-texi.
11212
11213 * fports.c: HAVE_ST_BLKSIZE changed to
11214 HAVE_STRUCT_STAT_ST_BLKSIZE.
11215 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11216 HAVE_STRUCT_STAT_ST_BLKSIZE.
11217
11218 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11219 HAVE_STRUCT_STAT_ST_RDEV.
11220 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11221 HAVE_STRUCT_STAT_ST_BLKSIZE.
11222 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11223 HAVE_STRUCT_STAT_ST_BLOCKS.
11224
11225 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11226
11227 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11228 of scm_eval_x to allow module changes between the forms in the
11229 string. Set/restore module using scm_c_call_with_current_module.
11230
11231 * mkstemp.c: New file, slightly modified from libiberties
11232 mkstemps.c.
11233
11234 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11235
11236 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11237 filter-doc-snarfage.c: new files.
11238
11239 * Makefile.am: add stuff to [build,] use and distribute
11240 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11241
11242 * guile-snarf.in: grok the new snarf output.
11243
11244 * snarf.h: make the output both texttools- and `read'-friendly.
11245
11246 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11247 guile-snarf-docs. (should also deprecate, I guess. maybe not).
11248
11249 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11250
11251 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11252 error for unsupported format controls and for superflous
11253 arguments. Thanks to Daniel Skarda!
11254
11255 * print.h, print.c (scm_print_symbol_name): Factored out of
11256 scm_iprin1.
11257 (scm_iprin1): Call it.
11258
11259 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11260 weird names are printed correctly.
11261
11262 * print.c (scm_print_symbol_name): Symbols whose name starts with
11263 `#' or `:' or ends with `:' are considered weird.
11264
11265 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11266
11267 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11268 and /.
11269
11270 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11271
11272 * debug.h: Removed prototype for scm_eval_string.
11273
11274 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11275
11276 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
11277 (make-string 2000 #\!))' in an older version).
11278
11279 Change strncpy to memcpy to allow embedded NUL characters in
11280 symbol prefix.
11281
11282 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11283
11284 * hooks.c (scm_create_hook): deprecated.
11285 (make_hook): deleted.
11286 (scm_make_hook): all the hook creation code is now here.
11287
11288 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11289 a hook, make it permanent, and do a `scm_c_define' on it.
11290
11291 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11292
11293 * socket.c (s_scm_inet_pton): fix docstring quoting.
11294 (s_scm_inet_ntop): ditto.
11295
11296 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11297
11298 * hashtab.c (scm_internal_hash_fold): fix argument position in
11299 SCM_ASSERT.
11300
11301 * environments.c (s_scm_import_environment_set_imports_x): fix
11302 argument position in SCM_ASSERT.
11303
11304 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11305 (s_scm_make_iloc): ditto.
11306
11307 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11308
11309 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11310
11311 * eval.c (promise_print): Read the promise's value as an object.
11312
11313 (SCM_CEVAL): Don't perform side-effecting operations in macro
11314 parameters.
11315
11316 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11317 conditional expression.
11318
11319 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11320 initializer.
11321
11322 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11323 text, removed redundant computation of effective_length and fixed
11324 the overflow check.
11325
11326 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11327 values.
11328
11329 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11330
11331 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11332
11333 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11334 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11335
11336 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11337
11338 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11339 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11340 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11341 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11342
11343 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11344
11345 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11346
11347 * ramap.c (ramap_rp): Removed bogus `;'.
11348
11349 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11350 problem.
11351
11352 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11353 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11354 Read SCM objects rather than scm_bits_t values.
11355
11356 * tags.h (SCM_VOIDP_TEST): Removed.
11357
11358 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11359 value of 2 now corresponds to the former 1, the current 1
11360 corresponds to the former situation that SCM_VOIDP_TEST was
11361 defined.
11362
11363 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11364 If this appears to be not ANSI compliant, we will change it to
11365 typedef struct scm_unused_struct { } * SCM;
11366 Thanks to Han-Wen Nienhuys for the suggestion.
11367
11368 * unif.c (scm_array_set_x): Fix typing problem, and use
11369 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11370 dealing with uniform vectors.
11371
11372 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11373
11374 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11375 (scm_igc): mark from them, too (precisely, not conservatively!).
11376
11377 * root.h (scm_gc_registered_roots): new object in
11378 scm_sys_protects.
11379
11380 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11381 `scm_protect_object'. shouldn't call it at all, though, it seems.
11382
11383 * gc.c (scm_[un]protect_object): deprecated.
11384 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11385 (scm_gc_[un]register_root[s]): new.
11386
11387 * gc.h: add prototypes for scm_gc_[un]protect_object,
11388 scm_gc_[un]register_root[s].
11389
11390 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11391
11392 revert the controversial part of the 2001-05-24 changes.
11393
11394 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11395
11396 * modules.c (scm_env_module): Exported to Scheme.
11397
11398 * eval.c (scm_debug_opts): New option `show-file-name'.
11399
11400 * debug.h (SCM_SHOW_FILE_NAME): New.
11401
11402 * backtrace.c: Include "libguile/filesys.h".
11403 (sym_base, display_backtrace_get_file_line,
11404 display_backtrace_file, display_backtrace_file_and_line): New.
11405 (display_frame): Call display_backtrace_file_and_line if that is
11406 requested.
11407 (display_backtrace_body): Call scm_display_backtrace_file if
11408 requested.
11409
11410 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11411 Prototypes removed since there's no definition for these
11412 functions.
11413
11414 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11415
11416 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11417 Changed use of scm_array->scm_array_t and
11418 scm_array_dim->scm_array_dim_t to enable build with
11419 --disable-deprecated.
11420
11421 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11422
11423 The purpose of this set of changes is to regularize Guile's usage
11424 of ANSI C integral types, with the following ideas in mind:
11425
11426 - SCM does not nesessarily have to be long.
11427 - long is not nesessarily enough to store pointers.
11428 - long is not nesessarily the same size as int.
11429
11430 The changes are incomplete and possibly buggy. Please test on
11431 something exotic.
11432
11433 * validate.h
11434 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11435 new macros.
11436
11437 * unif.h: type renaming:
11438 scm_array -> scm_array_t
11439 scm_array_dim -> scm_array_dim_t
11440 the old names are deprecated, all in-Guile uses changed.
11441
11442 * tags.h (scm_ubits_t): new typedef, representing unsigned
11443 scm_bits_t.
11444
11445 * stacks.h: type renaming:
11446 scm_info_frame -> scm_info_frame_t
11447 scm_stack -> scm_stack_t
11448 the old names are deprecated, all in-Guile uses changed.
11449
11450 * srcprop.h: type renaming:
11451 scm_srcprops -> scm_srcprops_t
11452 scm_srcprops_chunk -> scm_srcprops_chunk_t
11453 the old names are deprecated, all in-Guile uses changed.
11454
11455 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11456 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11457 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11458 vectors.c, vports.c, weaks.c:
11459 various int/size_t -> size_t/scm_bits_t changes.
11460
11461 * random.h: type renaming:
11462 scm_rstate -> scm_rstate_t
11463 scm_rng -> scm_rng_t
11464 scm_i_rstate -> scm_i_rstate_t
11465 the old names are deprecated, all in-Guile uses changed.
11466
11467 * procs.h: type renaming:
11468 scm_subr_entry -> scm_subr_entry_t
11469 the old name is deprecated, all in-Guile uses changed.
11470
11471 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
11472 type renaming:
11473 scm_option -> scm_option_t
11474 the old name is deprecated, all in-Guile uses changed.
11475
11476 * objects.c: various long -> scm_bits_t changes.
11477 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
11478
11479 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
11480 SCM_I_FIXNUM_BIT.
11481
11482 * num2integral.i.c: new file, multiply included by numbers.c, used
11483 to "templatize" the various integral <-> num conversion routines.
11484
11485 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
11486 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
11487 deprecated.
11488 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
11489 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
11490 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
11491 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
11492 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
11493 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
11494 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
11495 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
11496 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
11497 scm_num2size): new functions.
11498
11499 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
11500
11501 * load.c: change int -> size_t in various places (where the
11502 variable is used to store a string length).
11503 (search-path): call scm_done_free, not scm_done_malloc.
11504
11505 * list.c (scm_ilength): return a scm_bits_t, not long.
11506 some other {int,long} -> scm_bits_t changes.
11507
11508 * hashtab.c: various [u]int -> scm_bits_t changes.
11509 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
11510 (scm_ihashx): n: uint -> scm_bits_t
11511 use scm_bits2num instead of scm_ulong2num.
11512
11513 * gsubr.c: various int -> scm_bits_t changes.
11514
11515 * goops.[hc]: various {int,long} -> scm_bits_t changes.
11516
11517 * gh_data.c (gh_num2int): no loss of precision any more.
11518
11519 * gh.h (gh_str2scm): len: int -> size_t
11520 (gh_{get,set}_substr): start: int -> scm_bits_t,
11521 len: int -> size_t
11522 (gh_<num>2scm): n: int -> scm_bits_t
11523 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
11524 (gh_length): return scm_bits_t, not unsigned long.
11525
11526 * gc.[hc]: various small changes relating to many things stopping
11527 being long and starting being scm_[u]bits_t instead.
11528 scm_mallocated should no longer wrap around.
11529
11530 * fports.h: type renaming:
11531 scm_fport -> scm_fport_t
11532 the old name is deprecated, all in-Guile uses changed.
11533
11534 * fports.c (fport_fill_input): count: int -> scm_bits_t
11535 (fport_flush): init_size, remaining, count: int -> scm_bits_t
11536
11537 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
11538 those prototypes, as the functions they prototype don't exist.
11539
11540 * fports.c (default_buffer_size): int -> size_t
11541 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
11542 default_size: int -> size_t
11543 (scm_setvbuf): csize: int -> scm_bits_t
11544
11545 * fluids.c (n_fluids): int -> scm_bits_t
11546 (grow_fluids): old_length, i: int -> scm_bits_t
11547 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
11548 scm_bits_t
11549 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
11550
11551 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
11552 the new and shiny SCM_NUM2INT.
11553
11554 * extensions.c: extension -> extension_t (and made a typedef).
11555
11556 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
11557 there are no nasty surprises if/when the various deeply magic tag
11558 bits move somewhere else.
11559
11560 * eval.c: changed the locals used to store results of SCM_IFRAME,
11561 scm_ilength and such to be of type scm_bits_t (and not int/long).
11562 (iqq): depth, edepth: int -> scm_bits_t
11563 (scm_eval_stack): int -> scm_bits_t
11564 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11565 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11566 i: int -> scm_bits_t
11567
11568 * environments.c: changed the many calls to scm_ulong2num to
11569 scm_ubits2num.
11570 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11571
11572 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11573
11574 * debug.h: type renaming:
11575 scm_debug_info -> scm_debug_info_t
11576 scm_debug_frame -> scm_debug_frame_t
11577 the old names are deprecated, all in-Guile uses changed.
11578 (scm_debug_eframe_size): int -> scm_bits_t
11579
11580 * debug.c (scm_init_debug): use scm_c_define instead of the
11581 deprecated scm_define.
11582
11583 * continuations.h: type renaming:
11584 scm_contregs -> scm_contregs_t
11585 the old name is deprecated, all in-Guile uses changed.
11586 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11587 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11588
11589 * continuations.c (scm_make_continuation): change the type of
11590 stack_size from long to scm_bits_t.
11591
11592 * ports.h: type renaming:
11593 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11594 scm_port -> scm_port_t
11595 scm_ptob_descriptor -> scm_ptob_descriptor_t
11596 the old names are deprecated, all in-Guile uses changed.
11597 (scm_port_t.entry): int -> scm_bits_t.
11598 (scm_port_t.line_number): int -> long.
11599 (scm_port_t.putback_buf_size): int -> size_t.
11600
11601 * __scm.h (long_long, ulong_long): deprecated (they pollute the
11602 global namespace and have little value beside that).
11603 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11604 SCM handle).
11605 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
11606 exist (for size_t & ptrdiff_t).
11607 (scm_sizet): deprecated.
11608
11609 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11610
11611 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11612
11613 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11614 SCM_VARIABLE_INIT since that it what it used to be.
11615
11616 * deprecation.c (scm_include_deprecated_features): Make docstring
11617 ANSIsh. Thanks to Matthias Köppe!
11618
11619 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11620
11621 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11622 needed for weak-key hashtables.
11623
11624 * procs.c (scm_make_subr_with_generic): Add missing last argument
11625 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11626
11627 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11628 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
11629
11630 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11631
11632 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11633
11634 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11635 `duplicate_string'. Do not use an indirect cell, store symbol
11636 directly in collision list of hash table.
11637 (duplicate_string): Removed.
11638
11639 * init.c (scm_init_guile_1): Call scm_init_extensions.
11640
11641 * Makefile.am: Add "extensions.c" and related files in all the
11642 right places.
11643
11644 * extensions.h, extension.c: New files.
11645
11646 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11647
11648 * modules.h (scm_system_module_env_p): Move out of deprecated
11649 section.
11650
11651 * rw.h (scm_init_rw): Added prototype.
11652
11653 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11654 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11655 New functions. They replace scm_make_gsubr and
11656 scm_make_gsubr_with_generic. The `make' variants only create the
11657 gsubr object, while the `define' variants also put it into the
11658 current module. Changed all callers.
11659 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11660
11661 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11662 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11663 functions. They replace scm_make_subr, scm_make_subr_opt and
11664 scm_make_subr_with_generic. The `make' variants only create the
11665 subr object, while the `define' variants also put it into the
11666 current module. Changed all callers.
11667 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11668 Deprecated.
11669
11670 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11671 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11672 the comments above.
11673
11674 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11675
11676 * throw.c (scm_lazy_catch): Slight docstring clarification.
11677
11678 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11679
11680 * throw.c: Lazy-catch handlers are no longer allowed to return.
11681 Fixed comments throughout.
11682 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11683 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11684 recognized as such.
11685
11686 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11687 refered to s_scm_minor_version previously.
11688
11689 * modules.h, modules.c: Moved around a lot of code so that
11690 deprecated features appear at the bottom.
11691 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11692 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11693 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11694 scm_load_scheme_module): Deprecated.
11695 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11696 environments corresponding to the root module.
11697 (convert_module_name, scm_c_resolve_module,
11698 scm_c_call_with_current_module, scm_c_define_module,
11699 scm_c_use_module, scm_c_export): New.
11700 (the_root_module): New static variant of scm_the_root_module. Use
11701 it everywhere instead of scm_the_root_module.
11702
11703 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11704 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11705 (scm_c_with_fluid): New.
11706 (scm_with_fluids): Use scm_c_with_fluids instead of
11707 scm_internal_with_fluids.
11708
11709 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11710 `scm_init_goops'. Do not explicitly create/switch modules.
11711 Return SCM_UNSPECIFIED.
11712 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11713 (scm_load_goops): Use scm_c_resolve_module instead of
11714 scm_resolve_module.
11715
11716 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11717 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11718 `scm_init_rw' prior to loading the startup files.
11719
11720 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11721 scm_init_rdelim. Do not explicitly create/switch modules.
11722 Return SCM_UNSPECIFIED.
11723 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11724 procedure.
11725
11726 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11727 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11728 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11729
11730 * script.c (scm_shell): Evaluate the compiled switches in the
11731 current module, not in the root module.
11732
11733 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11734
11735 * fluids.c (scm_c_with_fluids): Rename from
11736 scm_internal_with_fluids.
11737 (scm_internal_with_fluids): Deprecated.
11738 (scm_c_with_fluid): New.
11739
11740 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11741
11742 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11743
11744 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11745 accessed with SCM_C[AD]R.
11746
11747 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11748
11749 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
11750
11751 * version.c (s_scm_major_version): doc fixes.
11752 (s_scm_minor_version): doc fixes.
11753 (s_scm_minor_version): new function.
11754
11755 * version.h (scm_init_version): new function.
11756
11757 * versiondat.h.in: add GUILE_MICRO_VERSION.
11758
11759 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11760
11761 * deprecation.c (scm_init_deprecation): Renamed
11762 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11763
11764 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11765
11766 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11767 dependent on cpp_cnvt.awk
11768
11769 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11770
11771 * script.c (scm_compile_shell_switches): New command line option
11772 `--use-srfi' for loading a list of SRFIs on startup.
11773 (scm_shell_usage): Added `--use-srfi' to help message.
11774
11775 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11776
11777 Merged from mvo-vcell-cleanup-1-branch.
11778
11779 The concept of vcells has been removed from Guile. With it,
11780 explicit obarrays and associated operations are gone. Use
11781 hashtables instead of obarrays.
11782
11783 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11784 result as variable instead of vcell. Glocs no longer point to a
11785 vcell but to a variable. Use scm_c_define instead of
11786 scm_sysintern and treat the result as a variable (which it is),
11787 not a vcell.
11788
11789 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11790 SCM_DEFVARIABLEP): Deprecated.
11791 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11792 (variable_print): Do not print name of variable.
11793 (variable_equalp): Compare values, not vcells.
11794 (anonymous_variable_sym): Removed.
11795 (make_vcell_variable): Removed.
11796 (make_variable): New, as replacement.
11797 (scm_make_variable, scm_make_undefined_variable): Do not take name
11798 hint parameter.
11799 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11800 error in that case.
11801 (scm_builtin_variable): Deprecated.
11802
11803 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11804 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11805 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11806 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11807 scm_string_to_obarray_symbol, scm_intern_symbol,
11808 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11809 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11810 Deprecated and moved to "symbols-deprecated.c".
11811 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11812 (scm_init_symbols): Call scm_init_symbols_deprecated.
11813 * symbols-deprecated.c: New file.
11814 * Makefile.am: Added symbols-deprecated.c and related files in all
11815 the right places.
11816
11817 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11818 SCM_GLOBAL_VCELL_INIT): Deprecated.
11819 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11820 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
11821
11822 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11823 SCM_GLOC_SYM.
11824
11825 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11826 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11827 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11828 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11829 Changed according to the `throughout' comments.
11830
11831 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11832 to `int'.
11833 (scm_module_type): Removed.
11834 (the_root_module): Renamed to the_root_module_var. Now points to
11835 a variable instead of a vcell. Updated all uses.
11836 (scm_the_root_module): Return SCM_BOOL_F when module systems
11837 hasn't been booted yet.
11838 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11839 (scm_post_boot_init_modules): Made static.
11840 (scm_set_current_module): Call scm_post_boot_init_modules on first
11841 call.
11842 (make_modules_in, beautify_user_module_x, resolve_module,
11843 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11844 suffix. Now point to variables instead of vcells. Updated all
11845 uses.
11846 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11847 and return SCM_BOOL_F in that case.
11848 (scm_module_transformer): Likewise.
11849 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11850 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11851 (scm_eval_closure_lookup): Do not allow new definitions when
11852 `interface' flag is set.
11853 (scm_standard_interface_eval_closure): New.
11854 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11855 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11856 scm_c_lookup, scm_c_module_define, scm_c_define,
11857 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11858 scm_modules_prehistory): New.
11859 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11860 instead of scm_intern0.
11861
11862 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11863 symbol.
11864
11865 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11866 hashtable operations to maintain the keywords, not obarray ones.
11867
11868 * init.c (scm_load_startup_files): Do not call
11869 scm_post_boot_init_modules. This is done by
11870 scm_set_current_module now.
11871 (scm_init_guile_1): Call scm_modules_prehistory. Call
11872 scm_init_variable early on.
11873
11874 * goops.c (s_scm_sys_goops_loaded): Get
11875 var_compute_applicable_methods from scm_sym2var, not from a direct
11876 invocation of scm_goops_lookup_closure.
11877
11878 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11879
11880 * gc.c: Added simple debugging hack to mark phase of GC: When
11881 activated, do not tail-call scm_gc_mark. This gives nice
11882 backtraces.
11883 (scm_unhash_name): Removed.
11884
11885 * feature.c (features): Renamed to features_var. Now points to a
11886 variable instead of a vcell. Updated all uses.
11887
11888 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11889 `scm_current_module_lookup_closure' which will do the right thing
11890 when the module system hasn't been booted yet.
11891 (SCM_GLOC_SYM): Removed.
11892 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11893 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
11894
11895 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11896 instead of with vcells. Do not overwrite `var' with the result of
11897 the lookup, use the new `real_var' instead. Remove `var2' in
11898 exchange (which was only used with threads).
11899 (sym_three_question_marks): New.
11900 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11901 `SCM_GLOC_SYM'.
11902 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11903 (scm_m_atfop): Expect the function definition to be a variable
11904 instead of a vcell.
11905 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11906 symbol instead.
11907 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11908 (scm_eval_args): Use more explicit code in the gloc branch of the
11909 atrocious struct ambiguity test. The optimizer will sort this
11910 out.
11911 (scm_deval_args): Likewise.
11912 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11913 remember the symbol instead. Added some comments where
11914 scm_tc3_cons_gloc really exclusively refers to structs.
11915 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11916 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11917 of scm_sysintern in general.
11918
11919 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11920 explicit magic.
11921
11922 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11923 pairs. Put the variable directly in the gloc.
11924 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11925 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11926
11927 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11928
11929 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11930 scm_the_last_stack_fluid_var. It now points to a variable instead
11931 of a vcell. Updated all uses.
11932 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11933 instead of a vcell. Updated all uses.
11934
11935 * _scm.h: Include "variables.h" and "modules.h" since almost
11936 everybody needs them now.
11937
11938 * root.h (scm_symhash, scm_symhash_vars): Removed.
11939 * gc.c (scm_init_storage): Do not initialize them.
11940
11941 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11942
11943 * eval.c (scm_init_eval): Initialize scm_undefineds and
11944 scm_listofnull.
11945
11946 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11947 like the SCM_NEWCELL macro counterparts.
11948
11949 (scm_init_storage, scm_init_gc): Moved initialization of
11950 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11951
11952 (scm_init_storage): Moved initialization of scm_undefineds and
11953 scm_listofnull to eval.c, initializion of scm_nullstr to
11954 strings.c, initializion of scm_nullvect to vectors.c.
11955
11956 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11957 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11958
11959 * init.c (scm_init_guile_1): Reordered some initializations and
11960 added dependcy information comments.
11961
11962 * load.c (scm_init_load): Use scm_nullstr.
11963
11964 * strings.c (scm_init_strings): Initialize scm_nullstr.
11965
11966 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11967
11968 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11969
11970 * values.c (print_values): Print as a unreadable object, not as
11971 multiple lines. Thanks to Matthias Köppe!
11972
11973 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11974
11975 * deprecation.c: Fixed copyright date.
11976
11977 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11978 DEPRECATION_H to SCM_DEPRECATION_H.
11979
11980 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11981
11982 * guile-doc-snarf.in: Update copyright.
11983 Fix relative path bug. Thanks to Sergey Poznyakoff.
11984
11985 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11986
11987 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11988 accept open ports. Thanks to Quetzalcoatl Bradley!
11989
11990 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11991
11992 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11993 has 779 primitives on startup.
11994
11995 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11996
11997 * eval.c (scm_i_eval): Copy expression before passing it to
11998 SCM_XEVAL. The copy operation was removed unintendedly during my
11999 change on 2001-03-25.
12000
12001 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12002
12003 from Matthias Köppe (thanks!):
12004
12005 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12006 portable.
12007
12008 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12009 docstring.
12010
12011 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12012
12013 * gc.c (scm_init_gc): Added FIXME comment.
12014
12015 * hooks.c: Since hooks don't have a name any more, it is not
12016 necessary to include objprop.h.
12017
12018 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12019
12020 (symbol_name, scm_make_hook_with_name): Removed.
12021
12022 (scm_create_hook): Don't set the hook's name property.
12023
12024 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12025
12026 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12027
12028 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12029
12030 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12031 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12032 FLOBUFLEN and define it unconditionally.
12033
12034 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12035
12036 * gh_data.c (gh_lookup): Call gh_module_lookup with
12037 `scm_current_module ()', not `#f'.
12038 (gh_module_lookup): Expect a module instead of an obarray as first
12039 argument and do lookup in that module.
12040
12041 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12042 arrays. The length of array is already determined differently and
12043 scm_uniform_vector_length does not work on arrays.
12044
12045 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12046
12047 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12048 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12049
12050 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12051 they are not used. Changed `wrong type' error into `wrong num
12052 args' error. Changed all callers.
12053
12054 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12055 arguments are supplied.
12056
12057 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12058
12059 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12060 describe `regexp/notbol' and `regexp/noteol' execution flags.
12061
12062 * strop.c (scm_substring_move_x): Doc fix; nfc.
12063
12064 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12065
12066 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12067 (scm_set_object_procedure_x): Use it to check argument. Fix
12068 docstring.
12069
12070 * evalext.c (scm_definedp): Fix docstring.
12071
12072 2001-05-05 Gary Houston <ghouston@arglist.com>
12073
12074 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12075 support.
12076
12077 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12078
12079 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12080 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12081 Change R4RS references to R5RS.
12082
12083 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12084 docstring source are correctly reproduced in the output (ii)
12085 we don't anymore get occasional trailing quotes. Also reorganized
12086 and commented the code a little.
12087
12088 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12089 fixes.
12090
12091 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12092
12093 * strop.c (scm_string_split): New procedure.
12094
12095 * strop.h (scm_string_split): Added prototype.
12096
12097 2001-05-04 Gary Houston <ghouston@arglist.com>
12098
12099 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12100 Dale P. Smith.
12101
12102 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12103
12104 * rw.c: Include "modules.h" and "strports.h".
12105
12106 * net_db.h (scm_gethost): Added prototype.
12107
12108 * deprecation.h, deprecation.c: New.
12109 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12110 (DOT_X_FILES): Added "deprecation.x".
12111 (modinclude_HEADERS): Added "deprecation.h".
12112
12113 * init.c: Include "deprecation.h".
12114 (scm_init_guile_1): Call scm_init_deprecation.
12115
12116 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12117
12118 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12119 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12120 New.
12121
12122 2001-04-29 Gary Houston <ghouston@arglist.com>
12123
12124 * rw.c: new file, implementing C part of module (ice-9 rw).
12125 (scm_read_string_x_partial): moved from ioext.c
12126 (scm_init_rw): new proc.
12127 * rw.h: new file.
12128 init.c: include rw.h and call scm_init_rw.
12129 Makefile.am: include rw.c and rw.h.
12130
12131 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
12132
12133 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12134 know what's supposed to happen to it.
12135
12136 * list.h (scm_list_star): deprecation expired - removed.
12137
12138 * numbers.h (scm_dblproc): deprecation expired - removed.
12139 (SCM_UNEGFIXABLE): deprecation expired - removed.
12140 (SCM_FLOBUFLEN): deprecation expired - removed.
12141 (SCM_INEXP): deprecation expired - removed.
12142 (SCM_CPLXP): deprecation expired - removed.
12143 (SCM_REAL): deprecation expired - removed.
12144 (SCM_IMAG): deprecation expired - removed.
12145 (SCM_REALPART): deprecation expired - removed.
12146 (scm_makdbl): deprecation expired - removed.
12147 (SCM_SINGP): deprecation expired - removed.
12148 (SCM_NUM2DBL): deprecation expired - removed.
12149 (SCM_NO_BIGDIG): deprecation expired - removed.
12150
12151 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12152 (scm_tc_dblr): deprecation expired - removed.
12153 (scm_tc_dblc): deprecation expired - removed.
12154 (scm_tc16_flo): deprecation expired - removed.
12155 (scm_tc_flo): deprecation expired - removed.
12156
12157 * tag.h (scm_tag): deprecation expired - removed.
12158
12159 * tag.c: (scm_tag): deprecation expired - removed.
12160
12161 * ioext.c: (scm_fseek): deprecation expired - removed.
12162
12163 * ioext.h (scm_fseek): deprecation expired - removed.
12164
12165 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12166
12167 * gh.h (gh_int2scmb): deprecation expired - removed.
12168
12169 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12170
12171 * stacks.c (scm_make_stack): Fix typo in docstring.
12172
12173 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
12174
12175 * error.c (scm_sysmissing): deprecation expired - removed.
12176
12177 * error.h (scm_sysmissing): deprecation expired - removed.
12178
12179 * gc.c
12180 (scm_init_gc): gc-thunk deprecation expired - removed.
12181 (scm_gc_vcell): deprecation expired - removed.
12182 (gc_async_thunk): scm_gc_vcell related code removed.
12183
12184 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12185
12186 * strings.h
12187 (SCM_NSTRINGP): deprecation expired - removed.
12188 (SCM_NRWSTRINGP): deprecation expired - removed.
12189
12190 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12191
12192 * chars.h
12193 (SCM_ICHRP): deprecation expired - removed.
12194 (SCM_ICHR): deprecation expired - removed.
12195 (SCM_MAKICHR): deprecation expired - removed.
12196
12197 * ports.h
12198 (SCM_INPORTP): deprecation expired - removed.
12199 (SCM_OUTPORTP): deprecation expired - removed.
12200
12201 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12202
12203 * modules.c (scm_module_type): New.
12204 (scm_post_boot_init_modules): Initialize from Scheme value.
12205 (the_module, scm_current_module, scm_init_modules): the_module is
12206 now a C only fluid.
12207 (scm_current_module): Export to Scheme.
12208 (scm_set_current_module): Do not call out to Scheme, do all the
12209 work in C. Export procedure to Scheme. Only accept modules, `#f'
12210 is no longer valid as the current module. Only set
12211 scm_top_level_lookup_closure_var and scm_system_transformer when
12212 they are not deprecated.
12213 (scm_module_transformer, scm_current_module_transformer): New.
12214
12215 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12216 scm_current_module_transformer, scm_module_transformer): New.
12217
12218 * gh_data.c: Removed FIXME comment about gh_lookup returning
12219 SCM_UNDEFINED. That's the right thing to do.
12220
12221 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12222 into the conditionally compiled sections.
12223 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12224 scm_current_module_transformer instead of scm_system_transformer.
12225 * init.c (start_stack): Move initialization of
12226 scm_system_transformer to the deprecated section.
12227
12228 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12229
12230 * throw.c (scm_throw): Correct docstring.
12231
12232 2001-04-22 Gary Houston <ghouston@arglist.com>
12233
12234 * socket.c: attempted to improve the docstrings slightly.
12235
12236 * net_db.c: remove bogus "close" declaration.
12237 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12238 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12239 moved to socket.c.
12240 * net_db.h: declarations moved too.
12241
12242 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12243 long.
12244 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12245 (VALIDATE_INET6): new macro.
12246 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12247 inet-pton and inet-ntop.
12248 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12249 (scm_addr_vector): use ipv6_net_to_num.
12250
12251 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12252
12253 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12254 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12255
12256 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12257 when compiled in debug mode.
12258
12259 (scm_gc_sweep): Only call smob's free function if it is defined.
12260
12261 * print.c (scm_iprin1): No need to check for validity of smob
12262 type or existence of print function.
12263
12264 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12265 Resizing will not work well with preemptive threading.
12266
12267 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12268
12269 (scm_make_smob_type): Extracted initialization of smob
12270 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12271 of the critical section.
12272
12273 (scm_smob_prehistory): Initialize all smob descriptors. By
12274 default, don't assign a smob free function: Most smob types don't
12275 need one.
12276
12277 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12278
12279 2001-04-21 Gary Houston <ghouston@arglist.com>
12280
12281 * socket.c (FLIP_NET_HOST_128): new macro.
12282 (scm_fill_sockaddr): use new macro.
12283 (scm_addr_vector): completed IPv6 address support. added const
12284 to the address parameter.
12285
12286 2001-04-20 Gary Houston <ghouston@arglist.com>
12287
12288 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12289 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12290 is defined.
12291 (scm_addr_vector): use a switch instead of multiple if statements.
12292 Add support for IPv6 (incomplete) .
12293 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
12294
12295 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12296
12297 * struct.c (scm_free_structs): Only pairs may be accessed with
12298 SCM_C[AD]R.
12299
12300 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12301
12302 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12303
12304 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12305 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12306 parentheses in order to get the correct associativity.
12307
12308 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12309
12310 * unif.c (scm_array_to_list): Added missing handling of arrays of
12311 bytes. Thanks to Masao Uebayashi for the bug report.
12312
12313 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12314
12315 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12316 consistently.
12317
12318 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12319
12320 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12321
12322 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12323 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
12324 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
12325 SCM_CLOSURE_FORMALS.
12326
12327 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12328 (scm_i_procedure_arity): Prefer stronger predicates like
12329 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12330
12331 * macros.c (macro_print): Extracted macro printing code from
12332 print.c and simplified it.
12333
12334 (scm_macro_type): Use SCM_MACRO_TYPE;
12335
12336 (scm_init_macros): Use macro_print for printing macros.
12337
12338 * print.c (scm_print_opts): Improved option documentation.
12339
12340 (scm_iprin1): Extracted printing of macros to macros.c.
12341 Simplified printing of ordinary closures.
12342
12343 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12344 Martin Grabmueller for the bug report.
12345
12346 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12347
12348 This patch eliminates some further applications of SCM_C[AD]R to
12349 non pair cells.
12350
12351 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12352 never been applied to real pairs.
12353
12354 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12355
12356 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12357
12358 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12359 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12360 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12361
12362 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12363 Added.
12364
12365 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12366 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12367
12368 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12369 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12370 SCM_SET{AND,OR}_CAR.
12371
12372 2001-04-17 Gary Houston <ghouston@arglist.com>
12373
12374 * some initial support for IPv6:
12375
12376 * socket.c (scm_fill_sockaddr): improve the argument validation.
12377 don't allocate memory until all args are checked. instead of
12378 unconditional memset of soka, try setting sin_len to 0 if
12379 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12380 (scm_socket, scm_connect): extend docstrings for IPv6.
12381 (scm_init_socket): intern AF_INET6 and PF_INET6.
12382
12383 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
12384
12385 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12386 matches SCM_DEFER_INTS at the beginning of the function.
12387
12388 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12389
12390 * gc.c (scm_igc): Unconditionally call
12391 SCM_CRITICAL_SECTION_START/END.
12392
12393 * fluids.c (next_fluid_num): Unconditionally call
12394 SCM_CRITICAL_SECTION_START/END.
12395 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12396
12397 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12398 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12399 Removed.
12400
12401 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12402 Defined as nothing for the case of !defined(USE_THREADS).
12403 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12404 Removed.
12405 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12406 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12407 LINE.
12408 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12409 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12410 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12411 SCM_CRITICAL_SECTION_START/END.
12412 (SCM_REALLOW_INTS: Bug fix. Don't call
12413 SCM_THREAD_SWITCHING_CODE.
12414 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12415 SCM_THREAD_SWITCHING_CODE directly.
12416 (SCM_ENTER_A_SECTION): Unconditionally use
12417 SCM_CRITICAL_SECTION_START/END. (was:
12418 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12419
12420 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12421
12422 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12423 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12424 allowed to explicitly set this macro via the CFLAGS variable
12425 during make.
12426
12427 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12428 (SCM_THREAD_CRITICAL_SECTION_START,
12429 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12430 SCM_THREAD_CRITICAL_SECTION_START/END to
12431 SCM_CRITICAL_SECTION_START/END.
12432
12433 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12434
12435 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12436 instead of bzero.
12437
12438 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
12439 (MISSING_BZERO_DECL): Remove the declaration.
12440
12441 Thanks to NIIBE Yutaka.
12442
12443 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12444
12445 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12446 goops module should be registered in order to work for an
12447 application which uses libguile statically linked.)
12448
12449 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12450
12451 * numbers.[ch] (scm_num2long, scm_num2long_long,
12452 scm_num2ulong_long, scm_num2ulong): Argument position is an
12453 unsigned integer.
12454
12455 * environments.c (eval_environment_folder,
12456 import_environment_folder), gh_data.c (gh_scm2longs,
12457 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12458 for integers and pointers, respectively.
12459
12460 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12461 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12462 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12463 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
12464
12465 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
12466 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
12467 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
12468 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
12469 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
12470 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
12471
12472 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
12473
12474 * strings.c (scm_read_only_string_p): Update docstring to reflect
12475 current (non-)usage of "read only" strings.
12476 (scm_make_shared_substring): Clarify docstring by changing
12477 "semantics" to "arguments".
12478
12479 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12480
12481 * hooks.c (scm_make_hook, scm_make_hook_with_name),
12482 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
12483 improvements.
12484
12485 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12486
12487 The following changes make the documentation more consistent.
12488
12489 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
12490 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
12491 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
12492 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
12493 ... @end lisp.
12494
12495 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
12496 (scm_array_dimensions, scm_make_shared_array),
12497 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
12498 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
12499 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
12500 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
12501 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
12502 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
12503 macros.c (scm_makmmacro), list.c (scm_append), environments.c
12504 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
12505 @example ... @end example to @lisp ... @end lisp.
12506
12507 * weaks.c (scm_weak_vector): Corrected docstring.
12508
12509 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
12510 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
12511 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
12512 (scm_hashx_set_x, scm_hashx_get_handle),
12513 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
12514 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
12515 vectors.c (scm_vector_fill_x), strings.c
12516 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
12517 objprop.c (scm_set_object_properties_x):
12518 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
12519 strports.c (scm_call_with_input_string), ports.c
12520 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
12521 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
12522 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
12523 (scm_make_weak_vector,scm_weak_vector_p),
12524 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
12525 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
12526 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12527 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
12528 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
12529 Made parameter names match documentation by renaming parameters
12530 and/or fixing docstrings.
12531
12532 * numbers.c (scm_ash): Corrected Texinfo markup.
12533
12534 * strop.c (scm_string_index, scm_string_rindex),
12535 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
12536
12537 * vports.c (scm_make_soft_port), unif.c
12538 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
12539 (scm_dimensions_to_uniform_array, scm_transpose_array),
12540 (scm_array_in_bounds_p, scm_uniform_vector_ref),
12541 (scm_bit_count, scm_bit_position, scm_bit_count_star),
12542 (scm_array_to_list, scm_list_to_uniform_array),
12543 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
12544 (scm_open_input_string, scm_open_output_string),
12545 (scm_get_output_string), strop.c (scm_string_copy),
12546 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
12547 (scm_get_internal_real_time, scm_times),
12548 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
12549 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
12550 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
12551 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
12552 simpos.c (scm_system), random.c (scm_random_uniform),
12553 (scm_random_normal, scm_random_exp), ramap.c
12554 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
12555 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
12556 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
12557 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
12558 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
12559 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
12560 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
12561 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
12562 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12563 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12564 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12565 (scm_integer_expt, scm_bit_extract, scm_logcount),
12566 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12567 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12568 (scm_interaction_environment), macros.c (scm_makacro),
12569 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12570 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12571 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12572 (scm_fluid_ref), filesys.c (scm_open_fdes),
12573 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12574 Docstring correction: `Returns' -> `Return'
12575
12576 * gc.c (scm_set_debug_cell_accesses_x):
12577 (s_scm_gc_set_debug_check_freelist_x):
12578 * fluids.c (scm_fluid_p): Added texinfo markup.
12579
12580 * error.c (scm_strerror): Made docstring more precise.
12581
12582 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12583 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12584 (scm_symbol_p, scm_symbol_to_string), strorder.c
12585 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12586 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12587 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12588 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12589 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12590
12591 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12592
12593 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12594 mode, as suggested by Michael Livshin.
12595
12596 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12597
12598 * backtrace.c (display_backtrace_body): since the `print_state'
12599 variable is not used (instead its data field is used directly as
12600 `pstate'), protect it from the hungry compiler optimizations.
12601 thanks to Bill Schottstaedt for the report.
12602
12603 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12604
12605 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12606 It is only defined and used if guile is compiled with
12607 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12608 let cells with a free_cell type tag be visible outside of the
12609 garbage collector when in debug mode.
12610
12611 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12612
12613 (scm_assert_cell_valid): Use a local static variable to avoid
12614 recursion.
12615
12616 (MARK): Only check for rogue cell pointers in debug mode. Use
12617 scm_cellp for this purpose and place all checks for rogue pointers
12618 into that function. Further, since due to conservative scanning
12619 we may encounter free cells during marking, don't use the standard
12620 cell type accessor macro to determine the cell type.
12621
12622 (scm_cellp): Check if the cell pointer actually points into a
12623 card header.
12624
12625 (scm_init_gc): Initalize scm_tc16_allocated.
12626
12627 * gc.h (GCH): Renamed to SCM_GC_H.
12628
12629 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12630 might be unnecessary, but I feel better this way :-)
12631
12632 (SCM_GC_CELL_TYPE): New macro.
12633
12634 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12635 in guile, and it is unlikely that they will be applied to real
12636 pairs anyway.
12637
12638 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12639
12640 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12641 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12642
12643 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12644 make sure that in debug mode no free cell will ever be visible
12645 outside of the garbage collector.
12646
12647 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12648
12649 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12650 values.
12651
12652 * async.c (scm_system_async), variable.c (scm_make_variable,
12653 scm_make_undefined_variable): Use scm_cons to create a pair.
12654
12655 * debug.c (scm_reverse_lookup): Perform proper type checking.
12656 Remove suspicious use of SCM_SLOPPY_CONSP.
12657
12658 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12659 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12660 the corresponding optimization.
12661
12662 * eval.c (iqq): Use proper type check.
12663
12664 (scm_m_expand_body): Remove redundant type checks.
12665
12666 (promise_print): Don't access promise cells as pairs.
12667
12668 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12669 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12670 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12671 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12672 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12673
12674 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12675 (scm_iprin1): Use new macro predicate and accessors.
12676
12677 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12678 in macros.h.
12679
12680 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12681 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12682 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12683 SCM_VARIABLE_H. Even the macros that are used to inhibit
12684 including a header file twice should be in the SCM_ namespace.
12685
12686 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12687 properties.c (scm_primitive_property_ref,
12688 scm_primitive_property_del_x): Prefer stronger predicates like
12689 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12690
12691 * gc.c (MARK): Use proper macros to access procedure-with-setter
12692 cell elements and closure cell elements.
12693
12694 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12695 access free cells as pairs.
12696
12697 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12698 no hashtab entry is found.
12699
12700 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12701 SCM_CLR_PORT_OPEN_FLAG.
12702
12703 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12704 use SCM_SET_C[AD]R for uninitialized cells.
12705
12706 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12707 If the hashtable has no slots, return #f instead of '(). This
12708 unifies the return value with most assoc-functions.
12709
12710 (scm_hash_fn_ref): Use proper type check.
12711
12712 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12713 Removed references to non-existing functions from documentation.
12714
12715 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12716 access keyword cell elements.
12717
12718 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12719 macros.
12720
12721 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12722
12723 * print.c (scm_iprlist): Added comment. Improved loop
12724 conditions.
12725
12726 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12727 pairs.
12728
12729 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12730
12731 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12732
12733 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12734 cells as pairs.
12735
12736 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12737 scm_variable_set_x): Use proper macros to access variable cell
12738 elements.
12739
12740 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12741
12742 * variable.h (SCM_VARVCELL): Don't access variable cells as
12743 pairs.
12744
12745 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12746 added FIXME comment, removed register specifier.
12747
12748 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12749
12750 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12751 * init.c (scm_init_guile_1): Don't init goopscore module.
12752
12753 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12754
12755 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12756
12757 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12758
12759 * strop.c (scm_string_to_list): Fixed docstring markup.
12760 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12761 (scm_string_downcase, scm_string_capitalize_x),
12762 (scm_string_capitalize): Rewrote and corrected docstrings.
12763 (scm_string_ci_to_symbol): Made docstring more explicit.
12764
12765 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12766
12767 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12768 eval.c can use it.
12769 (scm_call_with_values): Removed.
12770 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12771 so that it can be exported.
12772 (scm_call_with_values): Removed.
12773
12774 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12775 * eval.c: Include "libguile/values.h"
12776 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12777 New.
12778 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12779 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12780 New delcarations to support above change.
12781
12782 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12783 errors with last change.
12784
12785 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12786
12787 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12788 scm_i_eval): Moved the application of the system transformer from
12789 scm_i_eval to scm_primitive_eval.
12790
12791 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12792
12793 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12794
12795 * strop.c (scm_string_index): Fix docstring line break
12796 regression.
12797
12798 * list.c (scm_cons_star): Fix docstring typo.
12799
12800 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12801
12802 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12803 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12804 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12805 scm_make_string, scm_string_append), strports.c (st_resize_port,
12806 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12807 scm_makstr with calls to scm_allocate_string.
12808
12809 * strings.[ch] (scm_allocate_string): New function.
12810
12811 * strings.[ch] (scm_makstr): Deprecated.
12812
12813 2001-03-18 Gary Houston <ghouston@arglist.com>
12814
12815 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12816 NULL. rewrote the docstring.
12817 (scm_mkstemp): new procedure implementing "mkstemp!".
12818 * posix.h: declare scm_mkstemp.
12819
12820 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12821 normally it would be found in netdb.h.
12822
12823 2001-03-17 Gary Houston <ghouston@arglist.com>
12824
12825 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12826 warning when HAVE_ARRAYS is not defined. move len too.
12827
12828 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12829 (EXTRA_DOT_X_FILES): let configure set the value.
12830 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12831
12832 * gc.c (scm_must_malloc): changed the comment explaining when
12833 scm_must variants of malloc/free etc., should be used, based on
12834 explanation from Dirk Herrmann.
12835 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12836 string with procedure name. use scm_must_malloc instead of malloc.
12837 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12838 of malloc/free.
12839 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12840 scm_ungetc): use scm_must variants of malloc/realloc/free.
12841 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12842
12843 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12844
12845 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12846 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12847 scm_wrong_type_arg instead.
12848
12849 (SCM_WNA): Deprecated.
12850
12851 * error.[ch] (scm_wta): Deprecated.
12852
12853 * numbers.c (s_i_log): Minor comment fix.
12854
12855 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12856 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12857 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12858 wrong-num-args or misc errors.
12859
12860 * unif.c (scm_make_shared_array, scm_transpose_array,
12861 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12862 Validate the rest argument (note: this is only done when guile is
12863 built with SCM_DEBUG_REST_ARGUMENT=1)
12864
12865 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12866 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12867
12868 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12869 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12870
12871 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12872
12873 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12874 instead of scm_wrong_num_args.
12875
12876 * coop-threads.c: Don't include libguile/strings.h. (Was only
12877 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12878
12879 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12880 wrong-num-args errors.
12881
12882 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12883
12884 * error.[ch] (scm_error_num_args_subr): New function.
12885
12886 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12887
12888 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12889 (scm_length, scm_append, scm_reverse, scm_list_ref),
12890 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12891 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12892 (scm_delete1_x), gc.c (scm_map_free_list),
12893 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12894 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12895 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12896 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12897 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12898 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12899 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12900
12901 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12902 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12903 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12904 symbols.c (scm_symbol_interned_p), numbers.c
12905 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12906 markup.
12907
12908 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12909
12910 * snarf.h (SCM_CONST_LONG): Deprecated.
12911 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12912
12913 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12914
12915 * numbers.c (scm_num2ulong): Check that a bignum is positive
12916 before looking at the magnitude. Correctly check for overflow
12917 during conversion.
12918 (scm_num2long_long): Likewise.
12919 (scm_num2ulong_long): New.
12920 (ULONG_LONG_MAX): Define if not already defined.
12921 * numbers.h: (scm_num2ulong_long): New prototype.
12922
12923 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12924
12925 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12926
12927 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12928 (SCM_OPOUTSTRPORTP): New predicate macros.
12929 (scm_open_input_string, scm_open_output_string),
12930 (scm_get_output_string): New prototypes.
12931
12932 * strports.c (scm_open_input_string, scm_open_output_string),
12933 (scm_get_output_string): New procedures (SRFI-6 compliant).
12934 Made scm_tc16_strport non-static.
12935
12936 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12937
12938 * macros.h (SCM_ASSYNT): Removed unused object argument from
12939 signature.
12940
12941 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12942 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12943 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12944 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12945 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12946 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12947 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12948 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12949 scm_m_atdispatch): Removed unused object argument from call to
12950 SCM_ASSYNT.
12951
12952 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12953
12954 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12955 const int* to reflect that the input array of integers remains
12956 unchanged. Thanks to Brett Viren for the hint.
12957
12958 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12959
12960 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12961 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12962 in various places.
12963 (gh_scm2newstr, gh_symbol2newstr): Change call to
12964 scm_must_malloc() to malloc(), because user-free()able memory is
12965 allocated.
12966
12967 * gc.c: Added declaration of `scm_debug_check_freelist'.
12968
12969 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12970
12971 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12972
12973 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12974
12975 * strports.c (scm_object_to_string): New procedure.
12976 (scm_strprint_obj): Deprecated.
12977 * strports.h: Reflect the changes.
12978
12979 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12980
12981 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12982
12983 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12984 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12985 SCM_ASSYNT to check for correct argument types. Either use some
12986 SCM_VALIDATE_* macro or an explicit test.
12987
12988 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12989 misc-errors.
12990
12991 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12992 instead of calling scm_wta.
12993
12994 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12995
12996 * load.c (scm_primitive_load, scm_primitive_load_path),
12997 (scm_sys_search_load_path): Corrected docstrings (file ->
12998 filename).
12999
13000 * eval.c (scm_force): Added texinfo markup to docstring.
13001 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13002
13003 * debug-malloc.c: Reinserted #include <stdio.h>.
13004
13005 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13006
13007 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13008
13009 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13010 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13011 Use SCM_LISTn instead of scm_listify.
13012
13013 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13014
13015 * _scm.h: Removed #include <errno.h>.
13016
13017 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13018 errno variable (can be a macro on some systems, for example when
13019 using linux libc with threads).
13020
13021 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13022 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13023 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13024 #include <errno.h> in these 20 out of 100 files.
13025
13026 2001-03-10 Gary Houston <ghouston@arglist.com>
13027
13028 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13029 not already defined.
13030
13031 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13032
13033 * coop.c: Inserted #include <stdio.h>.
13034
13035 * iselect.c: Reinserted #include <stdio.h>.
13036
13037 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13038
13039 * posix.c: Replaced `#define' of __USE_XOPEN right before
13040 including unistd.h with a define of _GNU_SOURCE at the very top of
13041 the file.
13042
13043 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13044
13045 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13046 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13047 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13048 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13049 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13050 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13051 print.c, procprop.c, procs.c, properties.c, ramap.c,
13052 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13053 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13054 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
13055 Remove #include <stdio.h>
13056 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13057
13058 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13059
13060 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13061
13062 * posix.c (scm_gethostname): Set initial name length to 256 for
13063 Solaris.
13064
13065 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13066
13067 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13068 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13069 (scm_sethostname, scm_gethostname): New prototypes.
13070
13071 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13072 <sys/file.h>, if present.
13073 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13074 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13075 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13076 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13077 (scm_sethostname, scm_gethostname): New procedures.
13078
13079 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13080
13081 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13082 not optional (ii) "recommend" spelling correction.
13083
13084 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13085
13086 * ramap.c (racp): Removed optimization which caused array copying
13087 to fail if the two arrays shared storage. Re-inserted the IVDEP
13088 macros removed in the change of 2000-03-09. (Don't really have a
13089 complete grasp of what they are for, but they seem to be necessary
13090 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13091
13092 * hash.c (scm_string_hash): Don't downcase characters.
13093
13094 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13095
13096 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
13097 size from 277 --> 1009.
13098
13099 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13100 function.
13101
13102 * coop-threads.c: Fixed change of 2001-03-06.
13103
13104 * validate.h: Code formatting.
13105
13106 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13107
13108 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13109 (*.doc): Add dependency on guile-snarf.awk.in.
13110
13111 * guile-snarf.awk.in: Neglect spaces at the end of
13112 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13113 middle of docstrings. (To avoid the problem with gcc-2.96.)
13114
13115 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13116
13117 * coop-threads.c (scm_call_with_new_thread), load.c
13118 (scm_primitive_load, scm_sys_search_load_path), random.c
13119 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13120 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13121 (potentially) issue a scm-misc-error or wrong-num-args error
13122 message.
13123
13124 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13125 about the expected type with the wrong-type-arg error message.
13126
13127 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13128 a C level bug that can't be fixed from scheme anyway.
13129
13130 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13131
13132 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13133 Duplicate bindings are OK in a let* since a let* is semantically
13134 equivalent to a nested set of let:s.
13135
13136 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13137
13138 * print.c (scm_print_options): Fixed texinfo in docstring.
13139
13140 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13141 the underlying functions getservent, getprotoent or getnetent
13142 return NULL instead of signalling an error.
13143
13144 2001-03-04 Gary Houston <ghouston@arglist.com>
13145
13146 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13147 taking an unexpectedly large filename for an AF_UNIX socket from
13148 bind/connect/sendto (thanks to Martin Grabmueller).
13149
13150 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13151 former and adjusted the latter.
13152 (scm_socket, scm_socketpair): cosmetic changes.
13153 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13154 size_t as socklen_t substitute. don't restrict args/return values
13155 to INUM: allow full range of int or size_t.
13156 (scm_fill_sockaddr): check arguments before allocating memory, to
13157 avoid leakage. use malloc, not scm_must_malloc.
13158 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13159 substitute. free the sockaddr structure before throwing an error.
13160 (scm_init_add_buffer): procedure removed, together with its static
13161 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13162 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13163 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13164 scm_sendto): use a local buffer instead of scm_addr_buffer.
13165 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13166 not size_t.
13167 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13168 call to detect whether recvfrom could be bothered to set the address.
13169 (scm_init_socket): don't call scm_init_addr_buffer.
13170
13171 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13172
13173 * debug.c (scm_procedure_source, scm_procedure_environment),
13174 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13175 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13176 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13177 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13178 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13179 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13180 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13181 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13182 scm_array_to_list, scm_array_prototype), validate.h
13183 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13184 scm_misc_error or scm_wrong_type_arg instead.
13185
13186 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13187
13188 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13189
13190 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13191 (scm_sys_tag_body): Added.
13192
13193 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13194
13195 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13196 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13197 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13198 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13199 options.c (scm_options), ports.c (scm_remove_from_port_table),
13200 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13201 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13202 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13203 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13204 instead.
13205
13206 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13207
13208 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13209
13210 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13211
13212 * eval.c (scm_s_duplicate_bindings): New error message.
13213 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13214
13215 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13216
13217 * eval.h (SCM_EVALIM2): New macro. Use it when a
13218 immediate, literal constant should be evaluated.
13219 * eval.c (scm_s_duplicate_formals): New error message string.
13220 (scm_c_improper_memq): New function.
13221 (scm_m_lambda): Check for duplicate arguments.
13222 (scm_ceval, scm_deval): When executing a body: only cons a new
13223 toplevel environment frame when it is different from the
13224 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13225 check for empty combinations; use SCM_EVALIM2 for the same reason
13226 in the non-toplevel loop.
13227 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13228 New labels with the meaning of their non-"nontoplevel" partners,
13229 but they are used when it is known that the body is not evaluated at
13230 top-level.
13231 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13232 reporting for empty combinations.
13233
13234 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13235
13236 * Remove dump facilities.
13237 * dump.c, dump.h: Removed.
13238 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13239 * init.c: Remove #include "libguile/dump.h".
13240 (scm_init_guile_1): Remove scm_init_dump.
13241 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13242 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13243 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13244 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13245
13246 * keywords.c: Remove #include "libguile/dump.h".
13247 (keyword_dump, keyword_undump): Removed.
13248 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13249
13250 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13251
13252 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13253 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13254 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13255 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13256 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13257 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13258 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13259 to @code{} as the texinfo manual recommends, converted the
13260 examples to use a @lisp{}-environment.
13261
13262 * strports.c (scm_eval_string): Cleaned up the docstring.
13263
13264 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13265 markup.
13266
13267 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13268 (scm_number_to_string, scm_string_to_number, scm_number_p)
13269 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13270 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13271 (scm_ash): Added texinfo markup and removed obsolete @refill.
13272 (scm_gr_p): Corrected comment.
13273 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13274 docstring) comments.
13275 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13276 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13277 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13278 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13279 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13280 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13281 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13282 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13283
13284 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13285
13286 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13287 (Obviously nobody compiles with SCM_RECKLESS defined...)
13288
13289 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13290
13291 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13292
13293 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13294
13295 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13296
13297 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13298
13299 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13300 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13301 since use of `z' suggests that the arguments may be complex.
13302
13303 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13304 typos.
13305
13306 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13307
13308 * dump.c (scm_binary_write, scm_binary_read), eval.c
13309 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13310 scm_guardian_greedy_p, scm_make_guardian), fports.c
13311 (scm_file_port_p): Minor docstring fixes.
13312
13313 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13314
13315 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
13316
13317 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13318 scm_i_eval.
13319 (make_class_from_template): Do not bother to set the current
13320 module around the call to DEFVAR, scm_eval takes care of that.
13321 (scm_init_goops): Make scm_module_goops and
13322 scm_goops_lookup_closure permanent objects.
13323
13324 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13325 top level, create a fresh top-level environment for each
13326 expression instead of mutating the exisint frame. This is
13327 important when that frame is closed over.
13328
13329 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13330 SCM_DIGSPERLONG instead of DIGSPERLONG.
13331
13332 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13333
13334 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13335 before applying arrow procedure in `cond' and before applying
13336 receiver procedure in call-with-current-continuation.
13337 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13338 macro. The argument is expanded more than one time.
13339
13340 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13341 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13342
13343 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13344
13345 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13346 notice and license.
13347
13348 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13349
13350 * variable.c (scm_make_variable, scm_make_undefined_variable)
13351 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13352 (scm_variable_bound_p), values.c (scm_values)
13353 (scm_call_with_values), unif.c (scm_bit_count)
13354 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13355 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13356 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13357 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13358 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13359 (scm_copy_random_state, scm_random), print.c (scm_newline)
13360 (scm_write_char, scm_simple_format), debug-malloc.c
13361 (scm_malloc_stats), environments.c (scm_environment_p)
13362 (scm_environment_bound_p, scm_environment_ref)
13363 (scm_environment_fold, scm_environment_define)
13364 (scm_environment_undefine, scm_environment_set_x)
13365 (scm_environment_cell, scm_environment_observe)
13366 (scm_environment_observe_weak, scm_environment_unobserve)
13367 (scm_make_eval_environment, scm_eval_environment_p)
13368 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13369 (scm_eval_environment_imported)
13370 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13371 (scm_import_environment_p, scm_import_environment_imports)
13372 (scm_import_environment_set_imports_x, scm_make_export_environment)
13373 (scm_export_environment_p, scm_export_environment_private)
13374 (scm_export_environment_set_private_x)
13375 (scm_export_environment_signature)
13376 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13377 Added texinfo markup.
13378
13379 * ports.c (scm_drain_input): Lowercased argument to @var.
13380 (scm_current_input_port, scm_current_output_port): Filled in
13381 missing explanation.
13382 (scm_current_load_port, scm_set_current_output_port)
13383 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13384 Added texinfo markup.
13385
13386 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13387 (scm_release_arbiter): Added texinfo markup to docstrings.
13388 Changed `Returns' to `Return'.
13389 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13390
13391 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13392
13393 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13394 by doubling them to `@@'.
13395
13396 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13397
13398 * numbers.c (scm_lognot), random.c (scm_random,
13399 scm_random_normal, scm_random_solid_sphere_x,
13400 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13401 scm_random_exp), dynwind.c
13402 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
13403
13404 * goops.c (scm_sys_initialize_object, scm_instance_p,
13405 scm_class_name, scm_class_precedence_list, scm_class_slots,
13406 scm_class_environment, scm_generic_function_name,
13407 scm_generic_function_methods, scm_method_generic_function,
13408 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13409 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13410 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13411 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13412 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13413 scm_class_direct_supers, scm_class_direct_slots,
13414 scm_class_direct_subclasses, scm_class_direct_methods,
13415 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13416 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13417 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13418 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13419 scm_memoized_environment, scm_procedure_name,
13420 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13421 objects.c
13422 (scm_class_of, scm_entity_p, scm_operator_p,
13423 scm_set_object_procedure_x, scm_object_procedure,
13424 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13425 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13426 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13427 scm_hook_to_list), lang.c
13428 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13429 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13430 (scm_print_options, scm_port_with_print_state,
13431 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13432 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13433 scm_make_procedure_with_setter, scm_procedure), throw.c
13434 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13435 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13436 scm_stack_ref, scm_stack_length, scm_frame_p,
13437 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13438 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13439 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13440 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13441 (scm_dirname, scm_basename), dynwind.c
13442 (scm_wind_chain), read.c (scm_read_options, scm_read,
13443 scm_read_hash_extend), gc.c
13444 (scm_unhash_name), eval.c (scm_eval_options_interface,
13445 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13446 (scm_display_error, scm_set_print_params_x,
13447 scm_display_application, scm_display_backtrace, scm_backtrace),
13448 async.c (scm_async, scm_system_async, scm_async_mark,
13449 scm_system_async_mark, scm_run_asyncs, scm_noop,
13450 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13451 scm_mask_signals): Added docstrings.
13452
13453 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13454
13455 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13456 address of car/cdr. (Thanks to Dirk Herrmann)
13457 Use scm_sizet to obtain the length of strings.
13458 (Thanks to Matthias Koeppe)
13459
13460 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13461
13462 * symbols.c (scm_mem2symbol): Put a empty statement after the
13463 next_symbol label. This is mandated by ANSI, appearantly.
13464
13465 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13466
13467 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
13468 sense to compile for a specific kernel version. Do not include
13469 <asm/signal.h> while defining __KERNEL__. This hack should no
13470 longer be needed and caused problems.
13471
13472 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
13473
13474 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
13475 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
13476 can not deal with immediates.
13477
13478 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
13479
13480 * list.c (scm_list_copy): Validate the first argument.
13481
13482 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
13483
13484 Fix evaluator so that top-level expressions are correctly
13485 evaluated with respect to the module system.
13486
13487 * modules.h. modules.c (scm_current_module_lookup_closure): New
13488 function.
13489
13490 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
13491 prototypes.
13492 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
13493 names to better reflect their meaning.
13494
13495 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
13496 evaluated at top-level and synronize lookup closure before
13497 executing every subform.
13498 (scm_primitve_eval_x, scm_primitive_eval): New functions.
13499 (scm_eval_x, scm_eval): Reimplement in terms of
13500 scm_primitive_eval_x and scm_primitive_eval, respectively.
13501
13502 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
13503
13504 * macros.c (scm_macro_name, scm_macro_transformer): Use
13505 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
13506 Thanks!
13507
13508 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
13509
13510 * dump.c (scm_store_bytes): Store data size before data.
13511 (scm_restore_bytes): Restore data size. Takes a pointer to size.
13512 * dump.h (scm_restore_bytes): Updated.
13513
13514 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
13515
13516 * dump.c: Use double cells for update schedule.
13517
13518 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
13519
13520 * ports.c (scm_unread_char): Take an optional argument.
13521
13522 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13523
13524 * modules.h (scm_selected_module, scm_current_module): Renamed
13525 scm_selected_module to scm_current_module to synchronize Scheme
13526 and C names.
13527 (scm_select_module, scm_set_current_module): Likewise. Changed
13528 all uses.
13529
13530 * ports.c (scm_port_for_each): Make a snapshot of the port table
13531 before iterating over it. The table might change while the user
13532 code is running. With the snapshot, the user can depend on the
13533 fact that each port that existed at the start of the iteration is
13534 encountered exactly once. (ice-9 popen) depends on this.
13535
13536 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13537
13538 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
13539
13540 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
13541 range checking for the size parameter. Thanks to Martin
13542 Grabmueller for the hint.
13543
13544 (scm_makstr): Reordered string initialization to make interrupt
13545 deferring unnecessary.
13546
13547 * vectors.c (scm_make_vector): Fixed range checking.
13548
13549 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
13550
13551 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
13552
13553 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
13554 checking of the size parameter for type correctness and valid
13555 range. Thanks to Rob Browning for reporting the problem. Instead
13556 of deferring interrupts, scm_remember_upto_here_1 is used.
13557
13558 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13559
13560 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
13561 (scm_dump_cell_update): Removed.
13562 (scm_dump_update): Renamed from scm_dump_object_update.
13563 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13564 a pointer instead of returning a value.
13565 * keywords.c (keyword_undump): Updated.
13566
13567 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13568
13569 * dump.c, dump.h: Modified a lot.
13570 (SCM_DUMP_COOKIE): Version 0.1
13571 (scm_dump_mark): Removed.
13572 (scm_restore_cell_object, scm_store_cell_object): New functions.
13573
13574 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13575 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13576 New slots: dump, undump.
13577 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13578 Updated.
13579
13580 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13581 (keyword_undump): Renamed from keyword_alloc.
13582 (scm_init_keywords): Set keyword_dump and keyword_undump.
13583
13584 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13585
13586 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13587 the deprecated SCM_DOUBLE_CELLP.
13588
13589 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13590
13591 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13592
13593 * dump.c, dump.h: New files.
13594 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13595 * init.c: #include "libguile/dump.h".
13596 (scm_init_guile_1): Call scm_init_dump.
13597 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13598 dump_dealloc, dump_store, undump_alloc, undump_restore,
13599 undump_init.
13600 * smob.c (scm_make_smob_type): Init the new slots.
13601 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13602 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13603
13604 * keywords.c: #include "libguile/dump.h".
13605 (keyword_dealloc, keyword_alloc): New functions.
13606 (scm_init_keywords): Set smob_dump and smob_undump.
13607
13608 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13609
13610 * vectors.c (scm_c_make_vector): New function.
13611 * vectors.h (scm_c_make_vector): Declared.
13612 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13613 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13614 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13615 (scm_make_method_cache, scm_i_vector2list,
13616 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13617 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13618 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13619 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13620 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13621 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13622 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13623 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13624
13625 * hashtab.c (scm_c_make_hash_table): New function.
13626 * hashtab.h (scm_c_make_hash_table): Declared.
13627 * environments.c (scm_make_leaf_environment,
13628 scm_make_eval_environment), gc.c (scm_init_storage),
13629 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13630 Use scm_c_make_hash_table.
13631
13632 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13633
13634 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13635
13636 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13637
13638 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13639 end of docstring.
13640
13641 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13642 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13643 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13644 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13645 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13646 scm_source_property, scm_set_source_property_x), sort.c
13647 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13648 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13649 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13650 docstrings.
13651
13652 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13653
13654 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13655 really get that arg.
13656
13657 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13658
13659 * goops.c (s_scm_get_keyword): Bug fix.
13660
13661 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13662
13663 The following patch was sent by Martin Grabmueller. It makes sure
13664 that in case of parameter errors the correct function name is
13665 shown, and that parameter types are only checked once.
13666
13667 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13668 string_capitalize_x): New functions. Each one performs the core
13669 functionality of the corresponding scm_* function.
13670
13671 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13672 scm_string_downcase_x, scm_string_downcase,
13673 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13674 parameter checking wrappers of the above functions.
13675
13676 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13677
13678 * continuations.c, dynl.c, keywords.c, load.c: Include
13679 strings.h. Thanks to Bill Schottstaedt for the bug report.
13680
13681 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13682
13683 * backtrace.c (display_header): Make sure that line and column
13684 information is shown independent of whether the port the code was
13685 read from had an associated filename. Thanks to Martin
13686 Grabmueller for providing this patch.
13687
13688 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13689
13690 * fports.[ch] (scm_file_port_p): New primitive.
13691
13692 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13693
13694 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13695 These are now defined in fports.c, strports.c and vports.c.
13696
13697 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13698 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13699 tags.h).
13700
13701 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13702 (scm_make_sfptob): Made static. These return a type code now.
13703
13704 fports.c (scm_init_fports), strports.c (scm_init_strports),
13705 vports.c (scm_init_vports): Create the corresponding port types.
13706
13707 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13708 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13709
13710 * init.c (scm_init_guile_1): Make sure strports are initialized
13711 before gdbint.
13712
13713 * ports.[ch] (scm_make_port_type): Changed the return type to
13714 scm_bits_t.
13715
13716 * ports.c (scm_ports_prehistory): Don't create any port types
13717 here.
13718
13719 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13720 against scm_tc16_fport directly.
13721
13722 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13723
13724 * srcprop.c (scm_set_source_property_x): Fix to handle
13725 (set-source-property! <obj> 'copy <datum>) correctly.
13726
13727 2001-01-24 Gary Houston <ghouston@arglist.com>
13728
13729 * filesys.c (scm_link): docstring fix.
13730 * fports.h (scm_setfileno): obsolete declaration removed.
13731 * posix.c: bogus popen declaration removed.
13732
13733 * rdelim.c: new file, split from ioext.c.
13734 * rdelim.h: new file, split from ioext.h
13735 * Makefile.am: add rdelim.c and related files.
13736 * init.c: call scm_init_rdelim. include rdelim.h.
13737
13738 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13739
13740 This patch was sent by Martin Grabmueller and makes sure that
13741 parameter errors are reported correctly by the lexicographic
13742 ordering predicates.
13743
13744 * strorder.c (string_less_p, string_ci_less_p): New functions.
13745
13746 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13747 functionality into string_less_p, string_ci_less_p respectively.
13748 The remaining code is just a wrapper to do the parameter
13749 checking.
13750
13751 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13752 parameters and call string_less_p instead of scm_string_less_p.
13753
13754 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13755 Check the parameters and call string_less_ci_p instead of
13756 scm_string_ci_less_p.
13757
13758 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13759
13760 This patch modifies scm_display_error to perform parameter
13761 checking. Thanks to Neil Jerram for the bug report.
13762
13763 * backtrace.[ch] (scm_i_display_error): New function.
13764
13765 * backtrace.c (scm_display_error): Added parameter check and
13766 extracted the core functionality into function
13767 scm_i_display_error.
13768
13769 * throw.c (handler_message): Call scm_i_display_error to display
13770 the error message.
13771
13772 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13773
13774 * eval.c (SCM_APPLY): Added # args check for application of
13775 procedures with arity 3. (Thanks to Anders Holst.)
13776
13777 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13778
13779 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13780
13781 (SCM_OPDIRP): Deprecated.
13782
13783 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13784 SCM_OPN.
13785
13786 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13787 Instead, give an explicit error message in case the directory is
13788 closed.
13789
13790 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13791 instead of SCM_OPENP and SCM_CLOSEDP.
13792
13793 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13794
13795 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13796
13797 * eval.c (inner_eval, scm_eval): Move all real functionality into
13798 inner_eval. Avoid to copy the expression twice by inlining some
13799 code from scm_i_eval.
13800
13801 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13802
13803 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13804 now has to be the last clause, as required by R5RS. Thanks to
13805 Martin Grabmueller for the patch.
13806
13807 2001-01-18 Gary Houston <ghouston@arglist.com>
13808
13809 * ioext.c: further simplify scm_read_string_x_partial by defining
13810 a macro SCM_EBLOCK.
13811
13812 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13813
13814 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13815
13816 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13817
13818 * __scm.h: Added comment about architecture and compiler
13819 properties that are required by guile.
13820
13821 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13822 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13823
13824 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13825
13826 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13827
13828 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13829 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13830
13831 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13832
13833 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13834 to the names in limits.h.
13835
13836 * numbers.c (abs_most_negative_fixnum): Added.
13837
13838 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13839 fixnum-min) special case.
13840
13841 (scm_big_and): Fix for negative first parameter.
13842
13843 (scm_bit_extract): Fix for fixnum paramters.
13844 Thanks to Rob Browning for the bug report.
13845
13846 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13847
13848 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13849
13850 * symbols.c (scm_symbol_bound_p): Fixed comment.
13851 Thanks to Chris Cramer.
13852
13853 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13854
13855 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13856 Thanks to Bill Schottstaedt.
13857
13858 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13859
13860 from Matthias Köppe:
13861
13862 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13863 casts its result, so doesn't yield an lvalue per ANSI C.
13864
13865 * goops.c (s_scm_sys_set_object_setter_x): use
13866 SCM_SET_ENTITY_SETTER.
13867 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13868
13869 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13870 its result, so doesn't yield an lvalue per ANSI C.
13871 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13872 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13873 SCM_GC_SET_CARD_FLAGS.
13874 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13875
13876 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13877
13878 2001-01-08 Gary Houston <ghouston@arglist.com>
13879
13880 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13881 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13882 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13883 changes.
13884 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13885 for fdes. if current input port is used, check that it's a file
13886 port.
13887
13888 2001-01-06 Gary Houston <ghouston@arglist.com>
13889
13890 * ioext.c (scm_read_string_x_partial): new procedure, implements
13891 read-string!/partial.
13892 * ports.c (scm_take_from_input_buffers): new procedure used by
13893 scm_read_string_x_partial.
13894 (scm_drain_input): use scm_take_from_input_buffers.
13895
13896 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13897
13898 * validate.h (SCM_VALIDATE_NUMBER): New.
13899
13900 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13901
13902 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13903 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13904 SET_DESTROYED): new defines/macros.
13905 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13906 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13907 (guardian_print): print more info.
13908 (guardian_apply): check if the guardian is destroyed, and throw an
13909 error if so. take one more optional argument `throw_p'.
13910 (scm_guard): depending on the value of `throw_p', return a boolean
13911 result.
13912 (scm_get_one_zombie): remove redundant property test.
13913 (guardian_t): represent the various (currently 3, I hope nothing
13914 more gets added) boolean fields as bit flags.
13915 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13916 (scm_destroy_guardian_x): new procedure.
13917
13918 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13919 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13920
13921 2001-01-01 Gary Houston <ghouston@arglist.com>
13922
13923 * fports.c (fport_write): bugfix: handle short writes for
13924 unbuffered ports too. optimize the buffered case by minimizing
13925 the number of write/flush calls.
13926 (write_all): new helper procedure.
13927
13928 The ChangeLog continues in the file: "ChangeLog-2000"
13929
13930 ;; Local Variables:
13931 ;; coding: utf-8
13932 ;; End: