(install-exec-hook): Prepend $(DESTDIR) to filename. Thanks to Eric
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
6063dc1d
SJ
12001-11-21 Stefan Jahn <stefan@lkcc.org>
2
3 * win32-socket.c (getservent, setservent, endservent,
4 getprotoent, setprotoent, endprotoent): New functions.
5 Appropriate replacements for M$-Windows.
6
7 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
8 these definitions for GUILE_DEBUG.
9
10 * net_db.c: Include "win32-socket.h" if compiling with a native
11 M$-Windows compiler. Include some pieces of code (protoent and
12 servent interface) protected by HAVE_* macros when using a
13 native M$-Windows compiler.
14
351982f6
MV
152001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
16
17 * modules.c (scm_c_export): Do nothing when the first argument is
18 already the terminating NULL. Thanks to Han-Wen Nienhuys!
19
849038b5
TTN
202001-11-20 Thien-Thi Nguyen <ttn@glug.org>
21
22 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
23 also include `buildstamp'.
24
5c790b44
RB
252001-11-18 Rob Browning <rlb@defaultvalue.org>
26
27 * version.c
28 (s_scm_major_version): use SCM_MAJOR_VERSION.
29 (s_scm_minor_version): use SCM_MINOR_VERSION.
30 (s_scm_micro_version): use SCM_MICRO_VERSION.
31 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
32 SCM_MICRO_VERSION.
33
34 * version.h.in
35 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
36 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
37 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
38
694a9bb3
NJ
392001-11-18 Neil Jerram <neil@ossau.uklinux.net>
40
41 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
42 Rewrite docstrings without reference to substring-move-left/right,
43 since the latter no longer exist.
44
302c12b4
DH
452001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
46
47 * eval.c: Removed bogus comment about acros.
48
49 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
50 Minimize scope of local variable. Eliminate dependency on
51 macro DEBUG_EXTENSIONS.
52
53 (s_splicing): New error message string.
54
55 (scm_m_body): Issue 'bad body' message rather than 'missing
56 expression' message.
57
58 (scm_m_quote): Eliminate unnecessary copying.
59
60 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
61 checking of the body to scm_m_body.
62
63 (scm_m_do): Move comment to function header. Rename arg1 to
64 binding. Made the code a bit easier to read.
65
66 (evalcar): Removed.
67
68 (iqq): Added a comment. Changed the depth parameter to
69 unsigned. Use size_t for vector lengths. Make sure vector object
70 is gc protected as long as its contents are read. Add some syntax
71 checks. Get rid of unnecessary SCM_IMP test. Clean up the
72 control structure a bit.
73
74 (scm_m_delay): Added comment about the implementation of
75 scm_m_delay.
76
77 (scm_m_define): Add comment about guile's currying define
78 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
79 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
80
81 (scm_m_letrec1): Removed. Part of the functionality is taken
82 over by the new function 'transform_bindings'.
83
84 (transform_bindings): New function. Takes over some of the
85 functionality of removed function 'scm_m_letrec1', namely to split
86 a list of bindings into a reversed list of variables and a list of
87 initializers.
88
89 (scm_m_letrec): Call 'transform_bindings'.
90
91 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
92 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
93 test. Use 'transform_bindings'. Fixed scoping error with named
94 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
95 Jerram for suggesting the fix). Cleaned up the control structure
96 a bit.
97
98 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
99 unnecessary consing. Eliminated unnecessary
100 SCM_DEFER/ALLOW_INTS.
101
102 (SCM_CEVAL): Un-obfuscated some loops.
103
cecb4a5e
NJ
1042001-11-16 Neil Jerram <neil@ossau.uklinux.net>
105
8f85c0c6
NJ
106 * gc.h (scm_unhash_name): Old declaration removed.
107
108 * eval.c (s_scm_eval): Change @var{primitive-eval} to
109 @code{primitive-eval}.
110
111 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
112 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
113 Change @deffnx lines in docstrings to say {Scheme Procedure}
114 rather than primitive or procedure.
115
116 * posix.c (scm_execl), filesys.c (scm_close), unif.c
117 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
118 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
119 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
120 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
121 (scm_string_split, scm_string_ci_to_symbol), strings.c
122 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
123 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
124 Docstring fixes and improvements reflecting edits that have been
125 made in the reference manual source.
126
127 * objprop.c (scm_object_properties, scm_set_object_properties_x,
128 scm_object_property, scm_set_object_property_x): Remove invalid
129 @deffnx lines for corresponding procedure property primitives.
130
cecb4a5e
NJ
131 These changes add a @deffnx C function declaration and function
132 index entries for each Guile primitive to the copy of the doc
133 snarf output that is used for reference manual synchronization.
134 Online help is unchanged.
849038b5 135
cecb4a5e
NJ
136 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
137 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
138 name to SCM_SNARF_DOCS.
849038b5 139
cecb4a5e
NJ
140 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
141 snarf-check-and-output-texi.
142
143 * Makefile.am (guile-procedures.texi): New rule.
144 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
145 Changed so that the last stage of doc snarfing is now performed
146 twice, once to produce guile-procedures.txt for online help, and
147 once to produce guile.texi for reference manual synchronization.
148
ddea3325
DH
1492001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
150
151 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
152 safely usable as a single statement followed by a ';', for example
153 in an if statement.
154
155 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
156
72dd0a03
NJ
1572001-11-13 Neil Jerram <neil@ossau.uklinux.net>
158
159 * random.c (scm_random_solid_sphere_x,
160 scm_random_hollow_sphere_x): Correct "shere" typos.
161
162 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
163
164 * version.c (scm_version): Update docstring to include
165 `micro-version'.
166
6558eda6
MV
1672001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
168
409b8588
MV
169 * modules.c (scm_c_export): Call va_end after collecting the
170 symbols.
171
adb8c0f2
MV
172 * strop.h, strop.c (scm_substring_move_left_x,
173 scm_substring_move_right_x): Removed.
174
6558eda6
MV
175 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
176 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
177 configure does.
178
5d8fc640
MV
1792001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
180
181 * numbers.c: Document macros to define when including
182 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
183 now rely on SIZEOF_ macros that have been figured out at
184 configure time.
185
186 * num2integral.i.c: Adapt to new interface.
187 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
188 target type by casting it and checking whether it is still the
189 same. Do not try to handle bignums for integral types that are
190 smaller than fixnums. When handling bignums, collect the
191 magnituse first into a unsigned type, and correctly check for
192 overflow.
193 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
194 only -MIN_VALUE can still be negative of all negative numbers (in
195 twos-complement).
196
849038b5 197 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
198
199 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
200 HAVE_LONG_LONG depending on whether their size is non-zero.
201
d6b8cf11
TTN
2022001-11-11 Thien-Thi Nguyen <ttn@glug.org>
203
204 * strop.c (scm_string_null_p): Docfix; nfc.
205 Thanks to Scott Lenser.
206
9401323e
NJ
2072001-11-07 Neil Jerram <neil@ossau.uklinux.net>
208
209 * extensions.c (scm_load_extension): Canonicalize docstring
210 whitespace.
211
212 * unif.c (scm_uniform_array_write), ports.c
213 (scm_current_output_port, scm_force_output), dynwind.c
214 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
215 filesys.c (scm_open, scm_lstat), struct.c
216 (scm_make_struct_layout), random.c (scm_random,
217 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
218 (scm_i_index): Remove superfluous whitespace from end of docstring
219 lines.
220
221 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
222 strings.c (scm_make_string), variable.c (scm_make_variable,
223 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
224 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
225 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
226 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
227 newline at end of docstrings.
228
229 * modules.c (scm_set_current_module): Add missing newline to
230 docstring.
231
b4e15479
SJ
2322001-11-07 Stefan Jahn <stefan@lkcc.org>
233
234 * win32-socket.[ch]: New files. Defines Winsock-API error codes
235 and makes them available through Guile. That is because the
236 Winsock-API does not store its errors in `errno' and thus cannot
237 return error messages via `strerror (errno)'.
238
239 * socket.c (scm_init_socket): Initialize `win32-socket' part
240 here under M$-Windows.
241
d6b8cf11 242 * numbers.h: Added missing declaration of
b4e15479
SJ
243 `scm_sys_check_number_conversions()'.
244
245 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
246 and use in `(strerror)' and `(system-error)'.
247
d6b8cf11 248 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
249 `win32-socket.[ch]' to extra source and header files.
250
7ab89df1
MV
2512001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
252
253 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
254 a call to turn-on-debugging when --debug has been given instead of
255 turning it on directly. Also, handle new `--no-debug' option,
256 which might suppress the call to turn-on-debugging.
257
0233bfc1
SJ
2582001-11-05 Stefan Jahn <stefan@lkcc.org>
259
260 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
261
8f99e3f3
SJ
2622001-11-04 Stefan Jahn <stefan@lkcc.org>
263
264 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 265 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
266 correctly and allows a clean build on Win32.
267
d6b8cf11 268 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
269 into FOO.
270
271 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
272 import macros for external libraries (libcrypt, libqthreads,
273 libreadline and libregex).
274
275 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
276
277 * posix.c (flock): Added support for flock() in M$-Windows.
278
279 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
280 of __SCM_IMPORT__.
281
282 * fports.c (getflags): Differentiate reading and writing pipes
283 descriptors.
284
285 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
286 M$-Windows.
287
288 * coop.c (coop_condition_variable_timed_wait_mutex): Use
289 conditionalized error code if `ETIMEDOUT' is not available.
290 (scm_thread_usleep): Remove bogus declaration of `struct timeval
291 timeout'.
292
293 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
294 belongs. That is because NO_PREPRO_MAGIC gets undefined after
295 each inclusion of `num2integral.i.c'.
296 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
297
4e21fa60
MV
2982001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
299
300 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
301 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
302
08112c95
MD
3032001-11-02 Mikael Djurfeldt <mdj@linnaeus>
304
7663c008
MD
305 * print.c (scm_iprin1): Mark print state as revealed when
306 dispatching to generic write or display.
307
08112c95
MD
308 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
309
f712d833
MV
3102001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
311
312 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 313
f712d833
MV
314 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
315 and win32-dirent.h to extra source and header files. These
316 include the uname() and the POSIX dirent interface implementation
317 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
318 linkers which do not allow unresolved symbols inside shared
319 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
320 dependency.
321
d6b8cf11
TTN
322 * __scm.h: Defined SCM_API. This macro gets prepended to all
323 function and data definitions which should be exported or imported
f712d833
MV
324 in the resulting dynamic link library in the Win32 port.
325
326 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 327 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
328 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
329 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
330 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
331 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
332 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 333 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
334 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
335 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
336 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
337 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
338 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
339 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
340 vports.h, weaks.h:
341 Prefixed each each exported symbol with SCM_API.
342
d6b8cf11 343 * continuations.c: Added comment about the use of the extern
f712d833
MV
344 declarations of {get,set}context() functions used in the ia64 port.
345
346 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
347 is meant to be a `unsigned long *'.
348
349 * filesys.c: Include `direct.h' if possible. Use local
350 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
351 macros for M$-Windows. Implementation of `fstat_Win32()' which is
352 able to differentiate between sockets and other file descriptors.
353 Use this function as wrapper in `scm_fstat()'. Fixed typo in
354 `scm_dirname()'.
355
356 * fports.c: Include `io.h' is possible. Put `*fp' into referring
357 statement block in `scm_fport_buffer_add()'.
358 Some corrections in `getflags()'.
d6b8cf11 359
f712d833
MV
360 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
361
362 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
363 build on Win32. Disable preloaded symbols on Win2 platforms.
364
365 * ioext.c, ports.c: Include `io.h' is possible.
366
367 * mkstemp.c: Include `process.h' is possible.
368
369 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
370 too.
371 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
372
373 * posix.c: Remove unnecessary dirent includes and defines. Include
374 local `win32-uname.h' for MinGW. Extern declaration of
375 `mkstemp()' for systems where it does not exists. Make
376 `getlogin()' available on M$-Windows.
377
378 * scmsigs.c: Made `usleep()' avalable on MinGW.
379
380 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
381
382 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
383
384 * win32-uname.c: Include "win32-uname.h", not "uname.h".
385
d245ce23
MD
3862001-10-28 Mikael Djurfeldt <mdj@linnaeus>
387
388 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
389 Don't apply scm_uniform_vector_length on arrays.
390
8ea46249
DH
3912001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
392
393 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
394 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
395 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
396 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
397 scm_list_<n> over scm_cons[2]?.
398
399 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
400 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
401 SCM_C[AD][AD]R instead of explicit form.
402
403 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
404 comparison parameters.
405
406 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
407 !SCM_NULLP instead of SCM_NIMP.
408
409 (scm_m_case): Don't copy the form. Renamed proc to clause and
410 minimized its scope. Renamed x to clauses. Removed side
411 effecting operation from macro call.
412
413 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
414 minimized its scope. Renamed x to clauses. Minimized the scope
415 of variable 'len'. Make sure the else clause is treated specially
416 even in case of '=>' occurences. Don't change the else to #t in
417 order to be able to distinguish this case in the evaluator. Leave
418 type checking of the recipient to the evaluator.
419
420 (scm_c_improper_memq): Made the comment somewhat clearer.
421
422 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
423 test for SCM_IM_LET at the place of the formal parameters.
424 Simplified the formal parameter checking.
425
426 (scm_m_letstar): Added Comment. Renamed proc to bindings.
427 Renamed arg1 to binding and minimized its scope. Eliminated
428 unnecessary consing.
429
430 (scm_m_do): Renamed proc to bindings. Minimized the scope of
431 variable 'len'.
432
433 (build_binding_list): New static function.
434
435 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
436 Further, split up the 'letrec' unmemoizing code to the
437 corresponding parts for 'do', 'let' and 'letrec', adding comments
438 to each form. Cleanup the handling of the do form (This removes
439 some *real* code :-).
440
441 (SCM_CEVAL): Removed side effecting operation from macro call.
442 Handle the 'else clause of the 'cond form specially - the symbol
443 'else is not replaced with #t any more.
444
8186c4f5
GH
4452001-10-14 Gary Houston <ghouston@arglist.com>
446
447 * version.c (scm_version): use sprintf instead of snprintf,
448 for portability. thanks to Bill Schottstaedt.
449
89759084
MD
4502001-10-14 Mikael Djurfeldt <mdj@linnaeus>
451
452 * read.c (scm_lreadr): When user-defined hash procedure returns
453 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
454 an exception. (This prevents parsing of uniform vectors from
455 interfering with parsing of numbers.)
456
9c7ce563
MV
4572001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
458
459 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
460 PTRDIFF_MIN. Thanks to Ken Raeburn.
461
4622001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
463
464 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
465
466 * eval.c (scm_m_atbind): First try to find the variable without
467 defining it locally; when it has not been found, define it
468 locally.
469
470 * modules.c (module_variable): Pass over variables that exist but
471 are unbound.
472
4732001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
474
475 * backtrace.c (display_backtrace_file_and_line): Only use
476 scm_basename when POSIX support is compiled in. Thanks to Chris
477 Cramer.
478
1fe5e088
DH
4792001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
480
481 * numbers.c (mem2uinteger): Return number read so far when coming
482 across a hexdigit after having read a # or if not reading a hex
483 value. This will enable the calling code to correctly handle
484 forms like 1e2. (The background is, that the exponent markers d,
485 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
486 providing this patch.
487
488 (mem2complex): Fix erroneous double-negation. Now, numbers like
489 1-i will be read correctly.
490
68665a97
MD
4912001-10-12 Mikael Djurfeldt <mdj@linnaeus>
492
493 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
494
495 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
496
d5cf5324
DH
4972001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
498
499 * print.c (scm_print_state_vtable, print_state_pool):
500 Initialize. These variables are now registered as gc roots.
501
502 (scm_current_pstate): Update documentation.
503
504 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
505 scm_prin1, scm_init_print): print_state_pool is registered as a
506 gc root and thus does not need to be protected by a surrounding
507 pair any more.
508
509 (make_print_state): The car of print_state_pool no longer holds
510 the scm_print_state_vtable.
511
512 (scm_current_pstate, scm_make_print_state, print_circref,
513 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
514 SCM_N<foo>.
515
516 (scm_prin1): When building lists, prefer scm_list_<n> over
517 scm_cons[2]?.
518
519 (scm_iprlist): Removed a redundant SCM_IMP test.
520
521 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
522
37c56aec
DH
5232001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
524
525 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
526
527 (scm_memcons, scm_mem_to_proc): When building lists, prefer
528 scm_list_<n> over scm_cons[2]?.
529
530 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
531
532 (scm_procedure_name): Use SCM_CADR instead of explicit form.
533
534 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
535 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
536 for some reason his patch didn't make it into the cvs.
537
79d34f68
DH
5382001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
539
540 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
541 little bit - should even be somewhat more accurate now.
542
5e137c65
RB
5432001-10-08 Rob Browning <rlb@defaultvalue.org>
544
545 * gc.c: support ia64 register backing store.
546 (SCM_MARK_BACKING_STORE): new macro.
547
548 * continuations.h: support ia64 register backing store.
549 (struct scm_t_contregs): add ia64 register backing store.
550
551 * continuations.c: support ia64 register backing store.
552 (continuation_mark): mark ia64 register backing store.
553 (continuation_free): free ia64 register backing store.
554 (scm_make_continuation): capture ia64 register backing store.
555 (copy_stack_and_call): copy ia64 register backing store.
556
ee083ac2
DH
5572001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
558
559 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
560 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
561 instead of SCM_NIMP to test for that case.
562
563 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
564 scm_t_bits instead of long.
565
71dcdbf9
MV
5662001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
567
568 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
569 SCM_T_SIGNED_BITS_MIN): New.
570 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
571 Use them to make these macros computable by the preprocessor.
572
573 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
574 whether the integral type fits in a fixnum, not the compiler.
575 This removes a spurious compiler warning. Also, honor the
576 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
577 needed for `long long's.
578
579 * numbers.c: Define NO_PREPRO_MAGOC when including
580 num2integral.c.i for `long long' and `signed long long'.
581
152812c0
MD
5822001-10-06 Mikael Djurfeldt <mdj@linnaeus>
583
584 These changes fixes a race condition in the Guile coop - pthread
585 compatibility code.
d6b8cf11 586
152812c0
MD
587 * coop.c (mother_awake_p): New variable.
588 (coop_create): Set mother_awake_p before creating or signalling
589 mother; wait until mother is going to sleep before returning.
590 (mother): Reset mother_awake_p before going to sleep.
591
11d49f54
DH
5922001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
593
594 * options.c (protected_objects, scm_init_options): The content of
595 protected_objects is now protected from garbage collection using
596 scm_gc_register_root instead of scm_permanent_object.
597
598 (get_option_setting): New static function that computes an option
599 setting as it was formerly done in the function scm_options.
600
601 (get_documented_option_setting): New static function that
602 returns option documentation as it was formerly done in the
603 function scm_options. Note that documentation C strings are no
604 longer precomputed into SCM objects. Instead, they are converted
605 into SCM strings every time get_documented_option_setting is
606 called.
607
608 (change_option_setting): New static functions that modifies the
609 option setting as it was formerly done in the function
610 scm_options. The function is now exception safe, i. e. won't
611 cause a memory leak when interrupted. Further, only non-immediate
612 option values are added to the protection list.
613
614 (scm_options): This function now has only the purpose to dispatch
615 to to get_option_setting, get_documented_option_setting or
616 change_option_setting, depending on the arguments given to
617 scm_options.
618
619 (scm_init_opts): Don't convert documentation C strings into SCM
620 strings. Further, don't protect any object values: They _must_
621 be immediate values, otherwise there is no guarantee that they
622 have not been collected before anyway.
623
624 * options.[ch] (scm_t_option): Made type unsigned, name into a
625 constant char* and val into a scm_t_bits type.
626
627 (scm_options, scm_init_opts): The number of options is guaranteed
628 to be larger or equal to zero. Thus, the type is changed to
629 unsigned.
630
3dbacabc
DH
6312001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
632
633 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
634 testing an unsigned value for being >= 0.
635
14282d0f
DH
6362001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
637
638 * numbers.h: Removed old comment about using SCM_CAR to access
639 non-pair cells.
640
641 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
642 the return value is signed. Thanks to Brian Crowder for the bug
643 report.
644
645 (SCM_SRS): Avoid unnecessary casting and don't unpack input
646 values. With this patch, SCM_SRS can be safely used for other
647 types than scm_t_signed_bits. However, it should still better be
648 an internal macro and thus be renamed to SCM_I_SRS.
649
650 (SCM_MAKINUM, SCM_INUM): Use proper casting.
651
2dbec7b5
GH
6522001-10-03 Gary Houston <ghouston@arglist.com>
653
654 * continuations.h, unif.h: in the descriptions of the bit patterns
655 of the heap cells, make bit 0 the least significant.
656
cf4ee841
TTN
6572001-09-25 Thien-Thi Nguyen <ttn@glug.org>
658
659 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
660 Thanks to Golubev I. N.
661
4a151b3d
GH
6622001-09-25 Gary Houston <ghouston@arglist.com>
663
664 * ports.c (scm_drain_input): extended the docstring. thanks to
665 Alex Schroeder and Thien-Thi Nguyen.
666
581ded70
MD
6672001-09-23 Mikael Djurfeldt <mdj@linnaeus>
668
669 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
670 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
671 macros. (The NUM names might soon change.)
672
673 * numbers.h: Added missing declarations.
674
5437598b
MD
6752001-09-22 Mikael Djurfeldt <mdj@linnaeus>
676
677 * Makefile.am: Distribute num2float.i.c.
678
679 * num2float.i.c: New file, multiply included by numbers.c, used
680 to "templatize" the float <-> num conversion routines.
681
682 * numbers.c: New functions: scm_num2float, scm_float2num,
683 scm_num2double, scm_double2num.
684
0b073f0f
RB
6852001-09-21 Rob Browning <rlb@defaultvalue.org>
686
687 * .cvsignore: really add version.h
688
689 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
690 Otherwise it fails on the alpha. However, we might rather choose
691 this size conditionally.
692
693 * numbers.c (scm_gcd): change "k" to a long from an int.
694 Otherwise it fails on the alpha. However, we might rather choose
695 this size conditionally.
696
697 * error.c (scm_wta): coerce char* to intptr_t before int
698 assignment.
699
700 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
701 int.
702
703 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
704
2830fd91
MD
7052001-09-20 Mikael Djurfeldt <mdj@linnaeus>
706
707 * numbers.c (scm_integer_expt): Accept inexact integer in second
708 argument. (Thanks to Bill Schottstaedt.)
709
c13f0a90
RB
7102001-09-20 Rob Browning <rlb@defaultvalue.org>
711
712 * .cvsignore: add version.h
713
714 * versiondat.h.in: removed (obsolete).
715
716 * version.h.in: renamed from version.h.
717 (SCM_GUILE_MAJOR_VERSION): new public macro.
718 (SCM_GUILE_MINOR_VERSION): new public macro.
719 (SCM_GUILE_MICRO_VERSION): new public macro.
720
721 * version.h: renamed to version.h.in.
722
723 * version.c
724 (scm_major_version): support integer *_VERSION macros.
725 (scm_minor_version): support integer *_VERSION macros.
726 (scm_micro_version): support integer *_VERSION macros.
727 (scm_version): support integer *_VERSION macros.
728
147c18a0
MD
7292001-09-20 Mikael Djurfeldt <mdj@linnaeus>
730
731 * error.c, error.h: Made error keys globally accessible.
732 Applications might want to test for these or use them in a direct
733 call to scm_error.
734
735 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
736 routines are passed an inexact. This change in behavior is
737 motivated by concordance with R5RS: It is more common that a
738 primitive doesn't want to accept an inexact for an exact.
739
662c5539
DH
7402001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
741
742 The following patch partially undoes my patch from 2001-06-30,
743 where I added the function scm_gc_mark_cell_conservatively. The
744 function is buggy, since it breaks guile during conservative
745 marking if a pointer on the stack points directly into the list of
746 free cells on the heap: With conservative cell marking this will
747 cause the whole free list to be scanned and marked - boom!
748
749 * gc.c (allocated_mark, MARK, heap_segment,
750 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 751 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
752 scm_gc_mark_cell_conservatively and update the corresponding
753 comments and uses accordingly. Thanks to Christopher Cramer for
754 the patch. (Minor corrections by me.)
755
6c1b7628
GH
7562001-09-15 Gary Houston <ghouston@arglist.com>
757
758 * root.h (scm_root_state): removed the continuation_stack and
759 continuation_stack_ptr members, which have no apparent purpose.
760 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
761 removed.
662c5539 762
6c1b7628
GH
763 * root.c (root_mark), init.c (restart_stack, start_stack), gc
764 (scm_igc): remove all references to contination_stack and
765 continuation_stack_ptr, avoiding allocation of a vector and
766 useless processing during gc.
767
455c0ac8
DH
7682001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
769
770 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
771
772 (TCONC_IN): Make sure that the cell word 0 is initialized last.
773
774 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
775
776 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
777
778 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
779 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
780
22ba637b
DH
7812001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
782
783 * guardians.c (mark_dependencies_in_tconc,
784 whine_about_self_centered_zombies, scm_init_guardians): Register
785 the static global variable `self_centered_zombies' via
786 scm_gc_register_root, to make some cdr-ing unnecessary.
787
c3c4d801
DH
7882001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
789
790 * backtrace.c (display_backtrace_file,
791 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
792 values, use SCM_FALSEP when comparing SCM values against #f.
793 Thanks to Rob Browning for the bug report.
794
b00418df
DH
7952001-09-12 Martin Baulig <martin@home-of-linux.org>
796
797 * strings.[ch] (scm_str2string): New function.
798
a0d34a0b
MV
7992001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
800
801 * gc.c (scm_done_free): Always subtract size from scm_mallocated
802 when computing nm, even if it's negative.
803 (scm_must_malloc): Abort on overflow of scm_mtrigger.
804 (scm_must_realloc): Likewise.
805
b10586f0
ML
8062001-09-01 Michael Livshin <mlivshin@bigfoot.com>
807
808 * numbers.c (scm_sys_check_number_conversions): new function,
809 defined if Guile is compiled in debugging mode. currently checks
810 `scm_num2ulong', should check much much more.
811
812 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
813 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 814
8c494e99
DH
8152001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
816
817 * __scm.h: Added new section about compile time selectable
818 features.
819
820 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
821 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
822 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
823 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
824 Removed.
825
826 * deprecation.c (scm_include_deprecated_features): Simplified.
827
828 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
829